index.js 593 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610
  1. /*!
  2. Copyright (C) 2016-2018 Timofey Kachalov <[email protected]>
  3. Redistribution and use in source and binary forms, with or without
  4. modification, are permitted provided that the following conditions are met:
  5. * Redistributions of source code must retain the above copyright
  6. notice, this list of conditions and the following disclaimer.
  7. * Redistributions in binary form must reproduce the above copyright
  8. notice, this list of conditions and the following disclaimer in the
  9. documentation and/or other materials provided with the distribution.
  10. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  11. AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  12. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  13. ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  14. DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  15. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  16. LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  17. ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  18. (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  19. THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  20. */
  21. require("source-map-support").install();
  22. module.exports =
  23. /******/ (function(modules) { // webpackBootstrap
  24. /******/ // The module cache
  25. /******/ var installedModules = {};
  26. /******/
  27. /******/ // The require function
  28. /******/ function __webpack_require__(moduleId) {
  29. /******/
  30. /******/ // Check if module is in cache
  31. /******/ if(installedModules[moduleId]) {
  32. /******/ return installedModules[moduleId].exports;
  33. /******/ }
  34. /******/ // Create a new module (and put it into the cache)
  35. /******/ var module = installedModules[moduleId] = {
  36. /******/ i: moduleId,
  37. /******/ l: false,
  38. /******/ exports: {}
  39. /******/ };
  40. /******/
  41. /******/ // Execute the module function
  42. /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  43. /******/
  44. /******/ // Flag the module as loaded
  45. /******/ module.l = true;
  46. /******/
  47. /******/ // Return the exports of the module
  48. /******/ return module.exports;
  49. /******/ }
  50. /******/
  51. /******/
  52. /******/ // expose the modules object (__webpack_modules__)
  53. /******/ __webpack_require__.m = modules;
  54. /******/
  55. /******/ // expose the module cache
  56. /******/ __webpack_require__.c = installedModules;
  57. /******/
  58. /******/ // define getter function for harmony exports
  59. /******/ __webpack_require__.d = function(exports, name, getter) {
  60. /******/ if(!__webpack_require__.o(exports, name)) {
  61. /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
  62. /******/ }
  63. /******/ };
  64. /******/
  65. /******/ // define __esModule on exports
  66. /******/ __webpack_require__.r = function(exports) {
  67. /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  68. /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  69. /******/ }
  70. /******/ Object.defineProperty(exports, '__esModule', { value: true });
  71. /******/ };
  72. /******/
  73. /******/ // create a fake namespace object
  74. /******/ // mode & 1: value is a module id, require it
  75. /******/ // mode & 2: merge all properties of value into the ns
  76. /******/ // mode & 4: return value when already ns object
  77. /******/ // mode & 8|1: behave like require
  78. /******/ __webpack_require__.t = function(value, mode) {
  79. /******/ if(mode & 1) value = __webpack_require__(value);
  80. /******/ if(mode & 8) return value;
  81. /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
  82. /******/ var ns = Object.create(null);
  83. /******/ __webpack_require__.r(ns);
  84. /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
  85. /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
  86. /******/ return ns;
  87. /******/ };
  88. /******/
  89. /******/ // getDefaultExport function for compatibility with non-harmony modules
  90. /******/ __webpack_require__.n = function(module) {
  91. /******/ var getter = module && module.__esModule ?
  92. /******/ function getDefault() { return module['default']; } :
  93. /******/ function getModuleExports() { return module; };
  94. /******/ __webpack_require__.d(getter, 'a', getter);
  95. /******/ return getter;
  96. /******/ };
  97. /******/
  98. /******/ // Object.prototype.hasOwnProperty.call
  99. /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  100. /******/
  101. /******/ // __webpack_public_path__
  102. /******/ __webpack_require__.p = "";
  103. /******/
  104. /******/
  105. /******/ // Load entry module and return exports
  106. /******/ return __webpack_require__(__webpack_require__.s = "./index.ts");
  107. /******/ })
  108. /************************************************************************/
  109. /******/ ({
  110. /***/ "./index.ts":
  111. /*!******************!*\
  112. !*** ./index.ts ***!
  113. \******************/
  114. /*! no static exports found */
  115. /***/ (function(module, exports, __webpack_require__) {
  116. "use strict";
  117. Object.defineProperty(exports, "__esModule", { value: true });
  118. const JavaScriptObfuscatorFacade_1 = __webpack_require__(/*! ./src/JavaScriptObfuscatorFacade */ "./src/JavaScriptObfuscatorFacade.ts");
  119. module.exports = JavaScriptObfuscatorFacade_1.JavaScriptObfuscator;
  120. /***/ }),
  121. /***/ "./src/EspreeFacade.ts":
  122. /*!*****************************!*\
  123. !*** ./src/EspreeFacade.ts ***!
  124. \*****************************/
  125. /*! no static exports found */
  126. /***/ (function(module, exports, __webpack_require__) {
  127. "use strict";
  128. Object.defineProperty(exports, "__esModule", { value: true });
  129. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  130. const espree = tslib_1.__importStar(__webpack_require__(/*! espree */ "espree"));
  131. const chalk_1 = tslib_1.__importDefault(__webpack_require__(/*! chalk */ "chalk"));
  132. class EspreeFacade {
  133. static parse(input, config) {
  134. const sourceTypeLength = EspreeFacade.sourceTypes.length;
  135. for (let i = 0; i < sourceTypeLength; i++) {
  136. try {
  137. return EspreeFacade.parseType(input, config, EspreeFacade.sourceTypes[i]);
  138. }
  139. catch (error) {
  140. if (i < sourceTypeLength - 1) {
  141. continue;
  142. }
  143. throw new Error(EspreeFacade.processParsingError(input, error.message, {
  144. line: error.lineNumber,
  145. column: error.column,
  146. }));
  147. }
  148. }
  149. throw new Error(`Espree parsing error`);
  150. }
  151. static parseType(input, inputConfig, sourceType) {
  152. const config = Object.assign(Object.assign({}, inputConfig), { sourceType });
  153. return espree.parse(input, config);
  154. }
  155. static processParsingError(sourceCode, errorMessage, position) {
  156. if (!position || !position.line || !position.column) {
  157. throw new Error(errorMessage);
  158. }
  159. const sourceCodeLines = sourceCode.split(/\r?\n/);
  160. const errorLine = sourceCodeLines[position.line - 1];
  161. if (!errorLine) {
  162. throw new Error(errorMessage);
  163. }
  164. const startErrorIndex = Math.max(0, position.column - EspreeFacade.nearestSymbolsCount);
  165. const endErrorIndex = Math.min(errorLine.length, position.column + EspreeFacade.nearestSymbolsCount);
  166. const formattedPointer = EspreeFacade.colorError('>');
  167. const formattedCodeSlice = `...${errorLine.substring(startErrorIndex, endErrorIndex).replace(/^\s+/, '')}...`;
  168. throw new Error(`Line ${position.line}: ${errorMessage}\n${formattedPointer} ${formattedCodeSlice}`);
  169. }
  170. }
  171. exports.EspreeFacade = EspreeFacade;
  172. EspreeFacade.colorError = chalk_1.default.red;
  173. EspreeFacade.nearestSymbolsCount = 15;
  174. EspreeFacade.sourceTypes = [
  175. 'script',
  176. 'module'
  177. ];
  178. /***/ }),
  179. /***/ "./src/JavaScriptObfuscator.ts":
  180. /*!*************************************!*\
  181. !*** ./src/JavaScriptObfuscator.ts ***!
  182. \*************************************/
  183. /*! no static exports found */
  184. /***/ (function(module, exports, __webpack_require__) {
  185. "use strict";
  186. var JavaScriptObfuscator_1;
  187. Object.defineProperty(exports, "__esModule", { value: true });
  188. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  189. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  190. const ServiceIdentifiers_1 = __webpack_require__(/*! ./container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  191. const escodegen = tslib_1.__importStar(__webpack_require__(/*! escodegen */ "escodegen"));
  192. const LoggingMessage_1 = __webpack_require__(/*! ./enums/logger/LoggingMessage */ "./src/enums/logger/LoggingMessage.ts");
  193. const NodeTransformer_1 = __webpack_require__(/*! ./enums/node-transformers/NodeTransformer */ "./src/enums/node-transformers/NodeTransformer.ts");
  194. const TransformationStage_1 = __webpack_require__(/*! ./enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  195. const EspreeFacade_1 = __webpack_require__(/*! ./EspreeFacade */ "./src/EspreeFacade.ts");
  196. const NodeGuards_1 = __webpack_require__(/*! ./node/NodeGuards */ "./src/node/NodeGuards.ts");
  197. let JavaScriptObfuscator = JavaScriptObfuscator_1 = class JavaScriptObfuscator {
  198. constructor(transformersRunner, randomGenerator, obfuscatedCodeFactory, logger, options) {
  199. this.transformersRunner = transformersRunner;
  200. this.randomGenerator = randomGenerator;
  201. this.obfuscatedCodeFactory = obfuscatedCodeFactory;
  202. this.logger = logger;
  203. this.options = options;
  204. }
  205. obfuscate(sourceCode) {
  206. const timeStart = Date.now();
  207. this.logger.info(LoggingMessage_1.LoggingMessage.Version, "0.21.1");
  208. this.logger.info(LoggingMessage_1.LoggingMessage.ObfuscationStarted);
  209. this.logger.info(LoggingMessage_1.LoggingMessage.RandomGeneratorSeed, this.randomGenerator.getInputSeed());
  210. const astTree = this.parseCode(sourceCode);
  211. const obfuscatedAstTree = this.transformAstTree(astTree);
  212. const generatorOutput = this.generateCode(sourceCode, obfuscatedAstTree);
  213. const obfuscationTime = (Date.now() - timeStart) / 1000;
  214. this.logger.success(LoggingMessage_1.LoggingMessage.ObfuscationCompleted, obfuscationTime);
  215. return this.getObfuscatedCode(generatorOutput);
  216. }
  217. parseCode(sourceCode) {
  218. return EspreeFacade_1.EspreeFacade.parse(sourceCode, JavaScriptObfuscator_1.espreeParseOptions);
  219. }
  220. transformAstTree(astTree) {
  221. astTree = this.runTransformationStage(astTree, TransformationStage_1.TransformationStage.Initializing);
  222. const isEmptyAstTree = NodeGuards_1.NodeGuards.isProgramNode(astTree)
  223. && !astTree.body.length
  224. && !astTree.leadingComments
  225. && !astTree.trailingComments;
  226. if (isEmptyAstTree) {
  227. this.logger.warn(LoggingMessage_1.LoggingMessage.EmptySourceCode);
  228. return astTree;
  229. }
  230. astTree = this.runTransformationStage(astTree, TransformationStage_1.TransformationStage.Preparing);
  231. if (this.options.deadCodeInjection) {
  232. astTree = this.runTransformationStage(astTree, TransformationStage_1.TransformationStage.DeadCodeInjection);
  233. }
  234. if (this.options.controlFlowFlattening) {
  235. astTree = this.runTransformationStage(astTree, TransformationStage_1.TransformationStage.ControlFlowFlattening);
  236. }
  237. astTree = this.runTransformationStage(astTree, TransformationStage_1.TransformationStage.Converting);
  238. astTree = this.runTransformationStage(astTree, TransformationStage_1.TransformationStage.Obfuscating);
  239. astTree = this.runTransformationStage(astTree, TransformationStage_1.TransformationStage.Finalizing);
  240. return astTree;
  241. }
  242. generateCode(sourceCode, astTree) {
  243. const escodegenParams = Object.assign({}, JavaScriptObfuscator_1.escodegenParams);
  244. if (this.options.sourceMap) {
  245. escodegenParams.sourceMap = this.options.inputFileName || 'sourceMap';
  246. escodegenParams.sourceContent = sourceCode;
  247. }
  248. const generatorOutput = escodegen.generate(astTree, Object.assign(Object.assign({}, escodegenParams), { format: {
  249. compact: this.options.compact
  250. } }));
  251. generatorOutput.map = generatorOutput.map ? generatorOutput.map.toString() : '';
  252. return generatorOutput;
  253. }
  254. getObfuscatedCode(generatorOutput) {
  255. return this.obfuscatedCodeFactory(generatorOutput.code, generatorOutput.map);
  256. }
  257. runTransformationStage(astTree, transformationStage) {
  258. this.logger.info(LoggingMessage_1.LoggingMessage.TransformationStage, transformationStage);
  259. return this.transformersRunner.transform(astTree, JavaScriptObfuscator_1.transformersList, transformationStage);
  260. }
  261. };
  262. JavaScriptObfuscator.espreeParseOptions = {
  263. comment: true,
  264. ecmaVersion: 10,
  265. loc: true,
  266. range: true
  267. };
  268. JavaScriptObfuscator.escodegenParams = {
  269. comment: true,
  270. verbatim: 'x-verbatim-property',
  271. sourceMapWithCode: true
  272. };
  273. JavaScriptObfuscator.transformersList = [
  274. NodeTransformer_1.NodeTransformer.BlockStatementControlFlowTransformer,
  275. NodeTransformer_1.NodeTransformer.ClassDeclarationTransformer,
  276. NodeTransformer_1.NodeTransformer.CommentsTransformer,
  277. NodeTransformer_1.NodeTransformer.CustomNodesTransformer,
  278. NodeTransformer_1.NodeTransformer.DeadCodeInjectionTransformer,
  279. NodeTransformer_1.NodeTransformer.EvalCallExpressionTransformer,
  280. NodeTransformer_1.NodeTransformer.FunctionControlFlowTransformer,
  281. NodeTransformer_1.NodeTransformer.CatchClauseTransformer,
  282. NodeTransformer_1.NodeTransformer.FunctionDeclarationTransformer,
  283. NodeTransformer_1.NodeTransformer.FunctionTransformer,
  284. NodeTransformer_1.NodeTransformer.ImportDeclarationTransformer,
  285. NodeTransformer_1.NodeTransformer.LabeledStatementTransformer,
  286. NodeTransformer_1.NodeTransformer.LiteralTransformer,
  287. NodeTransformer_1.NodeTransformer.MemberExpressionTransformer,
  288. NodeTransformer_1.NodeTransformer.MetadataTransformer,
  289. NodeTransformer_1.NodeTransformer.MethodDefinitionTransformer,
  290. NodeTransformer_1.NodeTransformer.ObfuscatingGuardsTransformer,
  291. NodeTransformer_1.NodeTransformer.ObjectExpressionKeysTransformer,
  292. NodeTransformer_1.NodeTransformer.ObjectExpressionTransformer,
  293. NodeTransformer_1.NodeTransformer.ParentificationTransformer,
  294. NodeTransformer_1.NodeTransformer.SplitStringTransformer,
  295. NodeTransformer_1.NodeTransformer.TemplateLiteralTransformer,
  296. NodeTransformer_1.NodeTransformer.VariableDeclarationTransformer,
  297. NodeTransformer_1.NodeTransformer.VariablePreserveTransformer
  298. ];
  299. JavaScriptObfuscator = JavaScriptObfuscator_1 = tslib_1.__decorate([
  300. inversify_1.injectable(),
  301. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITransformersRunner)),
  302. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  303. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatedCode)),
  304. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ILogger)),
  305. tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  306. tslib_1.__metadata("design:paramtypes", [Object, Object, Function, Object, Object])
  307. ], JavaScriptObfuscator);
  308. exports.JavaScriptObfuscator = JavaScriptObfuscator;
  309. /***/ }),
  310. /***/ "./src/JavaScriptObfuscatorFacade.ts":
  311. /*!*******************************************!*\
  312. !*** ./src/JavaScriptObfuscatorFacade.ts ***!
  313. \*******************************************/
  314. /*! no static exports found */
  315. /***/ (function(module, exports, __webpack_require__) {
  316. "use strict";
  317. Object.defineProperty(exports, "__esModule", { value: true });
  318. __webpack_require__(/*! reflect-metadata */ "reflect-metadata");
  319. const ServiceIdentifiers_1 = __webpack_require__(/*! ./container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  320. const InversifyContainerFacade_1 = __webpack_require__(/*! ./container/InversifyContainerFacade */ "./src/container/InversifyContainerFacade.ts");
  321. class JavaScriptObfuscatorFacade {
  322. static obfuscate(sourceCode, inputOptions = {}) {
  323. const inversifyContainerFacade = new InversifyContainerFacade_1.InversifyContainerFacade();
  324. inversifyContainerFacade.load(sourceCode, '', inputOptions);
  325. const javaScriptObfuscator = inversifyContainerFacade
  326. .get(ServiceIdentifiers_1.ServiceIdentifiers.IJavaScriptObfuscator);
  327. const obfuscatedCode = javaScriptObfuscator.obfuscate(sourceCode);
  328. inversifyContainerFacade.unload();
  329. return obfuscatedCode;
  330. }
  331. }
  332. exports.JavaScriptObfuscator = JavaScriptObfuscatorFacade;
  333. JavaScriptObfuscatorFacade.version = "0.21.1" || false;
  334. /***/ }),
  335. /***/ "./src/analyzers/calls-graph-analyzer/CallsGraphAnalyzer.ts":
  336. /*!******************************************************************!*\
  337. !*** ./src/analyzers/calls-graph-analyzer/CallsGraphAnalyzer.ts ***!
  338. \******************************************************************/
  339. /*! no static exports found */
  340. /***/ (function(module, exports, __webpack_require__) {
  341. "use strict";
  342. var CallsGraphAnalyzer_1;
  343. Object.defineProperty(exports, "__esModule", { value: true });
  344. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  345. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  346. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  347. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  348. const CalleeDataExtractor_1 = __webpack_require__(/*! ../../enums/analyzers/calls-graph-analyzer/CalleeDataExtractor */ "./src/enums/analyzers/calls-graph-analyzer/CalleeDataExtractor.ts");
  349. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  350. const NodeStatementUtils_1 = __webpack_require__(/*! ../../node/NodeStatementUtils */ "./src/node/NodeStatementUtils.ts");
  351. let CallsGraphAnalyzer = CallsGraphAnalyzer_1 = class CallsGraphAnalyzer {
  352. constructor(calleeDataExtractorFactory) {
  353. this.calleeDataExtractorFactory = calleeDataExtractorFactory;
  354. }
  355. static getLimitIndex(blockScopeBodyLength) {
  356. const lastIndex = blockScopeBodyLength - 1;
  357. const limitThresholdActivationIndex = CallsGraphAnalyzer_1.limitThresholdActivationLength - 1;
  358. let limitIndex = lastIndex;
  359. if (lastIndex > limitThresholdActivationIndex) {
  360. limitIndex = Math.round(limitThresholdActivationIndex + (lastIndex * CallsGraphAnalyzer_1.limitThreshold));
  361. if (limitIndex > lastIndex) {
  362. limitIndex = lastIndex;
  363. }
  364. }
  365. return limitIndex;
  366. }
  367. analyze(astTree) {
  368. return this.analyzeRecursive(astTree.body);
  369. }
  370. analyzeRecursive(blockScopeBody) {
  371. const limitIndex = CallsGraphAnalyzer_1.getLimitIndex(blockScopeBody.length);
  372. const callsGraphData = [];
  373. const blockScopeBodyLength = blockScopeBody.length;
  374. for (let index = 0; index < blockScopeBodyLength; index++) {
  375. if (index > limitIndex) {
  376. break;
  377. }
  378. const blockScopeBodyNode = blockScopeBody[index];
  379. estraverse.traverse(blockScopeBodyNode, {
  380. enter: (node) => {
  381. if (!NodeGuards_1.NodeGuards.isCallExpressionNode(node)) {
  382. return;
  383. }
  384. if (blockScopeBodyNode.parentNode !== NodeStatementUtils_1.NodeStatementUtils.getParentNodeWithStatements(node)) {
  385. return estraverse.VisitorOption.Skip;
  386. }
  387. this.analyzeCallExpressionNode(callsGraphData, blockScopeBody, node);
  388. }
  389. });
  390. }
  391. return callsGraphData;
  392. }
  393. analyzeCallExpressionNode(callsGraphData, blockScopeBody, callExpressionNode) {
  394. CallsGraphAnalyzer_1.calleeDataExtractorsList.forEach((calleeDataExtractorName) => {
  395. const calleeData = this.calleeDataExtractorFactory(calleeDataExtractorName)
  396. .extract(blockScopeBody, callExpressionNode.callee);
  397. if (!calleeData) {
  398. return;
  399. }
  400. callsGraphData.push(Object.assign(Object.assign({}, calleeData), { callsGraph: this.analyzeRecursive(calleeData.callee.body) }));
  401. });
  402. }
  403. };
  404. CallsGraphAnalyzer.calleeDataExtractorsList = [
  405. CalleeDataExtractor_1.CalleeDataExtractor.FunctionDeclarationCalleeDataExtractor,
  406. CalleeDataExtractor_1.CalleeDataExtractor.FunctionExpressionCalleeDataExtractor,
  407. CalleeDataExtractor_1.CalleeDataExtractor.ObjectExpressionCalleeDataExtractor
  408. ];
  409. CallsGraphAnalyzer.limitThresholdActivationLength = 25;
  410. CallsGraphAnalyzer.limitThreshold = 0.002;
  411. CallsGraphAnalyzer = CallsGraphAnalyzer_1 = tslib_1.__decorate([
  412. inversify_1.injectable(),
  413. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICalleeDataExtractor)),
  414. tslib_1.__metadata("design:paramtypes", [Function])
  415. ], CallsGraphAnalyzer);
  416. exports.CallsGraphAnalyzer = CallsGraphAnalyzer;
  417. /***/ }),
  418. /***/ "./src/analyzers/calls-graph-analyzer/callee-data-extractors/AbstractCalleeDataExtractor.ts":
  419. /*!**************************************************************************************************!*\
  420. !*** ./src/analyzers/calls-graph-analyzer/callee-data-extractors/AbstractCalleeDataExtractor.ts ***!
  421. \**************************************************************************************************/
  422. /*! no static exports found */
  423. /***/ (function(module, exports, __webpack_require__) {
  424. "use strict";
  425. Object.defineProperty(exports, "__esModule", { value: true });
  426. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  427. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  428. let AbstractCalleeDataExtractor = class AbstractCalleeDataExtractor {
  429. };
  430. AbstractCalleeDataExtractor = tslib_1.__decorate([
  431. inversify_1.injectable()
  432. ], AbstractCalleeDataExtractor);
  433. exports.AbstractCalleeDataExtractor = AbstractCalleeDataExtractor;
  434. /***/ }),
  435. /***/ "./src/analyzers/calls-graph-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor.ts":
  436. /*!*************************************************************************************************************!*\
  437. !*** ./src/analyzers/calls-graph-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor.ts ***!
  438. \*************************************************************************************************************/
  439. /*! no static exports found */
  440. /***/ (function(module, exports, __webpack_require__) {
  441. "use strict";
  442. Object.defineProperty(exports, "__esModule", { value: true });
  443. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  444. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  445. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  446. const AbstractCalleeDataExtractor_1 = __webpack_require__(/*! ./AbstractCalleeDataExtractor */ "./src/analyzers/calls-graph-analyzer/callee-data-extractors/AbstractCalleeDataExtractor.ts");
  447. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  448. const NodeStatementUtils_1 = __webpack_require__(/*! ../../../node/NodeStatementUtils */ "./src/node/NodeStatementUtils.ts");
  449. let FunctionDeclarationCalleeDataExtractor = class FunctionDeclarationCalleeDataExtractor extends AbstractCalleeDataExtractor_1.AbstractCalleeDataExtractor {
  450. extract(blockScopeBody, callee) {
  451. if (!NodeGuards_1.NodeGuards.isIdentifierNode(callee)) {
  452. return null;
  453. }
  454. const calleeBlockStatement = this.getCalleeBlockStatement(NodeStatementUtils_1.NodeStatementUtils.getParentNodeWithStatements(blockScopeBody[0]), callee.name);
  455. if (!calleeBlockStatement) {
  456. return null;
  457. }
  458. return {
  459. callee: calleeBlockStatement,
  460. name: callee.name
  461. };
  462. }
  463. getCalleeBlockStatement(targetNode, name) {
  464. let calleeBlockStatement = null;
  465. estraverse.traverse(targetNode, {
  466. enter: (node) => {
  467. if (NodeGuards_1.NodeGuards.isFunctionDeclarationNode(node) && node.id.name === name) {
  468. calleeBlockStatement = node.body;
  469. return estraverse.VisitorOption.Break;
  470. }
  471. }
  472. });
  473. return calleeBlockStatement;
  474. }
  475. };
  476. FunctionDeclarationCalleeDataExtractor = tslib_1.__decorate([
  477. inversify_1.injectable()
  478. ], FunctionDeclarationCalleeDataExtractor);
  479. exports.FunctionDeclarationCalleeDataExtractor = FunctionDeclarationCalleeDataExtractor;
  480. /***/ }),
  481. /***/ "./src/analyzers/calls-graph-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor.ts":
  482. /*!************************************************************************************************************!*\
  483. !*** ./src/analyzers/calls-graph-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor.ts ***!
  484. \************************************************************************************************************/
  485. /*! no static exports found */
  486. /***/ (function(module, exports, __webpack_require__) {
  487. "use strict";
  488. Object.defineProperty(exports, "__esModule", { value: true });
  489. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  490. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  491. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  492. const AbstractCalleeDataExtractor_1 = __webpack_require__(/*! ./AbstractCalleeDataExtractor */ "./src/analyzers/calls-graph-analyzer/callee-data-extractors/AbstractCalleeDataExtractor.ts");
  493. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  494. const NodeStatementUtils_1 = __webpack_require__(/*! ../../../node/NodeStatementUtils */ "./src/node/NodeStatementUtils.ts");
  495. let FunctionExpressionCalleeDataExtractor = class FunctionExpressionCalleeDataExtractor extends AbstractCalleeDataExtractor_1.AbstractCalleeDataExtractor {
  496. extract(blockScopeBody, callee) {
  497. let calleeBlockStatement = null;
  498. if (NodeGuards_1.NodeGuards.isIdentifierNode(callee)) {
  499. calleeBlockStatement = this.getCalleeBlockStatement(NodeStatementUtils_1.NodeStatementUtils.getParentNodeWithStatements(blockScopeBody[0]), callee.name);
  500. }
  501. if (NodeGuards_1.NodeGuards.isFunctionExpressionNode(callee)) {
  502. calleeBlockStatement = callee.body;
  503. }
  504. if (!calleeBlockStatement) {
  505. return null;
  506. }
  507. return {
  508. callee: calleeBlockStatement,
  509. name: callee.name || null
  510. };
  511. }
  512. getCalleeBlockStatement(targetNode, name) {
  513. let calleeBlockStatement = null;
  514. estraverse.traverse(targetNode, {
  515. enter: (node, parentNode) => {
  516. if (NodeGuards_1.NodeGuards.isFunctionExpressionNode(node) &&
  517. parentNode &&
  518. NodeGuards_1.NodeGuards.isVariableDeclaratorNode(parentNode) &&
  519. NodeGuards_1.NodeGuards.isIdentifierNode(parentNode.id) &&
  520. parentNode.id.name === name) {
  521. calleeBlockStatement = node.body;
  522. return estraverse.VisitorOption.Break;
  523. }
  524. }
  525. });
  526. return calleeBlockStatement;
  527. }
  528. };
  529. FunctionExpressionCalleeDataExtractor = tslib_1.__decorate([
  530. inversify_1.injectable()
  531. ], FunctionExpressionCalleeDataExtractor);
  532. exports.FunctionExpressionCalleeDataExtractor = FunctionExpressionCalleeDataExtractor;
  533. /***/ }),
  534. /***/ "./src/analyzers/calls-graph-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor.ts":
  535. /*!**********************************************************************************************************!*\
  536. !*** ./src/analyzers/calls-graph-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor.ts ***!
  537. \**********************************************************************************************************/
  538. /*! no static exports found */
  539. /***/ (function(module, exports, __webpack_require__) {
  540. "use strict";
  541. var ObjectExpressionCalleeDataExtractor_1;
  542. Object.defineProperty(exports, "__esModule", { value: true });
  543. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  544. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  545. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  546. const AbstractCalleeDataExtractor_1 = __webpack_require__(/*! ./AbstractCalleeDataExtractor */ "./src/analyzers/calls-graph-analyzer/callee-data-extractors/AbstractCalleeDataExtractor.ts");
  547. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  548. const NodeStatementUtils_1 = __webpack_require__(/*! ../../../node/NodeStatementUtils */ "./src/node/NodeStatementUtils.ts");
  549. let ObjectExpressionCalleeDataExtractor = ObjectExpressionCalleeDataExtractor_1 = class ObjectExpressionCalleeDataExtractor extends AbstractCalleeDataExtractor_1.AbstractCalleeDataExtractor {
  550. static isValidTargetPropertyNode(propertyNode, nextItemInCallsChain) {
  551. if (!propertyNode.key) {
  552. return false;
  553. }
  554. const isTargetPropertyNodeWithIdentifierKey = NodeGuards_1.NodeGuards.isIdentifierNode(propertyNode.key) && propertyNode.key.name === nextItemInCallsChain;
  555. const isTargetPropertyNodeWithLiteralKey = NodeGuards_1.NodeGuards.isLiteralNode(propertyNode.key) &&
  556. Boolean(propertyNode.key.value) &&
  557. propertyNode.key.value === nextItemInCallsChain;
  558. return isTargetPropertyNodeWithIdentifierKey || isTargetPropertyNodeWithLiteralKey;
  559. }
  560. extract(blockScopeBody, callee) {
  561. if (!NodeGuards_1.NodeGuards.isMemberExpressionNode(callee)) {
  562. return null;
  563. }
  564. const objectMembersCallsChain = this.createObjectMembersCallsChain([], callee);
  565. if (!objectMembersCallsChain.length) {
  566. return null;
  567. }
  568. const functionExpressionName = objectMembersCallsChain[objectMembersCallsChain.length - 1];
  569. const calleeBlockStatement = this.getCalleeBlockStatement(NodeStatementUtils_1.NodeStatementUtils.getParentNodeWithStatements(blockScopeBody[0]), objectMembersCallsChain);
  570. if (!calleeBlockStatement) {
  571. return null;
  572. }
  573. return {
  574. callee: calleeBlockStatement,
  575. name: functionExpressionName
  576. };
  577. }
  578. createObjectMembersCallsChain(currentChain, memberExpression) {
  579. if (NodeGuards_1.NodeGuards.isIdentifierNode(memberExpression.property) && memberExpression.computed === false) {
  580. currentChain.unshift(memberExpression.property.name);
  581. }
  582. else if (NodeGuards_1.NodeGuards.isLiteralNode(memberExpression.property) &&
  583. (typeof memberExpression.property.value === 'string' ||
  584. typeof memberExpression.property.value === 'number')) {
  585. currentChain.unshift(memberExpression.property.value);
  586. }
  587. else {
  588. return currentChain;
  589. }
  590. if (NodeGuards_1.NodeGuards.isMemberExpressionNode(memberExpression.object)) {
  591. return this.createObjectMembersCallsChain(currentChain, memberExpression.object);
  592. }
  593. else if (NodeGuards_1.NodeGuards.isIdentifierNode(memberExpression.object)) {
  594. currentChain.unshift(memberExpression.object.name);
  595. }
  596. return currentChain;
  597. }
  598. getCalleeBlockStatement(targetNode, objectMembersCallsChain) {
  599. const objectName = objectMembersCallsChain.shift();
  600. if (!objectName) {
  601. return null;
  602. }
  603. let calleeBlockStatement = null;
  604. estraverse.traverse(targetNode, {
  605. enter: (node) => {
  606. if (NodeGuards_1.NodeGuards.isVariableDeclaratorNode(node) &&
  607. NodeGuards_1.NodeGuards.isIdentifierNode(node.id) &&
  608. node.init &&
  609. NodeGuards_1.NodeGuards.isObjectExpressionNode(node.init) &&
  610. node.id.name === objectName) {
  611. calleeBlockStatement = this.findCalleeBlockStatement(node.init.properties, objectMembersCallsChain);
  612. return estraverse.VisitorOption.Break;
  613. }
  614. }
  615. });
  616. return calleeBlockStatement;
  617. }
  618. findCalleeBlockStatement(objectExpressionProperties, objectMembersCallsChain) {
  619. const nextItemInCallsChain = objectMembersCallsChain.shift();
  620. if (!nextItemInCallsChain) {
  621. return null;
  622. }
  623. for (const propertyNode of objectExpressionProperties) {
  624. if (!ObjectExpressionCalleeDataExtractor_1.isValidTargetPropertyNode(propertyNode, nextItemInCallsChain)) {
  625. continue;
  626. }
  627. if (NodeGuards_1.NodeGuards.isObjectExpressionNode(propertyNode.value)) {
  628. return this.findCalleeBlockStatement(propertyNode.value.properties, objectMembersCallsChain);
  629. }
  630. if (NodeGuards_1.NodeGuards.isFunctionExpressionNode(propertyNode.value)) {
  631. return propertyNode.value.body;
  632. }
  633. }
  634. return null;
  635. }
  636. };
  637. ObjectExpressionCalleeDataExtractor = ObjectExpressionCalleeDataExtractor_1 = tslib_1.__decorate([
  638. inversify_1.injectable()
  639. ], ObjectExpressionCalleeDataExtractor);
  640. exports.ObjectExpressionCalleeDataExtractor = ObjectExpressionCalleeDataExtractor;
  641. /***/ }),
  642. /***/ "./src/analyzers/prevailing-kind-of-variables-analyzer/PrevailingKindOfVariablesAnalyzer.ts":
  643. /*!**************************************************************************************************!*\
  644. !*** ./src/analyzers/prevailing-kind-of-variables-analyzer/PrevailingKindOfVariablesAnalyzer.ts ***!
  645. \**************************************************************************************************/
  646. /*! no static exports found */
  647. /***/ (function(module, exports, __webpack_require__) {
  648. "use strict";
  649. var PrevailingKindOfVariablesAnalyzer_1;
  650. Object.defineProperty(exports, "__esModule", { value: true });
  651. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  652. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  653. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  654. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  655. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  656. let PrevailingKindOfVariablesAnalyzer = PrevailingKindOfVariablesAnalyzer_1 = class PrevailingKindOfVariablesAnalyzer {
  657. constructor(arrayUtils) {
  658. this.prevailingKindOfVariables = PrevailingKindOfVariablesAnalyzer_1.defaultKindOfVariables;
  659. this.arrayUtils = arrayUtils;
  660. }
  661. analyze(astTree) {
  662. const variableKinds = [];
  663. estraverse.traverse(astTree, {
  664. enter: (node) => {
  665. if (!NodeGuards_1.NodeGuards.isVariableDeclarationNode(node)) {
  666. return;
  667. }
  668. variableKinds.push(node.kind);
  669. }
  670. });
  671. this.prevailingKindOfVariables = this.arrayUtils.findMostOccurringElement(variableKinds)
  672. || PrevailingKindOfVariablesAnalyzer_1.defaultKindOfVariables;
  673. }
  674. getPrevailingKind() {
  675. return this.prevailingKindOfVariables;
  676. }
  677. };
  678. PrevailingKindOfVariablesAnalyzer.defaultKindOfVariables = 'var';
  679. PrevailingKindOfVariablesAnalyzer = PrevailingKindOfVariablesAnalyzer_1 = tslib_1.__decorate([
  680. inversify_1.injectable(),
  681. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),
  682. tslib_1.__metadata("design:paramtypes", [Object])
  683. ], PrevailingKindOfVariablesAnalyzer);
  684. exports.PrevailingKindOfVariablesAnalyzer = PrevailingKindOfVariablesAnalyzer;
  685. /***/ }),
  686. /***/ "./src/container/InversifyContainerFacade.ts":
  687. /*!***************************************************!*\
  688. !*** ./src/container/InversifyContainerFacade.ts ***!
  689. \***************************************************/
  690. /*! no static exports found */
  691. /***/ (function(module, exports, __webpack_require__) {
  692. "use strict";
  693. Object.defineProperty(exports, "__esModule", { value: true });
  694. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  695. const ServiceIdentifiers_1 = __webpack_require__(/*! ./ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  696. const AnalyzersModule_1 = __webpack_require__(/*! ./modules/analyzers/AnalyzersModule */ "./src/container/modules/analyzers/AnalyzersModule.ts");
  697. const ControlFlowTransformersModule_1 = __webpack_require__(/*! ./modules/node-transformers/ControlFlowTransformersModule */ "./src/container/modules/node-transformers/ControlFlowTransformersModule.ts");
  698. const ConvertingTransformersModule_1 = __webpack_require__(/*! ./modules/node-transformers/ConvertingTransformersModule */ "./src/container/modules/node-transformers/ConvertingTransformersModule.ts");
  699. const CustomNodesModule_1 = __webpack_require__(/*! ./modules/custom-nodes/CustomNodesModule */ "./src/container/modules/custom-nodes/CustomNodesModule.ts");
  700. const FinalizingTransformersModule_1 = __webpack_require__(/*! ./modules/node-transformers/FinalizingTransformersModule */ "./src/container/modules/node-transformers/FinalizingTransformersModule.ts");
  701. const GeneratorsModule_1 = __webpack_require__(/*! ./modules/generators/GeneratorsModule */ "./src/container/modules/generators/GeneratorsModule.ts");
  702. const NodeTransformersModule_1 = __webpack_require__(/*! ./modules/node-transformers/NodeTransformersModule */ "./src/container/modules/node-transformers/NodeTransformersModule.ts");
  703. const ObfuscatingTransformersModule_1 = __webpack_require__(/*! ./modules/node-transformers/ObfuscatingTransformersModule */ "./src/container/modules/node-transformers/ObfuscatingTransformersModule.ts");
  704. const OptionsModule_1 = __webpack_require__(/*! ./modules/options/OptionsModule */ "./src/container/modules/options/OptionsModule.ts");
  705. const PreparingTransformersModule_1 = __webpack_require__(/*! ./modules/node-transformers/PreparingTransformersModule */ "./src/container/modules/node-transformers/PreparingTransformersModule.ts");
  706. const StoragesModule_1 = __webpack_require__(/*! ./modules/storages/StoragesModule */ "./src/container/modules/storages/StoragesModule.ts");
  707. const UtilsModule_1 = __webpack_require__(/*! ./modules/utils/UtilsModule */ "./src/container/modules/utils/UtilsModule.ts");
  708. const JavaScriptObfuscator_1 = __webpack_require__(/*! ../JavaScriptObfuscator */ "./src/JavaScriptObfuscator.ts");
  709. const Logger_1 = __webpack_require__(/*! ../logger/Logger */ "./src/logger/Logger.ts");
  710. const ObfuscationEventEmitter_1 = __webpack_require__(/*! ../event-emitters/ObfuscationEventEmitter */ "./src/event-emitters/ObfuscationEventEmitter.ts");
  711. const ObfuscatedCode_1 = __webpack_require__(/*! ../source-code/ObfuscatedCode */ "./src/source-code/ObfuscatedCode.ts");
  712. const SourceCode_1 = __webpack_require__(/*! ../source-code/SourceCode */ "./src/source-code/SourceCode.ts");
  713. const TransformersRunner_1 = __webpack_require__(/*! ../node-transformers/TransformersRunner */ "./src/node-transformers/TransformersRunner.ts");
  714. class InversifyContainerFacade {
  715. constructor() {
  716. this.container = new inversify_1.Container();
  717. }
  718. static getFactory(serviceIdentifier) {
  719. return (context) => {
  720. return (bindingName) => {
  721. return context.container.getNamed(serviceIdentifier, bindingName);
  722. };
  723. };
  724. }
  725. static getCacheFactory(serviceIdentifier) {
  726. return (context) => {
  727. const cache = new Map();
  728. return (bindingName) => {
  729. if (cache.has(bindingName)) {
  730. return cache.get(bindingName);
  731. }
  732. const object = context.container.getNamed(serviceIdentifier, bindingName);
  733. cache.set(bindingName, object);
  734. return object;
  735. };
  736. };
  737. }
  738. static getConstructorFactory(serviceIdentifier, ...dependencies) {
  739. return (context) => {
  740. const cache = new Map();
  741. const cachedDependencies = [];
  742. return (bindingName) => {
  743. dependencies.forEach((dependency, index) => {
  744. if (!cachedDependencies[index]) {
  745. cachedDependencies[index] = context.container.get(dependency);
  746. }
  747. });
  748. if (cache.has(bindingName)) {
  749. return new (cache.get(bindingName))(...cachedDependencies);
  750. }
  751. const constructor = context.container
  752. .getNamed(serviceIdentifier, bindingName);
  753. cache.set(bindingName, constructor);
  754. return new constructor(...cachedDependencies);
  755. };
  756. };
  757. }
  758. get(serviceIdentifier) {
  759. return this.container.get(serviceIdentifier);
  760. }
  761. getNamed(serviceIdentifier, named) {
  762. return this.container.getNamed(serviceIdentifier, named);
  763. }
  764. load(sourceCode, sourceMap, options) {
  765. this.container
  766. .bind(ServiceIdentifiers_1.ServiceIdentifiers.ISourceCode)
  767. .toDynamicValue(() => new SourceCode_1.SourceCode(sourceCode, sourceMap))
  768. .inSingletonScope();
  769. this.container
  770. .bind(ServiceIdentifiers_1.ServiceIdentifiers.TInputOptions)
  771. .toDynamicValue(() => options)
  772. .inSingletonScope();
  773. this.container
  774. .bind(ServiceIdentifiers_1.ServiceIdentifiers.ILogger)
  775. .to(Logger_1.Logger)
  776. .inSingletonScope();
  777. this.container
  778. .bind(ServiceIdentifiers_1.ServiceIdentifiers.IJavaScriptObfuscator)
  779. .to(JavaScriptObfuscator_1.JavaScriptObfuscator)
  780. .inSingletonScope();
  781. this.container
  782. .bind(ServiceIdentifiers_1.ServiceIdentifiers.ITransformersRunner)
  783. .to(TransformersRunner_1.TransformersRunner)
  784. .inSingletonScope();
  785. this.container
  786. .bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatedCode)
  787. .to(ObfuscatedCode_1.ObfuscatedCode);
  788. this.container
  789. .bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatedCode)
  790. .toFactory((context) => {
  791. return (obfuscatedCodeAsString, sourceMapAsString) => {
  792. const obfuscatedCode = context.container
  793. .get(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatedCode);
  794. obfuscatedCode.initialize(obfuscatedCodeAsString, sourceMapAsString);
  795. return obfuscatedCode;
  796. };
  797. });
  798. this.container
  799. .bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)
  800. .to(ObfuscationEventEmitter_1.ObfuscationEventEmitter)
  801. .inSingletonScope();
  802. this.container.load(AnalyzersModule_1.analyzersModule);
  803. this.container.load(ControlFlowTransformersModule_1.controlFlowTransformersModule);
  804. this.container.load(ConvertingTransformersModule_1.convertingTransformersModule);
  805. this.container.load(CustomNodesModule_1.customNodesModule);
  806. this.container.load(FinalizingTransformersModule_1.finalizingTransformersModule);
  807. this.container.load(GeneratorsModule_1.generatorsModule);
  808. this.container.load(NodeTransformersModule_1.nodeTransformersModule);
  809. this.container.load(ObfuscatingTransformersModule_1.obfuscatingTransformersModule);
  810. this.container.load(OptionsModule_1.optionsModule);
  811. this.container.load(PreparingTransformersModule_1.preparingTransformersModule);
  812. this.container.load(StoragesModule_1.storagesModule);
  813. this.container.load(UtilsModule_1.utilsModule);
  814. }
  815. unload() {
  816. this.container.unbindAll();
  817. }
  818. }
  819. exports.InversifyContainerFacade = InversifyContainerFacade;
  820. /***/ }),
  821. /***/ "./src/container/ServiceIdentifiers.ts":
  822. /*!*********************************************!*\
  823. !*** ./src/container/ServiceIdentifiers.ts ***!
  824. \*********************************************/
  825. /*! no static exports found */
  826. /***/ (function(module, exports, __webpack_require__) {
  827. "use strict";
  828. Object.defineProperty(exports, "__esModule", { value: true });
  829. var ServiceIdentifiers;
  830. (function (ServiceIdentifiers) {
  831. ServiceIdentifiers["Factory__ICalleeDataExtractor"] = "Factory<ICalleeDataExtractor>";
  832. ServiceIdentifiers["Factory__IControlFlowCustomNode"] = "Factory<IControlFlowCustomNode>";
  833. ServiceIdentifiers["Factory__IControlFlowReplacer"] = "Factory<IControlFlowReplacer>";
  834. ServiceIdentifiers["Factory__ICustomNode"] = "Factory<ICustomNode>";
  835. ServiceIdentifiers["Factory__ICustomNodeGroup"] = "Factory<ICustomNodeGroup>";
  836. ServiceIdentifiers["Factory__IDeadCodeInjectionCustomNode"] = "Factory<IDeadCodeInjectionCustomNode>";
  837. ServiceIdentifiers["Factory__IIdentifierNamesGenerator"] = "Factory<IIdentifierNamesGenerator>";
  838. ServiceIdentifiers["Factory__IIdentifierObfuscatingReplacer"] = "Factory<IIdentifierObfuscatingReplacer>";
  839. ServiceIdentifiers["Factory__INodeGuard"] = "Factory<INodeGuard>";
  840. ServiceIdentifiers["Factory__INodeTransformer"] = "Factory<INodeTransformer[]>";
  841. ServiceIdentifiers["Factory__IObfuscatedCode"] = "Factory<IObfuscatedCode>";
  842. ServiceIdentifiers["Factory__IObfuscatingReplacer"] = "Factory<IObfuscatingReplacer>";
  843. ServiceIdentifiers["Factory__IObjectExpressionKeysTransformerCustomNode"] = "Factory<IObjectExpressionKeysTransformerCustomNode>";
  844. ServiceIdentifiers["Factory__IPropertiesExtractor"] = "Factory<IPropertiesExtractor>";
  845. ServiceIdentifiers["Factory__TControlFlowStorage"] = "Factory<TControlFlowStorage>";
  846. ServiceIdentifiers["IArrayUtils"] = "IArrayUtils";
  847. ServiceIdentifiers["ICalleeDataExtractor"] = "ICalleeDataExtractor";
  848. ServiceIdentifiers["ICallsGraphAnalyzer"] = "ICallsGraphAnalyzer";
  849. ServiceIdentifiers["ICryptUtils"] = "ICryptUtils";
  850. ServiceIdentifiers["ICustomNode"] = "ICustomNode";
  851. ServiceIdentifiers["ICustomNodeGroup"] = "ICustomNodeGroup";
  852. ServiceIdentifiers["IControlFlowReplacer"] = "IControlFlowReplacer";
  853. ServiceIdentifiers["IEscapeSequenceEncoder"] = "IEscapeSequenceEncoder";
  854. ServiceIdentifiers["IIdentifierNamesGenerator"] = "IIdentifierNamesGenerator";
  855. ServiceIdentifiers["IIdentifierObfuscatingReplacer"] = "IIdentifierObfuscatingReplacer";
  856. ServiceIdentifiers["IJavaScriptObfuscator"] = "IJavaScriptObfuscator";
  857. ServiceIdentifiers["ILevelledTopologicalSorter"] = "ILevelledTopologicalSorter";
  858. ServiceIdentifiers["ILogger"] = "ILogger";
  859. ServiceIdentifiers["INodeGuard"] = "INodeGuard";
  860. ServiceIdentifiers["INodeTransformer"] = "INodeTransformer";
  861. ServiceIdentifiers["INodeTransformerNamesGroupsBuilder"] = "INodeTransformerNamesGroupsBuilder";
  862. ServiceIdentifiers["IObfuscationEventEmitter"] = "IObfuscationEventEmitter";
  863. ServiceIdentifiers["IObfuscatedCode"] = "IObfuscatedCode";
  864. ServiceIdentifiers["IOptions"] = "IOptions";
  865. ServiceIdentifiers["IOptionsNormalizer"] = "IOptionsNormalizer";
  866. ServiceIdentifiers["IObfuscatingReplacer"] = "IObfuscatingReplacer";
  867. ServiceIdentifiers["IPrevailingKindOfVariablesAnalyzer"] = "IPrevailingKindOfVariablesAnalyzer";
  868. ServiceIdentifiers["IPropertiesExtractor"] = "IPropertiesExtractor";
  869. ServiceIdentifiers["IRandomGenerator"] = "IRandomGenerator";
  870. ServiceIdentifiers["ISourceCode"] = "ISourceCode";
  871. ServiceIdentifiers["ISourceMapCorrector"] = "ISourceMapCorrector";
  872. ServiceIdentifiers["ITemplateFormatter"] = "ITemplateFormatter";
  873. ServiceIdentifiers["ITransformersRunner"] = "ITransformersRunner";
  874. ServiceIdentifiers["Newable__ICustomNode"] = "Newable<ICustomNode>";
  875. ServiceIdentifiers["Newable__TControlFlowStorage"] = "Newable<TControlFlowStorage>";
  876. ServiceIdentifiers["TCustomNodeGroupStorage"] = "TCustomNodeGroupStorage";
  877. ServiceIdentifiers["TInputOptions"] = "TInputOptions";
  878. ServiceIdentifiers["TStringArrayStorage"] = "TStringArrayStorage";
  879. })(ServiceIdentifiers = exports.ServiceIdentifiers || (exports.ServiceIdentifiers = {}));
  880. /***/ }),
  881. /***/ "./src/container/modules/analyzers/AnalyzersModule.ts":
  882. /*!************************************************************!*\
  883. !*** ./src/container/modules/analyzers/AnalyzersModule.ts ***!
  884. \************************************************************/
  885. /*! no static exports found */
  886. /***/ (function(module, exports, __webpack_require__) {
  887. "use strict";
  888. Object.defineProperty(exports, "__esModule", { value: true });
  889. const InversifyContainerFacade_1 = __webpack_require__(/*! ../../InversifyContainerFacade */ "./src/container/InversifyContainerFacade.ts");
  890. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  891. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  892. const CalleeDataExtractor_1 = __webpack_require__(/*! ../../../enums/analyzers/calls-graph-analyzer/CalleeDataExtractor */ "./src/enums/analyzers/calls-graph-analyzer/CalleeDataExtractor.ts");
  893. const CallsGraphAnalyzer_1 = __webpack_require__(/*! ../../../analyzers/calls-graph-analyzer/CallsGraphAnalyzer */ "./src/analyzers/calls-graph-analyzer/CallsGraphAnalyzer.ts");
  894. const FunctionDeclarationCalleeDataExtractor_1 = __webpack_require__(/*! ../../../analyzers/calls-graph-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor */ "./src/analyzers/calls-graph-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor.ts");
  895. const FunctionExpressionCalleeDataExtractor_1 = __webpack_require__(/*! ../../../analyzers/calls-graph-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor */ "./src/analyzers/calls-graph-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor.ts");
  896. const ObjectExpressionCalleeDataExtractor_1 = __webpack_require__(/*! ../../../analyzers/calls-graph-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor */ "./src/analyzers/calls-graph-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor.ts");
  897. const PrevailingKindOfVariablesAnalyzer_1 = __webpack_require__(/*! ../../../analyzers/prevailing-kind-of-variables-analyzer/PrevailingKindOfVariablesAnalyzer */ "./src/analyzers/prevailing-kind-of-variables-analyzer/PrevailingKindOfVariablesAnalyzer.ts");
  898. exports.analyzersModule = new inversify_1.ContainerModule((bind) => {
  899. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICallsGraphAnalyzer)
  900. .to(CallsGraphAnalyzer_1.CallsGraphAnalyzer)
  901. .inSingletonScope();
  902. bind(ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer)
  903. .to(PrevailingKindOfVariablesAnalyzer_1.PrevailingKindOfVariablesAnalyzer)
  904. .inSingletonScope();
  905. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor)
  906. .to(FunctionDeclarationCalleeDataExtractor_1.FunctionDeclarationCalleeDataExtractor)
  907. .whenTargetNamed(CalleeDataExtractor_1.CalleeDataExtractor.FunctionDeclarationCalleeDataExtractor);
  908. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor)
  909. .to(FunctionExpressionCalleeDataExtractor_1.FunctionExpressionCalleeDataExtractor)
  910. .whenTargetNamed(CalleeDataExtractor_1.CalleeDataExtractor.FunctionExpressionCalleeDataExtractor);
  911. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor)
  912. .to(ObjectExpressionCalleeDataExtractor_1.ObjectExpressionCalleeDataExtractor)
  913. .whenTargetNamed(CalleeDataExtractor_1.CalleeDataExtractor.ObjectExpressionCalleeDataExtractor);
  914. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICalleeDataExtractor)
  915. .toFactory(InversifyContainerFacade_1.InversifyContainerFacade
  916. .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor));
  917. });
  918. /***/ }),
  919. /***/ "./src/container/modules/custom-nodes/CustomNodesModule.ts":
  920. /*!*****************************************************************!*\
  921. !*** ./src/container/modules/custom-nodes/CustomNodesModule.ts ***!
  922. \*****************************************************************/
  923. /*! no static exports found */
  924. /***/ (function(module, exports, __webpack_require__) {
  925. "use strict";
  926. Object.defineProperty(exports, "__esModule", { value: true });
  927. const InversifyContainerFacade_1 = __webpack_require__(/*! ../../InversifyContainerFacade */ "./src/container/InversifyContainerFacade.ts");
  928. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  929. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  930. const ControlFlowCustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/ControlFlowCustomNode */ "./src/enums/custom-nodes/ControlFlowCustomNode.ts");
  931. const CustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/CustomNode */ "./src/enums/custom-nodes/CustomNode.ts");
  932. const CustomNodeGroup_1 = __webpack_require__(/*! ../../../enums/custom-nodes/CustomNodeGroup */ "./src/enums/custom-nodes/CustomNodeGroup.ts");
  933. const DeadCodeInjectionCustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/DeadCodeInjectionCustomNode */ "./src/enums/custom-nodes/DeadCodeInjectionCustomNode.ts");
  934. const ObjectExpressionKeysTransformerCustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode */ "./src/enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode.ts");
  935. const ConsoleOutputCustomNodeGroup_1 = __webpack_require__(/*! ../../../custom-nodes/console-output-nodes/group/ConsoleOutputCustomNodeGroup */ "./src/custom-nodes/console-output-nodes/group/ConsoleOutputCustomNodeGroup.ts");
  936. const DebugProtectionCustomNodeGroup_1 = __webpack_require__(/*! ../../../custom-nodes/debug-protection-nodes/group/DebugProtectionCustomNodeGroup */ "./src/custom-nodes/debug-protection-nodes/group/DebugProtectionCustomNodeGroup.ts");
  937. const DomainLockCustomNodeGroup_1 = __webpack_require__(/*! ../../../custom-nodes/domain-lock-nodes/group/DomainLockCustomNodeGroup */ "./src/custom-nodes/domain-lock-nodes/group/DomainLockCustomNodeGroup.ts");
  938. const SelfDefendingCustomNodeGroup_1 = __webpack_require__(/*! ../../../custom-nodes/self-defending-nodes/group/SelfDefendingCustomNodeGroup */ "./src/custom-nodes/self-defending-nodes/group/SelfDefendingCustomNodeGroup.ts");
  939. const StringArrayCustomNodeGroup_1 = __webpack_require__(/*! ../../../custom-nodes/string-array-nodes/group/StringArrayCustomNodeGroup */ "./src/custom-nodes/string-array-nodes/group/StringArrayCustomNodeGroup.ts");
  940. const BasePropertiesExtractorObjectExpressionHostNode_1 = __webpack_require__(/*! ../../../custom-nodes/object-expression-keys-transformer-nodes/BasePropertiesExtractorObjectExpressionHostNode */ "./src/custom-nodes/object-expression-keys-transformer-nodes/BasePropertiesExtractorObjectExpressionHostNode.ts");
  941. const BinaryExpressionFunctionNode_1 = __webpack_require__(/*! ../../../custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode */ "./src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts");
  942. const BlockStatementControlFlowFlatteningNode_1 = __webpack_require__(/*! ../../../custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode */ "./src/custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode.ts");
  943. const BlockStatementDeadCodeInjectionNode_1 = __webpack_require__(/*! ../../../custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode */ "./src/custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode.ts");
  944. const CallExpressionControlFlowStorageCallNode_1 = __webpack_require__(/*! ../../../custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/CallExpressionControlFlowStorageCallNode */ "./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/CallExpressionControlFlowStorageCallNode.ts");
  945. const CallExpressionFunctionNode_1 = __webpack_require__(/*! ../../../custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode */ "./src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts");
  946. const ControlFlowStorageNode_1 = __webpack_require__(/*! ../../../custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ControlFlowStorageNode */ "./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts");
  947. const ConsoleOutputDisableExpressionNode_1 = __webpack_require__(/*! ../../../custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode */ "./src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts");
  948. const DebugProtectionFunctionCallNode_1 = __webpack_require__(/*! ../../../custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode */ "./src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts");
  949. const DebugProtectionFunctionIntervalNode_1 = __webpack_require__(/*! ../../../custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode */ "./src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts");
  950. const DebugProtectionFunctionNode_1 = __webpack_require__(/*! ../../../custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode */ "./src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts");
  951. const DomainLockNode_1 = __webpack_require__(/*! ../../../custom-nodes/domain-lock-nodes/DomainLockNode */ "./src/custom-nodes/domain-lock-nodes/DomainLockNode.ts");
  952. const ExpressionWithOperatorControlFlowStorageCallNode_1 = __webpack_require__(/*! ../../../custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ExpressionWithOperatorControlFlowStorageCallNode */ "./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ExpressionWithOperatorControlFlowStorageCallNode.ts");
  953. const LogicalExpressionFunctionNode_1 = __webpack_require__(/*! ../../../custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode */ "./src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts");
  954. const NodeCallsControllerFunctionNode_1 = __webpack_require__(/*! ../../../custom-nodes/node-calls-controller-nodes/NodeCallsControllerFunctionNode */ "./src/custom-nodes/node-calls-controller-nodes/NodeCallsControllerFunctionNode.ts");
  955. const SelfDefendingUnicodeNode_1 = __webpack_require__(/*! ../../../custom-nodes/self-defending-nodes/SelfDefendingUnicodeNode */ "./src/custom-nodes/self-defending-nodes/SelfDefendingUnicodeNode.ts");
  956. const StringArrayCallsWrapper_1 = __webpack_require__(/*! ../../../custom-nodes/string-array-nodes/StringArrayCallsWrapper */ "./src/custom-nodes/string-array-nodes/StringArrayCallsWrapper.ts");
  957. const StringArrayNode_1 = __webpack_require__(/*! ../../../custom-nodes/string-array-nodes/StringArrayNode */ "./src/custom-nodes/string-array-nodes/StringArrayNode.ts");
  958. const StringArrayRotateFunctionNode_1 = __webpack_require__(/*! ../../../custom-nodes/string-array-nodes/StringArrayRotateFunctionNode */ "./src/custom-nodes/string-array-nodes/StringArrayRotateFunctionNode.ts");
  959. const StringLiteralControlFlowStorageCallNode_1 = __webpack_require__(/*! ../../../custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/StringLiteralControlFlowStorageCallNode */ "./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/StringLiteralControlFlowStorageCallNode.ts");
  960. const StringLiteralNode_1 = __webpack_require__(/*! ../../../custom-nodes/control-flow-flattening-nodes/StringLiteralNode */ "./src/custom-nodes/control-flow-flattening-nodes/StringLiteralNode.ts");
  961. exports.customNodesModule = new inversify_1.ContainerModule((bind) => {
  962. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode)
  963. .to(ConsoleOutputDisableExpressionNode_1.ConsoleOutputDisableExpressionNode)
  964. .whenTargetNamed(CustomNode_1.CustomNode.ConsoleOutputDisableExpressionNode);
  965. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode)
  966. .to(DebugProtectionFunctionCallNode_1.DebugProtectionFunctionCallNode)
  967. .whenTargetNamed(CustomNode_1.CustomNode.DebugProtectionFunctionCallNode);
  968. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode)
  969. .to(DebugProtectionFunctionIntervalNode_1.DebugProtectionFunctionIntervalNode)
  970. .whenTargetNamed(CustomNode_1.CustomNode.DebugProtectionFunctionIntervalNode);
  971. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode)
  972. .to(DebugProtectionFunctionNode_1.DebugProtectionFunctionNode)
  973. .whenTargetNamed(CustomNode_1.CustomNode.DebugProtectionFunctionNode);
  974. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode)
  975. .to(DomainLockNode_1.DomainLockNode)
  976. .whenTargetNamed(CustomNode_1.CustomNode.DomainLockNode);
  977. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode)
  978. .to(NodeCallsControllerFunctionNode_1.NodeCallsControllerFunctionNode)
  979. .whenTargetNamed(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode);
  980. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode)
  981. .to(SelfDefendingUnicodeNode_1.SelfDefendingUnicodeNode)
  982. .whenTargetNamed(CustomNode_1.CustomNode.SelfDefendingUnicodeNode);
  983. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode)
  984. .to(StringArrayCallsWrapper_1.StringArrayCallsWrapper)
  985. .whenTargetNamed(CustomNode_1.CustomNode.StringArrayCallsWrapper);
  986. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode)
  987. .to(StringArrayNode_1.StringArrayNode)
  988. .whenTargetNamed(CustomNode_1.CustomNode.StringArrayNode);
  989. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode)
  990. .to(StringArrayRotateFunctionNode_1.StringArrayRotateFunctionNode)
  991. .whenTargetNamed(CustomNode_1.CustomNode.StringArrayRotateFunctionNode);
  992. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)
  993. .toConstructor(BinaryExpressionFunctionNode_1.BinaryExpressionFunctionNode)
  994. .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.BinaryExpressionFunctionNode);
  995. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)
  996. .toConstructor(BlockStatementControlFlowFlatteningNode_1.BlockStatementControlFlowFlatteningNode)
  997. .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.BlockStatementControlFlowFlatteningNode);
  998. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)
  999. .toConstructor(CallExpressionControlFlowStorageCallNode_1.CallExpressionControlFlowStorageCallNode)
  1000. .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.CallExpressionControlFlowStorageCallNode);
  1001. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)
  1002. .toConstructor(CallExpressionFunctionNode_1.CallExpressionFunctionNode)
  1003. .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.CallExpressionFunctionNode);
  1004. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)
  1005. .toConstructor(ControlFlowStorageNode_1.ControlFlowStorageNode)
  1006. .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.ControlFlowStorageNode);
  1007. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)
  1008. .toConstructor(ExpressionWithOperatorControlFlowStorageCallNode_1.ExpressionWithOperatorControlFlowStorageCallNode)
  1009. .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.ExpressionWithOperatorControlFlowStorageCallNode);
  1010. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)
  1011. .toConstructor(LogicalExpressionFunctionNode_1.LogicalExpressionFunctionNode)
  1012. .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.LogicalExpressionFunctionNode);
  1013. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)
  1014. .toConstructor(StringLiteralNode_1.StringLiteralNode)
  1015. .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.StringLiteralNode);
  1016. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)
  1017. .toConstructor(StringLiteralControlFlowStorageCallNode_1.StringLiteralControlFlowStorageCallNode)
  1018. .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.StringLiteralControlFlowStorageCallNode);
  1019. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)
  1020. .toConstructor(BlockStatementDeadCodeInjectionNode_1.BlockStatementDeadCodeInjectionNode)
  1021. .whenTargetNamed(DeadCodeInjectionCustomNode_1.DeadCodeInjectionCustomNode.BlockStatementDeadCodeInjectionNode);
  1022. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)
  1023. .toConstructor(BasePropertiesExtractorObjectExpressionHostNode_1.BasePropertiesExtractorObjectExpressionHostNode)
  1024. .whenTargetNamed(ObjectExpressionKeysTransformerCustomNode_1.ObjectExpressionKeysTransformerCustomNode.BasePropertiesExtractorObjectExpressionHostNode);
  1025. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNodeGroup)
  1026. .to(ConsoleOutputCustomNodeGroup_1.ConsoleOutputCustomNodeGroup)
  1027. .whenTargetNamed(CustomNodeGroup_1.CustomNodeGroup.ConsoleOutputCustomNodeGroup);
  1028. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNodeGroup)
  1029. .to(DebugProtectionCustomNodeGroup_1.DebugProtectionCustomNodeGroup)
  1030. .whenTargetNamed(CustomNodeGroup_1.CustomNodeGroup.DebugProtectionCustomNodeGroup);
  1031. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNodeGroup)
  1032. .to(DomainLockCustomNodeGroup_1.DomainLockCustomNodeGroup)
  1033. .whenTargetNamed(CustomNodeGroup_1.CustomNodeGroup.DomainLockCustomNodeGroup);
  1034. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNodeGroup)
  1035. .to(SelfDefendingCustomNodeGroup_1.SelfDefendingCustomNodeGroup)
  1036. .whenTargetNamed(CustomNodeGroup_1.CustomNodeGroup.SelfDefendingCustomNodeGroup);
  1037. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNodeGroup)
  1038. .to(StringArrayCustomNodeGroup_1.StringArrayCustomNodeGroup)
  1039. .whenTargetNamed(CustomNodeGroup_1.CustomNodeGroup.StringArrayCustomNodeGroup);
  1040. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)
  1041. .toFactory(InversifyContainerFacade_1.InversifyContainerFacade
  1042. .getFactory(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNode));
  1043. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)
  1044. .toFactory(InversifyContainerFacade_1.InversifyContainerFacade
  1045. .getConstructorFactory(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode, ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator, ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter, ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator, ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer, ServiceIdentifiers_1.ServiceIdentifiers.IOptions));
  1046. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IDeadCodeInjectionCustomNode)
  1047. .toFactory(InversifyContainerFacade_1.InversifyContainerFacade
  1048. .getConstructorFactory(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode, ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator, ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter, ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator, ServiceIdentifiers_1.ServiceIdentifiers.IOptions));
  1049. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObjectExpressionKeysTransformerCustomNode)
  1050. .toFactory(InversifyContainerFacade_1.InversifyContainerFacade
  1051. .getConstructorFactory(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode, ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator, ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter, ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator, ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer, ServiceIdentifiers_1.ServiceIdentifiers.IOptions));
  1052. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNodeGroup)
  1053. .toFactory(InversifyContainerFacade_1.InversifyContainerFacade
  1054. .getFactory(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNodeGroup));
  1055. });
  1056. /***/ }),
  1057. /***/ "./src/container/modules/generators/GeneratorsModule.ts":
  1058. /*!**************************************************************!*\
  1059. !*** ./src/container/modules/generators/GeneratorsModule.ts ***!
  1060. \**************************************************************/
  1061. /*! no static exports found */
  1062. /***/ (function(module, exports, __webpack_require__) {
  1063. "use strict";
  1064. Object.defineProperty(exports, "__esModule", { value: true });
  1065. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1066. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1067. const IdentifierNamesGenerator_1 = __webpack_require__(/*! ../../../enums/generators/identifier-names-generators/IdentifierNamesGenerator */ "./src/enums/generators/identifier-names-generators/IdentifierNamesGenerator.ts");
  1068. const DictionaryIdentifierNamesGenerator_1 = __webpack_require__(/*! ../../../generators/identifier-names-generators/DictionaryIdentifierNamesGenerator */ "./src/generators/identifier-names-generators/DictionaryIdentifierNamesGenerator.ts");
  1069. const HexadecimalIdentifierNamesGenerator_1 = __webpack_require__(/*! ../../../generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator */ "./src/generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator.ts");
  1070. const MangledIdentifierNamesGenerator_1 = __webpack_require__(/*! ../../../generators/identifier-names-generators/MangledIdentifierNamesGenerator */ "./src/generators/identifier-names-generators/MangledIdentifierNamesGenerator.ts");
  1071. exports.generatorsModule = new inversify_1.ContainerModule((bind) => {
  1072. bind(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator)
  1073. .to(DictionaryIdentifierNamesGenerator_1.DictionaryIdentifierNamesGenerator)
  1074. .inSingletonScope()
  1075. .whenTargetNamed(IdentifierNamesGenerator_1.IdentifierNamesGenerator.DictionaryIdentifierNamesGenerator);
  1076. bind(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator)
  1077. .to(HexadecimalIdentifierNamesGenerator_1.HexadecimalIdentifierNamesGenerator)
  1078. .inSingletonScope()
  1079. .whenTargetNamed(IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator);
  1080. bind(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator)
  1081. .to(MangledIdentifierNamesGenerator_1.MangledIdentifierNamesGenerator)
  1082. .inSingletonScope()
  1083. .whenTargetNamed(IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledIdentifierNamesGenerator);
  1084. function identifierNameGeneratorFactory() {
  1085. let cachedIdentifierNamesGenerator = null;
  1086. return (context) => (options) => {
  1087. if (cachedIdentifierNamesGenerator) {
  1088. return cachedIdentifierNamesGenerator;
  1089. }
  1090. let identifierNamesGenerator;
  1091. switch (options.identifierNamesGenerator) {
  1092. case IdentifierNamesGenerator_1.IdentifierNamesGenerator.DictionaryIdentifierNamesGenerator:
  1093. identifierNamesGenerator = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator, IdentifierNamesGenerator_1.IdentifierNamesGenerator.DictionaryIdentifierNamesGenerator);
  1094. break;
  1095. case IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledIdentifierNamesGenerator:
  1096. identifierNamesGenerator = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator, IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledIdentifierNamesGenerator);
  1097. break;
  1098. case IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator:
  1099. default:
  1100. identifierNamesGenerator = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator, IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator);
  1101. }
  1102. cachedIdentifierNamesGenerator = identifierNamesGenerator;
  1103. return identifierNamesGenerator;
  1104. };
  1105. }
  1106. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)
  1107. .toFactory(identifierNameGeneratorFactory());
  1108. });
  1109. /***/ }),
  1110. /***/ "./src/container/modules/node-transformers/ControlFlowTransformersModule.ts":
  1111. /*!**********************************************************************************!*\
  1112. !*** ./src/container/modules/node-transformers/ControlFlowTransformersModule.ts ***!
  1113. \**********************************************************************************/
  1114. /*! no static exports found */
  1115. /***/ (function(module, exports, __webpack_require__) {
  1116. "use strict";
  1117. Object.defineProperty(exports, "__esModule", { value: true });
  1118. const InversifyContainerFacade_1 = __webpack_require__(/*! ../../InversifyContainerFacade */ "./src/container/InversifyContainerFacade.ts");
  1119. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1120. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1121. const ControlFlowReplacer_1 = __webpack_require__(/*! ../../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/ControlFlowReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/ControlFlowReplacer.ts");
  1122. const NodeTransformer_1 = __webpack_require__(/*! ../../../enums/node-transformers/NodeTransformer */ "./src/enums/node-transformers/NodeTransformer.ts");
  1123. const BinaryExpressionControlFlowReplacer_1 = __webpack_require__(/*! ../../../node-transformers/control-flow-transformers/control-flow-replacers/BinaryExpressionControlFlowReplacer */ "./src/node-transformers/control-flow-transformers/control-flow-replacers/BinaryExpressionControlFlowReplacer.ts");
  1124. const BlockStatementControlFlowTransformer_1 = __webpack_require__(/*! ../../../node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer */ "./src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts");
  1125. const CallExpressionControlFlowReplacer_1 = __webpack_require__(/*! ../../../node-transformers/control-flow-transformers/control-flow-replacers/CallExpressionControlFlowReplacer */ "./src/node-transformers/control-flow-transformers/control-flow-replacers/CallExpressionControlFlowReplacer.ts");
  1126. const DeadCodeInjectionTransformer_1 = __webpack_require__(/*! ../../../node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer */ "./src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts");
  1127. const FunctionControlFlowTransformer_1 = __webpack_require__(/*! ../../../node-transformers/control-flow-transformers/FunctionControlFlowTransformer */ "./src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts");
  1128. const LogicalExpressionControlFlowReplacer_1 = __webpack_require__(/*! ../../../node-transformers/control-flow-transformers/control-flow-replacers/LogicalExpressionControlFlowReplacer */ "./src/node-transformers/control-flow-transformers/control-flow-replacers/LogicalExpressionControlFlowReplacer.ts");
  1129. const StringLiteralControlFlowReplacer_1 = __webpack_require__(/*! ../../../node-transformers/control-flow-transformers/control-flow-replacers/StringLiteralControlFlowReplacer */ "./src/node-transformers/control-flow-transformers/control-flow-replacers/StringLiteralControlFlowReplacer.ts");
  1130. exports.controlFlowTransformersModule = new inversify_1.ContainerModule((bind) => {
  1131. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1132. .to(BlockStatementControlFlowTransformer_1.BlockStatementControlFlowTransformer)
  1133. .whenTargetNamed(NodeTransformer_1.NodeTransformer.BlockStatementControlFlowTransformer);
  1134. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1135. .to(DeadCodeInjectionTransformer_1.DeadCodeInjectionTransformer)
  1136. .whenTargetNamed(NodeTransformer_1.NodeTransformer.DeadCodeInjectionTransformer);
  1137. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1138. .to(FunctionControlFlowTransformer_1.FunctionControlFlowTransformer)
  1139. .whenTargetNamed(NodeTransformer_1.NodeTransformer.FunctionControlFlowTransformer);
  1140. bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer)
  1141. .to(BinaryExpressionControlFlowReplacer_1.BinaryExpressionControlFlowReplacer)
  1142. .whenTargetNamed(ControlFlowReplacer_1.ControlFlowReplacer.BinaryExpressionControlFlowReplacer);
  1143. bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer)
  1144. .to(CallExpressionControlFlowReplacer_1.CallExpressionControlFlowReplacer)
  1145. .whenTargetNamed(ControlFlowReplacer_1.ControlFlowReplacer.CallExpressionControlFlowReplacer);
  1146. bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer)
  1147. .to(LogicalExpressionControlFlowReplacer_1.LogicalExpressionControlFlowReplacer)
  1148. .whenTargetNamed(ControlFlowReplacer_1.ControlFlowReplacer.LogicalExpressionControlFlowReplacer);
  1149. bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer)
  1150. .to(StringLiteralControlFlowReplacer_1.StringLiteralControlFlowReplacer)
  1151. .whenTargetNamed(ControlFlowReplacer_1.ControlFlowReplacer.StringLiteralControlFlowReplacer);
  1152. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowReplacer)
  1153. .toFactory(InversifyContainerFacade_1.InversifyContainerFacade
  1154. .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer));
  1155. });
  1156. /***/ }),
  1157. /***/ "./src/container/modules/node-transformers/ConvertingTransformersModule.ts":
  1158. /*!*********************************************************************************!*\
  1159. !*** ./src/container/modules/node-transformers/ConvertingTransformersModule.ts ***!
  1160. \*********************************************************************************/
  1161. /*! no static exports found */
  1162. /***/ (function(module, exports, __webpack_require__) {
  1163. "use strict";
  1164. Object.defineProperty(exports, "__esModule", { value: true });
  1165. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1166. const InversifyContainerFacade_1 = __webpack_require__(/*! ../../InversifyContainerFacade */ "./src/container/InversifyContainerFacade.ts");
  1167. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1168. const NodeTransformer_1 = __webpack_require__(/*! ../../../enums/node-transformers/NodeTransformer */ "./src/enums/node-transformers/NodeTransformer.ts");
  1169. const PropertiesExtractor_1 = __webpack_require__(/*! ../../../enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractor */ "./src/enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractor.ts");
  1170. const AssignmentExpressionPropertiesExtractor_1 = __webpack_require__(/*! ../../../node-transformers/converting-transformers/properties-extractors/AssignmentExpressionPropertiesExtractor */ "./src/node-transformers/converting-transformers/properties-extractors/AssignmentExpressionPropertiesExtractor.ts");
  1171. const BasePropertiesExtractor_1 = __webpack_require__(/*! ../../../node-transformers/converting-transformers/properties-extractors/BasePropertiesExtractor */ "./src/node-transformers/converting-transformers/properties-extractors/BasePropertiesExtractor.ts");
  1172. const MemberExpressionTransformer_1 = __webpack_require__(/*! ../../../node-transformers/converting-transformers/MemberExpressionTransformer */ "./src/node-transformers/converting-transformers/MemberExpressionTransformer.ts");
  1173. const MethodDefinitionTransformer_1 = __webpack_require__(/*! ../../../node-transformers/converting-transformers/MethodDefinitionTransformer */ "./src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts");
  1174. const ObjectExpressionKeysTransformer_1 = __webpack_require__(/*! ../../../node-transformers/converting-transformers/ObjectExpressionKeysTransformer */ "./src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts");
  1175. const ObjectExpressionTransformer_1 = __webpack_require__(/*! ../../../node-transformers/converting-transformers/ObjectExpressionTransformer */ "./src/node-transformers/converting-transformers/ObjectExpressionTransformer.ts");
  1176. const SplitStringTransformer_1 = __webpack_require__(/*! ../../../node-transformers/converting-transformers/SplitStringTransformer */ "./src/node-transformers/converting-transformers/SplitStringTransformer.ts");
  1177. const TemplateLiteralTransformer_1 = __webpack_require__(/*! ../../../node-transformers/converting-transformers/TemplateLiteralTransformer */ "./src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts");
  1178. const VariableDeclaratorPropertiesExtractor_1 = __webpack_require__(/*! ../../../node-transformers/converting-transformers/properties-extractors/VariableDeclaratorPropertiesExtractor */ "./src/node-transformers/converting-transformers/properties-extractors/VariableDeclaratorPropertiesExtractor.ts");
  1179. exports.convertingTransformersModule = new inversify_1.ContainerModule((bind) => {
  1180. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1181. .to(MemberExpressionTransformer_1.MemberExpressionTransformer)
  1182. .whenTargetNamed(NodeTransformer_1.NodeTransformer.MemberExpressionTransformer);
  1183. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1184. .to(MethodDefinitionTransformer_1.MethodDefinitionTransformer)
  1185. .whenTargetNamed(NodeTransformer_1.NodeTransformer.MethodDefinitionTransformer);
  1186. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1187. .to(ObjectExpressionKeysTransformer_1.ObjectExpressionKeysTransformer)
  1188. .whenTargetNamed(NodeTransformer_1.NodeTransformer.ObjectExpressionKeysTransformer);
  1189. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1190. .to(ObjectExpressionTransformer_1.ObjectExpressionTransformer)
  1191. .whenTargetNamed(NodeTransformer_1.NodeTransformer.ObjectExpressionTransformer);
  1192. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1193. .to(SplitStringTransformer_1.SplitStringTransformer)
  1194. .whenTargetNamed(NodeTransformer_1.NodeTransformer.SplitStringTransformer);
  1195. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1196. .to(TemplateLiteralTransformer_1.TemplateLiteralTransformer)
  1197. .whenTargetNamed(NodeTransformer_1.NodeTransformer.TemplateLiteralTransformer);
  1198. bind(ServiceIdentifiers_1.ServiceIdentifiers.IPropertiesExtractor)
  1199. .to(AssignmentExpressionPropertiesExtractor_1.AssignmentExpressionPropertiesExtractor)
  1200. .whenTargetNamed(PropertiesExtractor_1.PropertiesExtractor.AssignmentExpressionPropertiesExtractor);
  1201. bind(ServiceIdentifiers_1.ServiceIdentifiers.IPropertiesExtractor)
  1202. .to(BasePropertiesExtractor_1.BasePropertiesExtractor)
  1203. .whenTargetNamed(PropertiesExtractor_1.PropertiesExtractor.BasePropertiesExtractor);
  1204. bind(ServiceIdentifiers_1.ServiceIdentifiers.IPropertiesExtractor)
  1205. .to(VariableDeclaratorPropertiesExtractor_1.VariableDeclaratorPropertiesExtractor)
  1206. .whenTargetNamed(PropertiesExtractor_1.PropertiesExtractor.VariableDeclaratorPropertiesExtractor);
  1207. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IPropertiesExtractor)
  1208. .toFactory(InversifyContainerFacade_1.InversifyContainerFacade
  1209. .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.IPropertiesExtractor));
  1210. });
  1211. /***/ }),
  1212. /***/ "./src/container/modules/node-transformers/FinalizingTransformersModule.ts":
  1213. /*!*********************************************************************************!*\
  1214. !*** ./src/container/modules/node-transformers/FinalizingTransformersModule.ts ***!
  1215. \*********************************************************************************/
  1216. /*! no static exports found */
  1217. /***/ (function(module, exports, __webpack_require__) {
  1218. "use strict";
  1219. Object.defineProperty(exports, "__esModule", { value: true });
  1220. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1221. exports.finalizingTransformersModule = new inversify_1.ContainerModule((bind) => {
  1222. });
  1223. /***/ }),
  1224. /***/ "./src/container/modules/node-transformers/NodeTransformersModule.ts":
  1225. /*!***************************************************************************!*\
  1226. !*** ./src/container/modules/node-transformers/NodeTransformersModule.ts ***!
  1227. \***************************************************************************/
  1228. /*! no static exports found */
  1229. /***/ (function(module, exports, __webpack_require__) {
  1230. "use strict";
  1231. Object.defineProperty(exports, "__esModule", { value: true });
  1232. const InversifyContainerFacade_1 = __webpack_require__(/*! ../../InversifyContainerFacade */ "./src/container/InversifyContainerFacade.ts");
  1233. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1234. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1235. exports.nodeTransformersModule = new inversify_1.ContainerModule((bind) => {
  1236. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeTransformer)
  1237. .toFactory(InversifyContainerFacade_1.InversifyContainerFacade
  1238. .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer));
  1239. });
  1240. /***/ }),
  1241. /***/ "./src/container/modules/node-transformers/ObfuscatingTransformersModule.ts":
  1242. /*!**********************************************************************************!*\
  1243. !*** ./src/container/modules/node-transformers/ObfuscatingTransformersModule.ts ***!
  1244. \**********************************************************************************/
  1245. /*! no static exports found */
  1246. /***/ (function(module, exports, __webpack_require__) {
  1247. "use strict";
  1248. Object.defineProperty(exports, "__esModule", { value: true });
  1249. const InversifyContainerFacade_1 = __webpack_require__(/*! ../../InversifyContainerFacade */ "./src/container/InversifyContainerFacade.ts");
  1250. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1251. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1252. const IdentifierObfuscatingReplacer_1 = __webpack_require__(/*! ../../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer.ts");
  1253. const LiteralObfuscatingReplacer_1 = __webpack_require__(/*! ../../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/LiteralObfuscatingReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/LiteralObfuscatingReplacer.ts");
  1254. const NodeTransformer_1 = __webpack_require__(/*! ../../../enums/node-transformers/NodeTransformer */ "./src/enums/node-transformers/NodeTransformer.ts");
  1255. const BaseIdentifierObfuscatingReplacer_1 = __webpack_require__(/*! ../../../node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer */ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.ts");
  1256. const BooleanLiteralObfuscatingReplacer_1 = __webpack_require__(/*! ../../../node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/BooleanLiteralObfuscatingReplacer */ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/BooleanLiteralObfuscatingReplacer.ts");
  1257. const CatchClauseTransformer_1 = __webpack_require__(/*! ../../../node-transformers/obfuscating-transformers/CatchClauseTransformer */ "./src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts");
  1258. const ClassDeclarationTransformer_1 = __webpack_require__(/*! ../../../node-transformers/obfuscating-transformers/ClassDeclarationTransformer */ "./src/node-transformers/obfuscating-transformers/ClassDeclarationTransformer.ts");
  1259. const FunctionDeclarationTransformer_1 = __webpack_require__(/*! ../../../node-transformers/obfuscating-transformers/FunctionDeclarationTransformer */ "./src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts");
  1260. const FunctionTransformer_1 = __webpack_require__(/*! ../../../node-transformers/obfuscating-transformers/FunctionTransformer */ "./src/node-transformers/obfuscating-transformers/FunctionTransformer.ts");
  1261. const ImportDeclarationTransformer_1 = __webpack_require__(/*! ../../../node-transformers/obfuscating-transformers/ImportDeclarationTransformer */ "./src/node-transformers/obfuscating-transformers/ImportDeclarationTransformer.ts");
  1262. const LabeledStatementTransformer_1 = __webpack_require__(/*! ../../../node-transformers/obfuscating-transformers/LabeledStatementTransformer */ "./src/node-transformers/obfuscating-transformers/LabeledStatementTransformer.ts");
  1263. const LiteralTransformer_1 = __webpack_require__(/*! ../../../node-transformers/obfuscating-transformers/LiteralTransformer */ "./src/node-transformers/obfuscating-transformers/LiteralTransformer.ts");
  1264. const NumberLiteralObfuscatingReplacer_1 = __webpack_require__(/*! ../../../node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/NumberLiteralObfuscatingReplacer */ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/NumberLiteralObfuscatingReplacer.ts");
  1265. const StringLiteralObfuscatingReplacer_1 = __webpack_require__(/*! ../../../node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/StringLiteralObfuscatingReplacer */ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/StringLiteralObfuscatingReplacer.ts");
  1266. const VariableDeclarationTransformer_1 = __webpack_require__(/*! ../../../node-transformers/obfuscating-transformers/VariableDeclarationTransformer */ "./src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts");
  1267. exports.obfuscatingTransformersModule = new inversify_1.ContainerModule((bind) => {
  1268. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1269. .to(CatchClauseTransformer_1.CatchClauseTransformer)
  1270. .whenTargetNamed(NodeTransformer_1.NodeTransformer.CatchClauseTransformer);
  1271. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1272. .to(ClassDeclarationTransformer_1.ClassDeclarationTransformer)
  1273. .whenTargetNamed(NodeTransformer_1.NodeTransformer.ClassDeclarationTransformer);
  1274. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1275. .to(FunctionDeclarationTransformer_1.FunctionDeclarationTransformer)
  1276. .whenTargetNamed(NodeTransformer_1.NodeTransformer.FunctionDeclarationTransformer);
  1277. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1278. .to(FunctionTransformer_1.FunctionTransformer)
  1279. .whenTargetNamed(NodeTransformer_1.NodeTransformer.FunctionTransformer);
  1280. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1281. .to(ImportDeclarationTransformer_1.ImportDeclarationTransformer)
  1282. .whenTargetNamed(NodeTransformer_1.NodeTransformer.ImportDeclarationTransformer);
  1283. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1284. .to(LabeledStatementTransformer_1.LabeledStatementTransformer)
  1285. .whenTargetNamed(NodeTransformer_1.NodeTransformer.LabeledStatementTransformer);
  1286. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1287. .to(LiteralTransformer_1.LiteralTransformer)
  1288. .whenTargetNamed(NodeTransformer_1.NodeTransformer.LiteralTransformer);
  1289. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1290. .to(VariableDeclarationTransformer_1.VariableDeclarationTransformer)
  1291. .whenTargetNamed(NodeTransformer_1.NodeTransformer.VariableDeclarationTransformer);
  1292. bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer)
  1293. .to(BooleanLiteralObfuscatingReplacer_1.BooleanLiteralObfuscatingReplacer)
  1294. .whenTargetNamed(LiteralObfuscatingReplacer_1.LiteralObfuscatingReplacer.BooleanLiteralObfuscatingReplacer);
  1295. bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer)
  1296. .to(NumberLiteralObfuscatingReplacer_1.NumberLiteralObfuscatingReplacer)
  1297. .whenTargetNamed(LiteralObfuscatingReplacer_1.LiteralObfuscatingReplacer.NumberLiteralObfuscatingReplacer);
  1298. bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer)
  1299. .to(StringLiteralObfuscatingReplacer_1.StringLiteralObfuscatingReplacer)
  1300. .whenTargetNamed(LiteralObfuscatingReplacer_1.LiteralObfuscatingReplacer.StringLiteralObfuscatingReplacer);
  1301. bind(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierObfuscatingReplacer)
  1302. .to(BaseIdentifierObfuscatingReplacer_1.BaseIdentifierObfuscatingReplacer)
  1303. .whenTargetNamed(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);
  1304. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatingReplacer)
  1305. .toFactory(InversifyContainerFacade_1.InversifyContainerFacade
  1306. .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer));
  1307. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)
  1308. .toFactory(InversifyContainerFacade_1.InversifyContainerFacade
  1309. .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierObfuscatingReplacer));
  1310. });
  1311. /***/ }),
  1312. /***/ "./src/container/modules/node-transformers/PreparingTransformersModule.ts":
  1313. /*!********************************************************************************!*\
  1314. !*** ./src/container/modules/node-transformers/PreparingTransformersModule.ts ***!
  1315. \********************************************************************************/
  1316. /*! no static exports found */
  1317. /***/ (function(module, exports, __webpack_require__) {
  1318. "use strict";
  1319. Object.defineProperty(exports, "__esModule", { value: true });
  1320. const InversifyContainerFacade_1 = __webpack_require__(/*! ../../InversifyContainerFacade */ "./src/container/InversifyContainerFacade.ts");
  1321. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1322. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1323. const NodeTransformer_1 = __webpack_require__(/*! ../../../enums/node-transformers/NodeTransformer */ "./src/enums/node-transformers/NodeTransformer.ts");
  1324. const ObfuscatingGuard_1 = __webpack_require__(/*! ../../../enums/node-transformers/preparing-transformers/obfuscating-guards/ObfuscatingGuard */ "./src/enums/node-transformers/preparing-transformers/obfuscating-guards/ObfuscatingGuard.ts");
  1325. const BlackListObfuscatingGuard_1 = __webpack_require__(/*! ../../../node-transformers/preparing-transformers/obfuscating-guards/BlackListObfuscatingGuard */ "./src/node-transformers/preparing-transformers/obfuscating-guards/BlackListObfuscatingGuard.ts");
  1326. const CommentsTransformer_1 = __webpack_require__(/*! ../../../node-transformers/preparing-transformers/CommentsTransformer */ "./src/node-transformers/preparing-transformers/CommentsTransformer.ts");
  1327. const ConditionalCommentObfuscatingGuard_1 = __webpack_require__(/*! ../../../node-transformers/preparing-transformers/obfuscating-guards/ConditionalCommentObfuscatingGuard */ "./src/node-transformers/preparing-transformers/obfuscating-guards/ConditionalCommentObfuscatingGuard.ts");
  1328. const CustomNodesTransformer_1 = __webpack_require__(/*! ../../../node-transformers/preparing-transformers/CustomNodesTransformer */ "./src/node-transformers/preparing-transformers/CustomNodesTransformer.ts");
  1329. const EvalCallExpressionTransformer_1 = __webpack_require__(/*! ../../../node-transformers/preparing-transformers/EvalCallExpressionTransformer */ "./src/node-transformers/preparing-transformers/EvalCallExpressionTransformer.ts");
  1330. const MetadataTransformer_1 = __webpack_require__(/*! ../../../node-transformers/preparing-transformers/MetadataTransformer */ "./src/node-transformers/preparing-transformers/MetadataTransformer.ts");
  1331. const ObfuscatingGuardsTransformer_1 = __webpack_require__(/*! ../../../node-transformers/preparing-transformers/ObfuscatingGuardsTransformer */ "./src/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.ts");
  1332. const ParentificationTransformer_1 = __webpack_require__(/*! ../../../node-transformers/preparing-transformers/ParentificationTransformer */ "./src/node-transformers/preparing-transformers/ParentificationTransformer.ts");
  1333. const ReservedStringObfuscatingGuard_1 = __webpack_require__(/*! ../../../node-transformers/preparing-transformers/obfuscating-guards/ReservedStringObfuscatingGuard */ "./src/node-transformers/preparing-transformers/obfuscating-guards/ReservedStringObfuscatingGuard.ts");
  1334. const VariablePreserveTransformer_1 = __webpack_require__(/*! ../../../node-transformers/preparing-transformers/VariablePreserveTransformer */ "./src/node-transformers/preparing-transformers/VariablePreserveTransformer.ts");
  1335. exports.preparingTransformersModule = new inversify_1.ContainerModule((bind) => {
  1336. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1337. .to(CommentsTransformer_1.CommentsTransformer)
  1338. .whenTargetNamed(NodeTransformer_1.NodeTransformer.CommentsTransformer);
  1339. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1340. .to(CustomNodesTransformer_1.CustomNodesTransformer)
  1341. .whenTargetNamed(NodeTransformer_1.NodeTransformer.CustomNodesTransformer);
  1342. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1343. .to(EvalCallExpressionTransformer_1.EvalCallExpressionTransformer)
  1344. .whenTargetNamed(NodeTransformer_1.NodeTransformer.EvalCallExpressionTransformer);
  1345. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1346. .to(MetadataTransformer_1.MetadataTransformer)
  1347. .whenTargetNamed(NodeTransformer_1.NodeTransformer.MetadataTransformer);
  1348. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1349. .to(ObfuscatingGuardsTransformer_1.ObfuscatingGuardsTransformer)
  1350. .whenTargetNamed(NodeTransformer_1.NodeTransformer.ObfuscatingGuardsTransformer);
  1351. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1352. .to(ParentificationTransformer_1.ParentificationTransformer)
  1353. .whenTargetNamed(NodeTransformer_1.NodeTransformer.ParentificationTransformer);
  1354. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeGuard)
  1355. .to(BlackListObfuscatingGuard_1.BlackListObfuscatingGuard)
  1356. .inSingletonScope()
  1357. .whenTargetNamed(ObfuscatingGuard_1.ObfuscatingGuard.BlackListObfuscatingGuard);
  1358. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeGuard)
  1359. .to(ConditionalCommentObfuscatingGuard_1.ConditionalCommentObfuscatingGuard)
  1360. .inSingletonScope()
  1361. .whenTargetNamed(ObfuscatingGuard_1.ObfuscatingGuard.ConditionalCommentObfuscatingGuard);
  1362. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeGuard)
  1363. .to(ReservedStringObfuscatingGuard_1.ReservedStringObfuscatingGuard)
  1364. .inSingletonScope()
  1365. .whenTargetNamed(ObfuscatingGuard_1.ObfuscatingGuard.ReservedStringObfuscatingGuard);
  1366. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeGuard)
  1367. .toFactory(InversifyContainerFacade_1.InversifyContainerFacade
  1368. .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.INodeGuard));
  1369. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)
  1370. .to(VariablePreserveTransformer_1.VariablePreserveTransformer)
  1371. .whenTargetNamed(NodeTransformer_1.NodeTransformer.VariablePreserveTransformer);
  1372. });
  1373. /***/ }),
  1374. /***/ "./src/container/modules/options/OptionsModule.ts":
  1375. /*!********************************************************!*\
  1376. !*** ./src/container/modules/options/OptionsModule.ts ***!
  1377. \********************************************************/
  1378. /*! no static exports found */
  1379. /***/ (function(module, exports, __webpack_require__) {
  1380. "use strict";
  1381. Object.defineProperty(exports, "__esModule", { value: true });
  1382. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1383. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1384. const Options_1 = __webpack_require__(/*! ../../../options/Options */ "./src/options/Options.ts");
  1385. const OptionsNormalizer_1 = __webpack_require__(/*! ../../../options/OptionsNormalizer */ "./src/options/OptionsNormalizer.ts");
  1386. exports.optionsModule = new inversify_1.ContainerModule((bind) => {
  1387. bind(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)
  1388. .to(Options_1.Options)
  1389. .inSingletonScope();
  1390. bind(ServiceIdentifiers_1.ServiceIdentifiers.IOptionsNormalizer)
  1391. .to(OptionsNormalizer_1.OptionsNormalizer)
  1392. .inSingletonScope();
  1393. });
  1394. /***/ }),
  1395. /***/ "./src/container/modules/storages/StoragesModule.ts":
  1396. /*!**********************************************************!*\
  1397. !*** ./src/container/modules/storages/StoragesModule.ts ***!
  1398. \**********************************************************/
  1399. /*! no static exports found */
  1400. /***/ (function(module, exports, __webpack_require__) {
  1401. "use strict";
  1402. Object.defineProperty(exports, "__esModule", { value: true });
  1403. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1404. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1405. const ControlFlowStorage_1 = __webpack_require__(/*! ../../../storages/control-flow/ControlFlowStorage */ "./src/storages/control-flow/ControlFlowStorage.ts");
  1406. const CustomNodeGroupStorage_1 = __webpack_require__(/*! ../../../storages/custom-node-group/CustomNodeGroupStorage */ "./src/storages/custom-node-group/CustomNodeGroupStorage.ts");
  1407. const StringArrayStorage_1 = __webpack_require__(/*! ../../../storages/string-array/StringArrayStorage */ "./src/storages/string-array/StringArrayStorage.ts");
  1408. exports.storagesModule = new inversify_1.ContainerModule((bind) => {
  1409. bind(ServiceIdentifiers_1.ServiceIdentifiers.TCustomNodeGroupStorage)
  1410. .to(CustomNodeGroupStorage_1.CustomNodeGroupStorage)
  1411. .inSingletonScope();
  1412. bind(ServiceIdentifiers_1.ServiceIdentifiers.TStringArrayStorage)
  1413. .to(StringArrayStorage_1.StringArrayStorage)
  1414. .inSingletonScope();
  1415. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__TControlFlowStorage)
  1416. .toConstructor(ControlFlowStorage_1.ControlFlowStorage);
  1417. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__TControlFlowStorage)
  1418. .toFactory((context) => {
  1419. return () => {
  1420. const constructor = context.container
  1421. .get(ServiceIdentifiers_1.ServiceIdentifiers.Newable__TControlFlowStorage);
  1422. const randomGenerator = context.container
  1423. .get(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator);
  1424. const options = context.container
  1425. .get(ServiceIdentifiers_1.ServiceIdentifiers.IOptions);
  1426. const storage = new constructor(randomGenerator, options);
  1427. storage.initialize();
  1428. return storage;
  1429. };
  1430. });
  1431. });
  1432. /***/ }),
  1433. /***/ "./src/container/modules/utils/UtilsModule.ts":
  1434. /*!****************************************************!*\
  1435. !*** ./src/container/modules/utils/UtilsModule.ts ***!
  1436. \****************************************************/
  1437. /*! no static exports found */
  1438. /***/ (function(module, exports, __webpack_require__) {
  1439. "use strict";
  1440. Object.defineProperty(exports, "__esModule", { value: true });
  1441. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1442. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1443. const ArrayUtils_1 = __webpack_require__(/*! ../../../utils/ArrayUtils */ "./src/utils/ArrayUtils.ts");
  1444. const CryptUtils_1 = __webpack_require__(/*! ../../../utils/CryptUtils */ "./src/utils/CryptUtils.ts");
  1445. const EscapeSequenceEncoder_1 = __webpack_require__(/*! ../../../utils/EscapeSequenceEncoder */ "./src/utils/EscapeSequenceEncoder.ts");
  1446. const LevelledTopologicalSorter_1 = __webpack_require__(/*! ../../../utils/LevelledTopologicalSorter */ "./src/utils/LevelledTopologicalSorter.ts");
  1447. const NodeTransformerNamesGroupsBuilder_1 = __webpack_require__(/*! ../../../utils/NodeTransformerNamesGroupsBuilder */ "./src/utils/NodeTransformerNamesGroupsBuilder.ts");
  1448. const RandomGenerator_1 = __webpack_require__(/*! ../../../utils/RandomGenerator */ "./src/utils/RandomGenerator.ts");
  1449. const TemplateFormatter_1 = __webpack_require__(/*! ../../../utils/TemplateFormatter */ "./src/utils/TemplateFormatter.ts");
  1450. exports.utilsModule = new inversify_1.ContainerModule((bind) => {
  1451. bind(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)
  1452. .to(ArrayUtils_1.ArrayUtils)
  1453. .inSingletonScope();
  1454. bind(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)
  1455. .to(RandomGenerator_1.RandomGenerator)
  1456. .inSingletonScope();
  1457. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICryptUtils)
  1458. .to(CryptUtils_1.CryptUtils)
  1459. .inSingletonScope();
  1460. bind(ServiceIdentifiers_1.ServiceIdentifiers.IEscapeSequenceEncoder)
  1461. .to(EscapeSequenceEncoder_1.EscapeSequenceEncoder)
  1462. .inSingletonScope();
  1463. bind(ServiceIdentifiers_1.ServiceIdentifiers.ILevelledTopologicalSorter)
  1464. .to(LevelledTopologicalSorter_1.LevelledTopologicalSorter);
  1465. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformerNamesGroupsBuilder)
  1466. .to(NodeTransformerNamesGroupsBuilder_1.NodeTransformerNamesGroupsBuilder)
  1467. .inSingletonScope();
  1468. bind(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)
  1469. .to(TemplateFormatter_1.TemplateFormatter)
  1470. .inSingletonScope();
  1471. });
  1472. /***/ }),
  1473. /***/ "./src/custom-nodes/AbstractCustomNode.ts":
  1474. /*!************************************************!*\
  1475. !*** ./src/custom-nodes/AbstractCustomNode.ts ***!
  1476. \************************************************/
  1477. /*! no static exports found */
  1478. /***/ (function(module, exports, __webpack_require__) {
  1479. "use strict";
  1480. var AbstractCustomNode_1;
  1481. Object.defineProperty(exports, "__esModule", { value: true });
  1482. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  1483. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1484. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1485. const GlobalVariableTemplate1_1 = __webpack_require__(/*! ../templates/GlobalVariableTemplate1 */ "./src/templates/GlobalVariableTemplate1.ts");
  1486. const GlobalVariableTemplate2_1 = __webpack_require__(/*! ../templates/GlobalVariableTemplate2 */ "./src/templates/GlobalVariableTemplate2.ts");
  1487. let AbstractCustomNode = AbstractCustomNode_1 = class AbstractCustomNode {
  1488. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  1489. this.cachedNode = null;
  1490. this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);
  1491. this.templateFormatter = templateFormatter;
  1492. this.randomGenerator = randomGenerator;
  1493. this.options = options;
  1494. }
  1495. getNode() {
  1496. if (!this.cachedNode) {
  1497. this.cachedNode = this.getNodeStructure();
  1498. }
  1499. return this.cachedNode;
  1500. }
  1501. getGlobalVariableTemplate() {
  1502. return this.randomGenerator
  1503. .getRandomGenerator()
  1504. .pickone(AbstractCustomNode_1.globalVariableTemplateFunctions);
  1505. }
  1506. };
  1507. AbstractCustomNode.globalVariableTemplateFunctions = [
  1508. GlobalVariableTemplate1_1.GlobalVariableTemplate1(),
  1509. GlobalVariableTemplate2_1.GlobalVariableTemplate2()
  1510. ];
  1511. AbstractCustomNode = AbstractCustomNode_1 = tslib_1.__decorate([
  1512. inversify_1.injectable(),
  1513. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  1514. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  1515. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  1516. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  1517. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  1518. ], AbstractCustomNode);
  1519. exports.AbstractCustomNode = AbstractCustomNode;
  1520. /***/ }),
  1521. /***/ "./src/custom-nodes/AbstractCustomNodeGroup.ts":
  1522. /*!*****************************************************!*\
  1523. !*** ./src/custom-nodes/AbstractCustomNodeGroup.ts ***!
  1524. \*****************************************************/
  1525. /*! no static exports found */
  1526. /***/ (function(module, exports, __webpack_require__) {
  1527. "use strict";
  1528. Object.defineProperty(exports, "__esModule", { value: true });
  1529. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  1530. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1531. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1532. let AbstractCustomNodeGroup = class AbstractCustomNodeGroup {
  1533. constructor(identifierNamesGeneratorFactory, randomGenerator, options) {
  1534. this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);
  1535. this.randomGenerator = randomGenerator;
  1536. this.options = options;
  1537. }
  1538. getAppendEvent() {
  1539. return this.appendEvent;
  1540. }
  1541. getCustomNodes() {
  1542. return this.customNodes;
  1543. }
  1544. appendCustomNodeIfExist(customNodeName, callback) {
  1545. const customNode = this.customNodes.get(customNodeName);
  1546. if (!customNode) {
  1547. return;
  1548. }
  1549. callback(customNode);
  1550. }
  1551. getRandomCallsGraphIndex(callsGraphLength) {
  1552. return this.randomGenerator.getRandomInteger(0, Math.max(0, Math.round(callsGraphLength - 1)));
  1553. }
  1554. };
  1555. AbstractCustomNodeGroup = tslib_1.__decorate([
  1556. inversify_1.injectable(),
  1557. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  1558. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  1559. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  1560. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  1561. ], AbstractCustomNodeGroup);
  1562. exports.AbstractCustomNodeGroup = AbstractCustomNodeGroup;
  1563. /***/ }),
  1564. /***/ "./src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts":
  1565. /*!*************************************************************************************!*\
  1566. !*** ./src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts ***!
  1567. \*************************************************************************************/
  1568. /*! no static exports found */
  1569. /***/ (function(module, exports, __webpack_require__) {
  1570. "use strict";
  1571. Object.defineProperty(exports, "__esModule", { value: true });
  1572. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  1573. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1574. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1575. const ObfuscationTarget_1 = __webpack_require__(/*! ../../enums/ObfuscationTarget */ "./src/enums/ObfuscationTarget.ts");
  1576. const ConsoleOutputDisableExpressionTemplate_1 = __webpack_require__(/*! ../../templates/console-output-nodes/console-output-disable-expression-node/ConsoleOutputDisableExpressionTemplate */ "./src/templates/console-output-nodes/console-output-disable-expression-node/ConsoleOutputDisableExpressionTemplate.ts");
  1577. const GlobalVariableNoEvalTemplate_1 = __webpack_require__(/*! ../../templates/GlobalVariableNoEvalTemplate */ "./src/templates/GlobalVariableNoEvalTemplate.ts");
  1578. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  1579. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  1580. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  1581. let ConsoleOutputDisableExpressionNode = class ConsoleOutputDisableExpressionNode extends AbstractCustomNode_1.AbstractCustomNode {
  1582. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  1583. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  1584. }
  1585. initialize(callsControllerFunctionName) {
  1586. this.callsControllerFunctionName = callsControllerFunctionName;
  1587. }
  1588. getNodeStructure() {
  1589. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  1590. }
  1591. getTemplate() {
  1592. const globalVariableTemplate = this.options.target !== ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval
  1593. ? this.getGlobalVariableTemplate()
  1594. : GlobalVariableNoEvalTemplate_1.GlobalVariableNoEvalTemplate();
  1595. return this.templateFormatter.format(ConsoleOutputDisableExpressionTemplate_1.ConsoleOutputDisableExpressionTemplate(), {
  1596. consoleLogDisableFunctionName: this.identifierNamesGenerator.generate(),
  1597. globalVariableTemplate,
  1598. singleNodeCallControllerFunctionName: this.callsControllerFunctionName
  1599. });
  1600. }
  1601. };
  1602. tslib_1.__decorate([
  1603. Initializable_1.initializable(),
  1604. tslib_1.__metadata("design:type", String)
  1605. ], ConsoleOutputDisableExpressionNode.prototype, "callsControllerFunctionName", void 0);
  1606. ConsoleOutputDisableExpressionNode = tslib_1.__decorate([
  1607. inversify_1.injectable(),
  1608. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  1609. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  1610. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  1611. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  1612. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  1613. ], ConsoleOutputDisableExpressionNode);
  1614. exports.ConsoleOutputDisableExpressionNode = ConsoleOutputDisableExpressionNode;
  1615. /***/ }),
  1616. /***/ "./src/custom-nodes/console-output-nodes/group/ConsoleOutputCustomNodeGroup.ts":
  1617. /*!*************************************************************************************!*\
  1618. !*** ./src/custom-nodes/console-output-nodes/group/ConsoleOutputCustomNodeGroup.ts ***!
  1619. \*************************************************************************************/
  1620. /*! no static exports found */
  1621. /***/ (function(module, exports, __webpack_require__) {
  1622. "use strict";
  1623. Object.defineProperty(exports, "__esModule", { value: true });
  1624. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  1625. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1626. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1627. const Initializable_1 = __webpack_require__(/*! ../../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  1628. const CustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/CustomNode */ "./src/enums/custom-nodes/CustomNode.ts");
  1629. const ObfuscationEvent_1 = __webpack_require__(/*! ../../../enums/event-emitters/ObfuscationEvent */ "./src/enums/event-emitters/ObfuscationEvent.ts");
  1630. const AbstractCustomNodeGroup_1 = __webpack_require__(/*! ../../AbstractCustomNodeGroup */ "./src/custom-nodes/AbstractCustomNodeGroup.ts");
  1631. const NodeAppender_1 = __webpack_require__(/*! ../../../node/NodeAppender */ "./src/node/NodeAppender.ts");
  1632. let ConsoleOutputCustomNodeGroup = class ConsoleOutputCustomNodeGroup extends AbstractCustomNodeGroup_1.AbstractCustomNodeGroup {
  1633. constructor(customNodeFactory, identifierNamesGeneratorFactory, randomGenerator, options) {
  1634. super(identifierNamesGeneratorFactory, randomGenerator, options);
  1635. this.appendEvent = ObfuscationEvent_1.ObfuscationEvent.BeforeObfuscation;
  1636. this.customNodeFactory = customNodeFactory;
  1637. }
  1638. appendCustomNodes(nodeWithStatements, callsGraphData) {
  1639. const randomCallsGraphIndex = this.getRandomCallsGraphIndex(callsGraphData.length);
  1640. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.ConsoleOutputDisableExpressionNode, (customNode) => {
  1641. NodeAppender_1.NodeAppender.appendToOptimalBlockScope(callsGraphData, nodeWithStatements, customNode.getNode(), randomCallsGraphIndex);
  1642. });
  1643. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode, (customNode) => {
  1644. const targetNodeWithStatements = callsGraphData.length
  1645. ? NodeAppender_1.NodeAppender.getOptimalBlockScope(callsGraphData, randomCallsGraphIndex, 1)
  1646. : nodeWithStatements;
  1647. NodeAppender_1.NodeAppender.prepend(targetNodeWithStatements, customNode.getNode());
  1648. });
  1649. }
  1650. initialize() {
  1651. this.customNodes = new Map();
  1652. if (!this.options.disableConsoleOutput) {
  1653. return;
  1654. }
  1655. const callsControllerFunctionName = this.identifierNamesGenerator.generate();
  1656. const consoleOutputDisableExpressionNode = this.customNodeFactory(CustomNode_1.CustomNode.ConsoleOutputDisableExpressionNode);
  1657. const nodeCallsControllerFunctionNode = this.customNodeFactory(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode);
  1658. consoleOutputDisableExpressionNode.initialize(callsControllerFunctionName);
  1659. nodeCallsControllerFunctionNode.initialize(this.appendEvent, callsControllerFunctionName);
  1660. this.customNodes.set(CustomNode_1.CustomNode.ConsoleOutputDisableExpressionNode, consoleOutputDisableExpressionNode);
  1661. this.customNodes.set(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode, nodeCallsControllerFunctionNode);
  1662. }
  1663. };
  1664. tslib_1.__decorate([
  1665. Initializable_1.initializable(),
  1666. tslib_1.__metadata("design:type", Map)
  1667. ], ConsoleOutputCustomNodeGroup.prototype, "customNodes", void 0);
  1668. ConsoleOutputCustomNodeGroup = tslib_1.__decorate([
  1669. inversify_1.injectable(),
  1670. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)),
  1671. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  1672. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  1673. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  1674. tslib_1.__metadata("design:paramtypes", [Function, Function, Object, Object])
  1675. ], ConsoleOutputCustomNodeGroup);
  1676. exports.ConsoleOutputCustomNodeGroup = ConsoleOutputCustomNodeGroup;
  1677. /***/ }),
  1678. /***/ "./src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts":
  1679. /*!****************************************************************************************!*\
  1680. !*** ./src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts ***!
  1681. \****************************************************************************************/
  1682. /*! no static exports found */
  1683. /***/ (function(module, exports, __webpack_require__) {
  1684. "use strict";
  1685. Object.defineProperty(exports, "__esModule", { value: true });
  1686. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  1687. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1688. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1689. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  1690. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  1691. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  1692. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  1693. let BinaryExpressionFunctionNode = class BinaryExpressionFunctionNode extends AbstractCustomNode_1.AbstractCustomNode {
  1694. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  1695. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  1696. }
  1697. initialize(operator) {
  1698. this.operator = operator;
  1699. }
  1700. getNodeStructure() {
  1701. const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.functionExpressionNode([
  1702. NodeFactory_1.NodeFactory.identifierNode('x'),
  1703. NodeFactory_1.NodeFactory.identifierNode('y')
  1704. ], NodeFactory_1.NodeFactory.blockStatementNode([
  1705. NodeFactory_1.NodeFactory.returnStatementNode(NodeFactory_1.NodeFactory.binaryExpressionNode(this.operator, NodeFactory_1.NodeFactory.identifierNode('x'), NodeFactory_1.NodeFactory.identifierNode('y')))
  1706. ])));
  1707. NodeUtils_1.NodeUtils.parentizeAst(structure);
  1708. return [structure];
  1709. }
  1710. };
  1711. tslib_1.__decorate([
  1712. Initializable_1.initializable(),
  1713. tslib_1.__metadata("design:type", String)
  1714. ], BinaryExpressionFunctionNode.prototype, "operator", void 0);
  1715. BinaryExpressionFunctionNode = tslib_1.__decorate([
  1716. inversify_1.injectable(),
  1717. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  1718. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  1719. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  1720. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  1721. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  1722. ], BinaryExpressionFunctionNode);
  1723. exports.BinaryExpressionFunctionNode = BinaryExpressionFunctionNode;
  1724. /***/ }),
  1725. /***/ "./src/custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode.ts":
  1726. /*!***************************************************************************************************!*\
  1727. !*** ./src/custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode.ts ***!
  1728. \***************************************************************************************************/
  1729. /*! no static exports found */
  1730. /***/ (function(module, exports, __webpack_require__) {
  1731. "use strict";
  1732. Object.defineProperty(exports, "__esModule", { value: true });
  1733. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  1734. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1735. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1736. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  1737. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  1738. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  1739. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  1740. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  1741. let BlockStatementControlFlowFlatteningNode = class BlockStatementControlFlowFlatteningNode extends AbstractCustomNode_1.AbstractCustomNode {
  1742. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options, prevailingKindOfVariablesAnalyzer) {
  1743. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  1744. this.prevailingKindOfVariables = prevailingKindOfVariablesAnalyzer.getPrevailingKind();
  1745. }
  1746. initialize(blockStatementBody, shuffledKeys, originalKeysIndexesInShuffledArray) {
  1747. this.blockStatementBody = blockStatementBody;
  1748. this.shuffledKeys = shuffledKeys;
  1749. this.originalKeysIndexesInShuffledArray = originalKeysIndexesInShuffledArray;
  1750. }
  1751. getNodeStructure() {
  1752. const controllerIdentifierName = this.randomGenerator.getRandomString(6);
  1753. const indexIdentifierName = this.randomGenerator.getRandomString(6);
  1754. const structure = NodeFactory_1.NodeFactory.blockStatementNode([
  1755. NodeFactory_1.NodeFactory.variableDeclarationNode([
  1756. NodeFactory_1.NodeFactory.variableDeclaratorNode(NodeFactory_1.NodeFactory.identifierNode(controllerIdentifierName), NodeFactory_1.NodeFactory.callExpressionNode(NodeFactory_1.NodeFactory.memberExpressionNode(NodeFactory_1.NodeFactory.literalNode(this.originalKeysIndexesInShuffledArray.join('|')), NodeFactory_1.NodeFactory.identifierNode('split')), [
  1757. NodeFactory_1.NodeFactory.literalNode('|')
  1758. ])),
  1759. NodeFactory_1.NodeFactory.variableDeclaratorNode(NodeFactory_1.NodeFactory.identifierNode(indexIdentifierName), NodeFactory_1.NodeFactory.literalNode(0))
  1760. ], this.prevailingKindOfVariables),
  1761. NodeFactory_1.NodeFactory.whileStatementNode(NodeFactory_1.NodeFactory.literalNode(true), NodeFactory_1.NodeFactory.blockStatementNode([
  1762. NodeFactory_1.NodeFactory.switchStatementNode(NodeFactory_1.NodeFactory.memberExpressionNode(NodeFactory_1.NodeFactory.identifierNode(controllerIdentifierName), NodeFactory_1.NodeFactory.updateExpressionNode('++', NodeFactory_1.NodeFactory.identifierNode(indexIdentifierName)), true), this.shuffledKeys.map((key, index) => {
  1763. const statement = this.blockStatementBody[key];
  1764. const consequent = [statement];
  1765. if (!NodeGuards_1.NodeGuards.isReturnStatementNode(statement)) {
  1766. consequent.push(NodeFactory_1.NodeFactory.continueStatement());
  1767. }
  1768. return NodeFactory_1.NodeFactory.switchCaseNode(NodeFactory_1.NodeFactory.literalNode(String(index)), consequent);
  1769. })),
  1770. NodeFactory_1.NodeFactory.breakStatement()
  1771. ]))
  1772. ]);
  1773. NodeUtils_1.NodeUtils.parentizeAst(structure);
  1774. return [structure];
  1775. }
  1776. };
  1777. tslib_1.__decorate([
  1778. Initializable_1.initializable(),
  1779. tslib_1.__metadata("design:type", Array)
  1780. ], BlockStatementControlFlowFlatteningNode.prototype, "blockStatementBody", void 0);
  1781. tslib_1.__decorate([
  1782. Initializable_1.initializable(),
  1783. tslib_1.__metadata("design:type", Array)
  1784. ], BlockStatementControlFlowFlatteningNode.prototype, "originalKeysIndexesInShuffledArray", void 0);
  1785. tslib_1.__decorate([
  1786. Initializable_1.initializable(),
  1787. tslib_1.__metadata("design:type", Array)
  1788. ], BlockStatementControlFlowFlatteningNode.prototype, "shuffledKeys", void 0);
  1789. BlockStatementControlFlowFlatteningNode = tslib_1.__decorate([
  1790. inversify_1.injectable(),
  1791. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  1792. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  1793. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  1794. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  1795. tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer)),
  1796. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object, Object])
  1797. ], BlockStatementControlFlowFlatteningNode);
  1798. exports.BlockStatementControlFlowFlatteningNode = BlockStatementControlFlowFlatteningNode;
  1799. /***/ }),
  1800. /***/ "./src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts":
  1801. /*!**************************************************************************************!*\
  1802. !*** ./src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts ***!
  1803. \**************************************************************************************/
  1804. /*! no static exports found */
  1805. /***/ (function(module, exports, __webpack_require__) {
  1806. "use strict";
  1807. Object.defineProperty(exports, "__esModule", { value: true });
  1808. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  1809. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1810. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1811. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  1812. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  1813. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  1814. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  1815. let CallExpressionFunctionNode = class CallExpressionFunctionNode extends AbstractCustomNode_1.AbstractCustomNode {
  1816. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  1817. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  1818. }
  1819. initialize(expressionArguments) {
  1820. this.expressionArguments = expressionArguments;
  1821. }
  1822. getNodeStructure() {
  1823. const calleeIdentifier = NodeFactory_1.NodeFactory.identifierNode('callee');
  1824. const params = [];
  1825. const argumentsLength = this.expressionArguments.length;
  1826. for (let i = 0; i < argumentsLength; i++) {
  1827. params.push(NodeFactory_1.NodeFactory.identifierNode(`param${i + 1}`));
  1828. }
  1829. const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.functionExpressionNode([
  1830. calleeIdentifier,
  1831. ...params
  1832. ], NodeFactory_1.NodeFactory.blockStatementNode([
  1833. NodeFactory_1.NodeFactory.returnStatementNode(NodeFactory_1.NodeFactory.callExpressionNode(calleeIdentifier, params))
  1834. ])));
  1835. NodeUtils_1.NodeUtils.parentizeAst(structure);
  1836. return [structure];
  1837. }
  1838. };
  1839. tslib_1.__decorate([
  1840. Initializable_1.initializable(),
  1841. tslib_1.__metadata("design:type", Array)
  1842. ], CallExpressionFunctionNode.prototype, "expressionArguments", void 0);
  1843. CallExpressionFunctionNode = tslib_1.__decorate([
  1844. inversify_1.injectable(),
  1845. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  1846. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  1847. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  1848. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  1849. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  1850. ], CallExpressionFunctionNode);
  1851. exports.CallExpressionFunctionNode = CallExpressionFunctionNode;
  1852. /***/ }),
  1853. /***/ "./src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts":
  1854. /*!*****************************************************************************************!*\
  1855. !*** ./src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts ***!
  1856. \*****************************************************************************************/
  1857. /*! no static exports found */
  1858. /***/ (function(module, exports, __webpack_require__) {
  1859. "use strict";
  1860. Object.defineProperty(exports, "__esModule", { value: true });
  1861. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  1862. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1863. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1864. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  1865. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  1866. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  1867. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  1868. let LogicalExpressionFunctionNode = class LogicalExpressionFunctionNode extends AbstractCustomNode_1.AbstractCustomNode {
  1869. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  1870. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  1871. }
  1872. initialize(operator) {
  1873. this.operator = operator;
  1874. }
  1875. getNodeStructure() {
  1876. const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.functionExpressionNode([
  1877. NodeFactory_1.NodeFactory.identifierNode('x'),
  1878. NodeFactory_1.NodeFactory.identifierNode('y')
  1879. ], NodeFactory_1.NodeFactory.blockStatementNode([
  1880. NodeFactory_1.NodeFactory.returnStatementNode(NodeFactory_1.NodeFactory.logicalExpressionNode(this.operator, NodeFactory_1.NodeFactory.identifierNode('x'), NodeFactory_1.NodeFactory.identifierNode('y')))
  1881. ])));
  1882. NodeUtils_1.NodeUtils.parentizeAst(structure);
  1883. return [structure];
  1884. }
  1885. };
  1886. tslib_1.__decorate([
  1887. Initializable_1.initializable(),
  1888. tslib_1.__metadata("design:type", String)
  1889. ], LogicalExpressionFunctionNode.prototype, "operator", void 0);
  1890. LogicalExpressionFunctionNode = tslib_1.__decorate([
  1891. inversify_1.injectable(),
  1892. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  1893. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  1894. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  1895. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  1896. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  1897. ], LogicalExpressionFunctionNode);
  1898. exports.LogicalExpressionFunctionNode = LogicalExpressionFunctionNode;
  1899. /***/ }),
  1900. /***/ "./src/custom-nodes/control-flow-flattening-nodes/StringLiteralNode.ts":
  1901. /*!*****************************************************************************!*\
  1902. !*** ./src/custom-nodes/control-flow-flattening-nodes/StringLiteralNode.ts ***!
  1903. \*****************************************************************************/
  1904. /*! no static exports found */
  1905. /***/ (function(module, exports, __webpack_require__) {
  1906. "use strict";
  1907. Object.defineProperty(exports, "__esModule", { value: true });
  1908. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  1909. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1910. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1911. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  1912. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  1913. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  1914. let StringLiteralNode = class StringLiteralNode extends AbstractCustomNode_1.AbstractCustomNode {
  1915. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  1916. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  1917. }
  1918. initialize(literalValue) {
  1919. this.literalValue = literalValue;
  1920. }
  1921. getNodeStructure() {
  1922. const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.literalNode(this.literalValue));
  1923. return [structure];
  1924. }
  1925. };
  1926. tslib_1.__decorate([
  1927. Initializable_1.initializable(),
  1928. tslib_1.__metadata("design:type", String)
  1929. ], StringLiteralNode.prototype, "literalValue", void 0);
  1930. StringLiteralNode = tslib_1.__decorate([
  1931. inversify_1.injectable(),
  1932. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  1933. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  1934. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  1935. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  1936. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  1937. ], StringLiteralNode);
  1938. exports.StringLiteralNode = StringLiteralNode;
  1939. /***/ }),
  1940. /***/ "./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/CallExpressionControlFlowStorageCallNode.ts":
  1941. /*!*******************************************************************************************************************************!*\
  1942. !*** ./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/CallExpressionControlFlowStorageCallNode.ts ***!
  1943. \*******************************************************************************************************************************/
  1944. /*! no static exports found */
  1945. /***/ (function(module, exports, __webpack_require__) {
  1946. "use strict";
  1947. Object.defineProperty(exports, "__esModule", { value: true });
  1948. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  1949. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  1950. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  1951. const Initializable_1 = __webpack_require__(/*! ../../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  1952. const AbstractCustomNode_1 = __webpack_require__(/*! ../../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  1953. const NodeFactory_1 = __webpack_require__(/*! ../../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  1954. const NodeUtils_1 = __webpack_require__(/*! ../../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  1955. let CallExpressionControlFlowStorageCallNode = class CallExpressionControlFlowStorageCallNode extends AbstractCustomNode_1.AbstractCustomNode {
  1956. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  1957. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  1958. }
  1959. initialize(controlFlowStorageName, controlFlowStorageKey, callee, expressionArguments) {
  1960. this.controlFlowStorageName = controlFlowStorageName;
  1961. this.controlFlowStorageKey = controlFlowStorageKey;
  1962. this.callee = callee;
  1963. this.expressionArguments = expressionArguments;
  1964. }
  1965. getNodeStructure() {
  1966. const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.callExpressionNode(NodeFactory_1.NodeFactory.memberExpressionNode(NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorageName), NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorageKey)), [
  1967. this.callee,
  1968. ...this.expressionArguments
  1969. ]));
  1970. NodeUtils_1.NodeUtils.parentizeAst(structure);
  1971. return [structure];
  1972. }
  1973. };
  1974. tslib_1.__decorate([
  1975. Initializable_1.initializable(),
  1976. tslib_1.__metadata("design:type", Object)
  1977. ], CallExpressionControlFlowStorageCallNode.prototype, "callee", void 0);
  1978. tslib_1.__decorate([
  1979. Initializable_1.initializable(),
  1980. tslib_1.__metadata("design:type", String)
  1981. ], CallExpressionControlFlowStorageCallNode.prototype, "controlFlowStorageKey", void 0);
  1982. tslib_1.__decorate([
  1983. Initializable_1.initializable(),
  1984. tslib_1.__metadata("design:type", String)
  1985. ], CallExpressionControlFlowStorageCallNode.prototype, "controlFlowStorageName", void 0);
  1986. tslib_1.__decorate([
  1987. Initializable_1.initializable(),
  1988. tslib_1.__metadata("design:type", Array)
  1989. ], CallExpressionControlFlowStorageCallNode.prototype, "expressionArguments", void 0);
  1990. CallExpressionControlFlowStorageCallNode = tslib_1.__decorate([
  1991. inversify_1.injectable(),
  1992. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  1993. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  1994. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  1995. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  1996. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  1997. ], CallExpressionControlFlowStorageCallNode);
  1998. exports.CallExpressionControlFlowStorageCallNode = CallExpressionControlFlowStorageCallNode;
  1999. /***/ }),
  2000. /***/ "./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts":
  2001. /*!*************************************************************************************************************!*\
  2002. !*** ./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts ***!
  2003. \*************************************************************************************************************/
  2004. /*! no static exports found */
  2005. /***/ (function(module, exports, __webpack_require__) {
  2006. "use strict";
  2007. Object.defineProperty(exports, "__esModule", { value: true });
  2008. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2009. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2010. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2011. const Initializable_1 = __webpack_require__(/*! ../../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2012. const AbstractCustomNode_1 = __webpack_require__(/*! ../../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2013. const NodeFactory_1 = __webpack_require__(/*! ../../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  2014. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  2015. const NodeUtils_1 = __webpack_require__(/*! ../../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2016. let ControlFlowStorageNode = class ControlFlowStorageNode extends AbstractCustomNode_1.AbstractCustomNode {
  2017. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options, prevailingKindOfVariablesAnalyzer) {
  2018. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2019. this.prevailingKindOfVariables = prevailingKindOfVariablesAnalyzer.getPrevailingKind();
  2020. }
  2021. initialize(controlFlowStorage) {
  2022. this.controlFlowStorage = controlFlowStorage;
  2023. }
  2024. getNodeStructure() {
  2025. const propertyNodes = Array
  2026. .from(this.controlFlowStorage.getStorage())
  2027. .map(([key, value]) => {
  2028. const node = value.getNode()[0];
  2029. if (!NodeGuards_1.NodeGuards.isExpressionStatementNode(node)) {
  2030. throw new Error('Function node for control flow storage object should be passed inside the `ExpressionStatement` node!');
  2031. }
  2032. return NodeFactory_1.NodeFactory.propertyNode(NodeFactory_1.NodeFactory.identifierNode(key), node.expression);
  2033. });
  2034. let structure = NodeFactory_1.NodeFactory.variableDeclarationNode([
  2035. NodeFactory_1.NodeFactory.variableDeclaratorNode(NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorage.getStorageId()), NodeFactory_1.NodeFactory.objectExpressionNode(propertyNodes))
  2036. ], this.prevailingKindOfVariables);
  2037. structure = NodeUtils_1.NodeUtils.parentizeAst(structure);
  2038. return [structure];
  2039. }
  2040. };
  2041. tslib_1.__decorate([
  2042. Initializable_1.initializable(),
  2043. tslib_1.__metadata("design:type", Object)
  2044. ], ControlFlowStorageNode.prototype, "controlFlowStorage", void 0);
  2045. ControlFlowStorageNode = tslib_1.__decorate([
  2046. inversify_1.injectable(),
  2047. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2048. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2049. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2050. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2051. tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer)),
  2052. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object, Object])
  2053. ], ControlFlowStorageNode);
  2054. exports.ControlFlowStorageNode = ControlFlowStorageNode;
  2055. /***/ }),
  2056. /***/ "./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ExpressionWithOperatorControlFlowStorageCallNode.ts":
  2057. /*!***************************************************************************************************************************************!*\
  2058. !*** ./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ExpressionWithOperatorControlFlowStorageCallNode.ts ***!
  2059. \***************************************************************************************************************************************/
  2060. /*! no static exports found */
  2061. /***/ (function(module, exports, __webpack_require__) {
  2062. "use strict";
  2063. Object.defineProperty(exports, "__esModule", { value: true });
  2064. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2065. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2066. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2067. const Initializable_1 = __webpack_require__(/*! ../../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2068. const AbstractCustomNode_1 = __webpack_require__(/*! ../../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2069. const NodeFactory_1 = __webpack_require__(/*! ../../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  2070. const NodeUtils_1 = __webpack_require__(/*! ../../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2071. let ExpressionWithOperatorControlFlowStorageCallNode = class ExpressionWithOperatorControlFlowStorageCallNode extends AbstractCustomNode_1.AbstractCustomNode {
  2072. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  2073. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2074. }
  2075. initialize(controlFlowStorageName, controlFlowStorageKey, leftValue, rightValue) {
  2076. this.controlFlowStorageName = controlFlowStorageName;
  2077. this.controlFlowStorageKey = controlFlowStorageKey;
  2078. this.leftValue = leftValue;
  2079. this.rightValue = rightValue;
  2080. }
  2081. getNodeStructure() {
  2082. const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.callExpressionNode(NodeFactory_1.NodeFactory.memberExpressionNode(NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorageName), NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorageKey)), [
  2083. this.leftValue,
  2084. this.rightValue
  2085. ]));
  2086. NodeUtils_1.NodeUtils.parentizeAst(structure);
  2087. return [structure];
  2088. }
  2089. };
  2090. tslib_1.__decorate([
  2091. Initializable_1.initializable(),
  2092. tslib_1.__metadata("design:type", String)
  2093. ], ExpressionWithOperatorControlFlowStorageCallNode.prototype, "controlFlowStorageKey", void 0);
  2094. tslib_1.__decorate([
  2095. Initializable_1.initializable(),
  2096. tslib_1.__metadata("design:type", String)
  2097. ], ExpressionWithOperatorControlFlowStorageCallNode.prototype, "controlFlowStorageName", void 0);
  2098. tslib_1.__decorate([
  2099. Initializable_1.initializable(),
  2100. tslib_1.__metadata("design:type", Object)
  2101. ], ExpressionWithOperatorControlFlowStorageCallNode.prototype, "leftValue", void 0);
  2102. tslib_1.__decorate([
  2103. Initializable_1.initializable(),
  2104. tslib_1.__metadata("design:type", Object)
  2105. ], ExpressionWithOperatorControlFlowStorageCallNode.prototype, "rightValue", void 0);
  2106. ExpressionWithOperatorControlFlowStorageCallNode = tslib_1.__decorate([
  2107. inversify_1.injectable(),
  2108. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2109. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2110. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2111. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2112. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  2113. ], ExpressionWithOperatorControlFlowStorageCallNode);
  2114. exports.ExpressionWithOperatorControlFlowStorageCallNode = ExpressionWithOperatorControlFlowStorageCallNode;
  2115. /***/ }),
  2116. /***/ "./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/StringLiteralControlFlowStorageCallNode.ts":
  2117. /*!******************************************************************************************************************************!*\
  2118. !*** ./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/StringLiteralControlFlowStorageCallNode.ts ***!
  2119. \******************************************************************************************************************************/
  2120. /*! no static exports found */
  2121. /***/ (function(module, exports, __webpack_require__) {
  2122. "use strict";
  2123. Object.defineProperty(exports, "__esModule", { value: true });
  2124. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2125. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2126. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2127. const Initializable_1 = __webpack_require__(/*! ../../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2128. const AbstractCustomNode_1 = __webpack_require__(/*! ../../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2129. const NodeFactory_1 = __webpack_require__(/*! ../../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  2130. const NodeUtils_1 = __webpack_require__(/*! ../../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2131. let StringLiteralControlFlowStorageCallNode = class StringLiteralControlFlowStorageCallNode extends AbstractCustomNode_1.AbstractCustomNode {
  2132. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  2133. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2134. }
  2135. initialize(controlFlowStorageName, controlFlowStorageKey) {
  2136. this.controlFlowStorageName = controlFlowStorageName;
  2137. this.controlFlowStorageKey = controlFlowStorageKey;
  2138. }
  2139. getNodeStructure() {
  2140. const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.memberExpressionNode(NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorageName), NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorageKey)));
  2141. NodeUtils_1.NodeUtils.parentizeAst(structure);
  2142. return [structure];
  2143. }
  2144. };
  2145. tslib_1.__decorate([
  2146. Initializable_1.initializable(),
  2147. tslib_1.__metadata("design:type", String)
  2148. ], StringLiteralControlFlowStorageCallNode.prototype, "controlFlowStorageKey", void 0);
  2149. tslib_1.__decorate([
  2150. Initializable_1.initializable(),
  2151. tslib_1.__metadata("design:type", String)
  2152. ], StringLiteralControlFlowStorageCallNode.prototype, "controlFlowStorageName", void 0);
  2153. StringLiteralControlFlowStorageCallNode = tslib_1.__decorate([
  2154. inversify_1.injectable(),
  2155. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2156. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2157. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2158. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2159. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  2160. ], StringLiteralControlFlowStorageCallNode);
  2161. exports.StringLiteralControlFlowStorageCallNode = StringLiteralControlFlowStorageCallNode;
  2162. /***/ }),
  2163. /***/ "./src/custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode.ts":
  2164. /*!*******************************************************************************************!*\
  2165. !*** ./src/custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode.ts ***!
  2166. \*******************************************************************************************/
  2167. /*! no static exports found */
  2168. /***/ (function(module, exports, __webpack_require__) {
  2169. "use strict";
  2170. Object.defineProperty(exports, "__esModule", { value: true });
  2171. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2172. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2173. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2174. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2175. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2176. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  2177. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2178. let BlockStatementDeadCodeInjectionNode = class BlockStatementDeadCodeInjectionNode extends AbstractCustomNode_1.AbstractCustomNode {
  2179. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  2180. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2181. }
  2182. initialize(blockStatementNode, deadCodeInjectionRootAstHostNode) {
  2183. this.blockStatementNode = blockStatementNode;
  2184. this.deadCodeInjectionRootAstHostNode = deadCodeInjectionRootAstHostNode;
  2185. }
  2186. getNodeStructure() {
  2187. const random1 = this.randomGenerator.getMathRandom() > 0.5;
  2188. const random2 = this.randomGenerator.getMathRandom() > 0.5;
  2189. const operator = random1 ? '===' : '!==';
  2190. const leftString = this.randomGenerator.getRandomString(5);
  2191. const rightString = random2 ? leftString : this.randomGenerator.getRandomString(5);
  2192. const [consequent, alternate] = random1 === random2
  2193. ? [this.blockStatementNode, this.deadCodeInjectionRootAstHostNode]
  2194. : [this.deadCodeInjectionRootAstHostNode, this.blockStatementNode];
  2195. const structure = NodeFactory_1.NodeFactory.blockStatementNode([
  2196. NodeFactory_1.NodeFactory.ifStatementNode(NodeFactory_1.NodeFactory.binaryExpressionNode(operator, NodeFactory_1.NodeFactory.literalNode(leftString), NodeFactory_1.NodeFactory.literalNode(rightString)), consequent, alternate)
  2197. ]);
  2198. NodeUtils_1.NodeUtils.parentizeAst(structure);
  2199. return [structure];
  2200. }
  2201. };
  2202. tslib_1.__decorate([
  2203. Initializable_1.initializable(),
  2204. tslib_1.__metadata("design:type", Object)
  2205. ], BlockStatementDeadCodeInjectionNode.prototype, "blockStatementNode", void 0);
  2206. tslib_1.__decorate([
  2207. Initializable_1.initializable(),
  2208. tslib_1.__metadata("design:type", Object)
  2209. ], BlockStatementDeadCodeInjectionNode.prototype, "deadCodeInjectionRootAstHostNode", void 0);
  2210. BlockStatementDeadCodeInjectionNode = tslib_1.__decorate([
  2211. inversify_1.injectable(),
  2212. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2213. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2214. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2215. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2216. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  2217. ], BlockStatementDeadCodeInjectionNode);
  2218. exports.BlockStatementDeadCodeInjectionNode = BlockStatementDeadCodeInjectionNode;
  2219. /***/ }),
  2220. /***/ "./src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts":
  2221. /*!************************************************************************************!*\
  2222. !*** ./src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionCallNode.ts ***!
  2223. \************************************************************************************/
  2224. /*! no static exports found */
  2225. /***/ (function(module, exports, __webpack_require__) {
  2226. "use strict";
  2227. Object.defineProperty(exports, "__esModule", { value: true });
  2228. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2229. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2230. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2231. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2232. const DebugProtectionFunctionCallTemplate_1 = __webpack_require__(/*! ../../templates/debug-protection-nodes/debug-protection-function-call-node/DebugProtectionFunctionCallTemplate */ "./src/templates/debug-protection-nodes/debug-protection-function-call-node/DebugProtectionFunctionCallTemplate.ts");
  2233. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2234. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2235. let DebugProtectionFunctionCallNode = class DebugProtectionFunctionCallNode extends AbstractCustomNode_1.AbstractCustomNode {
  2236. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  2237. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2238. }
  2239. initialize(debugProtectionFunctionName, callsControllerFunctionName) {
  2240. this.debugProtectionFunctionName = debugProtectionFunctionName;
  2241. this.callsControllerFunctionName = callsControllerFunctionName;
  2242. }
  2243. getNodeStructure() {
  2244. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  2245. }
  2246. getTemplate() {
  2247. return this.templateFormatter.format(DebugProtectionFunctionCallTemplate_1.DebugProtectionFunctionCallTemplate(), {
  2248. debugProtectionFunctionName: this.debugProtectionFunctionName,
  2249. singleNodeCallControllerFunctionName: this.callsControllerFunctionName
  2250. });
  2251. }
  2252. };
  2253. tslib_1.__decorate([
  2254. Initializable_1.initializable(),
  2255. tslib_1.__metadata("design:type", String)
  2256. ], DebugProtectionFunctionCallNode.prototype, "callsControllerFunctionName", void 0);
  2257. tslib_1.__decorate([
  2258. Initializable_1.initializable(),
  2259. tslib_1.__metadata("design:type", String)
  2260. ], DebugProtectionFunctionCallNode.prototype, "debugProtectionFunctionName", void 0);
  2261. DebugProtectionFunctionCallNode = tslib_1.__decorate([
  2262. inversify_1.injectable(),
  2263. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2264. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2265. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2266. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2267. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  2268. ], DebugProtectionFunctionCallNode);
  2269. exports.DebugProtectionFunctionCallNode = DebugProtectionFunctionCallNode;
  2270. /***/ }),
  2271. /***/ "./src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts":
  2272. /*!****************************************************************************************!*\
  2273. !*** ./src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionIntervalNode.ts ***!
  2274. \****************************************************************************************/
  2275. /*! no static exports found */
  2276. /***/ (function(module, exports, __webpack_require__) {
  2277. "use strict";
  2278. Object.defineProperty(exports, "__esModule", { value: true });
  2279. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2280. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2281. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2282. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2283. const DebugProtectionFunctionIntervalTemplate_1 = __webpack_require__(/*! ../../templates/debug-protection-nodes/debug-protection-function-interval-node/DebugProtectionFunctionIntervalTemplate */ "./src/templates/debug-protection-nodes/debug-protection-function-interval-node/DebugProtectionFunctionIntervalTemplate.ts");
  2284. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2285. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2286. let DebugProtectionFunctionIntervalNode = class DebugProtectionFunctionIntervalNode extends AbstractCustomNode_1.AbstractCustomNode {
  2287. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  2288. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2289. }
  2290. initialize(debugProtectionFunctionName) {
  2291. this.debugProtectionFunctionName = debugProtectionFunctionName;
  2292. }
  2293. getNodeStructure() {
  2294. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  2295. }
  2296. getTemplate() {
  2297. return this.templateFormatter.format(DebugProtectionFunctionIntervalTemplate_1.DebugProtectionFunctionIntervalTemplate(), {
  2298. debugProtectionFunctionName: this.debugProtectionFunctionName
  2299. });
  2300. }
  2301. };
  2302. tslib_1.__decorate([
  2303. Initializable_1.initializable(),
  2304. tslib_1.__metadata("design:type", String)
  2305. ], DebugProtectionFunctionIntervalNode.prototype, "debugProtectionFunctionName", void 0);
  2306. DebugProtectionFunctionIntervalNode = tslib_1.__decorate([
  2307. inversify_1.injectable(),
  2308. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2309. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2310. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2311. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2312. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  2313. ], DebugProtectionFunctionIntervalNode);
  2314. exports.DebugProtectionFunctionIntervalNode = DebugProtectionFunctionIntervalNode;
  2315. /***/ }),
  2316. /***/ "./src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts":
  2317. /*!********************************************************************************!*\
  2318. !*** ./src/custom-nodes/debug-protection-nodes/DebugProtectionFunctionNode.ts ***!
  2319. \********************************************************************************/
  2320. /*! no static exports found */
  2321. /***/ (function(module, exports, __webpack_require__) {
  2322. "use strict";
  2323. Object.defineProperty(exports, "__esModule", { value: true });
  2324. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2325. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2326. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2327. const ObfuscationTarget_1 = __webpack_require__(/*! ../../enums/ObfuscationTarget */ "./src/enums/ObfuscationTarget.ts");
  2328. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2329. const DebuggerTemplate_1 = __webpack_require__(/*! ../../templates/debug-protection-nodes/debug-protection-function-node/DebuggerTemplate */ "./src/templates/debug-protection-nodes/debug-protection-function-node/DebuggerTemplate.ts");
  2330. const DebuggerTemplateNoEval_1 = __webpack_require__(/*! ../../templates/debug-protection-nodes/debug-protection-function-node/DebuggerTemplateNoEval */ "./src/templates/debug-protection-nodes/debug-protection-function-node/DebuggerTemplateNoEval.ts");
  2331. const DebugProtectionFunctionTemplate_1 = __webpack_require__(/*! ../../templates/debug-protection-nodes/debug-protection-function-node/DebugProtectionFunctionTemplate */ "./src/templates/debug-protection-nodes/debug-protection-function-node/DebugProtectionFunctionTemplate.ts");
  2332. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2333. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2334. let DebugProtectionFunctionNode = class DebugProtectionFunctionNode extends AbstractCustomNode_1.AbstractCustomNode {
  2335. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  2336. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2337. }
  2338. initialize(debugProtectionFunctionName) {
  2339. this.debugProtectionFunctionName = debugProtectionFunctionName;
  2340. }
  2341. getNodeStructure() {
  2342. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  2343. }
  2344. getTemplate() {
  2345. const debuggerTemplate = this.options.target !== ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval
  2346. ? DebuggerTemplate_1.DebuggerTemplate()
  2347. : DebuggerTemplateNoEval_1.DebuggerTemplateNoEval();
  2348. return this.templateFormatter.format(DebugProtectionFunctionTemplate_1.DebugProtectionFunctionTemplate(), {
  2349. debuggerTemplate,
  2350. debugProtectionFunctionName: this.debugProtectionFunctionName
  2351. });
  2352. }
  2353. };
  2354. tslib_1.__decorate([
  2355. Initializable_1.initializable(),
  2356. tslib_1.__metadata("design:type", String)
  2357. ], DebugProtectionFunctionNode.prototype, "debugProtectionFunctionName", void 0);
  2358. DebugProtectionFunctionNode = tslib_1.__decorate([
  2359. inversify_1.injectable(),
  2360. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2361. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2362. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2363. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2364. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  2365. ], DebugProtectionFunctionNode);
  2366. exports.DebugProtectionFunctionNode = DebugProtectionFunctionNode;
  2367. /***/ }),
  2368. /***/ "./src/custom-nodes/debug-protection-nodes/group/DebugProtectionCustomNodeGroup.ts":
  2369. /*!*****************************************************************************************!*\
  2370. !*** ./src/custom-nodes/debug-protection-nodes/group/DebugProtectionCustomNodeGroup.ts ***!
  2371. \*****************************************************************************************/
  2372. /*! no static exports found */
  2373. /***/ (function(module, exports, __webpack_require__) {
  2374. "use strict";
  2375. Object.defineProperty(exports, "__esModule", { value: true });
  2376. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2377. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2378. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2379. const Initializable_1 = __webpack_require__(/*! ../../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2380. const CustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/CustomNode */ "./src/enums/custom-nodes/CustomNode.ts");
  2381. const ObfuscationEvent_1 = __webpack_require__(/*! ../../../enums/event-emitters/ObfuscationEvent */ "./src/enums/event-emitters/ObfuscationEvent.ts");
  2382. const AbstractCustomNodeGroup_1 = __webpack_require__(/*! ../../AbstractCustomNodeGroup */ "./src/custom-nodes/AbstractCustomNodeGroup.ts");
  2383. const NodeAppender_1 = __webpack_require__(/*! ../../../node/NodeAppender */ "./src/node/NodeAppender.ts");
  2384. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  2385. let DebugProtectionCustomNodeGroup = class DebugProtectionCustomNodeGroup extends AbstractCustomNodeGroup_1.AbstractCustomNodeGroup {
  2386. constructor(customNodeFactory, identifierNamesGeneratorFactory, randomGenerator, options) {
  2387. super(identifierNamesGeneratorFactory, randomGenerator, options);
  2388. this.appendEvent = ObfuscationEvent_1.ObfuscationEvent.BeforeObfuscation;
  2389. this.customNodeFactory = customNodeFactory;
  2390. }
  2391. appendCustomNodes(nodeWithStatements, callsGraphData) {
  2392. const randomCallsGraphIndex = this.getRandomCallsGraphIndex(callsGraphData.length);
  2393. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.DebugProtectionFunctionCallNode, (customNode) => {
  2394. NodeAppender_1.NodeAppender.appendToOptimalBlockScope(callsGraphData, nodeWithStatements, customNode.getNode(), randomCallsGraphIndex);
  2395. });
  2396. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.DebugProtectionFunctionNode, (customNode) => {
  2397. NodeAppender_1.NodeAppender.append(nodeWithStatements, customNode.getNode());
  2398. });
  2399. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.DebugProtectionFunctionIntervalNode, (customNode) => {
  2400. const programBodyLength = NodeGuards_1.NodeGuards.isSwitchCaseNode(nodeWithStatements)
  2401. ? nodeWithStatements.consequent.length
  2402. : nodeWithStatements.body.length;
  2403. const randomIndex = this.randomGenerator.getRandomInteger(0, programBodyLength);
  2404. NodeAppender_1.NodeAppender.insertAtIndex(nodeWithStatements, customNode.getNode(), randomIndex);
  2405. });
  2406. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode, (customNode) => {
  2407. const targetNodeWithStatements = callsGraphData.length
  2408. ? NodeAppender_1.NodeAppender.getOptimalBlockScope(callsGraphData, randomCallsGraphIndex, 1)
  2409. : nodeWithStatements;
  2410. NodeAppender_1.NodeAppender.prepend(targetNodeWithStatements, customNode.getNode());
  2411. });
  2412. }
  2413. initialize() {
  2414. this.customNodes = new Map();
  2415. if (!this.options.debugProtection) {
  2416. return;
  2417. }
  2418. const debugProtectionFunctionName = this.identifierNamesGenerator.generate();
  2419. const callsControllerFunctionName = this.identifierNamesGenerator.generate();
  2420. const debugProtectionFunctionNode = this.customNodeFactory(CustomNode_1.CustomNode.DebugProtectionFunctionNode);
  2421. const debugProtectionFunctionCallNode = this.customNodeFactory(CustomNode_1.CustomNode.DebugProtectionFunctionCallNode);
  2422. const debugProtectionFunctionIntervalNode = this.customNodeFactory(CustomNode_1.CustomNode.DebugProtectionFunctionIntervalNode);
  2423. const nodeCallsControllerFunctionNode = this.customNodeFactory(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode);
  2424. debugProtectionFunctionNode.initialize(debugProtectionFunctionName);
  2425. debugProtectionFunctionCallNode.initialize(debugProtectionFunctionName, callsControllerFunctionName);
  2426. debugProtectionFunctionIntervalNode.initialize(debugProtectionFunctionName);
  2427. nodeCallsControllerFunctionNode.initialize(this.appendEvent, callsControllerFunctionName);
  2428. this.customNodes.set(CustomNode_1.CustomNode.DebugProtectionFunctionNode, debugProtectionFunctionNode);
  2429. this.customNodes.set(CustomNode_1.CustomNode.DebugProtectionFunctionCallNode, debugProtectionFunctionCallNode);
  2430. if (this.options.debugProtectionInterval) {
  2431. this.customNodes.set(CustomNode_1.CustomNode.DebugProtectionFunctionIntervalNode, debugProtectionFunctionIntervalNode);
  2432. }
  2433. this.customNodes.set(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode, nodeCallsControllerFunctionNode);
  2434. }
  2435. };
  2436. tslib_1.__decorate([
  2437. Initializable_1.initializable(),
  2438. tslib_1.__metadata("design:type", Map)
  2439. ], DebugProtectionCustomNodeGroup.prototype, "customNodes", void 0);
  2440. DebugProtectionCustomNodeGroup = tslib_1.__decorate([
  2441. inversify_1.injectable(),
  2442. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)),
  2443. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2444. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2445. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2446. tslib_1.__metadata("design:paramtypes", [Function, Function, Object, Object])
  2447. ], DebugProtectionCustomNodeGroup);
  2448. exports.DebugProtectionCustomNodeGroup = DebugProtectionCustomNodeGroup;
  2449. /***/ }),
  2450. /***/ "./src/custom-nodes/domain-lock-nodes/DomainLockNode.ts":
  2451. /*!**************************************************************!*\
  2452. !*** ./src/custom-nodes/domain-lock-nodes/DomainLockNode.ts ***!
  2453. \**************************************************************/
  2454. /*! no static exports found */
  2455. /***/ (function(module, exports, __webpack_require__) {
  2456. "use strict";
  2457. Object.defineProperty(exports, "__esModule", { value: true });
  2458. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2459. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2460. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2461. const ObfuscationTarget_1 = __webpack_require__(/*! ../../enums/ObfuscationTarget */ "./src/enums/ObfuscationTarget.ts");
  2462. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2463. const DomainLockNodeTemplate_1 = __webpack_require__(/*! ../../templates/domain-lock-nodes/domain-lock-node/DomainLockNodeTemplate */ "./src/templates/domain-lock-nodes/domain-lock-node/DomainLockNodeTemplate.ts");
  2464. const GlobalVariableNoEvalTemplate_1 = __webpack_require__(/*! ../../templates/GlobalVariableNoEvalTemplate */ "./src/templates/GlobalVariableNoEvalTemplate.ts");
  2465. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2466. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2467. let DomainLockNode = class DomainLockNode extends AbstractCustomNode_1.AbstractCustomNode {
  2468. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, cryptUtils, options) {
  2469. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2470. this.cryptUtils = cryptUtils;
  2471. }
  2472. initialize(callsControllerFunctionName) {
  2473. this.callsControllerFunctionName = callsControllerFunctionName;
  2474. }
  2475. getNodeStructure() {
  2476. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  2477. }
  2478. getTemplate() {
  2479. const domainsString = this.options.domainLock.join(';');
  2480. const [hiddenDomainsString, diff] = this.cryptUtils.hideString(domainsString, domainsString.length * 3);
  2481. const globalVariableTemplate = this.options.target !== ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval
  2482. ? this.getGlobalVariableTemplate()
  2483. : GlobalVariableNoEvalTemplate_1.GlobalVariableNoEvalTemplate();
  2484. return this.templateFormatter.format(DomainLockNodeTemplate_1.DomainLockNodeTemplate(), {
  2485. domainLockFunctionName: this.identifierNamesGenerator.generate(),
  2486. diff: diff,
  2487. domains: hiddenDomainsString,
  2488. globalVariableTemplate,
  2489. singleNodeCallControllerFunctionName: this.callsControllerFunctionName
  2490. });
  2491. }
  2492. };
  2493. tslib_1.__decorate([
  2494. Initializable_1.initializable(),
  2495. tslib_1.__metadata("design:type", String)
  2496. ], DomainLockNode.prototype, "callsControllerFunctionName", void 0);
  2497. DomainLockNode = tslib_1.__decorate([
  2498. inversify_1.injectable(),
  2499. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2500. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2501. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2502. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICryptUtils)),
  2503. tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2504. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object, Object])
  2505. ], DomainLockNode);
  2506. exports.DomainLockNode = DomainLockNode;
  2507. /***/ }),
  2508. /***/ "./src/custom-nodes/domain-lock-nodes/group/DomainLockCustomNodeGroup.ts":
  2509. /*!*******************************************************************************!*\
  2510. !*** ./src/custom-nodes/domain-lock-nodes/group/DomainLockCustomNodeGroup.ts ***!
  2511. \*******************************************************************************/
  2512. /*! no static exports found */
  2513. /***/ (function(module, exports, __webpack_require__) {
  2514. "use strict";
  2515. Object.defineProperty(exports, "__esModule", { value: true });
  2516. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2517. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2518. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2519. const Initializable_1 = __webpack_require__(/*! ../../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2520. const CustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/CustomNode */ "./src/enums/custom-nodes/CustomNode.ts");
  2521. const ObfuscationEvent_1 = __webpack_require__(/*! ../../../enums/event-emitters/ObfuscationEvent */ "./src/enums/event-emitters/ObfuscationEvent.ts");
  2522. const AbstractCustomNodeGroup_1 = __webpack_require__(/*! ../../AbstractCustomNodeGroup */ "./src/custom-nodes/AbstractCustomNodeGroup.ts");
  2523. const NodeAppender_1 = __webpack_require__(/*! ../../../node/NodeAppender */ "./src/node/NodeAppender.ts");
  2524. let DomainLockCustomNodeGroup = class DomainLockCustomNodeGroup extends AbstractCustomNodeGroup_1.AbstractCustomNodeGroup {
  2525. constructor(customNodeFactory, identifierNamesGeneratorFactory, randomGenerator, options) {
  2526. super(identifierNamesGeneratorFactory, randomGenerator, options);
  2527. this.appendEvent = ObfuscationEvent_1.ObfuscationEvent.BeforeObfuscation;
  2528. this.customNodeFactory = customNodeFactory;
  2529. }
  2530. appendCustomNodes(nodeWithStatements, callsGraphData) {
  2531. const randomCallsGraphIndex = this.getRandomCallsGraphIndex(callsGraphData.length);
  2532. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.DomainLockNode, (customNode) => {
  2533. NodeAppender_1.NodeAppender.appendToOptimalBlockScope(callsGraphData, nodeWithStatements, customNode.getNode(), randomCallsGraphIndex);
  2534. });
  2535. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode, (customNode) => {
  2536. const targetNodeWithStatements = callsGraphData.length
  2537. ? NodeAppender_1.NodeAppender.getOptimalBlockScope(callsGraphData, randomCallsGraphIndex, 1)
  2538. : nodeWithStatements;
  2539. NodeAppender_1.NodeAppender.prepend(targetNodeWithStatements, customNode.getNode());
  2540. });
  2541. }
  2542. initialize() {
  2543. this.customNodes = new Map();
  2544. if (!this.options.domainLock.length) {
  2545. return;
  2546. }
  2547. const callsControllerFunctionName = this.identifierNamesGenerator.generate();
  2548. const domainLockNode = this.customNodeFactory(CustomNode_1.CustomNode.DomainLockNode);
  2549. const nodeCallsControllerFunctionNode = this.customNodeFactory(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode);
  2550. domainLockNode.initialize(callsControllerFunctionName);
  2551. nodeCallsControllerFunctionNode.initialize(this.appendEvent, callsControllerFunctionName);
  2552. this.customNodes.set(CustomNode_1.CustomNode.DomainLockNode, domainLockNode);
  2553. this.customNodes.set(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode, nodeCallsControllerFunctionNode);
  2554. }
  2555. };
  2556. tslib_1.__decorate([
  2557. Initializable_1.initializable(),
  2558. tslib_1.__metadata("design:type", Map)
  2559. ], DomainLockCustomNodeGroup.prototype, "customNodes", void 0);
  2560. DomainLockCustomNodeGroup = tslib_1.__decorate([
  2561. inversify_1.injectable(),
  2562. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)),
  2563. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2564. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2565. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2566. tslib_1.__metadata("design:paramtypes", [Function, Function, Object, Object])
  2567. ], DomainLockCustomNodeGroup);
  2568. exports.DomainLockCustomNodeGroup = DomainLockCustomNodeGroup;
  2569. /***/ }),
  2570. /***/ "./src/custom-nodes/node-calls-controller-nodes/NodeCallsControllerFunctionNode.ts":
  2571. /*!*****************************************************************************************!*\
  2572. !*** ./src/custom-nodes/node-calls-controller-nodes/NodeCallsControllerFunctionNode.ts ***!
  2573. \*****************************************************************************************/
  2574. /*! no static exports found */
  2575. /***/ (function(module, exports, __webpack_require__) {
  2576. "use strict";
  2577. Object.defineProperty(exports, "__esModule", { value: true });
  2578. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2579. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2580. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2581. const ObfuscationEvent_1 = __webpack_require__(/*! ../../enums/event-emitters/ObfuscationEvent */ "./src/enums/event-emitters/ObfuscationEvent.ts");
  2582. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2583. const SingleNodeCallControllerTemplate_1 = __webpack_require__(/*! ../../templates/SingleNodeCallControllerTemplate */ "./src/templates/SingleNodeCallControllerTemplate.ts");
  2584. const NoCustomNodes_1 = __webpack_require__(/*! ../../options/presets/NoCustomNodes */ "./src/options/presets/NoCustomNodes.ts");
  2585. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2586. const JavaScriptObfuscatorFacade_1 = __webpack_require__(/*! ../../JavaScriptObfuscatorFacade */ "./src/JavaScriptObfuscatorFacade.ts");
  2587. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2588. let NodeCallsControllerFunctionNode = class NodeCallsControllerFunctionNode extends AbstractCustomNode_1.AbstractCustomNode {
  2589. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  2590. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2591. }
  2592. initialize(appendEvent, callsControllerFunctionName) {
  2593. this.appendEvent = appendEvent;
  2594. this.callsControllerFunctionName = callsControllerFunctionName;
  2595. }
  2596. getNodeStructure() {
  2597. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  2598. }
  2599. getTemplate() {
  2600. if (this.appendEvent === ObfuscationEvent_1.ObfuscationEvent.AfterObfuscation) {
  2601. return JavaScriptObfuscatorFacade_1.JavaScriptObfuscator.obfuscate(this.templateFormatter.format(SingleNodeCallControllerTemplate_1.SingleNodeCallControllerTemplate(), {
  2602. singleNodeCallControllerFunctionName: this.callsControllerFunctionName
  2603. }), Object.assign(Object.assign({}, NoCustomNodes_1.NO_ADDITIONAL_NODES_PRESET), { identifierNamesGenerator: this.options.identifierNamesGenerator, identifiersDictionary: this.options.identifiersDictionary, seed: this.options.seed })).getObfuscatedCode();
  2604. }
  2605. return this.templateFormatter.format(SingleNodeCallControllerTemplate_1.SingleNodeCallControllerTemplate(), {
  2606. singleNodeCallControllerFunctionName: this.callsControllerFunctionName
  2607. });
  2608. }
  2609. };
  2610. tslib_1.__decorate([
  2611. Initializable_1.initializable(),
  2612. tslib_1.__metadata("design:type", String)
  2613. ], NodeCallsControllerFunctionNode.prototype, "callsControllerFunctionName", void 0);
  2614. tslib_1.__decorate([
  2615. Initializable_1.initializable(),
  2616. tslib_1.__metadata("design:type", String)
  2617. ], NodeCallsControllerFunctionNode.prototype, "appendEvent", void 0);
  2618. NodeCallsControllerFunctionNode = tslib_1.__decorate([
  2619. inversify_1.injectable(),
  2620. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2621. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2622. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2623. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2624. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  2625. ], NodeCallsControllerFunctionNode);
  2626. exports.NodeCallsControllerFunctionNode = NodeCallsControllerFunctionNode;
  2627. /***/ }),
  2628. /***/ "./src/custom-nodes/object-expression-keys-transformer-nodes/BasePropertiesExtractorObjectExpressionHostNode.ts":
  2629. /*!**********************************************************************************************************************!*\
  2630. !*** ./src/custom-nodes/object-expression-keys-transformer-nodes/BasePropertiesExtractorObjectExpressionHostNode.ts ***!
  2631. \**********************************************************************************************************************/
  2632. /*! no static exports found */
  2633. /***/ (function(module, exports, __webpack_require__) {
  2634. "use strict";
  2635. Object.defineProperty(exports, "__esModule", { value: true });
  2636. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2637. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2638. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2639. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2640. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  2641. let BasePropertiesExtractorObjectExpressionHostNode = class BasePropertiesExtractorObjectExpressionHostNode extends AbstractCustomNode_1.AbstractCustomNode {
  2642. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options, prevailingKindOfVariablesAnalyzer) {
  2643. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2644. this.prevailingKindOfVariables = prevailingKindOfVariablesAnalyzer.getPrevailingKind();
  2645. }
  2646. initialize() { }
  2647. getNodeStructure() {
  2648. const structure = NodeFactory_1.NodeFactory.variableDeclarationNode([
  2649. NodeFactory_1.NodeFactory.variableDeclaratorNode(NodeFactory_1.NodeFactory.identifierNode(this.identifierNamesGenerator.generate()), NodeFactory_1.NodeFactory.objectExpressionNode([]))
  2650. ], this.prevailingKindOfVariables);
  2651. return [structure];
  2652. }
  2653. };
  2654. BasePropertiesExtractorObjectExpressionHostNode = tslib_1.__decorate([
  2655. inversify_1.injectable(),
  2656. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2657. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2658. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2659. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2660. tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer)),
  2661. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object, Object])
  2662. ], BasePropertiesExtractorObjectExpressionHostNode);
  2663. exports.BasePropertiesExtractorObjectExpressionHostNode = BasePropertiesExtractorObjectExpressionHostNode;
  2664. /***/ }),
  2665. /***/ "./src/custom-nodes/self-defending-nodes/SelfDefendingUnicodeNode.ts":
  2666. /*!***************************************************************************!*\
  2667. !*** ./src/custom-nodes/self-defending-nodes/SelfDefendingUnicodeNode.ts ***!
  2668. \***************************************************************************/
  2669. /*! no static exports found */
  2670. /***/ (function(module, exports, __webpack_require__) {
  2671. "use strict";
  2672. Object.defineProperty(exports, "__esModule", { value: true });
  2673. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2674. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2675. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2676. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2677. const NoCustomNodes_1 = __webpack_require__(/*! ../../options/presets/NoCustomNodes */ "./src/options/presets/NoCustomNodes.ts");
  2678. const SelfDefendingTemplate_1 = __webpack_require__(/*! ../../templates/self-defending-nodes/self-defending-unicode-node/SelfDefendingTemplate */ "./src/templates/self-defending-nodes/self-defending-unicode-node/SelfDefendingTemplate.ts");
  2679. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2680. const JavaScriptObfuscatorFacade_1 = __webpack_require__(/*! ../../JavaScriptObfuscatorFacade */ "./src/JavaScriptObfuscatorFacade.ts");
  2681. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2682. let SelfDefendingUnicodeNode = class SelfDefendingUnicodeNode extends AbstractCustomNode_1.AbstractCustomNode {
  2683. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, escapeSequenceEncoder, options) {
  2684. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2685. this.escapeSequenceEncoder = escapeSequenceEncoder;
  2686. }
  2687. initialize(callsControllerFunctionName) {
  2688. this.callsControllerFunctionName = callsControllerFunctionName;
  2689. }
  2690. getNodeStructure() {
  2691. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  2692. }
  2693. getTemplate() {
  2694. return JavaScriptObfuscatorFacade_1.JavaScriptObfuscator.obfuscate(this.templateFormatter.format(SelfDefendingTemplate_1.SelfDefendingTemplate(this.escapeSequenceEncoder), {
  2695. selfDefendingFunctionName: this.identifierNamesGenerator.generate(),
  2696. singleNodeCallControllerFunctionName: this.callsControllerFunctionName
  2697. }), Object.assign(Object.assign({}, NoCustomNodes_1.NO_ADDITIONAL_NODES_PRESET), { identifierNamesGenerator: this.options.identifierNamesGenerator, identifiersDictionary: this.options.identifiersDictionary, seed: this.options.seed, unicodeEscapeSequence: true })).getObfuscatedCode();
  2698. }
  2699. };
  2700. tslib_1.__decorate([
  2701. Initializable_1.initializable(),
  2702. tslib_1.__metadata("design:type", String)
  2703. ], SelfDefendingUnicodeNode.prototype, "callsControllerFunctionName", void 0);
  2704. SelfDefendingUnicodeNode = tslib_1.__decorate([
  2705. inversify_1.injectable(),
  2706. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2707. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2708. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2709. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IEscapeSequenceEncoder)),
  2710. tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2711. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object, Object])
  2712. ], SelfDefendingUnicodeNode);
  2713. exports.SelfDefendingUnicodeNode = SelfDefendingUnicodeNode;
  2714. /***/ }),
  2715. /***/ "./src/custom-nodes/self-defending-nodes/group/SelfDefendingCustomNodeGroup.ts":
  2716. /*!*************************************************************************************!*\
  2717. !*** ./src/custom-nodes/self-defending-nodes/group/SelfDefendingCustomNodeGroup.ts ***!
  2718. \*************************************************************************************/
  2719. /*! no static exports found */
  2720. /***/ (function(module, exports, __webpack_require__) {
  2721. "use strict";
  2722. Object.defineProperty(exports, "__esModule", { value: true });
  2723. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2724. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2725. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2726. const Initializable_1 = __webpack_require__(/*! ../../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2727. const CustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/CustomNode */ "./src/enums/custom-nodes/CustomNode.ts");
  2728. const ObfuscationEvent_1 = __webpack_require__(/*! ../../../enums/event-emitters/ObfuscationEvent */ "./src/enums/event-emitters/ObfuscationEvent.ts");
  2729. const AbstractCustomNodeGroup_1 = __webpack_require__(/*! ../../AbstractCustomNodeGroup */ "./src/custom-nodes/AbstractCustomNodeGroup.ts");
  2730. const NodeAppender_1 = __webpack_require__(/*! ../../../node/NodeAppender */ "./src/node/NodeAppender.ts");
  2731. let SelfDefendingCustomNodeGroup = class SelfDefendingCustomNodeGroup extends AbstractCustomNodeGroup_1.AbstractCustomNodeGroup {
  2732. constructor(customNodeFactory, identifierNamesGeneratorFactory, randomGenerator, options) {
  2733. super(identifierNamesGeneratorFactory, randomGenerator, options);
  2734. this.appendEvent = ObfuscationEvent_1.ObfuscationEvent.AfterObfuscation;
  2735. this.customNodeFactory = customNodeFactory;
  2736. }
  2737. appendCustomNodes(nodeWithStatements, callsGraphData) {
  2738. const randomCallsGraphIndex = this.getRandomCallsGraphIndex(callsGraphData.length);
  2739. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.SelfDefendingUnicodeNode, (customNode) => {
  2740. NodeAppender_1.NodeAppender.appendToOptimalBlockScope(callsGraphData, nodeWithStatements, customNode.getNode(), randomCallsGraphIndex);
  2741. });
  2742. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode, (customNode) => {
  2743. const targetNodeWithStatements = callsGraphData.length
  2744. ? NodeAppender_1.NodeAppender.getOptimalBlockScope(callsGraphData, randomCallsGraphIndex, 1)
  2745. : nodeWithStatements;
  2746. NodeAppender_1.NodeAppender.prepend(targetNodeWithStatements, customNode.getNode());
  2747. });
  2748. }
  2749. initialize() {
  2750. this.customNodes = new Map();
  2751. if (!this.options.selfDefending) {
  2752. return;
  2753. }
  2754. const callsControllerFunctionName = this.identifierNamesGenerator.generate();
  2755. const selfDefendingUnicodeNode = this.customNodeFactory(CustomNode_1.CustomNode.SelfDefendingUnicodeNode);
  2756. const nodeCallsControllerFunctionNode = this.customNodeFactory(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode);
  2757. selfDefendingUnicodeNode.initialize(callsControllerFunctionName);
  2758. nodeCallsControllerFunctionNode.initialize(this.appendEvent, callsControllerFunctionName);
  2759. this.customNodes.set(CustomNode_1.CustomNode.SelfDefendingUnicodeNode, selfDefendingUnicodeNode);
  2760. this.customNodes.set(CustomNode_1.CustomNode.NodeCallsControllerFunctionNode, nodeCallsControllerFunctionNode);
  2761. }
  2762. };
  2763. tslib_1.__decorate([
  2764. Initializable_1.initializable(),
  2765. tslib_1.__metadata("design:type", Map)
  2766. ], SelfDefendingCustomNodeGroup.prototype, "customNodes", void 0);
  2767. SelfDefendingCustomNodeGroup = tslib_1.__decorate([
  2768. inversify_1.injectable(),
  2769. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)),
  2770. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2771. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2772. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2773. tslib_1.__metadata("design:paramtypes", [Function, Function, Object, Object])
  2774. ], SelfDefendingCustomNodeGroup);
  2775. exports.SelfDefendingCustomNodeGroup = SelfDefendingCustomNodeGroup;
  2776. /***/ }),
  2777. /***/ "./src/custom-nodes/string-array-nodes/StringArrayCallsWrapper.ts":
  2778. /*!************************************************************************!*\
  2779. !*** ./src/custom-nodes/string-array-nodes/StringArrayCallsWrapper.ts ***!
  2780. \************************************************************************/
  2781. /*! no static exports found */
  2782. /***/ (function(module, exports, __webpack_require__) {
  2783. "use strict";
  2784. Object.defineProperty(exports, "__esModule", { value: true });
  2785. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2786. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2787. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2788. const ObfuscationTarget_1 = __webpack_require__(/*! ../../enums/ObfuscationTarget */ "./src/enums/ObfuscationTarget.ts");
  2789. const StringArrayEncoding_1 = __webpack_require__(/*! ../../enums/StringArrayEncoding */ "./src/enums/StringArrayEncoding.ts");
  2790. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2791. const NoCustomNodes_1 = __webpack_require__(/*! ../../options/presets/NoCustomNodes */ "./src/options/presets/NoCustomNodes.ts");
  2792. const AtobTemplate_1 = __webpack_require__(/*! ../../templates/AtobTemplate */ "./src/templates/AtobTemplate.ts");
  2793. const GlobalVariableNoEvalTemplate_1 = __webpack_require__(/*! ../../templates/GlobalVariableNoEvalTemplate */ "./src/templates/GlobalVariableNoEvalTemplate.ts");
  2794. const Rc4Template_1 = __webpack_require__(/*! ../../templates/Rc4Template */ "./src/templates/Rc4Template.ts");
  2795. const SelfDefendingTemplate_1 = __webpack_require__(/*! ../../templates/string-array-nodes/string-array-calls-wrapper/SelfDefendingTemplate */ "./src/templates/string-array-nodes/string-array-calls-wrapper/SelfDefendingTemplate.ts");
  2796. const StringArrayBase64DecodeNodeTemplate_1 = __webpack_require__(/*! ../../templates/string-array-nodes/string-array-calls-wrapper/StringArrayBase64DecodeNodeTemplate */ "./src/templates/string-array-nodes/string-array-calls-wrapper/StringArrayBase64DecodeNodeTemplate.ts");
  2797. const StringArrayCallsWrapperTemplate_1 = __webpack_require__(/*! ../../templates/string-array-nodes/string-array-calls-wrapper/StringArrayCallsWrapperTemplate */ "./src/templates/string-array-nodes/string-array-calls-wrapper/StringArrayCallsWrapperTemplate.ts");
  2798. const StringArrayRC4DecodeNodeTemplate_1 = __webpack_require__(/*! ../../templates/string-array-nodes/string-array-calls-wrapper/StringArrayRC4DecodeNodeTemplate */ "./src/templates/string-array-nodes/string-array-calls-wrapper/StringArrayRC4DecodeNodeTemplate.ts");
  2799. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2800. const JavaScriptObfuscatorFacade_1 = __webpack_require__(/*! ../../JavaScriptObfuscatorFacade */ "./src/JavaScriptObfuscatorFacade.ts");
  2801. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2802. let StringArrayCallsWrapper = class StringArrayCallsWrapper extends AbstractCustomNode_1.AbstractCustomNode {
  2803. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, escapeSequenceEncoder, options) {
  2804. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2805. this.escapeSequenceEncoder = escapeSequenceEncoder;
  2806. }
  2807. initialize(stringArrayName, stringArrayCallsWrapperName) {
  2808. this.stringArrayName = stringArrayName;
  2809. this.stringArrayCallsWrapperName = stringArrayCallsWrapperName;
  2810. }
  2811. getNodeStructure() {
  2812. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  2813. }
  2814. getTemplate() {
  2815. const decodeNodeTemplate = this.getDecodeStringArrayTemplate();
  2816. return JavaScriptObfuscatorFacade_1.JavaScriptObfuscator.obfuscate(this.templateFormatter.format(StringArrayCallsWrapperTemplate_1.StringArrayCallsWrapperTemplate(), {
  2817. decodeNodeTemplate,
  2818. stringArrayCallsWrapperName: this.stringArrayCallsWrapperName,
  2819. stringArrayName: this.stringArrayName
  2820. }), Object.assign(Object.assign({}, NoCustomNodes_1.NO_ADDITIONAL_NODES_PRESET), { identifierNamesGenerator: this.options.identifierNamesGenerator, identifiersDictionary: this.options.identifiersDictionary, seed: this.randomGenerator.getRawSeed() })).getObfuscatedCode();
  2821. }
  2822. getDecodeStringArrayTemplate() {
  2823. const globalVariableTemplate = this.options.target !== ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval
  2824. ? this.getGlobalVariableTemplate()
  2825. : GlobalVariableNoEvalTemplate_1.GlobalVariableNoEvalTemplate();
  2826. const atobPolyfill = this.templateFormatter.format(AtobTemplate_1.AtobTemplate(), { globalVariableTemplate });
  2827. let decodeStringArrayTemplate = '';
  2828. let selfDefendingCode = '';
  2829. if (this.options.selfDefending) {
  2830. selfDefendingCode = this.templateFormatter.format(SelfDefendingTemplate_1.SelfDefendingTemplate(this.randomGenerator, this.escapeSequenceEncoder), {
  2831. stringArrayCallsWrapperName: this.stringArrayCallsWrapperName,
  2832. stringArrayName: this.stringArrayName
  2833. });
  2834. }
  2835. switch (this.options.stringArrayEncoding) {
  2836. case StringArrayEncoding_1.StringArrayEncoding.Rc4:
  2837. decodeStringArrayTemplate = this.templateFormatter.format(StringArrayRC4DecodeNodeTemplate_1.StringArrayRc4DecodeNodeTemplate(this.randomGenerator), {
  2838. atobPolyfill,
  2839. rc4Polyfill: Rc4Template_1.Rc4Template(),
  2840. selfDefendingCode,
  2841. stringArrayCallsWrapperName: this.stringArrayCallsWrapperName
  2842. });
  2843. break;
  2844. case StringArrayEncoding_1.StringArrayEncoding.Base64:
  2845. decodeStringArrayTemplate = this.templateFormatter.format(StringArrayBase64DecodeNodeTemplate_1.StringArrayBase64DecodeNodeTemplate(this.randomGenerator), {
  2846. atobPolyfill,
  2847. selfDefendingCode,
  2848. stringArrayCallsWrapperName: this.stringArrayCallsWrapperName
  2849. });
  2850. }
  2851. return decodeStringArrayTemplate;
  2852. }
  2853. };
  2854. tslib_1.__decorate([
  2855. Initializable_1.initializable(),
  2856. tslib_1.__metadata("design:type", String)
  2857. ], StringArrayCallsWrapper.prototype, "stringArrayName", void 0);
  2858. tslib_1.__decorate([
  2859. Initializable_1.initializable(),
  2860. tslib_1.__metadata("design:type", String)
  2861. ], StringArrayCallsWrapper.prototype, "stringArrayCallsWrapperName", void 0);
  2862. StringArrayCallsWrapper = tslib_1.__decorate([
  2863. inversify_1.injectable(),
  2864. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2865. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2866. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2867. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IEscapeSequenceEncoder)),
  2868. tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2869. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object, Object])
  2870. ], StringArrayCallsWrapper);
  2871. exports.StringArrayCallsWrapper = StringArrayCallsWrapper;
  2872. /***/ }),
  2873. /***/ "./src/custom-nodes/string-array-nodes/StringArrayNode.ts":
  2874. /*!****************************************************************!*\
  2875. !*** ./src/custom-nodes/string-array-nodes/StringArrayNode.ts ***!
  2876. \****************************************************************/
  2877. /*! no static exports found */
  2878. /***/ (function(module, exports, __webpack_require__) {
  2879. "use strict";
  2880. Object.defineProperty(exports, "__esModule", { value: true });
  2881. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2882. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2883. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2884. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2885. const StringArrayTemplate_1 = __webpack_require__(/*! ../../templates/string-array-nodes/string-array-node/StringArrayTemplate */ "./src/templates/string-array-nodes/string-array-node/StringArrayTemplate.ts");
  2886. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2887. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2888. let StringArrayNode = class StringArrayNode extends AbstractCustomNode_1.AbstractCustomNode {
  2889. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options) {
  2890. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2891. }
  2892. initialize(stringArrayStorage, stringArrayName, stringArrayRotateValue) {
  2893. this.stringArrayStorage = stringArrayStorage;
  2894. this.stringArrayName = stringArrayName;
  2895. this.stringArrayRotateValue = stringArrayRotateValue;
  2896. }
  2897. getNode() {
  2898. this.stringArrayStorage.rotateArray(this.stringArrayRotateValue);
  2899. return super.getNode();
  2900. }
  2901. getNodeStructure() {
  2902. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  2903. }
  2904. getTemplate() {
  2905. return this.templateFormatter.format(StringArrayTemplate_1.StringArrayTemplate(), {
  2906. stringArrayName: this.stringArrayName,
  2907. stringArray: this.stringArrayStorage.toString()
  2908. });
  2909. }
  2910. };
  2911. tslib_1.__decorate([
  2912. Initializable_1.initializable(),
  2913. tslib_1.__metadata("design:type", Object)
  2914. ], StringArrayNode.prototype, "stringArrayStorage", void 0);
  2915. tslib_1.__decorate([
  2916. Initializable_1.initializable(),
  2917. tslib_1.__metadata("design:type", String)
  2918. ], StringArrayNode.prototype, "stringArrayName", void 0);
  2919. tslib_1.__decorate([
  2920. Initializable_1.initializable(),
  2921. tslib_1.__metadata("design:type", Number)
  2922. ], StringArrayNode.prototype, "stringArrayRotateValue", void 0);
  2923. StringArrayNode = tslib_1.__decorate([
  2924. inversify_1.injectable(),
  2925. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2926. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2927. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2928. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  2929. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  2930. ], StringArrayNode);
  2931. exports.StringArrayNode = StringArrayNode;
  2932. /***/ }),
  2933. /***/ "./src/custom-nodes/string-array-nodes/StringArrayRotateFunctionNode.ts":
  2934. /*!******************************************************************************!*\
  2935. !*** ./src/custom-nodes/string-array-nodes/StringArrayRotateFunctionNode.ts ***!
  2936. \******************************************************************************/
  2937. /*! no static exports found */
  2938. /***/ (function(module, exports, __webpack_require__) {
  2939. "use strict";
  2940. Object.defineProperty(exports, "__esModule", { value: true });
  2941. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  2942. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  2943. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  2944. const Initializable_1 = __webpack_require__(/*! ../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  2945. const NoCustomNodes_1 = __webpack_require__(/*! ../../options/presets/NoCustomNodes */ "./src/options/presets/NoCustomNodes.ts");
  2946. const SelfDefendingTemplate_1 = __webpack_require__(/*! ../../templates/string-array-nodes/string-array-rotate-function-node/SelfDefendingTemplate */ "./src/templates/string-array-nodes/string-array-rotate-function-node/SelfDefendingTemplate.ts");
  2947. const StringArrayRotateFunctionTemplate_1 = __webpack_require__(/*! ../../templates/string-array-nodes/string-array-rotate-function-node/StringArrayRotateFunctionTemplate */ "./src/templates/string-array-nodes/string-array-rotate-function-node/StringArrayRotateFunctionTemplate.ts");
  2948. const AbstractCustomNode_1 = __webpack_require__(/*! ../AbstractCustomNode */ "./src/custom-nodes/AbstractCustomNode.ts");
  2949. const JavaScriptObfuscatorFacade_1 = __webpack_require__(/*! ../../JavaScriptObfuscatorFacade */ "./src/JavaScriptObfuscatorFacade.ts");
  2950. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  2951. const NumberUtils_1 = __webpack_require__(/*! ../../utils/NumberUtils */ "./src/utils/NumberUtils.ts");
  2952. let StringArrayRotateFunctionNode = class StringArrayRotateFunctionNode extends AbstractCustomNode_1.AbstractCustomNode {
  2953. constructor(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, escapeSequenceEncoder, options) {
  2954. super(identifierNamesGeneratorFactory, templateFormatter, randomGenerator, options);
  2955. this.escapeSequenceEncoder = escapeSequenceEncoder;
  2956. }
  2957. initialize(stringArrayName, stringArrayRotateValue) {
  2958. this.stringArrayName = stringArrayName;
  2959. this.stringArrayRotateValue = stringArrayRotateValue;
  2960. }
  2961. getNodeStructure() {
  2962. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  2963. }
  2964. getTemplate() {
  2965. const timesName = this.identifierNamesGenerator.generate();
  2966. const whileFunctionName = this.identifierNamesGenerator.generate();
  2967. let code = '';
  2968. if (this.options.selfDefending) {
  2969. code = this.templateFormatter.format(SelfDefendingTemplate_1.SelfDefendingTemplate(this.escapeSequenceEncoder), {
  2970. timesName,
  2971. whileFunctionName
  2972. });
  2973. }
  2974. else {
  2975. code = `${whileFunctionName}(++${timesName})`;
  2976. }
  2977. return JavaScriptObfuscatorFacade_1.JavaScriptObfuscator.obfuscate(this.templateFormatter.format(StringArrayRotateFunctionTemplate_1.StringArrayRotateFunctionTemplate(), {
  2978. code,
  2979. timesName,
  2980. stringArrayName: this.stringArrayName,
  2981. stringArrayRotateValue: NumberUtils_1.NumberUtils.toHex(this.stringArrayRotateValue),
  2982. whileFunctionName
  2983. }), Object.assign(Object.assign({}, NoCustomNodes_1.NO_ADDITIONAL_NODES_PRESET), { identifierNamesGenerator: this.options.identifierNamesGenerator, identifiersDictionary: this.options.identifiersDictionary, seed: this.randomGenerator.getRawSeed() })).getObfuscatedCode();
  2984. }
  2985. };
  2986. tslib_1.__decorate([
  2987. Initializable_1.initializable(),
  2988. tslib_1.__metadata("design:type", String)
  2989. ], StringArrayRotateFunctionNode.prototype, "stringArrayName", void 0);
  2990. tslib_1.__decorate([
  2991. Initializable_1.initializable(),
  2992. tslib_1.__metadata("design:type", Number)
  2993. ], StringArrayRotateFunctionNode.prototype, "stringArrayRotateValue", void 0);
  2994. StringArrayRotateFunctionNode = tslib_1.__decorate([
  2995. inversify_1.injectable(),
  2996. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  2997. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITemplateFormatter)),
  2998. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  2999. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IEscapeSequenceEncoder)),
  3000. tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  3001. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object, Object])
  3002. ], StringArrayRotateFunctionNode);
  3003. exports.StringArrayRotateFunctionNode = StringArrayRotateFunctionNode;
  3004. /***/ }),
  3005. /***/ "./src/custom-nodes/string-array-nodes/group/StringArrayCustomNodeGroup.ts":
  3006. /*!*********************************************************************************!*\
  3007. !*** ./src/custom-nodes/string-array-nodes/group/StringArrayCustomNodeGroup.ts ***!
  3008. \*********************************************************************************/
  3009. /*! no static exports found */
  3010. /***/ (function(module, exports, __webpack_require__) {
  3011. "use strict";
  3012. Object.defineProperty(exports, "__esModule", { value: true });
  3013. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  3014. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  3015. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  3016. const Initializable_1 = __webpack_require__(/*! ../../../decorators/Initializable */ "./src/decorators/Initializable.ts");
  3017. const CustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/CustomNode */ "./src/enums/custom-nodes/CustomNode.ts");
  3018. const ObfuscationEvent_1 = __webpack_require__(/*! ../../../enums/event-emitters/ObfuscationEvent */ "./src/enums/event-emitters/ObfuscationEvent.ts");
  3019. const AbstractCustomNodeGroup_1 = __webpack_require__(/*! ../../AbstractCustomNodeGroup */ "./src/custom-nodes/AbstractCustomNodeGroup.ts");
  3020. const NodeAppender_1 = __webpack_require__(/*! ../../../node/NodeAppender */ "./src/node/NodeAppender.ts");
  3021. let StringArrayCustomNodeGroup = class StringArrayCustomNodeGroup extends AbstractCustomNodeGroup_1.AbstractCustomNodeGroup {
  3022. constructor(customNodeFactory, stringArrayStorage, identifierNamesGeneratorFactory, randomGenerator, options) {
  3023. super(identifierNamesGeneratorFactory, randomGenerator, options);
  3024. this.appendEvent = ObfuscationEvent_1.ObfuscationEvent.AfterObfuscation;
  3025. this.customNodeFactory = customNodeFactory;
  3026. this.stringArrayStorage = stringArrayStorage;
  3027. }
  3028. appendCustomNodes(nodeWithStatements, callsGraphData) {
  3029. if (!this.stringArrayStorage.getLength()) {
  3030. return;
  3031. }
  3032. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.StringArrayNode, (customNode) => {
  3033. NodeAppender_1.NodeAppender.prepend(nodeWithStatements, customNode.getNode());
  3034. });
  3035. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.StringArrayCallsWrapper, (customNode) => {
  3036. NodeAppender_1.NodeAppender.insertAtIndex(nodeWithStatements, customNode.getNode(), 1);
  3037. });
  3038. this.appendCustomNodeIfExist(CustomNode_1.CustomNode.StringArrayRotateFunctionNode, (customNode) => {
  3039. NodeAppender_1.NodeAppender.insertAtIndex(nodeWithStatements, customNode.getNode(), 1);
  3040. });
  3041. }
  3042. initialize() {
  3043. this.customNodes = new Map();
  3044. if (!this.options.stringArray) {
  3045. return;
  3046. }
  3047. const stringArrayNode = this.customNodeFactory(CustomNode_1.CustomNode.StringArrayNode);
  3048. const stringArrayCallsWrapper = this.customNodeFactory(CustomNode_1.CustomNode.StringArrayCallsWrapper);
  3049. const stringArrayRotateFunctionNode = this.customNodeFactory(CustomNode_1.CustomNode.StringArrayRotateFunctionNode);
  3050. const stringArrayStorageId = this.stringArrayStorage.getStorageId();
  3051. const [stringArrayName, stringArrayCallsWrapperName] = stringArrayStorageId.split('|');
  3052. let stringArrayRotateValue;
  3053. if (this.options.rotateStringArray) {
  3054. stringArrayRotateValue = this.randomGenerator.getRandomInteger(100, 500);
  3055. }
  3056. else {
  3057. stringArrayRotateValue = 0;
  3058. }
  3059. stringArrayNode.initialize(this.stringArrayStorage, stringArrayName, stringArrayRotateValue);
  3060. stringArrayCallsWrapper.initialize(stringArrayName, stringArrayCallsWrapperName);
  3061. stringArrayRotateFunctionNode.initialize(stringArrayName, stringArrayRotateValue);
  3062. this.customNodes.set(CustomNode_1.CustomNode.StringArrayNode, stringArrayNode);
  3063. this.customNodes.set(CustomNode_1.CustomNode.StringArrayCallsWrapper, stringArrayCallsWrapper);
  3064. if (this.options.rotateStringArray) {
  3065. this.customNodes.set(CustomNode_1.CustomNode.StringArrayRotateFunctionNode, stringArrayRotateFunctionNode);
  3066. }
  3067. }
  3068. };
  3069. tslib_1.__decorate([
  3070. Initializable_1.initializable(),
  3071. tslib_1.__metadata("design:type", Map)
  3072. ], StringArrayCustomNodeGroup.prototype, "customNodes", void 0);
  3073. StringArrayCustomNodeGroup = tslib_1.__decorate([
  3074. inversify_1.injectable(),
  3075. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)),
  3076. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.TStringArrayStorage)),
  3077. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  3078. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  3079. tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  3080. tslib_1.__metadata("design:paramtypes", [Function, Object, Function, Object, Object])
  3081. ], StringArrayCustomNodeGroup);
  3082. exports.StringArrayCustomNodeGroup = StringArrayCustomNodeGroup;
  3083. /***/ }),
  3084. /***/ "./src/decorators/Initializable.ts":
  3085. /*!*****************************************!*\
  3086. !*** ./src/decorators/Initializable.ts ***!
  3087. \*****************************************/
  3088. /*! no static exports found */
  3089. /***/ (function(module, exports, __webpack_require__) {
  3090. "use strict";
  3091. Object.defineProperty(exports, "__esModule", { value: true });
  3092. const defaultDescriptor = {
  3093. configurable: true,
  3094. enumerable: true
  3095. };
  3096. const initializedTargetMetadataKey = '_initialized';
  3097. const initializablePropertiesSetMetadataKey = '_initializablePropertiesSet';
  3098. const wrappedMethodsSetMetadataKey = '_wrappedMethodsSet';
  3099. const constructorMethodName = 'constructor';
  3100. function initializable(initializeMethodName = 'initialize') {
  3101. const decoratorName = Object.keys(this)[0];
  3102. return (target, propertyKey) => {
  3103. const initializeMethod = target[initializeMethodName];
  3104. if (!initializeMethod || typeof initializeMethod !== 'function') {
  3105. throw new Error(`\`${initializeMethodName}\` method with initialization logic not ` +
  3106. `found. \`@${decoratorName}\` decorator requires \`${initializeMethodName}\` method`);
  3107. }
  3108. initializeTargetMetadata(initializedTargetMetadataKey, false, target);
  3109. initializeTargetMetadata(initializablePropertiesSetMetadataKey, new Set(), target);
  3110. initializeTargetMetadata(wrappedMethodsSetMetadataKey, new Set(), target);
  3111. wrapTargetMethodsInInitializedCheck(target, initializeMethodName);
  3112. wrapInitializeMethodInInitializeCheck(target, initializeMethodName, propertyKey);
  3113. return wrapInitializableProperty(target, propertyKey);
  3114. };
  3115. }
  3116. exports.initializable = initializable;
  3117. function initializeTargetMetadata(metadataKey, metadataValue, target) {
  3118. const hasInitializedMetadata = Reflect.hasMetadata(metadataKey, target);
  3119. if (!hasInitializedMetadata) {
  3120. Reflect.defineMetadata(metadataKey, metadataValue, target);
  3121. }
  3122. }
  3123. function wrapTargetMethodsInInitializedCheck(target, initializeMethodName) {
  3124. const ownPropertyNames = Object.getOwnPropertyNames(target);
  3125. const prohibitedPropertyNames = [initializeMethodName, constructorMethodName];
  3126. ownPropertyNames.forEach((propertyName) => {
  3127. const initializablePropertiesSet = Reflect
  3128. .getMetadata(initializablePropertiesSetMetadataKey, target);
  3129. const wrappedMethodsSet = Reflect
  3130. .getMetadata(wrappedMethodsSetMetadataKey, target);
  3131. const isProhibitedPropertyName = prohibitedPropertyNames.includes(propertyName)
  3132. || initializablePropertiesSet.has(propertyName)
  3133. || wrappedMethodsSet.has(propertyName);
  3134. if (isProhibitedPropertyName) {
  3135. return;
  3136. }
  3137. const targetProperty = target[propertyName];
  3138. if (typeof targetProperty !== 'function') {
  3139. return;
  3140. }
  3141. const methodDescriptor = Object
  3142. .getOwnPropertyDescriptor(target, propertyName) || defaultDescriptor;
  3143. const originalMethod = methodDescriptor.value;
  3144. Object.defineProperty(target, propertyName, Object.assign(Object.assign({}, methodDescriptor), { value: function () {
  3145. if (!Reflect.getMetadata(initializedTargetMetadataKey, this)) {
  3146. throw new Error(`Class should be initialized with \`${initializeMethodName}()\` method`);
  3147. }
  3148. return originalMethod.apply(this, arguments);
  3149. } }));
  3150. wrappedMethodsSet.add(propertyName);
  3151. });
  3152. }
  3153. function wrapInitializeMethodInInitializeCheck(target, initializeMethodName, propertyKey) {
  3154. const methodDescriptor = Object
  3155. .getOwnPropertyDescriptor(target, initializeMethodName) || defaultDescriptor;
  3156. const originalMethod = methodDescriptor.value;
  3157. Object.defineProperty(target, initializeMethodName, Object.assign(Object.assign({}, methodDescriptor), { value: function () {
  3158. Reflect.defineMetadata(initializedTargetMetadataKey, true, this);
  3159. const result = originalMethod.apply(this, arguments);
  3160. if (this[propertyKey]) { }
  3161. return result;
  3162. } }));
  3163. }
  3164. function wrapInitializableProperty(target, propertyKey) {
  3165. const initializablePropertiesSet = Reflect
  3166. .getMetadata(initializablePropertiesSetMetadataKey, target);
  3167. initializablePropertiesSet.add(propertyKey);
  3168. const initializablePropertyMetadataKey = `_${propertyKey.toString()}`;
  3169. const propertyDescriptor = Object
  3170. .getOwnPropertyDescriptor(target, initializablePropertyMetadataKey) || defaultDescriptor;
  3171. Object.defineProperty(target, propertyKey, Object.assign(Object.assign({}, propertyDescriptor), { get: function () {
  3172. if (this[initializablePropertyMetadataKey] === undefined) {
  3173. throw new Error(`Property \`${propertyKey.toString()}\` is not initialized! Initialize it first!`);
  3174. }
  3175. return this[initializablePropertyMetadataKey];
  3176. }, set: function (newVal) {
  3177. this[initializablePropertyMetadataKey] = newVal;
  3178. } }));
  3179. return propertyDescriptor;
  3180. }
  3181. /***/ }),
  3182. /***/ "./src/enums/ObfuscationTarget.ts":
  3183. /*!****************************************!*\
  3184. !*** ./src/enums/ObfuscationTarget.ts ***!
  3185. \****************************************/
  3186. /*! no static exports found */
  3187. /***/ (function(module, exports, __webpack_require__) {
  3188. "use strict";
  3189. Object.defineProperty(exports, "__esModule", { value: true });
  3190. const tsenum_1 = __webpack_require__(/*! @gradecam/tsenum */ "@gradecam/tsenum");
  3191. exports.ObfuscationTarget = tsenum_1.MakeEnum({
  3192. Browser: 'browser',
  3193. BrowserNoEval: 'browser-no-eval',
  3194. Node: 'node'
  3195. });
  3196. /***/ }),
  3197. /***/ "./src/enums/StringArrayEncoding.ts":
  3198. /*!******************************************!*\
  3199. !*** ./src/enums/StringArrayEncoding.ts ***!
  3200. \******************************************/
  3201. /*! no static exports found */
  3202. /***/ (function(module, exports, __webpack_require__) {
  3203. "use strict";
  3204. Object.defineProperty(exports, "__esModule", { value: true });
  3205. const tsenum_1 = __webpack_require__(/*! @gradecam/tsenum */ "@gradecam/tsenum");
  3206. exports.StringArrayEncoding = tsenum_1.MakeEnum({
  3207. Base64: 'base64',
  3208. Rc4: 'rc4'
  3209. });
  3210. /***/ }),
  3211. /***/ "./src/enums/StringSeparator.ts":
  3212. /*!**************************************!*\
  3213. !*** ./src/enums/StringSeparator.ts ***!
  3214. \**************************************/
  3215. /*! no static exports found */
  3216. /***/ (function(module, exports, __webpack_require__) {
  3217. "use strict";
  3218. Object.defineProperty(exports, "__esModule", { value: true });
  3219. var StringSeparator;
  3220. (function (StringSeparator) {
  3221. StringSeparator["Dot"] = ".";
  3222. })(StringSeparator = exports.StringSeparator || (exports.StringSeparator = {}));
  3223. /***/ }),
  3224. /***/ "./src/enums/analyzers/calls-graph-analyzer/CalleeDataExtractor.ts":
  3225. /*!*************************************************************************!*\
  3226. !*** ./src/enums/analyzers/calls-graph-analyzer/CalleeDataExtractor.ts ***!
  3227. \*************************************************************************/
  3228. /*! no static exports found */
  3229. /***/ (function(module, exports, __webpack_require__) {
  3230. "use strict";
  3231. Object.defineProperty(exports, "__esModule", { value: true });
  3232. var CalleeDataExtractor;
  3233. (function (CalleeDataExtractor) {
  3234. CalleeDataExtractor["FunctionDeclarationCalleeDataExtractor"] = "FunctionDeclarationCalleeDataExtractor";
  3235. CalleeDataExtractor["FunctionExpressionCalleeDataExtractor"] = "FunctionExpressionCalleeDataExtractor";
  3236. CalleeDataExtractor["ObjectExpressionCalleeDataExtractor"] = "ObjectExpressionCalleeDataExtractor";
  3237. })(CalleeDataExtractor = exports.CalleeDataExtractor || (exports.CalleeDataExtractor = {}));
  3238. /***/ }),
  3239. /***/ "./src/enums/custom-nodes/ControlFlowCustomNode.ts":
  3240. /*!*********************************************************!*\
  3241. !*** ./src/enums/custom-nodes/ControlFlowCustomNode.ts ***!
  3242. \*********************************************************/
  3243. /*! no static exports found */
  3244. /***/ (function(module, exports, __webpack_require__) {
  3245. "use strict";
  3246. Object.defineProperty(exports, "__esModule", { value: true });
  3247. var ControlFlowCustomNode;
  3248. (function (ControlFlowCustomNode) {
  3249. ControlFlowCustomNode["BinaryExpressionFunctionNode"] = "BinaryExpressionFunctionNode";
  3250. ControlFlowCustomNode["BlockStatementControlFlowFlatteningNode"] = "BlockStatementControlFlowFlatteningNode";
  3251. ControlFlowCustomNode["CallExpressionControlFlowStorageCallNode"] = "CallExpressionControlFlowStorageCallNode";
  3252. ControlFlowCustomNode["CallExpressionFunctionNode"] = "CallExpressionFunctionNode";
  3253. ControlFlowCustomNode["ControlFlowStorageNode"] = "ControlFlowStorageNode";
  3254. ControlFlowCustomNode["ExpressionWithOperatorControlFlowStorageCallNode"] = "ExpressionWithOperatorControlFlowStorageCallNode";
  3255. ControlFlowCustomNode["LogicalExpressionFunctionNode"] = "LogicalExpressionFunctionNode";
  3256. ControlFlowCustomNode["StringLiteralControlFlowStorageCallNode"] = "StringLiteralControlFlowStorageCallNode";
  3257. ControlFlowCustomNode["StringLiteralNode"] = "StringLiteralNode";
  3258. })(ControlFlowCustomNode = exports.ControlFlowCustomNode || (exports.ControlFlowCustomNode = {}));
  3259. /***/ }),
  3260. /***/ "./src/enums/custom-nodes/CustomNode.ts":
  3261. /*!**********************************************!*\
  3262. !*** ./src/enums/custom-nodes/CustomNode.ts ***!
  3263. \**********************************************/
  3264. /*! no static exports found */
  3265. /***/ (function(module, exports, __webpack_require__) {
  3266. "use strict";
  3267. Object.defineProperty(exports, "__esModule", { value: true });
  3268. var CustomNode;
  3269. (function (CustomNode) {
  3270. CustomNode["ConsoleOutputDisableExpressionNode"] = "ConsoleOutputDisableExpressionNode";
  3271. CustomNode["DebugProtectionFunctionCallNode"] = "DebugProtectionFunctionCallNode";
  3272. CustomNode["DebugProtectionFunctionIntervalNode"] = "DebugProtectionFunctionIntervalNode";
  3273. CustomNode["DebugProtectionFunctionNode"] = "DebugProtectionFunctionNode";
  3274. CustomNode["DomainLockNode"] = "DomainLockNode";
  3275. CustomNode["NodeCallsControllerFunctionNode"] = "NodeCallsControllerFunctionNode";
  3276. CustomNode["SelfDefendingUnicodeNode"] = "SelfDefendingUnicodeNode";
  3277. CustomNode["StringArrayCallsWrapper"] = "StringArrayCallsWrapper";
  3278. CustomNode["StringArrayNode"] = "StringArrayNode";
  3279. CustomNode["StringArrayRotateFunctionNode"] = "StringArrayRotateFunctionNode";
  3280. })(CustomNode = exports.CustomNode || (exports.CustomNode = {}));
  3281. /***/ }),
  3282. /***/ "./src/enums/custom-nodes/CustomNodeGroup.ts":
  3283. /*!***************************************************!*\
  3284. !*** ./src/enums/custom-nodes/CustomNodeGroup.ts ***!
  3285. \***************************************************/
  3286. /*! no static exports found */
  3287. /***/ (function(module, exports, __webpack_require__) {
  3288. "use strict";
  3289. Object.defineProperty(exports, "__esModule", { value: true });
  3290. var CustomNodeGroup;
  3291. (function (CustomNodeGroup) {
  3292. CustomNodeGroup["ConsoleOutputCustomNodeGroup"] = "ConsoleOutputCustomNodeGroup";
  3293. CustomNodeGroup["DebugProtectionCustomNodeGroup"] = "DebugProtectionCustomNodeGroup";
  3294. CustomNodeGroup["DomainLockCustomNodeGroup"] = "DomainLockCustomNodeGroup";
  3295. CustomNodeGroup["SelfDefendingCustomNodeGroup"] = "SelfDefendingCustomNodeGroup";
  3296. CustomNodeGroup["StringArrayCustomNodeGroup"] = "StringArrayCustomNodeGroup";
  3297. })(CustomNodeGroup = exports.CustomNodeGroup || (exports.CustomNodeGroup = {}));
  3298. /***/ }),
  3299. /***/ "./src/enums/custom-nodes/DeadCodeInjectionCustomNode.ts":
  3300. /*!***************************************************************!*\
  3301. !*** ./src/enums/custom-nodes/DeadCodeInjectionCustomNode.ts ***!
  3302. \***************************************************************/
  3303. /*! no static exports found */
  3304. /***/ (function(module, exports, __webpack_require__) {
  3305. "use strict";
  3306. Object.defineProperty(exports, "__esModule", { value: true });
  3307. var DeadCodeInjectionCustomNode;
  3308. (function (DeadCodeInjectionCustomNode) {
  3309. DeadCodeInjectionCustomNode["BlockStatementDeadCodeInjectionNode"] = "BlockStatementDeadCodeInjectionNode";
  3310. })(DeadCodeInjectionCustomNode = exports.DeadCodeInjectionCustomNode || (exports.DeadCodeInjectionCustomNode = {}));
  3311. /***/ }),
  3312. /***/ "./src/enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode.ts":
  3313. /*!*****************************************************************************!*\
  3314. !*** ./src/enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode.ts ***!
  3315. \*****************************************************************************/
  3316. /*! no static exports found */
  3317. /***/ (function(module, exports, __webpack_require__) {
  3318. "use strict";
  3319. Object.defineProperty(exports, "__esModule", { value: true });
  3320. var ObjectExpressionKeysTransformerCustomNode;
  3321. (function (ObjectExpressionKeysTransformerCustomNode) {
  3322. ObjectExpressionKeysTransformerCustomNode["BasePropertiesExtractorObjectExpressionHostNode"] = "BasePropertiesExtractorObjectExpressionHostNode";
  3323. })(ObjectExpressionKeysTransformerCustomNode = exports.ObjectExpressionKeysTransformerCustomNode || (exports.ObjectExpressionKeysTransformerCustomNode = {}));
  3324. /***/ }),
  3325. /***/ "./src/enums/event-emitters/ObfuscationEvent.ts":
  3326. /*!******************************************************!*\
  3327. !*** ./src/enums/event-emitters/ObfuscationEvent.ts ***!
  3328. \******************************************************/
  3329. /*! no static exports found */
  3330. /***/ (function(module, exports, __webpack_require__) {
  3331. "use strict";
  3332. Object.defineProperty(exports, "__esModule", { value: true });
  3333. var ObfuscationEvent;
  3334. (function (ObfuscationEvent) {
  3335. ObfuscationEvent["AfterObfuscation"] = "afterObfuscation";
  3336. ObfuscationEvent["BeforeObfuscation"] = "beforeObfuscation";
  3337. })(ObfuscationEvent = exports.ObfuscationEvent || (exports.ObfuscationEvent = {}));
  3338. /***/ }),
  3339. /***/ "./src/enums/generators/identifier-names-generators/IdentifierNamesGenerator.ts":
  3340. /*!**************************************************************************************!*\
  3341. !*** ./src/enums/generators/identifier-names-generators/IdentifierNamesGenerator.ts ***!
  3342. \**************************************************************************************/
  3343. /*! no static exports found */
  3344. /***/ (function(module, exports, __webpack_require__) {
  3345. "use strict";
  3346. Object.defineProperty(exports, "__esModule", { value: true });
  3347. const tsenum_1 = __webpack_require__(/*! @gradecam/tsenum */ "@gradecam/tsenum");
  3348. exports.IdentifierNamesGenerator = tsenum_1.MakeEnum({
  3349. DictionaryIdentifierNamesGenerator: 'dictionary',
  3350. HexadecimalIdentifierNamesGenerator: 'hexadecimal',
  3351. MangledIdentifierNamesGenerator: 'mangled'
  3352. });
  3353. /***/ }),
  3354. /***/ "./src/enums/logger/LoggingMessage.ts":
  3355. /*!********************************************!*\
  3356. !*** ./src/enums/logger/LoggingMessage.ts ***!
  3357. \********************************************/
  3358. /*! no static exports found */
  3359. /***/ (function(module, exports, __webpack_require__) {
  3360. "use strict";
  3361. Object.defineProperty(exports, "__esModule", { value: true });
  3362. var LoggingMessage;
  3363. (function (LoggingMessage) {
  3364. LoggingMessage["EmptySourceCode"] = "Empty source code. Obfuscation canceled...";
  3365. LoggingMessage["ObfuscationCompleted"] = "Obfuscation completed. Total time: %s sec.";
  3366. LoggingMessage["ObfuscationStarted"] = "Obfuscation started...";
  3367. LoggingMessage["RandomGeneratorSeed"] = "Random generator seed: %s...";
  3368. LoggingMessage["TransformationStage"] = "Transformation stage: %s...";
  3369. LoggingMessage["Version"] = "Version: %s";
  3370. })(LoggingMessage = exports.LoggingMessage || (exports.LoggingMessage = {}));
  3371. /***/ }),
  3372. /***/ "./src/enums/logger/LoggingPrefix.ts":
  3373. /*!*******************************************!*\
  3374. !*** ./src/enums/logger/LoggingPrefix.ts ***!
  3375. \*******************************************/
  3376. /*! no static exports found */
  3377. /***/ (function(module, exports, __webpack_require__) {
  3378. "use strict";
  3379. Object.defineProperty(exports, "__esModule", { value: true });
  3380. var LoggingPrefix;
  3381. (function (LoggingPrefix) {
  3382. LoggingPrefix["Base"] = "[javascript-obfuscator]";
  3383. LoggingPrefix["CLI"] = "[javascript-obfuscator-cli]";
  3384. })(LoggingPrefix = exports.LoggingPrefix || (exports.LoggingPrefix = {}));
  3385. /***/ }),
  3386. /***/ "./src/enums/node-transformers/NodeTransformer.ts":
  3387. /*!********************************************************!*\
  3388. !*** ./src/enums/node-transformers/NodeTransformer.ts ***!
  3389. \********************************************************/
  3390. /*! no static exports found */
  3391. /***/ (function(module, exports, __webpack_require__) {
  3392. "use strict";
  3393. Object.defineProperty(exports, "__esModule", { value: true });
  3394. var NodeTransformer;
  3395. (function (NodeTransformer) {
  3396. NodeTransformer["BlockStatementControlFlowTransformer"] = "BlockStatementControlFlowTransformer";
  3397. NodeTransformer["ClassDeclarationTransformer"] = "ClassDeclarationTransformer";
  3398. NodeTransformer["CommentsTransformer"] = "CommentsTransformer";
  3399. NodeTransformer["CustomNodesTransformer"] = "CustomNodesTransformer";
  3400. NodeTransformer["DeadCodeInjectionTransformer"] = "DeadCodeInjectionTransformer";
  3401. NodeTransformer["EvalCallExpressionTransformer"] = "EvalCallExpressionTransformer";
  3402. NodeTransformer["FunctionControlFlowTransformer"] = "FunctionControlFlowTransformer";
  3403. NodeTransformer["CatchClauseTransformer"] = "CatchClauseTransformer";
  3404. NodeTransformer["FunctionDeclarationTransformer"] = "FunctionDeclarationTransformer";
  3405. NodeTransformer["FunctionTransformer"] = "FunctionTransformer";
  3406. NodeTransformer["ImportDeclarationTransformer"] = "ImportDeclarationTransformer";
  3407. NodeTransformer["LabeledStatementTransformer"] = "LabeledStatementTransformer";
  3408. NodeTransformer["LiteralTransformer"] = "LiteralTransformer";
  3409. NodeTransformer["MemberExpressionTransformer"] = "MemberExpressionTransformer";
  3410. NodeTransformer["MetadataTransformer"] = "MetadataTransformer";
  3411. NodeTransformer["MethodDefinitionTransformer"] = "MethodDefinitionTransformer";
  3412. NodeTransformer["ObfuscatingGuardsTransformer"] = "ObfuscatingGuardsTransformer";
  3413. NodeTransformer["ObjectExpressionKeysTransformer"] = "ObjectExpressionKeysTransformer";
  3414. NodeTransformer["ObjectExpressionTransformer"] = "ObjectExpressionTransformer";
  3415. NodeTransformer["ParentificationTransformer"] = "ParentificationTransformer";
  3416. NodeTransformer["SplitStringTransformer"] = "SplitStringTransformer";
  3417. NodeTransformer["TemplateLiteralTransformer"] = "TemplateLiteralTransformer";
  3418. NodeTransformer["VariableDeclarationTransformer"] = "VariableDeclarationTransformer";
  3419. NodeTransformer["VariablePreserveTransformer"] = "VariablePreserveTransformer";
  3420. })(NodeTransformer = exports.NodeTransformer || (exports.NodeTransformer = {}));
  3421. /***/ }),
  3422. /***/ "./src/enums/node-transformers/TransformationStage.ts":
  3423. /*!************************************************************!*\
  3424. !*** ./src/enums/node-transformers/TransformationStage.ts ***!
  3425. \************************************************************/
  3426. /*! no static exports found */
  3427. /***/ (function(module, exports, __webpack_require__) {
  3428. "use strict";
  3429. Object.defineProperty(exports, "__esModule", { value: true });
  3430. var TransformationStage;
  3431. (function (TransformationStage) {
  3432. TransformationStage["Initializing"] = "Initializing";
  3433. TransformationStage["Preparing"] = "Preparing";
  3434. TransformationStage["DeadCodeInjection"] = "DeadCodeInjection";
  3435. TransformationStage["ControlFlowFlattening"] = "ControlFlowFlattening";
  3436. TransformationStage["Converting"] = "Converting";
  3437. TransformationStage["Obfuscating"] = "Obfuscating";
  3438. TransformationStage["Finalizing"] = "Finalizing";
  3439. })(TransformationStage = exports.TransformationStage || (exports.TransformationStage = {}));
  3440. /***/ }),
  3441. /***/ "./src/enums/node-transformers/VisitorDirection.ts":
  3442. /*!*********************************************************!*\
  3443. !*** ./src/enums/node-transformers/VisitorDirection.ts ***!
  3444. \*********************************************************/
  3445. /*! no static exports found */
  3446. /***/ (function(module, exports, __webpack_require__) {
  3447. "use strict";
  3448. Object.defineProperty(exports, "__esModule", { value: true });
  3449. var VisitorDirection;
  3450. (function (VisitorDirection) {
  3451. VisitorDirection["Enter"] = "enter";
  3452. VisitorDirection["Leave"] = "leave";
  3453. })(VisitorDirection = exports.VisitorDirection || (exports.VisitorDirection = {}));
  3454. /***/ }),
  3455. /***/ "./src/enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractor.ts":
  3456. /*!**********************************************************************************************************!*\
  3457. !*** ./src/enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractor.ts ***!
  3458. \**********************************************************************************************************/
  3459. /*! no static exports found */
  3460. /***/ (function(module, exports, __webpack_require__) {
  3461. "use strict";
  3462. Object.defineProperty(exports, "__esModule", { value: true });
  3463. var PropertiesExtractor;
  3464. (function (PropertiesExtractor) {
  3465. PropertiesExtractor["AssignmentExpressionPropertiesExtractor"] = "AssignmentExpressionPropertiesExtractor";
  3466. PropertiesExtractor["BasePropertiesExtractor"] = "BasePropertiesExtractor";
  3467. PropertiesExtractor["VariableDeclaratorPropertiesExtractor"] = "VariableDeclaratorPropertiesExtractor";
  3468. })(PropertiesExtractor = exports.PropertiesExtractor || (exports.PropertiesExtractor = {}));
  3469. /***/ }),
  3470. /***/ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/ControlFlowReplacer.ts":
  3471. /*!***********************************************************************************************************!*\
  3472. !*** ./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/ControlFlowReplacer.ts ***!
  3473. \***********************************************************************************************************/
  3474. /*! no static exports found */
  3475. /***/ (function(module, exports, __webpack_require__) {
  3476. "use strict";
  3477. Object.defineProperty(exports, "__esModule", { value: true });
  3478. var ControlFlowReplacer;
  3479. (function (ControlFlowReplacer) {
  3480. ControlFlowReplacer["BinaryExpressionControlFlowReplacer"] = "BinaryExpressionControlFlowReplacer";
  3481. ControlFlowReplacer["CallExpressionControlFlowReplacer"] = "CallExpressionControlFlowReplacer";
  3482. ControlFlowReplacer["LogicalExpressionControlFlowReplacer"] = "LogicalExpressionControlFlowReplacer";
  3483. ControlFlowReplacer["StringLiteralControlFlowReplacer"] = "StringLiteralControlFlowReplacer";
  3484. })(ControlFlowReplacer = exports.ControlFlowReplacer || (exports.ControlFlowReplacer = {}));
  3485. /***/ }),
  3486. /***/ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer.ts":
  3487. /*!*********************************************************************************************************************!*\
  3488. !*** ./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer.ts ***!
  3489. \*********************************************************************************************************************/
  3490. /*! no static exports found */
  3491. /***/ (function(module, exports, __webpack_require__) {
  3492. "use strict";
  3493. Object.defineProperty(exports, "__esModule", { value: true });
  3494. var IdentifierObfuscatingReplacer;
  3495. (function (IdentifierObfuscatingReplacer) {
  3496. IdentifierObfuscatingReplacer["BaseIdentifierObfuscatingReplacer"] = "BaseIdentifierObfuscatingReplacer";
  3497. })(IdentifierObfuscatingReplacer = exports.IdentifierObfuscatingReplacer || (exports.IdentifierObfuscatingReplacer = {}));
  3498. /***/ }),
  3499. /***/ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/LiteralObfuscatingReplacer.ts":
  3500. /*!******************************************************************************************************************!*\
  3501. !*** ./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/LiteralObfuscatingReplacer.ts ***!
  3502. \******************************************************************************************************************/
  3503. /*! no static exports found */
  3504. /***/ (function(module, exports, __webpack_require__) {
  3505. "use strict";
  3506. Object.defineProperty(exports, "__esModule", { value: true });
  3507. var LiteralObfuscatingReplacer;
  3508. (function (LiteralObfuscatingReplacer) {
  3509. LiteralObfuscatingReplacer["BooleanLiteralObfuscatingReplacer"] = "BooleanLiteralObfuscatingReplacer";
  3510. LiteralObfuscatingReplacer["NumberLiteralObfuscatingReplacer"] = "NumberLiteralObfuscatingReplacer";
  3511. LiteralObfuscatingReplacer["StringLiteralObfuscatingReplacer"] = "StringLiteralObfuscatingReplacer";
  3512. })(LiteralObfuscatingReplacer = exports.LiteralObfuscatingReplacer || (exports.LiteralObfuscatingReplacer = {}));
  3513. /***/ }),
  3514. /***/ "./src/enums/node-transformers/preparing-transformers/obfuscating-guards/ObfuscatingGuard.ts":
  3515. /*!***************************************************************************************************!*\
  3516. !*** ./src/enums/node-transformers/preparing-transformers/obfuscating-guards/ObfuscatingGuard.ts ***!
  3517. \***************************************************************************************************/
  3518. /*! no static exports found */
  3519. /***/ (function(module, exports, __webpack_require__) {
  3520. "use strict";
  3521. Object.defineProperty(exports, "__esModule", { value: true });
  3522. var ObfuscatingGuard;
  3523. (function (ObfuscatingGuard) {
  3524. ObfuscatingGuard["BlackListObfuscatingGuard"] = "BlackListObfuscatingGuard";
  3525. ObfuscatingGuard["ConditionalCommentObfuscatingGuard"] = "ConditionalCommentObfuscatingGuard";
  3526. ObfuscatingGuard["ReservedStringObfuscatingGuard"] = "ReservedStringObfuscatingGuard";
  3527. })(ObfuscatingGuard = exports.ObfuscatingGuard || (exports.ObfuscatingGuard = {}));
  3528. /***/ }),
  3529. /***/ "./src/enums/node/NodeType.ts":
  3530. /*!************************************!*\
  3531. !*** ./src/enums/node/NodeType.ts ***!
  3532. \************************************/
  3533. /*! no static exports found */
  3534. /***/ (function(module, exports, __webpack_require__) {
  3535. "use strict";
  3536. Object.defineProperty(exports, "__esModule", { value: true });
  3537. var NodeType;
  3538. (function (NodeType) {
  3539. NodeType["ArrayExpression"] = "ArrayExpression";
  3540. NodeType["ArrayPattern"] = "ArrayPattern";
  3541. NodeType["ArrowFunctionExpression"] = "ArrowFunctionExpression";
  3542. NodeType["AssignmentExpression"] = "AssignmentExpression";
  3543. NodeType["AssignmentPattern"] = "AssignmentPattern";
  3544. NodeType["AwaitExpression"] = "AwaitExpression";
  3545. NodeType["BinaryExpression"] = "BinaryExpression";
  3546. NodeType["BlockStatement"] = "BlockStatement";
  3547. NodeType["BreakStatement"] = "BreakStatement";
  3548. NodeType["CallExpression"] = "CallExpression";
  3549. NodeType["CatchClause"] = "CatchClause";
  3550. NodeType["ClassDeclaration"] = "ClassDeclaration";
  3551. NodeType["ContinueStatement"] = "ContinueStatement";
  3552. NodeType["ExportNamedDeclaration"] = "ExportNamedDeclaration";
  3553. NodeType["ExpressionStatement"] = "ExpressionStatement";
  3554. NodeType["ForStatement"] = "ForStatement";
  3555. NodeType["ForInStatement"] = "ForInStatement";
  3556. NodeType["ForOfStatement"] = "ForOfStatement";
  3557. NodeType["FunctionDeclaration"] = "FunctionDeclaration";
  3558. NodeType["FunctionExpression"] = "FunctionExpression";
  3559. NodeType["Identifier"] = "Identifier";
  3560. NodeType["IfStatement"] = "IfStatement";
  3561. NodeType["ImportDeclaration"] = "ImportDeclaration";
  3562. NodeType["ImportDefaultSpecifier"] = "ImportDefaultSpecifier";
  3563. NodeType["ImportNamespaceSpecifier"] = "ImportNamespaceSpecifier";
  3564. NodeType["ImportSpecifier"] = "ImportSpecifier";
  3565. NodeType["LabeledStatement"] = "LabeledStatement";
  3566. NodeType["Literal"] = "Literal";
  3567. NodeType["LogicalExpression"] = "LogicalExpression";
  3568. NodeType["MemberExpression"] = "MemberExpression";
  3569. NodeType["MethodDefinition"] = "MethodDefinition";
  3570. NodeType["ObjectExpression"] = "ObjectExpression";
  3571. NodeType["ObjectPattern"] = "ObjectPattern";
  3572. NodeType["Program"] = "Program";
  3573. NodeType["Property"] = "Property";
  3574. NodeType["RestElement"] = "RestElement";
  3575. NodeType["ReturnStatement"] = "ReturnStatement";
  3576. NodeType["Super"] = "Super";
  3577. NodeType["SwitchCase"] = "SwitchCase";
  3578. NodeType["SwitchStatement"] = "SwitchStatement";
  3579. NodeType["TaggedTemplateExpression"] = "TaggedTemplateExpression";
  3580. NodeType["TemplateLiteral"] = "TemplateLiteral";
  3581. NodeType["TryStatement"] = "TryStatement";
  3582. NodeType["UnaryExpression"] = "UnaryExpression";
  3583. NodeType["UpdateExpression"] = "UpdateExpression";
  3584. NodeType["VariableDeclaration"] = "VariableDeclaration";
  3585. NodeType["VariableDeclarator"] = "VariableDeclarator";
  3586. NodeType["WhileStatement"] = "WhileStatement";
  3587. })(NodeType = exports.NodeType || (exports.NodeType = {}));
  3588. /***/ }),
  3589. /***/ "./src/enums/source-map/SourceMapMode.ts":
  3590. /*!***********************************************!*\
  3591. !*** ./src/enums/source-map/SourceMapMode.ts ***!
  3592. \***********************************************/
  3593. /*! no static exports found */
  3594. /***/ (function(module, exports, __webpack_require__) {
  3595. "use strict";
  3596. Object.defineProperty(exports, "__esModule", { value: true });
  3597. const tsenum_1 = __webpack_require__(/*! @gradecam/tsenum */ "@gradecam/tsenum");
  3598. exports.SourceMapMode = tsenum_1.MakeEnum({
  3599. Inline: 'inline',
  3600. Separate: 'separate'
  3601. });
  3602. /***/ }),
  3603. /***/ "./src/event-emitters/ObfuscationEventEmitter.ts":
  3604. /*!*******************************************************!*\
  3605. !*** ./src/event-emitters/ObfuscationEventEmitter.ts ***!
  3606. \*******************************************************/
  3607. /*! no static exports found */
  3608. /***/ (function(module, exports, __webpack_require__) {
  3609. "use strict";
  3610. Object.defineProperty(exports, "__esModule", { value: true });
  3611. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  3612. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  3613. const eventemitter3_1 = tslib_1.__importDefault(__webpack_require__(/*! eventemitter3 */ "eventemitter3"));
  3614. inversify_1.decorate(inversify_1.injectable(), eventemitter3_1.default);
  3615. let ObfuscationEventEmitter = class ObfuscationEventEmitter extends eventemitter3_1.default {
  3616. };
  3617. ObfuscationEventEmitter = tslib_1.__decorate([
  3618. inversify_1.injectable()
  3619. ], ObfuscationEventEmitter);
  3620. exports.ObfuscationEventEmitter = ObfuscationEventEmitter;
  3621. /***/ }),
  3622. /***/ "./src/generators/identifier-names-generators/AbstractIdentifierNamesGenerator.ts":
  3623. /*!****************************************************************************************!*\
  3624. !*** ./src/generators/identifier-names-generators/AbstractIdentifierNamesGenerator.ts ***!
  3625. \****************************************************************************************/
  3626. /*! no static exports found */
  3627. /***/ (function(module, exports, __webpack_require__) {
  3628. "use strict";
  3629. Object.defineProperty(exports, "__esModule", { value: true });
  3630. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  3631. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  3632. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  3633. let AbstractIdentifierNamesGenerator = class AbstractIdentifierNamesGenerator {
  3634. constructor(randomGenerator, options) {
  3635. this.preservedNames = [];
  3636. this.randomGenerator = randomGenerator;
  3637. this.options = options;
  3638. }
  3639. preserveName(name) {
  3640. this.preservedNames.push(name);
  3641. }
  3642. isValidIdentifierName(name) {
  3643. return this.notReservedName(name) && !this.preservedNames.includes(name);
  3644. }
  3645. notReservedName(name) {
  3646. return this.options.reservedNames.length
  3647. ? !this.options.reservedNames.some((reservedName) => new RegExp(reservedName, 'g').exec(name) !== null)
  3648. : true;
  3649. }
  3650. };
  3651. AbstractIdentifierNamesGenerator = tslib_1.__decorate([
  3652. inversify_1.injectable(),
  3653. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  3654. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  3655. tslib_1.__metadata("design:paramtypes", [Object, Object])
  3656. ], AbstractIdentifierNamesGenerator);
  3657. exports.AbstractIdentifierNamesGenerator = AbstractIdentifierNamesGenerator;
  3658. /***/ }),
  3659. /***/ "./src/generators/identifier-names-generators/DictionaryIdentifierNamesGenerator.ts":
  3660. /*!******************************************************************************************!*\
  3661. !*** ./src/generators/identifier-names-generators/DictionaryIdentifierNamesGenerator.ts ***!
  3662. \******************************************************************************************/
  3663. /*! no static exports found */
  3664. /***/ (function(module, exports, __webpack_require__) {
  3665. "use strict";
  3666. var DictionaryIdentifierNamesGenerator_1;
  3667. Object.defineProperty(exports, "__esModule", { value: true });
  3668. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  3669. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  3670. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  3671. const AbstractIdentifierNamesGenerator_1 = __webpack_require__(/*! ./AbstractIdentifierNamesGenerator */ "./src/generators/identifier-names-generators/AbstractIdentifierNamesGenerator.ts");
  3672. let DictionaryIdentifierNamesGenerator = DictionaryIdentifierNamesGenerator_1 = class DictionaryIdentifierNamesGenerator extends AbstractIdentifierNamesGenerator_1.AbstractIdentifierNamesGenerator {
  3673. constructor(randomGenerator, options, arrayUtils) {
  3674. super(randomGenerator, options);
  3675. this.arrayUtils = arrayUtils;
  3676. this.identifierNamesSet = new Set(this.getInitialIdentifierNames(this.options.identifiersDictionary));
  3677. this.identifiersIterator = this.identifierNamesSet.values();
  3678. }
  3679. static incrementIdentifierName(identifierName) {
  3680. let newIdentifierName = '';
  3681. let isSuccess = false;
  3682. for (const character of identifierName) {
  3683. if (!isSuccess && character === character.toUpperCase()) {
  3684. newIdentifierName += character.toLowerCase();
  3685. }
  3686. else if (!isSuccess && character === character.toLowerCase()) {
  3687. newIdentifierName += character.toUpperCase();
  3688. isSuccess = true;
  3689. }
  3690. else {
  3691. newIdentifierName += character;
  3692. }
  3693. }
  3694. if (isSuccess) {
  3695. return newIdentifierName;
  3696. }
  3697. return null;
  3698. }
  3699. generate() {
  3700. if (!this.identifierNamesSet.size) {
  3701. throw new Error('Too many identifiers in the code, add more words to identifiers dictionary');
  3702. }
  3703. const iteratorResult = this.identifiersIterator.next();
  3704. if (!iteratorResult.done) {
  3705. return iteratorResult.value;
  3706. }
  3707. this.identifierNamesSet = new Set(this.getIncrementedIdentifierNames([...this.identifierNamesSet]));
  3708. this.identifiersIterator = this.identifierNamesSet.values();
  3709. return this.generate();
  3710. }
  3711. generateWithPrefix() {
  3712. const prefix = this.options.identifiersPrefix ?
  3713. `${this.options.identifiersPrefix}_`
  3714. : '';
  3715. const identifierName = this.generate();
  3716. return `${prefix}${identifierName}`.replace('__', '_');
  3717. }
  3718. getInitialIdentifierNames(identifierNames) {
  3719. const formattedIdentifierNames = identifierNames
  3720. .filter(Boolean)
  3721. .map((identifierName) => identifierName.toLowerCase());
  3722. return this.arrayUtils.shuffle(formattedIdentifierNames);
  3723. }
  3724. getIncrementedIdentifierNames(identifierNames) {
  3725. const formattedIdentifierNames = [];
  3726. for (const identifierName of identifierNames) {
  3727. const newIdentifierName = DictionaryIdentifierNamesGenerator_1
  3728. .incrementIdentifierName(identifierName);
  3729. if (newIdentifierName) {
  3730. formattedIdentifierNames.push(newIdentifierName);
  3731. }
  3732. }
  3733. return this.arrayUtils.shuffle(formattedIdentifierNames);
  3734. }
  3735. };
  3736. DictionaryIdentifierNamesGenerator = DictionaryIdentifierNamesGenerator_1 = tslib_1.__decorate([
  3737. inversify_1.injectable(),
  3738. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  3739. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  3740. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),
  3741. tslib_1.__metadata("design:paramtypes", [Object, Object, Object])
  3742. ], DictionaryIdentifierNamesGenerator);
  3743. exports.DictionaryIdentifierNamesGenerator = DictionaryIdentifierNamesGenerator;
  3744. /***/ }),
  3745. /***/ "./src/generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator.ts":
  3746. /*!*******************************************************************************************!*\
  3747. !*** ./src/generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator.ts ***!
  3748. \*******************************************************************************************/
  3749. /*! no static exports found */
  3750. /***/ (function(module, exports, __webpack_require__) {
  3751. "use strict";
  3752. var HexadecimalIdentifierNamesGenerator_1;
  3753. Object.defineProperty(exports, "__esModule", { value: true });
  3754. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  3755. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  3756. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  3757. const AbstractIdentifierNamesGenerator_1 = __webpack_require__(/*! ./AbstractIdentifierNamesGenerator */ "./src/generators/identifier-names-generators/AbstractIdentifierNamesGenerator.ts");
  3758. const NumberUtils_1 = __webpack_require__(/*! ../../utils/NumberUtils */ "./src/utils/NumberUtils.ts");
  3759. const Utils_1 = __webpack_require__(/*! ../../utils/Utils */ "./src/utils/Utils.ts");
  3760. let HexadecimalIdentifierNamesGenerator = HexadecimalIdentifierNamesGenerator_1 = class HexadecimalIdentifierNamesGenerator extends AbstractIdentifierNamesGenerator_1.AbstractIdentifierNamesGenerator {
  3761. constructor(randomGenerator, options) {
  3762. super(randomGenerator, options);
  3763. this.randomVariableNameSet = new Set();
  3764. }
  3765. generate(nameLength) {
  3766. const rangeMinInteger = 10000;
  3767. const rangeMaxInteger = 99999999;
  3768. const randomInteger = this.randomGenerator.getRandomInteger(rangeMinInteger, rangeMaxInteger);
  3769. const hexadecimalNumber = NumberUtils_1.NumberUtils.toHex(randomInteger);
  3770. const prefixLength = Utils_1.Utils.hexadecimalPrefix.length + 1;
  3771. const baseNameLength = nameLength
  3772. ? nameLength - prefixLength
  3773. : HexadecimalIdentifierNamesGenerator_1.baseIdentifierNameLength;
  3774. const baseIdentifierName = hexadecimalNumber.substr(0, baseNameLength);
  3775. const identifierName = `_${Utils_1.Utils.hexadecimalPrefix}${baseIdentifierName}`;
  3776. if (this.randomVariableNameSet.has(identifierName)) {
  3777. return this.generate(nameLength);
  3778. }
  3779. this.randomVariableNameSet.add(identifierName);
  3780. return identifierName;
  3781. }
  3782. generateWithPrefix(nameLength) {
  3783. const identifierName = this.generate(nameLength);
  3784. return `${this.options.identifiersPrefix}${identifierName}`.replace('__', '_');
  3785. }
  3786. };
  3787. HexadecimalIdentifierNamesGenerator.baseIdentifierNameLength = 6;
  3788. HexadecimalIdentifierNamesGenerator = HexadecimalIdentifierNamesGenerator_1 = tslib_1.__decorate([
  3789. inversify_1.injectable(),
  3790. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  3791. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  3792. tslib_1.__metadata("design:paramtypes", [Object, Object])
  3793. ], HexadecimalIdentifierNamesGenerator);
  3794. exports.HexadecimalIdentifierNamesGenerator = HexadecimalIdentifierNamesGenerator;
  3795. /***/ }),
  3796. /***/ "./src/generators/identifier-names-generators/MangledIdentifierNamesGenerator.ts":
  3797. /*!***************************************************************************************!*\
  3798. !*** ./src/generators/identifier-names-generators/MangledIdentifierNamesGenerator.ts ***!
  3799. \***************************************************************************************/
  3800. /*! no static exports found */
  3801. /***/ (function(module, exports, __webpack_require__) {
  3802. "use strict";
  3803. var MangledIdentifierNamesGenerator_1;
  3804. Object.defineProperty(exports, "__esModule", { value: true });
  3805. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  3806. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  3807. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  3808. const AbstractIdentifierNamesGenerator_1 = __webpack_require__(/*! ./AbstractIdentifierNamesGenerator */ "./src/generators/identifier-names-generators/AbstractIdentifierNamesGenerator.ts");
  3809. let MangledIdentifierNamesGenerator = MangledIdentifierNamesGenerator_1 = class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGenerator_1.AbstractIdentifierNamesGenerator {
  3810. constructor(randomGenerator, options) {
  3811. super(randomGenerator, options);
  3812. this.previousMangledName = MangledIdentifierNamesGenerator_1.initMangledNameCharacter;
  3813. }
  3814. generate(nameLength) {
  3815. const identifierName = this.generateNewMangledName(this.previousMangledName);
  3816. this.previousMangledName = identifierName;
  3817. return identifierName;
  3818. }
  3819. generateWithPrefix(nameLength) {
  3820. const prefix = this.options.identifiersPrefix ?
  3821. `${this.options.identifiersPrefix}_`
  3822. : '';
  3823. const identifierName = this.generate(nameLength);
  3824. return `${prefix}${identifierName}`;
  3825. }
  3826. isValidIdentifierName(mangledName) {
  3827. return super.isValidIdentifierName(mangledName)
  3828. && !MangledIdentifierNamesGenerator_1.reservedNames.includes(mangledName);
  3829. }
  3830. generateNewMangledName(previousMangledName) {
  3831. const generateNewMangledName = (name) => {
  3832. const nameSequence = MangledIdentifierNamesGenerator_1.nameSequence;
  3833. const nameLength = name.length;
  3834. const zeroSequence = (num) => {
  3835. return '0'.repeat(num);
  3836. };
  3837. let index = nameLength - 1;
  3838. do {
  3839. const character = name.charAt(index);
  3840. const indexInSequence = nameSequence.indexOf(character);
  3841. const lastNameSequenceIndex = nameSequence.length - 1;
  3842. if (indexInSequence !== lastNameSequenceIndex) {
  3843. const previousNamePart = name.substring(0, index);
  3844. const nextCharacter = nameSequence[indexInSequence + 1];
  3845. const zeroSequenceLength = nameLength - (index + 1);
  3846. const zeroSequenceCharacters = zeroSequence(zeroSequenceLength);
  3847. return previousNamePart + nextCharacter + zeroSequenceCharacters;
  3848. }
  3849. --index;
  3850. } while (index >= 0);
  3851. return `a${zeroSequence(nameLength)}`;
  3852. };
  3853. let newMangledName = generateNewMangledName(previousMangledName);
  3854. if (!this.isValidIdentifierName(newMangledName)) {
  3855. newMangledName = this.generateNewMangledName(newMangledName);
  3856. }
  3857. return newMangledName;
  3858. }
  3859. };
  3860. MangledIdentifierNamesGenerator.initMangledNameCharacter = '9';
  3861. MangledIdentifierNamesGenerator.nameSequence = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
  3862. MangledIdentifierNamesGenerator.reservedNames = [
  3863. 'byte', 'case', 'char', 'do', 'else', 'enum', 'eval', 'for', 'goto',
  3864. 'if', 'in', 'int', 'let', 'long', 'new', 'null', 'this', 'true', 'try',
  3865. 'var', 'void', 'with'
  3866. ];
  3867. MangledIdentifierNamesGenerator = MangledIdentifierNamesGenerator_1 = tslib_1.__decorate([
  3868. inversify_1.injectable(),
  3869. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  3870. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  3871. tslib_1.__metadata("design:paramtypes", [Object, Object])
  3872. ], MangledIdentifierNamesGenerator);
  3873. exports.MangledIdentifierNamesGenerator = MangledIdentifierNamesGenerator;
  3874. /***/ }),
  3875. /***/ "./src/logger/Logger.ts":
  3876. /*!******************************!*\
  3877. !*** ./src/logger/Logger.ts ***!
  3878. \******************************/
  3879. /*! no static exports found */
  3880. /***/ (function(module, exports, __webpack_require__) {
  3881. "use strict";
  3882. var Logger_1;
  3883. Object.defineProperty(exports, "__esModule", { value: true });
  3884. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  3885. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  3886. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  3887. const chalk_1 = tslib_1.__importDefault(__webpack_require__(/*! chalk */ "chalk"));
  3888. const LoggingPrefix_1 = __webpack_require__(/*! ../enums/logger/LoggingPrefix */ "./src/enums/logger/LoggingPrefix.ts");
  3889. let Logger = Logger_1 = class Logger {
  3890. constructor(options) {
  3891. this.options = options;
  3892. }
  3893. static log(loggingLevelColor, loggingPrefix, loggingMessage, value) {
  3894. const processedMessage = loggingLevelColor(`\n${loggingPrefix} ${loggingMessage}`);
  3895. console.log(processedMessage, value || '');
  3896. }
  3897. info(loggingMessage, value) {
  3898. if (!this.options.log) {
  3899. return;
  3900. }
  3901. Logger_1.log(Logger_1.colorInfo, LoggingPrefix_1.LoggingPrefix.Base, loggingMessage, value);
  3902. }
  3903. success(loggingMessage, value) {
  3904. if (!this.options.log) {
  3905. return;
  3906. }
  3907. Logger_1.log(Logger_1.colorSuccess, LoggingPrefix_1.LoggingPrefix.Base, loggingMessage, value);
  3908. }
  3909. warn(loggingMessage, value) {
  3910. if (!this.options.log) {
  3911. return;
  3912. }
  3913. Logger_1.log(Logger_1.colorWarn, LoggingPrefix_1.LoggingPrefix.Base, loggingMessage, value);
  3914. }
  3915. };
  3916. Logger.colorInfo = chalk_1.default.cyan;
  3917. Logger.colorSuccess = chalk_1.default.green;
  3918. Logger.colorWarn = chalk_1.default.yellow;
  3919. Logger = Logger_1 = tslib_1.__decorate([
  3920. inversify_1.injectable(),
  3921. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  3922. tslib_1.__metadata("design:paramtypes", [Object])
  3923. ], Logger);
  3924. exports.Logger = Logger;
  3925. /***/ }),
  3926. /***/ "./src/node-transformers/AbstractNodeTransformer.ts":
  3927. /*!**********************************************************!*\
  3928. !*** ./src/node-transformers/AbstractNodeTransformer.ts ***!
  3929. \**********************************************************/
  3930. /*! no static exports found */
  3931. /***/ (function(module, exports, __webpack_require__) {
  3932. "use strict";
  3933. Object.defineProperty(exports, "__esModule", { value: true });
  3934. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  3935. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  3936. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  3937. let AbstractNodeTransformer = class AbstractNodeTransformer {
  3938. constructor(randomGenerator, options) {
  3939. this.randomGenerator = randomGenerator;
  3940. this.options = options;
  3941. }
  3942. };
  3943. AbstractNodeTransformer = tslib_1.__decorate([
  3944. inversify_1.injectable(),
  3945. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  3946. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  3947. tslib_1.__metadata("design:paramtypes", [Object, Object])
  3948. ], AbstractNodeTransformer);
  3949. exports.AbstractNodeTransformer = AbstractNodeTransformer;
  3950. /***/ }),
  3951. /***/ "./src/node-transformers/TransformersRunner.ts":
  3952. /*!*****************************************************!*\
  3953. !*** ./src/node-transformers/TransformersRunner.ts ***!
  3954. \*****************************************************/
  3955. /*! no static exports found */
  3956. /***/ (function(module, exports, __webpack_require__) {
  3957. "use strict";
  3958. Object.defineProperty(exports, "__esModule", { value: true });
  3959. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  3960. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  3961. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  3962. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  3963. const VisitorDirection_1 = __webpack_require__(/*! ../enums/node-transformers/VisitorDirection */ "./src/enums/node-transformers/VisitorDirection.ts");
  3964. const NodeGuards_1 = __webpack_require__(/*! ../node/NodeGuards */ "./src/node/NodeGuards.ts");
  3965. const NodeMetadata_1 = __webpack_require__(/*! ../node/NodeMetadata */ "./src/node/NodeMetadata.ts");
  3966. let TransformersRunner = class TransformersRunner {
  3967. constructor(nodeTransformerFactory, nodeTransformerNamesGroupsBuilder) {
  3968. this.cachedNodeTransformersData = new Map();
  3969. this.nodeTransformerFactory = nodeTransformerFactory;
  3970. this.nodeTransformerNamesGroupsBuilder = nodeTransformerNamesGroupsBuilder;
  3971. }
  3972. transform(astTree, nodeTransformerNames, transformationStage) {
  3973. if (!nodeTransformerNames.length) {
  3974. return astTree;
  3975. }
  3976. let normalizedNodeTransformers;
  3977. let nodeTransformerNamesGroups;
  3978. if (!this.cachedNodeTransformersData.has(nodeTransformerNames)) {
  3979. normalizedNodeTransformers = this.buildNormalizedNodeTransformers(nodeTransformerNames);
  3980. nodeTransformerNamesGroups = this.nodeTransformerNamesGroupsBuilder.build(normalizedNodeTransformers);
  3981. this.cachedNodeTransformersData.set(nodeTransformerNames, [normalizedNodeTransformers, nodeTransformerNamesGroups]);
  3982. }
  3983. else {
  3984. [
  3985. normalizedNodeTransformers,
  3986. nodeTransformerNamesGroups
  3987. ] = this.cachedNodeTransformersData.get(nodeTransformerNames);
  3988. }
  3989. for (const nodeTransformerNamesGroup of nodeTransformerNamesGroups) {
  3990. const enterVisitors = [];
  3991. const leaveVisitors = [];
  3992. for (const nodeTransformerName of nodeTransformerNamesGroup) {
  3993. const nodeTransformer = normalizedNodeTransformers[nodeTransformerName];
  3994. const visitor = nodeTransformer.getVisitor(transformationStage);
  3995. if (!visitor) {
  3996. continue;
  3997. }
  3998. if (visitor.enter) {
  3999. enterVisitors.push({ enter: visitor.enter });
  4000. }
  4001. if (visitor.leave) {
  4002. leaveVisitors.push({ leave: visitor.leave });
  4003. }
  4004. }
  4005. if (!enterVisitors.length && !leaveVisitors.length) {
  4006. continue;
  4007. }
  4008. estraverse.replace(astTree, {
  4009. enter: this.mergeVisitorsForDirection(enterVisitors, VisitorDirection_1.VisitorDirection.Enter),
  4010. leave: this.mergeVisitorsForDirection(leaveVisitors, VisitorDirection_1.VisitorDirection.Leave)
  4011. });
  4012. }
  4013. return astTree;
  4014. }
  4015. buildNormalizedNodeTransformers(nodeTransformerNames) {
  4016. return nodeTransformerNames
  4017. .reduce((acc, nodeTransformerName) => (Object.assign(Object.assign({}, acc), { [nodeTransformerName]: this.nodeTransformerFactory(nodeTransformerName) })), {});
  4018. }
  4019. mergeVisitorsForDirection(visitors, direction) {
  4020. const visitorsLength = visitors.length;
  4021. if (!visitorsLength) {
  4022. return (node, parentNode) => node;
  4023. }
  4024. return (node, parentNode) => {
  4025. if (NodeMetadata_1.NodeMetadata.isIgnoredNode(node)) {
  4026. return estraverse.VisitorOption.Skip;
  4027. }
  4028. for (let i = 0; i < visitorsLength; i++) {
  4029. const visitorFunction = visitors[i][direction];
  4030. if (!visitorFunction) {
  4031. continue;
  4032. }
  4033. const visitorResult = visitorFunction(node, parentNode);
  4034. if (!visitorResult || !NodeGuards_1.NodeGuards.isNode(visitorResult)) {
  4035. continue;
  4036. }
  4037. node = visitorResult;
  4038. }
  4039. return node;
  4040. };
  4041. }
  4042. };
  4043. TransformersRunner = tslib_1.__decorate([
  4044. inversify_1.injectable(),
  4045. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeTransformer)),
  4046. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformerNamesGroupsBuilder)),
  4047. tslib_1.__metadata("design:paramtypes", [Function, Object])
  4048. ], TransformersRunner);
  4049. exports.TransformersRunner = TransformersRunner;
  4050. /***/ }),
  4051. /***/ "./src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts":
  4052. /*!*************************************************************************************************!*\
  4053. !*** ./src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts ***!
  4054. \*************************************************************************************************/
  4055. /*! no static exports found */
  4056. /***/ (function(module, exports, __webpack_require__) {
  4057. "use strict";
  4058. var BlockStatementControlFlowTransformer_1;
  4059. Object.defineProperty(exports, "__esModule", { value: true });
  4060. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4061. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4062. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4063. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  4064. const ControlFlowCustomNode_1 = __webpack_require__(/*! ../../enums/custom-nodes/ControlFlowCustomNode */ "./src/enums/custom-nodes/ControlFlowCustomNode.ts");
  4065. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  4066. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  4067. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  4068. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  4069. let BlockStatementControlFlowTransformer = BlockStatementControlFlowTransformer_1 = class BlockStatementControlFlowTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  4070. constructor(controlFlowCustomNodeFactory, arrayUtils, randomGenerator, options) {
  4071. super(randomGenerator, options);
  4072. this.controlFlowCustomNodeFactory = controlFlowCustomNodeFactory;
  4073. this.arrayUtils = arrayUtils;
  4074. }
  4075. static isProhibitedStatementNode(node) {
  4076. const isBreakOrContinueStatement = NodeGuards_1.NodeGuards.isBreakStatementNode(node)
  4077. || NodeGuards_1.NodeGuards.isContinueStatementNode(node);
  4078. const isVariableDeclarationWithLetOrConstKind = NodeGuards_1.NodeGuards.isVariableDeclarationNode(node)
  4079. && (node.kind === 'const' || node.kind === 'let');
  4080. const isClassDeclaration = NodeGuards_1.NodeGuards.isClassDeclarationNode(node);
  4081. return NodeGuards_1.NodeGuards.isFunctionDeclarationNode(node)
  4082. || isBreakOrContinueStatement
  4083. || isVariableDeclarationWithLetOrConstKind
  4084. || isClassDeclaration;
  4085. }
  4086. static canTransformBlockStatementNode(blockStatementNode) {
  4087. let canTransform = true;
  4088. estraverse.traverse(blockStatementNode, {
  4089. enter: (node) => {
  4090. if (NodeGuards_1.NodeGuards.isWhileStatementNode(node)) {
  4091. return estraverse.VisitorOption.Skip;
  4092. }
  4093. if (BlockStatementControlFlowTransformer_1.isProhibitedStatementNode(node)) {
  4094. canTransform = false;
  4095. }
  4096. }
  4097. });
  4098. if (blockStatementNode.body.length <= 4) {
  4099. canTransform = false;
  4100. }
  4101. return canTransform;
  4102. }
  4103. getVisitor(transformationStage) {
  4104. switch (transformationStage) {
  4105. case TransformationStage_1.TransformationStage.ControlFlowFlattening:
  4106. return {
  4107. leave: (node, parentNode) => {
  4108. if (parentNode && NodeGuards_1.NodeGuards.isBlockStatementNode(node)) {
  4109. return this.transformNode(node, parentNode);
  4110. }
  4111. }
  4112. };
  4113. default:
  4114. return null;
  4115. }
  4116. }
  4117. transformNode(blockStatementNode, parentNode) {
  4118. if (this.randomGenerator.getMathRandom() > this.options.controlFlowFlatteningThreshold ||
  4119. !BlockStatementControlFlowTransformer_1.canTransformBlockStatementNode(blockStatementNode)) {
  4120. return blockStatementNode;
  4121. }
  4122. const blockStatementBody = blockStatementNode.body;
  4123. const originalKeys = this.arrayUtils.createWithRange(blockStatementBody.length);
  4124. const shuffledKeys = this.arrayUtils.shuffle(originalKeys);
  4125. const originalKeysIndexesInShuffledArray = originalKeys.map((key) => shuffledKeys.indexOf(key));
  4126. const blockStatementControlFlowFlatteningCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.BlockStatementControlFlowFlatteningNode);
  4127. blockStatementControlFlowFlatteningCustomNode.initialize(blockStatementBody, shuffledKeys, originalKeysIndexesInShuffledArray);
  4128. const newBlockStatementNode = blockStatementControlFlowFlatteningCustomNode.getNode()[0];
  4129. NodeUtils_1.NodeUtils.parentizeNode(newBlockStatementNode, parentNode);
  4130. return newBlockStatementNode;
  4131. }
  4132. };
  4133. BlockStatementControlFlowTransformer = BlockStatementControlFlowTransformer_1 = tslib_1.__decorate([
  4134. inversify_1.injectable(),
  4135. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),
  4136. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),
  4137. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4138. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4139. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  4140. ], BlockStatementControlFlowTransformer);
  4141. exports.BlockStatementControlFlowTransformer = BlockStatementControlFlowTransformer;
  4142. /***/ }),
  4143. /***/ "./src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts":
  4144. /*!*******************************************************************************************!*\
  4145. !*** ./src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts ***!
  4146. \*******************************************************************************************/
  4147. /*! no static exports found */
  4148. /***/ (function(module, exports, __webpack_require__) {
  4149. "use strict";
  4150. var FunctionControlFlowTransformer_1;
  4151. Object.defineProperty(exports, "__esModule", { value: true });
  4152. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4153. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4154. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4155. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  4156. const ControlFlowCustomNode_1 = __webpack_require__(/*! ../../enums/custom-nodes/ControlFlowCustomNode */ "./src/enums/custom-nodes/ControlFlowCustomNode.ts");
  4157. const ControlFlowReplacer_1 = __webpack_require__(/*! ../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/ControlFlowReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/ControlFlowReplacer.ts");
  4158. const NodeType_1 = __webpack_require__(/*! ../../enums/node/NodeType */ "./src/enums/node/NodeType.ts");
  4159. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  4160. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  4161. const NodeAppender_1 = __webpack_require__(/*! ../../node/NodeAppender */ "./src/node/NodeAppender.ts");
  4162. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  4163. const NodeMetadata_1 = __webpack_require__(/*! ../../node/NodeMetadata */ "./src/node/NodeMetadata.ts");
  4164. const NodeStatementUtils_1 = __webpack_require__(/*! ../../node/NodeStatementUtils */ "./src/node/NodeStatementUtils.ts");
  4165. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  4166. let FunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = class FunctionControlFlowTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  4167. constructor(controlFlowStorageFactory, controlFlowReplacerFactory, controlFlowCustomNodeFactory, randomGenerator, options) {
  4168. super(randomGenerator, options);
  4169. this.controlFlowData = new Map();
  4170. this.visitedFunctionNodes = new Set();
  4171. this.hostNodesWithControlFlowNode = new Set();
  4172. this.controlFlowStorageFactory = controlFlowStorageFactory;
  4173. this.controlFlowReplacerFactory = controlFlowReplacerFactory;
  4174. this.controlFlowCustomNodeFactory = controlFlowCustomNodeFactory;
  4175. }
  4176. getVisitor(transformationStage) {
  4177. switch (transformationStage) {
  4178. case TransformationStage_1.TransformationStage.ControlFlowFlattening:
  4179. return {
  4180. leave: (node, parentNode) => {
  4181. if (parentNode && (NodeGuards_1.NodeGuards.isFunctionDeclarationNode(node) ||
  4182. NodeGuards_1.NodeGuards.isFunctionExpressionNode(node) ||
  4183. NodeGuards_1.NodeGuards.isArrowFunctionExpressionNode(node))) {
  4184. return this.transformNode(node, parentNode);
  4185. }
  4186. }
  4187. };
  4188. default:
  4189. return null;
  4190. }
  4191. }
  4192. transformNode(functionNode, parentNode) {
  4193. this.visitedFunctionNodes.add(functionNode);
  4194. if (!NodeGuards_1.NodeGuards.isBlockStatementNode(functionNode.body)) {
  4195. return functionNode;
  4196. }
  4197. const hostNode = this.getHostNode(functionNode.body);
  4198. const controlFlowStorage = this.getControlFlowStorage(hostNode);
  4199. this.controlFlowData.set(hostNode, controlFlowStorage);
  4200. this.transformFunctionBody(functionNode.body, controlFlowStorage);
  4201. if (!controlFlowStorage.getLength()) {
  4202. return functionNode;
  4203. }
  4204. const controlFlowStorageCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.ControlFlowStorageNode);
  4205. controlFlowStorageCustomNode.initialize(controlFlowStorage);
  4206. NodeAppender_1.NodeAppender.prepend(hostNode, controlFlowStorageCustomNode.getNode());
  4207. this.hostNodesWithControlFlowNode.add(hostNode);
  4208. NodeUtils_1.NodeUtils.parentizeAst(functionNode);
  4209. return functionNode;
  4210. }
  4211. getControlFlowStorage(hostNode) {
  4212. const controlFlowStorage = this.controlFlowStorageFactory();
  4213. if (this.controlFlowData.has(hostNode)) {
  4214. if (this.hostNodesWithControlFlowNode.has(hostNode)) {
  4215. if (NodeGuards_1.NodeGuards.isSwitchCaseNode(hostNode)) {
  4216. hostNode.consequent.shift();
  4217. }
  4218. else {
  4219. hostNode.body.shift();
  4220. }
  4221. }
  4222. const hostControlFlowStorage = this.controlFlowData.get(hostNode);
  4223. controlFlowStorage.mergeWith(hostControlFlowStorage, true);
  4224. }
  4225. return controlFlowStorage;
  4226. }
  4227. getHostNode(functionNodeBody) {
  4228. const blockScopesOfNode = NodeStatementUtils_1.NodeStatementUtils.getParentNodesWithStatements(functionNodeBody);
  4229. if (blockScopesOfNode.length === 1) {
  4230. return functionNodeBody;
  4231. }
  4232. else {
  4233. blockScopesOfNode.pop();
  4234. }
  4235. if (blockScopesOfNode.length > FunctionControlFlowTransformer_1.hostNodeSearchMinDepth) {
  4236. blockScopesOfNode.splice(0, FunctionControlFlowTransformer_1.hostNodeSearchMinDepth);
  4237. }
  4238. if (blockScopesOfNode.length > FunctionControlFlowTransformer_1.hostNodeSearchMaxDepth) {
  4239. blockScopesOfNode.length = FunctionControlFlowTransformer_1.hostNodeSearchMaxDepth;
  4240. }
  4241. return this.randomGenerator.getRandomGenerator().pickone(blockScopesOfNode);
  4242. }
  4243. isVisitedFunctionNode(node) {
  4244. return (NodeGuards_1.NodeGuards.isFunctionDeclarationNode(node) ||
  4245. NodeGuards_1.NodeGuards.isFunctionExpressionNode(node) ||
  4246. NodeGuards_1.NodeGuards.isArrowFunctionExpressionNode(node)) && this.visitedFunctionNodes.has(node);
  4247. }
  4248. transformFunctionBody(functionNodeBody, controlFlowStorage) {
  4249. estraverse.replace(functionNodeBody, {
  4250. enter: (node, parentNode) => {
  4251. if (NodeMetadata_1.NodeMetadata.isIgnoredNode(node)) {
  4252. return estraverse.VisitorOption.Skip;
  4253. }
  4254. if (this.isVisitedFunctionNode(node) || !parentNode) {
  4255. return estraverse.VisitorOption.Skip;
  4256. }
  4257. if (!FunctionControlFlowTransformer_1.controlFlowReplacersMap.has(node.type)) {
  4258. return node;
  4259. }
  4260. if (this.randomGenerator.getMathRandom() > this.options.controlFlowFlatteningThreshold) {
  4261. return node;
  4262. }
  4263. const controlFlowReplacerName = FunctionControlFlowTransformer_1
  4264. .controlFlowReplacersMap.get(node.type);
  4265. if (controlFlowReplacerName === undefined) {
  4266. return node;
  4267. }
  4268. return Object.assign(Object.assign({}, this.controlFlowReplacerFactory(controlFlowReplacerName).replace(node, parentNode, controlFlowStorage)), { parentNode });
  4269. }
  4270. });
  4271. }
  4272. };
  4273. FunctionControlFlowTransformer.controlFlowReplacersMap = new Map([
  4274. [NodeType_1.NodeType.BinaryExpression, ControlFlowReplacer_1.ControlFlowReplacer.BinaryExpressionControlFlowReplacer],
  4275. [NodeType_1.NodeType.CallExpression, ControlFlowReplacer_1.ControlFlowReplacer.CallExpressionControlFlowReplacer],
  4276. [NodeType_1.NodeType.LogicalExpression, ControlFlowReplacer_1.ControlFlowReplacer.LogicalExpressionControlFlowReplacer],
  4277. [NodeType_1.NodeType.Literal, ControlFlowReplacer_1.ControlFlowReplacer.StringLiteralControlFlowReplacer]
  4278. ]);
  4279. FunctionControlFlowTransformer.hostNodeSearchMinDepth = 0;
  4280. FunctionControlFlowTransformer.hostNodeSearchMaxDepth = 2;
  4281. FunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = tslib_1.__decorate([
  4282. inversify_1.injectable(),
  4283. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__TControlFlowStorage)),
  4284. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowReplacer)),
  4285. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),
  4286. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4287. tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4288. tslib_1.__metadata("design:paramtypes", [Function, Function, Function, Object, Object])
  4289. ], FunctionControlFlowTransformer);
  4290. exports.FunctionControlFlowTransformer = FunctionControlFlowTransformer;
  4291. /***/ }),
  4292. /***/ "./src/node-transformers/control-flow-transformers/control-flow-replacers/AbstractControlFlowReplacer.ts":
  4293. /*!***************************************************************************************************************!*\
  4294. !*** ./src/node-transformers/control-flow-transformers/control-flow-replacers/AbstractControlFlowReplacer.ts ***!
  4295. \***************************************************************************************************************/
  4296. /*! no static exports found */
  4297. /***/ (function(module, exports, __webpack_require__) {
  4298. "use strict";
  4299. var AbstractControlFlowReplacer_1;
  4300. Object.defineProperty(exports, "__esModule", { value: true });
  4301. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4302. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4303. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4304. let AbstractControlFlowReplacer = AbstractControlFlowReplacer_1 = class AbstractControlFlowReplacer {
  4305. constructor(controlFlowCustomNodeFactory, randomGenerator, options) {
  4306. this.replacerDataByControlFlowStorageId = new Map();
  4307. this.controlFlowCustomNodeFactory = controlFlowCustomNodeFactory;
  4308. this.randomGenerator = randomGenerator;
  4309. this.options = options;
  4310. }
  4311. static getStorageKeysByIdForCurrentStorage(identifierDataByControlFlowStorageId, controlFlowStorageId) {
  4312. let storageKeysById;
  4313. if (identifierDataByControlFlowStorageId.has(controlFlowStorageId)) {
  4314. storageKeysById = identifierDataByControlFlowStorageId.get(controlFlowStorageId);
  4315. }
  4316. else {
  4317. storageKeysById = new Map();
  4318. }
  4319. return storageKeysById;
  4320. }
  4321. insertCustomNodeToControlFlowStorage(customNode, controlFlowStorage, replacerId, usingExistingIdentifierChance) {
  4322. const controlFlowStorageId = controlFlowStorage.getStorageId();
  4323. const storageKeysById = AbstractControlFlowReplacer_1
  4324. .getStorageKeysByIdForCurrentStorage(this.replacerDataByControlFlowStorageId, controlFlowStorageId);
  4325. const storageKeysForCurrentId = storageKeysById.get(replacerId);
  4326. if (this.randomGenerator.getMathRandom() < usingExistingIdentifierChance &&
  4327. storageKeysForCurrentId &&
  4328. storageKeysForCurrentId.length) {
  4329. return this.randomGenerator.getRandomGenerator().pickone(storageKeysForCurrentId);
  4330. }
  4331. const generateStorageKey = (length) => {
  4332. const key = this.randomGenerator.getRandomString(length);
  4333. if (controlFlowStorage.getStorage().has(key)) {
  4334. return generateStorageKey(length);
  4335. }
  4336. return key;
  4337. };
  4338. const storageKey = generateStorageKey(5);
  4339. storageKeysById.set(replacerId, [storageKey]);
  4340. this.replacerDataByControlFlowStorageId.set(controlFlowStorageId, storageKeysById);
  4341. controlFlowStorage.set(storageKey, customNode);
  4342. return storageKey;
  4343. }
  4344. };
  4345. AbstractControlFlowReplacer = AbstractControlFlowReplacer_1 = tslib_1.__decorate([
  4346. inversify_1.injectable(),
  4347. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),
  4348. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4349. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4350. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  4351. ], AbstractControlFlowReplacer);
  4352. exports.AbstractControlFlowReplacer = AbstractControlFlowReplacer;
  4353. /***/ }),
  4354. /***/ "./src/node-transformers/control-flow-transformers/control-flow-replacers/BinaryExpressionControlFlowReplacer.ts":
  4355. /*!***********************************************************************************************************************!*\
  4356. !*** ./src/node-transformers/control-flow-transformers/control-flow-replacers/BinaryExpressionControlFlowReplacer.ts ***!
  4357. \***********************************************************************************************************************/
  4358. /*! no static exports found */
  4359. /***/ (function(module, exports, __webpack_require__) {
  4360. "use strict";
  4361. var BinaryExpressionControlFlowReplacer_1;
  4362. Object.defineProperty(exports, "__esModule", { value: true });
  4363. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4364. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4365. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4366. const ControlFlowCustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/ControlFlowCustomNode */ "./src/enums/custom-nodes/ControlFlowCustomNode.ts");
  4367. const ExpressionWithOperatorControlFlowReplacer_1 = __webpack_require__(/*! ./ExpressionWithOperatorControlFlowReplacer */ "./src/node-transformers/control-flow-transformers/control-flow-replacers/ExpressionWithOperatorControlFlowReplacer.ts");
  4368. let BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = class BinaryExpressionControlFlowReplacer extends ExpressionWithOperatorControlFlowReplacer_1.ExpressionWithOperatorControlFlowReplacer {
  4369. constructor(controlFlowCustomNodeFactory, randomGenerator, options) {
  4370. super(controlFlowCustomNodeFactory, randomGenerator, options);
  4371. }
  4372. replace(binaryExpressionNode, parentNode, controlFlowStorage) {
  4373. const replacerId = binaryExpressionNode.operator;
  4374. const binaryExpressionFunctionCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.BinaryExpressionFunctionNode);
  4375. binaryExpressionFunctionCustomNode.initialize(replacerId);
  4376. const storageKey = this.insertCustomNodeToControlFlowStorage(binaryExpressionFunctionCustomNode, controlFlowStorage, replacerId, BinaryExpressionControlFlowReplacer_1.usingExistingIdentifierChance);
  4377. return this.getControlFlowStorageCallNode(controlFlowStorage.getStorageId(), storageKey, binaryExpressionNode.left, binaryExpressionNode.right);
  4378. }
  4379. };
  4380. BinaryExpressionControlFlowReplacer.usingExistingIdentifierChance = 0.5;
  4381. BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = tslib_1.__decorate([
  4382. inversify_1.injectable(),
  4383. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),
  4384. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4385. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4386. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  4387. ], BinaryExpressionControlFlowReplacer);
  4388. exports.BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer;
  4389. /***/ }),
  4390. /***/ "./src/node-transformers/control-flow-transformers/control-flow-replacers/CallExpressionControlFlowReplacer.ts":
  4391. /*!*********************************************************************************************************************!*\
  4392. !*** ./src/node-transformers/control-flow-transformers/control-flow-replacers/CallExpressionControlFlowReplacer.ts ***!
  4393. \*********************************************************************************************************************/
  4394. /*! no static exports found */
  4395. /***/ (function(module, exports, __webpack_require__) {
  4396. "use strict";
  4397. var CallExpressionControlFlowReplacer_1;
  4398. Object.defineProperty(exports, "__esModule", { value: true });
  4399. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4400. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4401. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4402. const ControlFlowCustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/ControlFlowCustomNode */ "./src/enums/custom-nodes/ControlFlowCustomNode.ts");
  4403. const AbstractControlFlowReplacer_1 = __webpack_require__(/*! ./AbstractControlFlowReplacer */ "./src/node-transformers/control-flow-transformers/control-flow-replacers/AbstractControlFlowReplacer.ts");
  4404. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  4405. let CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer_1 = class CallExpressionControlFlowReplacer extends AbstractControlFlowReplacer_1.AbstractControlFlowReplacer {
  4406. constructor(controlFlowCustomNodeFactory, randomGenerator, options) {
  4407. super(controlFlowCustomNodeFactory, randomGenerator, options);
  4408. }
  4409. replace(callExpressionNode, parentNode, controlFlowStorage) {
  4410. const callee = callExpressionNode.callee;
  4411. if (!NodeGuards_1.NodeGuards.isIdentifierNode(callee)) {
  4412. return callExpressionNode;
  4413. }
  4414. const replacerId = String(callExpressionNode.arguments.length);
  4415. const callExpressionFunctionCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.CallExpressionFunctionNode);
  4416. const expressionArguments = callExpressionNode.arguments;
  4417. callExpressionFunctionCustomNode.initialize(expressionArguments);
  4418. const storageKey = this.insertCustomNodeToControlFlowStorage(callExpressionFunctionCustomNode, controlFlowStorage, replacerId, CallExpressionControlFlowReplacer_1.usingExistingIdentifierChance);
  4419. return this.getControlFlowStorageCallNode(controlFlowStorage.getStorageId(), storageKey, callee, expressionArguments);
  4420. }
  4421. getControlFlowStorageCallNode(controlFlowStorageId, storageKey, callee, expressionArguments) {
  4422. const controlFlowStorageCallCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.CallExpressionControlFlowStorageCallNode);
  4423. controlFlowStorageCallCustomNode.initialize(controlFlowStorageId, storageKey, callee, expressionArguments);
  4424. const statementNode = controlFlowStorageCallCustomNode.getNode()[0];
  4425. if (!statementNode || !NodeGuards_1.NodeGuards.isExpressionStatementNode(statementNode)) {
  4426. throw new Error(`\`controlFlowStorageCallCustomNode.getNode()[0]\` should returns array with \`ExpressionStatement\` node`);
  4427. }
  4428. return statementNode.expression;
  4429. }
  4430. };
  4431. CallExpressionControlFlowReplacer.usingExistingIdentifierChance = 0.5;
  4432. CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer_1 = tslib_1.__decorate([
  4433. inversify_1.injectable(),
  4434. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),
  4435. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4436. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4437. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  4438. ], CallExpressionControlFlowReplacer);
  4439. exports.CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer;
  4440. /***/ }),
  4441. /***/ "./src/node-transformers/control-flow-transformers/control-flow-replacers/ExpressionWithOperatorControlFlowReplacer.ts":
  4442. /*!*****************************************************************************************************************************!*\
  4443. !*** ./src/node-transformers/control-flow-transformers/control-flow-replacers/ExpressionWithOperatorControlFlowReplacer.ts ***!
  4444. \*****************************************************************************************************************************/
  4445. /*! no static exports found */
  4446. /***/ (function(module, exports, __webpack_require__) {
  4447. "use strict";
  4448. Object.defineProperty(exports, "__esModule", { value: true });
  4449. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4450. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4451. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4452. const ControlFlowCustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/ControlFlowCustomNode */ "./src/enums/custom-nodes/ControlFlowCustomNode.ts");
  4453. const AbstractControlFlowReplacer_1 = __webpack_require__(/*! ./AbstractControlFlowReplacer */ "./src/node-transformers/control-flow-transformers/control-flow-replacers/AbstractControlFlowReplacer.ts");
  4454. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  4455. let ExpressionWithOperatorControlFlowReplacer = class ExpressionWithOperatorControlFlowReplacer extends AbstractControlFlowReplacer_1.AbstractControlFlowReplacer {
  4456. constructor(controlFlowCustomNodeFactory, randomGenerator, options) {
  4457. super(controlFlowCustomNodeFactory, randomGenerator, options);
  4458. }
  4459. getControlFlowStorageCallNode(controlFlowStorageId, storageKey, leftExpression, rightExpression) {
  4460. const controlFlowStorageCallCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.ExpressionWithOperatorControlFlowStorageCallNode);
  4461. controlFlowStorageCallCustomNode.initialize(controlFlowStorageId, storageKey, leftExpression, rightExpression);
  4462. const statementNode = controlFlowStorageCallCustomNode.getNode()[0];
  4463. if (!statementNode || !NodeGuards_1.NodeGuards.isExpressionStatementNode(statementNode)) {
  4464. throw new Error(`\`controlFlowStorageCallCustomNode.getNode()[0]\` should returns array with \`ExpressionStatement\` node`);
  4465. }
  4466. return statementNode.expression;
  4467. }
  4468. };
  4469. ExpressionWithOperatorControlFlowReplacer = tslib_1.__decorate([
  4470. inversify_1.injectable(),
  4471. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),
  4472. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4473. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4474. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  4475. ], ExpressionWithOperatorControlFlowReplacer);
  4476. exports.ExpressionWithOperatorControlFlowReplacer = ExpressionWithOperatorControlFlowReplacer;
  4477. /***/ }),
  4478. /***/ "./src/node-transformers/control-flow-transformers/control-flow-replacers/LogicalExpressionControlFlowReplacer.ts":
  4479. /*!************************************************************************************************************************!*\
  4480. !*** ./src/node-transformers/control-flow-transformers/control-flow-replacers/LogicalExpressionControlFlowReplacer.ts ***!
  4481. \************************************************************************************************************************/
  4482. /*! no static exports found */
  4483. /***/ (function(module, exports, __webpack_require__) {
  4484. "use strict";
  4485. var LogicalExpressionControlFlowReplacer_1;
  4486. Object.defineProperty(exports, "__esModule", { value: true });
  4487. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4488. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4489. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4490. const ControlFlowCustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/ControlFlowCustomNode */ "./src/enums/custom-nodes/ControlFlowCustomNode.ts");
  4491. const ExpressionWithOperatorControlFlowReplacer_1 = __webpack_require__(/*! ./ExpressionWithOperatorControlFlowReplacer */ "./src/node-transformers/control-flow-transformers/control-flow-replacers/ExpressionWithOperatorControlFlowReplacer.ts");
  4492. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  4493. const NodeUtils_1 = __webpack_require__(/*! ../../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  4494. let LogicalExpressionControlFlowReplacer = LogicalExpressionControlFlowReplacer_1 = class LogicalExpressionControlFlowReplacer extends ExpressionWithOperatorControlFlowReplacer_1.ExpressionWithOperatorControlFlowReplacer {
  4495. constructor(controlFlowCustomNodeFactory, randomGenerator, options) {
  4496. super(controlFlowCustomNodeFactory, randomGenerator, options);
  4497. }
  4498. replace(logicalExpressionNode, parentNode, controlFlowStorage) {
  4499. if (this.checkForProhibitedExpressions(logicalExpressionNode.left, logicalExpressionNode.right)) {
  4500. return logicalExpressionNode;
  4501. }
  4502. const replacerId = logicalExpressionNode.operator;
  4503. const logicalExpressionFunctionCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.LogicalExpressionFunctionNode);
  4504. logicalExpressionFunctionCustomNode.initialize(replacerId);
  4505. const storageKey = this.insertCustomNodeToControlFlowStorage(logicalExpressionFunctionCustomNode, controlFlowStorage, replacerId, LogicalExpressionControlFlowReplacer_1.usingExistingIdentifierChance);
  4506. return this.getControlFlowStorageCallNode(controlFlowStorage.getStorageId(), storageKey, logicalExpressionNode.left, logicalExpressionNode.right);
  4507. }
  4508. checkForProhibitedExpressions(leftExpression, rightExpression) {
  4509. return [leftExpression, rightExpression].some((expressionNode) => {
  4510. let nodeForCheck;
  4511. if (!NodeGuards_1.NodeGuards.isUnaryExpressionNode(expressionNode)) {
  4512. nodeForCheck = expressionNode;
  4513. }
  4514. else {
  4515. nodeForCheck = NodeUtils_1.NodeUtils.getUnaryExpressionArgumentNode(expressionNode);
  4516. }
  4517. return !NodeGuards_1.NodeGuards.isLiteralNode(nodeForCheck) &&
  4518. !NodeGuards_1.NodeGuards.isIdentifierNode(nodeForCheck) &&
  4519. !NodeGuards_1.NodeGuards.isObjectExpressionNode(nodeForCheck) &&
  4520. !NodeGuards_1.NodeGuards.isExpressionStatementNode(nodeForCheck);
  4521. });
  4522. }
  4523. };
  4524. LogicalExpressionControlFlowReplacer.usingExistingIdentifierChance = 0.5;
  4525. LogicalExpressionControlFlowReplacer = LogicalExpressionControlFlowReplacer_1 = tslib_1.__decorate([
  4526. inversify_1.injectable(),
  4527. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),
  4528. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4529. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4530. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  4531. ], LogicalExpressionControlFlowReplacer);
  4532. exports.LogicalExpressionControlFlowReplacer = LogicalExpressionControlFlowReplacer;
  4533. /***/ }),
  4534. /***/ "./src/node-transformers/control-flow-transformers/control-flow-replacers/StringLiteralControlFlowReplacer.ts":
  4535. /*!********************************************************************************************************************!*\
  4536. !*** ./src/node-transformers/control-flow-transformers/control-flow-replacers/StringLiteralControlFlowReplacer.ts ***!
  4537. \********************************************************************************************************************/
  4538. /*! no static exports found */
  4539. /***/ (function(module, exports, __webpack_require__) {
  4540. "use strict";
  4541. var StringLiteralControlFlowReplacer_1;
  4542. Object.defineProperty(exports, "__esModule", { value: true });
  4543. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4544. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4545. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4546. const ControlFlowCustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/ControlFlowCustomNode */ "./src/enums/custom-nodes/ControlFlowCustomNode.ts");
  4547. const AbstractControlFlowReplacer_1 = __webpack_require__(/*! ./AbstractControlFlowReplacer */ "./src/node-transformers/control-flow-transformers/control-flow-replacers/AbstractControlFlowReplacer.ts");
  4548. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  4549. let StringLiteralControlFlowReplacer = StringLiteralControlFlowReplacer_1 = class StringLiteralControlFlowReplacer extends AbstractControlFlowReplacer_1.AbstractControlFlowReplacer {
  4550. constructor(controlFlowCustomNodeFactory, randomGenerator, options) {
  4551. super(controlFlowCustomNodeFactory, randomGenerator, options);
  4552. }
  4553. replace(literalNode, parentNode, controlFlowStorage) {
  4554. if (NodeGuards_1.NodeGuards.isPropertyNode(parentNode) && parentNode.key === literalNode) {
  4555. return literalNode;
  4556. }
  4557. if (typeof literalNode.value !== 'string' || literalNode.value.length < 3) {
  4558. return literalNode;
  4559. }
  4560. const replacerId = String(literalNode.value);
  4561. const literalFunctionCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.StringLiteralNode);
  4562. literalFunctionCustomNode.initialize(literalNode.value);
  4563. const storageKey = this.insertCustomNodeToControlFlowStorage(literalFunctionCustomNode, controlFlowStorage, replacerId, StringLiteralControlFlowReplacer_1.usingExistingIdentifierChance);
  4564. return this.getControlFlowStorageCallNode(controlFlowStorage.getStorageId(), storageKey);
  4565. }
  4566. getControlFlowStorageCallNode(controlFlowStorageId, storageKey) {
  4567. const controlFlowStorageCallCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.StringLiteralControlFlowStorageCallNode);
  4568. controlFlowStorageCallCustomNode.initialize(controlFlowStorageId, storageKey);
  4569. const statementNode = controlFlowStorageCallCustomNode.getNode()[0];
  4570. if (!statementNode || !NodeGuards_1.NodeGuards.isExpressionStatementNode(statementNode)) {
  4571. throw new Error(`\`controlFlowStorageCallCustomNode.getNode()[0]\` should returns array with \`ExpressionStatement\` node`);
  4572. }
  4573. return statementNode.expression;
  4574. }
  4575. };
  4576. StringLiteralControlFlowReplacer.usingExistingIdentifierChance = 1;
  4577. StringLiteralControlFlowReplacer = StringLiteralControlFlowReplacer_1 = tslib_1.__decorate([
  4578. inversify_1.injectable(),
  4579. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),
  4580. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4581. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4582. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  4583. ], StringLiteralControlFlowReplacer);
  4584. exports.StringLiteralControlFlowReplacer = StringLiteralControlFlowReplacer;
  4585. /***/ }),
  4586. /***/ "./src/node-transformers/converting-transformers/MemberExpressionTransformer.ts":
  4587. /*!**************************************************************************************!*\
  4588. !*** ./src/node-transformers/converting-transformers/MemberExpressionTransformer.ts ***!
  4589. \**************************************************************************************/
  4590. /*! no static exports found */
  4591. /***/ (function(module, exports, __webpack_require__) {
  4592. "use strict";
  4593. Object.defineProperty(exports, "__esModule", { value: true });
  4594. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4595. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4596. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4597. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  4598. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  4599. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  4600. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  4601. let MemberExpressionTransformer = class MemberExpressionTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  4602. constructor(randomGenerator, options) {
  4603. super(randomGenerator, options);
  4604. }
  4605. getVisitor(transformationStage) {
  4606. switch (transformationStage) {
  4607. case TransformationStage_1.TransformationStage.Converting:
  4608. return {
  4609. enter: (node, parentNode) => {
  4610. if (parentNode && NodeGuards_1.NodeGuards.isMemberExpressionNode(node)) {
  4611. return this.transformNode(node, parentNode);
  4612. }
  4613. }
  4614. };
  4615. default:
  4616. return null;
  4617. }
  4618. }
  4619. transformNode(memberExpressionNode, parentNode) {
  4620. if (NodeGuards_1.NodeGuards.isIdentifierNode(memberExpressionNode.property)) {
  4621. if (memberExpressionNode.computed) {
  4622. return memberExpressionNode;
  4623. }
  4624. memberExpressionNode.computed = true;
  4625. memberExpressionNode.property = NodeFactory_1.NodeFactory.literalNode(memberExpressionNode.property.name);
  4626. }
  4627. return memberExpressionNode;
  4628. }
  4629. };
  4630. MemberExpressionTransformer = tslib_1.__decorate([
  4631. inversify_1.injectable(),
  4632. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4633. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4634. tslib_1.__metadata("design:paramtypes", [Object, Object])
  4635. ], MemberExpressionTransformer);
  4636. exports.MemberExpressionTransformer = MemberExpressionTransformer;
  4637. /***/ }),
  4638. /***/ "./src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts":
  4639. /*!**************************************************************************************!*\
  4640. !*** ./src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts ***!
  4641. \**************************************************************************************/
  4642. /*! no static exports found */
  4643. /***/ (function(module, exports, __webpack_require__) {
  4644. "use strict";
  4645. var MethodDefinitionTransformer_1;
  4646. Object.defineProperty(exports, "__esModule", { value: true });
  4647. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4648. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4649. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4650. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  4651. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  4652. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  4653. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  4654. let MethodDefinitionTransformer = MethodDefinitionTransformer_1 = class MethodDefinitionTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  4655. constructor(randomGenerator, options) {
  4656. super(randomGenerator, options);
  4657. }
  4658. getVisitor(transformationStage) {
  4659. switch (transformationStage) {
  4660. case TransformationStage_1.TransformationStage.Converting:
  4661. return {
  4662. enter: (node, parentNode) => {
  4663. if (parentNode && NodeGuards_1.NodeGuards.isMethodDefinitionNode(node)) {
  4664. return this.transformNode(node, parentNode);
  4665. }
  4666. }
  4667. };
  4668. default:
  4669. return null;
  4670. }
  4671. }
  4672. transformNode(methodDefinitionNode, parentNode) {
  4673. if (NodeGuards_1.NodeGuards.isIdentifierNode(methodDefinitionNode.key) &&
  4674. !MethodDefinitionTransformer_1.ignoredNames.includes(methodDefinitionNode.key.name) &&
  4675. methodDefinitionNode.computed === false) {
  4676. methodDefinitionNode.computed = true;
  4677. methodDefinitionNode.key = NodeFactory_1.NodeFactory.literalNode(methodDefinitionNode.key.name);
  4678. }
  4679. return methodDefinitionNode;
  4680. }
  4681. };
  4682. MethodDefinitionTransformer.ignoredNames = ['constructor'];
  4683. MethodDefinitionTransformer = MethodDefinitionTransformer_1 = tslib_1.__decorate([
  4684. inversify_1.injectable(),
  4685. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4686. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4687. tslib_1.__metadata("design:paramtypes", [Object, Object])
  4688. ], MethodDefinitionTransformer);
  4689. exports.MethodDefinitionTransformer = MethodDefinitionTransformer;
  4690. /***/ }),
  4691. /***/ "./src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts":
  4692. /*!******************************************************************************************!*\
  4693. !*** ./src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts ***!
  4694. \******************************************************************************************/
  4695. /*! no static exports found */
  4696. /***/ (function(module, exports, __webpack_require__) {
  4697. "use strict";
  4698. var ObjectExpressionKeysTransformer_1;
  4699. Object.defineProperty(exports, "__esModule", { value: true });
  4700. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4701. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4702. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4703. const NodeType_1 = __webpack_require__(/*! ../../enums/node/NodeType */ "./src/enums/node/NodeType.ts");
  4704. const PropertiesExtractor_1 = __webpack_require__(/*! ../../enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractor */ "./src/enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractor.ts");
  4705. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  4706. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  4707. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  4708. let ObjectExpressionKeysTransformer = ObjectExpressionKeysTransformer_1 = class ObjectExpressionKeysTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  4709. constructor(propertiesExtractorFactory, randomGenerator, options) {
  4710. super(randomGenerator, options);
  4711. this.propertiesExtractorFactory = propertiesExtractorFactory;
  4712. }
  4713. getVisitor(transformationStage) {
  4714. if (!this.options.transformObjectKeys) {
  4715. return null;
  4716. }
  4717. if (transformationStage !== TransformationStage_1.TransformationStage.Converting) {
  4718. return null;
  4719. }
  4720. return {
  4721. enter: (node, parentNode) => {
  4722. if (parentNode
  4723. && NodeGuards_1.NodeGuards.isObjectExpressionNode(node)) {
  4724. return this.transformNode(node, parentNode);
  4725. }
  4726. },
  4727. leave: (node, parentNode) => {
  4728. if (parentNode
  4729. && NodeGuards_1.NodeGuards.isObjectExpressionNode(node)) {
  4730. return this.transformNodeWithBaseExtractor(node, parentNode);
  4731. }
  4732. }
  4733. };
  4734. }
  4735. transformNode(objectExpressionNode, parentNode) {
  4736. if (!objectExpressionNode.properties.length) {
  4737. return objectExpressionNode;
  4738. }
  4739. const propertiesExtractorName = ObjectExpressionKeysTransformer_1
  4740. .propertiesExtractorsMap
  4741. .get(parentNode.type);
  4742. if (!propertiesExtractorName) {
  4743. return objectExpressionNode;
  4744. }
  4745. const propertiesExtractor = this.propertiesExtractorFactory(propertiesExtractorName);
  4746. return propertiesExtractor.extract(objectExpressionNode, parentNode);
  4747. }
  4748. transformNodeWithBaseExtractor(objectExpressionNode, parentNode) {
  4749. if (!objectExpressionNode.properties.length) {
  4750. return objectExpressionNode;
  4751. }
  4752. const propertiesExtractor = this.propertiesExtractorFactory(PropertiesExtractor_1.PropertiesExtractor.BasePropertiesExtractor);
  4753. return propertiesExtractor.extract(objectExpressionNode, parentNode);
  4754. }
  4755. };
  4756. ObjectExpressionKeysTransformer.propertiesExtractorsMap = new Map([
  4757. [NodeType_1.NodeType.AssignmentExpression, PropertiesExtractor_1.PropertiesExtractor.AssignmentExpressionPropertiesExtractor],
  4758. [NodeType_1.NodeType.VariableDeclarator, PropertiesExtractor_1.PropertiesExtractor.VariableDeclaratorPropertiesExtractor]
  4759. ]);
  4760. ObjectExpressionKeysTransformer = ObjectExpressionKeysTransformer_1 = tslib_1.__decorate([
  4761. inversify_1.injectable(),
  4762. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IPropertiesExtractor)),
  4763. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4764. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4765. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  4766. ], ObjectExpressionKeysTransformer);
  4767. exports.ObjectExpressionKeysTransformer = ObjectExpressionKeysTransformer;
  4768. /***/ }),
  4769. /***/ "./src/node-transformers/converting-transformers/ObjectExpressionTransformer.ts":
  4770. /*!**************************************************************************************!*\
  4771. !*** ./src/node-transformers/converting-transformers/ObjectExpressionTransformer.ts ***!
  4772. \**************************************************************************************/
  4773. /*! no static exports found */
  4774. /***/ (function(module, exports, __webpack_require__) {
  4775. "use strict";
  4776. Object.defineProperty(exports, "__esModule", { value: true });
  4777. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4778. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4779. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4780. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  4781. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  4782. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  4783. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  4784. let ObjectExpressionTransformer = class ObjectExpressionTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  4785. constructor(escapeSequenceEncoder, randomGenerator, options) {
  4786. super(randomGenerator, options);
  4787. this.escapeSequenceEncoder = escapeSequenceEncoder;
  4788. }
  4789. getVisitor(transformationStage) {
  4790. switch (transformationStage) {
  4791. case TransformationStage_1.TransformationStage.Converting:
  4792. return {
  4793. enter: (node, parentNode) => {
  4794. if (parentNode && NodeGuards_1.NodeGuards.isObjectExpressionNode(node)) {
  4795. return this.transformNode(node, parentNode);
  4796. }
  4797. }
  4798. };
  4799. default:
  4800. return null;
  4801. }
  4802. }
  4803. transformNode(objectExpressionNode, parentNode) {
  4804. objectExpressionNode.properties
  4805. .forEach((property) => {
  4806. if (!property.key) {
  4807. return;
  4808. }
  4809. if (property.computed) {
  4810. this.transformComputedProperty(property);
  4811. }
  4812. else {
  4813. this.transformBaseProperty(property);
  4814. }
  4815. });
  4816. return objectExpressionNode;
  4817. }
  4818. transformComputedProperty(property) {
  4819. if (!NodeGuards_1.NodeGuards.isLiteralNode(property.key) || !(typeof property.key.value === 'string')) {
  4820. return;
  4821. }
  4822. property.key = NodeFactory_1.NodeFactory.literalNode(this.getPropertyKeyValue(property.key.value));
  4823. }
  4824. transformBaseProperty(property) {
  4825. if (property.shorthand) {
  4826. property.shorthand = false;
  4827. }
  4828. if (!NodeGuards_1.NodeGuards.isIdentifierNode(property.key)) {
  4829. return;
  4830. }
  4831. property.key = NodeFactory_1.NodeFactory.literalNode(this.getPropertyKeyValue(property.key.name));
  4832. }
  4833. getPropertyKeyValue(inputValue) {
  4834. return this.options.unicodeEscapeSequence
  4835. ? this.escapeSequenceEncoder.encode(inputValue, true)
  4836. : inputValue;
  4837. }
  4838. };
  4839. ObjectExpressionTransformer = tslib_1.__decorate([
  4840. inversify_1.injectable(),
  4841. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IEscapeSequenceEncoder)),
  4842. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4843. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4844. tslib_1.__metadata("design:paramtypes", [Object, Object, Object])
  4845. ], ObjectExpressionTransformer);
  4846. exports.ObjectExpressionTransformer = ObjectExpressionTransformer;
  4847. /***/ }),
  4848. /***/ "./src/node-transformers/converting-transformers/SplitStringTransformer.ts":
  4849. /*!*********************************************************************************!*\
  4850. !*** ./src/node-transformers/converting-transformers/SplitStringTransformer.ts ***!
  4851. \*********************************************************************************/
  4852. /*! no static exports found */
  4853. /***/ (function(module, exports, __webpack_require__) {
  4854. "use strict";
  4855. var SplitStringTransformer_1;
  4856. Object.defineProperty(exports, "__esModule", { value: true });
  4857. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4858. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4859. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4860. const NodeTransformer_1 = __webpack_require__(/*! ../../enums/node-transformers/NodeTransformer */ "./src/enums/node-transformers/NodeTransformer.ts");
  4861. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  4862. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  4863. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  4864. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  4865. let SplitStringTransformer = SplitStringTransformer_1 = class SplitStringTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  4866. constructor(randomGenerator, options) {
  4867. super(randomGenerator, options);
  4868. this.runAfter = [
  4869. NodeTransformer_1.NodeTransformer.ObjectExpressionKeysTransformer,
  4870. NodeTransformer_1.NodeTransformer.TemplateLiteralTransformer
  4871. ];
  4872. }
  4873. static chunkString(string, chunkSize) {
  4874. const chunksCount = Math.ceil(string.length / chunkSize);
  4875. const chunks = [];
  4876. let nextChunkStartIndex = 0;
  4877. for (let chunkIndex = 0; chunkIndex < chunksCount; ++chunkIndex, nextChunkStartIndex += chunkSize) {
  4878. chunks[chunkIndex] = string.substr(nextChunkStartIndex, chunkSize);
  4879. }
  4880. return chunks;
  4881. }
  4882. getVisitor(transformationStage) {
  4883. switch (transformationStage) {
  4884. case TransformationStage_1.TransformationStage.Converting:
  4885. return {
  4886. enter: (node, parentNode) => {
  4887. if (!this.options.splitStrings) {
  4888. return;
  4889. }
  4890. if (parentNode && NodeGuards_1.NodeGuards.isLiteralNode(node)) {
  4891. return this.transformNode(node, parentNode);
  4892. }
  4893. }
  4894. };
  4895. default:
  4896. return null;
  4897. }
  4898. }
  4899. transformNode(literalNode, parentNode) {
  4900. if (typeof literalNode.value !== 'string') {
  4901. return literalNode;
  4902. }
  4903. if (NodeGuards_1.NodeGuards.isPropertyNode(parentNode) && !parentNode.computed && parentNode.key === literalNode) {
  4904. return literalNode;
  4905. }
  4906. if (this.options.splitStringsChunkLength >= literalNode.value.length) {
  4907. return literalNode;
  4908. }
  4909. const stringChunks = SplitStringTransformer_1.chunkString(literalNode.value, this.options.splitStringsChunkLength);
  4910. return this.transformStringChunksToBinaryExpressionNode(stringChunks);
  4911. }
  4912. transformStringChunksToBinaryExpressionNode(chunks) {
  4913. const lastChunk = chunks.pop();
  4914. if (lastChunk === undefined) {
  4915. throw new Error('Last chunk value should not be empty');
  4916. }
  4917. const lastChunkLiteralNode = NodeFactory_1.NodeFactory.literalNode(lastChunk);
  4918. if (chunks.length === 0) {
  4919. return lastChunkLiteralNode;
  4920. }
  4921. return NodeFactory_1.NodeFactory.binaryExpressionNode('+', this.transformStringChunksToBinaryExpressionNode(chunks), lastChunkLiteralNode);
  4922. }
  4923. };
  4924. SplitStringTransformer = SplitStringTransformer_1 = tslib_1.__decorate([
  4925. inversify_1.injectable(),
  4926. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  4927. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  4928. tslib_1.__metadata("design:paramtypes", [Object, Object])
  4929. ], SplitStringTransformer);
  4930. exports.SplitStringTransformer = SplitStringTransformer;
  4931. /***/ }),
  4932. /***/ "./src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts":
  4933. /*!*************************************************************************************!*\
  4934. !*** ./src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts ***!
  4935. \*************************************************************************************/
  4936. /*! no static exports found */
  4937. /***/ (function(module, exports, __webpack_require__) {
  4938. "use strict";
  4939. var TemplateLiteralTransformer_1;
  4940. Object.defineProperty(exports, "__esModule", { value: true });
  4941. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  4942. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  4943. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  4944. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  4945. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  4946. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  4947. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  4948. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  4949. let TemplateLiteralTransformer = TemplateLiteralTransformer_1 = class TemplateLiteralTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  4950. constructor(randomGenerator, options) {
  4951. super(randomGenerator, options);
  4952. }
  4953. static isLiteralNodeWithStringValue(node) {
  4954. return node && NodeGuards_1.NodeGuards.isLiteralNode(node) && typeof node.value === 'string';
  4955. }
  4956. static isValidTemplateLiteralNode(node, parentNode) {
  4957. return NodeGuards_1.NodeGuards.isTemplateLiteralNode(node) && !NodeGuards_1.NodeGuards.isTaggedTemplateExpressionNode(parentNode);
  4958. }
  4959. getVisitor(transformationStage) {
  4960. switch (transformationStage) {
  4961. case TransformationStage_1.TransformationStage.Converting:
  4962. return {
  4963. enter: (node, parentNode) => {
  4964. if (parentNode && TemplateLiteralTransformer_1.isValidTemplateLiteralNode(node, parentNode)) {
  4965. return this.transformNode(node, parentNode);
  4966. }
  4967. }
  4968. };
  4969. default:
  4970. return null;
  4971. }
  4972. }
  4973. transformNode(templateLiteralNode, parentNode) {
  4974. const templateLiteralExpressions = templateLiteralNode.expressions;
  4975. let nodes = [];
  4976. templateLiteralNode.quasis.forEach((templateElement) => {
  4977. nodes.push(NodeFactory_1.NodeFactory.literalNode(templateElement.value.cooked));
  4978. const expression = templateLiteralExpressions.shift();
  4979. if (!expression) {
  4980. return;
  4981. }
  4982. nodes.push(expression);
  4983. });
  4984. nodes = nodes.filter((node) => {
  4985. return !(NodeGuards_1.NodeGuards.isLiteralNode(node) && node.value === '');
  4986. });
  4987. if (!TemplateLiteralTransformer_1.isLiteralNodeWithStringValue(nodes[0]) &&
  4988. !TemplateLiteralTransformer_1.isLiteralNodeWithStringValue(nodes[1])) {
  4989. nodes.unshift(NodeFactory_1.NodeFactory.literalNode(''));
  4990. }
  4991. let transformedNode;
  4992. if (nodes.length > 1) {
  4993. let root = NodeFactory_1.NodeFactory.binaryExpressionNode('+', nodes.shift(), nodes.shift());
  4994. nodes.forEach((node) => {
  4995. root = NodeFactory_1.NodeFactory.binaryExpressionNode('+', root, node);
  4996. });
  4997. transformedNode = root;
  4998. }
  4999. else {
  5000. transformedNode = nodes[0];
  5001. }
  5002. NodeUtils_1.NodeUtils.parentizeAst(transformedNode);
  5003. return transformedNode;
  5004. }
  5005. };
  5006. TemplateLiteralTransformer = TemplateLiteralTransformer_1 = tslib_1.__decorate([
  5007. inversify_1.injectable(),
  5008. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  5009. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  5010. tslib_1.__metadata("design:paramtypes", [Object, Object])
  5011. ], TemplateLiteralTransformer);
  5012. exports.TemplateLiteralTransformer = TemplateLiteralTransformer;
  5013. /***/ }),
  5014. /***/ "./src/node-transformers/converting-transformers/properties-extractors/AbstractPropertiesExtractor.ts":
  5015. /*!************************************************************************************************************!*\
  5016. !*** ./src/node-transformers/converting-transformers/properties-extractors/AbstractPropertiesExtractor.ts ***!
  5017. \************************************************************************************************************/
  5018. /*! no static exports found */
  5019. /***/ (function(module, exports, __webpack_require__) {
  5020. "use strict";
  5021. var AbstractPropertiesExtractor_1;
  5022. Object.defineProperty(exports, "__esModule", { value: true });
  5023. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  5024. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  5025. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  5026. const NodeAppender_1 = __webpack_require__(/*! ../../../node/NodeAppender */ "./src/node/NodeAppender.ts");
  5027. const NodeFactory_1 = __webpack_require__(/*! ../../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  5028. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  5029. const NodeStatementUtils_1 = __webpack_require__(/*! ../../../node/NodeStatementUtils */ "./src/node/NodeStatementUtils.ts");
  5030. let AbstractPropertiesExtractor = AbstractPropertiesExtractor_1 = class AbstractPropertiesExtractor {
  5031. constructor(randomGenerator, options) {
  5032. this.cachedHostNodesWithStatementsMap = new Map();
  5033. this.cachedHostStatementsMap = new Map();
  5034. this.randomGenerator = randomGenerator;
  5035. this.options = options;
  5036. }
  5037. static getPropertyNodeKeyName(propertyNode) {
  5038. if (!propertyNode.key) {
  5039. return null;
  5040. }
  5041. const propertyKeyNode = propertyNode.key;
  5042. if (NodeGuards_1.NodeGuards.isLiteralNode(propertyKeyNode) && typeof propertyKeyNode.value === 'string') {
  5043. return propertyKeyNode.value;
  5044. }
  5045. if (NodeGuards_1.NodeGuards.isIdentifierNode(propertyKeyNode)) {
  5046. return propertyKeyNode.name;
  5047. }
  5048. return null;
  5049. }
  5050. static isProhibitedPattern(node) {
  5051. return !node
  5052. || NodeGuards_1.NodeGuards.isObjectPatternNode(node)
  5053. || NodeGuards_1.NodeGuards.isArrayPatternNode(node)
  5054. || NodeGuards_1.NodeGuards.isAssignmentPatternNode(node)
  5055. || NodeGuards_1.NodeGuards.isRestElementNode(node);
  5056. }
  5057. extractPropertiesToExpressionStatements(properties, memberExpressionHostNode) {
  5058. const propertiesLength = properties.length;
  5059. const expressionStatements = [];
  5060. const removablePropertyIds = [];
  5061. for (let i = 0; i < propertiesLength; i++) {
  5062. const property = properties[i];
  5063. const propertyValue = property.value;
  5064. if (AbstractPropertiesExtractor_1.isProhibitedPattern(propertyValue)) {
  5065. continue;
  5066. }
  5067. const propertyKeyName = AbstractPropertiesExtractor_1.getPropertyNodeKeyName(property);
  5068. if (!propertyKeyName) {
  5069. continue;
  5070. }
  5071. const shouldCreateLiteralNode = !property.computed
  5072. || (property.computed && !!property.key && NodeGuards_1.NodeGuards.isLiteralNode(property.key));
  5073. const memberExpressionProperty = shouldCreateLiteralNode
  5074. ? NodeFactory_1.NodeFactory.literalNode(propertyKeyName)
  5075. : NodeFactory_1.NodeFactory.identifierNode(propertyKeyName);
  5076. const memberExpressionNode = NodeFactory_1.NodeFactory
  5077. .memberExpressionNode(memberExpressionHostNode, memberExpressionProperty, true);
  5078. const expressionStatementNode = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.assignmentExpressionNode('=', memberExpressionNode, propertyValue));
  5079. if (NodeGuards_1.NodeGuards.isObjectExpressionNode(property.value)) {
  5080. this.transformObjectExpressionNode(property.value, memberExpressionNode);
  5081. }
  5082. expressionStatements.push(expressionStatementNode);
  5083. removablePropertyIds.push(i);
  5084. }
  5085. return [expressionStatements, removablePropertyIds];
  5086. }
  5087. filterExtractedObjectExpressionProperties(objectExpressionNode, removablePropertyIds) {
  5088. objectExpressionNode.properties = objectExpressionNode.properties
  5089. .filter((property, index) => !removablePropertyIds.includes(index));
  5090. }
  5091. transformObjectExpressionNode(objectExpressionNode, memberExpressionHostNode) {
  5092. const properties = objectExpressionNode.properties;
  5093. const [expressionStatements, removablePropertyIds] = this
  5094. .extractPropertiesToExpressionStatements(properties, memberExpressionHostNode);
  5095. const hostStatement = this.getHostStatement(objectExpressionNode);
  5096. const hostNodeWithStatements = this.getHostNodeWithStatements(objectExpressionNode, hostStatement);
  5097. this.filterExtractedObjectExpressionProperties(objectExpressionNode, removablePropertyIds);
  5098. NodeAppender_1.NodeAppender.insertAfter(hostNodeWithStatements, expressionStatements, hostStatement);
  5099. return objectExpressionNode;
  5100. }
  5101. getHostNodeWithStatements(objectExpressionNode, hostStatement) {
  5102. if (this.cachedHostNodesWithStatementsMap.has(objectExpressionNode)) {
  5103. return this.cachedHostNodesWithStatementsMap.get(objectExpressionNode);
  5104. }
  5105. const nodeWithStatements = NodeStatementUtils_1.NodeStatementUtils.getScopeOfNode(hostStatement);
  5106. this.cachedHostNodesWithStatementsMap.set(objectExpressionNode, nodeWithStatements);
  5107. return nodeWithStatements;
  5108. }
  5109. getHostStatement(objectExpressionNode) {
  5110. if (this.cachedHostStatementsMap.has(objectExpressionNode)) {
  5111. return this.cachedHostStatementsMap.get(objectExpressionNode);
  5112. }
  5113. const hostStatement = NodeStatementUtils_1.NodeStatementUtils.getRootStatementOfNode(objectExpressionNode);
  5114. this.cachedHostStatementsMap.set(objectExpressionNode, hostStatement);
  5115. return hostStatement;
  5116. }
  5117. };
  5118. AbstractPropertiesExtractor = AbstractPropertiesExtractor_1 = tslib_1.__decorate([
  5119. inversify_1.injectable(),
  5120. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  5121. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  5122. tslib_1.__metadata("design:paramtypes", [Object, Object])
  5123. ], AbstractPropertiesExtractor);
  5124. exports.AbstractPropertiesExtractor = AbstractPropertiesExtractor;
  5125. /***/ }),
  5126. /***/ "./src/node-transformers/converting-transformers/properties-extractors/AssignmentExpressionPropertiesExtractor.ts":
  5127. /*!************************************************************************************************************************!*\
  5128. !*** ./src/node-transformers/converting-transformers/properties-extractors/AssignmentExpressionPropertiesExtractor.ts ***!
  5129. \************************************************************************************************************************/
  5130. /*! no static exports found */
  5131. /***/ (function(module, exports, __webpack_require__) {
  5132. "use strict";
  5133. var AssignmentExpressionPropertiesExtractor_1;
  5134. Object.defineProperty(exports, "__esModule", { value: true });
  5135. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  5136. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  5137. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  5138. const AbstractPropertiesExtractor_1 = __webpack_require__(/*! ./AbstractPropertiesExtractor */ "./src/node-transformers/converting-transformers/properties-extractors/AbstractPropertiesExtractor.ts");
  5139. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  5140. let AssignmentExpressionPropertiesExtractor = AssignmentExpressionPropertiesExtractor_1 = class AssignmentExpressionPropertiesExtractor extends AbstractPropertiesExtractor_1.AbstractPropertiesExtractor {
  5141. constructor(randomGenerator, options) {
  5142. super(randomGenerator, options);
  5143. }
  5144. static isProhibitedHostParent(node) {
  5145. if (NodeGuards_1.NodeGuards.isMemberExpressionNode(node)) {
  5146. return true;
  5147. }
  5148. if (AssignmentExpressionPropertiesExtractor_1.isProhibitedStatementNode(node)) {
  5149. return true;
  5150. }
  5151. return NodeGuards_1.NodeGuards.isExpressionStatementNode(node)
  5152. && !!node.parentNode
  5153. && AssignmentExpressionPropertiesExtractor_1.isProhibitedStatementNode(node.parentNode);
  5154. }
  5155. static isProhibitedStatementNode(node) {
  5156. return NodeGuards_1.NodeGuards.isIfStatementNode(node)
  5157. || NodeGuards_1.NodeGuards.isForStatementTypeNode(node)
  5158. || NodeGuards_1.NodeGuards.isWhileStatementNode(node);
  5159. }
  5160. extract(objectExpressionNode, hostNode) {
  5161. const hostParentNode = hostNode.parentNode;
  5162. const leftNode = hostNode.left;
  5163. if (AbstractPropertiesExtractor_1.AbstractPropertiesExtractor.isProhibitedPattern(leftNode)) {
  5164. return objectExpressionNode;
  5165. }
  5166. if (hostParentNode && AssignmentExpressionPropertiesExtractor_1.isProhibitedHostParent(hostParentNode)) {
  5167. return objectExpressionNode;
  5168. }
  5169. return this.transformObjectExpressionNode(objectExpressionNode, leftNode);
  5170. }
  5171. };
  5172. AssignmentExpressionPropertiesExtractor = AssignmentExpressionPropertiesExtractor_1 = tslib_1.__decorate([
  5173. inversify_1.injectable(),
  5174. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  5175. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  5176. tslib_1.__metadata("design:paramtypes", [Object, Object])
  5177. ], AssignmentExpressionPropertiesExtractor);
  5178. exports.AssignmentExpressionPropertiesExtractor = AssignmentExpressionPropertiesExtractor;
  5179. /***/ }),
  5180. /***/ "./src/node-transformers/converting-transformers/properties-extractors/BasePropertiesExtractor.ts":
  5181. /*!********************************************************************************************************!*\
  5182. !*** ./src/node-transformers/converting-transformers/properties-extractors/BasePropertiesExtractor.ts ***!
  5183. \********************************************************************************************************/
  5184. /*! no static exports found */
  5185. /***/ (function(module, exports, __webpack_require__) {
  5186. "use strict";
  5187. Object.defineProperty(exports, "__esModule", { value: true });
  5188. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  5189. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  5190. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  5191. const ObjectExpressionKeysTransformerCustomNode_1 = __webpack_require__(/*! ../../../enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode */ "./src/enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode.ts");
  5192. const AbstractPropertiesExtractor_1 = __webpack_require__(/*! ./AbstractPropertiesExtractor */ "./src/node-transformers/converting-transformers/properties-extractors/AbstractPropertiesExtractor.ts");
  5193. const NodeAppender_1 = __webpack_require__(/*! ../../../node/NodeAppender */ "./src/node/NodeAppender.ts");
  5194. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  5195. let BasePropertiesExtractor = class BasePropertiesExtractor extends AbstractPropertiesExtractor_1.AbstractPropertiesExtractor {
  5196. constructor(randomGenerator, options, objectExpressionKeysTransformerCustomNodeFactory) {
  5197. super(randomGenerator, options);
  5198. this.objectExpressionKeysTransformerCustomNodeFactory = objectExpressionKeysTransformerCustomNodeFactory;
  5199. }
  5200. extract(objectExpressionNode, parentNode) {
  5201. return this.transformObjectExpressionNode(objectExpressionNode, parentNode);
  5202. }
  5203. transformObjectExpressionNode(objectExpressionNode, parentNode) {
  5204. const newObjectExpressionHostNode = this.getObjectExpressionHostNode();
  5205. const newObjectExpressionIdentifier = this.getObjectExpressionIdentifierNode(newObjectExpressionHostNode);
  5206. const properties = objectExpressionNode.properties;
  5207. const [expressionStatements, removablePropertyIds] = this
  5208. .extractPropertiesToExpressionStatements(properties, newObjectExpressionIdentifier);
  5209. const statementsToInsert = [
  5210. newObjectExpressionHostNode,
  5211. ...expressionStatements
  5212. ];
  5213. const hostStatement = this.getHostStatement(objectExpressionNode);
  5214. const hostNodeWithStatements = this.getHostNodeWithStatements(objectExpressionNode, hostStatement);
  5215. this.filterExtractedObjectExpressionProperties(objectExpressionNode, removablePropertyIds);
  5216. NodeAppender_1.NodeAppender.insertBefore(hostNodeWithStatements, statementsToInsert, hostStatement);
  5217. return newObjectExpressionIdentifier;
  5218. }
  5219. getObjectExpressionHostNode() {
  5220. const objectExpressionHostCustomNode = this.objectExpressionKeysTransformerCustomNodeFactory(ObjectExpressionKeysTransformerCustomNode_1.ObjectExpressionKeysTransformerCustomNode.BasePropertiesExtractorObjectExpressionHostNode);
  5221. objectExpressionHostCustomNode.initialize();
  5222. const statementNode = objectExpressionHostCustomNode.getNode()[0];
  5223. if (!statementNode
  5224. || !NodeGuards_1.NodeGuards.isVariableDeclarationNode(statementNode)) {
  5225. throw new Error(`\`objectExpressionHostCustomNode.getNode()[0]\` should returns array with \`VariableDeclaration\` node`);
  5226. }
  5227. return statementNode;
  5228. }
  5229. getObjectExpressionIdentifierNode(objectExpressionHostNode) {
  5230. const newObjectExpressionIdentifierNode = objectExpressionHostNode.declarations[0].id;
  5231. if (!NodeGuards_1.NodeGuards.isIdentifierNode(newObjectExpressionIdentifierNode)) {
  5232. throw new Error(`\`objectExpressionHostNode\` should contain \`VariableDeclarator\` node with \`Identifier\` id property`);
  5233. }
  5234. return newObjectExpressionIdentifierNode;
  5235. }
  5236. };
  5237. BasePropertiesExtractor = tslib_1.__decorate([
  5238. inversify_1.injectable(),
  5239. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  5240. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  5241. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObjectExpressionKeysTransformerCustomNode)),
  5242. tslib_1.__metadata("design:paramtypes", [Object, Object, Function])
  5243. ], BasePropertiesExtractor);
  5244. exports.BasePropertiesExtractor = BasePropertiesExtractor;
  5245. /***/ }),
  5246. /***/ "./src/node-transformers/converting-transformers/properties-extractors/VariableDeclaratorPropertiesExtractor.ts":
  5247. /*!**********************************************************************************************************************!*\
  5248. !*** ./src/node-transformers/converting-transformers/properties-extractors/VariableDeclaratorPropertiesExtractor.ts ***!
  5249. \**********************************************************************************************************************/
  5250. /*! no static exports found */
  5251. /***/ (function(module, exports, __webpack_require__) {
  5252. "use strict";
  5253. Object.defineProperty(exports, "__esModule", { value: true });
  5254. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  5255. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  5256. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  5257. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  5258. const AbstractPropertiesExtractor_1 = __webpack_require__(/*! ./AbstractPropertiesExtractor */ "./src/node-transformers/converting-transformers/properties-extractors/AbstractPropertiesExtractor.ts");
  5259. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  5260. let VariableDeclaratorPropertiesExtractor = class VariableDeclaratorPropertiesExtractor extends AbstractPropertiesExtractor_1.AbstractPropertiesExtractor {
  5261. constructor(randomGenerator, options) {
  5262. super(randomGenerator, options);
  5263. }
  5264. extract(objectExpressionNode, hostNode) {
  5265. if (!NodeGuards_1.NodeGuards.isIdentifierNode(hostNode.id)
  5266. || this.isProhibitedObjectExpressionNode(objectExpressionNode, hostNode.id)) {
  5267. return objectExpressionNode;
  5268. }
  5269. return this.transformObjectExpressionNode(objectExpressionNode, hostNode.id);
  5270. }
  5271. getHostVariableDeclaratorNode(objectExpressionNode) {
  5272. const { parentNode } = objectExpressionNode;
  5273. if (!parentNode || !NodeGuards_1.NodeGuards.isVariableDeclaratorNode(parentNode)) {
  5274. throw new Error('Cannot get `VariableDeclarator` node for `ObjectExpression` node');
  5275. }
  5276. return parentNode;
  5277. }
  5278. getHostVariableDeclarationNode(variableDeclaratorNode) {
  5279. const { parentNode } = variableDeclaratorNode;
  5280. if (!parentNode || !NodeGuards_1.NodeGuards.isVariableDeclarationNode(parentNode)) {
  5281. throw new Error('Cannot get `VariableDeclaration` node for `VariableDeclarator` node');
  5282. }
  5283. return parentNode;
  5284. }
  5285. isProhibitedObjectExpressionNode(objectExpressionNode, memberExpressionHostNode) {
  5286. const hostVariableDeclarator = this.getHostVariableDeclaratorNode(objectExpressionNode);
  5287. const hostVariableDeclaration = this.getHostVariableDeclarationNode(hostVariableDeclarator);
  5288. const { declarations } = hostVariableDeclaration;
  5289. const indexOfDeclarator = declarations.indexOf(hostVariableDeclarator);
  5290. const isLastDeclarator = indexOfDeclarator === (declarations.length - 1);
  5291. if (isLastDeclarator) {
  5292. return false;
  5293. }
  5294. const declaratorsAfterCurrentDeclarator = declarations.slice(indexOfDeclarator);
  5295. let isProhibitedObjectExpressionNode = false;
  5296. declaratorsAfterCurrentDeclarator.forEach((variableDeclarator) => {
  5297. estraverse.traverse(variableDeclarator, {
  5298. enter: (node) => {
  5299. if (NodeGuards_1.NodeGuards.isMemberExpressionNode(node)
  5300. && NodeGuards_1.NodeGuards.isIdentifierNode(node.object)
  5301. && node.object.name === memberExpressionHostNode.name) {
  5302. isProhibitedObjectExpressionNode = true;
  5303. return estraverse.VisitorOption.Break;
  5304. }
  5305. return node;
  5306. }
  5307. });
  5308. });
  5309. return isProhibitedObjectExpressionNode;
  5310. }
  5311. };
  5312. VariableDeclaratorPropertiesExtractor = tslib_1.__decorate([
  5313. inversify_1.injectable(),
  5314. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  5315. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  5316. tslib_1.__metadata("design:paramtypes", [Object, Object])
  5317. ], VariableDeclaratorPropertiesExtractor);
  5318. exports.VariableDeclaratorPropertiesExtractor = VariableDeclaratorPropertiesExtractor;
  5319. /***/ }),
  5320. /***/ "./src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts":
  5321. /*!************************************************************************************************!*\
  5322. !*** ./src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts ***!
  5323. \************************************************************************************************/
  5324. /*! no static exports found */
  5325. /***/ (function(module, exports, __webpack_require__) {
  5326. "use strict";
  5327. var DeadCodeInjectionTransformer_1;
  5328. Object.defineProperty(exports, "__esModule", { value: true });
  5329. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  5330. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  5331. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  5332. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  5333. const DeadCodeInjectionCustomNode_1 = __webpack_require__(/*! ../../enums/custom-nodes/DeadCodeInjectionCustomNode */ "./src/enums/custom-nodes/DeadCodeInjectionCustomNode.ts");
  5334. const NodeTransformer_1 = __webpack_require__(/*! ../../enums/node-transformers/NodeTransformer */ "./src/enums/node-transformers/NodeTransformer.ts");
  5335. const NodeType_1 = __webpack_require__(/*! ../../enums/node/NodeType */ "./src/enums/node/NodeType.ts");
  5336. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  5337. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  5338. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  5339. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  5340. const NodeStatementUtils_1 = __webpack_require__(/*! ../../node/NodeStatementUtils */ "./src/node/NodeStatementUtils.ts");
  5341. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  5342. let DeadCodeInjectionTransformer = DeadCodeInjectionTransformer_1 = class DeadCodeInjectionTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  5343. constructor(deadCodeInjectionCustomNodeFactory, transformersRunner, randomGenerator, options) {
  5344. super(randomGenerator, options);
  5345. this.deadCodeInjectionRootAstHostNodeSet = new Set();
  5346. this.collectedBlockStatements = [];
  5347. this.collectedBlockStatementsTotalLength = 0;
  5348. this.deadCodeInjectionCustomNodeFactory = deadCodeInjectionCustomNodeFactory;
  5349. this.transformersRunner = transformersRunner;
  5350. }
  5351. static isProhibitedNodeInsideCollectedBlockStatement(targetNode) {
  5352. return NodeGuards_1.NodeGuards.isBreakStatementNode(targetNode)
  5353. || NodeGuards_1.NodeGuards.isContinueStatementNode(targetNode)
  5354. || NodeGuards_1.NodeGuards.isAwaitExpressionNode(targetNode)
  5355. || NodeGuards_1.NodeGuards.isSuperNode(targetNode);
  5356. }
  5357. static isScopeHoistingFunctionDeclaration(targetNode) {
  5358. if (!NodeGuards_1.NodeGuards.isFunctionDeclarationNode(targetNode)) {
  5359. return false;
  5360. }
  5361. const scopeNode = NodeStatementUtils_1.NodeStatementUtils.getScopeOfNode(targetNode);
  5362. const scopeBody = !NodeGuards_1.NodeGuards.isSwitchCaseNode(scopeNode)
  5363. ? scopeNode.body
  5364. : scopeNode.consequent;
  5365. const indexInScope = scopeBody.indexOf(targetNode);
  5366. if (indexInScope === 0) {
  5367. return false;
  5368. }
  5369. const slicedBody = scopeBody.slice(0, indexInScope);
  5370. const hostBlockStatementNode = NodeFactory_1.NodeFactory.blockStatementNode(slicedBody);
  5371. const functionDeclarationName = targetNode.id.name;
  5372. let isScopeHoistedFunctionDeclaration = false;
  5373. estraverse.traverse(hostBlockStatementNode, {
  5374. enter: (node) => {
  5375. if (NodeGuards_1.NodeGuards.isIdentifierNode(node) && node.name === functionDeclarationName) {
  5376. isScopeHoistedFunctionDeclaration = true;
  5377. return estraverse.VisitorOption.Break;
  5378. }
  5379. }
  5380. });
  5381. return isScopeHoistedFunctionDeclaration;
  5382. }
  5383. static isValidCollectedBlockStatementNode(blockStatementNode) {
  5384. if (!blockStatementNode.body.length) {
  5385. return false;
  5386. }
  5387. let nestedBlockStatementsCount = 0;
  5388. let isValidBlockStatementNode = true;
  5389. estraverse.traverse(blockStatementNode, {
  5390. enter: (node) => {
  5391. if (NodeGuards_1.NodeGuards.isBlockStatementNode(node)) {
  5392. nestedBlockStatementsCount++;
  5393. }
  5394. if (nestedBlockStatementsCount > DeadCodeInjectionTransformer_1.maxNestedBlockStatementsCount
  5395. || DeadCodeInjectionTransformer_1.isProhibitedNodeInsideCollectedBlockStatement(node)
  5396. || DeadCodeInjectionTransformer_1.isScopeHoistingFunctionDeclaration(node)) {
  5397. isValidBlockStatementNode = false;
  5398. return estraverse.VisitorOption.Break;
  5399. }
  5400. }
  5401. });
  5402. return isValidBlockStatementNode;
  5403. }
  5404. static isValidWrappedBlockStatementNode(blockStatementNode) {
  5405. if (!blockStatementNode.body.length) {
  5406. return false;
  5407. }
  5408. let isValidBlockStatementNode = true;
  5409. estraverse.traverse(blockStatementNode, {
  5410. enter: (node) => {
  5411. if (DeadCodeInjectionTransformer_1.isScopeHoistingFunctionDeclaration(node)) {
  5412. isValidBlockStatementNode = false;
  5413. return estraverse.VisitorOption.Break;
  5414. }
  5415. }
  5416. });
  5417. if (!isValidBlockStatementNode) {
  5418. return false;
  5419. }
  5420. const parentNodeWithStatements = NodeStatementUtils_1.NodeStatementUtils
  5421. .getParentNodeWithStatements(blockStatementNode);
  5422. return parentNodeWithStatements.type !== NodeType_1.NodeType.Program;
  5423. }
  5424. getVisitor(transformationStage) {
  5425. switch (transformationStage) {
  5426. case TransformationStage_1.TransformationStage.DeadCodeInjection:
  5427. return {
  5428. enter: (node, parentNode) => {
  5429. if (parentNode && NodeGuards_1.NodeGuards.isProgramNode(node)) {
  5430. this.analyzeNode(node, parentNode);
  5431. return node;
  5432. }
  5433. },
  5434. leave: (node, parentNode) => {
  5435. if (parentNode && NodeGuards_1.NodeGuards.isBlockStatementNode(node)) {
  5436. return this.transformNode(node, parentNode);
  5437. }
  5438. }
  5439. };
  5440. case TransformationStage_1.TransformationStage.Finalizing:
  5441. if (!this.deadCodeInjectionRootAstHostNodeSet.size) {
  5442. return null;
  5443. }
  5444. return {
  5445. enter: (node, parentNode) => {
  5446. if (parentNode && this.isDeadCodeInjectionRootAstHostNode(node)) {
  5447. return this.restoreNode(node, parentNode);
  5448. }
  5449. }
  5450. };
  5451. default:
  5452. return null;
  5453. }
  5454. }
  5455. analyzeNode(programNode, parentNode) {
  5456. estraverse.traverse(programNode, {
  5457. enter: (node) => {
  5458. if (!NodeGuards_1.NodeGuards.isBlockStatementNode(node)) {
  5459. return;
  5460. }
  5461. const clonedBlockStatementNode = NodeUtils_1.NodeUtils.clone(node);
  5462. if (!DeadCodeInjectionTransformer_1.isValidCollectedBlockStatementNode(clonedBlockStatementNode)) {
  5463. return;
  5464. }
  5465. const transformedBlockStatementNode = this.makeClonedBlockStatementNodeUnique(clonedBlockStatementNode);
  5466. this.collectedBlockStatements.push(transformedBlockStatementNode);
  5467. }
  5468. });
  5469. this.collectedBlockStatementsTotalLength = this.collectedBlockStatements.length;
  5470. }
  5471. transformNode(blockStatementNode, parentNode) {
  5472. const canBreakTraverse = !this.collectedBlockStatements.length
  5473. || this.collectedBlockStatementsTotalLength < DeadCodeInjectionTransformer_1.minCollectedBlockStatementsCount;
  5474. if (canBreakTraverse) {
  5475. return estraverse.VisitorOption.Break;
  5476. }
  5477. if (this.randomGenerator.getMathRandom() > this.options.deadCodeInjectionThreshold
  5478. || !DeadCodeInjectionTransformer_1.isValidWrappedBlockStatementNode(blockStatementNode)) {
  5479. return blockStatementNode;
  5480. }
  5481. const minInteger = 0;
  5482. const maxInteger = this.collectedBlockStatements.length - 1;
  5483. const randomIndex = this.randomGenerator.getRandomInteger(minInteger, maxInteger);
  5484. const randomBlockStatementNode = this.collectedBlockStatements.splice(randomIndex, 1)[0];
  5485. const isDuplicateBlockStatementNodes = randomBlockStatementNode === blockStatementNode;
  5486. if (isDuplicateBlockStatementNodes) {
  5487. return blockStatementNode;
  5488. }
  5489. return this.replaceBlockStatementNode(blockStatementNode, randomBlockStatementNode, parentNode);
  5490. }
  5491. restoreNode(deadCodeInjectionRootAstHostNode, parentNode) {
  5492. const hostNodeFirstStatement = deadCodeInjectionRootAstHostNode.body[0];
  5493. if (!NodeGuards_1.NodeGuards.isFunctionDeclarationNode(hostNodeFirstStatement)) {
  5494. throw new Error('Wrong dead code injection root AST host node. Host node should contain `FunctionDeclaration` node');
  5495. }
  5496. return hostNodeFirstStatement.body;
  5497. }
  5498. isDeadCodeInjectionRootAstHostNode(node) {
  5499. return NodeGuards_1.NodeGuards.isBlockStatementNode(node) && this.deadCodeInjectionRootAstHostNodeSet.has(node);
  5500. }
  5501. makeClonedBlockStatementNodeUnique(clonedBlockStatementNode) {
  5502. const hostNode = NodeFactory_1.NodeFactory
  5503. .functionExpressionNode([], clonedBlockStatementNode);
  5504. NodeUtils_1.NodeUtils.parentizeNode(hostNode, hostNode);
  5505. NodeUtils_1.NodeUtils.parentizeNode(clonedBlockStatementNode, hostNode);
  5506. return this.transformersRunner.transform(hostNode, DeadCodeInjectionTransformer_1.transformersToRenameBlockScopeIdentifiers, TransformationStage_1.TransformationStage.Obfuscating).body;
  5507. }
  5508. replaceBlockStatementNode(blockStatementNode, randomBlockStatementNode, parentNode) {
  5509. const deadCodeInjectionRootAstHostNode = NodeFactory_1.NodeFactory.blockStatementNode([
  5510. NodeFactory_1.NodeFactory.functionDeclarationNode(DeadCodeInjectionTransformer_1.deadCodeInjectionRootAstHostNodeName, [], randomBlockStatementNode)
  5511. ]);
  5512. this.deadCodeInjectionRootAstHostNodeSet.add(deadCodeInjectionRootAstHostNode);
  5513. const blockStatementDeadCodeInjectionCustomNode = this.deadCodeInjectionCustomNodeFactory(DeadCodeInjectionCustomNode_1.DeadCodeInjectionCustomNode.BlockStatementDeadCodeInjectionNode);
  5514. blockStatementDeadCodeInjectionCustomNode.initialize(blockStatementNode, deadCodeInjectionRootAstHostNode);
  5515. const newBlockStatementNode = blockStatementDeadCodeInjectionCustomNode.getNode()[0];
  5516. NodeUtils_1.NodeUtils.parentizeNode(newBlockStatementNode, parentNode);
  5517. return newBlockStatementNode;
  5518. }
  5519. };
  5520. DeadCodeInjectionTransformer.deadCodeInjectionRootAstHostNodeName = 'deadCodeInjectionRootAstHostNode';
  5521. DeadCodeInjectionTransformer.maxNestedBlockStatementsCount = 4;
  5522. DeadCodeInjectionTransformer.minCollectedBlockStatementsCount = 5;
  5523. DeadCodeInjectionTransformer.transformersToRenameBlockScopeIdentifiers = [
  5524. NodeTransformer_1.NodeTransformer.CatchClauseTransformer,
  5525. NodeTransformer_1.NodeTransformer.ClassDeclarationTransformer,
  5526. NodeTransformer_1.NodeTransformer.FunctionDeclarationTransformer,
  5527. NodeTransformer_1.NodeTransformer.FunctionTransformer,
  5528. NodeTransformer_1.NodeTransformer.LabeledStatementTransformer,
  5529. NodeTransformer_1.NodeTransformer.VariableDeclarationTransformer
  5530. ];
  5531. DeadCodeInjectionTransformer = DeadCodeInjectionTransformer_1 = tslib_1.__decorate([
  5532. inversify_1.injectable(),
  5533. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IDeadCodeInjectionCustomNode)),
  5534. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ITransformersRunner)),
  5535. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  5536. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  5537. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  5538. ], DeadCodeInjectionTransformer);
  5539. exports.DeadCodeInjectionTransformer = DeadCodeInjectionTransformer;
  5540. /***/ }),
  5541. /***/ "./src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts":
  5542. /*!**********************************************************************************!*\
  5543. !*** ./src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts ***!
  5544. \**********************************************************************************/
  5545. /*! no static exports found */
  5546. /***/ (function(module, exports, __webpack_require__) {
  5547. "use strict";
  5548. Object.defineProperty(exports, "__esModule", { value: true });
  5549. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  5550. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  5551. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  5552. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  5553. const IdentifierObfuscatingReplacer_1 = __webpack_require__(/*! ../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer.ts");
  5554. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  5555. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  5556. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  5557. const NodeLexicalScopeUtils_1 = __webpack_require__(/*! ../../node/NodeLexicalScopeUtils */ "./src/node/NodeLexicalScopeUtils.ts");
  5558. const NodeMetadata_1 = __webpack_require__(/*! ../../node/NodeMetadata */ "./src/node/NodeMetadata.ts");
  5559. let CatchClauseTransformer = class CatchClauseTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  5560. constructor(identifierObfuscatingReplacerFactory, randomGenerator, options) {
  5561. super(randomGenerator, options);
  5562. this.identifierObfuscatingReplacer = identifierObfuscatingReplacerFactory(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);
  5563. }
  5564. getVisitor(transformationStage) {
  5565. switch (transformationStage) {
  5566. case TransformationStage_1.TransformationStage.Obfuscating:
  5567. return {
  5568. enter: (node, parentNode) => {
  5569. if (parentNode && NodeGuards_1.NodeGuards.isCatchClauseNode(node)) {
  5570. return this.transformNode(node, parentNode);
  5571. }
  5572. }
  5573. };
  5574. default:
  5575. return null;
  5576. }
  5577. }
  5578. transformNode(catchClauseNode, parentNode) {
  5579. const lexicalScopeNode = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScope(catchClauseNode);
  5580. if (!lexicalScopeNode) {
  5581. return catchClauseNode;
  5582. }
  5583. this.storeCatchClauseParam(catchClauseNode, lexicalScopeNode);
  5584. this.replaceCatchClauseParam(catchClauseNode, lexicalScopeNode);
  5585. return catchClauseNode;
  5586. }
  5587. storeCatchClauseParam(catchClauseNode, lexicalScopeNode) {
  5588. if (NodeGuards_1.NodeGuards.isIdentifierNode(catchClauseNode.param)) {
  5589. this.identifierObfuscatingReplacer.storeLocalName(catchClauseNode.param.name, lexicalScopeNode);
  5590. }
  5591. }
  5592. replaceCatchClauseParam(catchClauseNode, lexicalScopeNode) {
  5593. estraverse.replace(catchClauseNode, {
  5594. enter: (node, parentNode) => {
  5595. if (parentNode && NodeGuards_1.NodeGuards.isReplaceableIdentifierNode(node, parentNode)) {
  5596. const newIdentifier = this.identifierObfuscatingReplacer
  5597. .replace(node.name, lexicalScopeNode);
  5598. const newIdentifierName = newIdentifier.name;
  5599. if (node.name !== newIdentifierName) {
  5600. node.name = newIdentifierName;
  5601. NodeMetadata_1.NodeMetadata.set(node, { renamedIdentifier: true });
  5602. }
  5603. }
  5604. }
  5605. });
  5606. }
  5607. };
  5608. CatchClauseTransformer = tslib_1.__decorate([
  5609. inversify_1.injectable(),
  5610. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)),
  5611. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  5612. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  5613. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  5614. ], CatchClauseTransformer);
  5615. exports.CatchClauseTransformer = CatchClauseTransformer;
  5616. /***/ }),
  5617. /***/ "./src/node-transformers/obfuscating-transformers/ClassDeclarationTransformer.ts":
  5618. /*!***************************************************************************************!*\
  5619. !*** ./src/node-transformers/obfuscating-transformers/ClassDeclarationTransformer.ts ***!
  5620. \***************************************************************************************/
  5621. /*! no static exports found */
  5622. /***/ (function(module, exports, __webpack_require__) {
  5623. "use strict";
  5624. Object.defineProperty(exports, "__esModule", { value: true });
  5625. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  5626. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  5627. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  5628. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  5629. const IdentifierObfuscatingReplacer_1 = __webpack_require__(/*! ../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer.ts");
  5630. const NodeType_1 = __webpack_require__(/*! ../../enums/node/NodeType */ "./src/enums/node/NodeType.ts");
  5631. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  5632. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  5633. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  5634. const NodeLexicalScopeUtils_1 = __webpack_require__(/*! ../../node/NodeLexicalScopeUtils */ "./src/node/NodeLexicalScopeUtils.ts");
  5635. const NodeMetadata_1 = __webpack_require__(/*! ../../node/NodeMetadata */ "./src/node/NodeMetadata.ts");
  5636. let ClassDeclarationTransformer = class ClassDeclarationTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  5637. constructor(identifierObfuscatingReplacerFactory, randomGenerator, options) {
  5638. super(randomGenerator, options);
  5639. this.replaceableIdentifiers = new Map();
  5640. this.identifierObfuscatingReplacer = identifierObfuscatingReplacerFactory(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);
  5641. }
  5642. getVisitor(transformationStage) {
  5643. switch (transformationStage) {
  5644. case TransformationStage_1.TransformationStage.Obfuscating:
  5645. return {
  5646. enter: (node, parentNode) => {
  5647. if (parentNode
  5648. && NodeGuards_1.NodeGuards.isClassDeclarationNode(node)
  5649. && !NodeGuards_1.NodeGuards.isExportNamedDeclarationNode(parentNode)) {
  5650. return this.transformNode(node, parentNode);
  5651. }
  5652. }
  5653. };
  5654. default:
  5655. return null;
  5656. }
  5657. }
  5658. transformNode(classDeclarationNode, parentNode) {
  5659. const lexicalScopeNode = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScope(classDeclarationNode);
  5660. if (!lexicalScopeNode) {
  5661. return classDeclarationNode;
  5662. }
  5663. const isGlobalDeclaration = lexicalScopeNode.type === NodeType_1.NodeType.Program;
  5664. if (!this.options.renameGlobals && isGlobalDeclaration) {
  5665. return classDeclarationNode;
  5666. }
  5667. this.storeClassName(classDeclarationNode, lexicalScopeNode, isGlobalDeclaration);
  5668. if (this.replaceableIdentifiers.has(lexicalScopeNode)) {
  5669. this.replaceScopeCachedIdentifiers(classDeclarationNode, lexicalScopeNode);
  5670. }
  5671. else {
  5672. this.replaceScopeIdentifiers(lexicalScopeNode);
  5673. }
  5674. return classDeclarationNode;
  5675. }
  5676. storeClassName(classDeclarationNode, lexicalScopeNode, isGlobalDeclaration) {
  5677. if (isGlobalDeclaration) {
  5678. this.identifierObfuscatingReplacer.storeGlobalName(classDeclarationNode.id.name, lexicalScopeNode);
  5679. }
  5680. else {
  5681. this.identifierObfuscatingReplacer.storeLocalName(classDeclarationNode.id.name, lexicalScopeNode);
  5682. }
  5683. }
  5684. replaceScopeCachedIdentifiers(classDeclarationNode, lexicalScopeNode) {
  5685. const cachedReplaceableIdentifiersNamesMap = this.replaceableIdentifiers.get(lexicalScopeNode);
  5686. const cachedReplaceableIdentifiers = cachedReplaceableIdentifiersNamesMap
  5687. .get(classDeclarationNode.id.name);
  5688. if (!cachedReplaceableIdentifiers) {
  5689. return;
  5690. }
  5691. const cachedReplaceableIdentifierLength = cachedReplaceableIdentifiers.length;
  5692. for (let i = 0; i < cachedReplaceableIdentifierLength; i++) {
  5693. const replaceableIdentifier = cachedReplaceableIdentifiers[i];
  5694. const newReplaceableIdentifier = this.identifierObfuscatingReplacer
  5695. .replace(replaceableIdentifier.name, lexicalScopeNode);
  5696. replaceableIdentifier.name = newReplaceableIdentifier.name;
  5697. NodeMetadata_1.NodeMetadata.set(replaceableIdentifier, { renamedIdentifier: true });
  5698. }
  5699. }
  5700. replaceScopeIdentifiers(lexicalScopeNode) {
  5701. const storedReplaceableIdentifiersNamesMap = new Map();
  5702. estraverse.replace(lexicalScopeNode, {
  5703. enter: (node, parentNode) => {
  5704. if (parentNode
  5705. && NodeGuards_1.NodeGuards.isReplaceableIdentifierNode(node, parentNode)
  5706. && !NodeMetadata_1.NodeMetadata.isRenamedIdentifier(node)) {
  5707. const newIdentifier = this.identifierObfuscatingReplacer
  5708. .replace(node.name, lexicalScopeNode);
  5709. const newIdentifierName = newIdentifier.name;
  5710. if (node.name !== newIdentifierName) {
  5711. node.name = newIdentifierName;
  5712. NodeMetadata_1.NodeMetadata.set(node, { renamedIdentifier: true });
  5713. }
  5714. else {
  5715. const storedReplaceableIdentifiers = storedReplaceableIdentifiersNamesMap.get(node.name) || [];
  5716. storedReplaceableIdentifiers.push(node);
  5717. storedReplaceableIdentifiersNamesMap.set(node.name, storedReplaceableIdentifiers);
  5718. }
  5719. }
  5720. }
  5721. });
  5722. this.replaceableIdentifiers.set(lexicalScopeNode, storedReplaceableIdentifiersNamesMap);
  5723. }
  5724. };
  5725. ClassDeclarationTransformer = tslib_1.__decorate([
  5726. inversify_1.injectable(),
  5727. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)),
  5728. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  5729. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  5730. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  5731. ], ClassDeclarationTransformer);
  5732. exports.ClassDeclarationTransformer = ClassDeclarationTransformer;
  5733. /***/ }),
  5734. /***/ "./src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts":
  5735. /*!******************************************************************************************!*\
  5736. !*** ./src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts ***!
  5737. \******************************************************************************************/
  5738. /*! no static exports found */
  5739. /***/ (function(module, exports, __webpack_require__) {
  5740. "use strict";
  5741. Object.defineProperty(exports, "__esModule", { value: true });
  5742. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  5743. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  5744. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  5745. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  5746. const IdentifierObfuscatingReplacer_1 = __webpack_require__(/*! ../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer.ts");
  5747. const NodeType_1 = __webpack_require__(/*! ../../enums/node/NodeType */ "./src/enums/node/NodeType.ts");
  5748. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  5749. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  5750. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  5751. const NodeLexicalScopeUtils_1 = __webpack_require__(/*! ../../node/NodeLexicalScopeUtils */ "./src/node/NodeLexicalScopeUtils.ts");
  5752. const NodeMetadata_1 = __webpack_require__(/*! ../../node/NodeMetadata */ "./src/node/NodeMetadata.ts");
  5753. let FunctionDeclarationTransformer = class FunctionDeclarationTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  5754. constructor(identifierObfuscatingReplacerFactory, randomGenerator, options) {
  5755. super(randomGenerator, options);
  5756. this.replaceableIdentifiers = new Map();
  5757. this.identifierObfuscatingReplacer = identifierObfuscatingReplacerFactory(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);
  5758. }
  5759. getVisitor(transformationStage) {
  5760. switch (transformationStage) {
  5761. case TransformationStage_1.TransformationStage.Obfuscating:
  5762. return {
  5763. enter: (node, parentNode) => {
  5764. if (parentNode
  5765. && NodeGuards_1.NodeGuards.isFunctionDeclarationNode(node)
  5766. && !NodeGuards_1.NodeGuards.isExportNamedDeclarationNode(parentNode)) {
  5767. return this.transformNode(node, parentNode);
  5768. }
  5769. }
  5770. };
  5771. default:
  5772. return null;
  5773. }
  5774. }
  5775. transformNode(functionDeclarationNode, parentNode) {
  5776. const lexicalScopeNode = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScope(parentNode);
  5777. if (!lexicalScopeNode) {
  5778. return functionDeclarationNode;
  5779. }
  5780. const isGlobalDeclaration = lexicalScopeNode.type === NodeType_1.NodeType.Program;
  5781. if (!this.options.renameGlobals && isGlobalDeclaration) {
  5782. return functionDeclarationNode;
  5783. }
  5784. this.storeFunctionName(functionDeclarationNode, lexicalScopeNode, isGlobalDeclaration);
  5785. if (this.replaceableIdentifiers.has(lexicalScopeNode)) {
  5786. this.replaceScopeCachedIdentifiers(functionDeclarationNode, lexicalScopeNode);
  5787. }
  5788. else {
  5789. this.replaceScopeIdentifiers(lexicalScopeNode);
  5790. }
  5791. return functionDeclarationNode;
  5792. }
  5793. storeFunctionName(functionDeclarationNode, lexicalScopeNode, isGlobalDeclaration) {
  5794. if (isGlobalDeclaration) {
  5795. this.identifierObfuscatingReplacer.storeGlobalName(functionDeclarationNode.id.name, lexicalScopeNode);
  5796. }
  5797. else {
  5798. this.identifierObfuscatingReplacer.storeLocalName(functionDeclarationNode.id.name, lexicalScopeNode);
  5799. }
  5800. }
  5801. replaceScopeCachedIdentifiers(functionDeclarationNode, lexicalScopeNode) {
  5802. const cachedReplaceableIdentifiersNamesMap = this.replaceableIdentifiers.get(lexicalScopeNode);
  5803. const cachedReplaceableIdentifiers = cachedReplaceableIdentifiersNamesMap
  5804. .get(functionDeclarationNode.id.name);
  5805. if (!cachedReplaceableIdentifiers) {
  5806. return;
  5807. }
  5808. const cachedReplaceableIdentifierLength = cachedReplaceableIdentifiers.length;
  5809. for (let i = 0; i < cachedReplaceableIdentifierLength; i++) {
  5810. const replaceableIdentifier = cachedReplaceableIdentifiers[i];
  5811. const newReplaceableIdentifier = this.identifierObfuscatingReplacer
  5812. .replace(replaceableIdentifier.name, lexicalScopeNode);
  5813. replaceableIdentifier.name = newReplaceableIdentifier.name;
  5814. NodeMetadata_1.NodeMetadata.set(replaceableIdentifier, { renamedIdentifier: true });
  5815. }
  5816. }
  5817. replaceScopeIdentifiers(lexicalScopeNode) {
  5818. const storedReplaceableIdentifiersNamesMap = new Map();
  5819. estraverse.replace(lexicalScopeNode, {
  5820. enter: (node, parentNode) => {
  5821. if (parentNode
  5822. && (parentNode !== lexicalScopeNode)
  5823. && NodeGuards_1.NodeGuards.isReplaceableIdentifierNode(node, parentNode)
  5824. && !NodeMetadata_1.NodeMetadata.isRenamedIdentifier(node)) {
  5825. const newIdentifier = this.identifierObfuscatingReplacer
  5826. .replace(node.name, lexicalScopeNode);
  5827. const newIdentifierName = newIdentifier.name;
  5828. if (node.name !== newIdentifierName) {
  5829. node.name = newIdentifierName;
  5830. NodeMetadata_1.NodeMetadata.set(node, { renamedIdentifier: true });
  5831. }
  5832. else {
  5833. const storedReplaceableIdentifiers = storedReplaceableIdentifiersNamesMap.get(node.name) || [];
  5834. storedReplaceableIdentifiers.push(node);
  5835. storedReplaceableIdentifiersNamesMap.set(node.name, storedReplaceableIdentifiers);
  5836. }
  5837. }
  5838. }
  5839. });
  5840. this.replaceableIdentifiers.set(lexicalScopeNode, storedReplaceableIdentifiersNamesMap);
  5841. }
  5842. };
  5843. FunctionDeclarationTransformer = tslib_1.__decorate([
  5844. inversify_1.injectable(),
  5845. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)),
  5846. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  5847. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  5848. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  5849. ], FunctionDeclarationTransformer);
  5850. exports.FunctionDeclarationTransformer = FunctionDeclarationTransformer;
  5851. /***/ }),
  5852. /***/ "./src/node-transformers/obfuscating-transformers/FunctionTransformer.ts":
  5853. /*!*******************************************************************************!*\
  5854. !*** ./src/node-transformers/obfuscating-transformers/FunctionTransformer.ts ***!
  5855. \*******************************************************************************/
  5856. /*! no static exports found */
  5857. /***/ (function(module, exports, __webpack_require__) {
  5858. "use strict";
  5859. var FunctionTransformer_1;
  5860. Object.defineProperty(exports, "__esModule", { value: true });
  5861. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  5862. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  5863. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  5864. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  5865. const IdentifierObfuscatingReplacer_1 = __webpack_require__(/*! ../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer.ts");
  5866. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  5867. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  5868. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  5869. const NodeLexicalScopeUtils_1 = __webpack_require__(/*! ../../node/NodeLexicalScopeUtils */ "./src/node/NodeLexicalScopeUtils.ts");
  5870. const NodeMetadata_1 = __webpack_require__(/*! ../../node/NodeMetadata */ "./src/node/NodeMetadata.ts");
  5871. const NodeType_1 = __webpack_require__(/*! ../../enums/node/NodeType */ "./src/enums/node/NodeType.ts");
  5872. let FunctionTransformer = FunctionTransformer_1 = class FunctionTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  5873. constructor(identifierObfuscatingReplacerFactory, randomGenerator, options) {
  5874. super(randomGenerator, options);
  5875. this.identifierObfuscatingReplacer = identifierObfuscatingReplacerFactory(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);
  5876. }
  5877. static isProhibitedIdentifierOfPropertyNode(node, parentNode) {
  5878. return NodeGuards_1.NodeGuards.isIdentifierNode(node)
  5879. && !!parentNode
  5880. && NodeGuards_1.NodeGuards.isPropertyNode(parentNode)
  5881. && parentNode.key === node;
  5882. }
  5883. static isProhibitedIdentifierOfShorthandPropertyNode(node) {
  5884. return NodeGuards_1.NodeGuards.isPropertyNode(node)
  5885. && node.shorthand
  5886. && NodeGuards_1.NodeGuards.isIdentifierNode(node.key);
  5887. }
  5888. getVisitor(transformationStage) {
  5889. switch (transformationStage) {
  5890. case TransformationStage_1.TransformationStage.Obfuscating:
  5891. return {
  5892. enter: (node, parentNode) => {
  5893. if (parentNode && NodeGuards_1.NodeGuards.isFunctionNode(node)) {
  5894. return this.transformNode(node, parentNode);
  5895. }
  5896. }
  5897. };
  5898. default:
  5899. return null;
  5900. }
  5901. }
  5902. transformNode(functionNode, parentNode) {
  5903. const lexicalScopeNode = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScope(functionNode);
  5904. if (!lexicalScopeNode) {
  5905. return functionNode;
  5906. }
  5907. this.storeFunctionParams(functionNode, lexicalScopeNode);
  5908. this.replaceFunctionParams(functionNode, lexicalScopeNode);
  5909. return functionNode;
  5910. }
  5911. isGlobalFunctionDeclarationIdentifier(node, parentNode) {
  5912. if (!NodeGuards_1.NodeGuards.isFunctionDeclarationNode(parentNode) || parentNode.id !== node) {
  5913. return false;
  5914. }
  5915. const lexicalScopeNode = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScopes(parentNode)[1];
  5916. if (!lexicalScopeNode) {
  5917. return false;
  5918. }
  5919. const isGlobalDeclaration = lexicalScopeNode.type === NodeType_1.NodeType.Program;
  5920. return !this.options.renameGlobals && isGlobalDeclaration;
  5921. }
  5922. storeFunctionParams(functionNode, lexicalScopeNode) {
  5923. const visitor = {
  5924. enter: (node, parentNode) => {
  5925. if (FunctionTransformer_1.isProhibitedIdentifierOfPropertyNode(node, parentNode)) {
  5926. return;
  5927. }
  5928. if (NodeGuards_1.NodeGuards.isAssignmentPatternNode(node) && NodeGuards_1.NodeGuards.isIdentifierNode(node.left)) {
  5929. this.identifierObfuscatingReplacer.storeLocalName(node.left.name, lexicalScopeNode);
  5930. return estraverse.VisitorOption.Skip;
  5931. }
  5932. if (NodeGuards_1.NodeGuards.isIdentifierNode(node)) {
  5933. this.identifierObfuscatingReplacer.storeLocalName(node.name, lexicalScopeNode);
  5934. }
  5935. }
  5936. };
  5937. functionNode.params.forEach((paramsNode) => {
  5938. estraverse.traverse(paramsNode, visitor);
  5939. });
  5940. }
  5941. replaceFunctionParams(functionNode, lexicalScopeNode, ignoredIdentifierNamesSet = new Set()) {
  5942. const visitor = {
  5943. enter: (node, parentNode) => {
  5944. if (NodeGuards_1.NodeGuards.isFunctionNode(node) && node !== functionNode) {
  5945. this.replaceFunctionParams(node, lexicalScopeNode, new Set(ignoredIdentifierNamesSet));
  5946. return estraverse.VisitorOption.Skip;
  5947. }
  5948. if (FunctionTransformer_1.isProhibitedIdentifierOfShorthandPropertyNode(node)) {
  5949. ignoredIdentifierNamesSet.add(node.key.name);
  5950. return;
  5951. }
  5952. if (parentNode
  5953. && NodeGuards_1.NodeGuards.isReplaceableIdentifierNode(node, parentNode)
  5954. && !NodeMetadata_1.NodeMetadata.isRenamedIdentifier(node)
  5955. && !ignoredIdentifierNamesSet.has(node.name)) {
  5956. if (this.isGlobalFunctionDeclarationIdentifier(node, parentNode)) {
  5957. return;
  5958. }
  5959. const newIdentifier = this.identifierObfuscatingReplacer
  5960. .replace(node.name, lexicalScopeNode);
  5961. const newIdentifierName = newIdentifier.name;
  5962. if (node.name !== newIdentifierName) {
  5963. node.name = newIdentifierName;
  5964. NodeMetadata_1.NodeMetadata.set(node, { renamedIdentifier: true });
  5965. }
  5966. }
  5967. }
  5968. };
  5969. estraverse.replace(functionNode, visitor);
  5970. }
  5971. };
  5972. FunctionTransformer = FunctionTransformer_1 = tslib_1.__decorate([
  5973. inversify_1.injectable(),
  5974. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)),
  5975. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  5976. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  5977. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  5978. ], FunctionTransformer);
  5979. exports.FunctionTransformer = FunctionTransformer;
  5980. /***/ }),
  5981. /***/ "./src/node-transformers/obfuscating-transformers/ImportDeclarationTransformer.ts":
  5982. /*!****************************************************************************************!*\
  5983. !*** ./src/node-transformers/obfuscating-transformers/ImportDeclarationTransformer.ts ***!
  5984. \****************************************************************************************/
  5985. /*! no static exports found */
  5986. /***/ (function(module, exports, __webpack_require__) {
  5987. "use strict";
  5988. var ImportDeclarationTransformer_1;
  5989. Object.defineProperty(exports, "__esModule", { value: true });
  5990. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  5991. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  5992. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  5993. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  5994. const IdentifierObfuscatingReplacer_1 = __webpack_require__(/*! ../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer.ts");
  5995. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  5996. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  5997. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  5998. const NodeLexicalScopeUtils_1 = __webpack_require__(/*! ../../node/NodeLexicalScopeUtils */ "./src/node/NodeLexicalScopeUtils.ts");
  5999. const NodeMetadata_1 = __webpack_require__(/*! ../../node/NodeMetadata */ "./src/node/NodeMetadata.ts");
  6000. let ImportDeclarationTransformer = ImportDeclarationTransformer_1 = class ImportDeclarationTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  6001. constructor(identifierObfuscatingReplacerFactory, randomGenerator, options) {
  6002. super(randomGenerator, options);
  6003. this.replaceableIdentifiers = new Map();
  6004. this.identifierObfuscatingReplacer = identifierObfuscatingReplacerFactory(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);
  6005. }
  6006. static isProhibitedImportSpecifierNode(importSpecifierNode) {
  6007. return NodeGuards_1.NodeGuards.isImportSpecifierNode(importSpecifierNode)
  6008. && importSpecifierNode.imported.name === importSpecifierNode.local.name;
  6009. }
  6010. getVisitor(transformationStage) {
  6011. switch (transformationStage) {
  6012. case TransformationStage_1.TransformationStage.Obfuscating:
  6013. return {
  6014. enter: (node, parentNode) => {
  6015. if (parentNode && NodeGuards_1.NodeGuards.isImportDeclarationNode(node)) {
  6016. return this.transformNode(node, parentNode);
  6017. }
  6018. }
  6019. };
  6020. default:
  6021. return null;
  6022. }
  6023. }
  6024. transformNode(importDeclarationNode, parentNode) {
  6025. const lexicalScopeNode = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScope(importDeclarationNode);
  6026. if (!lexicalScopeNode) {
  6027. return importDeclarationNode;
  6028. }
  6029. this.storeImportSpecifierNames(importDeclarationNode, lexicalScopeNode);
  6030. if (this.replaceableIdentifiers.has(lexicalScopeNode)) {
  6031. this.replaceScopeCachedIdentifiers(lexicalScopeNode);
  6032. }
  6033. else {
  6034. this.replaceScopeIdentifiers(lexicalScopeNode);
  6035. }
  6036. return importDeclarationNode;
  6037. }
  6038. storeImportSpecifierNames(importDeclarationNode, lexicalScopeNode) {
  6039. importDeclarationNode.specifiers.forEach((importSpecifierNode) => {
  6040. if (ImportDeclarationTransformer_1.isProhibitedImportSpecifierNode(importSpecifierNode)) {
  6041. return;
  6042. }
  6043. this.identifierObfuscatingReplacer.storeGlobalName(importSpecifierNode.local.name, lexicalScopeNode);
  6044. });
  6045. }
  6046. replaceScopeCachedIdentifiers(lexicalScopeNode) {
  6047. const cachedReplaceableIdentifiers = this.replaceableIdentifiers.get(lexicalScopeNode);
  6048. cachedReplaceableIdentifiers.forEach((replaceableIdentifier) => {
  6049. const newReplaceableIdentifier = this.identifierObfuscatingReplacer
  6050. .replace(replaceableIdentifier.name, lexicalScopeNode);
  6051. replaceableIdentifier.name = newReplaceableIdentifier.name;
  6052. NodeMetadata_1.NodeMetadata.set(replaceableIdentifier, { renamedIdentifier: true });
  6053. });
  6054. }
  6055. replaceScopeIdentifiers(lexicalScopeNode) {
  6056. const storedReplaceableIdentifiers = [];
  6057. estraverse.replace(lexicalScopeNode, {
  6058. enter: (node, parentNode) => {
  6059. if (parentNode
  6060. && NodeGuards_1.NodeGuards.isReplaceableIdentifierNode(node, parentNode)
  6061. && !NodeMetadata_1.NodeMetadata.isRenamedIdentifier(node)) {
  6062. const newIdentifier = this.identifierObfuscatingReplacer
  6063. .replace(node.name, lexicalScopeNode);
  6064. const newIdentifierName = newIdentifier.name;
  6065. if (node.name !== newIdentifierName) {
  6066. node.name = newIdentifierName;
  6067. NodeMetadata_1.NodeMetadata.set(node, { renamedIdentifier: true });
  6068. }
  6069. else {
  6070. storedReplaceableIdentifiers.push(node);
  6071. }
  6072. }
  6073. }
  6074. });
  6075. this.replaceableIdentifiers.set(lexicalScopeNode, storedReplaceableIdentifiers);
  6076. }
  6077. };
  6078. ImportDeclarationTransformer = ImportDeclarationTransformer_1 = tslib_1.__decorate([
  6079. inversify_1.injectable(),
  6080. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)),
  6081. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  6082. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  6083. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  6084. ], ImportDeclarationTransformer);
  6085. exports.ImportDeclarationTransformer = ImportDeclarationTransformer;
  6086. /***/ }),
  6087. /***/ "./src/node-transformers/obfuscating-transformers/LabeledStatementTransformer.ts":
  6088. /*!***************************************************************************************!*\
  6089. !*** ./src/node-transformers/obfuscating-transformers/LabeledStatementTransformer.ts ***!
  6090. \***************************************************************************************/
  6091. /*! no static exports found */
  6092. /***/ (function(module, exports, __webpack_require__) {
  6093. "use strict";
  6094. Object.defineProperty(exports, "__esModule", { value: true });
  6095. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  6096. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  6097. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  6098. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  6099. const IdentifierObfuscatingReplacer_1 = __webpack_require__(/*! ../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer.ts");
  6100. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  6101. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  6102. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  6103. const NodeLexicalScopeUtils_1 = __webpack_require__(/*! ../../node/NodeLexicalScopeUtils */ "./src/node/NodeLexicalScopeUtils.ts");
  6104. let LabeledStatementTransformer = class LabeledStatementTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  6105. constructor(identifierObfuscatingReplacerFactory, randomGenerator, options) {
  6106. super(randomGenerator, options);
  6107. this.identifierObfuscatingReplacer = identifierObfuscatingReplacerFactory(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);
  6108. }
  6109. getVisitor(transformationStage) {
  6110. switch (transformationStage) {
  6111. case TransformationStage_1.TransformationStage.Obfuscating:
  6112. return {
  6113. enter: (node, parentNode) => {
  6114. if (parentNode && NodeGuards_1.NodeGuards.isLabeledStatementNode(node)) {
  6115. return this.transformNode(node, parentNode);
  6116. }
  6117. }
  6118. };
  6119. default:
  6120. return null;
  6121. }
  6122. }
  6123. transformNode(labeledStatementNode, parentNode) {
  6124. const lexicalScopeNode = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScope(labeledStatementNode);
  6125. if (!lexicalScopeNode) {
  6126. return labeledStatementNode;
  6127. }
  6128. this.storeLabeledStatementName(labeledStatementNode, lexicalScopeNode);
  6129. this.replaceLabeledStatementName(labeledStatementNode, lexicalScopeNode);
  6130. return labeledStatementNode;
  6131. }
  6132. storeLabeledStatementName(labeledStatementNode, lexicalScopeNode) {
  6133. this.identifierObfuscatingReplacer.storeLocalName(labeledStatementNode.label.name, lexicalScopeNode);
  6134. }
  6135. replaceLabeledStatementName(labeledStatementNode, lexicalScopeNode) {
  6136. estraverse.replace(labeledStatementNode, {
  6137. enter: (node, parentNode) => {
  6138. if (parentNode && NodeGuards_1.NodeGuards.isLabelIdentifierNode(node, parentNode)) {
  6139. const newIdentifier = this.identifierObfuscatingReplacer
  6140. .replace(node.name, lexicalScopeNode);
  6141. node.name = newIdentifier.name;
  6142. }
  6143. }
  6144. });
  6145. }
  6146. };
  6147. LabeledStatementTransformer = tslib_1.__decorate([
  6148. inversify_1.injectable(),
  6149. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)),
  6150. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  6151. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  6152. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  6153. ], LabeledStatementTransformer);
  6154. exports.LabeledStatementTransformer = LabeledStatementTransformer;
  6155. /***/ }),
  6156. /***/ "./src/node-transformers/obfuscating-transformers/LiteralTransformer.ts":
  6157. /*!******************************************************************************!*\
  6158. !*** ./src/node-transformers/obfuscating-transformers/LiteralTransformer.ts ***!
  6159. \******************************************************************************/
  6160. /*! no static exports found */
  6161. /***/ (function(module, exports, __webpack_require__) {
  6162. "use strict";
  6163. Object.defineProperty(exports, "__esModule", { value: true });
  6164. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  6165. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  6166. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  6167. const LiteralObfuscatingReplacer_1 = __webpack_require__(/*! ../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/LiteralObfuscatingReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/LiteralObfuscatingReplacer.ts");
  6168. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  6169. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  6170. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  6171. const NodeMetadata_1 = __webpack_require__(/*! ../../node/NodeMetadata */ "./src/node/NodeMetadata.ts");
  6172. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  6173. let LiteralTransformer = class LiteralTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  6174. constructor(literalObfuscatingReplacerFactory, randomGenerator, options) {
  6175. super(randomGenerator, options);
  6176. this.literalObfuscatingReplacerFactory = literalObfuscatingReplacerFactory;
  6177. }
  6178. getVisitor(transformationStage) {
  6179. switch (transformationStage) {
  6180. case TransformationStage_1.TransformationStage.Obfuscating:
  6181. return {
  6182. enter: (node, parentNode) => {
  6183. if (parentNode && NodeGuards_1.NodeGuards.isLiteralNode(node) && !NodeMetadata_1.NodeMetadata.isReplacedLiteral(node)) {
  6184. return this.transformNode(node, parentNode);
  6185. }
  6186. }
  6187. };
  6188. default:
  6189. return null;
  6190. }
  6191. }
  6192. transformNode(literalNode, parentNode) {
  6193. if (this.isProhibitedNode(literalNode, parentNode)) {
  6194. return literalNode;
  6195. }
  6196. let newLiteralNode;
  6197. switch (typeof literalNode.value) {
  6198. case 'boolean':
  6199. newLiteralNode = this.literalObfuscatingReplacerFactory(LiteralObfuscatingReplacer_1.LiteralObfuscatingReplacer.BooleanLiteralObfuscatingReplacer).replace(literalNode.value);
  6200. break;
  6201. case 'number':
  6202. newLiteralNode = this.literalObfuscatingReplacerFactory(LiteralObfuscatingReplacer_1.LiteralObfuscatingReplacer.NumberLiteralObfuscatingReplacer).replace(literalNode.value);
  6203. break;
  6204. case 'string':
  6205. newLiteralNode = this.literalObfuscatingReplacerFactory(LiteralObfuscatingReplacer_1.LiteralObfuscatingReplacer.StringLiteralObfuscatingReplacer).replace(literalNode.value);
  6206. break;
  6207. default:
  6208. newLiteralNode = literalNode;
  6209. }
  6210. NodeUtils_1.NodeUtils.parentizeNode(newLiteralNode, parentNode);
  6211. return newLiteralNode;
  6212. }
  6213. isProhibitedNode(literalNode, parentNode) {
  6214. if (NodeGuards_1.NodeGuards.isPropertyNode(parentNode) && parentNode.key === literalNode) {
  6215. return true;
  6216. }
  6217. if (NodeGuards_1.NodeGuards.isImportDeclarationNode(parentNode)) {
  6218. return true;
  6219. }
  6220. return false;
  6221. }
  6222. };
  6223. LiteralTransformer = tslib_1.__decorate([
  6224. inversify_1.injectable(),
  6225. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatingReplacer)),
  6226. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  6227. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  6228. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  6229. ], LiteralTransformer);
  6230. exports.LiteralTransformer = LiteralTransformer;
  6231. /***/ }),
  6232. /***/ "./src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts":
  6233. /*!******************************************************************************************!*\
  6234. !*** ./src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts ***!
  6235. \******************************************************************************************/
  6236. /*! no static exports found */
  6237. /***/ (function(module, exports, __webpack_require__) {
  6238. "use strict";
  6239. Object.defineProperty(exports, "__esModule", { value: true });
  6240. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  6241. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  6242. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  6243. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  6244. const IdentifierObfuscatingReplacer_1 = __webpack_require__(/*! ../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer.ts");
  6245. const NodeType_1 = __webpack_require__(/*! ../../enums/node/NodeType */ "./src/enums/node/NodeType.ts");
  6246. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  6247. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  6248. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  6249. const NodeLexicalScopeUtils_1 = __webpack_require__(/*! ../../node/NodeLexicalScopeUtils */ "./src/node/NodeLexicalScopeUtils.ts");
  6250. const NodeBlockLexicalScopeUtils_1 = __webpack_require__(/*! ../../node/NodeBlockLexicalScopeUtils */ "./src/node/NodeBlockLexicalScopeUtils.ts");
  6251. const NodeMetadata_1 = __webpack_require__(/*! ../../node/NodeMetadata */ "./src/node/NodeMetadata.ts");
  6252. let VariableDeclarationTransformer = class VariableDeclarationTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  6253. constructor(identifierObfuscatingReplacerFactory, randomGenerator, options) {
  6254. super(randomGenerator, options);
  6255. this.lexicalScopesWithObjectPatternWithoutDeclarationMap = new Map();
  6256. this.replaceableIdentifiers = new Map();
  6257. this.identifierObfuscatingReplacer = identifierObfuscatingReplacerFactory(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);
  6258. }
  6259. getVisitor(transformationStage) {
  6260. switch (transformationStage) {
  6261. case TransformationStage_1.TransformationStage.Obfuscating:
  6262. return {
  6263. enter: (node, parentNode) => {
  6264. if (parentNode
  6265. && NodeGuards_1.NodeGuards.isVariableDeclarationNode(node)
  6266. && !NodeGuards_1.NodeGuards.isExportNamedDeclarationNode(parentNode)) {
  6267. return this.transformNode(node, parentNode);
  6268. }
  6269. }
  6270. };
  6271. default:
  6272. return null;
  6273. }
  6274. }
  6275. transformNode(variableDeclarationNode, parentNode) {
  6276. const lexicalScopeNode = variableDeclarationNode.kind === 'var'
  6277. ? NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScope(variableDeclarationNode)
  6278. : NodeBlockLexicalScopeUtils_1.NodeBlockLexicalScopeUtils.getLexicalScope(variableDeclarationNode);
  6279. if (!lexicalScopeNode) {
  6280. return variableDeclarationNode;
  6281. }
  6282. const isGlobalDeclaration = lexicalScopeNode.type === NodeType_1.NodeType.Program;
  6283. if (!this.options.renameGlobals && isGlobalDeclaration) {
  6284. return variableDeclarationNode;
  6285. }
  6286. const scopeNode = variableDeclarationNode.kind === 'var'
  6287. ? lexicalScopeNode
  6288. : parentNode;
  6289. this.storeVariableNames(variableDeclarationNode, lexicalScopeNode, isGlobalDeclaration);
  6290. if (this.replaceableIdentifiers.has(scopeNode)) {
  6291. this.replaceScopeCachedIdentifiers(variableDeclarationNode, lexicalScopeNode, scopeNode);
  6292. }
  6293. else {
  6294. this.replaceScopeIdentifiers(scopeNode, lexicalScopeNode);
  6295. }
  6296. return variableDeclarationNode;
  6297. }
  6298. storeVariableNames(variableDeclarationNode, lexicalScopeNode, isGlobalDeclaration) {
  6299. this.traverseDeclarationIdentifiers(variableDeclarationNode, (identifierNode) => {
  6300. if (this.isProhibitedVariableName(identifierNode, lexicalScopeNode, variableDeclarationNode)) {
  6301. return;
  6302. }
  6303. if (isGlobalDeclaration) {
  6304. this.identifierObfuscatingReplacer.storeGlobalName(identifierNode.name, lexicalScopeNode);
  6305. }
  6306. else {
  6307. this.identifierObfuscatingReplacer.storeLocalName(identifierNode.name, lexicalScopeNode);
  6308. }
  6309. });
  6310. }
  6311. isProhibitedVariableName(identifierNode, lexicalScopeNode, hostVariableDeclarationNode) {
  6312. return this.isProhibitedVariableNameUsedInObjectPatternNode(identifierNode, lexicalScopeNode, hostVariableDeclarationNode);
  6313. }
  6314. isProhibitedVariableNameUsedInObjectPatternNode(identifierNode, lexicalScopeNode, hostVariableDeclarationNode) {
  6315. if (hostVariableDeclarationNode.kind === 'const') {
  6316. return false;
  6317. }
  6318. let isLexicalScopeHasObjectPatternWithoutDeclaration = this.lexicalScopesWithObjectPatternWithoutDeclarationMap.get(lexicalScopeNode);
  6319. if (isLexicalScopeHasObjectPatternWithoutDeclaration === false) {
  6320. return false;
  6321. }
  6322. let isProhibitedVariableDeclaration = false;
  6323. estraverse.traverse(lexicalScopeNode, {
  6324. enter: (node, parentNode) => {
  6325. if (NodeGuards_1.NodeGuards.isObjectPatternNode(node)
  6326. && parentNode
  6327. && NodeGuards_1.NodeGuards.isAssignmentExpressionNode(parentNode)) {
  6328. isLexicalScopeHasObjectPatternWithoutDeclaration = true;
  6329. const properties = node.properties;
  6330. for (const property of properties) {
  6331. if (property.computed || !property.shorthand) {
  6332. continue;
  6333. }
  6334. if (!NodeGuards_1.NodeGuards.isIdentifierNode(property.key)) {
  6335. continue;
  6336. }
  6337. if (identifierNode.name !== property.key.name) {
  6338. continue;
  6339. }
  6340. isProhibitedVariableDeclaration = true;
  6341. return estraverse.VisitorOption.Break;
  6342. }
  6343. }
  6344. }
  6345. });
  6346. this.lexicalScopesWithObjectPatternWithoutDeclarationMap.set(lexicalScopeNode, (isLexicalScopeHasObjectPatternWithoutDeclaration !== null && isLexicalScopeHasObjectPatternWithoutDeclaration !== void 0 ? isLexicalScopeHasObjectPatternWithoutDeclaration : false));
  6347. return isProhibitedVariableDeclaration;
  6348. }
  6349. replaceScopeCachedIdentifiers(variableDeclarationNode, lexicalScopeNode, scopeNode) {
  6350. const cachedReplaceableIdentifiersNamesMap = this.replaceableIdentifiers.get(scopeNode);
  6351. const identifierNames = [];
  6352. this.traverseDeclarationIdentifiers(variableDeclarationNode, (identifierNode) => {
  6353. identifierNames.push(identifierNode.name);
  6354. });
  6355. identifierNames.forEach((identifierName) => {
  6356. const cachedReplaceableIdentifiers = cachedReplaceableIdentifiersNamesMap.get(identifierName);
  6357. if (!cachedReplaceableIdentifiers) {
  6358. return;
  6359. }
  6360. const cachedReplaceableIdentifierLength = cachedReplaceableIdentifiers.length;
  6361. for (let i = 0; i < cachedReplaceableIdentifierLength; i++) {
  6362. const replaceableIdentifier = cachedReplaceableIdentifiers[i];
  6363. if (identifierName !== replaceableIdentifier.name) {
  6364. continue;
  6365. }
  6366. const newReplaceableIdentifier = this.identifierObfuscatingReplacer
  6367. .replace(replaceableIdentifier.name, lexicalScopeNode);
  6368. replaceableIdentifier.name = newReplaceableIdentifier.name;
  6369. NodeMetadata_1.NodeMetadata.set(replaceableIdentifier, { renamedIdentifier: true });
  6370. }
  6371. });
  6372. }
  6373. replaceScopeIdentifiers(scopeNode, lexicalScopeNode) {
  6374. const storedReplaceableIdentifiersNamesMap = new Map();
  6375. estraverse.replace(scopeNode, {
  6376. enter: (node, parentNode) => {
  6377. if (parentNode
  6378. && NodeGuards_1.NodeGuards.isReplaceableIdentifierNode(node, parentNode)
  6379. && !NodeMetadata_1.NodeMetadata.isRenamedIdentifier(node)) {
  6380. const newIdentifier = this.identifierObfuscatingReplacer
  6381. .replace(node.name, lexicalScopeNode);
  6382. const newIdentifierName = newIdentifier.name;
  6383. if (node.name !== newIdentifierName) {
  6384. node.name = newIdentifierName;
  6385. NodeMetadata_1.NodeMetadata.set(node, { renamedIdentifier: true });
  6386. }
  6387. else {
  6388. const storedReplaceableIdentifiers = storedReplaceableIdentifiersNamesMap.get(node.name) || [];
  6389. storedReplaceableIdentifiers.push(node);
  6390. storedReplaceableIdentifiersNamesMap.set(node.name, storedReplaceableIdentifiers);
  6391. }
  6392. }
  6393. }
  6394. });
  6395. this.replaceableIdentifiers.set(scopeNode, storedReplaceableIdentifiersNamesMap);
  6396. }
  6397. traverseDeclarationIdentifiers(variableDeclarationNode, callback) {
  6398. variableDeclarationNode.declarations
  6399. .forEach((variableDeclaratorNode) => {
  6400. estraverse.traverse(variableDeclaratorNode.id, {
  6401. enter: (node) => {
  6402. if (NodeGuards_1.NodeGuards.isPropertyNode(node)) {
  6403. return estraverse.VisitorOption.Skip;
  6404. }
  6405. if (NodeGuards_1.NodeGuards.isIdentifierNode(node)) {
  6406. callback(node, variableDeclaratorNode);
  6407. }
  6408. }
  6409. });
  6410. });
  6411. }
  6412. };
  6413. VariableDeclarationTransformer = tslib_1.__decorate([
  6414. inversify_1.injectable(),
  6415. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)),
  6416. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  6417. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  6418. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  6419. ], VariableDeclarationTransformer);
  6420. exports.VariableDeclarationTransformer = VariableDeclarationTransformer;
  6421. /***/ }),
  6422. /***/ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/AbstractObfuscatingReplacer.ts":
  6423. /*!*************************************************************************************************************!*\
  6424. !*** ./src/node-transformers/obfuscating-transformers/obfuscating-replacers/AbstractObfuscatingReplacer.ts ***!
  6425. \*************************************************************************************************************/
  6426. /*! no static exports found */
  6427. /***/ (function(module, exports, __webpack_require__) {
  6428. "use strict";
  6429. Object.defineProperty(exports, "__esModule", { value: true });
  6430. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  6431. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  6432. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  6433. let AbstractObfuscatingReplacer = class AbstractObfuscatingReplacer {
  6434. constructor(options) {
  6435. this.options = options;
  6436. }
  6437. };
  6438. AbstractObfuscatingReplacer = tslib_1.__decorate([
  6439. inversify_1.injectable(),
  6440. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  6441. tslib_1.__metadata("design:paramtypes", [Object])
  6442. ], AbstractObfuscatingReplacer);
  6443. exports.AbstractObfuscatingReplacer = AbstractObfuscatingReplacer;
  6444. /***/ }),
  6445. /***/ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.ts":
  6446. /*!****************************************************************************************************************************************************!*\
  6447. !*** ./src/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.ts ***!
  6448. \****************************************************************************************************************************************************/
  6449. /*! no static exports found */
  6450. /***/ (function(module, exports, __webpack_require__) {
  6451. "use strict";
  6452. Object.defineProperty(exports, "__esModule", { value: true });
  6453. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  6454. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  6455. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  6456. const AbstractObfuscatingReplacer_1 = __webpack_require__(/*! ../AbstractObfuscatingReplacer */ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/AbstractObfuscatingReplacer.ts");
  6457. const NodeFactory_1 = __webpack_require__(/*! ../../../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  6458. let BaseIdentifierObfuscatingReplacer = class BaseIdentifierObfuscatingReplacer extends AbstractObfuscatingReplacer_1.AbstractObfuscatingReplacer {
  6459. constructor(identifierNamesGeneratorFactory, options) {
  6460. super(options);
  6461. this.blockScopesMap = new Map();
  6462. this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);
  6463. }
  6464. replace(nodeValue, lexicalScopeNode) {
  6465. if (this.blockScopesMap.has(lexicalScopeNode)) {
  6466. const namesMap = this.blockScopesMap.get(lexicalScopeNode);
  6467. if (namesMap.has(nodeValue)) {
  6468. nodeValue = namesMap.get(nodeValue);
  6469. }
  6470. }
  6471. return NodeFactory_1.NodeFactory.identifierNode(nodeValue);
  6472. }
  6473. storeGlobalName(nodeName, lexicalScopeNode) {
  6474. if (this.isReservedName(nodeName)) {
  6475. return;
  6476. }
  6477. const identifierName = this.identifierNamesGenerator.generateWithPrefix();
  6478. if (!this.blockScopesMap.has(lexicalScopeNode)) {
  6479. this.blockScopesMap.set(lexicalScopeNode, new Map());
  6480. }
  6481. const namesMap = this.blockScopesMap.get(lexicalScopeNode);
  6482. namesMap.set(nodeName, identifierName);
  6483. }
  6484. storeLocalName(nodeName, lexicalScopeNode) {
  6485. if (this.isReservedName(nodeName)) {
  6486. return;
  6487. }
  6488. const identifierName = this.identifierNamesGenerator.generate();
  6489. if (!this.blockScopesMap.has(lexicalScopeNode)) {
  6490. this.blockScopesMap.set(lexicalScopeNode, new Map());
  6491. }
  6492. const namesMap = this.blockScopesMap.get(lexicalScopeNode);
  6493. namesMap.set(nodeName, identifierName);
  6494. }
  6495. preserveName(name) {
  6496. this.identifierNamesGenerator.preserveName(name);
  6497. }
  6498. isReservedName(name) {
  6499. if (!this.options.reservedNames.length) {
  6500. return false;
  6501. }
  6502. return this.options.reservedNames
  6503. .some((reservedName) => {
  6504. return new RegExp(reservedName, 'g').exec(name) !== null;
  6505. });
  6506. }
  6507. };
  6508. BaseIdentifierObfuscatingReplacer = tslib_1.__decorate([
  6509. inversify_1.injectable(),
  6510. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  6511. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  6512. tslib_1.__metadata("design:paramtypes", [Function, Object])
  6513. ], BaseIdentifierObfuscatingReplacer);
  6514. exports.BaseIdentifierObfuscatingReplacer = BaseIdentifierObfuscatingReplacer;
  6515. /***/ }),
  6516. /***/ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/BooleanLiteralObfuscatingReplacer.ts":
  6517. /*!*************************************************************************************************************************************************!*\
  6518. !*** ./src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/BooleanLiteralObfuscatingReplacer.ts ***!
  6519. \*************************************************************************************************************************************************/
  6520. /*! no static exports found */
  6521. /***/ (function(module, exports, __webpack_require__) {
  6522. "use strict";
  6523. var BooleanLiteralObfuscatingReplacer_1;
  6524. Object.defineProperty(exports, "__esModule", { value: true });
  6525. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  6526. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  6527. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  6528. const AbstractObfuscatingReplacer_1 = __webpack_require__(/*! ../AbstractObfuscatingReplacer */ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/AbstractObfuscatingReplacer.ts");
  6529. const NodeFactory_1 = __webpack_require__(/*! ../../../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  6530. let BooleanLiteralObfuscatingReplacer = BooleanLiteralObfuscatingReplacer_1 = class BooleanLiteralObfuscatingReplacer extends AbstractObfuscatingReplacer_1.AbstractObfuscatingReplacer {
  6531. constructor(options) {
  6532. super(options);
  6533. }
  6534. static getTrueUnaryExpressionNode() {
  6535. return NodeFactory_1.NodeFactory.unaryExpressionNode('!', BooleanLiteralObfuscatingReplacer_1.getFalseUnaryExpressionNode());
  6536. }
  6537. static getFalseUnaryExpressionNode() {
  6538. return NodeFactory_1.NodeFactory.unaryExpressionNode('!', NodeFactory_1.NodeFactory.arrayExpressionNode());
  6539. }
  6540. replace(nodeValue) {
  6541. return nodeValue
  6542. ? BooleanLiteralObfuscatingReplacer_1.getTrueUnaryExpressionNode()
  6543. : BooleanLiteralObfuscatingReplacer_1.getFalseUnaryExpressionNode();
  6544. }
  6545. };
  6546. BooleanLiteralObfuscatingReplacer = BooleanLiteralObfuscatingReplacer_1 = tslib_1.__decorate([
  6547. inversify_1.injectable(),
  6548. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  6549. tslib_1.__metadata("design:paramtypes", [Object])
  6550. ], BooleanLiteralObfuscatingReplacer);
  6551. exports.BooleanLiteralObfuscatingReplacer = BooleanLiteralObfuscatingReplacer;
  6552. /***/ }),
  6553. /***/ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/NumberLiteralObfuscatingReplacer.ts":
  6554. /*!************************************************************************************************************************************************!*\
  6555. !*** ./src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/NumberLiteralObfuscatingReplacer.ts ***!
  6556. \************************************************************************************************************************************************/
  6557. /*! no static exports found */
  6558. /***/ (function(module, exports, __webpack_require__) {
  6559. "use strict";
  6560. Object.defineProperty(exports, "__esModule", { value: true });
  6561. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  6562. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  6563. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  6564. const AbstractObfuscatingReplacer_1 = __webpack_require__(/*! ../AbstractObfuscatingReplacer */ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/AbstractObfuscatingReplacer.ts");
  6565. const NodeFactory_1 = __webpack_require__(/*! ../../../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  6566. const NumberUtils_1 = __webpack_require__(/*! ../../../../utils/NumberUtils */ "./src/utils/NumberUtils.ts");
  6567. const Utils_1 = __webpack_require__(/*! ../../../../utils/Utils */ "./src/utils/Utils.ts");
  6568. let NumberLiteralObfuscatingReplacer = class NumberLiteralObfuscatingReplacer extends AbstractObfuscatingReplacer_1.AbstractObfuscatingReplacer {
  6569. constructor(options) {
  6570. super(options);
  6571. this.numberLiteralCache = new Map();
  6572. }
  6573. replace(nodeValue) {
  6574. let rawValue;
  6575. if (this.numberLiteralCache.has(nodeValue)) {
  6576. rawValue = this.numberLiteralCache.get(nodeValue);
  6577. }
  6578. else {
  6579. if (!NumberUtils_1.NumberUtils.isCeil(nodeValue)) {
  6580. rawValue = String(nodeValue);
  6581. }
  6582. else {
  6583. rawValue = `${Utils_1.Utils.hexadecimalPrefix}${NumberUtils_1.NumberUtils.toHex(nodeValue)}`;
  6584. }
  6585. this.numberLiteralCache.set(nodeValue, rawValue);
  6586. }
  6587. return NodeFactory_1.NodeFactory.literalNode(nodeValue, rawValue);
  6588. }
  6589. };
  6590. NumberLiteralObfuscatingReplacer = tslib_1.__decorate([
  6591. inversify_1.injectable(),
  6592. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  6593. tslib_1.__metadata("design:paramtypes", [Object])
  6594. ], NumberLiteralObfuscatingReplacer);
  6595. exports.NumberLiteralObfuscatingReplacer = NumberLiteralObfuscatingReplacer;
  6596. /***/ }),
  6597. /***/ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/StringLiteralObfuscatingReplacer.ts":
  6598. /*!************************************************************************************************************************************************!*\
  6599. !*** ./src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/StringLiteralObfuscatingReplacer.ts ***!
  6600. \************************************************************************************************************************************************/
  6601. /*! no static exports found */
  6602. /***/ (function(module, exports, __webpack_require__) {
  6603. "use strict";
  6604. var StringLiteralObfuscatingReplacer_1;
  6605. Object.defineProperty(exports, "__esModule", { value: true });
  6606. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  6607. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  6608. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  6609. const StringArrayEncoding_1 = __webpack_require__(/*! ../../../../enums/StringArrayEncoding */ "./src/enums/StringArrayEncoding.ts");
  6610. const AbstractObfuscatingReplacer_1 = __webpack_require__(/*! ../AbstractObfuscatingReplacer */ "./src/node-transformers/obfuscating-transformers/obfuscating-replacers/AbstractObfuscatingReplacer.ts");
  6611. const NodeMetadata_1 = __webpack_require__(/*! ../../../../node/NodeMetadata */ "./src/node/NodeMetadata.ts");
  6612. const NodeFactory_1 = __webpack_require__(/*! ../../../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  6613. const NumberUtils_1 = __webpack_require__(/*! ../../../../utils/NumberUtils */ "./src/utils/NumberUtils.ts");
  6614. const Utils_1 = __webpack_require__(/*! ../../../../utils/Utils */ "./src/utils/Utils.ts");
  6615. let StringLiteralObfuscatingReplacer = StringLiteralObfuscatingReplacer_1 = class StringLiteralObfuscatingReplacer extends AbstractObfuscatingReplacer_1.AbstractObfuscatingReplacer {
  6616. constructor(stringArrayStorage, escapeSequenceEncoder, randomGenerator, cryptUtils, options) {
  6617. super(options);
  6618. this.nodesCache = new Map();
  6619. this.stringLiteralHexadecimalIndexCache = new Map();
  6620. this.stringArrayStorage = stringArrayStorage;
  6621. this.escapeSequenceEncoder = escapeSequenceEncoder;
  6622. this.randomGenerator = randomGenerator;
  6623. this.cryptUtils = cryptUtils;
  6624. this.rc4Keys = this.randomGenerator.getRandomGenerator()
  6625. .n(() => this.randomGenerator.getRandomGenerator().string({
  6626. length: StringLiteralObfuscatingReplacer_1.rc4KeyLength
  6627. }), StringLiteralObfuscatingReplacer_1.rc4KeysCount);
  6628. }
  6629. static getHexadecimalLiteralNode(hexadecimalIndex) {
  6630. const hexadecimalLiteralNode = NodeFactory_1.NodeFactory.literalNode(hexadecimalIndex);
  6631. NodeMetadata_1.NodeMetadata.set(hexadecimalLiteralNode, { replacedLiteral: true });
  6632. return hexadecimalLiteralNode;
  6633. }
  6634. static getRc4KeyLiteralNode(literalValue) {
  6635. const rc4KeyLiteralNode = NodeFactory_1.NodeFactory.literalNode(literalValue);
  6636. NodeMetadata_1.NodeMetadata.set(rc4KeyLiteralNode, { replacedLiteral: true });
  6637. return rc4KeyLiteralNode;
  6638. }
  6639. replace(nodeValue) {
  6640. const useStringArray = this.canUseStringArray(nodeValue);
  6641. const cacheKey = `${nodeValue}-${String(useStringArray)}`;
  6642. const useCacheValue = this.nodesCache.has(cacheKey) && this.options.stringArrayEncoding !== StringArrayEncoding_1.StringArrayEncoding.Rc4;
  6643. if (useCacheValue) {
  6644. return this.nodesCache.get(cacheKey);
  6645. }
  6646. const resultNode = useStringArray
  6647. ? this.replaceWithStringArrayCallNode(nodeValue)
  6648. : this.replaceWithLiteralNode(nodeValue);
  6649. this.nodesCache.set(cacheKey, resultNode);
  6650. return resultNode;
  6651. }
  6652. canUseStringArray(nodeValue) {
  6653. return (this.options.stringArray &&
  6654. nodeValue.length >= StringLiteralObfuscatingReplacer_1.minimumLengthForStringArray &&
  6655. this.randomGenerator.getMathRandom() <= this.options.stringArrayThreshold);
  6656. }
  6657. getStringArrayHexadecimalIndex(value, stringArrayStorageLength) {
  6658. if (this.stringLiteralHexadecimalIndexCache.has(value)) {
  6659. return {
  6660. fromCache: true,
  6661. index: this.stringLiteralHexadecimalIndexCache.get(value)
  6662. };
  6663. }
  6664. const hexadecimalRawIndex = NumberUtils_1.NumberUtils.toHex(stringArrayStorageLength);
  6665. const hexadecimalIndex = `${Utils_1.Utils.hexadecimalPrefix}${hexadecimalRawIndex}`;
  6666. this.stringLiteralHexadecimalIndexCache.set(value, hexadecimalIndex);
  6667. return {
  6668. fromCache: false,
  6669. index: hexadecimalIndex
  6670. };
  6671. }
  6672. getEncodedValue(value) {
  6673. let encodedValue;
  6674. let key = null;
  6675. switch (this.options.stringArrayEncoding) {
  6676. case StringArrayEncoding_1.StringArrayEncoding.Rc4:
  6677. key = this.randomGenerator.getRandomGenerator().pickone(this.rc4Keys);
  6678. encodedValue = this.cryptUtils.btoa(this.cryptUtils.rc4(value, key));
  6679. break;
  6680. case StringArrayEncoding_1.StringArrayEncoding.Base64:
  6681. encodedValue = this.cryptUtils.btoa(value);
  6682. break;
  6683. default:
  6684. encodedValue = value;
  6685. }
  6686. return { encodedValue, key };
  6687. }
  6688. replaceWithLiteralNode(value) {
  6689. return NodeFactory_1.NodeFactory.literalNode(this.escapeSequenceEncoder.encode(value, this.options.unicodeEscapeSequence));
  6690. }
  6691. replaceWithStringArrayCallNode(value) {
  6692. const { encodedValue, key } = this.getEncodedValue(value);
  6693. const escapedValue = this.escapeSequenceEncoder.encode(encodedValue, this.options.unicodeEscapeSequence);
  6694. const stringArrayStorageLength = this.stringArrayStorage.getLength();
  6695. const stringArrayStorageCallsWrapperName = this.stringArrayStorage.getStorageId().split('|')[1];
  6696. const { fromCache, index } = this.getStringArrayHexadecimalIndex(escapedValue, stringArrayStorageLength);
  6697. if (!fromCache) {
  6698. this.stringArrayStorage.set(stringArrayStorageLength, escapedValue);
  6699. }
  6700. const callExpressionArgs = [
  6701. StringLiteralObfuscatingReplacer_1.getHexadecimalLiteralNode(index)
  6702. ];
  6703. if (key) {
  6704. callExpressionArgs.push(StringLiteralObfuscatingReplacer_1.getRc4KeyLiteralNode(this.escapeSequenceEncoder.encode(key, this.options.unicodeEscapeSequence)));
  6705. }
  6706. const stringArrayIdentifierNode = NodeFactory_1.NodeFactory.identifierNode(stringArrayStorageCallsWrapperName);
  6707. NodeMetadata_1.NodeMetadata.set(stringArrayIdentifierNode, { renamedIdentifier: true });
  6708. return NodeFactory_1.NodeFactory.callExpressionNode(stringArrayIdentifierNode, callExpressionArgs);
  6709. }
  6710. };
  6711. StringLiteralObfuscatingReplacer.minimumLengthForStringArray = 3;
  6712. StringLiteralObfuscatingReplacer.rc4KeyLength = 4;
  6713. StringLiteralObfuscatingReplacer.rc4KeysCount = 50;
  6714. StringLiteralObfuscatingReplacer = StringLiteralObfuscatingReplacer_1 = tslib_1.__decorate([
  6715. inversify_1.injectable(),
  6716. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.TStringArrayStorage)),
  6717. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IEscapeSequenceEncoder)),
  6718. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  6719. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICryptUtils)),
  6720. tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  6721. tslib_1.__metadata("design:paramtypes", [Object, Object, Object, Object, Object])
  6722. ], StringLiteralObfuscatingReplacer);
  6723. exports.StringLiteralObfuscatingReplacer = StringLiteralObfuscatingReplacer;
  6724. /***/ }),
  6725. /***/ "./src/node-transformers/preparing-transformers/CommentsTransformer.ts":
  6726. /*!*****************************************************************************!*\
  6727. !*** ./src/node-transformers/preparing-transformers/CommentsTransformer.ts ***!
  6728. \*****************************************************************************/
  6729. /*! no static exports found */
  6730. /***/ (function(module, exports, __webpack_require__) {
  6731. "use strict";
  6732. var CommentsTransformer_1;
  6733. Object.defineProperty(exports, "__esModule", { value: true });
  6734. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  6735. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  6736. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  6737. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  6738. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  6739. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  6740. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  6741. const ConditionalCommentObfuscatingGuard_1 = __webpack_require__(/*! ./obfuscating-guards/ConditionalCommentObfuscatingGuard */ "./src/node-transformers/preparing-transformers/obfuscating-guards/ConditionalCommentObfuscatingGuard.ts");
  6742. let CommentsTransformer = CommentsTransformer_1 = class CommentsTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  6743. constructor(randomGenerator, options) {
  6744. super(randomGenerator, options);
  6745. }
  6746. getVisitor(transformationStage) {
  6747. switch (transformationStage) {
  6748. case TransformationStage_1.TransformationStage.Initializing:
  6749. return {
  6750. leave: (node) => {
  6751. if (NodeGuards_1.NodeGuards.isProgramNode(node)) {
  6752. return this.transformNode(node);
  6753. }
  6754. }
  6755. };
  6756. default:
  6757. return null;
  6758. }
  6759. }
  6760. transformNode(rootNode) {
  6761. if (!rootNode.comments || !rootNode.comments.length) {
  6762. return rootNode;
  6763. }
  6764. const comments = this.transformComments(rootNode.comments);
  6765. if (comments.length === 0) {
  6766. return rootNode;
  6767. }
  6768. if (!rootNode.body.length) {
  6769. rootNode.leadingComments = comments;
  6770. return rootNode;
  6771. }
  6772. estraverse.traverse(rootNode, {
  6773. enter: (node) => {
  6774. if (node === rootNode) {
  6775. return;
  6776. }
  6777. const commentIdx = comments.findIndex((comment) => comment.range && node.range && comment.range[0] < node.range[0]);
  6778. if (commentIdx === -1) {
  6779. return;
  6780. }
  6781. node.leadingComments = comments.splice(commentIdx, comments.length - commentIdx).reverse();
  6782. }
  6783. });
  6784. if (comments.length > 0) {
  6785. rootNode.trailingComments = comments.reverse();
  6786. }
  6787. return rootNode;
  6788. }
  6789. transformComments(comments) {
  6790. return comments.filter((comment) => CommentsTransformer_1.preservedWords
  6791. .some((preservedWord) => comment.value.includes(preservedWord)) ||
  6792. ConditionalCommentObfuscatingGuard_1.ConditionalCommentObfuscatingGuard.isConditionalComment(comment)).reverse();
  6793. }
  6794. };
  6795. CommentsTransformer.preservedWords = [
  6796. '@license',
  6797. '@preserve'
  6798. ];
  6799. CommentsTransformer = CommentsTransformer_1 = tslib_1.__decorate([
  6800. inversify_1.injectable(),
  6801. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  6802. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  6803. tslib_1.__metadata("design:paramtypes", [Object, Object])
  6804. ], CommentsTransformer);
  6805. exports.CommentsTransformer = CommentsTransformer;
  6806. /***/ }),
  6807. /***/ "./src/node-transformers/preparing-transformers/CustomNodesTransformer.ts":
  6808. /*!********************************************************************************!*\
  6809. !*** ./src/node-transformers/preparing-transformers/CustomNodesTransformer.ts ***!
  6810. \********************************************************************************/
  6811. /*! no static exports found */
  6812. /***/ (function(module, exports, __webpack_require__) {
  6813. "use strict";
  6814. Object.defineProperty(exports, "__esModule", { value: true });
  6815. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  6816. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  6817. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  6818. const ObfuscationEvent_1 = __webpack_require__(/*! ../../enums/event-emitters/ObfuscationEvent */ "./src/enums/event-emitters/ObfuscationEvent.ts");
  6819. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  6820. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  6821. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  6822. let CustomNodesTransformer = class CustomNodesTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  6823. constructor(callsGraphAnalyzer, prevailingKindOfVariablesAnalyzer, obfuscationEventEmitter, customNodeGroupStorage, randomGenerator, options) {
  6824. super(randomGenerator, options);
  6825. this.callsGraphData = [];
  6826. this.callsGraphAnalyzer = callsGraphAnalyzer;
  6827. this.prevailingKindOfVariablesAnalyzer = prevailingKindOfVariablesAnalyzer;
  6828. this.obfuscationEventEmitter = obfuscationEventEmitter;
  6829. this.customNodeGroupStorage = customNodeGroupStorage;
  6830. }
  6831. getVisitor(transformationStage) {
  6832. switch (transformationStage) {
  6833. case TransformationStage_1.TransformationStage.Preparing:
  6834. return {
  6835. leave: (node, parentNode) => {
  6836. if (NodeGuards_1.NodeGuards.isProgramNode(node)) {
  6837. this.analyzeNode(node, parentNode);
  6838. this.appendCustomNodesBeforeObfuscation(node, parentNode);
  6839. return this.transformNode(node, parentNode);
  6840. }
  6841. }
  6842. };
  6843. case TransformationStage_1.TransformationStage.Finalizing:
  6844. return {
  6845. leave: (node, parentNode) => {
  6846. if (NodeGuards_1.NodeGuards.isProgramNode(node)) {
  6847. this.appendCustomNodesAfterObfuscation(node, parentNode);
  6848. }
  6849. }
  6850. };
  6851. default:
  6852. return null;
  6853. }
  6854. }
  6855. analyzeNode(node, parentNode) {
  6856. this.callsGraphData = this.callsGraphAnalyzer.analyze(node);
  6857. this.prevailingKindOfVariablesAnalyzer.analyze(node);
  6858. }
  6859. transformNode(node, parentNode) {
  6860. return node;
  6861. }
  6862. appendCustomNodesBeforeObfuscation(node, parentNode) {
  6863. this.customNodeGroupStorage
  6864. .getStorage()
  6865. .forEach((customNodeGroup) => {
  6866. customNodeGroup.initialize();
  6867. this.obfuscationEventEmitter.once(customNodeGroup.getAppendEvent(), customNodeGroup.appendCustomNodes.bind(customNodeGroup));
  6868. });
  6869. this.obfuscationEventEmitter.emit(ObfuscationEvent_1.ObfuscationEvent.BeforeObfuscation, node, this.callsGraphData);
  6870. }
  6871. appendCustomNodesAfterObfuscation(node, parentNode) {
  6872. this.obfuscationEventEmitter.emit(ObfuscationEvent_1.ObfuscationEvent.AfterObfuscation, node, this.callsGraphData);
  6873. }
  6874. };
  6875. CustomNodesTransformer = tslib_1.__decorate([
  6876. inversify_1.injectable(),
  6877. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICallsGraphAnalyzer)),
  6878. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer)),
  6879. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)),
  6880. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.TCustomNodeGroupStorage)),
  6881. tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  6882. tslib_1.__param(5, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  6883. tslib_1.__metadata("design:paramtypes", [Object, Object, Object, Object, Object, Object])
  6884. ], CustomNodesTransformer);
  6885. exports.CustomNodesTransformer = CustomNodesTransformer;
  6886. /***/ }),
  6887. /***/ "./src/node-transformers/preparing-transformers/EvalCallExpressionTransformer.ts":
  6888. /*!***************************************************************************************!*\
  6889. !*** ./src/node-transformers/preparing-transformers/EvalCallExpressionTransformer.ts ***!
  6890. \***************************************************************************************/
  6891. /*! no static exports found */
  6892. /***/ (function(module, exports, __webpack_require__) {
  6893. "use strict";
  6894. var EvalCallExpressionTransformer_1;
  6895. Object.defineProperty(exports, "__esModule", { value: true });
  6896. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  6897. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  6898. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  6899. const js_string_escape_1 = tslib_1.__importDefault(__webpack_require__(/*! js-string-escape */ "js-string-escape"));
  6900. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  6901. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  6902. const NodeFactory_1 = __webpack_require__(/*! ../../node/NodeFactory */ "./src/node/NodeFactory.ts");
  6903. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  6904. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  6905. let EvalCallExpressionTransformer = EvalCallExpressionTransformer_1 = class EvalCallExpressionTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  6906. constructor(randomGenerator, options) {
  6907. super(randomGenerator, options);
  6908. this.evalRootAstHostNodeSet = new Set();
  6909. }
  6910. static extractEvalStringFromCallExpressionArgument(node) {
  6911. if (NodeGuards_1.NodeGuards.isLiteralNode(node)) {
  6912. return EvalCallExpressionTransformer_1
  6913. .extractEvalStringFromLiteralNode(node);
  6914. }
  6915. if (NodeGuards_1.NodeGuards.isTemplateLiteralNode(node)) {
  6916. return EvalCallExpressionTransformer_1
  6917. .extractEvalStringFromTemplateLiteralNode(node);
  6918. }
  6919. return null;
  6920. }
  6921. static extractEvalStringFromLiteralNode(node) {
  6922. return typeof node.value === 'string' ? node.value : null;
  6923. }
  6924. static extractEvalStringFromTemplateLiteralNode(node) {
  6925. const quasis = node.quasis;
  6926. const allowedQuasisLength = 1;
  6927. if (quasis.length !== allowedQuasisLength || node.expressions.length) {
  6928. return null;
  6929. }
  6930. return quasis[0].value.cooked;
  6931. }
  6932. getVisitor(transformationStage) {
  6933. switch (transformationStage) {
  6934. case TransformationStage_1.TransformationStage.Preparing:
  6935. return {
  6936. enter: (node, parentNode) => {
  6937. if (parentNode
  6938. && NodeGuards_1.NodeGuards.isCallExpressionNode(node)
  6939. && NodeGuards_1.NodeGuards.isIdentifierNode(node.callee)
  6940. && node.callee.name === 'eval') {
  6941. return this.transformNode(node, parentNode);
  6942. }
  6943. }
  6944. };
  6945. case TransformationStage_1.TransformationStage.Finalizing:
  6946. if (!this.evalRootAstHostNodeSet.size) {
  6947. return null;
  6948. }
  6949. return {
  6950. leave: (node, parentNode) => {
  6951. if (parentNode && this.isEvalRootAstHostNode(node)) {
  6952. return this.restoreNode(node, parentNode);
  6953. }
  6954. }
  6955. };
  6956. default:
  6957. return null;
  6958. }
  6959. }
  6960. transformNode(callExpressionNode, parentNode) {
  6961. const callExpressionFirstArgument = callExpressionNode.arguments[0];
  6962. if (!callExpressionFirstArgument) {
  6963. return callExpressionNode;
  6964. }
  6965. const evalString = EvalCallExpressionTransformer_1
  6966. .extractEvalStringFromCallExpressionArgument(callExpressionFirstArgument);
  6967. if (!evalString) {
  6968. return callExpressionNode;
  6969. }
  6970. let ast;
  6971. try {
  6972. ast = NodeUtils_1.NodeUtils.convertCodeToStructure(evalString);
  6973. }
  6974. catch (_a) {
  6975. return callExpressionNode;
  6976. }
  6977. const evalRootAstHostNode = NodeFactory_1.NodeFactory
  6978. .functionExpressionNode([], NodeFactory_1.NodeFactory.blockStatementNode(ast));
  6979. this.evalRootAstHostNodeSet.add(evalRootAstHostNode);
  6980. return evalRootAstHostNode;
  6981. }
  6982. restoreNode(evalRootAstHostNode, parentNode) {
  6983. const targetAst = evalRootAstHostNode.body.body;
  6984. const obfuscatedCode = NodeUtils_1.NodeUtils.convertStructureToCode(targetAst);
  6985. return NodeFactory_1.NodeFactory.callExpressionNode(NodeFactory_1.NodeFactory.identifierNode('eval'), [
  6986. NodeFactory_1.NodeFactory.literalNode(js_string_escape_1.default(obfuscatedCode))
  6987. ]);
  6988. }
  6989. isEvalRootAstHostNode(node) {
  6990. return NodeGuards_1.NodeGuards.isFunctionExpressionNode(node) && this.evalRootAstHostNodeSet.has(node);
  6991. }
  6992. };
  6993. EvalCallExpressionTransformer = EvalCallExpressionTransformer_1 = tslib_1.__decorate([
  6994. inversify_1.injectable(),
  6995. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  6996. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  6997. tslib_1.__metadata("design:paramtypes", [Object, Object])
  6998. ], EvalCallExpressionTransformer);
  6999. exports.EvalCallExpressionTransformer = EvalCallExpressionTransformer;
  7000. /***/ }),
  7001. /***/ "./src/node-transformers/preparing-transformers/MetadataTransformer.ts":
  7002. /*!*****************************************************************************!*\
  7003. !*** ./src/node-transformers/preparing-transformers/MetadataTransformer.ts ***!
  7004. \*****************************************************************************/
  7005. /*! no static exports found */
  7006. /***/ (function(module, exports, __webpack_require__) {
  7007. "use strict";
  7008. Object.defineProperty(exports, "__esModule", { value: true });
  7009. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  7010. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  7011. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  7012. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  7013. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  7014. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  7015. const NodeMetadata_1 = __webpack_require__(/*! ../../node/NodeMetadata */ "./src/node/NodeMetadata.ts");
  7016. let MetadataTransformer = class MetadataTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  7017. constructor(randomGenerator, options) {
  7018. super(randomGenerator, options);
  7019. }
  7020. getVisitor(transformationStage) {
  7021. switch (transformationStage) {
  7022. case TransformationStage_1.TransformationStage.Preparing:
  7023. return {
  7024. enter: (node, parentNode) => {
  7025. return this.transformNode(node, parentNode);
  7026. }
  7027. };
  7028. default:
  7029. return null;
  7030. }
  7031. }
  7032. transformNode(node, parentNode) {
  7033. NodeMetadata_1.NodeMetadata.set(node, { ignoredNode: false });
  7034. if (NodeGuards_1.NodeGuards.isIdentifierNode(node)) {
  7035. NodeMetadata_1.NodeMetadata.set(node, { renamedIdentifier: false });
  7036. }
  7037. if (NodeGuards_1.NodeGuards.isLiteralNode(node)) {
  7038. NodeMetadata_1.NodeMetadata.set(node, { replacedLiteral: false });
  7039. }
  7040. return node;
  7041. }
  7042. };
  7043. MetadataTransformer = tslib_1.__decorate([
  7044. inversify_1.injectable(),
  7045. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  7046. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  7047. tslib_1.__metadata("design:paramtypes", [Object, Object])
  7048. ], MetadataTransformer);
  7049. exports.MetadataTransformer = MetadataTransformer;
  7050. /***/ }),
  7051. /***/ "./src/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.ts":
  7052. /*!**************************************************************************************!*\
  7053. !*** ./src/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.ts ***!
  7054. \**************************************************************************************/
  7055. /*! no static exports found */
  7056. /***/ (function(module, exports, __webpack_require__) {
  7057. "use strict";
  7058. var ObfuscatingGuardsTransformer_1;
  7059. Object.defineProperty(exports, "__esModule", { value: true });
  7060. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  7061. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  7062. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  7063. const ObfuscatingGuard_1 = __webpack_require__(/*! ../../enums/node-transformers/preparing-transformers/obfuscating-guards/ObfuscatingGuard */ "./src/enums/node-transformers/preparing-transformers/obfuscating-guards/ObfuscatingGuard.ts");
  7064. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  7065. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  7066. const NodeMetadata_1 = __webpack_require__(/*! ../../node/NodeMetadata */ "./src/node/NodeMetadata.ts");
  7067. let ObfuscatingGuardsTransformer = ObfuscatingGuardsTransformer_1 = class ObfuscatingGuardsTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  7068. constructor(obfuscatingGuardFactory, randomGenerator, options) {
  7069. super(randomGenerator, options);
  7070. this.obfuscatingGuards = ObfuscatingGuardsTransformer_1.obfuscatingGuardsList.map(obfuscatingGuardFactory);
  7071. }
  7072. getVisitor(transformationStage) {
  7073. switch (transformationStage) {
  7074. case TransformationStage_1.TransformationStage.Preparing:
  7075. return {
  7076. enter: (node, parentNode) => {
  7077. return this.transformNode(node, parentNode);
  7078. }
  7079. };
  7080. default:
  7081. return null;
  7082. }
  7083. }
  7084. transformNode(node, parentNode) {
  7085. const obfuscationAllowed = this.obfuscatingGuards
  7086. .every((nodeGuard) => nodeGuard.check(node));
  7087. NodeMetadata_1.NodeMetadata.set(node, {
  7088. ignoredNode: !obfuscationAllowed
  7089. });
  7090. return node;
  7091. }
  7092. };
  7093. ObfuscatingGuardsTransformer.obfuscatingGuardsList = [
  7094. ObfuscatingGuard_1.ObfuscatingGuard.BlackListObfuscatingGuard,
  7095. ObfuscatingGuard_1.ObfuscatingGuard.ConditionalCommentObfuscatingGuard,
  7096. ObfuscatingGuard_1.ObfuscatingGuard.ReservedStringObfuscatingGuard
  7097. ];
  7098. ObfuscatingGuardsTransformer = ObfuscatingGuardsTransformer_1 = tslib_1.__decorate([
  7099. inversify_1.injectable(),
  7100. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeGuard)),
  7101. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  7102. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  7103. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  7104. ], ObfuscatingGuardsTransformer);
  7105. exports.ObfuscatingGuardsTransformer = ObfuscatingGuardsTransformer;
  7106. /***/ }),
  7107. /***/ "./src/node-transformers/preparing-transformers/ParentificationTransformer.ts":
  7108. /*!************************************************************************************!*\
  7109. !*** ./src/node-transformers/preparing-transformers/ParentificationTransformer.ts ***!
  7110. \************************************************************************************/
  7111. /*! no static exports found */
  7112. /***/ (function(module, exports, __webpack_require__) {
  7113. "use strict";
  7114. Object.defineProperty(exports, "__esModule", { value: true });
  7115. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  7116. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  7117. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  7118. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  7119. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  7120. const NodeUtils_1 = __webpack_require__(/*! ../../node/NodeUtils */ "./src/node/NodeUtils.ts");
  7121. let ParentificationTransformer = class ParentificationTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  7122. constructor(randomGenerator, options) {
  7123. super(randomGenerator, options);
  7124. }
  7125. getVisitor(transformationStage) {
  7126. switch (transformationStage) {
  7127. case TransformationStage_1.TransformationStage.Preparing:
  7128. return {
  7129. enter: (node, parentNode) => {
  7130. return this.transformNode(node, parentNode);
  7131. }
  7132. };
  7133. default:
  7134. return null;
  7135. }
  7136. }
  7137. transformNode(node, parentNode) {
  7138. return NodeUtils_1.NodeUtils.parentizeNode(node, parentNode);
  7139. }
  7140. };
  7141. ParentificationTransformer = tslib_1.__decorate([
  7142. inversify_1.injectable(),
  7143. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  7144. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  7145. tslib_1.__metadata("design:paramtypes", [Object, Object])
  7146. ], ParentificationTransformer);
  7147. exports.ParentificationTransformer = ParentificationTransformer;
  7148. /***/ }),
  7149. /***/ "./src/node-transformers/preparing-transformers/VariablePreserveTransformer.ts":
  7150. /*!*************************************************************************************!*\
  7151. !*** ./src/node-transformers/preparing-transformers/VariablePreserveTransformer.ts ***!
  7152. \*************************************************************************************/
  7153. /*! no static exports found */
  7154. /***/ (function(module, exports, __webpack_require__) {
  7155. "use strict";
  7156. Object.defineProperty(exports, "__esModule", { value: true });
  7157. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  7158. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  7159. const IdentifierObfuscatingReplacer_1 = __webpack_require__(/*! ../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer */ "./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer.ts");
  7160. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  7161. const TransformationStage_1 = __webpack_require__(/*! ../../enums/node-transformers/TransformationStage */ "./src/enums/node-transformers/TransformationStage.ts");
  7162. const AbstractNodeTransformer_1 = __webpack_require__(/*! ../AbstractNodeTransformer */ "./src/node-transformers/AbstractNodeTransformer.ts");
  7163. const NodeGuards_1 = __webpack_require__(/*! ../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  7164. let VariablePreserveTransformer = class VariablePreserveTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {
  7165. constructor(identifierObfuscatingReplacerFactory, randomGenerator, options) {
  7166. super(randomGenerator, options);
  7167. this.identifierObfuscatingReplacer = identifierObfuscatingReplacerFactory(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);
  7168. }
  7169. getVisitor(transformationStage) {
  7170. switch (transformationStage) {
  7171. case TransformationStage_1.TransformationStage.Preparing:
  7172. return {
  7173. enter: (node, parentNode) => {
  7174. if (NodeGuards_1.NodeGuards.isIdentifierNode(node)
  7175. && parentNode
  7176. && (NodeGuards_1.NodeGuards.parentNodeIsPropertyNode(node, parentNode)
  7177. || NodeGuards_1.NodeGuards.parentNodeIsMemberExpressionNode(node, parentNode)
  7178. || NodeGuards_1.NodeGuards.parentNodeIsMethodDefinitionNode(node, parentNode)
  7179. || NodeGuards_1.NodeGuards.isLabelIdentifierNode(node, parentNode))) {
  7180. return this.transformNode(node, parentNode);
  7181. }
  7182. }
  7183. };
  7184. default:
  7185. return null;
  7186. }
  7187. }
  7188. transformNode(node, parentNode) {
  7189. this.identifierObfuscatingReplacer.preserveName(node.name);
  7190. return node;
  7191. }
  7192. };
  7193. VariablePreserveTransformer = tslib_1.__decorate([
  7194. inversify_1.injectable(),
  7195. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)),
  7196. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  7197. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  7198. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  7199. ], VariablePreserveTransformer);
  7200. exports.VariablePreserveTransformer = VariablePreserveTransformer;
  7201. /***/ }),
  7202. /***/ "./src/node-transformers/preparing-transformers/obfuscating-guards/BlackListObfuscatingGuard.ts":
  7203. /*!******************************************************************************************************!*\
  7204. !*** ./src/node-transformers/preparing-transformers/obfuscating-guards/BlackListObfuscatingGuard.ts ***!
  7205. \******************************************************************************************************/
  7206. /*! no static exports found */
  7207. /***/ (function(module, exports, __webpack_require__) {
  7208. "use strict";
  7209. var BlackListObfuscatingGuard_1;
  7210. Object.defineProperty(exports, "__esModule", { value: true });
  7211. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  7212. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  7213. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  7214. let BlackListObfuscatingGuard = BlackListObfuscatingGuard_1 = class BlackListObfuscatingGuard {
  7215. constructor() {
  7216. this.blackListGuardsLength = BlackListObfuscatingGuard_1.blackListGuards.length;
  7217. }
  7218. check(node) {
  7219. for (let i = 0; i < this.blackListGuardsLength; i++) {
  7220. if (BlackListObfuscatingGuard_1.blackListGuards[i](node)) {
  7221. return false;
  7222. }
  7223. }
  7224. return true;
  7225. }
  7226. };
  7227. BlackListObfuscatingGuard.blackListGuards = [
  7228. NodeGuards_1.NodeGuards.isUseStrictOperator
  7229. ];
  7230. BlackListObfuscatingGuard = BlackListObfuscatingGuard_1 = tslib_1.__decorate([
  7231. inversify_1.injectable(),
  7232. tslib_1.__metadata("design:paramtypes", [])
  7233. ], BlackListObfuscatingGuard);
  7234. exports.BlackListObfuscatingGuard = BlackListObfuscatingGuard;
  7235. /***/ }),
  7236. /***/ "./src/node-transformers/preparing-transformers/obfuscating-guards/ConditionalCommentObfuscatingGuard.ts":
  7237. /*!***************************************************************************************************************!*\
  7238. !*** ./src/node-transformers/preparing-transformers/obfuscating-guards/ConditionalCommentObfuscatingGuard.ts ***!
  7239. \***************************************************************************************************************/
  7240. /*! no static exports found */
  7241. /***/ (function(module, exports, __webpack_require__) {
  7242. "use strict";
  7243. var ConditionalCommentObfuscatingGuard_1;
  7244. Object.defineProperty(exports, "__esModule", { value: true });
  7245. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  7246. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  7247. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  7248. let ConditionalCommentObfuscatingGuard = ConditionalCommentObfuscatingGuard_1 = class ConditionalCommentObfuscatingGuard {
  7249. constructor() {
  7250. this.obfuscationAllowedForCurrentNode = true;
  7251. this.obfuscationAllowedForNextNode = null;
  7252. }
  7253. static isConditionalComment(comment) {
  7254. return ConditionalCommentObfuscatingGuard_1.obfuscationEnableCommentRegExp.test(comment.value) ||
  7255. ConditionalCommentObfuscatingGuard_1.obfuscationDisableCommentRegExp.test(comment.value);
  7256. }
  7257. check(node) {
  7258. if (this.obfuscationAllowedForNextNode) {
  7259. this.obfuscationAllowedForCurrentNode = this.obfuscationAllowedForNextNode;
  7260. this.obfuscationAllowedForNextNode = null;
  7261. }
  7262. if (!NodeGuards_1.NodeGuards.isNodeWithComments(node)) {
  7263. return this.obfuscationAllowedForCurrentNode;
  7264. }
  7265. const leadingComments = node.leadingComments;
  7266. const trailingComments = node.trailingComments;
  7267. if (leadingComments) {
  7268. this.obfuscationAllowedForCurrentNode = this.checkComments(leadingComments);
  7269. }
  7270. if (trailingComments) {
  7271. this.obfuscationAllowedForNextNode = this.checkComments(trailingComments);
  7272. }
  7273. return this.obfuscationAllowedForCurrentNode;
  7274. }
  7275. checkComments(comments) {
  7276. const commentsLength = comments.length;
  7277. let obfuscationAllowed = this.obfuscationAllowedForCurrentNode;
  7278. for (let i = 0; i < commentsLength; i++) {
  7279. const comment = comments[i];
  7280. if (ConditionalCommentObfuscatingGuard_1.obfuscationEnableCommentRegExp.test(comment.value)) {
  7281. obfuscationAllowed = true;
  7282. continue;
  7283. }
  7284. if (ConditionalCommentObfuscatingGuard_1.obfuscationDisableCommentRegExp.test(comment.value)) {
  7285. obfuscationAllowed = false;
  7286. }
  7287. }
  7288. return obfuscationAllowed;
  7289. }
  7290. };
  7291. ConditionalCommentObfuscatingGuard.obfuscationEnableCommentRegExp = new RegExp('javascript-obfuscator *: *enable');
  7292. ConditionalCommentObfuscatingGuard.obfuscationDisableCommentRegExp = new RegExp('javascript-obfuscator *: *disable');
  7293. ConditionalCommentObfuscatingGuard = ConditionalCommentObfuscatingGuard_1 = tslib_1.__decorate([
  7294. inversify_1.injectable()
  7295. ], ConditionalCommentObfuscatingGuard);
  7296. exports.ConditionalCommentObfuscatingGuard = ConditionalCommentObfuscatingGuard;
  7297. /***/ }),
  7298. /***/ "./src/node-transformers/preparing-transformers/obfuscating-guards/ReservedStringObfuscatingGuard.ts":
  7299. /*!***********************************************************************************************************!*\
  7300. !*** ./src/node-transformers/preparing-transformers/obfuscating-guards/ReservedStringObfuscatingGuard.ts ***!
  7301. \***********************************************************************************************************/
  7302. /*! no static exports found */
  7303. /***/ (function(module, exports, __webpack_require__) {
  7304. "use strict";
  7305. Object.defineProperty(exports, "__esModule", { value: true });
  7306. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  7307. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  7308. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  7309. const NodeGuards_1 = __webpack_require__(/*! ../../../node/NodeGuards */ "./src/node/NodeGuards.ts");
  7310. let ReservedStringObfuscatingGuard = class ReservedStringObfuscatingGuard {
  7311. constructor(options) {
  7312. this.options = options;
  7313. }
  7314. check(node) {
  7315. if (this.options.reservedStrings.length
  7316. && NodeGuards_1.NodeGuards.isLiteralNode(node)
  7317. && typeof node.value === 'string') {
  7318. return !this.isReservedString(node.value);
  7319. }
  7320. return true;
  7321. }
  7322. isReservedString(value) {
  7323. return this.options.reservedStrings
  7324. .some((reservedString) => {
  7325. return new RegExp(reservedString, 'g').exec(value) !== null;
  7326. });
  7327. }
  7328. };
  7329. ReservedStringObfuscatingGuard = tslib_1.__decorate([
  7330. inversify_1.injectable(),
  7331. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  7332. tslib_1.__metadata("design:paramtypes", [Object])
  7333. ], ReservedStringObfuscatingGuard);
  7334. exports.ReservedStringObfuscatingGuard = ReservedStringObfuscatingGuard;
  7335. /***/ }),
  7336. /***/ "./src/node/NodeAppender.ts":
  7337. /*!**********************************!*\
  7338. !*** ./src/node/NodeAppender.ts ***!
  7339. \**********************************/
  7340. /*! no static exports found */
  7341. /***/ (function(module, exports, __webpack_require__) {
  7342. "use strict";
  7343. Object.defineProperty(exports, "__esModule", { value: true });
  7344. const NodeGuards_1 = __webpack_require__(/*! ./NodeGuards */ "./src/node/NodeGuards.ts");
  7345. class NodeAppender {
  7346. static append(nodeWithStatements, statements) {
  7347. statements = NodeAppender.parentizeScopeStatementsBeforeAppend(nodeWithStatements, statements);
  7348. NodeAppender.setScopeStatements(nodeWithStatements, [
  7349. ...NodeAppender.getScopeStatements(nodeWithStatements),
  7350. ...statements
  7351. ]);
  7352. }
  7353. static appendToOptimalBlockScope(callsGraphData, nodeWithStatements, bodyStatements, index = 0) {
  7354. const targetBlockScope = callsGraphData.length
  7355. ? NodeAppender.getOptimalBlockScope(callsGraphData, index)
  7356. : nodeWithStatements;
  7357. NodeAppender.prepend(targetBlockScope, bodyStatements);
  7358. }
  7359. static getOptimalBlockScope(callsGraphData, index, deep = Infinity) {
  7360. const firstCall = callsGraphData[index];
  7361. if (deep <= 0) {
  7362. throw new Error('Invalid `deep` argument value. Value should be bigger then 0.');
  7363. }
  7364. if (deep > 1 && firstCall.callsGraph.length) {
  7365. return NodeAppender.getOptimalBlockScope(firstCall.callsGraph, 0, --deep);
  7366. }
  7367. else {
  7368. return firstCall.callee;
  7369. }
  7370. }
  7371. static insertBefore(nodeWithStatements, statements, target) {
  7372. const indexInScopeStatement = NodeAppender
  7373. .getScopeStatements(nodeWithStatements)
  7374. .indexOf(target);
  7375. NodeAppender.insertAtIndex(nodeWithStatements, statements, indexInScopeStatement);
  7376. }
  7377. static insertAfter(nodeWithStatements, statements, target) {
  7378. const indexInScopeStatement = NodeAppender
  7379. .getScopeStatements(nodeWithStatements)
  7380. .indexOf(target);
  7381. NodeAppender.insertAtIndex(nodeWithStatements, statements, indexInScopeStatement + 1);
  7382. }
  7383. static insertAtIndex(nodeWithStatements, statements, index) {
  7384. statements = NodeAppender.parentizeScopeStatementsBeforeAppend(nodeWithStatements, statements);
  7385. NodeAppender.setScopeStatements(nodeWithStatements, [
  7386. ...NodeAppender.getScopeStatements(nodeWithStatements).slice(0, index),
  7387. ...statements,
  7388. ...NodeAppender.getScopeStatements(nodeWithStatements).slice(index)
  7389. ]);
  7390. }
  7391. static prepend(nodeWithStatements, statements) {
  7392. statements = NodeAppender.parentizeScopeStatementsBeforeAppend(nodeWithStatements, statements);
  7393. NodeAppender.setScopeStatements(nodeWithStatements, [
  7394. ...statements,
  7395. ...NodeAppender.getScopeStatements(nodeWithStatements),
  7396. ]);
  7397. }
  7398. static getScopeStatements(nodeWithStatements) {
  7399. if (NodeGuards_1.NodeGuards.isSwitchCaseNode(nodeWithStatements)) {
  7400. return nodeWithStatements.consequent;
  7401. }
  7402. return nodeWithStatements.body;
  7403. }
  7404. static parentizeScopeStatementsBeforeAppend(nodeWithStatements, statements) {
  7405. statements.forEach((statement) => {
  7406. statement.parentNode = nodeWithStatements;
  7407. });
  7408. return statements;
  7409. }
  7410. static setScopeStatements(nodeWithStatements, statements) {
  7411. if (NodeGuards_1.NodeGuards.isSwitchCaseNode(nodeWithStatements)) {
  7412. nodeWithStatements.consequent = statements;
  7413. return;
  7414. }
  7415. nodeWithStatements.body = statements;
  7416. }
  7417. }
  7418. exports.NodeAppender = NodeAppender;
  7419. /***/ }),
  7420. /***/ "./src/node/NodeBlockLexicalScopeUtils.ts":
  7421. /*!************************************************!*\
  7422. !*** ./src/node/NodeBlockLexicalScopeUtils.ts ***!
  7423. \************************************************/
  7424. /*! no static exports found */
  7425. /***/ (function(module, exports, __webpack_require__) {
  7426. "use strict";
  7427. Object.defineProperty(exports, "__esModule", { value: true });
  7428. const NodeGuards_1 = __webpack_require__(/*! ./NodeGuards */ "./src/node/NodeGuards.ts");
  7429. class NodeBlockLexicalScopeUtils {
  7430. static getLexicalScope(node) {
  7431. return NodeBlockLexicalScopeUtils.getLexicalScopesRecursive(node, 1)[0];
  7432. }
  7433. static getLexicalScopes(node) {
  7434. return NodeBlockLexicalScopeUtils.getLexicalScopesRecursive(node);
  7435. }
  7436. static getLexicalScopesRecursive(node, maxSize = Infinity, nodesWithLexicalScope = [], depth = 0) {
  7437. if (nodesWithLexicalScope.length >= maxSize) {
  7438. return nodesWithLexicalScope;
  7439. }
  7440. const parentNode = node.parentNode;
  7441. if (!parentNode) {
  7442. throw new ReferenceError('`parentNode` property of given node is `undefined`');
  7443. }
  7444. if (NodeGuards_1.NodeGuards.isNodeWithBlockLexicalScope(node)) {
  7445. nodesWithLexicalScope.push(node);
  7446. }
  7447. if (node !== parentNode) {
  7448. return NodeBlockLexicalScopeUtils.getLexicalScopesRecursive(parentNode, maxSize, nodesWithLexicalScope, ++depth);
  7449. }
  7450. return nodesWithLexicalScope;
  7451. }
  7452. }
  7453. exports.NodeBlockLexicalScopeUtils = NodeBlockLexicalScopeUtils;
  7454. /***/ }),
  7455. /***/ "./src/node/NodeFactory.ts":
  7456. /*!*********************************!*\
  7457. !*** ./src/node/NodeFactory.ts ***!
  7458. \*********************************/
  7459. /*! no static exports found */
  7460. /***/ (function(module, exports, __webpack_require__) {
  7461. "use strict";
  7462. Object.defineProperty(exports, "__esModule", { value: true });
  7463. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  7464. const escodegen = tslib_1.__importStar(__webpack_require__(/*! escodegen */ "escodegen"));
  7465. const NodeType_1 = __webpack_require__(/*! ../enums/node/NodeType */ "./src/enums/node/NodeType.ts");
  7466. class NodeFactory {
  7467. static programNode(body = []) {
  7468. return {
  7469. type: NodeType_1.NodeType.Program,
  7470. body,
  7471. sourceType: 'script',
  7472. metadata: { ignoredNode: false }
  7473. };
  7474. }
  7475. static arrayExpressionNode(elements = []) {
  7476. return {
  7477. type: NodeType_1.NodeType.ArrayExpression,
  7478. elements,
  7479. metadata: { ignoredNode: false }
  7480. };
  7481. }
  7482. static assignmentExpressionNode(operator, left, right) {
  7483. return {
  7484. type: NodeType_1.NodeType.AssignmentExpression,
  7485. operator,
  7486. left,
  7487. right,
  7488. metadata: { ignoredNode: false }
  7489. };
  7490. }
  7491. static binaryExpressionNode(operator, left, right) {
  7492. return {
  7493. type: NodeType_1.NodeType.BinaryExpression,
  7494. operator,
  7495. left,
  7496. right,
  7497. metadata: { ignoredNode: false }
  7498. };
  7499. }
  7500. static blockStatementNode(body = []) {
  7501. return {
  7502. type: NodeType_1.NodeType.BlockStatement,
  7503. body,
  7504. metadata: { ignoredNode: false }
  7505. };
  7506. }
  7507. static breakStatement(label) {
  7508. return {
  7509. type: NodeType_1.NodeType.BreakStatement,
  7510. label,
  7511. metadata: { ignoredNode: false }
  7512. };
  7513. }
  7514. static callExpressionNode(callee, args = []) {
  7515. return {
  7516. type: NodeType_1.NodeType.CallExpression,
  7517. callee,
  7518. arguments: args,
  7519. metadata: { ignoredNode: false }
  7520. };
  7521. }
  7522. static continueStatement(label) {
  7523. return {
  7524. type: NodeType_1.NodeType.ContinueStatement,
  7525. label,
  7526. metadata: { ignoredNode: false }
  7527. };
  7528. }
  7529. static directiveNode(expression, directive) {
  7530. return {
  7531. type: NodeType_1.NodeType.ExpressionStatement,
  7532. expression,
  7533. directive,
  7534. metadata: { ignoredNode: false }
  7535. };
  7536. }
  7537. static expressionStatementNode(expression) {
  7538. return {
  7539. type: NodeType_1.NodeType.ExpressionStatement,
  7540. expression,
  7541. metadata: { ignoredNode: false }
  7542. };
  7543. }
  7544. static functionDeclarationNode(functionName, params, body) {
  7545. return {
  7546. type: NodeType_1.NodeType.FunctionDeclaration,
  7547. id: NodeFactory.identifierNode(functionName),
  7548. params,
  7549. body,
  7550. generator: false,
  7551. metadata: { ignoredNode: false }
  7552. };
  7553. }
  7554. static functionExpressionNode(params, body) {
  7555. return {
  7556. type: NodeType_1.NodeType.FunctionExpression,
  7557. params,
  7558. body,
  7559. generator: false,
  7560. metadata: { ignoredNode: false }
  7561. };
  7562. }
  7563. static ifStatementNode(test, consequent, alternate) {
  7564. return Object.assign(Object.assign({ type: NodeType_1.NodeType.IfStatement, test,
  7565. consequent }, alternate && { alternate }), { metadata: { ignoredNode: false } });
  7566. }
  7567. static identifierNode(name) {
  7568. return {
  7569. type: NodeType_1.NodeType.Identifier,
  7570. name,
  7571. metadata: { ignoredNode: false }
  7572. };
  7573. }
  7574. static literalNode(value, raw) {
  7575. raw = raw !== undefined ? raw : `'${value}'`;
  7576. return {
  7577. type: NodeType_1.NodeType.Literal,
  7578. value,
  7579. raw,
  7580. 'x-verbatim-property': {
  7581. content: raw,
  7582. precedence: escodegen.Precedence.Primary
  7583. },
  7584. metadata: { ignoredNode: false }
  7585. };
  7586. }
  7587. static logicalExpressionNode(operator, left, right) {
  7588. return {
  7589. type: NodeType_1.NodeType.LogicalExpression,
  7590. operator,
  7591. left,
  7592. right,
  7593. metadata: { ignoredNode: false }
  7594. };
  7595. }
  7596. static memberExpressionNode(object, property, computed = false) {
  7597. return {
  7598. type: NodeType_1.NodeType.MemberExpression,
  7599. computed,
  7600. object,
  7601. property,
  7602. metadata: { ignoredNode: false }
  7603. };
  7604. }
  7605. static methodDefinitionNode(key, value, kind, computed) {
  7606. return {
  7607. type: NodeType_1.NodeType.MethodDefinition,
  7608. key,
  7609. value,
  7610. kind,
  7611. computed,
  7612. static: false,
  7613. metadata: { ignoredNode: false }
  7614. };
  7615. }
  7616. static objectExpressionNode(properties) {
  7617. return {
  7618. type: NodeType_1.NodeType.ObjectExpression,
  7619. properties,
  7620. metadata: { ignoredNode: false }
  7621. };
  7622. }
  7623. static propertyNode(key, value, computed = false) {
  7624. return {
  7625. type: NodeType_1.NodeType.Property,
  7626. key,
  7627. value,
  7628. kind: 'init',
  7629. method: false,
  7630. shorthand: false,
  7631. computed,
  7632. metadata: { ignoredNode: false }
  7633. };
  7634. }
  7635. static returnStatementNode(argument) {
  7636. return {
  7637. type: NodeType_1.NodeType.ReturnStatement,
  7638. argument,
  7639. metadata: { ignoredNode: false }
  7640. };
  7641. }
  7642. static switchStatementNode(discriminant, cases) {
  7643. return {
  7644. type: NodeType_1.NodeType.SwitchStatement,
  7645. discriminant,
  7646. cases,
  7647. metadata: { ignoredNode: false }
  7648. };
  7649. }
  7650. static switchCaseNode(test, consequent) {
  7651. return {
  7652. type: NodeType_1.NodeType.SwitchCase,
  7653. test,
  7654. consequent,
  7655. metadata: { ignoredNode: false }
  7656. };
  7657. }
  7658. static unaryExpressionNode(operator, argument, prefix = true) {
  7659. return {
  7660. type: NodeType_1.NodeType.UnaryExpression,
  7661. operator,
  7662. argument,
  7663. prefix,
  7664. metadata: { ignoredNode: false }
  7665. };
  7666. }
  7667. static updateExpressionNode(operator, argumentExpr) {
  7668. return {
  7669. type: NodeType_1.NodeType.UpdateExpression,
  7670. operator,
  7671. argument: argumentExpr,
  7672. prefix: false,
  7673. metadata: { ignoredNode: false }
  7674. };
  7675. }
  7676. static variableDeclarationNode(declarations = [], kind = 'var') {
  7677. return {
  7678. type: NodeType_1.NodeType.VariableDeclaration,
  7679. declarations,
  7680. kind,
  7681. metadata: { ignoredNode: false }
  7682. };
  7683. }
  7684. static variableDeclaratorNode(id, init) {
  7685. return {
  7686. type: NodeType_1.NodeType.VariableDeclarator,
  7687. id,
  7688. init,
  7689. metadata: { ignoredNode: false }
  7690. };
  7691. }
  7692. static whileStatementNode(test, body) {
  7693. return {
  7694. type: NodeType_1.NodeType.WhileStatement,
  7695. test,
  7696. body,
  7697. metadata: { ignoredNode: false }
  7698. };
  7699. }
  7700. }
  7701. exports.NodeFactory = NodeFactory;
  7702. /***/ }),
  7703. /***/ "./src/node/NodeGuards.ts":
  7704. /*!********************************!*\
  7705. !*** ./src/node/NodeGuards.ts ***!
  7706. \********************************/
  7707. /*! no static exports found */
  7708. /***/ (function(module, exports, __webpack_require__) {
  7709. "use strict";
  7710. Object.defineProperty(exports, "__esModule", { value: true });
  7711. const NodeType_1 = __webpack_require__(/*! ../enums/node/NodeType */ "./src/enums/node/NodeType.ts");
  7712. class NodeGuards {
  7713. static isArrayPatternNode(node) {
  7714. return node.type === NodeType_1.NodeType.ArrayPattern;
  7715. }
  7716. static isArrowFunctionExpressionNode(node) {
  7717. return node.type === NodeType_1.NodeType.ArrowFunctionExpression;
  7718. }
  7719. static isAssignmentExpressionNode(node) {
  7720. return node.type === NodeType_1.NodeType.AssignmentExpression;
  7721. }
  7722. static isAssignmentPatternNode(node) {
  7723. return node.type === NodeType_1.NodeType.AssignmentPattern;
  7724. }
  7725. static isAwaitExpressionNode(node) {
  7726. return node.type === NodeType_1.NodeType.AwaitExpression;
  7727. }
  7728. static isBlockStatementNode(node) {
  7729. return node.type === NodeType_1.NodeType.BlockStatement;
  7730. }
  7731. static isBreakStatementNode(node) {
  7732. return node.type === NodeType_1.NodeType.BreakStatement;
  7733. }
  7734. static isCallExpressionNode(node) {
  7735. return node.type === NodeType_1.NodeType.CallExpression;
  7736. }
  7737. static isCatchClauseNode(node) {
  7738. return node.type === NodeType_1.NodeType.CatchClause;
  7739. }
  7740. static isClassDeclarationNode(node) {
  7741. return node.type === NodeType_1.NodeType.ClassDeclaration && node.id !== null;
  7742. }
  7743. static isContinueStatementNode(node) {
  7744. return node.type === NodeType_1.NodeType.ContinueStatement;
  7745. }
  7746. static isDirectiveNode(node) {
  7747. return node.type === NodeType_1.NodeType.ExpressionStatement
  7748. && 'directive' in node;
  7749. }
  7750. static isExportNamedDeclarationNode(node) {
  7751. return node.type === NodeType_1.NodeType.ExportNamedDeclaration;
  7752. }
  7753. static isExpressionStatementNode(node) {
  7754. return node.type === NodeType_1.NodeType.ExpressionStatement
  7755. && !('directive' in node);
  7756. }
  7757. static isForStatementTypeNode(node) {
  7758. return NodeGuards.isForStatementNode(node)
  7759. || NodeGuards.isForInStatementNode(node)
  7760. || NodeGuards.isForOfStatementNode(node);
  7761. }
  7762. static isForStatementNode(node) {
  7763. return node.type === NodeType_1.NodeType.ForStatement;
  7764. }
  7765. static isForInStatementNode(node) {
  7766. return node.type === NodeType_1.NodeType.ForInStatement;
  7767. }
  7768. static isForOfStatementNode(node) {
  7769. return node.type === NodeType_1.NodeType.ForOfStatement;
  7770. }
  7771. static isFunctionNode(node) {
  7772. return NodeGuards.isFunctionDeclarationNode(node) ||
  7773. NodeGuards.isFunctionExpressionNode(node) ||
  7774. NodeGuards.isArrowFunctionExpressionNode(node);
  7775. }
  7776. static isFunctionDeclarationNode(node) {
  7777. return node.type === NodeType_1.NodeType.FunctionDeclaration && node.id !== null;
  7778. }
  7779. static isFunctionExpressionNode(node) {
  7780. return node.type === NodeType_1.NodeType.FunctionExpression;
  7781. }
  7782. static isIdentifierNode(node) {
  7783. return node.type === NodeType_1.NodeType.Identifier;
  7784. }
  7785. static isIfStatementNode(node) {
  7786. return node.type === NodeType_1.NodeType.IfStatement;
  7787. }
  7788. static isImportDeclarationNode(node) {
  7789. return node.type === NodeType_1.NodeType.ImportDeclaration;
  7790. }
  7791. static isImportSpecifierNode(node) {
  7792. return node.type === NodeType_1.NodeType.ImportSpecifier;
  7793. }
  7794. static isLabelIdentifierNode(node, parentNode) {
  7795. const parentNodeIsLabeledStatementNode = NodeGuards.isLabeledStatementNode(parentNode) && parentNode.label === node;
  7796. const parentNodeIsContinueStatementNode = NodeGuards.isContinueStatementNode(parentNode) && parentNode.label === node;
  7797. const parentNodeIsBreakStatementNode = NodeGuards.isBreakStatementNode(parentNode) && parentNode.label === node;
  7798. return parentNodeIsLabeledStatementNode || parentNodeIsContinueStatementNode || parentNodeIsBreakStatementNode;
  7799. }
  7800. static isLabeledStatementNode(node) {
  7801. return node.type === NodeType_1.NodeType.LabeledStatement;
  7802. }
  7803. static isLiteralNode(node) {
  7804. return node.type === NodeType_1.NodeType.Literal;
  7805. }
  7806. static isMemberExpressionNode(node) {
  7807. return node.type === NodeType_1.NodeType.MemberExpression;
  7808. }
  7809. static isMethodDefinitionNode(node) {
  7810. return node.type === NodeType_1.NodeType.MethodDefinition;
  7811. }
  7812. static isNode(object) {
  7813. return object && !object.type !== undefined;
  7814. }
  7815. static isNodeWithLexicalScope(node) {
  7816. return NodeGuards.isProgramNode(node) || NodeGuards.isFunctionNode(node);
  7817. }
  7818. static isNodeWithBlockLexicalScope(node) {
  7819. return NodeGuards.isNodeWithLexicalScope(node) || NodeGuards.isBlockStatementNode(node);
  7820. }
  7821. static isNodeWithLexicalScopeStatements(node, parentNode) {
  7822. return NodeGuards.isProgramNode(node)
  7823. || (NodeGuards.isBlockStatementNode(node) && NodeGuards.nodesWithLexicalStatements.includes(parentNode.type));
  7824. }
  7825. static isNodeWithStatements(node) {
  7826. return NodeGuards.isProgramNode(node)
  7827. || NodeGuards.isBlockStatementNode(node)
  7828. || NodeGuards.isSwitchCaseNode(node);
  7829. }
  7830. static isNodeWithComments(node) {
  7831. return Boolean(node.leadingComments) || Boolean(node.trailingComments);
  7832. }
  7833. static isObjectPatternNode(node) {
  7834. return node.type === NodeType_1.NodeType.ObjectPattern;
  7835. }
  7836. static isObjectExpressionNode(node) {
  7837. return node.type === NodeType_1.NodeType.ObjectExpression;
  7838. }
  7839. static isProgramNode(node) {
  7840. return node.type === NodeType_1.NodeType.Program;
  7841. }
  7842. static isPropertyNode(node) {
  7843. return node.type === NodeType_1.NodeType.Property;
  7844. }
  7845. static parentNodeIsPropertyNode(node, parentNode) {
  7846. return NodeGuards.isPropertyNode(parentNode)
  7847. && !parentNode.computed
  7848. && parentNode.key === node;
  7849. }
  7850. static parentNodeIsMemberExpressionNode(node, parentNode) {
  7851. return (NodeGuards.isMemberExpressionNode(parentNode)
  7852. && !parentNode.computed
  7853. && parentNode.property === node);
  7854. }
  7855. static parentNodeIsMethodDefinitionNode(node, parentNode) {
  7856. return NodeGuards.isMethodDefinitionNode(parentNode)
  7857. && !parentNode.computed;
  7858. }
  7859. static isReplaceableIdentifierNode(node, parentNode) {
  7860. return NodeGuards.isIdentifierNode(node)
  7861. && !NodeGuards.parentNodeIsPropertyNode(node, parentNode)
  7862. && !NodeGuards.parentNodeIsMemberExpressionNode(node, parentNode)
  7863. && !NodeGuards.parentNodeIsMethodDefinitionNode(node, parentNode)
  7864. && !NodeGuards.isLabelIdentifierNode(node, parentNode);
  7865. }
  7866. static isRestElementNode(node) {
  7867. return node.type === NodeType_1.NodeType.RestElement;
  7868. }
  7869. static isReturnStatementNode(node) {
  7870. return node.type === NodeType_1.NodeType.ReturnStatement;
  7871. }
  7872. static isSuperNode(node) {
  7873. return node.type === NodeType_1.NodeType.Super;
  7874. }
  7875. static isSwitchCaseNode(node) {
  7876. return node.type === NodeType_1.NodeType.SwitchCase;
  7877. }
  7878. static isTaggedTemplateExpressionNode(node) {
  7879. return node.type === NodeType_1.NodeType.TaggedTemplateExpression;
  7880. }
  7881. static isTemplateLiteralNode(node) {
  7882. return node.type === NodeType_1.NodeType.TemplateLiteral;
  7883. }
  7884. static isUnaryExpressionNode(node) {
  7885. return node.type === NodeType_1.NodeType.UnaryExpression;
  7886. }
  7887. static isUseStrictOperator(node) {
  7888. return NodeGuards.isDirectiveNode(node)
  7889. && node.directive === 'use strict';
  7890. }
  7891. static isVariableDeclarationNode(node) {
  7892. return node.type === NodeType_1.NodeType.VariableDeclaration;
  7893. }
  7894. static isVariableDeclaratorNode(node) {
  7895. return node.type === NodeType_1.NodeType.VariableDeclarator;
  7896. }
  7897. static isWhileStatementNode(node) {
  7898. return node.type === NodeType_1.NodeType.WhileStatement;
  7899. }
  7900. }
  7901. exports.NodeGuards = NodeGuards;
  7902. NodeGuards.nodesWithLexicalStatements = [
  7903. NodeType_1.NodeType.ArrowFunctionExpression,
  7904. NodeType_1.NodeType.FunctionDeclaration,
  7905. NodeType_1.NodeType.FunctionExpression,
  7906. NodeType_1.NodeType.MethodDefinition,
  7907. ];
  7908. /***/ }),
  7909. /***/ "./src/node/NodeLexicalScopeUtils.ts":
  7910. /*!*******************************************!*\
  7911. !*** ./src/node/NodeLexicalScopeUtils.ts ***!
  7912. \*******************************************/
  7913. /*! no static exports found */
  7914. /***/ (function(module, exports, __webpack_require__) {
  7915. "use strict";
  7916. Object.defineProperty(exports, "__esModule", { value: true });
  7917. const NodeGuards_1 = __webpack_require__(/*! ./NodeGuards */ "./src/node/NodeGuards.ts");
  7918. class NodeLexicalScopeUtils {
  7919. static getLexicalScope(node) {
  7920. return NodeLexicalScopeUtils.getLexicalScopesRecursive(node, 1)[0];
  7921. }
  7922. static getLexicalScopes(node) {
  7923. return NodeLexicalScopeUtils.getLexicalScopesRecursive(node);
  7924. }
  7925. static getLexicalScopesRecursive(node, maxSize = Infinity, nodesWithLexicalScope = [], depth = 0) {
  7926. if (nodesWithLexicalScope.length >= maxSize) {
  7927. return nodesWithLexicalScope;
  7928. }
  7929. const parentNode = node.parentNode;
  7930. if (!parentNode) {
  7931. throw new ReferenceError('`parentNode` property of given node is `undefined`');
  7932. }
  7933. if (NodeGuards_1.NodeGuards.isNodeWithLexicalScope(node)) {
  7934. nodesWithLexicalScope.push(node);
  7935. }
  7936. if (node !== parentNode) {
  7937. return NodeLexicalScopeUtils.getLexicalScopesRecursive(parentNode, maxSize, nodesWithLexicalScope, ++depth);
  7938. }
  7939. return nodesWithLexicalScope;
  7940. }
  7941. }
  7942. exports.NodeLexicalScopeUtils = NodeLexicalScopeUtils;
  7943. /***/ }),
  7944. /***/ "./src/node/NodeMetadata.ts":
  7945. /*!**********************************!*\
  7946. !*** ./src/node/NodeMetadata.ts ***!
  7947. \**********************************/
  7948. /*! no static exports found */
  7949. /***/ (function(module, exports, __webpack_require__) {
  7950. "use strict";
  7951. Object.defineProperty(exports, "__esModule", { value: true });
  7952. class NodeMetadata {
  7953. static set(node, metadata) {
  7954. node.metadata = Object.assign(node.metadata || {}, metadata);
  7955. }
  7956. static get(node, metadataKey) {
  7957. return node.metadata !== undefined
  7958. ? node.metadata[metadataKey]
  7959. : undefined;
  7960. }
  7961. static isIgnoredNode(node) {
  7962. return NodeMetadata.get(node, 'ignoredNode') === true;
  7963. }
  7964. static isRenamedIdentifier(identifierNode) {
  7965. return NodeMetadata.get(identifierNode, 'renamedIdentifier') === true;
  7966. }
  7967. static isReplacedLiteral(literalNode) {
  7968. return NodeMetadata.get(literalNode, 'replacedLiteral') === true;
  7969. }
  7970. }
  7971. exports.NodeMetadata = NodeMetadata;
  7972. /***/ }),
  7973. /***/ "./src/node/NodeStatementUtils.ts":
  7974. /*!****************************************!*\
  7975. !*** ./src/node/NodeStatementUtils.ts ***!
  7976. \****************************************/
  7977. /*! no static exports found */
  7978. /***/ (function(module, exports, __webpack_require__) {
  7979. "use strict";
  7980. Object.defineProperty(exports, "__esModule", { value: true });
  7981. const NodeGuards_1 = __webpack_require__(/*! ./NodeGuards */ "./src/node/NodeGuards.ts");
  7982. class NodeStatementUtils {
  7983. static getParentNodeWithStatements(node) {
  7984. return NodeStatementUtils.getParentNodesWithStatementsRecursive(node, 1)[0];
  7985. }
  7986. static getParentNodesWithStatements(node) {
  7987. return NodeStatementUtils.getParentNodesWithStatementsRecursive(node);
  7988. }
  7989. static getNextSiblingStatement(statement) {
  7990. return NodeStatementUtils.getSiblingStatementByOffset(statement, 1);
  7991. }
  7992. static getPreviousSiblingStatement(statement) {
  7993. return NodeStatementUtils.getSiblingStatementByOffset(statement, -1);
  7994. }
  7995. static getRootStatementOfNode(node) {
  7996. if (NodeGuards_1.NodeGuards.isProgramNode(node)) {
  7997. throw new Error('Unable to find root statement for `Program` node');
  7998. }
  7999. const parentNode = node.parentNode;
  8000. if (!parentNode) {
  8001. throw new ReferenceError('`parentNode` property of given node is `undefined`');
  8002. }
  8003. if (!NodeGuards_1.NodeGuards.isNodeWithStatements(parentNode)) {
  8004. return NodeStatementUtils.getRootStatementOfNode(parentNode);
  8005. }
  8006. return node;
  8007. }
  8008. static getScopeOfNode(node) {
  8009. const parentNode = node.parentNode;
  8010. if (!parentNode) {
  8011. throw new ReferenceError('`parentNode` property of given node is `undefined`');
  8012. }
  8013. if (!NodeGuards_1.NodeGuards.isNodeWithStatements(parentNode)) {
  8014. return NodeStatementUtils.getScopeOfNode(parentNode);
  8015. }
  8016. return parentNode;
  8017. }
  8018. static getParentNodesWithStatementsRecursive(node, maxSize = Infinity, nodesWithStatements = [], depth = 0) {
  8019. if (nodesWithStatements.length >= maxSize) {
  8020. return nodesWithStatements;
  8021. }
  8022. const parentNode = node.parentNode;
  8023. if (!parentNode) {
  8024. throw new ReferenceError('`parentNode` property of given node is `undefined`');
  8025. }
  8026. if (NodeGuards_1.NodeGuards.isProgramNode(node) ||
  8027. (NodeGuards_1.NodeGuards.isNodeWithLexicalScopeStatements(node, parentNode) && depth > 0)) {
  8028. nodesWithStatements.push(node);
  8029. }
  8030. if (node !== parentNode) {
  8031. return NodeStatementUtils.getParentNodesWithStatementsRecursive(parentNode, maxSize, nodesWithStatements, ++depth);
  8032. }
  8033. return nodesWithStatements;
  8034. }
  8035. static getSiblingStatementByOffset(statement, offset) {
  8036. const scopeNode = NodeStatementUtils.getScopeOfNode(statement);
  8037. const scopeBody = !NodeGuards_1.NodeGuards.isSwitchCaseNode(scopeNode)
  8038. ? scopeNode.body
  8039. : scopeNode.consequent;
  8040. const indexInScope = scopeBody.indexOf(statement);
  8041. return scopeBody[indexInScope + offset] || null;
  8042. }
  8043. }
  8044. exports.NodeStatementUtils = NodeStatementUtils;
  8045. /***/ }),
  8046. /***/ "./src/node/NodeUtils.ts":
  8047. /*!*******************************!*\
  8048. !*** ./src/node/NodeUtils.ts ***!
  8049. \*******************************/
  8050. /*! no static exports found */
  8051. /***/ (function(module, exports, __webpack_require__) {
  8052. "use strict";
  8053. Object.defineProperty(exports, "__esModule", { value: true });
  8054. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  8055. const escodegen = tslib_1.__importStar(__webpack_require__(/*! escodegen */ "escodegen"));
  8056. const espree = tslib_1.__importStar(__webpack_require__(/*! espree */ "espree"));
  8057. const estraverse = tslib_1.__importStar(__webpack_require__(/*! estraverse */ "estraverse"));
  8058. const NodeGuards_1 = __webpack_require__(/*! ./NodeGuards */ "./src/node/NodeGuards.ts");
  8059. const NodeMetadata_1 = __webpack_require__(/*! ./NodeMetadata */ "./src/node/NodeMetadata.ts");
  8060. class NodeUtils {
  8061. static addXVerbatimPropertyTo(literalNode) {
  8062. literalNode['x-verbatim-property'] = {
  8063. content: literalNode.raw,
  8064. precedence: escodegen.Precedence.Primary
  8065. };
  8066. return literalNode;
  8067. }
  8068. static clone(astTree) {
  8069. return NodeUtils.parentizeAst(NodeUtils.cloneRecursive(astTree));
  8070. }
  8071. static convertCodeToStructure(code) {
  8072. const structure = espree.parse(code, {
  8073. ecmaVersion: 10,
  8074. sourceType: 'script'
  8075. });
  8076. estraverse.replace(structure, {
  8077. enter: (node, parentNode) => {
  8078. NodeUtils.parentizeNode(node, parentNode);
  8079. if (NodeGuards_1.NodeGuards.isLiteralNode(node)) {
  8080. NodeUtils.addXVerbatimPropertyTo(node);
  8081. }
  8082. NodeMetadata_1.NodeMetadata.set(node, { ignoredNode: false });
  8083. return node;
  8084. }
  8085. });
  8086. return structure.body;
  8087. }
  8088. static convertStructureToCode(structure) {
  8089. return structure.reduce((code, node) => {
  8090. return code + escodegen.generate(node, {
  8091. sourceMapWithCode: true
  8092. }).code;
  8093. }, '');
  8094. }
  8095. static getUnaryExpressionArgumentNode(unaryExpressionNode) {
  8096. if (NodeGuards_1.NodeGuards.isUnaryExpressionNode(unaryExpressionNode.argument)) {
  8097. return NodeUtils.getUnaryExpressionArgumentNode(unaryExpressionNode.argument);
  8098. }
  8099. return unaryExpressionNode.argument;
  8100. }
  8101. static parentizeAst(astTree) {
  8102. estraverse.replace(astTree, {
  8103. enter: NodeUtils.parentizeNode
  8104. });
  8105. return astTree;
  8106. }
  8107. static parentizeNode(node, parentNode) {
  8108. node.parentNode = parentNode || node;
  8109. return node;
  8110. }
  8111. static cloneRecursive(node) {
  8112. if (node === null) {
  8113. return node;
  8114. }
  8115. const copy = {};
  8116. const nodeKeys = Object.keys(node);
  8117. nodeKeys
  8118. .forEach((property) => {
  8119. if (property === 'parentNode') {
  8120. return;
  8121. }
  8122. const value = node[property];
  8123. let clonedValue;
  8124. if (value === null || value instanceof RegExp) {
  8125. clonedValue = value;
  8126. }
  8127. else if (Array.isArray(value)) {
  8128. clonedValue = value.map(NodeUtils.cloneRecursive);
  8129. }
  8130. else if (typeof value === 'object') {
  8131. clonedValue = NodeUtils.cloneRecursive(value);
  8132. }
  8133. else {
  8134. clonedValue = value;
  8135. }
  8136. copy[property] = clonedValue;
  8137. });
  8138. return copy;
  8139. }
  8140. }
  8141. exports.NodeUtils = NodeUtils;
  8142. /***/ }),
  8143. /***/ "./src/options/Options.ts":
  8144. /*!********************************!*\
  8145. !*** ./src/options/Options.ts ***!
  8146. \********************************/
  8147. /*! no static exports found */
  8148. /***/ (function(module, exports, __webpack_require__) {
  8149. "use strict";
  8150. var Options_1;
  8151. Object.defineProperty(exports, "__esModule", { value: true });
  8152. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  8153. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  8154. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  8155. const class_validator_1 = __webpack_require__(/*! class-validator */ "class-validator");
  8156. const IdentifierNamesGenerator_1 = __webpack_require__(/*! ../enums/generators/identifier-names-generators/IdentifierNamesGenerator */ "./src/enums/generators/identifier-names-generators/IdentifierNamesGenerator.ts");
  8157. const ObfuscationTarget_1 = __webpack_require__(/*! ../enums/ObfuscationTarget */ "./src/enums/ObfuscationTarget.ts");
  8158. const SourceMapMode_1 = __webpack_require__(/*! ../enums/source-map/SourceMapMode */ "./src/enums/source-map/SourceMapMode.ts");
  8159. const StringArrayEncoding_1 = __webpack_require__(/*! ../enums/StringArrayEncoding */ "./src/enums/StringArrayEncoding.ts");
  8160. const Default_1 = __webpack_require__(/*! ./presets/Default */ "./src/options/presets/Default.ts");
  8161. const ValidationErrorsFormatter_1 = __webpack_require__(/*! ./ValidationErrorsFormatter */ "./src/options/ValidationErrorsFormatter.ts");
  8162. let Options = Options_1 = class Options {
  8163. constructor(inputOptions, optionsNormalizer) {
  8164. Object.assign(this, Default_1.DEFAULT_PRESET, inputOptions);
  8165. const errors = class_validator_1.validateSync(this, Options_1.validatorOptions);
  8166. if (errors.length) {
  8167. throw new ReferenceError(`Validation failed. errors:\n${ValidationErrorsFormatter_1.ValidationErrorsFormatter.format(errors)}`);
  8168. }
  8169. Object.assign(this, optionsNormalizer.normalize(this));
  8170. }
  8171. };
  8172. Options.validatorOptions = {
  8173. validationError: {
  8174. target: false
  8175. }
  8176. };
  8177. tslib_1.__decorate([
  8178. class_validator_1.IsBoolean(),
  8179. tslib_1.__metadata("design:type", Boolean)
  8180. ], Options.prototype, "compact", void 0);
  8181. tslib_1.__decorate([
  8182. class_validator_1.IsBoolean(),
  8183. tslib_1.__metadata("design:type", Boolean)
  8184. ], Options.prototype, "controlFlowFlattening", void 0);
  8185. tslib_1.__decorate([
  8186. class_validator_1.IsNumber(),
  8187. class_validator_1.Min(0),
  8188. class_validator_1.Max(1),
  8189. tslib_1.__metadata("design:type", Number)
  8190. ], Options.prototype, "controlFlowFlatteningThreshold", void 0);
  8191. tslib_1.__decorate([
  8192. class_validator_1.IsBoolean(),
  8193. tslib_1.__metadata("design:type", Boolean)
  8194. ], Options.prototype, "deadCodeInjection", void 0);
  8195. tslib_1.__decorate([
  8196. class_validator_1.IsNumber(),
  8197. tslib_1.__metadata("design:type", Number)
  8198. ], Options.prototype, "deadCodeInjectionThreshold", void 0);
  8199. tslib_1.__decorate([
  8200. class_validator_1.IsBoolean(),
  8201. tslib_1.__metadata("design:type", Boolean)
  8202. ], Options.prototype, "debugProtection", void 0);
  8203. tslib_1.__decorate([
  8204. class_validator_1.IsBoolean(),
  8205. tslib_1.__metadata("design:type", Boolean)
  8206. ], Options.prototype, "debugProtectionInterval", void 0);
  8207. tslib_1.__decorate([
  8208. class_validator_1.IsBoolean(),
  8209. tslib_1.__metadata("design:type", Boolean)
  8210. ], Options.prototype, "disableConsoleOutput", void 0);
  8211. tslib_1.__decorate([
  8212. class_validator_1.IsArray(),
  8213. class_validator_1.ArrayUnique(),
  8214. class_validator_1.IsString({
  8215. each: true
  8216. }),
  8217. tslib_1.__metadata("design:type", Array)
  8218. ], Options.prototype, "domainLock", void 0);
  8219. tslib_1.__decorate([
  8220. class_validator_1.IsIn([
  8221. IdentifierNamesGenerator_1.IdentifierNamesGenerator.DictionaryIdentifierNamesGenerator,
  8222. IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator,
  8223. IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledIdentifierNamesGenerator
  8224. ]),
  8225. tslib_1.__metadata("design:type", Object)
  8226. ], Options.prototype, "identifierNamesGenerator", void 0);
  8227. tslib_1.__decorate([
  8228. class_validator_1.IsString(),
  8229. tslib_1.__metadata("design:type", String)
  8230. ], Options.prototype, "identifiersPrefix", void 0);
  8231. tslib_1.__decorate([
  8232. class_validator_1.IsArray(),
  8233. class_validator_1.ArrayUnique(),
  8234. class_validator_1.IsString({
  8235. each: true
  8236. }),
  8237. class_validator_1.ValidateIf((options) => options.identifierNamesGenerator === IdentifierNamesGenerator_1.IdentifierNamesGenerator.DictionaryIdentifierNamesGenerator),
  8238. class_validator_1.ArrayNotEmpty(),
  8239. tslib_1.__metadata("design:type", Array)
  8240. ], Options.prototype, "identifiersDictionary", void 0);
  8241. tslib_1.__decorate([
  8242. class_validator_1.IsString(),
  8243. tslib_1.__metadata("design:type", String)
  8244. ], Options.prototype, "inputFileName", void 0);
  8245. tslib_1.__decorate([
  8246. class_validator_1.IsBoolean(),
  8247. tslib_1.__metadata("design:type", Boolean)
  8248. ], Options.prototype, "log", void 0);
  8249. tslib_1.__decorate([
  8250. class_validator_1.IsBoolean(),
  8251. tslib_1.__metadata("design:type", Boolean)
  8252. ], Options.prototype, "renameGlobals", void 0);
  8253. tslib_1.__decorate([
  8254. class_validator_1.IsArray(),
  8255. class_validator_1.ArrayUnique(),
  8256. class_validator_1.IsString({
  8257. each: true
  8258. }),
  8259. tslib_1.__metadata("design:type", Array)
  8260. ], Options.prototype, "reservedNames", void 0);
  8261. tslib_1.__decorate([
  8262. class_validator_1.IsArray(),
  8263. class_validator_1.ArrayUnique(),
  8264. class_validator_1.IsString({
  8265. each: true
  8266. }),
  8267. tslib_1.__metadata("design:type", Array)
  8268. ], Options.prototype, "reservedStrings", void 0);
  8269. tslib_1.__decorate([
  8270. class_validator_1.IsBoolean(),
  8271. tslib_1.__metadata("design:type", Boolean)
  8272. ], Options.prototype, "rotateStringArray", void 0);
  8273. tslib_1.__decorate([
  8274. class_validator_1.IsBoolean(),
  8275. tslib_1.__metadata("design:type", Boolean)
  8276. ], Options.prototype, "selfDefending", void 0);
  8277. tslib_1.__decorate([
  8278. class_validator_1.IsBoolean(),
  8279. tslib_1.__metadata("design:type", Boolean)
  8280. ], Options.prototype, "sourceMap", void 0);
  8281. tslib_1.__decorate([
  8282. class_validator_1.IsString(),
  8283. class_validator_1.ValidateIf((options) => Boolean(options.sourceMapBaseUrl)),
  8284. class_validator_1.IsUrl({
  8285. require_protocol: true,
  8286. require_tld: false,
  8287. require_valid_protocol: true
  8288. }),
  8289. tslib_1.__metadata("design:type", String)
  8290. ], Options.prototype, "sourceMapBaseUrl", void 0);
  8291. tslib_1.__decorate([
  8292. class_validator_1.IsString(),
  8293. tslib_1.__metadata("design:type", String)
  8294. ], Options.prototype, "sourceMapFileName", void 0);
  8295. tslib_1.__decorate([
  8296. class_validator_1.IsIn([SourceMapMode_1.SourceMapMode.Inline, SourceMapMode_1.SourceMapMode.Separate]),
  8297. tslib_1.__metadata("design:type", Object)
  8298. ], Options.prototype, "sourceMapMode", void 0);
  8299. tslib_1.__decorate([
  8300. class_validator_1.IsBoolean(),
  8301. tslib_1.__metadata("design:type", Boolean)
  8302. ], Options.prototype, "splitStrings", void 0);
  8303. tslib_1.__decorate([
  8304. class_validator_1.IsNumber(),
  8305. class_validator_1.ValidateIf((options) => Boolean(options.splitStrings)),
  8306. class_validator_1.Min(1),
  8307. tslib_1.__metadata("design:type", Number)
  8308. ], Options.prototype, "splitStringsChunkLength", void 0);
  8309. tslib_1.__decorate([
  8310. class_validator_1.IsBoolean(),
  8311. tslib_1.__metadata("design:type", Boolean)
  8312. ], Options.prototype, "stringArray", void 0);
  8313. tslib_1.__decorate([
  8314. class_validator_1.IsIn([true, false, StringArrayEncoding_1.StringArrayEncoding.Base64, StringArrayEncoding_1.StringArrayEncoding.Rc4]),
  8315. tslib_1.__metadata("design:type", Object)
  8316. ], Options.prototype, "stringArrayEncoding", void 0);
  8317. tslib_1.__decorate([
  8318. class_validator_1.IsNumber(),
  8319. class_validator_1.Min(0),
  8320. class_validator_1.Max(1),
  8321. tslib_1.__metadata("design:type", Number)
  8322. ], Options.prototype, "stringArrayThreshold", void 0);
  8323. tslib_1.__decorate([
  8324. class_validator_1.IsIn([ObfuscationTarget_1.ObfuscationTarget.Browser, ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval, ObfuscationTarget_1.ObfuscationTarget.Node]),
  8325. tslib_1.__metadata("design:type", Object)
  8326. ], Options.prototype, "target", void 0);
  8327. tslib_1.__decorate([
  8328. class_validator_1.IsBoolean(),
  8329. tslib_1.__metadata("design:type", Boolean)
  8330. ], Options.prototype, "transformObjectKeys", void 0);
  8331. tslib_1.__decorate([
  8332. class_validator_1.IsBoolean(),
  8333. tslib_1.__metadata("design:type", Boolean)
  8334. ], Options.prototype, "unicodeEscapeSequence", void 0);
  8335. Options = Options_1 = tslib_1.__decorate([
  8336. inversify_1.injectable(),
  8337. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.TInputOptions)),
  8338. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptionsNormalizer)),
  8339. tslib_1.__metadata("design:paramtypes", [Object, Object])
  8340. ], Options);
  8341. exports.Options = Options;
  8342. /***/ }),
  8343. /***/ "./src/options/OptionsNormalizer.ts":
  8344. /*!******************************************!*\
  8345. !*** ./src/options/OptionsNormalizer.ts ***!
  8346. \******************************************/
  8347. /*! no static exports found */
  8348. /***/ (function(module, exports, __webpack_require__) {
  8349. "use strict";
  8350. var OptionsNormalizer_1;
  8351. Object.defineProperty(exports, "__esModule", { value: true });
  8352. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  8353. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  8354. const ControlFlowFlatteningThresholdRule_1 = __webpack_require__(/*! ./normalizer-rules/ControlFlowFlatteningThresholdRule */ "./src/options/normalizer-rules/ControlFlowFlatteningThresholdRule.ts");
  8355. const DeadCodeInjectionRule_1 = __webpack_require__(/*! ./normalizer-rules/DeadCodeInjectionRule */ "./src/options/normalizer-rules/DeadCodeInjectionRule.ts");
  8356. const DeadCodeInjectionThresholdRule_1 = __webpack_require__(/*! ./normalizer-rules/DeadCodeInjectionThresholdRule */ "./src/options/normalizer-rules/DeadCodeInjectionThresholdRule.ts");
  8357. const DomainLockRule_1 = __webpack_require__(/*! ./normalizer-rules/DomainLockRule */ "./src/options/normalizer-rules/DomainLockRule.ts");
  8358. const InputFileNameRule_1 = __webpack_require__(/*! ./normalizer-rules/InputFileNameRule */ "./src/options/normalizer-rules/InputFileNameRule.ts");
  8359. const SeedRule_1 = __webpack_require__(/*! ./normalizer-rules/SeedRule */ "./src/options/normalizer-rules/SeedRule.ts");
  8360. const SelfDefendingRule_1 = __webpack_require__(/*! ./normalizer-rules/SelfDefendingRule */ "./src/options/normalizer-rules/SelfDefendingRule.ts");
  8361. const SourceMapBaseUrlRule_1 = __webpack_require__(/*! ./normalizer-rules/SourceMapBaseUrlRule */ "./src/options/normalizer-rules/SourceMapBaseUrlRule.ts");
  8362. const SourceMapFileNameRule_1 = __webpack_require__(/*! ./normalizer-rules/SourceMapFileNameRule */ "./src/options/normalizer-rules/SourceMapFileNameRule.ts");
  8363. const SplitStringsChunkLengthRule_1 = __webpack_require__(/*! ./normalizer-rules/SplitStringsChunkLengthRule */ "./src/options/normalizer-rules/SplitStringsChunkLengthRule.ts");
  8364. const StringArrayRule_1 = __webpack_require__(/*! ./normalizer-rules/StringArrayRule */ "./src/options/normalizer-rules/StringArrayRule.ts");
  8365. const StringArrayEncodingRule_1 = __webpack_require__(/*! ./normalizer-rules/StringArrayEncodingRule */ "./src/options/normalizer-rules/StringArrayEncodingRule.ts");
  8366. const StringArrayThresholdRule_1 = __webpack_require__(/*! ./normalizer-rules/StringArrayThresholdRule */ "./src/options/normalizer-rules/StringArrayThresholdRule.ts");
  8367. let OptionsNormalizer = OptionsNormalizer_1 = class OptionsNormalizer {
  8368. normalize(options) {
  8369. let normalizedOptions = Object.assign({}, options);
  8370. for (const normalizerRule of OptionsNormalizer_1.normalizerRules) {
  8371. normalizedOptions = normalizerRule(normalizedOptions);
  8372. }
  8373. return normalizedOptions;
  8374. }
  8375. };
  8376. OptionsNormalizer.normalizerRules = [
  8377. ControlFlowFlatteningThresholdRule_1.ControlFlowFlatteningThresholdRule,
  8378. DeadCodeInjectionRule_1.DeadCodeInjectionRule,
  8379. DeadCodeInjectionThresholdRule_1.DeadCodeInjectionThresholdRule,
  8380. DomainLockRule_1.DomainLockRule,
  8381. InputFileNameRule_1.InputFileNameRule,
  8382. SeedRule_1.SeedRule,
  8383. SelfDefendingRule_1.SelfDefendingRule,
  8384. SourceMapBaseUrlRule_1.SourceMapBaseUrlRule,
  8385. SourceMapFileNameRule_1.SourceMapFileNameRule,
  8386. SplitStringsChunkLengthRule_1.SplitStringsChunkLengthRule,
  8387. StringArrayRule_1.StringArrayRule,
  8388. StringArrayEncodingRule_1.StringArrayEncodingRule,
  8389. StringArrayThresholdRule_1.StringArrayThresholdRule,
  8390. ];
  8391. OptionsNormalizer = OptionsNormalizer_1 = tslib_1.__decorate([
  8392. inversify_1.injectable()
  8393. ], OptionsNormalizer);
  8394. exports.OptionsNormalizer = OptionsNormalizer;
  8395. /***/ }),
  8396. /***/ "./src/options/ValidationErrorsFormatter.ts":
  8397. /*!**************************************************!*\
  8398. !*** ./src/options/ValidationErrorsFormatter.ts ***!
  8399. \**************************************************/
  8400. /*! no static exports found */
  8401. /***/ (function(module, exports, __webpack_require__) {
  8402. "use strict";
  8403. Object.defineProperty(exports, "__esModule", { value: true });
  8404. class ValidationErrorsFormatter {
  8405. static format(errors) {
  8406. return errors
  8407. .reduce((errorMessages, error) => ([
  8408. ...errorMessages,
  8409. ValidationErrorsFormatter.formatWithNestedConstraints(error)
  8410. ]), [])
  8411. .join('\n');
  8412. }
  8413. static formatWithNestedConstraints(error) {
  8414. const constraints = error.constraints;
  8415. const rootError = `\`${error.property}\` errors:\n`;
  8416. const nestedErrors = Object
  8417. .keys(constraints)
  8418. .map((constraint) => ` - ${constraints[constraint]}\n`)
  8419. .join();
  8420. return `${rootError}${nestedErrors}`;
  8421. }
  8422. }
  8423. exports.ValidationErrorsFormatter = ValidationErrorsFormatter;
  8424. /***/ }),
  8425. /***/ "./src/options/normalizer-rules/ControlFlowFlatteningThresholdRule.ts":
  8426. /*!****************************************************************************!*\
  8427. !*** ./src/options/normalizer-rules/ControlFlowFlatteningThresholdRule.ts ***!
  8428. \****************************************************************************/
  8429. /*! no static exports found */
  8430. /***/ (function(module, exports, __webpack_require__) {
  8431. "use strict";
  8432. Object.defineProperty(exports, "__esModule", { value: true });
  8433. exports.ControlFlowFlatteningThresholdRule = (options) => {
  8434. if (options.controlFlowFlatteningThreshold === 0) {
  8435. options = Object.assign(Object.assign({}, options), { controlFlowFlattening: false, controlFlowFlatteningThreshold: 0 });
  8436. }
  8437. return options;
  8438. };
  8439. /***/ }),
  8440. /***/ "./src/options/normalizer-rules/DeadCodeInjectionRule.ts":
  8441. /*!***************************************************************!*\
  8442. !*** ./src/options/normalizer-rules/DeadCodeInjectionRule.ts ***!
  8443. \***************************************************************/
  8444. /*! no static exports found */
  8445. /***/ (function(module, exports, __webpack_require__) {
  8446. "use strict";
  8447. Object.defineProperty(exports, "__esModule", { value: true });
  8448. const Default_1 = __webpack_require__(/*! ../presets/Default */ "./src/options/presets/Default.ts");
  8449. exports.DeadCodeInjectionRule = (options) => {
  8450. if (options.deadCodeInjection) {
  8451. options = Object.assign(Object.assign({}, options), { deadCodeInjection: true, stringArray: true });
  8452. if (!options.stringArrayThreshold) {
  8453. options = Object.assign(Object.assign({}, options), { stringArray: true, stringArrayThreshold: Default_1.DEFAULT_PRESET.stringArrayThreshold });
  8454. }
  8455. }
  8456. return options;
  8457. };
  8458. /***/ }),
  8459. /***/ "./src/options/normalizer-rules/DeadCodeInjectionThresholdRule.ts":
  8460. /*!************************************************************************!*\
  8461. !*** ./src/options/normalizer-rules/DeadCodeInjectionThresholdRule.ts ***!
  8462. \************************************************************************/
  8463. /*! no static exports found */
  8464. /***/ (function(module, exports, __webpack_require__) {
  8465. "use strict";
  8466. Object.defineProperty(exports, "__esModule", { value: true });
  8467. exports.DeadCodeInjectionThresholdRule = (options) => {
  8468. if (options.deadCodeInjectionThreshold === 0) {
  8469. options = Object.assign(Object.assign({}, options), { deadCodeInjection: false, deadCodeInjectionThreshold: 0 });
  8470. }
  8471. return options;
  8472. };
  8473. /***/ }),
  8474. /***/ "./src/options/normalizer-rules/DomainLockRule.ts":
  8475. /*!********************************************************!*\
  8476. !*** ./src/options/normalizer-rules/DomainLockRule.ts ***!
  8477. \********************************************************/
  8478. /*! no static exports found */
  8479. /***/ (function(module, exports, __webpack_require__) {
  8480. "use strict";
  8481. Object.defineProperty(exports, "__esModule", { value: true });
  8482. const Utils_1 = __webpack_require__(/*! ../../utils/Utils */ "./src/utils/Utils.ts");
  8483. exports.DomainLockRule = (options) => {
  8484. if (options.domainLock.length) {
  8485. const normalizedDomains = [];
  8486. for (const domain of options.domainLock) {
  8487. normalizedDomains.push(Utils_1.Utils.extractDomainFrom(domain));
  8488. }
  8489. options = Object.assign(Object.assign({}, options), { domainLock: normalizedDomains });
  8490. }
  8491. return options;
  8492. };
  8493. /***/ }),
  8494. /***/ "./src/options/normalizer-rules/InputFileNameRule.ts":
  8495. /*!***********************************************************!*\
  8496. !*** ./src/options/normalizer-rules/InputFileNameRule.ts ***!
  8497. \***********************************************************/
  8498. /*! no static exports found */
  8499. /***/ (function(module, exports, __webpack_require__) {
  8500. "use strict";
  8501. Object.defineProperty(exports, "__esModule", { value: true });
  8502. const StringSeparator_1 = __webpack_require__(/*! ../../enums/StringSeparator */ "./src/enums/StringSeparator.ts");
  8503. exports.InputFileNameRule = (options) => {
  8504. let { inputFileName } = options;
  8505. if (inputFileName) {
  8506. inputFileName = inputFileName
  8507. .replace(/^\/+/, '')
  8508. .split(StringSeparator_1.StringSeparator.Dot)
  8509. .slice(0, -1)
  8510. .join(StringSeparator_1.StringSeparator.Dot) || inputFileName;
  8511. options = Object.assign(Object.assign({}, options), { inputFileName: `${inputFileName}.js` });
  8512. }
  8513. return options;
  8514. };
  8515. /***/ }),
  8516. /***/ "./src/options/normalizer-rules/SeedRule.ts":
  8517. /*!**************************************************!*\
  8518. !*** ./src/options/normalizer-rules/SeedRule.ts ***!
  8519. \**************************************************/
  8520. /*! no static exports found */
  8521. /***/ (function(module, exports, __webpack_require__) {
  8522. "use strict";
  8523. Object.defineProperty(exports, "__esModule", { value: true });
  8524. exports.SeedRule = (options) => {
  8525. if (options.seed) {
  8526. return Object.assign(Object.assign({}, options), { seed: options.seed });
  8527. }
  8528. const getRandomInteger = (min, max) => {
  8529. return Math.floor(Math.random() * (max - min + 1) + min);
  8530. };
  8531. return Object.assign(Object.assign({}, options), { seed: getRandomInteger(0, 999999999) });
  8532. };
  8533. /***/ }),
  8534. /***/ "./src/options/normalizer-rules/SelfDefendingRule.ts":
  8535. /*!***********************************************************!*\
  8536. !*** ./src/options/normalizer-rules/SelfDefendingRule.ts ***!
  8537. \***********************************************************/
  8538. /*! no static exports found */
  8539. /***/ (function(module, exports, __webpack_require__) {
  8540. "use strict";
  8541. Object.defineProperty(exports, "__esModule", { value: true });
  8542. exports.SelfDefendingRule = (options) => {
  8543. if (options.selfDefending) {
  8544. options = Object.assign(Object.assign({}, options), { compact: true, selfDefending: true });
  8545. }
  8546. return options;
  8547. };
  8548. /***/ }),
  8549. /***/ "./src/options/normalizer-rules/SourceMapBaseUrlRule.ts":
  8550. /*!**************************************************************!*\
  8551. !*** ./src/options/normalizer-rules/SourceMapBaseUrlRule.ts ***!
  8552. \**************************************************************/
  8553. /*! no static exports found */
  8554. /***/ (function(module, exports, __webpack_require__) {
  8555. "use strict";
  8556. Object.defineProperty(exports, "__esModule", { value: true });
  8557. exports.SourceMapBaseUrlRule = (options) => {
  8558. const { sourceMapBaseUrl } = options;
  8559. if (!options.sourceMapFileName) {
  8560. options = Object.assign(Object.assign({}, options), { sourceMapBaseUrl: '' });
  8561. return options;
  8562. }
  8563. if (sourceMapBaseUrl && !sourceMapBaseUrl.endsWith('/')) {
  8564. options = Object.assign(Object.assign({}, options), { sourceMapBaseUrl: `${sourceMapBaseUrl}/` });
  8565. }
  8566. return options;
  8567. };
  8568. /***/ }),
  8569. /***/ "./src/options/normalizer-rules/SourceMapFileNameRule.ts":
  8570. /*!***************************************************************!*\
  8571. !*** ./src/options/normalizer-rules/SourceMapFileNameRule.ts ***!
  8572. \***************************************************************/
  8573. /*! no static exports found */
  8574. /***/ (function(module, exports, __webpack_require__) {
  8575. "use strict";
  8576. Object.defineProperty(exports, "__esModule", { value: true });
  8577. const StringSeparator_1 = __webpack_require__(/*! ../../enums/StringSeparator */ "./src/enums/StringSeparator.ts");
  8578. exports.SourceMapFileNameRule = (options) => {
  8579. let { sourceMapFileName } = options;
  8580. if (sourceMapFileName) {
  8581. sourceMapFileName = sourceMapFileName
  8582. .replace(/^\/+/, '')
  8583. .replace(/(?:\.js)?(?:\.map)?$/, '');
  8584. let sourceMapFileNameParts = sourceMapFileName.split(StringSeparator_1.StringSeparator.Dot);
  8585. const sourceMapFileNamePartsCount = sourceMapFileNameParts.length;
  8586. const lastPart = sourceMapFileNameParts[sourceMapFileNamePartsCount - 1];
  8587. if (sourceMapFileNamePartsCount > 1 && lastPart.length <= 3) {
  8588. sourceMapFileNameParts = sourceMapFileNameParts.slice(0, -1);
  8589. }
  8590. sourceMapFileName = sourceMapFileNameParts.join(StringSeparator_1.StringSeparator.Dot);
  8591. options = Object.assign(Object.assign({}, options), { sourceMapFileName: `${sourceMapFileName}.js.map` });
  8592. }
  8593. return options;
  8594. };
  8595. /***/ }),
  8596. /***/ "./src/options/normalizer-rules/SplitStringsChunkLengthRule.ts":
  8597. /*!*********************************************************************!*\
  8598. !*** ./src/options/normalizer-rules/SplitStringsChunkLengthRule.ts ***!
  8599. \*********************************************************************/
  8600. /*! no static exports found */
  8601. /***/ (function(module, exports, __webpack_require__) {
  8602. "use strict";
  8603. Object.defineProperty(exports, "__esModule", { value: true });
  8604. exports.SplitStringsChunkLengthRule = (options) => {
  8605. if (options.splitStringsChunkLength === 0) {
  8606. options = Object.assign(Object.assign({}, options), { splitStrings: false, splitStringsChunkLength: 0 });
  8607. }
  8608. else {
  8609. options = Object.assign(Object.assign({}, options), { splitStringsChunkLength: Math.floor(options.splitStringsChunkLength) });
  8610. }
  8611. return options;
  8612. };
  8613. /***/ }),
  8614. /***/ "./src/options/normalizer-rules/StringArrayEncodingRule.ts":
  8615. /*!*****************************************************************!*\
  8616. !*** ./src/options/normalizer-rules/StringArrayEncodingRule.ts ***!
  8617. \*****************************************************************/
  8618. /*! no static exports found */
  8619. /***/ (function(module, exports, __webpack_require__) {
  8620. "use strict";
  8621. Object.defineProperty(exports, "__esModule", { value: true });
  8622. const StringArrayEncoding_1 = __webpack_require__(/*! ../../enums/StringArrayEncoding */ "./src/enums/StringArrayEncoding.ts");
  8623. exports.StringArrayEncodingRule = (options) => {
  8624. if (options.stringArrayEncoding === true) {
  8625. options = Object.assign(Object.assign({}, options), { stringArrayEncoding: StringArrayEncoding_1.StringArrayEncoding.Base64 });
  8626. }
  8627. return options;
  8628. };
  8629. /***/ }),
  8630. /***/ "./src/options/normalizer-rules/StringArrayRule.ts":
  8631. /*!*********************************************************!*\
  8632. !*** ./src/options/normalizer-rules/StringArrayRule.ts ***!
  8633. \*********************************************************/
  8634. /*! no static exports found */
  8635. /***/ (function(module, exports, __webpack_require__) {
  8636. "use strict";
  8637. Object.defineProperty(exports, "__esModule", { value: true });
  8638. exports.StringArrayRule = (options) => {
  8639. if (!options.stringArray) {
  8640. options = Object.assign(Object.assign({}, options), { rotateStringArray: false, stringArray: false, stringArrayEncoding: false, stringArrayThreshold: 0 });
  8641. }
  8642. return options;
  8643. };
  8644. /***/ }),
  8645. /***/ "./src/options/normalizer-rules/StringArrayThresholdRule.ts":
  8646. /*!******************************************************************!*\
  8647. !*** ./src/options/normalizer-rules/StringArrayThresholdRule.ts ***!
  8648. \******************************************************************/
  8649. /*! no static exports found */
  8650. /***/ (function(module, exports, __webpack_require__) {
  8651. "use strict";
  8652. Object.defineProperty(exports, "__esModule", { value: true });
  8653. exports.StringArrayThresholdRule = (options) => {
  8654. if (options.stringArrayThreshold === 0) {
  8655. options = Object.assign(Object.assign({}, options), { rotateStringArray: false, stringArray: false, stringArrayEncoding: false, stringArrayThreshold: 0 });
  8656. }
  8657. return options;
  8658. };
  8659. /***/ }),
  8660. /***/ "./src/options/presets/Default.ts":
  8661. /*!****************************************!*\
  8662. !*** ./src/options/presets/Default.ts ***!
  8663. \****************************************/
  8664. /*! no static exports found */
  8665. /***/ (function(module, exports, __webpack_require__) {
  8666. "use strict";
  8667. Object.defineProperty(exports, "__esModule", { value: true });
  8668. const IdentifierNamesGenerator_1 = __webpack_require__(/*! ../../enums/generators/identifier-names-generators/IdentifierNamesGenerator */ "./src/enums/generators/identifier-names-generators/IdentifierNamesGenerator.ts");
  8669. const ObfuscationTarget_1 = __webpack_require__(/*! ../../enums/ObfuscationTarget */ "./src/enums/ObfuscationTarget.ts");
  8670. const SourceMapMode_1 = __webpack_require__(/*! ../../enums/source-map/SourceMapMode */ "./src/enums/source-map/SourceMapMode.ts");
  8671. exports.DEFAULT_PRESET = Object.freeze({
  8672. compact: true,
  8673. config: '',
  8674. controlFlowFlattening: false,
  8675. controlFlowFlatteningThreshold: 0.75,
  8676. deadCodeInjection: false,
  8677. deadCodeInjectionThreshold: 0.4,
  8678. debugProtection: false,
  8679. debugProtectionInterval: false,
  8680. disableConsoleOutput: false,
  8681. domainLock: [],
  8682. exclude: [],
  8683. identifierNamesGenerator: IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator,
  8684. identifiersPrefix: '',
  8685. identifiersDictionary: [],
  8686. inputFileName: '',
  8687. log: false,
  8688. renameGlobals: false,
  8689. reservedNames: [],
  8690. reservedStrings: [],
  8691. rotateStringArray: true,
  8692. seed: 0,
  8693. selfDefending: false,
  8694. sourceMap: false,
  8695. sourceMapBaseUrl: '',
  8696. sourceMapFileName: '',
  8697. sourceMapMode: SourceMapMode_1.SourceMapMode.Separate,
  8698. splitStrings: false,
  8699. splitStringsChunkLength: 10,
  8700. stringArray: true,
  8701. stringArrayEncoding: false,
  8702. stringArrayThreshold: 0.75,
  8703. target: ObfuscationTarget_1.ObfuscationTarget.Browser,
  8704. transformObjectKeys: false,
  8705. unicodeEscapeSequence: false
  8706. });
  8707. /***/ }),
  8708. /***/ "./src/options/presets/NoCustomNodes.ts":
  8709. /*!**********************************************!*\
  8710. !*** ./src/options/presets/NoCustomNodes.ts ***!
  8711. \**********************************************/
  8712. /*! no static exports found */
  8713. /***/ (function(module, exports, __webpack_require__) {
  8714. "use strict";
  8715. Object.defineProperty(exports, "__esModule", { value: true });
  8716. const IdentifierNamesGenerator_1 = __webpack_require__(/*! ../../enums/generators/identifier-names-generators/IdentifierNamesGenerator */ "./src/enums/generators/identifier-names-generators/IdentifierNamesGenerator.ts");
  8717. const ObfuscationTarget_1 = __webpack_require__(/*! ../../enums/ObfuscationTarget */ "./src/enums/ObfuscationTarget.ts");
  8718. const SourceMapMode_1 = __webpack_require__(/*! ../../enums/source-map/SourceMapMode */ "./src/enums/source-map/SourceMapMode.ts");
  8719. exports.NO_ADDITIONAL_NODES_PRESET = Object.freeze({
  8720. compact: true,
  8721. controlFlowFlattening: false,
  8722. controlFlowFlatteningThreshold: 0,
  8723. deadCodeInjection: false,
  8724. deadCodeInjectionThreshold: 0,
  8725. debugProtection: false,
  8726. debugProtectionInterval: false,
  8727. disableConsoleOutput: false,
  8728. domainLock: [],
  8729. exclude: [],
  8730. identifierNamesGenerator: IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator,
  8731. identifiersPrefix: '',
  8732. identifiersDictionary: [],
  8733. inputFileName: '',
  8734. log: false,
  8735. renameGlobals: false,
  8736. reservedNames: [],
  8737. reservedStrings: [],
  8738. rotateStringArray: false,
  8739. seed: 0,
  8740. selfDefending: false,
  8741. sourceMap: false,
  8742. sourceMapBaseUrl: '',
  8743. sourceMapFileName: '',
  8744. sourceMapMode: SourceMapMode_1.SourceMapMode.Separate,
  8745. splitStrings: false,
  8746. splitStringsChunkLength: 0,
  8747. stringArray: false,
  8748. stringArrayEncoding: false,
  8749. stringArrayThreshold: 0,
  8750. target: ObfuscationTarget_1.ObfuscationTarget.Browser,
  8751. transformObjectKeys: false,
  8752. unicodeEscapeSequence: false
  8753. });
  8754. /***/ }),
  8755. /***/ "./src/source-code/ObfuscatedCode.ts":
  8756. /*!*******************************************!*\
  8757. !*** ./src/source-code/ObfuscatedCode.ts ***!
  8758. \*******************************************/
  8759. /*! no static exports found */
  8760. /***/ (function(module, exports, __webpack_require__) {
  8761. "use strict";
  8762. Object.defineProperty(exports, "__esModule", { value: true });
  8763. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  8764. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  8765. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  8766. const Initializable_1 = __webpack_require__(/*! ../decorators/Initializable */ "./src/decorators/Initializable.ts");
  8767. const SourceMapMode_1 = __webpack_require__(/*! ../enums/source-map/SourceMapMode */ "./src/enums/source-map/SourceMapMode.ts");
  8768. let ObfuscatedCode = class ObfuscatedCode {
  8769. constructor(cryptUtils, options) {
  8770. this.cryptUtils = cryptUtils;
  8771. this.options = options;
  8772. }
  8773. initialize(obfuscatedCode, sourceMap) {
  8774. this.obfuscatedCode = obfuscatedCode;
  8775. this.sourceMap = sourceMap;
  8776. }
  8777. getObfuscatedCode() {
  8778. return this.correctObfuscatedCode();
  8779. }
  8780. getSourceMap() {
  8781. return this.sourceMap;
  8782. }
  8783. toString() {
  8784. return this.obfuscatedCode;
  8785. }
  8786. correctObfuscatedCode() {
  8787. if (!this.sourceMap) {
  8788. return this.obfuscatedCode;
  8789. }
  8790. const sourceMapUrl = this.options.sourceMapBaseUrl + this.options.sourceMapFileName;
  8791. let sourceMappingUrl = '//# sourceMappingURL=';
  8792. switch (this.options.sourceMapMode) {
  8793. case SourceMapMode_1.SourceMapMode.Inline:
  8794. sourceMappingUrl += `data:application/json;base64,${this.cryptUtils.btoa(this.sourceMap)}`;
  8795. break;
  8796. case SourceMapMode_1.SourceMapMode.Separate:
  8797. default:
  8798. if (!sourceMapUrl) {
  8799. return this.obfuscatedCode;
  8800. }
  8801. sourceMappingUrl += sourceMapUrl;
  8802. }
  8803. return `${this.obfuscatedCode}\n${sourceMappingUrl}`;
  8804. }
  8805. };
  8806. tslib_1.__decorate([
  8807. Initializable_1.initializable(),
  8808. tslib_1.__metadata("design:type", String)
  8809. ], ObfuscatedCode.prototype, "obfuscatedCode", void 0);
  8810. tslib_1.__decorate([
  8811. Initializable_1.initializable(),
  8812. tslib_1.__metadata("design:type", String)
  8813. ], ObfuscatedCode.prototype, "sourceMap", void 0);
  8814. ObfuscatedCode = tslib_1.__decorate([
  8815. inversify_1.injectable(),
  8816. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICryptUtils)),
  8817. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  8818. tslib_1.__metadata("design:paramtypes", [Object, Object])
  8819. ], ObfuscatedCode);
  8820. exports.ObfuscatedCode = ObfuscatedCode;
  8821. /***/ }),
  8822. /***/ "./src/source-code/SourceCode.ts":
  8823. /*!***************************************!*\
  8824. !*** ./src/source-code/SourceCode.ts ***!
  8825. \***************************************/
  8826. /*! no static exports found */
  8827. /***/ (function(module, exports, __webpack_require__) {
  8828. "use strict";
  8829. Object.defineProperty(exports, "__esModule", { value: true });
  8830. class SourceCode {
  8831. constructor(sourceCode, sourceMap) {
  8832. this.sourceCode = sourceCode;
  8833. this.sourceMap = sourceMap;
  8834. }
  8835. getSourceCode() {
  8836. return this.sourceCode;
  8837. }
  8838. getSourceMap() {
  8839. return this.sourceMap;
  8840. }
  8841. toString() {
  8842. return this.sourceCode;
  8843. }
  8844. }
  8845. exports.SourceCode = SourceCode;
  8846. /***/ }),
  8847. /***/ "./src/storages/ArrayStorage.ts":
  8848. /*!**************************************!*\
  8849. !*** ./src/storages/ArrayStorage.ts ***!
  8850. \**************************************/
  8851. /*! no static exports found */
  8852. /***/ (function(module, exports, __webpack_require__) {
  8853. "use strict";
  8854. Object.defineProperty(exports, "__esModule", { value: true });
  8855. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  8856. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  8857. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  8858. const Initializable_1 = __webpack_require__(/*! ../decorators/Initializable */ "./src/decorators/Initializable.ts");
  8859. let ArrayStorage = class ArrayStorage {
  8860. constructor(randomGenerator, options) {
  8861. this.storageLength = 0;
  8862. this.randomGenerator = randomGenerator;
  8863. this.options = options;
  8864. }
  8865. initialize() {
  8866. this.storage = [];
  8867. this.storageId = this.randomGenerator.getRandomString(6);
  8868. }
  8869. get(key) {
  8870. const value = this.storage[key];
  8871. if (!value) {
  8872. throw new Error(`No value found in array storage with key \`${key}\``);
  8873. }
  8874. return value;
  8875. }
  8876. getKeyOf(value) {
  8877. const key = this.storage.indexOf(value);
  8878. return key >= 0 ? key : null;
  8879. }
  8880. getLength() {
  8881. return this.storageLength;
  8882. }
  8883. getStorage() {
  8884. return this.storage;
  8885. }
  8886. getStorageId() {
  8887. return this.storageId;
  8888. }
  8889. mergeWith(storage, mergeId = false) {
  8890. this.storage = [...this.storage, ...storage.getStorage()];
  8891. if (mergeId) {
  8892. this.storageId = storage.getStorageId();
  8893. }
  8894. }
  8895. set(key, value) {
  8896. if (key === this.storageLength) {
  8897. this.storage.push(value);
  8898. }
  8899. else {
  8900. this.storage.splice(key, 0, value);
  8901. }
  8902. this.storageLength++;
  8903. }
  8904. };
  8905. tslib_1.__decorate([
  8906. Initializable_1.initializable(),
  8907. tslib_1.__metadata("design:type", Array)
  8908. ], ArrayStorage.prototype, "storage", void 0);
  8909. tslib_1.__decorate([
  8910. Initializable_1.initializable(),
  8911. tslib_1.__metadata("design:type", String)
  8912. ], ArrayStorage.prototype, "storageId", void 0);
  8913. tslib_1.__decorate([
  8914. inversify_1.postConstruct(),
  8915. tslib_1.__metadata("design:type", Function),
  8916. tslib_1.__metadata("design:paramtypes", []),
  8917. tslib_1.__metadata("design:returntype", void 0)
  8918. ], ArrayStorage.prototype, "initialize", null);
  8919. ArrayStorage = tslib_1.__decorate([
  8920. inversify_1.injectable(),
  8921. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  8922. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  8923. tslib_1.__metadata("design:paramtypes", [Object, Object])
  8924. ], ArrayStorage);
  8925. exports.ArrayStorage = ArrayStorage;
  8926. /***/ }),
  8927. /***/ "./src/storages/MapStorage.ts":
  8928. /*!************************************!*\
  8929. !*** ./src/storages/MapStorage.ts ***!
  8930. \************************************/
  8931. /*! no static exports found */
  8932. /***/ (function(module, exports, __webpack_require__) {
  8933. "use strict";
  8934. Object.defineProperty(exports, "__esModule", { value: true });
  8935. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  8936. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  8937. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  8938. const Initializable_1 = __webpack_require__(/*! ../decorators/Initializable */ "./src/decorators/Initializable.ts");
  8939. let MapStorage = class MapStorage {
  8940. constructor(randomGenerator, options) {
  8941. this.randomGenerator = randomGenerator;
  8942. this.options = options;
  8943. }
  8944. initialize() {
  8945. this.storage = new Map();
  8946. this.storageId = this.randomGenerator.getRandomString(6);
  8947. }
  8948. get(key) {
  8949. const value = this.storage.get(key);
  8950. if (!value) {
  8951. throw new Error(`No value found in map storage with key \`${key}\``);
  8952. }
  8953. return value;
  8954. }
  8955. getKeyOf(value) {
  8956. for (const [key, storageValue] of this.storage) {
  8957. if (value === storageValue) {
  8958. return key;
  8959. }
  8960. }
  8961. return null;
  8962. }
  8963. getLength() {
  8964. return this.storage.size;
  8965. }
  8966. getStorage() {
  8967. return this.storage;
  8968. }
  8969. getStorageId() {
  8970. return this.storageId;
  8971. }
  8972. has(key) {
  8973. return this.storage.has(key);
  8974. }
  8975. mergeWith(storage, mergeId = false) {
  8976. this.storage = new Map([...this.storage, ...storage.getStorage()]);
  8977. if (mergeId) {
  8978. this.storageId = storage.getStorageId();
  8979. }
  8980. }
  8981. set(key, value) {
  8982. this.storage.set(key, value);
  8983. }
  8984. };
  8985. tslib_1.__decorate([
  8986. Initializable_1.initializable(),
  8987. tslib_1.__metadata("design:type", String)
  8988. ], MapStorage.prototype, "storageId", void 0);
  8989. tslib_1.__decorate([
  8990. Initializable_1.initializable(),
  8991. tslib_1.__metadata("design:type", Map)
  8992. ], MapStorage.prototype, "storage", void 0);
  8993. tslib_1.__decorate([
  8994. inversify_1.postConstruct(),
  8995. tslib_1.__metadata("design:type", Function),
  8996. tslib_1.__metadata("design:paramtypes", []),
  8997. tslib_1.__metadata("design:returntype", void 0)
  8998. ], MapStorage.prototype, "initialize", null);
  8999. MapStorage = tslib_1.__decorate([
  9000. inversify_1.injectable(),
  9001. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  9002. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  9003. tslib_1.__metadata("design:paramtypes", [Object, Object])
  9004. ], MapStorage);
  9005. exports.MapStorage = MapStorage;
  9006. /***/ }),
  9007. /***/ "./src/storages/control-flow/ControlFlowStorage.ts":
  9008. /*!*********************************************************!*\
  9009. !*** ./src/storages/control-flow/ControlFlowStorage.ts ***!
  9010. \*********************************************************/
  9011. /*! no static exports found */
  9012. /***/ (function(module, exports, __webpack_require__) {
  9013. "use strict";
  9014. Object.defineProperty(exports, "__esModule", { value: true });
  9015. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  9016. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  9017. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  9018. const MapStorage_1 = __webpack_require__(/*! ../MapStorage */ "./src/storages/MapStorage.ts");
  9019. let ControlFlowStorage = class ControlFlowStorage extends MapStorage_1.MapStorage {
  9020. constructor(randomGenerator, options) {
  9021. super(randomGenerator, options);
  9022. }
  9023. };
  9024. ControlFlowStorage = tslib_1.__decorate([
  9025. inversify_1.injectable(),
  9026. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  9027. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  9028. tslib_1.__metadata("design:paramtypes", [Object, Object])
  9029. ], ControlFlowStorage);
  9030. exports.ControlFlowStorage = ControlFlowStorage;
  9031. /***/ }),
  9032. /***/ "./src/storages/custom-node-group/CustomNodeGroupStorage.ts":
  9033. /*!******************************************************************!*\
  9034. !*** ./src/storages/custom-node-group/CustomNodeGroupStorage.ts ***!
  9035. \******************************************************************/
  9036. /*! no static exports found */
  9037. /***/ (function(module, exports, __webpack_require__) {
  9038. "use strict";
  9039. var CustomNodeGroupStorage_1;
  9040. Object.defineProperty(exports, "__esModule", { value: true });
  9041. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  9042. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  9043. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  9044. const CustomNodeGroup_1 = __webpack_require__(/*! ../../enums/custom-nodes/CustomNodeGroup */ "./src/enums/custom-nodes/CustomNodeGroup.ts");
  9045. const MapStorage_1 = __webpack_require__(/*! ../MapStorage */ "./src/storages/MapStorage.ts");
  9046. let CustomNodeGroupStorage = CustomNodeGroupStorage_1 = class CustomNodeGroupStorage extends MapStorage_1.MapStorage {
  9047. constructor(customNodeGroupFactory, randomGenerator, options) {
  9048. super(randomGenerator, options);
  9049. this.customNodeGroupFactory = customNodeGroupFactory;
  9050. }
  9051. initialize() {
  9052. super.initialize();
  9053. CustomNodeGroupStorage_1.customNodeGroupsList.forEach((customNodeGroupName) => {
  9054. const customNodeGroup = this.customNodeGroupFactory(customNodeGroupName);
  9055. if (!customNodeGroup) {
  9056. return;
  9057. }
  9058. this.storage.set(customNodeGroupName, customNodeGroup);
  9059. });
  9060. }
  9061. };
  9062. CustomNodeGroupStorage.customNodeGroupsList = [
  9063. CustomNodeGroup_1.CustomNodeGroup.ConsoleOutputCustomNodeGroup,
  9064. CustomNodeGroup_1.CustomNodeGroup.DebugProtectionCustomNodeGroup,
  9065. CustomNodeGroup_1.CustomNodeGroup.DomainLockCustomNodeGroup,
  9066. CustomNodeGroup_1.CustomNodeGroup.SelfDefendingCustomNodeGroup,
  9067. CustomNodeGroup_1.CustomNodeGroup.StringArrayCustomNodeGroup
  9068. ];
  9069. tslib_1.__decorate([
  9070. inversify_1.postConstruct(),
  9071. tslib_1.__metadata("design:type", Function),
  9072. tslib_1.__metadata("design:paramtypes", []),
  9073. tslib_1.__metadata("design:returntype", void 0)
  9074. ], CustomNodeGroupStorage.prototype, "initialize", null);
  9075. CustomNodeGroupStorage = CustomNodeGroupStorage_1 = tslib_1.__decorate([
  9076. inversify_1.injectable(),
  9077. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNodeGroup)),
  9078. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  9079. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  9080. tslib_1.__metadata("design:paramtypes", [Function, Object, Object])
  9081. ], CustomNodeGroupStorage);
  9082. exports.CustomNodeGroupStorage = CustomNodeGroupStorage;
  9083. /***/ }),
  9084. /***/ "./src/storages/string-array/StringArrayStorage.ts":
  9085. /*!*********************************************************!*\
  9086. !*** ./src/storages/string-array/StringArrayStorage.ts ***!
  9087. \*********************************************************/
  9088. /*! no static exports found */
  9089. /***/ (function(module, exports, __webpack_require__) {
  9090. "use strict";
  9091. var StringArrayStorage_1;
  9092. Object.defineProperty(exports, "__esModule", { value: true });
  9093. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  9094. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  9095. const ServiceIdentifiers_1 = __webpack_require__(/*! ../../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  9096. const ArrayStorage_1 = __webpack_require__(/*! ../ArrayStorage */ "./src/storages/ArrayStorage.ts");
  9097. let StringArrayStorage = StringArrayStorage_1 = class StringArrayStorage extends ArrayStorage_1.ArrayStorage {
  9098. constructor(identifierNamesGeneratorFactory, arrayUtils, randomGenerator, options) {
  9099. super(randomGenerator, options);
  9100. this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);
  9101. this.arrayUtils = arrayUtils;
  9102. }
  9103. initialize() {
  9104. super.initialize();
  9105. const baseStringArrayName = this.identifierNamesGenerator
  9106. .generate(StringArrayStorage_1.stringArrayNameLength);
  9107. const baseStringArrayCallsWrapperName = this.identifierNamesGenerator
  9108. .generate(StringArrayStorage_1.stringArrayNameLength);
  9109. const stringArrayName = `${this.options.identifiersPrefix}${baseStringArrayName}`;
  9110. const stringArrayCallsWrapperName = `${this.options.identifiersPrefix}${baseStringArrayCallsWrapperName}`;
  9111. this.storageId = `${stringArrayName}|${stringArrayCallsWrapperName}`;
  9112. }
  9113. rotateArray(rotationValue) {
  9114. this.storage = this.arrayUtils.rotate(this.storage, rotationValue);
  9115. }
  9116. toString() {
  9117. return this.storage.map((value) => {
  9118. return `'${value}'`;
  9119. }).toString();
  9120. }
  9121. };
  9122. StringArrayStorage.stringArrayNameLength = 7;
  9123. tslib_1.__decorate([
  9124. inversify_1.postConstruct(),
  9125. tslib_1.__metadata("design:type", Function),
  9126. tslib_1.__metadata("design:paramtypes", []),
  9127. tslib_1.__metadata("design:returntype", void 0)
  9128. ], StringArrayStorage.prototype, "initialize", null);
  9129. StringArrayStorage = StringArrayStorage_1 = tslib_1.__decorate([
  9130. inversify_1.injectable(),
  9131. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),
  9132. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),
  9133. tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  9134. tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  9135. tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])
  9136. ], StringArrayStorage);
  9137. exports.StringArrayStorage = StringArrayStorage;
  9138. /***/ }),
  9139. /***/ "./src/templates/AtobTemplate.ts":
  9140. /*!***************************************!*\
  9141. !*** ./src/templates/AtobTemplate.ts ***!
  9142. \***************************************/
  9143. /*! no static exports found */
  9144. /***/ (function(module, exports, __webpack_require__) {
  9145. "use strict";
  9146. Object.defineProperty(exports, "__esModule", { value: true });
  9147. function AtobTemplate() {
  9148. return `
  9149. (function () {
  9150. {globalVariableTemplate}
  9151. const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  9152. that.atob || (
  9153. that.atob = function(input) {
  9154. const str = String(input).replace(/=+$/, '');
  9155. let output = '';
  9156. for (
  9157. let bc = 0, bs, buffer, idx = 0;
  9158. buffer = str.charAt(idx++);
  9159. ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
  9160. bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
  9161. ) {
  9162. buffer = chars.indexOf(buffer);
  9163. }
  9164. return output;
  9165. }
  9166. );
  9167. })();
  9168. `;
  9169. }
  9170. exports.AtobTemplate = AtobTemplate;
  9171. /***/ }),
  9172. /***/ "./src/templates/GlobalVariableNoEvalTemplate.ts":
  9173. /*!*******************************************************!*\
  9174. !*** ./src/templates/GlobalVariableNoEvalTemplate.ts ***!
  9175. \*******************************************************/
  9176. /*! no static exports found */
  9177. /***/ (function(module, exports, __webpack_require__) {
  9178. "use strict";
  9179. Object.defineProperty(exports, "__esModule", { value: true });
  9180. function GlobalVariableNoEvalTemplate() {
  9181. return `
  9182. const that = (typeof window !== 'undefined'
  9183. ? window
  9184. : (typeof process === 'object' &&
  9185. typeof require === 'function' &&
  9186. typeof global === 'object')
  9187. ? global
  9188. : this);
  9189. `;
  9190. }
  9191. exports.GlobalVariableNoEvalTemplate = GlobalVariableNoEvalTemplate;
  9192. /***/ }),
  9193. /***/ "./src/templates/GlobalVariableTemplate1.ts":
  9194. /*!**************************************************!*\
  9195. !*** ./src/templates/GlobalVariableTemplate1.ts ***!
  9196. \**************************************************/
  9197. /*! no static exports found */
  9198. /***/ (function(module, exports, __webpack_require__) {
  9199. "use strict";
  9200. Object.defineProperty(exports, "__esModule", { value: true });
  9201. function GlobalVariableTemplate1() {
  9202. return `
  9203. let that;
  9204. try {
  9205. const getGlobal = Function('return (function() ' + '{}.constructor("return this")( )' + ');');
  9206. that = getGlobal();
  9207. } catch (e) {
  9208. that = window;
  9209. }
  9210. `;
  9211. }
  9212. exports.GlobalVariableTemplate1 = GlobalVariableTemplate1;
  9213. /***/ }),
  9214. /***/ "./src/templates/GlobalVariableTemplate2.ts":
  9215. /*!**************************************************!*\
  9216. !*** ./src/templates/GlobalVariableTemplate2.ts ***!
  9217. \**************************************************/
  9218. /*! no static exports found */
  9219. /***/ (function(module, exports, __webpack_require__) {
  9220. "use strict";
  9221. Object.defineProperty(exports, "__esModule", { value: true });
  9222. function GlobalVariableTemplate2() {
  9223. return `
  9224. const getGlobal = function () {
  9225. let globalObject;
  9226. try {
  9227. globalObject = Function('return (function() ' + '{}.constructor("return this")( )' + ');')();
  9228. } catch (e) {
  9229. globalObject = window;
  9230. }
  9231. return globalObject;
  9232. };
  9233. const that = getGlobal();
  9234. `;
  9235. }
  9236. exports.GlobalVariableTemplate2 = GlobalVariableTemplate2;
  9237. /***/ }),
  9238. /***/ "./src/templates/Rc4Template.ts":
  9239. /*!**************************************!*\
  9240. !*** ./src/templates/Rc4Template.ts ***!
  9241. \**************************************/
  9242. /*! no static exports found */
  9243. /***/ (function(module, exports, __webpack_require__) {
  9244. "use strict";
  9245. Object.defineProperty(exports, "__esModule", { value: true });
  9246. function Rc4Template() {
  9247. return `
  9248. const rc4 = function (str, key) {
  9249. let s = [], j = 0, x, res = '', newStr = '';
  9250. str = atob(str);
  9251. for (let k = 0, length = str.length; k < length; k++) {
  9252. newStr += '%' + ('00' + str.charCodeAt(k).toString(16)).slice(-2);
  9253. }
  9254. str = decodeURIComponent(newStr);
  9255. let i;
  9256. for (i = 0; i < 256; i++) {
  9257. s[i] = i;
  9258. }
  9259. for (i = 0; i < 256; i++) {
  9260. j = (j + s[i] + key.charCodeAt(i % key.length)) % 256;
  9261. x = s[i];
  9262. s[i] = s[j];
  9263. s[j] = x;
  9264. }
  9265. i = 0;
  9266. j = 0;
  9267. for (let y = 0; y < str.length; y++) {
  9268. i = (i + 1) % 256;
  9269. j = (j + s[i]) % 256;
  9270. x = s[i];
  9271. s[i] = s[j];
  9272. s[j] = x;
  9273. res += String.fromCharCode(str.charCodeAt(y) ^ s[(s[i] + s[j]) % 256]);
  9274. }
  9275. return res;
  9276. }
  9277. `;
  9278. }
  9279. exports.Rc4Template = Rc4Template;
  9280. /***/ }),
  9281. /***/ "./src/templates/SingleNodeCallControllerTemplate.ts":
  9282. /*!***********************************************************!*\
  9283. !*** ./src/templates/SingleNodeCallControllerTemplate.ts ***!
  9284. \***********************************************************/
  9285. /*! no static exports found */
  9286. /***/ (function(module, exports, __webpack_require__) {
  9287. "use strict";
  9288. Object.defineProperty(exports, "__esModule", { value: true });
  9289. function SingleNodeCallControllerTemplate() {
  9290. return `
  9291. const {singleNodeCallControllerFunctionName} = (function(){
  9292. let firstCall = true;
  9293. return function (context, fn){
  9294. const rfn = firstCall ? function(){
  9295. if(fn){
  9296. const res = fn.apply(context, arguments);
  9297. fn = null;
  9298. return res;
  9299. }
  9300. } : function(){}
  9301. firstCall = false;
  9302. return rfn;
  9303. }
  9304. })();
  9305. `;
  9306. }
  9307. exports.SingleNodeCallControllerTemplate = SingleNodeCallControllerTemplate;
  9308. /***/ }),
  9309. /***/ "./src/templates/console-output-nodes/console-output-disable-expression-node/ConsoleOutputDisableExpressionTemplate.ts":
  9310. /*!*****************************************************************************************************************************!*\
  9311. !*** ./src/templates/console-output-nodes/console-output-disable-expression-node/ConsoleOutputDisableExpressionTemplate.ts ***!
  9312. \*****************************************************************************************************************************/
  9313. /*! no static exports found */
  9314. /***/ (function(module, exports, __webpack_require__) {
  9315. "use strict";
  9316. Object.defineProperty(exports, "__esModule", { value: true });
  9317. function ConsoleOutputDisableExpressionTemplate() {
  9318. return `
  9319. const {consoleLogDisableFunctionName} = {singleNodeCallControllerFunctionName}(this, function () {
  9320. const func = function () {};
  9321. {globalVariableTemplate}
  9322. if (!that.console) {
  9323. that.console = (function (func){
  9324. const c = {};
  9325. c.log = func;
  9326. c.warn = func;
  9327. c.debug = func;
  9328. c.info = func;
  9329. c.error = func;
  9330. c.exception = func;
  9331. c.table = func;
  9332. c.trace = func;
  9333. return c;
  9334. })(func);
  9335. } else {
  9336. that.console.log = func;
  9337. that.console.warn = func;
  9338. that.console.debug = func;
  9339. that.console.info = func;
  9340. that.console.error = func;
  9341. that.console.exception = func;
  9342. that.console.table = func;
  9343. that.console.trace = func;
  9344. }
  9345. });
  9346. {consoleLogDisableFunctionName}();
  9347. `;
  9348. }
  9349. exports.ConsoleOutputDisableExpressionTemplate = ConsoleOutputDisableExpressionTemplate;
  9350. /***/ }),
  9351. /***/ "./src/templates/debug-protection-nodes/debug-protection-function-call-node/DebugProtectionFunctionCallTemplate.ts":
  9352. /*!*************************************************************************************************************************!*\
  9353. !*** ./src/templates/debug-protection-nodes/debug-protection-function-call-node/DebugProtectionFunctionCallTemplate.ts ***!
  9354. \*************************************************************************************************************************/
  9355. /*! no static exports found */
  9356. /***/ (function(module, exports, __webpack_require__) {
  9357. "use strict";
  9358. Object.defineProperty(exports, "__esModule", { value: true });
  9359. function DebugProtectionFunctionCallTemplate() {
  9360. return `
  9361. (function () {
  9362. {singleNodeCallControllerFunctionName}(
  9363. this,
  9364. function () {
  9365. const regExp1 = new RegExp('function *\\\\( *\\\\)');
  9366. const regExp2 = new RegExp('\\\\+\\\\+ *\\(?:[a-zA-Z_$][0-9a-zA-Z_$]*\\)', 'i');
  9367. const result = {debugProtectionFunctionName}('init');
  9368. if (!regExp1.test(result + 'chain') || !regExp2.test(result + 'input')) {
  9369. result('0');
  9370. } else {
  9371. {debugProtectionFunctionName}();
  9372. }
  9373. }
  9374. )();
  9375. })();
  9376. `;
  9377. }
  9378. exports.DebugProtectionFunctionCallTemplate = DebugProtectionFunctionCallTemplate;
  9379. /***/ }),
  9380. /***/ "./src/templates/debug-protection-nodes/debug-protection-function-interval-node/DebugProtectionFunctionIntervalTemplate.ts":
  9381. /*!*********************************************************************************************************************************!*\
  9382. !*** ./src/templates/debug-protection-nodes/debug-protection-function-interval-node/DebugProtectionFunctionIntervalTemplate.ts ***!
  9383. \*********************************************************************************************************************************/
  9384. /*! no static exports found */
  9385. /***/ (function(module, exports, __webpack_require__) {
  9386. "use strict";
  9387. Object.defineProperty(exports, "__esModule", { value: true });
  9388. function DebugProtectionFunctionIntervalTemplate() {
  9389. return `
  9390. setInterval(function () {
  9391. {debugProtectionFunctionName}();
  9392. }, 4000);
  9393. `;
  9394. }
  9395. exports.DebugProtectionFunctionIntervalTemplate = DebugProtectionFunctionIntervalTemplate;
  9396. /***/ }),
  9397. /***/ "./src/templates/debug-protection-nodes/debug-protection-function-node/DebugProtectionFunctionTemplate.ts":
  9398. /*!****************************************************************************************************************!*\
  9399. !*** ./src/templates/debug-protection-nodes/debug-protection-function-node/DebugProtectionFunctionTemplate.ts ***!
  9400. \****************************************************************************************************************/
  9401. /*! no static exports found */
  9402. /***/ (function(module, exports, __webpack_require__) {
  9403. "use strict";
  9404. Object.defineProperty(exports, "__esModule", { value: true });
  9405. function DebugProtectionFunctionTemplate() {
  9406. return `
  9407. function {debugProtectionFunctionName} (ret) {
  9408. function debuggerProtection (counter) {
  9409. {debuggerTemplate}
  9410. debuggerProtection(++counter);
  9411. }
  9412. try {
  9413. if (ret) {
  9414. return debuggerProtection;
  9415. } else {
  9416. debuggerProtection(0);
  9417. }
  9418. } catch (y) {}
  9419. }
  9420. `;
  9421. }
  9422. exports.DebugProtectionFunctionTemplate = DebugProtectionFunctionTemplate;
  9423. /***/ }),
  9424. /***/ "./src/templates/debug-protection-nodes/debug-protection-function-node/DebuggerTemplate.ts":
  9425. /*!*************************************************************************************************!*\
  9426. !*** ./src/templates/debug-protection-nodes/debug-protection-function-node/DebuggerTemplate.ts ***!
  9427. \*************************************************************************************************/
  9428. /*! no static exports found */
  9429. /***/ (function(module, exports, __webpack_require__) {
  9430. "use strict";
  9431. Object.defineProperty(exports, "__esModule", { value: true });
  9432. function DebuggerTemplate() {
  9433. return `
  9434. if (typeof counter === 'string') {
  9435. return (function (arg) {}.constructor('while (true) {}').apply('counter'));
  9436. } else {
  9437. if (('' + counter / counter)['length'] !== 1 || counter % 20 === 0) {
  9438. (function () {return true;}.constructor('debu' + 'gger').call('action'));
  9439. } else {
  9440. (function () {return false;}.constructor('debu' + 'gger').apply('stateObject'));
  9441. }
  9442. }
  9443. `;
  9444. }
  9445. exports.DebuggerTemplate = DebuggerTemplate;
  9446. /***/ }),
  9447. /***/ "./src/templates/debug-protection-nodes/debug-protection-function-node/DebuggerTemplateNoEval.ts":
  9448. /*!*******************************************************************************************************!*\
  9449. !*** ./src/templates/debug-protection-nodes/debug-protection-function-node/DebuggerTemplateNoEval.ts ***!
  9450. \*******************************************************************************************************/
  9451. /*! no static exports found */
  9452. /***/ (function(module, exports, __webpack_require__) {
  9453. "use strict";
  9454. Object.defineProperty(exports, "__esModule", { value: true });
  9455. function DebuggerTemplateNoEval() {
  9456. return `
  9457. if (typeof counter === 'string') {
  9458. const func = function () {
  9459. while (true) {}
  9460. };
  9461. return func();
  9462. } else {
  9463. if (('' + counter / counter)['length'] !== 1 || counter % 20 === 0) {
  9464. debugger;
  9465. } else {
  9466. debugger;
  9467. }
  9468. }
  9469. `;
  9470. }
  9471. exports.DebuggerTemplateNoEval = DebuggerTemplateNoEval;
  9472. /***/ }),
  9473. /***/ "./src/templates/domain-lock-nodes/domain-lock-node/DomainLockNodeTemplate.ts":
  9474. /*!************************************************************************************!*\
  9475. !*** ./src/templates/domain-lock-nodes/domain-lock-node/DomainLockNodeTemplate.ts ***!
  9476. \************************************************************************************/
  9477. /*! no static exports found */
  9478. /***/ (function(module, exports, __webpack_require__) {
  9479. "use strict";
  9480. Object.defineProperty(exports, "__esModule", { value: true });
  9481. function DomainLockNodeTemplate() {
  9482. return `
  9483. const {domainLockFunctionName} = {singleNodeCallControllerFunctionName}(this, function () {
  9484. {globalVariableTemplate}
  9485. const func = function () {
  9486. return {
  9487. key: 'item',
  9488. value: 'attribute',
  9489. getAttribute: function () {
  9490. for (let i = 0; i < 1000; i--) {
  9491. const isPositive = i > 0;
  9492. switch (isPositive) {
  9493. case true:
  9494. return this.item + '_' + this.value + '_' + i;
  9495. default:
  9496. this.item + '_' + this.value;
  9497. }
  9498. }
  9499. }()
  9500. };
  9501. };
  9502. const regExp = new RegExp("[{diff}]", "g");
  9503. const domains = "{domains}".replace(regExp, "").split(";");
  9504. let document;
  9505. let domain;
  9506. let location;
  9507. let hostname;
  9508. for (let d in that) {
  9509. if (d.length == 8 && d.charCodeAt(7) == 116 && d.charCodeAt(5) == 101 && d.charCodeAt(3) == 117 && d.charCodeAt(0) == 100) {
  9510. document = d;
  9511. break;
  9512. }
  9513. }
  9514. for (let d1 in that[document]) {
  9515. if (d1.length == 6 && d1.charCodeAt(5) == 110 && d1.charCodeAt(0) == 100) {
  9516. domain = d1;
  9517. break;
  9518. }
  9519. }
  9520. if (!("~" > domain)) {
  9521. for (let d2 in that[document]) {
  9522. if (d2.length == 8 && d2.charCodeAt(7) == 110 && d2.charCodeAt(0) == 108) {
  9523. location = d2;
  9524. break;
  9525. }
  9526. }
  9527. for (let d3 in that[document][location]) {
  9528. if (d3.length == 8 && d3.charCodeAt(7) == 101 && d3.charCodeAt(0) == 104) {
  9529. hostname = d3;
  9530. break;
  9531. }
  9532. }
  9533. }
  9534. if (!document || !that[document]) {
  9535. return;
  9536. }
  9537. const documentDomain = that[document][domain];
  9538. const documentLocationHostName = !!that[document][location] && that[document][location][hostname];
  9539. const currentDomain = documentDomain || documentLocationHostName;
  9540. if (!currentDomain) {
  9541. return;
  9542. }
  9543. let ok = false;
  9544. for (let i = 0; i < domains.length; i++) {
  9545. const domain = domains[i];
  9546. const position = currentDomain.length - domain.length;
  9547. const lastIndex = currentDomain.indexOf(domain, position);
  9548. const endsWith = lastIndex !== -1 && lastIndex === position;
  9549. if (endsWith) {
  9550. if (currentDomain.length == domain.length || domain.indexOf(".") === 0) {
  9551. ok = true;
  9552. }
  9553. }
  9554. }
  9555. if (!ok) {
  9556. data;
  9557. } else {
  9558. return;
  9559. }
  9560. func();
  9561. });
  9562. {domainLockFunctionName}();
  9563. `;
  9564. }
  9565. exports.DomainLockNodeTemplate = DomainLockNodeTemplate;
  9566. /***/ }),
  9567. /***/ "./src/templates/self-defending-nodes/self-defending-unicode-node/SelfDefendingTemplate.ts":
  9568. /*!*************************************************************************************************!*\
  9569. !*** ./src/templates/self-defending-nodes/self-defending-unicode-node/SelfDefendingTemplate.ts ***!
  9570. \*************************************************************************************************/
  9571. /*! no static exports found */
  9572. /***/ (function(module, exports, __webpack_require__) {
  9573. "use strict";
  9574. Object.defineProperty(exports, "__esModule", { value: true });
  9575. function SelfDefendingTemplate(escapeSequenceEncoder) {
  9576. return `
  9577. const {selfDefendingFunctionName} = {singleNodeCallControllerFunctionName}(this, function () {
  9578. const func1 = function(){return 'dev';},
  9579. func2 = function () {
  9580. return 'window';
  9581. };
  9582. const test1 = function () {
  9583. const regExp = new RegExp('${escapeSequenceEncoder.encode(`\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}`, true)}');
  9584. return !regExp.test(func1.toString());
  9585. };
  9586. const test2 = function () {
  9587. const regExp = new RegExp('${escapeSequenceEncoder.encode(`(\\\\[x|u](\\w){2,4})+`, true)}');
  9588. return regExp.test(func2.toString());
  9589. };
  9590. const recursiveFunc1 = function (string) {
  9591. const i = ~-1 >> 1 + 255 % 0;
  9592. if (string.indexOf('i' === i)) {
  9593. recursiveFunc2(string)
  9594. }
  9595. };
  9596. const recursiveFunc2 = function (string) {
  9597. const i = ~-4 >> 1 + 255 % 0;
  9598. if (string.indexOf((true+"")[3]) !== i) {
  9599. recursiveFunc1(string)
  9600. }
  9601. };
  9602. if (!test1()) {
  9603. if (!test2()) {
  9604. recursiveFunc1('indеxOf');
  9605. } else {
  9606. recursiveFunc1('indexOf');
  9607. }
  9608. } else {
  9609. recursiveFunc1('indеxOf');
  9610. }
  9611. })
  9612. {selfDefendingFunctionName}();
  9613. `;
  9614. }
  9615. exports.SelfDefendingTemplate = SelfDefendingTemplate;
  9616. /***/ }),
  9617. /***/ "./src/templates/string-array-nodes/string-array-calls-wrapper/SelfDefendingTemplate.ts":
  9618. /*!**********************************************************************************************!*\
  9619. !*** ./src/templates/string-array-nodes/string-array-calls-wrapper/SelfDefendingTemplate.ts ***!
  9620. \**********************************************************************************************/
  9621. /*! no static exports found */
  9622. /***/ (function(module, exports, __webpack_require__) {
  9623. "use strict";
  9624. Object.defineProperty(exports, "__esModule", { value: true });
  9625. function SelfDefendingTemplate(randomGenerator, escapeSequenceEncoder) {
  9626. const identifierLength = 6;
  9627. const rc4BytesIdentifier = randomGenerator.getRandomString(identifierLength);
  9628. const statesIdentifier = randomGenerator.getRandomString(identifierLength);
  9629. const newStateIdentifier = randomGenerator.getRandomString(identifierLength);
  9630. const firstStateIdentifier = randomGenerator.getRandomString(identifierLength);
  9631. const secondStateIdentifier = randomGenerator.getRandomString(identifierLength);
  9632. const checkStateIdentifier = randomGenerator.getRandomString(identifierLength);
  9633. const runStateIdentifier = randomGenerator.getRandomString(identifierLength);
  9634. const getStateIdentifier = randomGenerator.getRandomString(identifierLength);
  9635. const stateResultIdentifier = randomGenerator.getRandomString(identifierLength);
  9636. return `
  9637. const StatesClass = function (${rc4BytesIdentifier}) {
  9638. this.${rc4BytesIdentifier} = ${rc4BytesIdentifier};
  9639. this.${statesIdentifier} = [1, 0, 0];
  9640. this.${newStateIdentifier} = function(){return 'newState';};
  9641. this.${firstStateIdentifier} = '${escapeSequenceEncoder.encode(`\\w+ *\\(\\) *{\\w+ *`, true)}';
  9642. this.${secondStateIdentifier} = '${escapeSequenceEncoder.encode(`['|"].+['|"];? *}`, true)}';
  9643. };
  9644. StatesClass.prototype.${checkStateIdentifier} = function () {
  9645. const regExp = new RegExp(this.${firstStateIdentifier} + this.${secondStateIdentifier});
  9646. const expression = regExp.test(this.${newStateIdentifier}.toString())
  9647. ? --this.${statesIdentifier}[1]
  9648. : --this.${statesIdentifier}[0];
  9649. return this.${runStateIdentifier}(expression);
  9650. };
  9651. StatesClass.prototype.${runStateIdentifier} = function (${stateResultIdentifier}) {
  9652. if (!Boolean(~${stateResultIdentifier})) {
  9653. return ${stateResultIdentifier};
  9654. }
  9655. return this.${getStateIdentifier}(this.${rc4BytesIdentifier});
  9656. };
  9657. StatesClass.prototype.${getStateIdentifier} = function (${rc4BytesIdentifier}) {
  9658. for (let i = 0, len = this.${statesIdentifier}.length; i < len; i++) {
  9659. this.${statesIdentifier}.push(Math.round(Math.random()));
  9660. len = this.${statesIdentifier}.length;
  9661. }
  9662. return ${rc4BytesIdentifier}(this.${statesIdentifier}[0]);
  9663. };
  9664. new StatesClass({stringArrayCallsWrapperName}).${checkStateIdentifier}();
  9665. `;
  9666. }
  9667. exports.SelfDefendingTemplate = SelfDefendingTemplate;
  9668. /***/ }),
  9669. /***/ "./src/templates/string-array-nodes/string-array-calls-wrapper/StringArrayBase64DecodeNodeTemplate.ts":
  9670. /*!************************************************************************************************************!*\
  9671. !*** ./src/templates/string-array-nodes/string-array-calls-wrapper/StringArrayBase64DecodeNodeTemplate.ts ***!
  9672. \************************************************************************************************************/
  9673. /*! no static exports found */
  9674. /***/ (function(module, exports, __webpack_require__) {
  9675. "use strict";
  9676. Object.defineProperty(exports, "__esModule", { value: true });
  9677. function StringArrayBase64DecodeNodeTemplate(randomGenerator) {
  9678. const identifierLength = 6;
  9679. const initializedIdentifier = randomGenerator.getRandomString(identifierLength);
  9680. const base64DecodeFunctionIdentifier = randomGenerator.getRandomString(identifierLength);
  9681. const dataIdentifier = randomGenerator.getRandomString(identifierLength);
  9682. return `
  9683. if ({stringArrayCallsWrapperName}.${initializedIdentifier} === undefined) {
  9684. {atobPolyfill}
  9685. {stringArrayCallsWrapperName}.${base64DecodeFunctionIdentifier} = function (str) {
  9686. const string = atob(str);
  9687. let newStringChars = [];
  9688. for (let i = 0, length = string.length; i < length; i++) {
  9689. newStringChars += '%' + ('00' + string.charCodeAt(i).toString(16)).slice(-2);
  9690. }
  9691. return decodeURIComponent(newStringChars);
  9692. };
  9693. {stringArrayCallsWrapperName}.${dataIdentifier} = {};
  9694. {stringArrayCallsWrapperName}.${initializedIdentifier} = true;
  9695. }
  9696. const cachedValue = {stringArrayCallsWrapperName}.${dataIdentifier}[index];
  9697. if (cachedValue === undefined) {
  9698. {selfDefendingCode}
  9699. value = {stringArrayCallsWrapperName}.${base64DecodeFunctionIdentifier}(value);
  9700. {stringArrayCallsWrapperName}.${dataIdentifier}[index] = value;
  9701. } else {
  9702. value = cachedValue;
  9703. }
  9704. `;
  9705. }
  9706. exports.StringArrayBase64DecodeNodeTemplate = StringArrayBase64DecodeNodeTemplate;
  9707. /***/ }),
  9708. /***/ "./src/templates/string-array-nodes/string-array-calls-wrapper/StringArrayCallsWrapperTemplate.ts":
  9709. /*!********************************************************************************************************!*\
  9710. !*** ./src/templates/string-array-nodes/string-array-calls-wrapper/StringArrayCallsWrapperTemplate.ts ***!
  9711. \********************************************************************************************************/
  9712. /*! no static exports found */
  9713. /***/ (function(module, exports, __webpack_require__) {
  9714. "use strict";
  9715. Object.defineProperty(exports, "__esModule", { value: true });
  9716. function StringArrayCallsWrapperTemplate() {
  9717. return `
  9718. const {stringArrayCallsWrapperName} = function (index, key) {
  9719. index = index - 0;
  9720. let value = {stringArrayName}[index];
  9721. {decodeNodeTemplate}
  9722. return value;
  9723. };
  9724. `;
  9725. }
  9726. exports.StringArrayCallsWrapperTemplate = StringArrayCallsWrapperTemplate;
  9727. /***/ }),
  9728. /***/ "./src/templates/string-array-nodes/string-array-calls-wrapper/StringArrayRC4DecodeNodeTemplate.ts":
  9729. /*!*********************************************************************************************************!*\
  9730. !*** ./src/templates/string-array-nodes/string-array-calls-wrapper/StringArrayRC4DecodeNodeTemplate.ts ***!
  9731. \*********************************************************************************************************/
  9732. /*! no static exports found */
  9733. /***/ (function(module, exports, __webpack_require__) {
  9734. "use strict";
  9735. Object.defineProperty(exports, "__esModule", { value: true });
  9736. function StringArrayRc4DecodeNodeTemplate(randomGenerator) {
  9737. const identifierLength = 6;
  9738. const initializedIdentifier = randomGenerator.getRandomString(identifierLength);
  9739. const rc4Identifier = randomGenerator.getRandomString(identifierLength);
  9740. const dataIdentifier = randomGenerator.getRandomString(identifierLength);
  9741. const onceIdentifier = randomGenerator.getRandomString(identifierLength);
  9742. return `
  9743. if ({stringArrayCallsWrapperName}.${initializedIdentifier} === undefined) {
  9744. {atobPolyfill}
  9745. {rc4Polyfill}
  9746. {stringArrayCallsWrapperName}.${rc4Identifier} = rc4;
  9747. {stringArrayCallsWrapperName}.${dataIdentifier} = {};
  9748. {stringArrayCallsWrapperName}.${initializedIdentifier} = true;
  9749. }
  9750. const cachedValue = {stringArrayCallsWrapperName}.${dataIdentifier}[index];
  9751. if (cachedValue === undefined) {
  9752. if ({stringArrayCallsWrapperName}.${onceIdentifier} === undefined) {
  9753. {selfDefendingCode}
  9754. {stringArrayCallsWrapperName}.${onceIdentifier} = true;
  9755. }
  9756. value = {stringArrayCallsWrapperName}.${rc4Identifier}(value, key);
  9757. {stringArrayCallsWrapperName}.${dataIdentifier}[index] = value;
  9758. } else {
  9759. value = cachedValue;
  9760. }
  9761. `;
  9762. }
  9763. exports.StringArrayRc4DecodeNodeTemplate = StringArrayRc4DecodeNodeTemplate;
  9764. /***/ }),
  9765. /***/ "./src/templates/string-array-nodes/string-array-node/StringArrayTemplate.ts":
  9766. /*!***********************************************************************************!*\
  9767. !*** ./src/templates/string-array-nodes/string-array-node/StringArrayTemplate.ts ***!
  9768. \***********************************************************************************/
  9769. /*! no static exports found */
  9770. /***/ (function(module, exports, __webpack_require__) {
  9771. "use strict";
  9772. Object.defineProperty(exports, "__esModule", { value: true });
  9773. function StringArrayTemplate() {
  9774. return `
  9775. const {stringArrayName} = [{stringArray}];
  9776. `;
  9777. }
  9778. exports.StringArrayTemplate = StringArrayTemplate;
  9779. /***/ }),
  9780. /***/ "./src/templates/string-array-nodes/string-array-rotate-function-node/SelfDefendingTemplate.ts":
  9781. /*!*****************************************************************************************************!*\
  9782. !*** ./src/templates/string-array-nodes/string-array-rotate-function-node/SelfDefendingTemplate.ts ***!
  9783. \*****************************************************************************************************/
  9784. /*! no static exports found */
  9785. /***/ (function(module, exports, __webpack_require__) {
  9786. "use strict";
  9787. Object.defineProperty(exports, "__esModule", { value: true });
  9788. function SelfDefendingTemplate(escapeSequenceEncoder) {
  9789. return `
  9790. const selfDefendingFunc = function () {
  9791. const object = {
  9792. data: {
  9793. key: 'cookie',
  9794. value: 'timeout'
  9795. },
  9796. setCookie: function (options, name, value, document) {
  9797. document = document || {};
  9798. let updatedCookie = name + "=" + value;
  9799. let i = 0;
  9800. for (let i = 0, len = options.length; i < len; i++) {
  9801. const propName = options[i];
  9802. updatedCookie += "; " + propName;
  9803. const propValue = options[propName];
  9804. options.push(propValue);
  9805. len = options.length;
  9806. if (propValue !== true) {
  9807. updatedCookie += "=" + propValue;
  9808. }
  9809. }
  9810. document['cookie'] = updatedCookie;
  9811. },
  9812. removeCookie: function(){return 'dev';},
  9813. getCookie: function (document, name) {
  9814. document = document || function (value) { return value };
  9815. const matches = document(new RegExp(
  9816. "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  9817. ));
  9818. const func = function (param1, param2) {
  9819. param1(++param2);
  9820. };
  9821. func({whileFunctionName}, {timesName});
  9822. return matches ? decodeURIComponent(matches[1]) : undefined;
  9823. }
  9824. };
  9825. const test1 = function () {
  9826. const regExp = new RegExp('${escapeSequenceEncoder.encode(`\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}`, true)}');
  9827. return regExp.test(object.removeCookie.toString());
  9828. };
  9829. object['updateCookie'] = test1;
  9830. let cookie = '';
  9831. const result = object['updateCookie']();
  9832. if (!result) {
  9833. object['setCookie'](['*'], 'counter', 1);
  9834. } else if (result) {
  9835. cookie = object['getCookie'](null, 'counter');
  9836. } else {
  9837. object['removeCookie']();
  9838. }
  9839. };
  9840. selfDefendingFunc();
  9841. `;
  9842. }
  9843. exports.SelfDefendingTemplate = SelfDefendingTemplate;
  9844. /***/ }),
  9845. /***/ "./src/templates/string-array-nodes/string-array-rotate-function-node/StringArrayRotateFunctionTemplate.ts":
  9846. /*!*****************************************************************************************************************!*\
  9847. !*** ./src/templates/string-array-nodes/string-array-rotate-function-node/StringArrayRotateFunctionTemplate.ts ***!
  9848. \*****************************************************************************************************************/
  9849. /*! no static exports found */
  9850. /***/ (function(module, exports, __webpack_require__) {
  9851. "use strict";
  9852. Object.defineProperty(exports, "__esModule", { value: true });
  9853. function StringArrayRotateFunctionTemplate() {
  9854. return `
  9855. (function (array, {timesName}) {
  9856. const {whileFunctionName} = function (times) {
  9857. while (--times) {
  9858. array['push'](array['shift']());
  9859. }
  9860. };
  9861. {code}
  9862. })({stringArrayName}, 0x{stringArrayRotateValue});
  9863. `;
  9864. }
  9865. exports.StringArrayRotateFunctionTemplate = StringArrayRotateFunctionTemplate;
  9866. /***/ }),
  9867. /***/ "./src/utils/ArrayUtils.ts":
  9868. /*!*********************************!*\
  9869. !*** ./src/utils/ArrayUtils.ts ***!
  9870. \*********************************/
  9871. /*! no static exports found */
  9872. /***/ (function(module, exports, __webpack_require__) {
  9873. "use strict";
  9874. Object.defineProperty(exports, "__esModule", { value: true });
  9875. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  9876. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  9877. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  9878. let ArrayUtils = class ArrayUtils {
  9879. constructor(randomGenerator) {
  9880. this.randomGenerator = randomGenerator;
  9881. }
  9882. createWithRange(length) {
  9883. const range = [];
  9884. for (let i = 0; i < length; i++) {
  9885. range.push(i);
  9886. }
  9887. return range;
  9888. }
  9889. findMostOccurringElement(array) {
  9890. var _a;
  9891. const arrayLength = array.length;
  9892. if (!arrayLength) {
  9893. return null;
  9894. }
  9895. const elementsMap = {};
  9896. let mostOccurringElement = array[0];
  9897. let mostOccurringElementCount = 1;
  9898. for (const element of array) {
  9899. const currentElementCount = (_a = elementsMap[element], (_a !== null && _a !== void 0 ? _a : 0));
  9900. const updatedElementCount = currentElementCount + 1;
  9901. if (updatedElementCount > mostOccurringElementCount) {
  9902. mostOccurringElement = element;
  9903. mostOccurringElementCount = updatedElementCount;
  9904. }
  9905. elementsMap[element] = updatedElementCount;
  9906. }
  9907. return mostOccurringElement;
  9908. }
  9909. rotate(array, times) {
  9910. if (!array.length) {
  9911. throw new ReferenceError(`Cannot rotate empty array.`);
  9912. }
  9913. if (times <= 0) {
  9914. return array;
  9915. }
  9916. const newArray = array;
  9917. let temp;
  9918. while (times--) {
  9919. temp = newArray.pop();
  9920. if (temp) {
  9921. newArray.unshift(temp);
  9922. }
  9923. }
  9924. return newArray;
  9925. }
  9926. shuffle(array) {
  9927. const shuffledArray = [...array];
  9928. for (let i = shuffledArray.length; i; i--) {
  9929. const j = Math.floor(this.randomGenerator.getMathRandom() * i);
  9930. [shuffledArray[i - 1], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i - 1]];
  9931. }
  9932. return shuffledArray;
  9933. }
  9934. };
  9935. ArrayUtils = tslib_1.__decorate([
  9936. inversify_1.injectable(),
  9937. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  9938. tslib_1.__metadata("design:paramtypes", [Object])
  9939. ], ArrayUtils);
  9940. exports.ArrayUtils = ArrayUtils;
  9941. /***/ }),
  9942. /***/ "./src/utils/CryptUtils.ts":
  9943. /*!*********************************!*\
  9944. !*** ./src/utils/CryptUtils.ts ***!
  9945. \*********************************/
  9946. /*! no static exports found */
  9947. /***/ (function(module, exports, __webpack_require__) {
  9948. "use strict";
  9949. Object.defineProperty(exports, "__esModule", { value: true });
  9950. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  9951. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  9952. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  9953. const RandomGenerator_1 = __webpack_require__(/*! ./RandomGenerator */ "./src/utils/RandomGenerator.ts");
  9954. const Utils_1 = __webpack_require__(/*! ./Utils */ "./src/utils/Utils.ts");
  9955. let CryptUtils = class CryptUtils {
  9956. constructor(randomGenerator) {
  9957. this.randomGenerator = randomGenerator;
  9958. }
  9959. btoa(string) {
  9960. const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  9961. let output = '';
  9962. string = encodeURIComponent(string).replace(/%([0-9A-F]{2})/g, (match, p1) => {
  9963. return String.fromCharCode(parseInt(`${Utils_1.Utils.hexadecimalPrefix}${p1}`));
  9964. });
  9965. for (let block, charCode, idx = 0, map = chars; string.charAt(idx | 0) || (map = '=', idx % 1); output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {
  9966. charCode = string.charCodeAt(idx += 3 / 4);
  9967. if (charCode > 0xFF) {
  9968. throw new Error("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");
  9969. }
  9970. block = block << 8 | charCode;
  9971. }
  9972. return output;
  9973. }
  9974. hideString(str, length) {
  9975. const escapeRegExp = (s) => s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
  9976. const randomMerge = (s1, s2) => {
  9977. let i1 = -1;
  9978. let i2 = -1;
  9979. let result = '';
  9980. while (i1 < s1.length || i2 < s2.length) {
  9981. if (this.randomGenerator.getMathRandom() < 0.5 && i2 < s2.length) {
  9982. result += s2.charAt(++i2);
  9983. }
  9984. else {
  9985. result += s1.charAt(++i1);
  9986. }
  9987. }
  9988. return result;
  9989. };
  9990. const randomString = this.randomGenerator.getRandomGenerator().string({
  9991. length: length,
  9992. pool: RandomGenerator_1.RandomGenerator.randomGeneratorPool
  9993. });
  9994. let randomStringDiff = randomString.replace(new RegExp(`[${escapeRegExp(str)}]`, 'g'), '');
  9995. const randomStringDiffArray = randomStringDiff.split('');
  9996. this.randomGenerator.getRandomGenerator().shuffle(randomStringDiffArray);
  9997. randomStringDiff = randomStringDiffArray.join('');
  9998. return [randomMerge(str, randomStringDiff), randomStringDiff];
  9999. }
  10000. rc4(string, key) {
  10001. let s = [], j = 0, x, result = '';
  10002. for (var i = 0; i < 256; i++) {
  10003. s[i] = i;
  10004. }
  10005. for (i = 0; i < 256; i++) {
  10006. j = (j + s[i] + key.charCodeAt(i % key.length)) % 256;
  10007. x = s[i];
  10008. s[i] = s[j];
  10009. s[j] = x;
  10010. }
  10011. i = 0;
  10012. j = 0;
  10013. for (let y = 0; y < string.length; y++) {
  10014. i = (i + 1) % 256;
  10015. j = (j + s[i]) % 256;
  10016. x = s[i];
  10017. s[i] = s[j];
  10018. s[j] = x;
  10019. result += String.fromCharCode(string.charCodeAt(y) ^ s[(s[i] + s[j]) % 256]);
  10020. }
  10021. return result;
  10022. }
  10023. };
  10024. CryptUtils = tslib_1.__decorate([
  10025. inversify_1.injectable(),
  10026. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),
  10027. tslib_1.__metadata("design:paramtypes", [Object])
  10028. ], CryptUtils);
  10029. exports.CryptUtils = CryptUtils;
  10030. /***/ }),
  10031. /***/ "./src/utils/EscapeSequenceEncoder.ts":
  10032. /*!********************************************!*\
  10033. !*** ./src/utils/EscapeSequenceEncoder.ts ***!
  10034. \********************************************/
  10035. /*! no static exports found */
  10036. /***/ (function(module, exports, __webpack_require__) {
  10037. "use strict";
  10038. Object.defineProperty(exports, "__esModule", { value: true });
  10039. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  10040. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  10041. let EscapeSequenceEncoder = class EscapeSequenceEncoder {
  10042. constructor() {
  10043. this.stringsCache = new Map();
  10044. }
  10045. encode(string, encodeAllSymbols) {
  10046. const cacheKey = `${string}-${String(encodeAllSymbols)}`;
  10047. if (this.stringsCache.has(cacheKey)) {
  10048. return this.stringsCache.get(cacheKey);
  10049. }
  10050. const radix = 16;
  10051. const replaceRegExp = new RegExp('[\\s\\S]', 'g');
  10052. const escapeSequenceRegExp = new RegExp('[\'\"\\\\\\s]');
  10053. const regExp = new RegExp('[\\x00-\\x7F]');
  10054. let prefix;
  10055. let template;
  10056. const result = string.replace(replaceRegExp, (character) => {
  10057. if (!encodeAllSymbols && !escapeSequenceRegExp.exec(character)) {
  10058. return character;
  10059. }
  10060. if (regExp.exec(character)) {
  10061. prefix = '\\x';
  10062. template = '00';
  10063. }
  10064. else {
  10065. prefix = '\\u';
  10066. template = '0000';
  10067. }
  10068. return `${prefix}${(template + character.charCodeAt(0).toString(radix)).slice(-template.length)}`;
  10069. });
  10070. this.stringsCache.set(cacheKey, result);
  10071. return result;
  10072. }
  10073. };
  10074. EscapeSequenceEncoder = tslib_1.__decorate([
  10075. inversify_1.injectable()
  10076. ], EscapeSequenceEncoder);
  10077. exports.EscapeSequenceEncoder = EscapeSequenceEncoder;
  10078. /***/ }),
  10079. /***/ "./src/utils/LevelledTopologicalSorter.ts":
  10080. /*!************************************************!*\
  10081. !*** ./src/utils/LevelledTopologicalSorter.ts ***!
  10082. \************************************************/
  10083. /*! no static exports found */
  10084. /***/ (function(module, exports, __webpack_require__) {
  10085. "use strict";
  10086. Object.defineProperty(exports, "__esModule", { value: true });
  10087. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  10088. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  10089. let LevelledTopologicalSorter = class LevelledTopologicalSorter {
  10090. constructor() {
  10091. this.graph = new Map();
  10092. }
  10093. add(precedent, consequent = null) {
  10094. if (consequent !== null) {
  10095. return this.link(precedent, consequent);
  10096. }
  10097. return this.register(precedent);
  10098. }
  10099. sort() {
  10100. const consequents = Array.from(this.graph.keys());
  10101. const results = [];
  10102. const marks = {};
  10103. for (const consequent of consequents) {
  10104. if (marks[consequent] !== undefined) {
  10105. continue;
  10106. }
  10107. this.visit(results, marks, consequent);
  10108. }
  10109. return results;
  10110. }
  10111. sortByGroups() {
  10112. this.sort();
  10113. const resultItemsGroups = [];
  10114. while (this.hasNodes()) {
  10115. const rootNodes = this.findRootNodes();
  10116. resultItemsGroups.push(rootNodes);
  10117. for (const rootNode of rootNodes) {
  10118. this.delete(rootNode);
  10119. }
  10120. }
  10121. return resultItemsGroups;
  10122. }
  10123. delete(consequent) {
  10124. const precedents = this.getPrecedents(consequent);
  10125. if (precedents.length) {
  10126. throw new Error(`Unable to remove non-root node: ${consequent}`);
  10127. }
  10128. this.graph.delete(consequent);
  10129. const precedentsGroups = Array.from(this.graph.values());
  10130. for (const precedentsGroup of precedentsGroups) {
  10131. const precedentsCount = precedentsGroup.length - 1;
  10132. for (let index = precedentsCount; index >= 0; index = index - 1) {
  10133. if (precedentsGroup[index] !== consequent) {
  10134. continue;
  10135. }
  10136. precedentsGroup.splice(index, 1);
  10137. }
  10138. }
  10139. }
  10140. findRootNodes() {
  10141. const consequents = Array.from(this.graph.keys());
  10142. const rootNodes = [];
  10143. for (const consequent of consequents) {
  10144. if (!this.hasPrecedents(consequent)) {
  10145. rootNodes.push(consequent);
  10146. }
  10147. }
  10148. return rootNodes;
  10149. }
  10150. getPrecedents(consequent) {
  10151. const precedents = this.graph.get(consequent);
  10152. if (!precedents) {
  10153. throw new Error(`Unknown node: ${consequent}`);
  10154. }
  10155. return precedents;
  10156. }
  10157. hasNodes() {
  10158. return this.graph.size > 0;
  10159. }
  10160. hasPrecedents(consequent) {
  10161. return this.getPrecedents(consequent).length > 0;
  10162. }
  10163. link(precedent, consequent) {
  10164. this.register(precedent);
  10165. this.register(consequent);
  10166. const target = this.graph.get(consequent);
  10167. if (target && !target.includes(precedent)) {
  10168. target.push(precedent);
  10169. }
  10170. return this;
  10171. }
  10172. register(name) {
  10173. if (!this.graph.has(name)) {
  10174. this.graph.set(name, []);
  10175. }
  10176. return this;
  10177. }
  10178. visit(results, marks, name) {
  10179. const mark = marks[name];
  10180. if (mark === 'visiting') {
  10181. throw new Error(`Detected cycle involving node: ${name}`);
  10182. }
  10183. if (mark) {
  10184. return;
  10185. }
  10186. marks[name] = 'visiting';
  10187. const precedents = this.getPrecedents(name);
  10188. for (const precedent of precedents) {
  10189. this.visit(results, marks, precedent);
  10190. }
  10191. marks[name] = 'ok';
  10192. results.push(name);
  10193. return;
  10194. }
  10195. };
  10196. LevelledTopologicalSorter = tslib_1.__decorate([
  10197. inversify_1.injectable()
  10198. ], LevelledTopologicalSorter);
  10199. exports.LevelledTopologicalSorter = LevelledTopologicalSorter;
  10200. /***/ }),
  10201. /***/ "./src/utils/NodeTransformerNamesGroupsBuilder.ts":
  10202. /*!********************************************************!*\
  10203. !*** ./src/utils/NodeTransformerNamesGroupsBuilder.ts ***!
  10204. \********************************************************/
  10205. /*! no static exports found */
  10206. /***/ (function(module, exports, __webpack_require__) {
  10207. "use strict";
  10208. Object.defineProperty(exports, "__esModule", { value: true });
  10209. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  10210. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  10211. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  10212. let NodeTransformerNamesGroupsBuilder = class NodeTransformerNamesGroupsBuilder {
  10213. constructor(levelledTopologicalSorter) {
  10214. this.levelledTopologicalSorter = levelledTopologicalSorter;
  10215. }
  10216. build(normalizedNodeTransformers) {
  10217. const nodeTransformerNames = Object.keys(normalizedNodeTransformers);
  10218. const relationEdges = this.buildNodeTransformersRelationEdges(nodeTransformerNames, normalizedNodeTransformers);
  10219. for (const [precedent, consequent] of relationEdges) {
  10220. this.levelledTopologicalSorter.add(precedent, consequent);
  10221. }
  10222. return this.levelledTopologicalSorter.sortByGroups();
  10223. }
  10224. buildNodeTransformersRelationEdges(nodeTransformerNames, normalizedNodeTransformers) {
  10225. const relationEdges = [];
  10226. for (const nodeTransformerName of nodeTransformerNames) {
  10227. const nodeTransformer = normalizedNodeTransformers[nodeTransformerName];
  10228. const runAfterRelations = nodeTransformer.runAfter;
  10229. if (!runAfterRelations || !runAfterRelations.length) {
  10230. relationEdges.push([nodeTransformerName, null]);
  10231. continue;
  10232. }
  10233. for (const runAfterRelation of runAfterRelations) {
  10234. const isUnknownRelation = !normalizedNodeTransformers[runAfterRelation];
  10235. if (isUnknownRelation) {
  10236. relationEdges.push([nodeTransformerName, null]);
  10237. continue;
  10238. }
  10239. relationEdges.push([runAfterRelation, nodeTransformerName]);
  10240. }
  10241. }
  10242. return relationEdges;
  10243. }
  10244. };
  10245. NodeTransformerNamesGroupsBuilder = tslib_1.__decorate([
  10246. inversify_1.injectable(),
  10247. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ILevelledTopologicalSorter)),
  10248. tslib_1.__metadata("design:paramtypes", [Object])
  10249. ], NodeTransformerNamesGroupsBuilder);
  10250. exports.NodeTransformerNamesGroupsBuilder = NodeTransformerNamesGroupsBuilder;
  10251. /***/ }),
  10252. /***/ "./src/utils/NumberUtils.ts":
  10253. /*!**********************************!*\
  10254. !*** ./src/utils/NumberUtils.ts ***!
  10255. \**********************************/
  10256. /*! no static exports found */
  10257. /***/ (function(module, exports, __webpack_require__) {
  10258. "use strict";
  10259. Object.defineProperty(exports, "__esModule", { value: true });
  10260. class NumberUtils {
  10261. static toHex(dec) {
  10262. const radix = 16;
  10263. return dec.toString(radix);
  10264. }
  10265. static isCeil(number) {
  10266. return number % 1 === 0;
  10267. }
  10268. }
  10269. exports.NumberUtils = NumberUtils;
  10270. /***/ }),
  10271. /***/ "./src/utils/RandomGenerator.ts":
  10272. /*!**************************************!*\
  10273. !*** ./src/utils/RandomGenerator.ts ***!
  10274. \**************************************/
  10275. /*! no static exports found */
  10276. /***/ (function(module, exports, __webpack_require__) {
  10277. "use strict";
  10278. var RandomGenerator_1;
  10279. Object.defineProperty(exports, "__esModule", { value: true });
  10280. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  10281. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  10282. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  10283. const md5_1 = tslib_1.__importDefault(__webpack_require__(/*! md5 */ "md5"));
  10284. const chance_1 = __webpack_require__(/*! chance */ "chance");
  10285. const Initializable_1 = __webpack_require__(/*! ../decorators/Initializable */ "./src/decorators/Initializable.ts");
  10286. let RandomGenerator = RandomGenerator_1 = class RandomGenerator {
  10287. constructor(sourceCode, options) {
  10288. this.sourceCode = sourceCode;
  10289. this.options = options;
  10290. }
  10291. initialize() {
  10292. this.randomGenerator = new chance_1.Chance(this.getRawSeed());
  10293. }
  10294. getMathRandom() {
  10295. return this.getRandomInteger(0, 99999) / 100000;
  10296. }
  10297. getRandomGenerator() {
  10298. return this.randomGenerator;
  10299. }
  10300. getRandomInteger(min, max) {
  10301. return this.getRandomGenerator().integer({
  10302. min: min,
  10303. max: max
  10304. });
  10305. }
  10306. getRandomString(length, pool = RandomGenerator_1.randomGeneratorPool) {
  10307. return this.getRandomGenerator().string({ length, pool });
  10308. }
  10309. getInputSeed() {
  10310. return this.options.seed.toString();
  10311. }
  10312. getRawSeed() {
  10313. const inputSeed = this.getInputSeed();
  10314. const inputSeedParts = `${inputSeed}`.split('|');
  10315. if (inputSeedParts.length > 1) {
  10316. return inputSeed;
  10317. }
  10318. const sourceCodeMD5Hash = md5_1.default(this.sourceCode.getSourceCode());
  10319. return `${inputSeed}|${sourceCodeMD5Hash}`;
  10320. }
  10321. };
  10322. RandomGenerator.randomGeneratorPool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  10323. tslib_1.__decorate([
  10324. Initializable_1.initializable(),
  10325. tslib_1.__metadata("design:type", Object)
  10326. ], RandomGenerator.prototype, "randomGenerator", void 0);
  10327. tslib_1.__decorate([
  10328. inversify_1.postConstruct(),
  10329. tslib_1.__metadata("design:type", Function),
  10330. tslib_1.__metadata("design:paramtypes", []),
  10331. tslib_1.__metadata("design:returntype", void 0)
  10332. ], RandomGenerator.prototype, "initialize", null);
  10333. RandomGenerator = RandomGenerator_1 = tslib_1.__decorate([
  10334. inversify_1.injectable(),
  10335. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ISourceCode)),
  10336. tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),
  10337. tslib_1.__metadata("design:paramtypes", [Object, Object])
  10338. ], RandomGenerator);
  10339. exports.RandomGenerator = RandomGenerator;
  10340. /***/ }),
  10341. /***/ "./src/utils/TemplateFormatter.ts":
  10342. /*!****************************************!*\
  10343. !*** ./src/utils/TemplateFormatter.ts ***!
  10344. \****************************************/
  10345. /*! no static exports found */
  10346. /***/ (function(module, exports, __webpack_require__) {
  10347. "use strict";
  10348. Object.defineProperty(exports, "__esModule", { value: true });
  10349. const tslib_1 = __webpack_require__(/*! tslib */ "tslib");
  10350. const inversify_1 = __webpack_require__(/*! inversify */ "inversify");
  10351. const ServiceIdentifiers_1 = __webpack_require__(/*! ../container/ServiceIdentifiers */ "./src/container/ServiceIdentifiers.ts");
  10352. const string_template_1 = tslib_1.__importDefault(__webpack_require__(/*! string-template */ "string-template"));
  10353. let TemplateFormatter = class TemplateFormatter {
  10354. constructor(prevailingKindOfVariablesAnalyzer) {
  10355. this.prevailingKindOfVariablesAnalyzer = prevailingKindOfVariablesAnalyzer;
  10356. }
  10357. format(template, mapping) {
  10358. const formattedTemplate = string_template_1.default(template, mapping);
  10359. const prevailingKindOfVariables = this.prevailingKindOfVariablesAnalyzer.getPrevailingKind();
  10360. return this.replaceKindOfVariablesToPrevailingKind(formattedTemplate, prevailingKindOfVariables);
  10361. }
  10362. replaceKindOfVariablesToPrevailingKind(template, prevailingKindOfVariables) {
  10363. return prevailingKindOfVariables === 'var'
  10364. ? template.replace(/(?<!\w)(?:let|const)(?!\w)/g, prevailingKindOfVariables)
  10365. : template;
  10366. }
  10367. };
  10368. TemplateFormatter = tslib_1.__decorate([
  10369. inversify_1.injectable(),
  10370. tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer)),
  10371. tslib_1.__metadata("design:paramtypes", [Object])
  10372. ], TemplateFormatter);
  10373. exports.TemplateFormatter = TemplateFormatter;
  10374. /***/ }),
  10375. /***/ "./src/utils/Utils.ts":
  10376. /*!****************************!*\
  10377. !*** ./src/utils/Utils.ts ***!
  10378. \****************************/
  10379. /*! no static exports found */
  10380. /***/ (function(module, exports, __webpack_require__) {
  10381. "use strict";
  10382. Object.defineProperty(exports, "__esModule", { value: true });
  10383. class Utils {
  10384. static extractDomainFrom(url) {
  10385. let domain;
  10386. if (url.indexOf('://') > -1 || url.indexOf('//') === 0) {
  10387. domain = url.split('/')[2];
  10388. }
  10389. else {
  10390. domain = url.split('/')[0];
  10391. }
  10392. domain = domain.split(':')[0];
  10393. return domain;
  10394. }
  10395. }
  10396. exports.Utils = Utils;
  10397. Utils.hexadecimalPrefix = '0x';
  10398. /***/ }),
  10399. /***/ "@gradecam/tsenum":
  10400. /*!***********************************!*\
  10401. !*** external "@gradecam/tsenum" ***!
  10402. \***********************************/
  10403. /*! no static exports found */
  10404. /***/ (function(module, exports) {
  10405. module.exports = require("@gradecam/tsenum");
  10406. /***/ }),
  10407. /***/ "chalk":
  10408. /*!************************!*\
  10409. !*** external "chalk" ***!
  10410. \************************/
  10411. /*! no static exports found */
  10412. /***/ (function(module, exports) {
  10413. module.exports = require("chalk");
  10414. /***/ }),
  10415. /***/ "chance":
  10416. /*!*************************!*\
  10417. !*** external "chance" ***!
  10418. \*************************/
  10419. /*! no static exports found */
  10420. /***/ (function(module, exports) {
  10421. module.exports = require("chance");
  10422. /***/ }),
  10423. /***/ "class-validator":
  10424. /*!**********************************!*\
  10425. !*** external "class-validator" ***!
  10426. \**********************************/
  10427. /*! no static exports found */
  10428. /***/ (function(module, exports) {
  10429. module.exports = require("class-validator");
  10430. /***/ }),
  10431. /***/ "escodegen":
  10432. /*!****************************!*\
  10433. !*** external "escodegen" ***!
  10434. \****************************/
  10435. /*! no static exports found */
  10436. /***/ (function(module, exports) {
  10437. module.exports = require("escodegen");
  10438. /***/ }),
  10439. /***/ "espree":
  10440. /*!*************************!*\
  10441. !*** external "espree" ***!
  10442. \*************************/
  10443. /*! no static exports found */
  10444. /***/ (function(module, exports) {
  10445. module.exports = require("espree");
  10446. /***/ }),
  10447. /***/ "estraverse":
  10448. /*!*****************************!*\
  10449. !*** external "estraverse" ***!
  10450. \*****************************/
  10451. /*! no static exports found */
  10452. /***/ (function(module, exports) {
  10453. module.exports = require("estraverse");
  10454. /***/ }),
  10455. /***/ "eventemitter3":
  10456. /*!********************************!*\
  10457. !*** external "eventemitter3" ***!
  10458. \********************************/
  10459. /*! no static exports found */
  10460. /***/ (function(module, exports) {
  10461. module.exports = require("eventemitter3");
  10462. /***/ }),
  10463. /***/ "inversify":
  10464. /*!****************************!*\
  10465. !*** external "inversify" ***!
  10466. \****************************/
  10467. /*! no static exports found */
  10468. /***/ (function(module, exports) {
  10469. module.exports = require("inversify");
  10470. /***/ }),
  10471. /***/ "js-string-escape":
  10472. /*!***********************************!*\
  10473. !*** external "js-string-escape" ***!
  10474. \***********************************/
  10475. /*! no static exports found */
  10476. /***/ (function(module, exports) {
  10477. module.exports = require("js-string-escape");
  10478. /***/ }),
  10479. /***/ "md5":
  10480. /*!**********************!*\
  10481. !*** external "md5" ***!
  10482. \**********************/
  10483. /*! no static exports found */
  10484. /***/ (function(module, exports) {
  10485. module.exports = require("md5");
  10486. /***/ }),
  10487. /***/ "reflect-metadata":
  10488. /*!***********************************!*\
  10489. !*** external "reflect-metadata" ***!
  10490. \***********************************/
  10491. /*! no static exports found */
  10492. /***/ (function(module, exports) {
  10493. module.exports = require("reflect-metadata");
  10494. /***/ }),
  10495. /***/ "string-template":
  10496. /*!**********************************!*\
  10497. !*** external "string-template" ***!
  10498. \**********************************/
  10499. /*! no static exports found */
  10500. /***/ (function(module, exports) {
  10501. module.exports = require("string-template");
  10502. /***/ }),
  10503. /***/ "tslib":
  10504. /*!************************!*\
  10505. !*** external "tslib" ***!
  10506. \************************/
  10507. /*! no static exports found */
  10508. /***/ (function(module, exports) {
  10509. module.exports = require("tslib");
  10510. /***/ })
  10511. /******/ });
  10512. //# sourceMappingURL=index.js.map