1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649256502565125652256532565425655256562565725658256592566025661256622566325664256652566625667256682566925670256712567225673256742567525676256772567825679256802568125682256832568425685256862568725688256892569025691256922569325694256952569625697256982569925700257012570225703257042570525706257072570825709257102571125712257132571425715257162571725718257192572025721257222572325724257252572625727257282572925730257312573225733257342573525736257372573825739257402574125742257432574425745257462574725748257492575025751257522575325754257552575625757257582575925760257612576225763257642576525766257672576825769257702577125772257732577425775257762577725778257792578025781257822578325784257852578625787257882578925790257912579225793257942579525796257972579825799258002580125802258032580425805258062580725808258092581025811258122581325814258152581625817258182581925820258212582225823258242582525826258272582825829258302583125832258332583425835258362583725838258392584025841258422584325844258452584625847258482584925850258512585225853258542585525856258572585825859258602586125862258632586425865258662586725868258692587025871258722587325874258752587625877258782587925880258812588225883258842588525886258872588825889258902589125892258932589425895258962589725898258992590025901259022590325904259052590625907259082590925910259112591225913259142591525916259172591825919259202592125922259232592425925259262592725928259292593025931259322593325934259352593625937259382593925940259412594225943259442594525946259472594825949259502595125952259532595425955259562595725958259592596025961259622596325964259652596625967259682596925970259712597225973259742597525976259772597825979259802598125982259832598425985259862598725988259892599025991259922599325994259952599625997259982599926000260012600226003260042600526006260072600826009260102601126012260132601426015260162601726018260192602026021260222602326024260252602626027260282602926030260312603226033260342603526036260372603826039260402604126042260432604426045260462604726048260492605026051260522605326054260552605626057260582605926060260612606226063260642606526066260672606826069260702607126072260732607426075260762607726078260792608026081260822608326084260852608626087260882608926090260912609226093260942609526096260972609826099261002610126102261032610426105261062610726108261092611026111261122611326114261152611626117261182611926120261212612226123261242612526126261272612826129261302613126132261332613426135261362613726138261392614026141261422614326144261452614626147261482614926150261512615226153261542615526156261572615826159261602616126162261632616426165261662616726168261692617026171261722617326174261752617626177261782617926180261812618226183261842618526186261872618826189261902619126192261932619426195261962619726198261992620026201262022620326204262052620626207262082620926210262112621226213262142621526216262172621826219262202622126222262232622426225262262622726228262292623026231262322623326234262352623626237262382623926240262412624226243262442624526246262472624826249262502625126252262532625426255262562625726258262592626026261262622626326264262652626626267262682626926270262712627226273262742627526276262772627826279262802628126282262832628426285262862628726288262892629026291262922629326294262952629626297262982629926300263012630226303263042630526306263072630826309263102631126312263132631426315263162631726318263192632026321263222632326324263252632626327263282632926330263312633226333263342633526336263372633826339263402634126342263432634426345263462634726348263492635026351263522635326354263552635626357263582635926360263612636226363263642636526366263672636826369263702637126372263732637426375263762637726378263792638026381263822638326384263852638626387263882638926390263912639226393263942639526396263972639826399264002640126402264032640426405264062640726408264092641026411264122641326414264152641626417264182641926420264212642226423264242642526426264272642826429264302643126432264332643426435264362643726438264392644026441264422644326444264452644626447264482644926450264512645226453264542645526456264572645826459264602646126462264632646426465264662646726468264692647026471264722647326474264752647626477264782647926480264812648226483264842648526486264872648826489264902649126492264932649426495264962649726498264992650026501265022650326504265052650626507265082650926510265112651226513265142651526516265172651826519265202652126522265232652426525265262652726528265292653026531265322653326534265352653626537265382653926540265412654226543265442654526546265472654826549265502655126552265532655426555265562655726558265592656026561265622656326564265652656626567265682656926570265712657226573265742657526576265772657826579265802658126582265832658426585265862658726588265892659026591265922659326594265952659626597265982659926600266012660226603266042660526606266072660826609266102661126612266132661426615266162661726618266192662026621266222662326624266252662626627266282662926630266312663226633266342663526636266372663826639266402664126642266432664426645266462664726648266492665026651266522665326654266552665626657266582665926660266612666226663266642666526666266672666826669266702667126672266732667426675266762667726678266792668026681266822668326684266852668626687266882668926690266912669226693266942669526696266972669826699267002670126702267032670426705267062670726708267092671026711267122671326714267152671626717267182671926720267212672226723267242672526726267272672826729267302673126732267332673426735267362673726738267392674026741267422674326744267452674626747267482674926750267512675226753267542675526756267572675826759267602676126762267632676426765267662676726768267692677026771267722677326774267752677626777267782677926780267812678226783267842678526786267872678826789267902679126792267932679426795267962679726798267992680026801268022680326804268052680626807268082680926810268112681226813268142681526816268172681826819268202682126822268232682426825268262682726828268292683026831268322683326834268352683626837268382683926840268412684226843268442684526846268472684826849268502685126852268532685426855268562685726858268592686026861268622686326864268652686626867268682686926870268712687226873268742687526876268772687826879268802688126882268832688426885268862688726888268892689026891268922689326894268952689626897268982689926900269012690226903269042690526906269072690826909269102691126912269132691426915269162691726918269192692026921269222692326924269252692626927269282692926930269312693226933269342693526936269372693826939269402694126942269432694426945269462694726948269492695026951269522695326954269552695626957269582695926960269612696226963269642696526966269672696826969269702697126972269732697426975269762697726978269792698026981269822698326984269852698626987269882698926990269912699226993269942699526996269972699826999270002700127002270032700427005270062700727008270092701027011270122701327014270152701627017270182701927020270212702227023270242702527026270272702827029270302703127032270332703427035270362703727038270392704027041270422704327044270452704627047270482704927050270512705227053270542705527056270572705827059270602706127062270632706427065270662706727068270692707027071270722707327074270752707627077270782707927080270812708227083270842708527086270872708827089270902709127092270932709427095270962709727098270992710027101271022710327104271052710627107271082710927110271112711227113271142711527116271172711827119271202712127122271232712427125271262712727128271292713027131271322713327134271352713627137271382713927140271412714227143271442714527146271472714827149271502715127152271532715427155271562715727158271592716027161271622716327164271652716627167271682716927170271712717227173271742717527176271772717827179271802718127182271832718427185271862718727188271892719027191271922719327194271952719627197271982719927200272012720227203272042720527206272072720827209272102721127212272132721427215272162721727218272192722027221272222722327224272252722627227272282722927230272312723227233272342723527236272372723827239272402724127242272432724427245272462724727248272492725027251272522725327254272552725627257272582725927260272612726227263272642726527266272672726827269272702727127272272732727427275272762727727278272792728027281272822728327284272852728627287272882728927290272912729227293272942729527296272972729827299273002730127302273032730427305273062730727308273092731027311273122731327314273152731627317273182731927320273212732227323273242732527326273272732827329273302733127332273332733427335273362733727338273392734027341273422734327344273452734627347273482734927350273512735227353273542735527356273572735827359273602736127362273632736427365273662736727368273692737027371273722737327374273752737627377273782737927380273812738227383273842738527386273872738827389273902739127392273932739427395273962739727398273992740027401274022740327404274052740627407274082740927410274112741227413274142741527416274172741827419274202742127422274232742427425274262742727428274292743027431274322743327434274352743627437274382743927440274412744227443274442744527446274472744827449274502745127452274532745427455274562745727458274592746027461274622746327464274652746627467274682746927470274712747227473274742747527476274772747827479274802748127482274832748427485274862748727488274892749027491274922749327494274952749627497274982749927500275012750227503275042750527506275072750827509275102751127512275132751427515275162751727518275192752027521275222752327524275252752627527275282752927530275312753227533275342753527536275372753827539275402754127542275432754427545275462754727548275492755027551275522755327554275552755627557275582755927560275612756227563275642756527566275672756827569275702757127572275732757427575275762757727578275792758027581275822758327584275852758627587275882758927590275912759227593275942759527596275972759827599276002760127602276032760427605276062760727608276092761027611276122761327614276152761627617276182761927620276212762227623276242762527626276272762827629276302763127632276332763427635276362763727638276392764027641276422764327644276452764627647276482764927650276512765227653276542765527656276572765827659276602766127662276632766427665276662766727668276692767027671276722767327674276752767627677276782767927680276812768227683276842768527686276872768827689276902769127692276932769427695276962769727698276992770027701277022770327704277052770627707277082770927710277112771227713277142771527716277172771827719277202772127722277232772427725277262772727728277292773027731277322773327734277352773627737277382773927740277412774227743277442774527746277472774827749277502775127752277532775427755277562775727758277592776027761277622776327764277652776627767277682776927770277712777227773277742777527776277772777827779277802778127782277832778427785277862778727788277892779027791277922779327794277952779627797277982779927800278012780227803278042780527806278072780827809278102781127812278132781427815278162781727818278192782027821278222782327824278252782627827278282782927830278312783227833278342783527836278372783827839278402784127842278432784427845278462784727848278492785027851278522785327854278552785627857278582785927860278612786227863278642786527866278672786827869278702787127872278732787427875278762787727878278792788027881278822788327884278852788627887278882788927890278912789227893278942789527896278972789827899279002790127902279032790427905279062790727908279092791027911279122791327914279152791627917279182791927920279212792227923279242792527926279272792827929279302793127932279332793427935279362793727938279392794027941279422794327944279452794627947279482794927950279512795227953279542795527956279572795827959279602796127962279632796427965279662796727968279692797027971279722797327974279752797627977279782797927980279812798227983279842798527986279872798827989279902799127992279932799427995279962799727998279992800028001280022800328004280052800628007280082800928010280112801228013280142801528016280172801828019280202802128022280232802428025280262802728028280292803028031280322803328034280352803628037280382803928040280412804228043280442804528046280472804828049280502805128052280532805428055280562805728058280592806028061280622806328064280652806628067280682806928070280712807228073280742807528076280772807828079280802808128082280832808428085280862808728088280892809028091280922809328094280952809628097280982809928100281012810228103281042810528106281072810828109281102811128112281132811428115281162811728118281192812028121281222812328124281252812628127281282812928130281312813228133281342813528136281372813828139281402814128142281432814428145281462814728148281492815028151281522815328154281552815628157281582815928160281612816228163281642816528166281672816828169281702817128172281732817428175281762817728178281792818028181281822818328184281852818628187281882818928190281912819228193281942819528196281972819828199282002820128202282032820428205282062820728208282092821028211282122821328214282152821628217282182821928220282212822228223282242822528226282272822828229282302823128232282332823428235282362823728238282392824028241282422824328244282452824628247282482824928250282512825228253282542825528256282572825828259282602826128262282632826428265282662826728268282692827028271282722827328274282752827628277282782827928280282812828228283282842828528286282872828828289282902829128292282932829428295282962829728298282992830028301283022830328304283052830628307283082830928310283112831228313283142831528316283172831828319283202832128322283232832428325283262832728328283292833028331283322833328334283352833628337283382833928340283412834228343283442834528346283472834828349283502835128352283532835428355283562835728358283592836028361283622836328364283652836628367283682836928370283712837228373283742837528376283772837828379283802838128382283832838428385283862838728388283892839028391283922839328394283952839628397283982839928400284012840228403284042840528406284072840828409284102841128412284132841428415284162841728418284192842028421284222842328424284252842628427284282842928430284312843228433284342843528436284372843828439284402844128442284432844428445284462844728448284492845028451284522845328454284552845628457284582845928460284612846228463284642846528466284672846828469284702847128472284732847428475284762847728478284792848028481284822848328484284852848628487284882848928490284912849228493284942849528496284972849828499285002850128502285032850428505285062850728508285092851028511285122851328514285152851628517285182851928520285212852228523285242852528526285272852828529285302853128532285332853428535285362853728538285392854028541285422854328544285452854628547285482854928550285512855228553285542855528556285572855828559285602856128562285632856428565285662856728568285692857028571285722857328574285752857628577285782857928580285812858228583285842858528586285872858828589285902859128592285932859428595285962859728598285992860028601286022860328604286052860628607286082860928610286112861228613286142861528616286172861828619286202862128622286232862428625286262862728628286292863028631286322863328634286352863628637286382863928640286412864228643286442864528646286472864828649286502865128652286532865428655286562865728658286592866028661286622866328664286652866628667286682866928670286712867228673286742867528676286772867828679286802868128682286832868428685286862868728688286892869028691286922869328694286952869628697286982869928700287012870228703287042870528706287072870828709287102871128712287132871428715287162871728718287192872028721287222872328724287252872628727287282872928730287312873228733287342873528736287372873828739287402874128742287432874428745287462874728748287492875028751287522875328754287552875628757287582875928760287612876228763287642876528766287672876828769287702877128772287732877428775287762877728778287792878028781287822878328784287852878628787287882878928790287912879228793287942879528796287972879828799288002880128802288032880428805288062880728808288092881028811288122881328814288152881628817288182881928820288212882228823288242882528826288272882828829288302883128832288332883428835288362883728838288392884028841288422884328844288452884628847288482884928850288512885228853288542885528856288572885828859288602886128862288632886428865288662886728868288692887028871288722887328874288752887628877288782887928880288812888228883288842888528886288872888828889288902889128892288932889428895288962889728898288992890028901289022890328904289052890628907289082890928910289112891228913289142891528916289172891828919289202892128922289232892428925289262892728928289292893028931289322893328934289352893628937289382893928940289412894228943289442894528946289472894828949289502895128952289532895428955289562895728958289592896028961289622896328964289652896628967289682896928970289712897228973289742897528976289772897828979289802898128982289832898428985289862898728988289892899028991289922899328994289952899628997289982899929000290012900229003290042900529006290072900829009290102901129012290132901429015290162901729018290192902029021290222902329024290252902629027290282902929030290312903229033290342903529036290372903829039290402904129042290432904429045290462904729048290492905029051290522905329054290552905629057290582905929060290612906229063290642906529066290672906829069290702907129072290732907429075290762907729078290792908029081290822908329084290852908629087290882908929090290912909229093290942909529096290972909829099291002910129102291032910429105291062910729108291092911029111291122911329114291152911629117291182911929120291212912229123291242912529126291272912829129291302913129132291332913429135291362913729138291392914029141291422914329144291452914629147291482914929150291512915229153291542915529156291572915829159291602916129162291632916429165291662916729168291692917029171291722917329174291752917629177291782917929180291812918229183291842918529186291872918829189291902919129192291932919429195291962919729198291992920029201292022920329204292052920629207292082920929210292112921229213292142921529216292172921829219292202922129222292232922429225292262922729228292292923029231292322923329234292352923629237292382923929240292412924229243292442924529246292472924829249292502925129252292532925429255292562925729258292592926029261292622926329264292652926629267292682926929270292712927229273292742927529276292772927829279292802928129282292832928429285292862928729288292892929029291292922929329294292952929629297292982929929300293012930229303293042930529306293072930829309293102931129312293132931429315293162931729318293192932029321293222932329324293252932629327293282932929330293312933229333293342933529336293372933829339293402934129342293432934429345293462934729348293492935029351293522935329354293552935629357293582935929360293612936229363293642936529366293672936829369293702937129372293732937429375293762937729378293792938029381293822938329384293852938629387293882938929390293912939229393293942939529396293972939829399294002940129402294032940429405294062940729408294092941029411294122941329414294152941629417294182941929420294212942229423294242942529426294272942829429294302943129432294332943429435294362943729438294392944029441294422944329444294452944629447294482944929450294512945229453294542945529456294572945829459294602946129462294632946429465294662946729468294692947029471294722947329474294752947629477294782947929480294812948229483294842948529486294872948829489294902949129492294932949429495294962949729498294992950029501295022950329504295052950629507295082950929510295112951229513295142951529516295172951829519295202952129522295232952429525295262952729528295292953029531295322953329534295352953629537295382953929540295412954229543295442954529546295472954829549295502955129552295532955429555295562955729558295592956029561295622956329564295652956629567295682956929570295712957229573295742957529576295772957829579295802958129582295832958429585295862958729588295892959029591295922959329594295952959629597295982959929600296012960229603296042960529606296072960829609296102961129612296132961429615296162961729618296192962029621296222962329624296252962629627296282962929630296312963229633296342963529636296372963829639296402964129642296432964429645296462964729648296492965029651296522965329654296552965629657296582965929660296612966229663296642966529666296672966829669296702967129672296732967429675296762967729678296792968029681296822968329684296852968629687296882968929690296912969229693296942969529696296972969829699297002970129702297032970429705297062970729708297092971029711297122971329714297152971629717297182971929720297212972229723297242972529726297272972829729297302973129732297332973429735297362973729738297392974029741297422974329744297452974629747297482974929750297512975229753297542975529756297572975829759297602976129762297632976429765297662976729768297692977029771297722977329774297752977629777297782977929780297812978229783297842978529786297872978829789297902979129792297932979429795297962979729798297992980029801298022980329804298052980629807298082980929810298112981229813298142981529816298172981829819298202982129822298232982429825298262982729828298292983029831298322983329834298352983629837298382983929840298412984229843298442984529846298472984829849298502985129852298532985429855298562985729858298592986029861298622986329864298652986629867298682986929870298712987229873298742987529876298772987829879298802988129882298832988429885298862988729888298892989029891298922989329894298952989629897298982989929900299012990229903299042990529906299072990829909299102991129912299132991429915299162991729918299192992029921299222992329924299252992629927299282992929930299312993229933299342993529936299372993829939299402994129942299432994429945299462994729948299492995029951299522995329954299552995629957299582995929960299612996229963299642996529966299672996829969299702997129972299732997429975299762997729978299792998029981299822998329984299852998629987299882998929990299912999229993299942999529996299972999829999300003000130002300033000430005300063000730008300093001030011300123001330014300153001630017300183001930020300213002230023300243002530026300273002830029300303003130032300333003430035300363003730038300393004030041300423004330044300453004630047300483004930050300513005230053300543005530056300573005830059300603006130062300633006430065300663006730068300693007030071300723007330074300753007630077300783007930080300813008230083300843008530086300873008830089300903009130092300933009430095300963009730098300993010030101301023010330104301053010630107301083010930110301113011230113301143011530116301173011830119301203012130122301233012430125301263012730128301293013030131301323013330134301353013630137301383013930140301413014230143301443014530146301473014830149301503015130152301533015430155301563015730158301593016030161301623016330164301653016630167301683016930170301713017230173301743017530176301773017830179301803018130182301833018430185301863018730188301893019030191301923019330194301953019630197301983019930200302013020230203302043020530206302073020830209302103021130212302133021430215302163021730218302193022030221302223022330224302253022630227302283022930230302313023230233302343023530236302373023830239302403024130242302433024430245302463024730248302493025030251302523025330254302553025630257302583025930260302613026230263302643026530266302673026830269302703027130272302733027430275302763027730278302793028030281302823028330284302853028630287302883028930290302913029230293302943029530296302973029830299303003030130302303033030430305303063030730308303093031030311303123031330314303153031630317303183031930320303213032230323303243032530326303273032830329303303033130332303333033430335303363033730338303393034030341303423034330344303453034630347303483034930350303513035230353303543035530356303573035830359303603036130362303633036430365303663036730368303693037030371303723037330374303753037630377303783037930380303813038230383303843038530386303873038830389303903039130392303933039430395303963039730398303993040030401304023040330404304053040630407304083040930410304113041230413304143041530416304173041830419304203042130422304233042430425304263042730428304293043030431304323043330434304353043630437304383043930440304413044230443304443044530446304473044830449304503045130452304533045430455304563045730458304593046030461304623046330464304653046630467304683046930470304713047230473304743047530476304773047830479304803048130482304833048430485304863048730488304893049030491304923049330494304953049630497304983049930500305013050230503305043050530506305073050830509305103051130512305133051430515305163051730518305193052030521305223052330524305253052630527305283052930530305313053230533305343053530536305373053830539305403054130542305433054430545305463054730548305493055030551305523055330554305553055630557305583055930560305613056230563305643056530566305673056830569305703057130572305733057430575305763057730578305793058030581305823058330584305853058630587305883058930590305913059230593305943059530596305973059830599306003060130602306033060430605306063060730608306093061030611306123061330614306153061630617306183061930620306213062230623306243062530626306273062830629306303063130632306333063430635306363063730638306393064030641306423064330644306453064630647306483064930650306513065230653306543065530656306573065830659306603066130662306633066430665306663066730668306693067030671306723067330674306753067630677306783067930680306813068230683306843068530686306873068830689306903069130692306933069430695306963069730698306993070030701307023070330704307053070630707307083070930710307113071230713307143071530716307173071830719307203072130722307233072430725307263072730728307293073030731307323073330734307353073630737307383073930740307413074230743307443074530746307473074830749307503075130752307533075430755307563075730758307593076030761307623076330764307653076630767307683076930770307713077230773307743077530776307773077830779307803078130782307833078430785307863078730788307893079030791307923079330794307953079630797307983079930800308013080230803308043080530806308073080830809308103081130812308133081430815308163081730818308193082030821308223082330824308253082630827308283082930830308313083230833308343083530836308373083830839308403084130842308433084430845308463084730848308493085030851308523085330854308553085630857308583085930860308613086230863308643086530866308673086830869308703087130872308733087430875308763087730878308793088030881308823088330884308853088630887308883088930890308913089230893308943089530896308973089830899309003090130902309033090430905309063090730908309093091030911309123091330914309153091630917309183091930920309213092230923309243092530926309273092830929309303093130932309333093430935309363093730938309393094030941309423094330944309453094630947309483094930950309513095230953309543095530956309573095830959309603096130962309633096430965309663096730968309693097030971309723097330974309753097630977309783097930980309813098230983309843098530986309873098830989309903099130992309933099430995309963099730998309993100031001310023100331004310053100631007310083100931010310113101231013310143101531016310173101831019310203102131022310233102431025310263102731028310293103031031310323103331034310353103631037310383103931040310413104231043310443104531046310473104831049310503105131052310533105431055310563105731058310593106031061310623106331064310653106631067310683106931070310713107231073310743107531076310773107831079310803108131082310833108431085310863108731088310893109031091310923109331094310953109631097310983109931100311013110231103311043110531106311073110831109311103111131112311133111431115311163111731118311193112031121311223112331124311253112631127311283112931130311313113231133311343113531136311373113831139311403114131142311433114431145311463114731148311493115031151311523115331154311553115631157311583115931160311613116231163311643116531166311673116831169311703117131172311733117431175311763117731178311793118031181311823118331184311853118631187311883118931190311913119231193311943119531196311973119831199312003120131202312033120431205312063120731208312093121031211312123121331214312153121631217312183121931220312213122231223312243122531226312273122831229312303123131232312333123431235312363123731238312393124031241312423124331244312453124631247312483124931250312513125231253312543125531256312573125831259312603126131262312633126431265312663126731268312693127031271312723127331274312753127631277312783127931280312813128231283312843128531286312873128831289312903129131292312933129431295312963129731298312993130031301313023130331304313053130631307313083130931310313113131231313313143131531316313173131831319313203132131322313233132431325313263132731328313293133031331313323133331334313353133631337313383133931340313413134231343313443134531346313473134831349313503135131352313533135431355313563135731358313593136031361313623136331364313653136631367313683136931370313713137231373313743137531376313773137831379313803138131382313833138431385313863138731388313893139031391313923139331394313953139631397313983139931400314013140231403314043140531406314073140831409314103141131412314133141431415314163141731418314193142031421314223142331424314253142631427314283142931430314313143231433314343143531436314373143831439314403144131442314433144431445314463144731448314493145031451314523145331454314553145631457314583145931460314613146231463314643146531466314673146831469314703147131472314733147431475314763147731478314793148031481314823148331484314853148631487314883148931490314913149231493314943149531496314973149831499315003150131502315033150431505315063150731508315093151031511315123151331514315153151631517315183151931520315213152231523315243152531526315273152831529315303153131532315333153431535315363153731538315393154031541315423154331544315453154631547315483154931550315513155231553315543155531556315573155831559315603156131562315633156431565315663156731568315693157031571315723157331574315753157631577315783157931580315813158231583315843158531586 |
- /*
- THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
- if you want to view the source visit the plugins github repository (https://github.com/denolehov/obsidian-git)
- */
- var __create = Object.create;
- var __defProp = Object.defineProperty;
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
- var __getOwnPropNames = Object.getOwnPropertyNames;
- var __getProtoOf = Object.getPrototypeOf;
- var __hasOwnProp = Object.prototype.hasOwnProperty;
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
- var __esm = (fn, res) => function __init() {
- return fn && (res = (0, fn[Object.keys(fn)[0]])(fn = 0)), res;
- };
- var __commonJS = (cb, mod) => function __require() {
- return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
- };
- var __export = (target, all) => {
- __markAsModule(target);
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
- };
- var __reExport = (target, module2, desc) => {
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
- for (let key2 of __getOwnPropNames(module2))
- if (!__hasOwnProp.call(target, key2) && key2 !== "default")
- __defProp(target, key2, { get: () => module2[key2], enumerable: !(desc = __getOwnPropDesc(module2, key2)) || desc.enumerable });
- }
- return target;
- };
- var __toModule = (module2) => {
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
- };
- // node_modules/base64-js/index.js
- var require_base64_js = __commonJS({
- "node_modules/base64-js/index.js"(exports) {
- init_polyfill_buffer();
- "use strict";
- exports.byteLength = byteLength;
- exports.toByteArray = toByteArray;
- exports.fromByteArray = fromByteArray;
- var lookup = [];
- var revLookup = [];
- var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array;
- var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- for (i = 0, len = code.length; i < len; ++i) {
- lookup[i] = code[i];
- revLookup[code.charCodeAt(i)] = i;
- }
- var i;
- var len;
- revLookup["-".charCodeAt(0)] = 62;
- revLookup["_".charCodeAt(0)] = 63;
- function getLens(b64) {
- var len2 = b64.length;
- if (len2 % 4 > 0) {
- throw new Error("Invalid string. Length must be a multiple of 4");
- }
- var validLen = b64.indexOf("=");
- if (validLen === -1)
- validLen = len2;
- var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4;
- return [validLen, placeHoldersLen];
- }
- function byteLength(b64) {
- var lens = getLens(b64);
- var validLen = lens[0];
- var placeHoldersLen = lens[1];
- return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
- }
- function _byteLength(b64, validLen, placeHoldersLen) {
- return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
- }
- function toByteArray(b64) {
- var tmp;
- var lens = getLens(b64);
- var validLen = lens[0];
- var placeHoldersLen = lens[1];
- var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));
- var curByte = 0;
- var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen;
- var i2;
- for (i2 = 0; i2 < len2; i2 += 4) {
- tmp = revLookup[b64.charCodeAt(i2)] << 18 | revLookup[b64.charCodeAt(i2 + 1)] << 12 | revLookup[b64.charCodeAt(i2 + 2)] << 6 | revLookup[b64.charCodeAt(i2 + 3)];
- arr[curByte++] = tmp >> 16 & 255;
- arr[curByte++] = tmp >> 8 & 255;
- arr[curByte++] = tmp & 255;
- }
- if (placeHoldersLen === 2) {
- tmp = revLookup[b64.charCodeAt(i2)] << 2 | revLookup[b64.charCodeAt(i2 + 1)] >> 4;
- arr[curByte++] = tmp & 255;
- }
- if (placeHoldersLen === 1) {
- tmp = revLookup[b64.charCodeAt(i2)] << 10 | revLookup[b64.charCodeAt(i2 + 1)] << 4 | revLookup[b64.charCodeAt(i2 + 2)] >> 2;
- arr[curByte++] = tmp >> 8 & 255;
- arr[curByte++] = tmp & 255;
- }
- return arr;
- }
- function tripletToBase64(num2) {
- return lookup[num2 >> 18 & 63] + lookup[num2 >> 12 & 63] + lookup[num2 >> 6 & 63] + lookup[num2 & 63];
- }
- function encodeChunk(uint8, start, end) {
- var tmp;
- var output = [];
- for (var i2 = start; i2 < end; i2 += 3) {
- tmp = (uint8[i2] << 16 & 16711680) + (uint8[i2 + 1] << 8 & 65280) + (uint8[i2 + 2] & 255);
- output.push(tripletToBase64(tmp));
- }
- return output.join("");
- }
- function fromByteArray(uint8) {
- var tmp;
- var len2 = uint8.length;
- var extraBytes = len2 % 3;
- var parts = [];
- var maxChunkLength = 16383;
- for (var i2 = 0, len22 = len2 - extraBytes; i2 < len22; i2 += maxChunkLength) {
- parts.push(encodeChunk(uint8, i2, i2 + maxChunkLength > len22 ? len22 : i2 + maxChunkLength));
- }
- if (extraBytes === 1) {
- tmp = uint8[len2 - 1];
- parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==");
- } else if (extraBytes === 2) {
- tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1];
- parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=");
- }
- return parts.join("");
- }
- }
- });
- // node_modules/ieee754/index.js
- var require_ieee754 = __commonJS({
- "node_modules/ieee754/index.js"(exports) {
- init_polyfill_buffer();
- exports.read = function(buffer2, offset, isLE, mLen, nBytes) {
- var e, m;
- var eLen = nBytes * 8 - mLen - 1;
- var eMax = (1 << eLen) - 1;
- var eBias = eMax >> 1;
- var nBits = -7;
- var i = isLE ? nBytes - 1 : 0;
- var d = isLE ? -1 : 1;
- var s = buffer2[offset + i];
- i += d;
- e = s & (1 << -nBits) - 1;
- s >>= -nBits;
- nBits += eLen;
- for (; nBits > 0; e = e * 256 + buffer2[offset + i], i += d, nBits -= 8) {
- }
- m = e & (1 << -nBits) - 1;
- e >>= -nBits;
- nBits += mLen;
- for (; nBits > 0; m = m * 256 + buffer2[offset + i], i += d, nBits -= 8) {
- }
- if (e === 0) {
- e = 1 - eBias;
- } else if (e === eMax) {
- return m ? NaN : (s ? -1 : 1) * Infinity;
- } else {
- m = m + Math.pow(2, mLen);
- e = e - eBias;
- }
- return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
- };
- exports.write = function(buffer2, value, offset, isLE, mLen, nBytes) {
- var e, m, c;
- var eLen = nBytes * 8 - mLen - 1;
- var eMax = (1 << eLen) - 1;
- var eBias = eMax >> 1;
- var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
- var i = isLE ? 0 : nBytes - 1;
- var d = isLE ? 1 : -1;
- var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
- value = Math.abs(value);
- if (isNaN(value) || value === Infinity) {
- m = isNaN(value) ? 1 : 0;
- e = eMax;
- } else {
- e = Math.floor(Math.log(value) / Math.LN2);
- if (value * (c = Math.pow(2, -e)) < 1) {
- e--;
- c *= 2;
- }
- if (e + eBias >= 1) {
- value += rt / c;
- } else {
- value += rt * Math.pow(2, 1 - eBias);
- }
- if (value * c >= 2) {
- e++;
- c /= 2;
- }
- if (e + eBias >= eMax) {
- m = 0;
- e = eMax;
- } else if (e + eBias >= 1) {
- m = (value * c - 1) * Math.pow(2, mLen);
- e = e + eBias;
- } else {
- m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
- e = 0;
- }
- }
- for (; mLen >= 8; buffer2[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {
- }
- e = e << mLen | m;
- eLen += mLen;
- for (; eLen > 0; buffer2[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {
- }
- buffer2[offset + i - d] |= s * 128;
- };
- }
- });
- // node_modules/buffer/index.js
- var require_buffer = __commonJS({
- "node_modules/buffer/index.js"(exports) {
- init_polyfill_buffer();
- "use strict";
- var base64 = require_base64_js();
- var ieee754 = require_ieee754();
- var customInspectSymbol = typeof Symbol === "function" && typeof Symbol["for"] === "function" ? Symbol["for"]("nodejs.util.inspect.custom") : null;
- exports.Buffer = Buffer3;
- exports.SlowBuffer = SlowBuffer;
- exports.INSPECT_MAX_BYTES = 50;
- var K_MAX_LENGTH = 2147483647;
- exports.kMaxLength = K_MAX_LENGTH;
- Buffer3.TYPED_ARRAY_SUPPORT = typedArraySupport();
- if (!Buffer3.TYPED_ARRAY_SUPPORT && typeof console !== "undefined" && typeof console.error === "function") {
- console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");
- }
- function typedArraySupport() {
- try {
- const arr = new Uint8Array(1);
- const proto = { foo: function() {
- return 42;
- } };
- Object.setPrototypeOf(proto, Uint8Array.prototype);
- Object.setPrototypeOf(arr, proto);
- return arr.foo() === 42;
- } catch (e) {
- return false;
- }
- }
- Object.defineProperty(Buffer3.prototype, "parent", {
- enumerable: true,
- get: function() {
- if (!Buffer3.isBuffer(this))
- return void 0;
- return this.buffer;
- }
- });
- Object.defineProperty(Buffer3.prototype, "offset", {
- enumerable: true,
- get: function() {
- if (!Buffer3.isBuffer(this))
- return void 0;
- return this.byteOffset;
- }
- });
- function createBuffer(length) {
- if (length > K_MAX_LENGTH) {
- throw new RangeError('The value "' + length + '" is invalid for option "size"');
- }
- const buf = new Uint8Array(length);
- Object.setPrototypeOf(buf, Buffer3.prototype);
- return buf;
- }
- function Buffer3(arg, encodingOrOffset, length) {
- if (typeof arg === "number") {
- if (typeof encodingOrOffset === "string") {
- throw new TypeError('The "string" argument must be of type string. Received type number');
- }
- return allocUnsafe(arg);
- }
- return from(arg, encodingOrOffset, length);
- }
- Buffer3.poolSize = 8192;
- function from(value, encodingOrOffset, length) {
- if (typeof value === "string") {
- return fromString(value, encodingOrOffset);
- }
- if (ArrayBuffer.isView(value)) {
- return fromArrayView(value);
- }
- if (value == null) {
- throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value);
- }
- if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {
- return fromArrayBuffer(value, encodingOrOffset, length);
- }
- if (typeof SharedArrayBuffer !== "undefined" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {
- return fromArrayBuffer(value, encodingOrOffset, length);
- }
- if (typeof value === "number") {
- throw new TypeError('The "value" argument must not be of type number. Received type number');
- }
- const valueOf = value.valueOf && value.valueOf();
- if (valueOf != null && valueOf !== value) {
- return Buffer3.from(valueOf, encodingOrOffset, length);
- }
- const b = fromObject(value);
- if (b)
- return b;
- if (typeof Symbol !== "undefined" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === "function") {
- return Buffer3.from(value[Symbol.toPrimitive]("string"), encodingOrOffset, length);
- }
- throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value);
- }
- Buffer3.from = function(value, encodingOrOffset, length) {
- return from(value, encodingOrOffset, length);
- };
- Object.setPrototypeOf(Buffer3.prototype, Uint8Array.prototype);
- Object.setPrototypeOf(Buffer3, Uint8Array);
- function assertSize(size) {
- if (typeof size !== "number") {
- throw new TypeError('"size" argument must be of type number');
- } else if (size < 0) {
- throw new RangeError('The value "' + size + '" is invalid for option "size"');
- }
- }
- function alloc(size, fill, encoding) {
- assertSize(size);
- if (size <= 0) {
- return createBuffer(size);
- }
- if (fill !== void 0) {
- return typeof encoding === "string" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);
- }
- return createBuffer(size);
- }
- Buffer3.alloc = function(size, fill, encoding) {
- return alloc(size, fill, encoding);
- };
- function allocUnsafe(size) {
- assertSize(size);
- return createBuffer(size < 0 ? 0 : checked(size) | 0);
- }
- Buffer3.allocUnsafe = function(size) {
- return allocUnsafe(size);
- };
- Buffer3.allocUnsafeSlow = function(size) {
- return allocUnsafe(size);
- };
- function fromString(string, encoding) {
- if (typeof encoding !== "string" || encoding === "") {
- encoding = "utf8";
- }
- if (!Buffer3.isEncoding(encoding)) {
- throw new TypeError("Unknown encoding: " + encoding);
- }
- const length = byteLength(string, encoding) | 0;
- let buf = createBuffer(length);
- const actual = buf.write(string, encoding);
- if (actual !== length) {
- buf = buf.slice(0, actual);
- }
- return buf;
- }
- function fromArrayLike(array) {
- const length = array.length < 0 ? 0 : checked(array.length) | 0;
- const buf = createBuffer(length);
- for (let i = 0; i < length; i += 1) {
- buf[i] = array[i] & 255;
- }
- return buf;
- }
- function fromArrayView(arrayView) {
- if (isInstance(arrayView, Uint8Array)) {
- const copy2 = new Uint8Array(arrayView);
- return fromArrayBuffer(copy2.buffer, copy2.byteOffset, copy2.byteLength);
- }
- return fromArrayLike(arrayView);
- }
- function fromArrayBuffer(array, byteOffset, length) {
- if (byteOffset < 0 || array.byteLength < byteOffset) {
- throw new RangeError('"offset" is outside of buffer bounds');
- }
- if (array.byteLength < byteOffset + (length || 0)) {
- throw new RangeError('"length" is outside of buffer bounds');
- }
- let buf;
- if (byteOffset === void 0 && length === void 0) {
- buf = new Uint8Array(array);
- } else if (length === void 0) {
- buf = new Uint8Array(array, byteOffset);
- } else {
- buf = new Uint8Array(array, byteOffset, length);
- }
- Object.setPrototypeOf(buf, Buffer3.prototype);
- return buf;
- }
- function fromObject(obj) {
- if (Buffer3.isBuffer(obj)) {
- const len = checked(obj.length) | 0;
- const buf = createBuffer(len);
- if (buf.length === 0) {
- return buf;
- }
- obj.copy(buf, 0, 0, len);
- return buf;
- }
- if (obj.length !== void 0) {
- if (typeof obj.length !== "number" || numberIsNaN(obj.length)) {
- return createBuffer(0);
- }
- return fromArrayLike(obj);
- }
- if (obj.type === "Buffer" && Array.isArray(obj.data)) {
- return fromArrayLike(obj.data);
- }
- }
- function checked(length) {
- if (length >= K_MAX_LENGTH) {
- throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + K_MAX_LENGTH.toString(16) + " bytes");
- }
- return length | 0;
- }
- function SlowBuffer(length) {
- if (+length != length) {
- length = 0;
- }
- return Buffer3.alloc(+length);
- }
- Buffer3.isBuffer = function isBuffer(b) {
- return b != null && b._isBuffer === true && b !== Buffer3.prototype;
- };
- Buffer3.compare = function compare(a, b) {
- if (isInstance(a, Uint8Array))
- a = Buffer3.from(a, a.offset, a.byteLength);
- if (isInstance(b, Uint8Array))
- b = Buffer3.from(b, b.offset, b.byteLength);
- if (!Buffer3.isBuffer(a) || !Buffer3.isBuffer(b)) {
- throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
- }
- if (a === b)
- return 0;
- let x = a.length;
- let y = b.length;
- for (let i = 0, len = Math.min(x, y); i < len; ++i) {
- if (a[i] !== b[i]) {
- x = a[i];
- y = b[i];
- break;
- }
- }
- if (x < y)
- return -1;
- if (y < x)
- return 1;
- return 0;
- };
- Buffer3.isEncoding = function isEncoding(encoding) {
- switch (String(encoding).toLowerCase()) {
- case "hex":
- case "utf8":
- case "utf-8":
- case "ascii":
- case "latin1":
- case "binary":
- case "base64":
- case "ucs2":
- case "ucs-2":
- case "utf16le":
- case "utf-16le":
- return true;
- default:
- return false;
- }
- };
- Buffer3.concat = function concat(list, length) {
- if (!Array.isArray(list)) {
- throw new TypeError('"list" argument must be an Array of Buffers');
- }
- if (list.length === 0) {
- return Buffer3.alloc(0);
- }
- let i;
- if (length === void 0) {
- length = 0;
- for (i = 0; i < list.length; ++i) {
- length += list[i].length;
- }
- }
- const buffer2 = Buffer3.allocUnsafe(length);
- let pos = 0;
- for (i = 0; i < list.length; ++i) {
- let buf = list[i];
- if (isInstance(buf, Uint8Array)) {
- if (pos + buf.length > buffer2.length) {
- if (!Buffer3.isBuffer(buf))
- buf = Buffer3.from(buf);
- buf.copy(buffer2, pos);
- } else {
- Uint8Array.prototype.set.call(buffer2, buf, pos);
- }
- } else if (!Buffer3.isBuffer(buf)) {
- throw new TypeError('"list" argument must be an Array of Buffers');
- } else {
- buf.copy(buffer2, pos);
- }
- pos += buf.length;
- }
- return buffer2;
- };
- function byteLength(string, encoding) {
- if (Buffer3.isBuffer(string)) {
- return string.length;
- }
- if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {
- return string.byteLength;
- }
- if (typeof string !== "string") {
- throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof string);
- }
- const len = string.length;
- const mustMatch = arguments.length > 2 && arguments[2] === true;
- if (!mustMatch && len === 0)
- return 0;
- let loweredCase = false;
- for (; ; ) {
- switch (encoding) {
- case "ascii":
- case "latin1":
- case "binary":
- return len;
- case "utf8":
- case "utf-8":
- return utf8ToBytes(string).length;
- case "ucs2":
- case "ucs-2":
- case "utf16le":
- case "utf-16le":
- return len * 2;
- case "hex":
- return len >>> 1;
- case "base64":
- return base64ToBytes(string).length;
- default:
- if (loweredCase) {
- return mustMatch ? -1 : utf8ToBytes(string).length;
- }
- encoding = ("" + encoding).toLowerCase();
- loweredCase = true;
- }
- }
- }
- Buffer3.byteLength = byteLength;
- function slowToString(encoding, start, end) {
- let loweredCase = false;
- if (start === void 0 || start < 0) {
- start = 0;
- }
- if (start > this.length) {
- return "";
- }
- if (end === void 0 || end > this.length) {
- end = this.length;
- }
- if (end <= 0) {
- return "";
- }
- end >>>= 0;
- start >>>= 0;
- if (end <= start) {
- return "";
- }
- if (!encoding)
- encoding = "utf8";
- while (true) {
- switch (encoding) {
- case "hex":
- return hexSlice(this, start, end);
- case "utf8":
- case "utf-8":
- return utf8Slice(this, start, end);
- case "ascii":
- return asciiSlice(this, start, end);
- case "latin1":
- case "binary":
- return latin1Slice(this, start, end);
- case "base64":
- return base64Slice(this, start, end);
- case "ucs2":
- case "ucs-2":
- case "utf16le":
- case "utf-16le":
- return utf16leSlice(this, start, end);
- default:
- if (loweredCase)
- throw new TypeError("Unknown encoding: " + encoding);
- encoding = (encoding + "").toLowerCase();
- loweredCase = true;
- }
- }
- }
- Buffer3.prototype._isBuffer = true;
- function swap(b, n, m) {
- const i = b[n];
- b[n] = b[m];
- b[m] = i;
- }
- Buffer3.prototype.swap16 = function swap16() {
- const len = this.length;
- if (len % 2 !== 0) {
- throw new RangeError("Buffer size must be a multiple of 16-bits");
- }
- for (let i = 0; i < len; i += 2) {
- swap(this, i, i + 1);
- }
- return this;
- };
- Buffer3.prototype.swap32 = function swap32() {
- const len = this.length;
- if (len % 4 !== 0) {
- throw new RangeError("Buffer size must be a multiple of 32-bits");
- }
- for (let i = 0; i < len; i += 4) {
- swap(this, i, i + 3);
- swap(this, i + 1, i + 2);
- }
- return this;
- };
- Buffer3.prototype.swap64 = function swap64() {
- const len = this.length;
- if (len % 8 !== 0) {
- throw new RangeError("Buffer size must be a multiple of 64-bits");
- }
- for (let i = 0; i < len; i += 8) {
- swap(this, i, i + 7);
- swap(this, i + 1, i + 6);
- swap(this, i + 2, i + 5);
- swap(this, i + 3, i + 4);
- }
- return this;
- };
- Buffer3.prototype.toString = function toString() {
- const length = this.length;
- if (length === 0)
- return "";
- if (arguments.length === 0)
- return utf8Slice(this, 0, length);
- return slowToString.apply(this, arguments);
- };
- Buffer3.prototype.toLocaleString = Buffer3.prototype.toString;
- Buffer3.prototype.equals = function equals2(b) {
- if (!Buffer3.isBuffer(b))
- throw new TypeError("Argument must be a Buffer");
- if (this === b)
- return true;
- return Buffer3.compare(this, b) === 0;
- };
- Buffer3.prototype.inspect = function inspect() {
- let str = "";
- const max = exports.INSPECT_MAX_BYTES;
- str = this.toString("hex", 0, max).replace(/(.{2})/g, "$1 ").trim();
- if (this.length > max)
- str += " ... ";
- return "<Buffer " + str + ">";
- };
- if (customInspectSymbol) {
- Buffer3.prototype[customInspectSymbol] = Buffer3.prototype.inspect;
- }
- Buffer3.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {
- if (isInstance(target, Uint8Array)) {
- target = Buffer3.from(target, target.offset, target.byteLength);
- }
- if (!Buffer3.isBuffer(target)) {
- throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof target);
- }
- if (start === void 0) {
- start = 0;
- }
- if (end === void 0) {
- end = target ? target.length : 0;
- }
- if (thisStart === void 0) {
- thisStart = 0;
- }
- if (thisEnd === void 0) {
- thisEnd = this.length;
- }
- if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
- throw new RangeError("out of range index");
- }
- if (thisStart >= thisEnd && start >= end) {
- return 0;
- }
- if (thisStart >= thisEnd) {
- return -1;
- }
- if (start >= end) {
- return 1;
- }
- start >>>= 0;
- end >>>= 0;
- thisStart >>>= 0;
- thisEnd >>>= 0;
- if (this === target)
- return 0;
- let x = thisEnd - thisStart;
- let y = end - start;
- const len = Math.min(x, y);
- const thisCopy = this.slice(thisStart, thisEnd);
- const targetCopy = target.slice(start, end);
- for (let i = 0; i < len; ++i) {
- if (thisCopy[i] !== targetCopy[i]) {
- x = thisCopy[i];
- y = targetCopy[i];
- break;
- }
- }
- if (x < y)
- return -1;
- if (y < x)
- return 1;
- return 0;
- };
- function bidirectionalIndexOf(buffer2, val, byteOffset, encoding, dir) {
- if (buffer2.length === 0)
- return -1;
- if (typeof byteOffset === "string") {
- encoding = byteOffset;
- byteOffset = 0;
- } else if (byteOffset > 2147483647) {
- byteOffset = 2147483647;
- } else if (byteOffset < -2147483648) {
- byteOffset = -2147483648;
- }
- byteOffset = +byteOffset;
- if (numberIsNaN(byteOffset)) {
- byteOffset = dir ? 0 : buffer2.length - 1;
- }
- if (byteOffset < 0)
- byteOffset = buffer2.length + byteOffset;
- if (byteOffset >= buffer2.length) {
- if (dir)
- return -1;
- else
- byteOffset = buffer2.length - 1;
- } else if (byteOffset < 0) {
- if (dir)
- byteOffset = 0;
- else
- return -1;
- }
- if (typeof val === "string") {
- val = Buffer3.from(val, encoding);
- }
- if (Buffer3.isBuffer(val)) {
- if (val.length === 0) {
- return -1;
- }
- return arrayIndexOf(buffer2, val, byteOffset, encoding, dir);
- } else if (typeof val === "number") {
- val = val & 255;
- if (typeof Uint8Array.prototype.indexOf === "function") {
- if (dir) {
- return Uint8Array.prototype.indexOf.call(buffer2, val, byteOffset);
- } else {
- return Uint8Array.prototype.lastIndexOf.call(buffer2, val, byteOffset);
- }
- }
- return arrayIndexOf(buffer2, [val], byteOffset, encoding, dir);
- }
- throw new TypeError("val must be string, number or Buffer");
- }
- function arrayIndexOf(arr, val, byteOffset, encoding, dir) {
- let indexSize = 1;
- let arrLength = arr.length;
- let valLength = val.length;
- if (encoding !== void 0) {
- encoding = String(encoding).toLowerCase();
- if (encoding === "ucs2" || encoding === "ucs-2" || encoding === "utf16le" || encoding === "utf-16le") {
- if (arr.length < 2 || val.length < 2) {
- return -1;
- }
- indexSize = 2;
- arrLength /= 2;
- valLength /= 2;
- byteOffset /= 2;
- }
- }
- function read(buf, i2) {
- if (indexSize === 1) {
- return buf[i2];
- } else {
- return buf.readUInt16BE(i2 * indexSize);
- }
- }
- let i;
- if (dir) {
- let foundIndex = -1;
- for (i = byteOffset; i < arrLength; i++) {
- if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
- if (foundIndex === -1)
- foundIndex = i;
- if (i - foundIndex + 1 === valLength)
- return foundIndex * indexSize;
- } else {
- if (foundIndex !== -1)
- i -= i - foundIndex;
- foundIndex = -1;
- }
- }
- } else {
- if (byteOffset + valLength > arrLength)
- byteOffset = arrLength - valLength;
- for (i = byteOffset; i >= 0; i--) {
- let found = true;
- for (let j = 0; j < valLength; j++) {
- if (read(arr, i + j) !== read(val, j)) {
- found = false;
- break;
- }
- }
- if (found)
- return i;
- }
- }
- return -1;
- }
- Buffer3.prototype.includes = function includes(val, byteOffset, encoding) {
- return this.indexOf(val, byteOffset, encoding) !== -1;
- };
- Buffer3.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
- return bidirectionalIndexOf(this, val, byteOffset, encoding, true);
- };
- Buffer3.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {
- return bidirectionalIndexOf(this, val, byteOffset, encoding, false);
- };
- function hexWrite(buf, string, offset, length) {
- offset = Number(offset) || 0;
- const remaining = buf.length - offset;
- if (!length) {
- length = remaining;
- } else {
- length = Number(length);
- if (length > remaining) {
- length = remaining;
- }
- }
- const strLen = string.length;
- if (length > strLen / 2) {
- length = strLen / 2;
- }
- let i;
- for (i = 0; i < length; ++i) {
- const parsed = parseInt(string.substr(i * 2, 2), 16);
- if (numberIsNaN(parsed))
- return i;
- buf[offset + i] = parsed;
- }
- return i;
- }
- function utf8Write(buf, string, offset, length) {
- return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);
- }
- function asciiWrite(buf, string, offset, length) {
- return blitBuffer(asciiToBytes(string), buf, offset, length);
- }
- function base64Write(buf, string, offset, length) {
- return blitBuffer(base64ToBytes(string), buf, offset, length);
- }
- function ucs2Write(buf, string, offset, length) {
- return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);
- }
- Buffer3.prototype.write = function write(string, offset, length, encoding) {
- if (offset === void 0) {
- encoding = "utf8";
- length = this.length;
- offset = 0;
- } else if (length === void 0 && typeof offset === "string") {
- encoding = offset;
- length = this.length;
- offset = 0;
- } else if (isFinite(offset)) {
- offset = offset >>> 0;
- if (isFinite(length)) {
- length = length >>> 0;
- if (encoding === void 0)
- encoding = "utf8";
- } else {
- encoding = length;
- length = void 0;
- }
- } else {
- throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
- }
- const remaining = this.length - offset;
- if (length === void 0 || length > remaining)
- length = remaining;
- if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {
- throw new RangeError("Attempt to write outside buffer bounds");
- }
- if (!encoding)
- encoding = "utf8";
- let loweredCase = false;
- for (; ; ) {
- switch (encoding) {
- case "hex":
- return hexWrite(this, string, offset, length);
- case "utf8":
- case "utf-8":
- return utf8Write(this, string, offset, length);
- case "ascii":
- case "latin1":
- case "binary":
- return asciiWrite(this, string, offset, length);
- case "base64":
- return base64Write(this, string, offset, length);
- case "ucs2":
- case "ucs-2":
- case "utf16le":
- case "utf-16le":
- return ucs2Write(this, string, offset, length);
- default:
- if (loweredCase)
- throw new TypeError("Unknown encoding: " + encoding);
- encoding = ("" + encoding).toLowerCase();
- loweredCase = true;
- }
- }
- };
- Buffer3.prototype.toJSON = function toJSON() {
- return {
- type: "Buffer",
- data: Array.prototype.slice.call(this._arr || this, 0)
- };
- };
- function base64Slice(buf, start, end) {
- if (start === 0 && end === buf.length) {
- return base64.fromByteArray(buf);
- } else {
- return base64.fromByteArray(buf.slice(start, end));
- }
- }
- function utf8Slice(buf, start, end) {
- end = Math.min(buf.length, end);
- const res = [];
- let i = start;
- while (i < end) {
- const firstByte = buf[i];
- let codePoint = null;
- let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;
- if (i + bytesPerSequence <= end) {
- let secondByte, thirdByte, fourthByte, tempCodePoint;
- switch (bytesPerSequence) {
- case 1:
- if (firstByte < 128) {
- codePoint = firstByte;
- }
- break;
- case 2:
- secondByte = buf[i + 1];
- if ((secondByte & 192) === 128) {
- tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;
- if (tempCodePoint > 127) {
- codePoint = tempCodePoint;
- }
- }
- break;
- case 3:
- secondByte = buf[i + 1];
- thirdByte = buf[i + 2];
- if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {
- tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;
- if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {
- codePoint = tempCodePoint;
- }
- }
- break;
- case 4:
- secondByte = buf[i + 1];
- thirdByte = buf[i + 2];
- fourthByte = buf[i + 3];
- if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {
- tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;
- if (tempCodePoint > 65535 && tempCodePoint < 1114112) {
- codePoint = tempCodePoint;
- }
- }
- }
- }
- if (codePoint === null) {
- codePoint = 65533;
- bytesPerSequence = 1;
- } else if (codePoint > 65535) {
- codePoint -= 65536;
- res.push(codePoint >>> 10 & 1023 | 55296);
- codePoint = 56320 | codePoint & 1023;
- }
- res.push(codePoint);
- i += bytesPerSequence;
- }
- return decodeCodePointsArray(res);
- }
- var MAX_ARGUMENTS_LENGTH = 4096;
- function decodeCodePointsArray(codePoints) {
- const len = codePoints.length;
- if (len <= MAX_ARGUMENTS_LENGTH) {
- return String.fromCharCode.apply(String, codePoints);
- }
- let res = "";
- let i = 0;
- while (i < len) {
- res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));
- }
- return res;
- }
- function asciiSlice(buf, start, end) {
- let ret = "";
- end = Math.min(buf.length, end);
- for (let i = start; i < end; ++i) {
- ret += String.fromCharCode(buf[i] & 127);
- }
- return ret;
- }
- function latin1Slice(buf, start, end) {
- let ret = "";
- end = Math.min(buf.length, end);
- for (let i = start; i < end; ++i) {
- ret += String.fromCharCode(buf[i]);
- }
- return ret;
- }
- function hexSlice(buf, start, end) {
- const len = buf.length;
- if (!start || start < 0)
- start = 0;
- if (!end || end < 0 || end > len)
- end = len;
- let out = "";
- for (let i = start; i < end; ++i) {
- out += hexSliceLookupTable[buf[i]];
- }
- return out;
- }
- function utf16leSlice(buf, start, end) {
- const bytes = buf.slice(start, end);
- let res = "";
- for (let i = 0; i < bytes.length - 1; i += 2) {
- res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
- }
- return res;
- }
- Buffer3.prototype.slice = function slice(start, end) {
- const len = this.length;
- start = ~~start;
- end = end === void 0 ? len : ~~end;
- if (start < 0) {
- start += len;
- if (start < 0)
- start = 0;
- } else if (start > len) {
- start = len;
- }
- if (end < 0) {
- end += len;
- if (end < 0)
- end = 0;
- } else if (end > len) {
- end = len;
- }
- if (end < start)
- end = start;
- const newBuf = this.subarray(start, end);
- Object.setPrototypeOf(newBuf, Buffer3.prototype);
- return newBuf;
- };
- function checkOffset(offset, ext, length) {
- if (offset % 1 !== 0 || offset < 0)
- throw new RangeError("offset is not uint");
- if (offset + ext > length)
- throw new RangeError("Trying to access beyond buffer length");
- }
- Buffer3.prototype.readUintLE = Buffer3.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) {
- offset = offset >>> 0;
- byteLength2 = byteLength2 >>> 0;
- if (!noAssert)
- checkOffset(offset, byteLength2, this.length);
- let val = this[offset];
- let mul = 1;
- let i = 0;
- while (++i < byteLength2 && (mul *= 256)) {
- val += this[offset + i] * mul;
- }
- return val;
- };
- Buffer3.prototype.readUintBE = Buffer3.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) {
- offset = offset >>> 0;
- byteLength2 = byteLength2 >>> 0;
- if (!noAssert) {
- checkOffset(offset, byteLength2, this.length);
- }
- let val = this[offset + --byteLength2];
- let mul = 1;
- while (byteLength2 > 0 && (mul *= 256)) {
- val += this[offset + --byteLength2] * mul;
- }
- return val;
- };
- Buffer3.prototype.readUint8 = Buffer3.prototype.readUInt8 = function readUInt8(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 1, this.length);
- return this[offset];
- };
- Buffer3.prototype.readUint16LE = Buffer3.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 2, this.length);
- return this[offset] | this[offset + 1] << 8;
- };
- Buffer3.prototype.readUint16BE = Buffer3.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 2, this.length);
- return this[offset] << 8 | this[offset + 1];
- };
- Buffer3.prototype.readUint32LE = Buffer3.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 4, this.length);
- return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;
- };
- Buffer3.prototype.readUint32BE = Buffer3.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 4, this.length);
- return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);
- };
- Buffer3.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {
- offset = offset >>> 0;
- validateNumber(offset, "offset");
- const first2 = this[offset];
- const last2 = this[offset + 7];
- if (first2 === void 0 || last2 === void 0) {
- boundsError(offset, this.length - 8);
- }
- const lo = first2 + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;
- const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last2 * 2 ** 24;
- return BigInt(lo) + (BigInt(hi) << BigInt(32));
- });
- Buffer3.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {
- offset = offset >>> 0;
- validateNumber(offset, "offset");
- const first2 = this[offset];
- const last2 = this[offset + 7];
- if (first2 === void 0 || last2 === void 0) {
- boundsError(offset, this.length - 8);
- }
- const hi = first2 * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];
- const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last2;
- return (BigInt(hi) << BigInt(32)) + BigInt(lo);
- });
- Buffer3.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) {
- offset = offset >>> 0;
- byteLength2 = byteLength2 >>> 0;
- if (!noAssert)
- checkOffset(offset, byteLength2, this.length);
- let val = this[offset];
- let mul = 1;
- let i = 0;
- while (++i < byteLength2 && (mul *= 256)) {
- val += this[offset + i] * mul;
- }
- mul *= 128;
- if (val >= mul)
- val -= Math.pow(2, 8 * byteLength2);
- return val;
- };
- Buffer3.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) {
- offset = offset >>> 0;
- byteLength2 = byteLength2 >>> 0;
- if (!noAssert)
- checkOffset(offset, byteLength2, this.length);
- let i = byteLength2;
- let mul = 1;
- let val = this[offset + --i];
- while (i > 0 && (mul *= 256)) {
- val += this[offset + --i] * mul;
- }
- mul *= 128;
- if (val >= mul)
- val -= Math.pow(2, 8 * byteLength2);
- return val;
- };
- Buffer3.prototype.readInt8 = function readInt8(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 1, this.length);
- if (!(this[offset] & 128))
- return this[offset];
- return (255 - this[offset] + 1) * -1;
- };
- Buffer3.prototype.readInt16LE = function readInt16LE(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 2, this.length);
- const val = this[offset] | this[offset + 1] << 8;
- return val & 32768 ? val | 4294901760 : val;
- };
- Buffer3.prototype.readInt16BE = function readInt16BE(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 2, this.length);
- const val = this[offset + 1] | this[offset] << 8;
- return val & 32768 ? val | 4294901760 : val;
- };
- Buffer3.prototype.readInt32LE = function readInt32LE(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 4, this.length);
- return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;
- };
- Buffer3.prototype.readInt32BE = function readInt32BE(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 4, this.length);
- return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];
- };
- Buffer3.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {
- offset = offset >>> 0;
- validateNumber(offset, "offset");
- const first2 = this[offset];
- const last2 = this[offset + 7];
- if (first2 === void 0 || last2 === void 0) {
- boundsError(offset, this.length - 8);
- }
- const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last2 << 24);
- return (BigInt(val) << BigInt(32)) + BigInt(first2 + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);
- });
- Buffer3.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {
- offset = offset >>> 0;
- validateNumber(offset, "offset");
- const first2 = this[offset];
- const last2 = this[offset + 7];
- if (first2 === void 0 || last2 === void 0) {
- boundsError(offset, this.length - 8);
- }
- const val = (first2 << 24) + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];
- return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last2);
- });
- Buffer3.prototype.readFloatLE = function readFloatLE(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 4, this.length);
- return ieee754.read(this, offset, true, 23, 4);
- };
- Buffer3.prototype.readFloatBE = function readFloatBE(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 4, this.length);
- return ieee754.read(this, offset, false, 23, 4);
- };
- Buffer3.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 8, this.length);
- return ieee754.read(this, offset, true, 52, 8);
- };
- Buffer3.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {
- offset = offset >>> 0;
- if (!noAssert)
- checkOffset(offset, 8, this.length);
- return ieee754.read(this, offset, false, 52, 8);
- };
- function checkInt(buf, value, offset, ext, max, min) {
- if (!Buffer3.isBuffer(buf))
- throw new TypeError('"buffer" argument must be a Buffer instance');
- if (value > max || value < min)
- throw new RangeError('"value" argument is out of bounds');
- if (offset + ext > buf.length)
- throw new RangeError("Index out of range");
- }
- Buffer3.prototype.writeUintLE = Buffer3.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) {
- value = +value;
- offset = offset >>> 0;
- byteLength2 = byteLength2 >>> 0;
- if (!noAssert) {
- const maxBytes = Math.pow(2, 8 * byteLength2) - 1;
- checkInt(this, value, offset, byteLength2, maxBytes, 0);
- }
- let mul = 1;
- let i = 0;
- this[offset] = value & 255;
- while (++i < byteLength2 && (mul *= 256)) {
- this[offset + i] = value / mul & 255;
- }
- return offset + byteLength2;
- };
- Buffer3.prototype.writeUintBE = Buffer3.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) {
- value = +value;
- offset = offset >>> 0;
- byteLength2 = byteLength2 >>> 0;
- if (!noAssert) {
- const maxBytes = Math.pow(2, 8 * byteLength2) - 1;
- checkInt(this, value, offset, byteLength2, maxBytes, 0);
- }
- let i = byteLength2 - 1;
- let mul = 1;
- this[offset + i] = value & 255;
- while (--i >= 0 && (mul *= 256)) {
- this[offset + i] = value / mul & 255;
- }
- return offset + byteLength2;
- };
- Buffer3.prototype.writeUint8 = Buffer3.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert)
- checkInt(this, value, offset, 1, 255, 0);
- this[offset] = value & 255;
- return offset + 1;
- };
- Buffer3.prototype.writeUint16LE = Buffer3.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert)
- checkInt(this, value, offset, 2, 65535, 0);
- this[offset] = value & 255;
- this[offset + 1] = value >>> 8;
- return offset + 2;
- };
- Buffer3.prototype.writeUint16BE = Buffer3.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert)
- checkInt(this, value, offset, 2, 65535, 0);
- this[offset] = value >>> 8;
- this[offset + 1] = value & 255;
- return offset + 2;
- };
- Buffer3.prototype.writeUint32LE = Buffer3.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert)
- checkInt(this, value, offset, 4, 4294967295, 0);
- this[offset + 3] = value >>> 24;
- this[offset + 2] = value >>> 16;
- this[offset + 1] = value >>> 8;
- this[offset] = value & 255;
- return offset + 4;
- };
- Buffer3.prototype.writeUint32BE = Buffer3.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert)
- checkInt(this, value, offset, 4, 4294967295, 0);
- this[offset] = value >>> 24;
- this[offset + 1] = value >>> 16;
- this[offset + 2] = value >>> 8;
- this[offset + 3] = value & 255;
- return offset + 4;
- };
- function wrtBigUInt64LE(buf, value, offset, min, max) {
- checkIntBI(value, min, max, buf, offset, 7);
- let lo = Number(value & BigInt(4294967295));
- buf[offset++] = lo;
- lo = lo >> 8;
- buf[offset++] = lo;
- lo = lo >> 8;
- buf[offset++] = lo;
- lo = lo >> 8;
- buf[offset++] = lo;
- let hi = Number(value >> BigInt(32) & BigInt(4294967295));
- buf[offset++] = hi;
- hi = hi >> 8;
- buf[offset++] = hi;
- hi = hi >> 8;
- buf[offset++] = hi;
- hi = hi >> 8;
- buf[offset++] = hi;
- return offset;
- }
- function wrtBigUInt64BE(buf, value, offset, min, max) {
- checkIntBI(value, min, max, buf, offset, 7);
- let lo = Number(value & BigInt(4294967295));
- buf[offset + 7] = lo;
- lo = lo >> 8;
- buf[offset + 6] = lo;
- lo = lo >> 8;
- buf[offset + 5] = lo;
- lo = lo >> 8;
- buf[offset + 4] = lo;
- let hi = Number(value >> BigInt(32) & BigInt(4294967295));
- buf[offset + 3] = hi;
- hi = hi >> 8;
- buf[offset + 2] = hi;
- hi = hi >> 8;
- buf[offset + 1] = hi;
- hi = hi >> 8;
- buf[offset] = hi;
- return offset + 8;
- }
- Buffer3.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {
- return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff"));
- });
- Buffer3.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {
- return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff"));
- });
- Buffer3.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert) {
- const limit = Math.pow(2, 8 * byteLength2 - 1);
- checkInt(this, value, offset, byteLength2, limit - 1, -limit);
- }
- let i = 0;
- let mul = 1;
- let sub = 0;
- this[offset] = value & 255;
- while (++i < byteLength2 && (mul *= 256)) {
- if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
- sub = 1;
- }
- this[offset + i] = (value / mul >> 0) - sub & 255;
- }
- return offset + byteLength2;
- };
- Buffer3.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert) {
- const limit = Math.pow(2, 8 * byteLength2 - 1);
- checkInt(this, value, offset, byteLength2, limit - 1, -limit);
- }
- let i = byteLength2 - 1;
- let mul = 1;
- let sub = 0;
- this[offset + i] = value & 255;
- while (--i >= 0 && (mul *= 256)) {
- if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
- sub = 1;
- }
- this[offset + i] = (value / mul >> 0) - sub & 255;
- }
- return offset + byteLength2;
- };
- Buffer3.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert)
- checkInt(this, value, offset, 1, 127, -128);
- if (value < 0)
- value = 255 + value + 1;
- this[offset] = value & 255;
- return offset + 1;
- };
- Buffer3.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert)
- checkInt(this, value, offset, 2, 32767, -32768);
- this[offset] = value & 255;
- this[offset + 1] = value >>> 8;
- return offset + 2;
- };
- Buffer3.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert)
- checkInt(this, value, offset, 2, 32767, -32768);
- this[offset] = value >>> 8;
- this[offset + 1] = value & 255;
- return offset + 2;
- };
- Buffer3.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert)
- checkInt(this, value, offset, 4, 2147483647, -2147483648);
- this[offset] = value & 255;
- this[offset + 1] = value >>> 8;
- this[offset + 2] = value >>> 16;
- this[offset + 3] = value >>> 24;
- return offset + 4;
- };
- Buffer3.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert)
- checkInt(this, value, offset, 4, 2147483647, -2147483648);
- if (value < 0)
- value = 4294967295 + value + 1;
- this[offset] = value >>> 24;
- this[offset + 1] = value >>> 16;
- this[offset + 2] = value >>> 8;
- this[offset + 3] = value & 255;
- return offset + 4;
- };
- Buffer3.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {
- return wrtBigUInt64LE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
- });
- Buffer3.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {
- return wrtBigUInt64BE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
- });
- function checkIEEE754(buf, value, offset, ext, max, min) {
- if (offset + ext > buf.length)
- throw new RangeError("Index out of range");
- if (offset < 0)
- throw new RangeError("Index out of range");
- }
- function writeFloat(buf, value, offset, littleEndian, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert) {
- checkIEEE754(buf, value, offset, 4, 34028234663852886e22, -34028234663852886e22);
- }
- ieee754.write(buf, value, offset, littleEndian, 23, 4);
- return offset + 4;
- }
- Buffer3.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {
- return writeFloat(this, value, offset, true, noAssert);
- };
- Buffer3.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {
- return writeFloat(this, value, offset, false, noAssert);
- };
- function writeDouble(buf, value, offset, littleEndian, noAssert) {
- value = +value;
- offset = offset >>> 0;
- if (!noAssert) {
- checkIEEE754(buf, value, offset, 8, 17976931348623157e292, -17976931348623157e292);
- }
- ieee754.write(buf, value, offset, littleEndian, 52, 8);
- return offset + 8;
- }
- Buffer3.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {
- return writeDouble(this, value, offset, true, noAssert);
- };
- Buffer3.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {
- return writeDouble(this, value, offset, false, noAssert);
- };
- Buffer3.prototype.copy = function copy2(target, targetStart, start, end) {
- if (!Buffer3.isBuffer(target))
- throw new TypeError("argument should be a Buffer");
- if (!start)
- start = 0;
- if (!end && end !== 0)
- end = this.length;
- if (targetStart >= target.length)
- targetStart = target.length;
- if (!targetStart)
- targetStart = 0;
- if (end > 0 && end < start)
- end = start;
- if (end === start)
- return 0;
- if (target.length === 0 || this.length === 0)
- return 0;
- if (targetStart < 0) {
- throw new RangeError("targetStart out of bounds");
- }
- if (start < 0 || start >= this.length)
- throw new RangeError("Index out of range");
- if (end < 0)
- throw new RangeError("sourceEnd out of bounds");
- if (end > this.length)
- end = this.length;
- if (target.length - targetStart < end - start) {
- end = target.length - targetStart + start;
- }
- const len = end - start;
- if (this === target && typeof Uint8Array.prototype.copyWithin === "function") {
- this.copyWithin(targetStart, start, end);
- } else {
- Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);
- }
- return len;
- };
- Buffer3.prototype.fill = function fill(val, start, end, encoding) {
- if (typeof val === "string") {
- if (typeof start === "string") {
- encoding = start;
- start = 0;
- end = this.length;
- } else if (typeof end === "string") {
- encoding = end;
- end = this.length;
- }
- if (encoding !== void 0 && typeof encoding !== "string") {
- throw new TypeError("encoding must be a string");
- }
- if (typeof encoding === "string" && !Buffer3.isEncoding(encoding)) {
- throw new TypeError("Unknown encoding: " + encoding);
- }
- if (val.length === 1) {
- const code = val.charCodeAt(0);
- if (encoding === "utf8" && code < 128 || encoding === "latin1") {
- val = code;
- }
- }
- } else if (typeof val === "number") {
- val = val & 255;
- } else if (typeof val === "boolean") {
- val = Number(val);
- }
- if (start < 0 || this.length < start || this.length < end) {
- throw new RangeError("Out of range index");
- }
- if (end <= start) {
- return this;
- }
- start = start >>> 0;
- end = end === void 0 ? this.length : end >>> 0;
- if (!val)
- val = 0;
- let i;
- if (typeof val === "number") {
- for (i = start; i < end; ++i) {
- this[i] = val;
- }
- } else {
- const bytes = Buffer3.isBuffer(val) ? val : Buffer3.from(val, encoding);
- const len = bytes.length;
- if (len === 0) {
- throw new TypeError('The value "' + val + '" is invalid for argument "value"');
- }
- for (i = 0; i < end - start; ++i) {
- this[i + start] = bytes[i % len];
- }
- }
- return this;
- };
- var errors = {};
- function E(sym, getMessage, Base) {
- errors[sym] = class NodeError extends Base {
- constructor() {
- super();
- Object.defineProperty(this, "message", {
- value: getMessage.apply(this, arguments),
- writable: true,
- configurable: true
- });
- this.name = `${this.name} [${sym}]`;
- this.stack;
- delete this.name;
- }
- get code() {
- return sym;
- }
- set code(value) {
- Object.defineProperty(this, "code", {
- configurable: true,
- enumerable: true,
- value,
- writable: true
- });
- }
- toString() {
- return `${this.name} [${sym}]: ${this.message}`;
- }
- };
- }
- E("ERR_BUFFER_OUT_OF_BOUNDS", function(name) {
- if (name) {
- return `${name} is outside of buffer bounds`;
- }
- return "Attempt to access memory outside buffer bounds";
- }, RangeError);
- E("ERR_INVALID_ARG_TYPE", function(name, actual) {
- return `The "${name}" argument must be of type number. Received type ${typeof actual}`;
- }, TypeError);
- E("ERR_OUT_OF_RANGE", function(str, range, input) {
- let msg = `The value of "${str}" is out of range.`;
- let received = input;
- if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {
- received = addNumericalSeparator(String(input));
- } else if (typeof input === "bigint") {
- received = String(input);
- if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {
- received = addNumericalSeparator(received);
- }
- received += "n";
- }
- msg += ` It must be ${range}. Received ${received}`;
- return msg;
- }, RangeError);
- function addNumericalSeparator(val) {
- let res = "";
- let i = val.length;
- const start = val[0] === "-" ? 1 : 0;
- for (; i >= start + 4; i -= 3) {
- res = `_${val.slice(i - 3, i)}${res}`;
- }
- return `${val.slice(0, i)}${res}`;
- }
- function checkBounds(buf, offset, byteLength2) {
- validateNumber(offset, "offset");
- if (buf[offset] === void 0 || buf[offset + byteLength2] === void 0) {
- boundsError(offset, buf.length - (byteLength2 + 1));
- }
- }
- function checkIntBI(value, min, max, buf, offset, byteLength2) {
- if (value > max || value < min) {
- const n = typeof min === "bigint" ? "n" : "";
- let range;
- if (byteLength2 > 3) {
- if (min === 0 || min === BigInt(0)) {
- range = `>= 0${n} and < 2${n} ** ${(byteLength2 + 1) * 8}${n}`;
- } else {
- range = `>= -(2${n} ** ${(byteLength2 + 1) * 8 - 1}${n}) and < 2 ** ${(byteLength2 + 1) * 8 - 1}${n}`;
- }
- } else {
- range = `>= ${min}${n} and <= ${max}${n}`;
- }
- throw new errors.ERR_OUT_OF_RANGE("value", range, value);
- }
- checkBounds(buf, offset, byteLength2);
- }
- function validateNumber(value, name) {
- if (typeof value !== "number") {
- throw new errors.ERR_INVALID_ARG_TYPE(name, "number", value);
- }
- }
- function boundsError(value, length, type) {
- if (Math.floor(value) !== value) {
- validateNumber(value, type);
- throw new errors.ERR_OUT_OF_RANGE(type || "offset", "an integer", value);
- }
- if (length < 0) {
- throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();
- }
- throw new errors.ERR_OUT_OF_RANGE(type || "offset", `>= ${type ? 1 : 0} and <= ${length}`, value);
- }
- var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;
- function base64clean(str) {
- str = str.split("=")[0];
- str = str.trim().replace(INVALID_BASE64_RE, "");
- if (str.length < 2)
- return "";
- while (str.length % 4 !== 0) {
- str = str + "=";
- }
- return str;
- }
- function utf8ToBytes(string, units) {
- units = units || Infinity;
- let codePoint;
- const length = string.length;
- let leadSurrogate = null;
- const bytes = [];
- for (let i = 0; i < length; ++i) {
- codePoint = string.charCodeAt(i);
- if (codePoint > 55295 && codePoint < 57344) {
- if (!leadSurrogate) {
- if (codePoint > 56319) {
- if ((units -= 3) > -1)
- bytes.push(239, 191, 189);
- continue;
- } else if (i + 1 === length) {
- if ((units -= 3) > -1)
- bytes.push(239, 191, 189);
- continue;
- }
- leadSurrogate = codePoint;
- continue;
- }
- if (codePoint < 56320) {
- if ((units -= 3) > -1)
- bytes.push(239, 191, 189);
- leadSurrogate = codePoint;
- continue;
- }
- codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;
- } else if (leadSurrogate) {
- if ((units -= 3) > -1)
- bytes.push(239, 191, 189);
- }
- leadSurrogate = null;
- if (codePoint < 128) {
- if ((units -= 1) < 0)
- break;
- bytes.push(codePoint);
- } else if (codePoint < 2048) {
- if ((units -= 2) < 0)
- break;
- bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);
- } else if (codePoint < 65536) {
- if ((units -= 3) < 0)
- break;
- bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);
- } else if (codePoint < 1114112) {
- if ((units -= 4) < 0)
- break;
- bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);
- } else {
- throw new Error("Invalid code point");
- }
- }
- return bytes;
- }
- function asciiToBytes(str) {
- const byteArray = [];
- for (let i = 0; i < str.length; ++i) {
- byteArray.push(str.charCodeAt(i) & 255);
- }
- return byteArray;
- }
- function utf16leToBytes(str, units) {
- let c, hi, lo;
- const byteArray = [];
- for (let i = 0; i < str.length; ++i) {
- if ((units -= 2) < 0)
- break;
- c = str.charCodeAt(i);
- hi = c >> 8;
- lo = c % 256;
- byteArray.push(lo);
- byteArray.push(hi);
- }
- return byteArray;
- }
- function base64ToBytes(str) {
- return base64.toByteArray(base64clean(str));
- }
- function blitBuffer(src, dst, offset, length) {
- let i;
- for (i = 0; i < length; ++i) {
- if (i + offset >= dst.length || i >= src.length)
- break;
- dst[i + offset] = src[i];
- }
- return i;
- }
- function isInstance(obj, type) {
- return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;
- }
- function numberIsNaN(obj) {
- return obj !== obj;
- }
- var hexSliceLookupTable = function() {
- const alphabet = "0123456789abcdef";
- const table = new Array(256);
- for (let i = 0; i < 16; ++i) {
- const i16 = i * 16;
- for (let j = 0; j < 16; ++j) {
- table[i16 + j] = alphabet[i] + alphabet[j];
- }
- }
- return table;
- }();
- function defineBigIntMethod(fn) {
- return typeof BigInt === "undefined" ? BufferBigIntNotDefined : fn;
- }
- function BufferBigIntNotDefined() {
- throw new Error("BigInt not supported");
- }
- }
- });
- // polyfill_buffer.js
- var import_obsidian, buffer, Buffer2;
- var init_polyfill_buffer = __esm({
- "polyfill_buffer.js"() {
- import_obsidian = __toModule(require("obsidian"));
- if (import_obsidian.Platform.isMobileApp) {
- buffer = require_buffer().Buffer;
- } else {
- buffer = global.Buffer;
- }
- Buffer2 = buffer;
- }
- });
- // node_modules/async-lock/lib/index.js
- var require_lib = __commonJS({
- "node_modules/async-lock/lib/index.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- var AsyncLock2 = function(opts) {
- opts = opts || {};
- this.Promise = opts.Promise || Promise;
- this.queues = Object.create(null);
- this.domainReentrant = opts.domainReentrant || false;
- if (this.domainReentrant) {
- if (typeof process === "undefined" || typeof process.domain === "undefined") {
- throw new Error("Domain-reentrant locks require `process.domain` to exist. Please flip `opts.domainReentrant = false`, use a NodeJS version that still implements Domain, or install a browser polyfill.");
- }
- this.domains = Object.create(null);
- }
- this.timeout = opts.timeout || AsyncLock2.DEFAULT_TIMEOUT;
- this.maxOccupationTime = opts.maxOccupationTime || AsyncLock2.DEFAULT_MAX_OCCUPATION_TIME;
- this.maxExecutionTime = opts.maxExecutionTime || AsyncLock2.DEFAULT_MAX_EXECUTION_TIME;
- if (opts.maxPending === Infinity || Number.isInteger(opts.maxPending) && opts.maxPending >= 0) {
- this.maxPending = opts.maxPending;
- } else {
- this.maxPending = AsyncLock2.DEFAULT_MAX_PENDING;
- }
- };
- AsyncLock2.DEFAULT_TIMEOUT = 0;
- AsyncLock2.DEFAULT_MAX_OCCUPATION_TIME = 0;
- AsyncLock2.DEFAULT_MAX_EXECUTION_TIME = 0;
- AsyncLock2.DEFAULT_MAX_PENDING = 1e3;
- AsyncLock2.prototype.acquire = function(key2, fn, cb, opts) {
- if (Array.isArray(key2)) {
- return this._acquireBatch(key2, fn, cb, opts);
- }
- if (typeof fn !== "function") {
- throw new Error("You must pass a function to execute");
- }
- var deferredResolve = null;
- var deferredReject = null;
- var deferred2 = null;
- if (typeof cb !== "function") {
- opts = cb;
- cb = null;
- deferred2 = new this.Promise(function(resolve, reject) {
- deferredResolve = resolve;
- deferredReject = reject;
- });
- }
- opts = opts || {};
- var resolved = false;
- var timer = null;
- var occupationTimer = null;
- var executionTimer = null;
- var self3 = this;
- var done = function(locked, err, ret) {
- if (occupationTimer) {
- clearTimeout(occupationTimer);
- occupationTimer = null;
- }
- if (executionTimer) {
- clearTimeout(executionTimer);
- executionTimer = null;
- }
- if (locked) {
- if (!!self3.queues[key2] && self3.queues[key2].length === 0) {
- delete self3.queues[key2];
- }
- if (self3.domainReentrant) {
- delete self3.domains[key2];
- }
- }
- if (!resolved) {
- if (!deferred2) {
- if (typeof cb === "function") {
- cb(err, ret);
- }
- } else {
- if (err) {
- deferredReject(err);
- } else {
- deferredResolve(ret);
- }
- }
- resolved = true;
- }
- if (locked) {
- if (!!self3.queues[key2] && self3.queues[key2].length > 0) {
- self3.queues[key2].shift()();
- }
- }
- };
- var exec = function(locked) {
- if (resolved) {
- return done(locked);
- }
- if (timer) {
- clearTimeout(timer);
- timer = null;
- }
- if (self3.domainReentrant && locked) {
- self3.domains[key2] = process.domain;
- }
- var maxExecutionTime = opts.maxExecutionTime || self3.maxExecutionTime;
- if (maxExecutionTime) {
- executionTimer = setTimeout(function() {
- if (!!self3.queues[key2]) {
- done(locked, new Error("Maximum execution time is exceeded " + key2));
- }
- }, maxExecutionTime);
- }
- if (fn.length === 1) {
- var called = false;
- try {
- fn(function(err, ret) {
- if (!called) {
- called = true;
- done(locked, err, ret);
- }
- });
- } catch (err) {
- if (!called) {
- called = true;
- done(locked, err);
- }
- }
- } else {
- self3._promiseTry(function() {
- return fn();
- }).then(function(ret) {
- done(locked, void 0, ret);
- }, function(error) {
- done(locked, error);
- });
- }
- };
- if (self3.domainReentrant && !!process.domain) {
- exec = process.domain.bind(exec);
- }
- if (!self3.queues[key2]) {
- self3.queues[key2] = [];
- exec(true);
- } else if (self3.domainReentrant && !!process.domain && process.domain === self3.domains[key2]) {
- exec(false);
- } else if (self3.queues[key2].length >= self3.maxPending) {
- done(false, new Error("Too many pending tasks in queue " + key2));
- } else {
- var taskFn = function() {
- exec(true);
- };
- if (opts.skipQueue) {
- self3.queues[key2].unshift(taskFn);
- } else {
- self3.queues[key2].push(taskFn);
- }
- var timeout = opts.timeout || self3.timeout;
- if (timeout) {
- timer = setTimeout(function() {
- timer = null;
- done(false, new Error("async-lock timed out in queue " + key2));
- }, timeout);
- }
- }
- var maxOccupationTime = opts.maxOccupationTime || self3.maxOccupationTime;
- if (maxOccupationTime) {
- occupationTimer = setTimeout(function() {
- if (!!self3.queues[key2]) {
- done(false, new Error("Maximum occupation time is exceeded in queue " + key2));
- }
- }, maxOccupationTime);
- }
- if (deferred2) {
- return deferred2;
- }
- };
- AsyncLock2.prototype._acquireBatch = function(keys, fn, cb, opts) {
- if (typeof cb !== "function") {
- opts = cb;
- cb = null;
- }
- var self3 = this;
- var getFn = function(key2, fn2) {
- return function(cb2) {
- self3.acquire(key2, fn2, cb2, opts);
- };
- };
- var fnx = keys.reduceRight(function(prev, key2) {
- return getFn(key2, prev);
- }, fn);
- if (typeof cb === "function") {
- fnx(cb);
- } else {
- return new this.Promise(function(resolve, reject) {
- if (fnx.length === 1) {
- fnx(function(err, ret) {
- if (err) {
- reject(err);
- } else {
- resolve(ret);
- }
- });
- } else {
- resolve(fnx());
- }
- });
- }
- };
- AsyncLock2.prototype.isBusy = function(key2) {
- if (!key2) {
- return Object.keys(this.queues).length > 0;
- } else {
- return !!this.queues[key2];
- }
- };
- AsyncLock2.prototype._promiseTry = function(fn) {
- try {
- return this.Promise.resolve(fn());
- } catch (e) {
- return this.Promise.reject(e);
- }
- };
- module2.exports = AsyncLock2;
- }
- });
- // node_modules/async-lock/index.js
- var require_async_lock = __commonJS({
- "node_modules/async-lock/index.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- module2.exports = require_lib();
- }
- });
- // node_modules/inherits/inherits_browser.js
- var require_inherits_browser = __commonJS({
- "node_modules/inherits/inherits_browser.js"(exports, module2) {
- init_polyfill_buffer();
- if (typeof Object.create === "function") {
- module2.exports = function inherits(ctor, superCtor) {
- if (superCtor) {
- ctor.super_ = superCtor;
- ctor.prototype = Object.create(superCtor.prototype, {
- constructor: {
- value: ctor,
- enumerable: false,
- writable: true,
- configurable: true
- }
- });
- }
- };
- } else {
- module2.exports = function inherits(ctor, superCtor) {
- if (superCtor) {
- ctor.super_ = superCtor;
- var TempCtor = function() {
- };
- TempCtor.prototype = superCtor.prototype;
- ctor.prototype = new TempCtor();
- ctor.prototype.constructor = ctor;
- }
- };
- }
- }
- });
- // node_modules/safe-buffer/index.js
- var require_safe_buffer = __commonJS({
- "node_modules/safe-buffer/index.js"(exports, module2) {
- init_polyfill_buffer();
- var buffer2 = require_buffer();
- var Buffer3 = buffer2.Buffer;
- function copyProps(src, dst) {
- for (var key2 in src) {
- dst[key2] = src[key2];
- }
- }
- if (Buffer3.from && Buffer3.alloc && Buffer3.allocUnsafe && Buffer3.allocUnsafeSlow) {
- module2.exports = buffer2;
- } else {
- copyProps(buffer2, exports);
- exports.Buffer = SafeBuffer;
- }
- function SafeBuffer(arg, encodingOrOffset, length) {
- return Buffer3(arg, encodingOrOffset, length);
- }
- SafeBuffer.prototype = Object.create(Buffer3.prototype);
- copyProps(Buffer3, SafeBuffer);
- SafeBuffer.from = function(arg, encodingOrOffset, length) {
- if (typeof arg === "number") {
- throw new TypeError("Argument must not be a number");
- }
- return Buffer3(arg, encodingOrOffset, length);
- };
- SafeBuffer.alloc = function(size, fill, encoding) {
- if (typeof size !== "number") {
- throw new TypeError("Argument must be a number");
- }
- var buf = Buffer3(size);
- if (fill !== void 0) {
- if (typeof encoding === "string") {
- buf.fill(fill, encoding);
- } else {
- buf.fill(fill);
- }
- } else {
- buf.fill(0);
- }
- return buf;
- };
- SafeBuffer.allocUnsafe = function(size) {
- if (typeof size !== "number") {
- throw new TypeError("Argument must be a number");
- }
- return Buffer3(size);
- };
- SafeBuffer.allocUnsafeSlow = function(size) {
- if (typeof size !== "number") {
- throw new TypeError("Argument must be a number");
- }
- return buffer2.SlowBuffer(size);
- };
- }
- });
- // node_modules/sha.js/hash.js
- var require_hash = __commonJS({
- "node_modules/sha.js/hash.js"(exports, module2) {
- init_polyfill_buffer();
- var Buffer3 = require_safe_buffer().Buffer;
- function Hash2(blockSize, finalSize) {
- this._block = Buffer3.alloc(blockSize);
- this._finalSize = finalSize;
- this._blockSize = blockSize;
- this._len = 0;
- }
- Hash2.prototype.update = function(data, enc) {
- if (typeof data === "string") {
- enc = enc || "utf8";
- data = Buffer3.from(data, enc);
- }
- var block = this._block;
- var blockSize = this._blockSize;
- var length = data.length;
- var accum = this._len;
- for (var offset = 0; offset < length; ) {
- var assigned = accum % blockSize;
- var remainder = Math.min(length - offset, blockSize - assigned);
- for (var i = 0; i < remainder; i++) {
- block[assigned + i] = data[offset + i];
- }
- accum += remainder;
- offset += remainder;
- if (accum % blockSize === 0) {
- this._update(block);
- }
- }
- this._len += length;
- return this;
- };
- Hash2.prototype.digest = function(enc) {
- var rem = this._len % this._blockSize;
- this._block[rem] = 128;
- this._block.fill(0, rem + 1);
- if (rem >= this._finalSize) {
- this._update(this._block);
- this._block.fill(0);
- }
- var bits = this._len * 8;
- if (bits <= 4294967295) {
- this._block.writeUInt32BE(bits, this._blockSize - 4);
- } else {
- var lowBits = (bits & 4294967295) >>> 0;
- var highBits = (bits - lowBits) / 4294967296;
- this._block.writeUInt32BE(highBits, this._blockSize - 8);
- this._block.writeUInt32BE(lowBits, this._blockSize - 4);
- }
- this._update(this._block);
- var hash2 = this._hash();
- return enc ? hash2.toString(enc) : hash2;
- };
- Hash2.prototype._update = function() {
- throw new Error("_update must be implemented by subclass");
- };
- module2.exports = Hash2;
- }
- });
- // node_modules/sha.js/sha1.js
- var require_sha1 = __commonJS({
- "node_modules/sha.js/sha1.js"(exports, module2) {
- init_polyfill_buffer();
- var inherits = require_inherits_browser();
- var Hash2 = require_hash();
- var Buffer3 = require_safe_buffer().Buffer;
- var K = [
- 1518500249,
- 1859775393,
- 2400959708 | 0,
- 3395469782 | 0
- ];
- var W = new Array(80);
- function Sha1() {
- this.init();
- this._w = W;
- Hash2.call(this, 64, 56);
- }
- inherits(Sha1, Hash2);
- Sha1.prototype.init = function() {
- this._a = 1732584193;
- this._b = 4023233417;
- this._c = 2562383102;
- this._d = 271733878;
- this._e = 3285377520;
- return this;
- };
- function rotl1(num2) {
- return num2 << 1 | num2 >>> 31;
- }
- function rotl5(num2) {
- return num2 << 5 | num2 >>> 27;
- }
- function rotl30(num2) {
- return num2 << 30 | num2 >>> 2;
- }
- function ft(s, b, c, d) {
- if (s === 0)
- return b & c | ~b & d;
- if (s === 2)
- return b & c | b & d | c & d;
- return b ^ c ^ d;
- }
- Sha1.prototype._update = function(M) {
- var W2 = this._w;
- var a = this._a | 0;
- var b = this._b | 0;
- var c = this._c | 0;
- var d = this._d | 0;
- var e = this._e | 0;
- for (var i = 0; i < 16; ++i)
- W2[i] = M.readInt32BE(i * 4);
- for (; i < 80; ++i)
- W2[i] = rotl1(W2[i - 3] ^ W2[i - 8] ^ W2[i - 14] ^ W2[i - 16]);
- for (var j = 0; j < 80; ++j) {
- var s = ~~(j / 20);
- var t = rotl5(a) + ft(s, b, c, d) + e + W2[j] + K[s] | 0;
- e = d;
- d = c;
- c = rotl30(b);
- b = a;
- a = t;
- }
- this._a = a + this._a | 0;
- this._b = b + this._b | 0;
- this._c = c + this._c | 0;
- this._d = d + this._d | 0;
- this._e = e + this._e | 0;
- };
- Sha1.prototype._hash = function() {
- var H = Buffer3.allocUnsafe(20);
- H.writeInt32BE(this._a | 0, 0);
- H.writeInt32BE(this._b | 0, 4);
- H.writeInt32BE(this._c | 0, 8);
- H.writeInt32BE(this._d | 0, 12);
- H.writeInt32BE(this._e | 0, 16);
- return H;
- };
- module2.exports = Sha1;
- }
- });
- // node_modules/crc-32/crc32.js
- var require_crc32 = __commonJS({
- "node_modules/crc-32/crc32.js"(exports) {
- init_polyfill_buffer();
- var CRC32;
- (function(factory) {
- if (typeof DO_NOT_EXPORT_CRC === "undefined") {
- if (typeof exports === "object") {
- factory(exports);
- } else if (typeof define === "function" && define.amd) {
- define(function() {
- var module3 = {};
- factory(module3);
- return module3;
- });
- } else {
- factory(CRC32 = {});
- }
- } else {
- factory(CRC32 = {});
- }
- })(function(CRC322) {
- CRC322.version = "1.2.2";
- function signed_crc_table() {
- var c = 0, table = new Array(256);
- for (var n = 0; n != 256; ++n) {
- c = n;
- c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1;
- c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1;
- c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1;
- c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1;
- c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1;
- c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1;
- c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1;
- c = c & 1 ? -306674912 ^ c >>> 1 : c >>> 1;
- table[n] = c;
- }
- return typeof Int32Array !== "undefined" ? new Int32Array(table) : table;
- }
- var T0 = signed_crc_table();
- function slice_by_16_tables(T) {
- var c = 0, v = 0, n = 0, table = typeof Int32Array !== "undefined" ? new Int32Array(4096) : new Array(4096);
- for (n = 0; n != 256; ++n)
- table[n] = T[n];
- for (n = 0; n != 256; ++n) {
- v = T[n];
- for (c = 256 + n; c < 4096; c += 256)
- v = table[c] = v >>> 8 ^ T[v & 255];
- }
- var out = [];
- for (n = 1; n != 16; ++n)
- out[n - 1] = typeof Int32Array !== "undefined" ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);
- return out;
- }
- var TT = slice_by_16_tables(T0);
- var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];
- var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];
- var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];
- function crc32_bstr(bstr, seed) {
- var C = seed ^ -1;
- for (var i = 0, L = bstr.length; i < L; )
- C = C >>> 8 ^ T0[(C ^ bstr.charCodeAt(i++)) & 255];
- return ~C;
- }
- function crc32_buf(B, seed) {
- var C = seed ^ -1, L = B.length - 15, i = 0;
- for (; i < L; )
- C = Tf[B[i++] ^ C & 255] ^ Te[B[i++] ^ C >> 8 & 255] ^ Td[B[i++] ^ C >> 16 & 255] ^ Tc[B[i++] ^ C >>> 24] ^ Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];
- L += 15;
- while (i < L)
- C = C >>> 8 ^ T0[(C ^ B[i++]) & 255];
- return ~C;
- }
- function crc32_str(str, seed) {
- var C = seed ^ -1;
- for (var i = 0, L = str.length, c = 0, d = 0; i < L; ) {
- c = str.charCodeAt(i++);
- if (c < 128) {
- C = C >>> 8 ^ T0[(C ^ c) & 255];
- } else if (c < 2048) {
- C = C >>> 8 ^ T0[(C ^ (192 | c >> 6 & 31)) & 255];
- C = C >>> 8 ^ T0[(C ^ (128 | c & 63)) & 255];
- } else if (c >= 55296 && c < 57344) {
- c = (c & 1023) + 64;
- d = str.charCodeAt(i++) & 1023;
- C = C >>> 8 ^ T0[(C ^ (240 | c >> 8 & 7)) & 255];
- C = C >>> 8 ^ T0[(C ^ (128 | c >> 2 & 63)) & 255];
- C = C >>> 8 ^ T0[(C ^ (128 | d >> 6 & 15 | (c & 3) << 4)) & 255];
- C = C >>> 8 ^ T0[(C ^ (128 | d & 63)) & 255];
- } else {
- C = C >>> 8 ^ T0[(C ^ (224 | c >> 12 & 15)) & 255];
- C = C >>> 8 ^ T0[(C ^ (128 | c >> 6 & 63)) & 255];
- C = C >>> 8 ^ T0[(C ^ (128 | c & 63)) & 255];
- }
- }
- return ~C;
- }
- CRC322.table = T0;
- CRC322.bstr = crc32_bstr;
- CRC322.buf = crc32_buf;
- CRC322.str = crc32_str;
- });
- }
- });
- // node_modules/pako/lib/utils/common.js
- var require_common = __commonJS({
- "node_modules/pako/lib/utils/common.js"(exports) {
- init_polyfill_buffer();
- "use strict";
- var TYPED_OK = typeof Uint8Array !== "undefined" && typeof Uint16Array !== "undefined" && typeof Int32Array !== "undefined";
- function _has(obj, key2) {
- return Object.prototype.hasOwnProperty.call(obj, key2);
- }
- exports.assign = function(obj) {
- var sources = Array.prototype.slice.call(arguments, 1);
- while (sources.length) {
- var source = sources.shift();
- if (!source) {
- continue;
- }
- if (typeof source !== "object") {
- throw new TypeError(source + "must be non-object");
- }
- for (var p in source) {
- if (_has(source, p)) {
- obj[p] = source[p];
- }
- }
- }
- return obj;
- };
- exports.shrinkBuf = function(buf, size) {
- if (buf.length === size) {
- return buf;
- }
- if (buf.subarray) {
- return buf.subarray(0, size);
- }
- buf.length = size;
- return buf;
- };
- var fnTyped = {
- arraySet: function(dest, src, src_offs, len, dest_offs) {
- if (src.subarray && dest.subarray) {
- dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
- return;
- }
- for (var i = 0; i < len; i++) {
- dest[dest_offs + i] = src[src_offs + i];
- }
- },
- flattenChunks: function(chunks) {
- var i, l, len, pos, chunk, result;
- len = 0;
- for (i = 0, l = chunks.length; i < l; i++) {
- len += chunks[i].length;
- }
- result = new Uint8Array(len);
- pos = 0;
- for (i = 0, l = chunks.length; i < l; i++) {
- chunk = chunks[i];
- result.set(chunk, pos);
- pos += chunk.length;
- }
- return result;
- }
- };
- var fnUntyped = {
- arraySet: function(dest, src, src_offs, len, dest_offs) {
- for (var i = 0; i < len; i++) {
- dest[dest_offs + i] = src[src_offs + i];
- }
- },
- flattenChunks: function(chunks) {
- return [].concat.apply([], chunks);
- }
- };
- exports.setTyped = function(on) {
- if (on) {
- exports.Buf8 = Uint8Array;
- exports.Buf16 = Uint16Array;
- exports.Buf32 = Int32Array;
- exports.assign(exports, fnTyped);
- } else {
- exports.Buf8 = Array;
- exports.Buf16 = Array;
- exports.Buf32 = Array;
- exports.assign(exports, fnUntyped);
- }
- };
- exports.setTyped(TYPED_OK);
- }
- });
- // node_modules/pako/lib/zlib/trees.js
- var require_trees = __commonJS({
- "node_modules/pako/lib/zlib/trees.js"(exports) {
- init_polyfill_buffer();
- "use strict";
- var utils = require_common();
- var Z_FIXED = 4;
- var Z_BINARY = 0;
- var Z_TEXT = 1;
- var Z_UNKNOWN = 2;
- function zero(buf) {
- var len = buf.length;
- while (--len >= 0) {
- buf[len] = 0;
- }
- }
- var STORED_BLOCK = 0;
- var STATIC_TREES = 1;
- var DYN_TREES = 2;
- var MIN_MATCH = 3;
- var MAX_MATCH = 258;
- var LENGTH_CODES = 29;
- var LITERALS = 256;
- var L_CODES = LITERALS + 1 + LENGTH_CODES;
- var D_CODES = 30;
- var BL_CODES = 19;
- var HEAP_SIZE = 2 * L_CODES + 1;
- var MAX_BITS = 15;
- var Buf_size = 16;
- var MAX_BL_BITS = 7;
- var END_BLOCK = 256;
- var REP_3_6 = 16;
- var REPZ_3_10 = 17;
- var REPZ_11_138 = 18;
- var extra_lbits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0];
- var extra_dbits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];
- var extra_blbits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7];
- var bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
- var DIST_CODE_LEN = 512;
- var static_ltree = new Array((L_CODES + 2) * 2);
- zero(static_ltree);
- var static_dtree = new Array(D_CODES * 2);
- zero(static_dtree);
- var _dist_code = new Array(DIST_CODE_LEN);
- zero(_dist_code);
- var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);
- zero(_length_code);
- var base_length = new Array(LENGTH_CODES);
- zero(base_length);
- var base_dist = new Array(D_CODES);
- zero(base_dist);
- function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {
- this.static_tree = static_tree;
- this.extra_bits = extra_bits;
- this.extra_base = extra_base;
- this.elems = elems;
- this.max_length = max_length;
- this.has_stree = static_tree && static_tree.length;
- }
- var static_l_desc;
- var static_d_desc;
- var static_bl_desc;
- function TreeDesc(dyn_tree, stat_desc) {
- this.dyn_tree = dyn_tree;
- this.max_code = 0;
- this.stat_desc = stat_desc;
- }
- function d_code(dist) {
- return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
- }
- function put_short(s, w) {
- s.pending_buf[s.pending++] = w & 255;
- s.pending_buf[s.pending++] = w >>> 8 & 255;
- }
- function send_bits(s, value, length) {
- if (s.bi_valid > Buf_size - length) {
- s.bi_buf |= value << s.bi_valid & 65535;
- put_short(s, s.bi_buf);
- s.bi_buf = value >> Buf_size - s.bi_valid;
- s.bi_valid += length - Buf_size;
- } else {
- s.bi_buf |= value << s.bi_valid & 65535;
- s.bi_valid += length;
- }
- }
- function send_code(s, c, tree) {
- send_bits(s, tree[c * 2], tree[c * 2 + 1]);
- }
- function bi_reverse(code, len) {
- var res = 0;
- do {
- res |= code & 1;
- code >>>= 1;
- res <<= 1;
- } while (--len > 0);
- return res >>> 1;
- }
- function bi_flush(s) {
- if (s.bi_valid === 16) {
- put_short(s, s.bi_buf);
- s.bi_buf = 0;
- s.bi_valid = 0;
- } else if (s.bi_valid >= 8) {
- s.pending_buf[s.pending++] = s.bi_buf & 255;
- s.bi_buf >>= 8;
- s.bi_valid -= 8;
- }
- }
- function gen_bitlen(s, desc) {
- var tree = desc.dyn_tree;
- var max_code = desc.max_code;
- var stree = desc.stat_desc.static_tree;
- var has_stree = desc.stat_desc.has_stree;
- var extra = desc.stat_desc.extra_bits;
- var base = desc.stat_desc.extra_base;
- var max_length = desc.stat_desc.max_length;
- var h;
- var n, m;
- var bits;
- var xbits;
- var f;
- var overflow = 0;
- for (bits = 0; bits <= MAX_BITS; bits++) {
- s.bl_count[bits] = 0;
- }
- tree[s.heap[s.heap_max] * 2 + 1] = 0;
- for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {
- n = s.heap[h];
- bits = tree[tree[n * 2 + 1] * 2 + 1] + 1;
- if (bits > max_length) {
- bits = max_length;
- overflow++;
- }
- tree[n * 2 + 1] = bits;
- if (n > max_code) {
- continue;
- }
- s.bl_count[bits]++;
- xbits = 0;
- if (n >= base) {
- xbits = extra[n - base];
- }
- f = tree[n * 2];
- s.opt_len += f * (bits + xbits);
- if (has_stree) {
- s.static_len += f * (stree[n * 2 + 1] + xbits);
- }
- }
- if (overflow === 0) {
- return;
- }
- do {
- bits = max_length - 1;
- while (s.bl_count[bits] === 0) {
- bits--;
- }
- s.bl_count[bits]--;
- s.bl_count[bits + 1] += 2;
- s.bl_count[max_length]--;
- overflow -= 2;
- } while (overflow > 0);
- for (bits = max_length; bits !== 0; bits--) {
- n = s.bl_count[bits];
- while (n !== 0) {
- m = s.heap[--h];
- if (m > max_code) {
- continue;
- }
- if (tree[m * 2 + 1] !== bits) {
- s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2];
- tree[m * 2 + 1] = bits;
- }
- n--;
- }
- }
- }
- function gen_codes(tree, max_code, bl_count) {
- var next_code = new Array(MAX_BITS + 1);
- var code = 0;
- var bits;
- var n;
- for (bits = 1; bits <= MAX_BITS; bits++) {
- next_code[bits] = code = code + bl_count[bits - 1] << 1;
- }
- for (n = 0; n <= max_code; n++) {
- var len = tree[n * 2 + 1];
- if (len === 0) {
- continue;
- }
- tree[n * 2] = bi_reverse(next_code[len]++, len);
- }
- }
- function tr_static_init() {
- var n;
- var bits;
- var length;
- var code;
- var dist;
- var bl_count = new Array(MAX_BITS + 1);
- length = 0;
- for (code = 0; code < LENGTH_CODES - 1; code++) {
- base_length[code] = length;
- for (n = 0; n < 1 << extra_lbits[code]; n++) {
- _length_code[length++] = code;
- }
- }
- _length_code[length - 1] = code;
- dist = 0;
- for (code = 0; code < 16; code++) {
- base_dist[code] = dist;
- for (n = 0; n < 1 << extra_dbits[code]; n++) {
- _dist_code[dist++] = code;
- }
- }
- dist >>= 7;
- for (; code < D_CODES; code++) {
- base_dist[code] = dist << 7;
- for (n = 0; n < 1 << extra_dbits[code] - 7; n++) {
- _dist_code[256 + dist++] = code;
- }
- }
- for (bits = 0; bits <= MAX_BITS; bits++) {
- bl_count[bits] = 0;
- }
- n = 0;
- while (n <= 143) {
- static_ltree[n * 2 + 1] = 8;
- n++;
- bl_count[8]++;
- }
- while (n <= 255) {
- static_ltree[n * 2 + 1] = 9;
- n++;
- bl_count[9]++;
- }
- while (n <= 279) {
- static_ltree[n * 2 + 1] = 7;
- n++;
- bl_count[7]++;
- }
- while (n <= 287) {
- static_ltree[n * 2 + 1] = 8;
- n++;
- bl_count[8]++;
- }
- gen_codes(static_ltree, L_CODES + 1, bl_count);
- for (n = 0; n < D_CODES; n++) {
- static_dtree[n * 2 + 1] = 5;
- static_dtree[n * 2] = bi_reverse(n, 5);
- }
- static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
- static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);
- static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);
- }
- function init_block(s) {
- var n;
- for (n = 0; n < L_CODES; n++) {
- s.dyn_ltree[n * 2] = 0;
- }
- for (n = 0; n < D_CODES; n++) {
- s.dyn_dtree[n * 2] = 0;
- }
- for (n = 0; n < BL_CODES; n++) {
- s.bl_tree[n * 2] = 0;
- }
- s.dyn_ltree[END_BLOCK * 2] = 1;
- s.opt_len = s.static_len = 0;
- s.last_lit = s.matches = 0;
- }
- function bi_windup(s) {
- if (s.bi_valid > 8) {
- put_short(s, s.bi_buf);
- } else if (s.bi_valid > 0) {
- s.pending_buf[s.pending++] = s.bi_buf;
- }
- s.bi_buf = 0;
- s.bi_valid = 0;
- }
- function copy_block(s, buf, len, header) {
- bi_windup(s);
- if (header) {
- put_short(s, len);
- put_short(s, ~len);
- }
- utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
- s.pending += len;
- }
- function smaller(tree, n, m, depth) {
- var _n2 = n * 2;
- var _m2 = m * 2;
- return tree[_n2] < tree[_m2] || tree[_n2] === tree[_m2] && depth[n] <= depth[m];
- }
- function pqdownheap(s, tree, k) {
- var v = s.heap[k];
- var j = k << 1;
- while (j <= s.heap_len) {
- if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
- j++;
- }
- if (smaller(tree, v, s.heap[j], s.depth)) {
- break;
- }
- s.heap[k] = s.heap[j];
- k = j;
- j <<= 1;
- }
- s.heap[k] = v;
- }
- function compress_block(s, ltree, dtree) {
- var dist;
- var lc;
- var lx = 0;
- var code;
- var extra;
- if (s.last_lit !== 0) {
- do {
- dist = s.pending_buf[s.d_buf + lx * 2] << 8 | s.pending_buf[s.d_buf + lx * 2 + 1];
- lc = s.pending_buf[s.l_buf + lx];
- lx++;
- if (dist === 0) {
- send_code(s, lc, ltree);
- } else {
- code = _length_code[lc];
- send_code(s, code + LITERALS + 1, ltree);
- extra = extra_lbits[code];
- if (extra !== 0) {
- lc -= base_length[code];
- send_bits(s, lc, extra);
- }
- dist--;
- code = d_code(dist);
- send_code(s, code, dtree);
- extra = extra_dbits[code];
- if (extra !== 0) {
- dist -= base_dist[code];
- send_bits(s, dist, extra);
- }
- }
- } while (lx < s.last_lit);
- }
- send_code(s, END_BLOCK, ltree);
- }
- function build_tree(s, desc) {
- var tree = desc.dyn_tree;
- var stree = desc.stat_desc.static_tree;
- var has_stree = desc.stat_desc.has_stree;
- var elems = desc.stat_desc.elems;
- var n, m;
- var max_code = -1;
- var node;
- s.heap_len = 0;
- s.heap_max = HEAP_SIZE;
- for (n = 0; n < elems; n++) {
- if (tree[n * 2] !== 0) {
- s.heap[++s.heap_len] = max_code = n;
- s.depth[n] = 0;
- } else {
- tree[n * 2 + 1] = 0;
- }
- }
- while (s.heap_len < 2) {
- node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0;
- tree[node * 2] = 1;
- s.depth[node] = 0;
- s.opt_len--;
- if (has_stree) {
- s.static_len -= stree[node * 2 + 1];
- }
- }
- desc.max_code = max_code;
- for (n = s.heap_len >> 1; n >= 1; n--) {
- pqdownheap(s, tree, n);
- }
- node = elems;
- do {
- n = s.heap[1];
- s.heap[1] = s.heap[s.heap_len--];
- pqdownheap(s, tree, 1);
- m = s.heap[1];
- s.heap[--s.heap_max] = n;
- s.heap[--s.heap_max] = m;
- tree[node * 2] = tree[n * 2] + tree[m * 2];
- s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
- tree[n * 2 + 1] = tree[m * 2 + 1] = node;
- s.heap[1] = node++;
- pqdownheap(s, tree, 1);
- } while (s.heap_len >= 2);
- s.heap[--s.heap_max] = s.heap[1];
- gen_bitlen(s, desc);
- gen_codes(tree, max_code, s.bl_count);
- }
- function scan_tree(s, tree, max_code) {
- var n;
- var prevlen = -1;
- var curlen;
- var nextlen = tree[0 * 2 + 1];
- var count = 0;
- var max_count = 7;
- var min_count = 4;
- if (nextlen === 0) {
- max_count = 138;
- min_count = 3;
- }
- tree[(max_code + 1) * 2 + 1] = 65535;
- for (n = 0; n <= max_code; n++) {
- curlen = nextlen;
- nextlen = tree[(n + 1) * 2 + 1];
- if (++count < max_count && curlen === nextlen) {
- continue;
- } else if (count < min_count) {
- s.bl_tree[curlen * 2] += count;
- } else if (curlen !== 0) {
- if (curlen !== prevlen) {
- s.bl_tree[curlen * 2]++;
- }
- s.bl_tree[REP_3_6 * 2]++;
- } else if (count <= 10) {
- s.bl_tree[REPZ_3_10 * 2]++;
- } else {
- s.bl_tree[REPZ_11_138 * 2]++;
- }
- count = 0;
- prevlen = curlen;
- if (nextlen === 0) {
- max_count = 138;
- min_count = 3;
- } else if (curlen === nextlen) {
- max_count = 6;
- min_count = 3;
- } else {
- max_count = 7;
- min_count = 4;
- }
- }
- }
- function send_tree(s, tree, max_code) {
- var n;
- var prevlen = -1;
- var curlen;
- var nextlen = tree[0 * 2 + 1];
- var count = 0;
- var max_count = 7;
- var min_count = 4;
- if (nextlen === 0) {
- max_count = 138;
- min_count = 3;
- }
- for (n = 0; n <= max_code; n++) {
- curlen = nextlen;
- nextlen = tree[(n + 1) * 2 + 1];
- if (++count < max_count && curlen === nextlen) {
- continue;
- } else if (count < min_count) {
- do {
- send_code(s, curlen, s.bl_tree);
- } while (--count !== 0);
- } else if (curlen !== 0) {
- if (curlen !== prevlen) {
- send_code(s, curlen, s.bl_tree);
- count--;
- }
- send_code(s, REP_3_6, s.bl_tree);
- send_bits(s, count - 3, 2);
- } else if (count <= 10) {
- send_code(s, REPZ_3_10, s.bl_tree);
- send_bits(s, count - 3, 3);
- } else {
- send_code(s, REPZ_11_138, s.bl_tree);
- send_bits(s, count - 11, 7);
- }
- count = 0;
- prevlen = curlen;
- if (nextlen === 0) {
- max_count = 138;
- min_count = 3;
- } else if (curlen === nextlen) {
- max_count = 6;
- min_count = 3;
- } else {
- max_count = 7;
- min_count = 4;
- }
- }
- }
- function build_bl_tree(s) {
- var max_blindex;
- scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
- scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
- build_tree(s, s.bl_desc);
- for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {
- if (s.bl_tree[bl_order[max_blindex] * 2 + 1] !== 0) {
- break;
- }
- }
- s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
- return max_blindex;
- }
- function send_all_trees(s, lcodes, dcodes, blcodes) {
- var rank;
- send_bits(s, lcodes - 257, 5);
- send_bits(s, dcodes - 1, 5);
- send_bits(s, blcodes - 4, 4);
- for (rank = 0; rank < blcodes; rank++) {
- send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1], 3);
- }
- send_tree(s, s.dyn_ltree, lcodes - 1);
- send_tree(s, s.dyn_dtree, dcodes - 1);
- }
- function detect_data_type(s) {
- var black_mask = 4093624447;
- var n;
- for (n = 0; n <= 31; n++, black_mask >>>= 1) {
- if (black_mask & 1 && s.dyn_ltree[n * 2] !== 0) {
- return Z_BINARY;
- }
- }
- if (s.dyn_ltree[9 * 2] !== 0 || s.dyn_ltree[10 * 2] !== 0 || s.dyn_ltree[13 * 2] !== 0) {
- return Z_TEXT;
- }
- for (n = 32; n < LITERALS; n++) {
- if (s.dyn_ltree[n * 2] !== 0) {
- return Z_TEXT;
- }
- }
- return Z_BINARY;
- }
- var static_init_done = false;
- function _tr_init(s) {
- if (!static_init_done) {
- tr_static_init();
- static_init_done = true;
- }
- s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);
- s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);
- s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
- s.bi_buf = 0;
- s.bi_valid = 0;
- init_block(s);
- }
- function _tr_stored_block(s, buf, stored_len, last2) {
- send_bits(s, (STORED_BLOCK << 1) + (last2 ? 1 : 0), 3);
- copy_block(s, buf, stored_len, true);
- }
- function _tr_align(s) {
- send_bits(s, STATIC_TREES << 1, 3);
- send_code(s, END_BLOCK, static_ltree);
- bi_flush(s);
- }
- function _tr_flush_block(s, buf, stored_len, last2) {
- var opt_lenb, static_lenb;
- var max_blindex = 0;
- if (s.level > 0) {
- if (s.strm.data_type === Z_UNKNOWN) {
- s.strm.data_type = detect_data_type(s);
- }
- build_tree(s, s.l_desc);
- build_tree(s, s.d_desc);
- max_blindex = build_bl_tree(s);
- opt_lenb = s.opt_len + 3 + 7 >>> 3;
- static_lenb = s.static_len + 3 + 7 >>> 3;
- if (static_lenb <= opt_lenb) {
- opt_lenb = static_lenb;
- }
- } else {
- opt_lenb = static_lenb = stored_len + 5;
- }
- if (stored_len + 4 <= opt_lenb && buf !== -1) {
- _tr_stored_block(s, buf, stored_len, last2);
- } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {
- send_bits(s, (STATIC_TREES << 1) + (last2 ? 1 : 0), 3);
- compress_block(s, static_ltree, static_dtree);
- } else {
- send_bits(s, (DYN_TREES << 1) + (last2 ? 1 : 0), 3);
- send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
- compress_block(s, s.dyn_ltree, s.dyn_dtree);
- }
- init_block(s);
- if (last2) {
- bi_windup(s);
- }
- }
- function _tr_tally(s, dist, lc) {
- s.pending_buf[s.d_buf + s.last_lit * 2] = dist >>> 8 & 255;
- s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 255;
- s.pending_buf[s.l_buf + s.last_lit] = lc & 255;
- s.last_lit++;
- if (dist === 0) {
- s.dyn_ltree[lc * 2]++;
- } else {
- s.matches++;
- dist--;
- s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]++;
- s.dyn_dtree[d_code(dist) * 2]++;
- }
- return s.last_lit === s.lit_bufsize - 1;
- }
- exports._tr_init = _tr_init;
- exports._tr_stored_block = _tr_stored_block;
- exports._tr_flush_block = _tr_flush_block;
- exports._tr_tally = _tr_tally;
- exports._tr_align = _tr_align;
- }
- });
- // node_modules/pako/lib/zlib/adler32.js
- var require_adler32 = __commonJS({
- "node_modules/pako/lib/zlib/adler32.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- function adler32(adler, buf, len, pos) {
- var s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n = 0;
- while (len !== 0) {
- n = len > 2e3 ? 2e3 : len;
- len -= n;
- do {
- s1 = s1 + buf[pos++] | 0;
- s2 = s2 + s1 | 0;
- } while (--n);
- s1 %= 65521;
- s2 %= 65521;
- }
- return s1 | s2 << 16 | 0;
- }
- module2.exports = adler32;
- }
- });
- // node_modules/pako/lib/zlib/crc32.js
- var require_crc322 = __commonJS({
- "node_modules/pako/lib/zlib/crc32.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- function makeTable() {
- var c, table = [];
- for (var n = 0; n < 256; n++) {
- c = n;
- for (var k = 0; k < 8; k++) {
- c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1;
- }
- table[n] = c;
- }
- return table;
- }
- var crcTable = makeTable();
- function crc322(crc, buf, len, pos) {
- var t = crcTable, end = pos + len;
- crc ^= -1;
- for (var i = pos; i < end; i++) {
- crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 255];
- }
- return crc ^ -1;
- }
- module2.exports = crc322;
- }
- });
- // node_modules/pako/lib/zlib/messages.js
- var require_messages = __commonJS({
- "node_modules/pako/lib/zlib/messages.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- module2.exports = {
- 2: "need dictionary",
- 1: "stream end",
- 0: "",
- "-1": "file error",
- "-2": "stream error",
- "-3": "data error",
- "-4": "insufficient memory",
- "-5": "buffer error",
- "-6": "incompatible version"
- };
- }
- });
- // node_modules/pako/lib/zlib/deflate.js
- var require_deflate = __commonJS({
- "node_modules/pako/lib/zlib/deflate.js"(exports) {
- init_polyfill_buffer();
- "use strict";
- var utils = require_common();
- var trees = require_trees();
- var adler32 = require_adler32();
- var crc322 = require_crc322();
- var msg = require_messages();
- var Z_NO_FLUSH = 0;
- var Z_PARTIAL_FLUSH = 1;
- var Z_FULL_FLUSH = 3;
- var Z_FINISH = 4;
- var Z_BLOCK = 5;
- var Z_OK = 0;
- var Z_STREAM_END = 1;
- var Z_STREAM_ERROR = -2;
- var Z_DATA_ERROR = -3;
- var Z_BUF_ERROR = -5;
- var Z_DEFAULT_COMPRESSION = -1;
- var Z_FILTERED = 1;
- var Z_HUFFMAN_ONLY = 2;
- var Z_RLE = 3;
- var Z_FIXED = 4;
- var Z_DEFAULT_STRATEGY = 0;
- var Z_UNKNOWN = 2;
- var Z_DEFLATED = 8;
- var MAX_MEM_LEVEL = 9;
- var MAX_WBITS = 15;
- var DEF_MEM_LEVEL = 8;
- var LENGTH_CODES = 29;
- var LITERALS = 256;
- var L_CODES = LITERALS + 1 + LENGTH_CODES;
- var D_CODES = 30;
- var BL_CODES = 19;
- var HEAP_SIZE = 2 * L_CODES + 1;
- var MAX_BITS = 15;
- var MIN_MATCH = 3;
- var MAX_MATCH = 258;
- var MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1;
- var PRESET_DICT = 32;
- var INIT_STATE = 42;
- var EXTRA_STATE = 69;
- var NAME_STATE = 73;
- var COMMENT_STATE = 91;
- var HCRC_STATE = 103;
- var BUSY_STATE = 113;
- var FINISH_STATE = 666;
- var BS_NEED_MORE = 1;
- var BS_BLOCK_DONE = 2;
- var BS_FINISH_STARTED = 3;
- var BS_FINISH_DONE = 4;
- var OS_CODE = 3;
- function err(strm, errorCode) {
- strm.msg = msg[errorCode];
- return errorCode;
- }
- function rank(f) {
- return (f << 1) - (f > 4 ? 9 : 0);
- }
- function zero(buf) {
- var len = buf.length;
- while (--len >= 0) {
- buf[len] = 0;
- }
- }
- function flush_pending(strm) {
- var s = strm.state;
- var len = s.pending;
- if (len > strm.avail_out) {
- len = strm.avail_out;
- }
- if (len === 0) {
- return;
- }
- utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
- strm.next_out += len;
- s.pending_out += len;
- strm.total_out += len;
- strm.avail_out -= len;
- s.pending -= len;
- if (s.pending === 0) {
- s.pending_out = 0;
- }
- }
- function flush_block_only(s, last2) {
- trees._tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last2);
- s.block_start = s.strstart;
- flush_pending(s.strm);
- }
- function put_byte(s, b) {
- s.pending_buf[s.pending++] = b;
- }
- function putShortMSB(s, b) {
- s.pending_buf[s.pending++] = b >>> 8 & 255;
- s.pending_buf[s.pending++] = b & 255;
- }
- function read_buf(strm, buf, start, size) {
- var len = strm.avail_in;
- if (len > size) {
- len = size;
- }
- if (len === 0) {
- return 0;
- }
- strm.avail_in -= len;
- utils.arraySet(buf, strm.input, strm.next_in, len, start);
- if (strm.state.wrap === 1) {
- strm.adler = adler32(strm.adler, buf, len, start);
- } else if (strm.state.wrap === 2) {
- strm.adler = crc322(strm.adler, buf, len, start);
- }
- strm.next_in += len;
- strm.total_in += len;
- return len;
- }
- function longest_match(s, cur_match) {
- var chain_length = s.max_chain_length;
- var scan = s.strstart;
- var match;
- var len;
- var best_len = s.prev_length;
- var nice_match = s.nice_match;
- var limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0;
- var _win = s.window;
- var wmask = s.w_mask;
- var prev = s.prev;
- var strend = s.strstart + MAX_MATCH;
- var scan_end1 = _win[scan + best_len - 1];
- var scan_end = _win[scan + best_len];
- if (s.prev_length >= s.good_match) {
- chain_length >>= 2;
- }
- if (nice_match > s.lookahead) {
- nice_match = s.lookahead;
- }
- do {
- match = cur_match;
- if (_win[match + best_len] !== scan_end || _win[match + best_len - 1] !== scan_end1 || _win[match] !== _win[scan] || _win[++match] !== _win[scan + 1]) {
- continue;
- }
- scan += 2;
- match++;
- do {
- } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && scan < strend);
- len = MAX_MATCH - (strend - scan);
- scan = strend - MAX_MATCH;
- if (len > best_len) {
- s.match_start = cur_match;
- best_len = len;
- if (len >= nice_match) {
- break;
- }
- scan_end1 = _win[scan + best_len - 1];
- scan_end = _win[scan + best_len];
- }
- } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
- if (best_len <= s.lookahead) {
- return best_len;
- }
- return s.lookahead;
- }
- function fill_window(s) {
- var _w_size = s.w_size;
- var p, n, m, more, str;
- do {
- more = s.window_size - s.lookahead - s.strstart;
- if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
- utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
- s.match_start -= _w_size;
- s.strstart -= _w_size;
- s.block_start -= _w_size;
- n = s.hash_size;
- p = n;
- do {
- m = s.head[--p];
- s.head[p] = m >= _w_size ? m - _w_size : 0;
- } while (--n);
- n = _w_size;
- p = n;
- do {
- m = s.prev[--p];
- s.prev[p] = m >= _w_size ? m - _w_size : 0;
- } while (--n);
- more += _w_size;
- }
- if (s.strm.avail_in === 0) {
- break;
- }
- n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
- s.lookahead += n;
- if (s.lookahead + s.insert >= MIN_MATCH) {
- str = s.strstart - s.insert;
- s.ins_h = s.window[str];
- s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + 1]) & s.hash_mask;
- while (s.insert) {
- s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
- s.prev[str & s.w_mask] = s.head[s.ins_h];
- s.head[s.ins_h] = str;
- str++;
- s.insert--;
- if (s.lookahead + s.insert < MIN_MATCH) {
- break;
- }
- }
- }
- } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
- }
- function deflate_stored(s, flush2) {
- var max_block_size = 65535;
- if (max_block_size > s.pending_buf_size - 5) {
- max_block_size = s.pending_buf_size - 5;
- }
- for (; ; ) {
- if (s.lookahead <= 1) {
- fill_window(s);
- if (s.lookahead === 0 && flush2 === Z_NO_FLUSH) {
- return BS_NEED_MORE;
- }
- if (s.lookahead === 0) {
- break;
- }
- }
- s.strstart += s.lookahead;
- s.lookahead = 0;
- var max_start = s.block_start + max_block_size;
- if (s.strstart === 0 || s.strstart >= max_start) {
- s.lookahead = s.strstart - max_start;
- s.strstart = max_start;
- flush_block_only(s, false);
- if (s.strm.avail_out === 0) {
- return BS_NEED_MORE;
- }
- }
- if (s.strstart - s.block_start >= s.w_size - MIN_LOOKAHEAD) {
- flush_block_only(s, false);
- if (s.strm.avail_out === 0) {
- return BS_NEED_MORE;
- }
- }
- }
- s.insert = 0;
- if (flush2 === Z_FINISH) {
- flush_block_only(s, true);
- if (s.strm.avail_out === 0) {
- return BS_FINISH_STARTED;
- }
- return BS_FINISH_DONE;
- }
- if (s.strstart > s.block_start) {
- flush_block_only(s, false);
- if (s.strm.avail_out === 0) {
- return BS_NEED_MORE;
- }
- }
- return BS_NEED_MORE;
- }
- function deflate_fast(s, flush2) {
- var hash_head;
- var bflush;
- for (; ; ) {
- if (s.lookahead < MIN_LOOKAHEAD) {
- fill_window(s);
- if (s.lookahead < MIN_LOOKAHEAD && flush2 === Z_NO_FLUSH) {
- return BS_NEED_MORE;
- }
- if (s.lookahead === 0) {
- break;
- }
- }
- hash_head = 0;
- if (s.lookahead >= MIN_MATCH) {
- s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
- hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
- s.head[s.ins_h] = s.strstart;
- }
- if (hash_head !== 0 && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) {
- s.match_length = longest_match(s, hash_head);
- }
- if (s.match_length >= MIN_MATCH) {
- bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
- s.lookahead -= s.match_length;
- if (s.match_length <= s.max_lazy_match && s.lookahead >= MIN_MATCH) {
- s.match_length--;
- do {
- s.strstart++;
- s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
- hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
- s.head[s.ins_h] = s.strstart;
- } while (--s.match_length !== 0);
- s.strstart++;
- } else {
- s.strstart += s.match_length;
- s.match_length = 0;
- s.ins_h = s.window[s.strstart];
- s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + 1]) & s.hash_mask;
- }
- } else {
- bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
- s.lookahead--;
- s.strstart++;
- }
- if (bflush) {
- flush_block_only(s, false);
- if (s.strm.avail_out === 0) {
- return BS_NEED_MORE;
- }
- }
- }
- s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
- if (flush2 === Z_FINISH) {
- flush_block_only(s, true);
- if (s.strm.avail_out === 0) {
- return BS_FINISH_STARTED;
- }
- return BS_FINISH_DONE;
- }
- if (s.last_lit) {
- flush_block_only(s, false);
- if (s.strm.avail_out === 0) {
- return BS_NEED_MORE;
- }
- }
- return BS_BLOCK_DONE;
- }
- function deflate_slow(s, flush2) {
- var hash_head;
- var bflush;
- var max_insert;
- for (; ; ) {
- if (s.lookahead < MIN_LOOKAHEAD) {
- fill_window(s);
- if (s.lookahead < MIN_LOOKAHEAD && flush2 === Z_NO_FLUSH) {
- return BS_NEED_MORE;
- }
- if (s.lookahead === 0) {
- break;
- }
- }
- hash_head = 0;
- if (s.lookahead >= MIN_MATCH) {
- s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
- hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
- s.head[s.ins_h] = s.strstart;
- }
- s.prev_length = s.match_length;
- s.prev_match = s.match_start;
- s.match_length = MIN_MATCH - 1;
- if (hash_head !== 0 && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) {
- s.match_length = longest_match(s, hash_head);
- if (s.match_length <= 5 && (s.strategy === Z_FILTERED || s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096)) {
- s.match_length = MIN_MATCH - 1;
- }
- }
- if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
- max_insert = s.strstart + s.lookahead - MIN_MATCH;
- bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
- s.lookahead -= s.prev_length - 1;
- s.prev_length -= 2;
- do {
- if (++s.strstart <= max_insert) {
- s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
- hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
- s.head[s.ins_h] = s.strstart;
- }
- } while (--s.prev_length !== 0);
- s.match_available = 0;
- s.match_length = MIN_MATCH - 1;
- s.strstart++;
- if (bflush) {
- flush_block_only(s, false);
- if (s.strm.avail_out === 0) {
- return BS_NEED_MORE;
- }
- }
- } else if (s.match_available) {
- bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
- if (bflush) {
- flush_block_only(s, false);
- }
- s.strstart++;
- s.lookahead--;
- if (s.strm.avail_out === 0) {
- return BS_NEED_MORE;
- }
- } else {
- s.match_available = 1;
- s.strstart++;
- s.lookahead--;
- }
- }
- if (s.match_available) {
- bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);
- s.match_available = 0;
- }
- s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
- if (flush2 === Z_FINISH) {
- flush_block_only(s, true);
- if (s.strm.avail_out === 0) {
- return BS_FINISH_STARTED;
- }
- return BS_FINISH_DONE;
- }
- if (s.last_lit) {
- flush_block_only(s, false);
- if (s.strm.avail_out === 0) {
- return BS_NEED_MORE;
- }
- }
- return BS_BLOCK_DONE;
- }
- function deflate_rle(s, flush2) {
- var bflush;
- var prev;
- var scan, strend;
- var _win = s.window;
- for (; ; ) {
- if (s.lookahead <= MAX_MATCH) {
- fill_window(s);
- if (s.lookahead <= MAX_MATCH && flush2 === Z_NO_FLUSH) {
- return BS_NEED_MORE;
- }
- if (s.lookahead === 0) {
- break;
- }
- }
- s.match_length = 0;
- if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
- scan = s.strstart - 1;
- prev = _win[scan];
- if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
- strend = s.strstart + MAX_MATCH;
- do {
- } while (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && scan < strend);
- s.match_length = MAX_MATCH - (strend - scan);
- if (s.match_length > s.lookahead) {
- s.match_length = s.lookahead;
- }
- }
- }
- if (s.match_length >= MIN_MATCH) {
- bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);
- s.lookahead -= s.match_length;
- s.strstart += s.match_length;
- s.match_length = 0;
- } else {
- bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
- s.lookahead--;
- s.strstart++;
- }
- if (bflush) {
- flush_block_only(s, false);
- if (s.strm.avail_out === 0) {
- return BS_NEED_MORE;
- }
- }
- }
- s.insert = 0;
- if (flush2 === Z_FINISH) {
- flush_block_only(s, true);
- if (s.strm.avail_out === 0) {
- return BS_FINISH_STARTED;
- }
- return BS_FINISH_DONE;
- }
- if (s.last_lit) {
- flush_block_only(s, false);
- if (s.strm.avail_out === 0) {
- return BS_NEED_MORE;
- }
- }
- return BS_BLOCK_DONE;
- }
- function deflate_huff(s, flush2) {
- var bflush;
- for (; ; ) {
- if (s.lookahead === 0) {
- fill_window(s);
- if (s.lookahead === 0) {
- if (flush2 === Z_NO_FLUSH) {
- return BS_NEED_MORE;
- }
- break;
- }
- }
- s.match_length = 0;
- bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
- s.lookahead--;
- s.strstart++;
- if (bflush) {
- flush_block_only(s, false);
- if (s.strm.avail_out === 0) {
- return BS_NEED_MORE;
- }
- }
- }
- s.insert = 0;
- if (flush2 === Z_FINISH) {
- flush_block_only(s, true);
- if (s.strm.avail_out === 0) {
- return BS_FINISH_STARTED;
- }
- return BS_FINISH_DONE;
- }
- if (s.last_lit) {
- flush_block_only(s, false);
- if (s.strm.avail_out === 0) {
- return BS_NEED_MORE;
- }
- }
- return BS_BLOCK_DONE;
- }
- function Config(good_length, max_lazy, nice_length, max_chain, func) {
- this.good_length = good_length;
- this.max_lazy = max_lazy;
- this.nice_length = nice_length;
- this.max_chain = max_chain;
- this.func = func;
- }
- var configuration_table;
- configuration_table = [
- new Config(0, 0, 0, 0, deflate_stored),
- new Config(4, 4, 8, 4, deflate_fast),
- new Config(4, 5, 16, 8, deflate_fast),
- new Config(4, 6, 32, 32, deflate_fast),
- new Config(4, 4, 16, 16, deflate_slow),
- new Config(8, 16, 32, 32, deflate_slow),
- new Config(8, 16, 128, 128, deflate_slow),
- new Config(8, 32, 128, 256, deflate_slow),
- new Config(32, 128, 258, 1024, deflate_slow),
- new Config(32, 258, 258, 4096, deflate_slow)
- ];
- function lm_init(s) {
- s.window_size = 2 * s.w_size;
- zero(s.head);
- s.max_lazy_match = configuration_table[s.level].max_lazy;
- s.good_match = configuration_table[s.level].good_length;
- s.nice_match = configuration_table[s.level].nice_length;
- s.max_chain_length = configuration_table[s.level].max_chain;
- s.strstart = 0;
- s.block_start = 0;
- s.lookahead = 0;
- s.insert = 0;
- s.match_length = s.prev_length = MIN_MATCH - 1;
- s.match_available = 0;
- s.ins_h = 0;
- }
- function DeflateState() {
- this.strm = null;
- this.status = 0;
- this.pending_buf = null;
- this.pending_buf_size = 0;
- this.pending_out = 0;
- this.pending = 0;
- this.wrap = 0;
- this.gzhead = null;
- this.gzindex = 0;
- this.method = Z_DEFLATED;
- this.last_flush = -1;
- this.w_size = 0;
- this.w_bits = 0;
- this.w_mask = 0;
- this.window = null;
- this.window_size = 0;
- this.prev = null;
- this.head = null;
- this.ins_h = 0;
- this.hash_size = 0;
- this.hash_bits = 0;
- this.hash_mask = 0;
- this.hash_shift = 0;
- this.block_start = 0;
- this.match_length = 0;
- this.prev_match = 0;
- this.match_available = 0;
- this.strstart = 0;
- this.match_start = 0;
- this.lookahead = 0;
- this.prev_length = 0;
- this.max_chain_length = 0;
- this.max_lazy_match = 0;
- this.level = 0;
- this.strategy = 0;
- this.good_match = 0;
- this.nice_match = 0;
- this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);
- this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);
- this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);
- zero(this.dyn_ltree);
- zero(this.dyn_dtree);
- zero(this.bl_tree);
- this.l_desc = null;
- this.d_desc = null;
- this.bl_desc = null;
- this.bl_count = new utils.Buf16(MAX_BITS + 1);
- this.heap = new utils.Buf16(2 * L_CODES + 1);
- zero(this.heap);
- this.heap_len = 0;
- this.heap_max = 0;
- this.depth = new utils.Buf16(2 * L_CODES + 1);
- zero(this.depth);
- this.l_buf = 0;
- this.lit_bufsize = 0;
- this.last_lit = 0;
- this.d_buf = 0;
- this.opt_len = 0;
- this.static_len = 0;
- this.matches = 0;
- this.insert = 0;
- this.bi_buf = 0;
- this.bi_valid = 0;
- }
- function deflateResetKeep(strm) {
- var s;
- if (!strm || !strm.state) {
- return err(strm, Z_STREAM_ERROR);
- }
- strm.total_in = strm.total_out = 0;
- strm.data_type = Z_UNKNOWN;
- s = strm.state;
- s.pending = 0;
- s.pending_out = 0;
- if (s.wrap < 0) {
- s.wrap = -s.wrap;
- }
- s.status = s.wrap ? INIT_STATE : BUSY_STATE;
- strm.adler = s.wrap === 2 ? 0 : 1;
- s.last_flush = Z_NO_FLUSH;
- trees._tr_init(s);
- return Z_OK;
- }
- function deflateReset(strm) {
- var ret = deflateResetKeep(strm);
- if (ret === Z_OK) {
- lm_init(strm.state);
- }
- return ret;
- }
- function deflateSetHeader(strm, head) {
- if (!strm || !strm.state) {
- return Z_STREAM_ERROR;
- }
- if (strm.state.wrap !== 2) {
- return Z_STREAM_ERROR;
- }
- strm.state.gzhead = head;
- return Z_OK;
- }
- function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
- if (!strm) {
- return Z_STREAM_ERROR;
- }
- var wrap = 1;
- if (level === Z_DEFAULT_COMPRESSION) {
- level = 6;
- }
- if (windowBits < 0) {
- wrap = 0;
- windowBits = -windowBits;
- } else if (windowBits > 15) {
- wrap = 2;
- windowBits -= 16;
- }
- if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) {
- return err(strm, Z_STREAM_ERROR);
- }
- if (windowBits === 8) {
- windowBits = 9;
- }
- var s = new DeflateState();
- strm.state = s;
- s.strm = strm;
- s.wrap = wrap;
- s.gzhead = null;
- s.w_bits = windowBits;
- s.w_size = 1 << s.w_bits;
- s.w_mask = s.w_size - 1;
- s.hash_bits = memLevel + 7;
- s.hash_size = 1 << s.hash_bits;
- s.hash_mask = s.hash_size - 1;
- s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
- s.window = new utils.Buf8(s.w_size * 2);
- s.head = new utils.Buf16(s.hash_size);
- s.prev = new utils.Buf16(s.w_size);
- s.lit_bufsize = 1 << memLevel + 6;
- s.pending_buf_size = s.lit_bufsize * 4;
- s.pending_buf = new utils.Buf8(s.pending_buf_size);
- s.d_buf = 1 * s.lit_bufsize;
- s.l_buf = (1 + 2) * s.lit_bufsize;
- s.level = level;
- s.strategy = strategy;
- s.method = method;
- return deflateReset(strm);
- }
- function deflateInit(strm, level) {
- return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
- }
- function deflate2(strm, flush2) {
- var old_flush, s;
- var beg, val;
- if (!strm || !strm.state || flush2 > Z_BLOCK || flush2 < 0) {
- return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
- }
- s = strm.state;
- if (!strm.output || !strm.input && strm.avail_in !== 0 || s.status === FINISH_STATE && flush2 !== Z_FINISH) {
- return err(strm, strm.avail_out === 0 ? Z_BUF_ERROR : Z_STREAM_ERROR);
- }
- s.strm = strm;
- old_flush = s.last_flush;
- s.last_flush = flush2;
- if (s.status === INIT_STATE) {
- if (s.wrap === 2) {
- strm.adler = 0;
- put_byte(s, 31);
- put_byte(s, 139);
- put_byte(s, 8);
- if (!s.gzhead) {
- put_byte(s, 0);
- put_byte(s, 0);
- put_byte(s, 0);
- put_byte(s, 0);
- put_byte(s, 0);
- put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);
- put_byte(s, OS_CODE);
- s.status = BUSY_STATE;
- } else {
- put_byte(s, (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16));
- put_byte(s, s.gzhead.time & 255);
- put_byte(s, s.gzhead.time >> 8 & 255);
- put_byte(s, s.gzhead.time >> 16 & 255);
- put_byte(s, s.gzhead.time >> 24 & 255);
- put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);
- put_byte(s, s.gzhead.os & 255);
- if (s.gzhead.extra && s.gzhead.extra.length) {
- put_byte(s, s.gzhead.extra.length & 255);
- put_byte(s, s.gzhead.extra.length >> 8 & 255);
- }
- if (s.gzhead.hcrc) {
- strm.adler = crc322(strm.adler, s.pending_buf, s.pending, 0);
- }
- s.gzindex = 0;
- s.status = EXTRA_STATE;
- }
- } else {
- var header = Z_DEFLATED + (s.w_bits - 8 << 4) << 8;
- var level_flags = -1;
- if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
- level_flags = 0;
- } else if (s.level < 6) {
- level_flags = 1;
- } else if (s.level === 6) {
- level_flags = 2;
- } else {
- level_flags = 3;
- }
- header |= level_flags << 6;
- if (s.strstart !== 0) {
- header |= PRESET_DICT;
- }
- header += 31 - header % 31;
- s.status = BUSY_STATE;
- putShortMSB(s, header);
- if (s.strstart !== 0) {
- putShortMSB(s, strm.adler >>> 16);
- putShortMSB(s, strm.adler & 65535);
- }
- strm.adler = 1;
- }
- }
- if (s.status === EXTRA_STATE) {
- if (s.gzhead.extra) {
- beg = s.pending;
- while (s.gzindex < (s.gzhead.extra.length & 65535)) {
- if (s.pending === s.pending_buf_size) {
- if (s.gzhead.hcrc && s.pending > beg) {
- strm.adler = crc322(strm.adler, s.pending_buf, s.pending - beg, beg);
- }
- flush_pending(strm);
- beg = s.pending;
- if (s.pending === s.pending_buf_size) {
- break;
- }
- }
- put_byte(s, s.gzhead.extra[s.gzindex] & 255);
- s.gzindex++;
- }
- if (s.gzhead.hcrc && s.pending > beg) {
- strm.adler = crc322(strm.adler, s.pending_buf, s.pending - beg, beg);
- }
- if (s.gzindex === s.gzhead.extra.length) {
- s.gzindex = 0;
- s.status = NAME_STATE;
- }
- } else {
- s.status = NAME_STATE;
- }
- }
- if (s.status === NAME_STATE) {
- if (s.gzhead.name) {
- beg = s.pending;
- do {
- if (s.pending === s.pending_buf_size) {
- if (s.gzhead.hcrc && s.pending > beg) {
- strm.adler = crc322(strm.adler, s.pending_buf, s.pending - beg, beg);
- }
- flush_pending(strm);
- beg = s.pending;
- if (s.pending === s.pending_buf_size) {
- val = 1;
- break;
- }
- }
- if (s.gzindex < s.gzhead.name.length) {
- val = s.gzhead.name.charCodeAt(s.gzindex++) & 255;
- } else {
- val = 0;
- }
- put_byte(s, val);
- } while (val !== 0);
- if (s.gzhead.hcrc && s.pending > beg) {
- strm.adler = crc322(strm.adler, s.pending_buf, s.pending - beg, beg);
- }
- if (val === 0) {
- s.gzindex = 0;
- s.status = COMMENT_STATE;
- }
- } else {
- s.status = COMMENT_STATE;
- }
- }
- if (s.status === COMMENT_STATE) {
- if (s.gzhead.comment) {
- beg = s.pending;
- do {
- if (s.pending === s.pending_buf_size) {
- if (s.gzhead.hcrc && s.pending > beg) {
- strm.adler = crc322(strm.adler, s.pending_buf, s.pending - beg, beg);
- }
- flush_pending(strm);
- beg = s.pending;
- if (s.pending === s.pending_buf_size) {
- val = 1;
- break;
- }
- }
- if (s.gzindex < s.gzhead.comment.length) {
- val = s.gzhead.comment.charCodeAt(s.gzindex++) & 255;
- } else {
- val = 0;
- }
- put_byte(s, val);
- } while (val !== 0);
- if (s.gzhead.hcrc && s.pending > beg) {
- strm.adler = crc322(strm.adler, s.pending_buf, s.pending - beg, beg);
- }
- if (val === 0) {
- s.status = HCRC_STATE;
- }
- } else {
- s.status = HCRC_STATE;
- }
- }
- if (s.status === HCRC_STATE) {
- if (s.gzhead.hcrc) {
- if (s.pending + 2 > s.pending_buf_size) {
- flush_pending(strm);
- }
- if (s.pending + 2 <= s.pending_buf_size) {
- put_byte(s, strm.adler & 255);
- put_byte(s, strm.adler >> 8 & 255);
- strm.adler = 0;
- s.status = BUSY_STATE;
- }
- } else {
- s.status = BUSY_STATE;
- }
- }
- if (s.pending !== 0) {
- flush_pending(strm);
- if (strm.avail_out === 0) {
- s.last_flush = -1;
- return Z_OK;
- }
- } else if (strm.avail_in === 0 && rank(flush2) <= rank(old_flush) && flush2 !== Z_FINISH) {
- return err(strm, Z_BUF_ERROR);
- }
- if (s.status === FINISH_STATE && strm.avail_in !== 0) {
- return err(strm, Z_BUF_ERROR);
- }
- if (strm.avail_in !== 0 || s.lookahead !== 0 || flush2 !== Z_NO_FLUSH && s.status !== FINISH_STATE) {
- var bstate = s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush2) : s.strategy === Z_RLE ? deflate_rle(s, flush2) : configuration_table[s.level].func(s, flush2);
- if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
- s.status = FINISH_STATE;
- }
- if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
- if (strm.avail_out === 0) {
- s.last_flush = -1;
- }
- return Z_OK;
- }
- if (bstate === BS_BLOCK_DONE) {
- if (flush2 === Z_PARTIAL_FLUSH) {
- trees._tr_align(s);
- } else if (flush2 !== Z_BLOCK) {
- trees._tr_stored_block(s, 0, 0, false);
- if (flush2 === Z_FULL_FLUSH) {
- zero(s.head);
- if (s.lookahead === 0) {
- s.strstart = 0;
- s.block_start = 0;
- s.insert = 0;
- }
- }
- }
- flush_pending(strm);
- if (strm.avail_out === 0) {
- s.last_flush = -1;
- return Z_OK;
- }
- }
- }
- if (flush2 !== Z_FINISH) {
- return Z_OK;
- }
- if (s.wrap <= 0) {
- return Z_STREAM_END;
- }
- if (s.wrap === 2) {
- put_byte(s, strm.adler & 255);
- put_byte(s, strm.adler >> 8 & 255);
- put_byte(s, strm.adler >> 16 & 255);
- put_byte(s, strm.adler >> 24 & 255);
- put_byte(s, strm.total_in & 255);
- put_byte(s, strm.total_in >> 8 & 255);
- put_byte(s, strm.total_in >> 16 & 255);
- put_byte(s, strm.total_in >> 24 & 255);
- } else {
- putShortMSB(s, strm.adler >>> 16);
- putShortMSB(s, strm.adler & 65535);
- }
- flush_pending(strm);
- if (s.wrap > 0) {
- s.wrap = -s.wrap;
- }
- return s.pending !== 0 ? Z_OK : Z_STREAM_END;
- }
- function deflateEnd(strm) {
- var status2;
- if (!strm || !strm.state) {
- return Z_STREAM_ERROR;
- }
- status2 = strm.state.status;
- if (status2 !== INIT_STATE && status2 !== EXTRA_STATE && status2 !== NAME_STATE && status2 !== COMMENT_STATE && status2 !== HCRC_STATE && status2 !== BUSY_STATE && status2 !== FINISH_STATE) {
- return err(strm, Z_STREAM_ERROR);
- }
- strm.state = null;
- return status2 === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
- }
- function deflateSetDictionary(strm, dictionary) {
- var dictLength = dictionary.length;
- var s;
- var str, n;
- var wrap;
- var avail;
- var next;
- var input;
- var tmpDict;
- if (!strm || !strm.state) {
- return Z_STREAM_ERROR;
- }
- s = strm.state;
- wrap = s.wrap;
- if (wrap === 2 || wrap === 1 && s.status !== INIT_STATE || s.lookahead) {
- return Z_STREAM_ERROR;
- }
- if (wrap === 1) {
- strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
- }
- s.wrap = 0;
- if (dictLength >= s.w_size) {
- if (wrap === 0) {
- zero(s.head);
- s.strstart = 0;
- s.block_start = 0;
- s.insert = 0;
- }
- tmpDict = new utils.Buf8(s.w_size);
- utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);
- dictionary = tmpDict;
- dictLength = s.w_size;
- }
- avail = strm.avail_in;
- next = strm.next_in;
- input = strm.input;
- strm.avail_in = dictLength;
- strm.next_in = 0;
- strm.input = dictionary;
- fill_window(s);
- while (s.lookahead >= MIN_MATCH) {
- str = s.strstart;
- n = s.lookahead - (MIN_MATCH - 1);
- do {
- s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;
- s.prev[str & s.w_mask] = s.head[s.ins_h];
- s.head[s.ins_h] = str;
- str++;
- } while (--n);
- s.strstart = str;
- s.lookahead = MIN_MATCH - 1;
- fill_window(s);
- }
- s.strstart += s.lookahead;
- s.block_start = s.strstart;
- s.insert = s.lookahead;
- s.lookahead = 0;
- s.match_length = s.prev_length = MIN_MATCH - 1;
- s.match_available = 0;
- strm.next_in = next;
- strm.input = input;
- strm.avail_in = avail;
- s.wrap = wrap;
- return Z_OK;
- }
- exports.deflateInit = deflateInit;
- exports.deflateInit2 = deflateInit2;
- exports.deflateReset = deflateReset;
- exports.deflateResetKeep = deflateResetKeep;
- exports.deflateSetHeader = deflateSetHeader;
- exports.deflate = deflate2;
- exports.deflateEnd = deflateEnd;
- exports.deflateSetDictionary = deflateSetDictionary;
- exports.deflateInfo = "pako deflate (from Nodeca project)";
- }
- });
- // node_modules/pako/lib/utils/strings.js
- var require_strings = __commonJS({
- "node_modules/pako/lib/utils/strings.js"(exports) {
- init_polyfill_buffer();
- "use strict";
- var utils = require_common();
- var STR_APPLY_OK = true;
- var STR_APPLY_UIA_OK = true;
- try {
- String.fromCharCode.apply(null, [0]);
- } catch (__) {
- STR_APPLY_OK = false;
- }
- try {
- String.fromCharCode.apply(null, new Uint8Array(1));
- } catch (__) {
- STR_APPLY_UIA_OK = false;
- }
- var _utf8len = new utils.Buf8(256);
- for (q = 0; q < 256; q++) {
- _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1;
- }
- var q;
- _utf8len[254] = _utf8len[254] = 1;
- exports.string2buf = function(str) {
- var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
- for (m_pos = 0; m_pos < str_len; m_pos++) {
- c = str.charCodeAt(m_pos);
- if ((c & 64512) === 55296 && m_pos + 1 < str_len) {
- c2 = str.charCodeAt(m_pos + 1);
- if ((c2 & 64512) === 56320) {
- c = 65536 + (c - 55296 << 10) + (c2 - 56320);
- m_pos++;
- }
- }
- buf_len += c < 128 ? 1 : c < 2048 ? 2 : c < 65536 ? 3 : 4;
- }
- buf = new utils.Buf8(buf_len);
- for (i = 0, m_pos = 0; i < buf_len; m_pos++) {
- c = str.charCodeAt(m_pos);
- if ((c & 64512) === 55296 && m_pos + 1 < str_len) {
- c2 = str.charCodeAt(m_pos + 1);
- if ((c2 & 64512) === 56320) {
- c = 65536 + (c - 55296 << 10) + (c2 - 56320);
- m_pos++;
- }
- }
- if (c < 128) {
- buf[i++] = c;
- } else if (c < 2048) {
- buf[i++] = 192 | c >>> 6;
- buf[i++] = 128 | c & 63;
- } else if (c < 65536) {
- buf[i++] = 224 | c >>> 12;
- buf[i++] = 128 | c >>> 6 & 63;
- buf[i++] = 128 | c & 63;
- } else {
- buf[i++] = 240 | c >>> 18;
- buf[i++] = 128 | c >>> 12 & 63;
- buf[i++] = 128 | c >>> 6 & 63;
- buf[i++] = 128 | c & 63;
- }
- }
- return buf;
- };
- function buf2binstring(buf, len) {
- if (len < 65534) {
- if (buf.subarray && STR_APPLY_UIA_OK || !buf.subarray && STR_APPLY_OK) {
- return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
- }
- }
- var result = "";
- for (var i = 0; i < len; i++) {
- result += String.fromCharCode(buf[i]);
- }
- return result;
- }
- exports.buf2binstring = function(buf) {
- return buf2binstring(buf, buf.length);
- };
- exports.binstring2buf = function(str) {
- var buf = new utils.Buf8(str.length);
- for (var i = 0, len = buf.length; i < len; i++) {
- buf[i] = str.charCodeAt(i);
- }
- return buf;
- };
- exports.buf2string = function(buf, max) {
- var i, out, c, c_len;
- var len = max || buf.length;
- var utf16buf = new Array(len * 2);
- for (out = 0, i = 0; i < len; ) {
- c = buf[i++];
- if (c < 128) {
- utf16buf[out++] = c;
- continue;
- }
- c_len = _utf8len[c];
- if (c_len > 4) {
- utf16buf[out++] = 65533;
- i += c_len - 1;
- continue;
- }
- c &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7;
- while (c_len > 1 && i < len) {
- c = c << 6 | buf[i++] & 63;
- c_len--;
- }
- if (c_len > 1) {
- utf16buf[out++] = 65533;
- continue;
- }
- if (c < 65536) {
- utf16buf[out++] = c;
- } else {
- c -= 65536;
- utf16buf[out++] = 55296 | c >> 10 & 1023;
- utf16buf[out++] = 56320 | c & 1023;
- }
- }
- return buf2binstring(utf16buf, out);
- };
- exports.utf8border = function(buf, max) {
- var pos;
- max = max || buf.length;
- if (max > buf.length) {
- max = buf.length;
- }
- pos = max - 1;
- while (pos >= 0 && (buf[pos] & 192) === 128) {
- pos--;
- }
- if (pos < 0) {
- return max;
- }
- if (pos === 0) {
- return max;
- }
- return pos + _utf8len[buf[pos]] > max ? pos : max;
- };
- }
- });
- // node_modules/pako/lib/zlib/zstream.js
- var require_zstream = __commonJS({
- "node_modules/pako/lib/zlib/zstream.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- function ZStream() {
- this.input = null;
- this.next_in = 0;
- this.avail_in = 0;
- this.total_in = 0;
- this.output = null;
- this.next_out = 0;
- this.avail_out = 0;
- this.total_out = 0;
- this.msg = "";
- this.state = null;
- this.data_type = 2;
- this.adler = 0;
- }
- module2.exports = ZStream;
- }
- });
- // node_modules/pako/lib/deflate.js
- var require_deflate2 = __commonJS({
- "node_modules/pako/lib/deflate.js"(exports) {
- init_polyfill_buffer();
- "use strict";
- var zlib_deflate = require_deflate();
- var utils = require_common();
- var strings = require_strings();
- var msg = require_messages();
- var ZStream = require_zstream();
- var toString = Object.prototype.toString;
- var Z_NO_FLUSH = 0;
- var Z_FINISH = 4;
- var Z_OK = 0;
- var Z_STREAM_END = 1;
- var Z_SYNC_FLUSH = 2;
- var Z_DEFAULT_COMPRESSION = -1;
- var Z_DEFAULT_STRATEGY = 0;
- var Z_DEFLATED = 8;
- function Deflate(options) {
- if (!(this instanceof Deflate))
- return new Deflate(options);
- this.options = utils.assign({
- level: Z_DEFAULT_COMPRESSION,
- method: Z_DEFLATED,
- chunkSize: 16384,
- windowBits: 15,
- memLevel: 8,
- strategy: Z_DEFAULT_STRATEGY,
- to: ""
- }, options || {});
- var opt = this.options;
- if (opt.raw && opt.windowBits > 0) {
- opt.windowBits = -opt.windowBits;
- } else if (opt.gzip && opt.windowBits > 0 && opt.windowBits < 16) {
- opt.windowBits += 16;
- }
- this.err = 0;
- this.msg = "";
- this.ended = false;
- this.chunks = [];
- this.strm = new ZStream();
- this.strm.avail_out = 0;
- var status2 = zlib_deflate.deflateInit2(this.strm, opt.level, opt.method, opt.windowBits, opt.memLevel, opt.strategy);
- if (status2 !== Z_OK) {
- throw new Error(msg[status2]);
- }
- if (opt.header) {
- zlib_deflate.deflateSetHeader(this.strm, opt.header);
- }
- if (opt.dictionary) {
- var dict;
- if (typeof opt.dictionary === "string") {
- dict = strings.string2buf(opt.dictionary);
- } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") {
- dict = new Uint8Array(opt.dictionary);
- } else {
- dict = opt.dictionary;
- }
- status2 = zlib_deflate.deflateSetDictionary(this.strm, dict);
- if (status2 !== Z_OK) {
- throw new Error(msg[status2]);
- }
- this._dict_set = true;
- }
- }
- Deflate.prototype.push = function(data, mode) {
- var strm = this.strm;
- var chunkSize = this.options.chunkSize;
- var status2, _mode;
- if (this.ended) {
- return false;
- }
- _mode = mode === ~~mode ? mode : mode === true ? Z_FINISH : Z_NO_FLUSH;
- if (typeof data === "string") {
- strm.input = strings.string2buf(data);
- } else if (toString.call(data) === "[object ArrayBuffer]") {
- strm.input = new Uint8Array(data);
- } else {
- strm.input = data;
- }
- strm.next_in = 0;
- strm.avail_in = strm.input.length;
- do {
- if (strm.avail_out === 0) {
- strm.output = new utils.Buf8(chunkSize);
- strm.next_out = 0;
- strm.avail_out = chunkSize;
- }
- status2 = zlib_deflate.deflate(strm, _mode);
- if (status2 !== Z_STREAM_END && status2 !== Z_OK) {
- this.onEnd(status2);
- this.ended = true;
- return false;
- }
- if (strm.avail_out === 0 || strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH)) {
- if (this.options.to === "string") {
- this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));
- } else {
- this.onData(utils.shrinkBuf(strm.output, strm.next_out));
- }
- }
- } while ((strm.avail_in > 0 || strm.avail_out === 0) && status2 !== Z_STREAM_END);
- if (_mode === Z_FINISH) {
- status2 = zlib_deflate.deflateEnd(this.strm);
- this.onEnd(status2);
- this.ended = true;
- return status2 === Z_OK;
- }
- if (_mode === Z_SYNC_FLUSH) {
- this.onEnd(Z_OK);
- strm.avail_out = 0;
- return true;
- }
- return true;
- };
- Deflate.prototype.onData = function(chunk) {
- this.chunks.push(chunk);
- };
- Deflate.prototype.onEnd = function(status2) {
- if (status2 === Z_OK) {
- if (this.options.to === "string") {
- this.result = this.chunks.join("");
- } else {
- this.result = utils.flattenChunks(this.chunks);
- }
- }
- this.chunks = [];
- this.err = status2;
- this.msg = this.strm.msg;
- };
- function deflate2(input, options) {
- var deflator = new Deflate(options);
- deflator.push(input, true);
- if (deflator.err) {
- throw deflator.msg || msg[deflator.err];
- }
- return deflator.result;
- }
- function deflateRaw(input, options) {
- options = options || {};
- options.raw = true;
- return deflate2(input, options);
- }
- function gzip(input, options) {
- options = options || {};
- options.gzip = true;
- return deflate2(input, options);
- }
- exports.Deflate = Deflate;
- exports.deflate = deflate2;
- exports.deflateRaw = deflateRaw;
- exports.gzip = gzip;
- }
- });
- // node_modules/pako/lib/zlib/inffast.js
- var require_inffast = __commonJS({
- "node_modules/pako/lib/zlib/inffast.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- var BAD = 30;
- var TYPE = 12;
- module2.exports = function inflate_fast(strm, start) {
- var state;
- var _in;
- var last2;
- var _out;
- var beg;
- var end;
- var dmax;
- var wsize;
- var whave;
- var wnext;
- var s_window;
- var hold;
- var bits;
- var lcode;
- var dcode;
- var lmask;
- var dmask;
- var here;
- var op;
- var len;
- var dist;
- var from;
- var from_source;
- var input, output;
- state = strm.state;
- _in = strm.next_in;
- input = strm.input;
- last2 = _in + (strm.avail_in - 5);
- _out = strm.next_out;
- output = strm.output;
- beg = _out - (start - strm.avail_out);
- end = _out + (strm.avail_out - 257);
- dmax = state.dmax;
- wsize = state.wsize;
- whave = state.whave;
- wnext = state.wnext;
- s_window = state.window;
- hold = state.hold;
- bits = state.bits;
- lcode = state.lencode;
- dcode = state.distcode;
- lmask = (1 << state.lenbits) - 1;
- dmask = (1 << state.distbits) - 1;
- top:
- do {
- if (bits < 15) {
- hold += input[_in++] << bits;
- bits += 8;
- hold += input[_in++] << bits;
- bits += 8;
- }
- here = lcode[hold & lmask];
- dolen:
- for (; ; ) {
- op = here >>> 24;
- hold >>>= op;
- bits -= op;
- op = here >>> 16 & 255;
- if (op === 0) {
- output[_out++] = here & 65535;
- } else if (op & 16) {
- len = here & 65535;
- op &= 15;
- if (op) {
- if (bits < op) {
- hold += input[_in++] << bits;
- bits += 8;
- }
- len += hold & (1 << op) - 1;
- hold >>>= op;
- bits -= op;
- }
- if (bits < 15) {
- hold += input[_in++] << bits;
- bits += 8;
- hold += input[_in++] << bits;
- bits += 8;
- }
- here = dcode[hold & dmask];
- dodist:
- for (; ; ) {
- op = here >>> 24;
- hold >>>= op;
- bits -= op;
- op = here >>> 16 & 255;
- if (op & 16) {
- dist = here & 65535;
- op &= 15;
- if (bits < op) {
- hold += input[_in++] << bits;
- bits += 8;
- if (bits < op) {
- hold += input[_in++] << bits;
- bits += 8;
- }
- }
- dist += hold & (1 << op) - 1;
- if (dist > dmax) {
- strm.msg = "invalid distance too far back";
- state.mode = BAD;
- break top;
- }
- hold >>>= op;
- bits -= op;
- op = _out - beg;
- if (dist > op) {
- op = dist - op;
- if (op > whave) {
- if (state.sane) {
- strm.msg = "invalid distance too far back";
- state.mode = BAD;
- break top;
- }
- }
- from = 0;
- from_source = s_window;
- if (wnext === 0) {
- from += wsize - op;
- if (op < len) {
- len -= op;
- do {
- output[_out++] = s_window[from++];
- } while (--op);
- from = _out - dist;
- from_source = output;
- }
- } else if (wnext < op) {
- from += wsize + wnext - op;
- op -= wnext;
- if (op < len) {
- len -= op;
- do {
- output[_out++] = s_window[from++];
- } while (--op);
- from = 0;
- if (wnext < len) {
- op = wnext;
- len -= op;
- do {
- output[_out++] = s_window[from++];
- } while (--op);
- from = _out - dist;
- from_source = output;
- }
- }
- } else {
- from += wnext - op;
- if (op < len) {
- len -= op;
- do {
- output[_out++] = s_window[from++];
- } while (--op);
- from = _out - dist;
- from_source = output;
- }
- }
- while (len > 2) {
- output[_out++] = from_source[from++];
- output[_out++] = from_source[from++];
- output[_out++] = from_source[from++];
- len -= 3;
- }
- if (len) {
- output[_out++] = from_source[from++];
- if (len > 1) {
- output[_out++] = from_source[from++];
- }
- }
- } else {
- from = _out - dist;
- do {
- output[_out++] = output[from++];
- output[_out++] = output[from++];
- output[_out++] = output[from++];
- len -= 3;
- } while (len > 2);
- if (len) {
- output[_out++] = output[from++];
- if (len > 1) {
- output[_out++] = output[from++];
- }
- }
- }
- } else if ((op & 64) === 0) {
- here = dcode[(here & 65535) + (hold & (1 << op) - 1)];
- continue dodist;
- } else {
- strm.msg = "invalid distance code";
- state.mode = BAD;
- break top;
- }
- break;
- }
- } else if ((op & 64) === 0) {
- here = lcode[(here & 65535) + (hold & (1 << op) - 1)];
- continue dolen;
- } else if (op & 32) {
- state.mode = TYPE;
- break top;
- } else {
- strm.msg = "invalid literal/length code";
- state.mode = BAD;
- break top;
- }
- break;
- }
- } while (_in < last2 && _out < end);
- len = bits >> 3;
- _in -= len;
- bits -= len << 3;
- hold &= (1 << bits) - 1;
- strm.next_in = _in;
- strm.next_out = _out;
- strm.avail_in = _in < last2 ? 5 + (last2 - _in) : 5 - (_in - last2);
- strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end);
- state.hold = hold;
- state.bits = bits;
- return;
- };
- }
- });
- // node_modules/pako/lib/zlib/inftrees.js
- var require_inftrees = __commonJS({
- "node_modules/pako/lib/zlib/inftrees.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- var utils = require_common();
- var MAXBITS = 15;
- var ENOUGH_LENS = 852;
- var ENOUGH_DISTS = 592;
- var CODES = 0;
- var LENS = 1;
- var DISTS = 2;
- var lbase = [
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 13,
- 15,
- 17,
- 19,
- 23,
- 27,
- 31,
- 35,
- 43,
- 51,
- 59,
- 67,
- 83,
- 99,
- 115,
- 131,
- 163,
- 195,
- 227,
- 258,
- 0,
- 0
- ];
- var lext = [
- 16,
- 16,
- 16,
- 16,
- 16,
- 16,
- 16,
- 16,
- 17,
- 17,
- 17,
- 17,
- 18,
- 18,
- 18,
- 18,
- 19,
- 19,
- 19,
- 19,
- 20,
- 20,
- 20,
- 20,
- 21,
- 21,
- 21,
- 21,
- 16,
- 72,
- 78
- ];
- var dbase = [
- 1,
- 2,
- 3,
- 4,
- 5,
- 7,
- 9,
- 13,
- 17,
- 25,
- 33,
- 49,
- 65,
- 97,
- 129,
- 193,
- 257,
- 385,
- 513,
- 769,
- 1025,
- 1537,
- 2049,
- 3073,
- 4097,
- 6145,
- 8193,
- 12289,
- 16385,
- 24577,
- 0,
- 0
- ];
- var dext = [
- 16,
- 16,
- 16,
- 16,
- 17,
- 17,
- 18,
- 18,
- 19,
- 19,
- 20,
- 20,
- 21,
- 21,
- 22,
- 22,
- 23,
- 23,
- 24,
- 24,
- 25,
- 25,
- 26,
- 26,
- 27,
- 27,
- 28,
- 28,
- 29,
- 29,
- 64,
- 64
- ];
- module2.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {
- var bits = opts.bits;
- var len = 0;
- var sym = 0;
- var min = 0, max = 0;
- var root = 0;
- var curr = 0;
- var drop = 0;
- var left = 0;
- var used = 0;
- var huff = 0;
- var incr;
- var fill;
- var low;
- var mask;
- var next;
- var base = null;
- var base_index = 0;
- var end;
- var count = new utils.Buf16(MAXBITS + 1);
- var offs = new utils.Buf16(MAXBITS + 1);
- var extra = null;
- var extra_index = 0;
- var here_bits, here_op, here_val;
- for (len = 0; len <= MAXBITS; len++) {
- count[len] = 0;
- }
- for (sym = 0; sym < codes; sym++) {
- count[lens[lens_index + sym]]++;
- }
- root = bits;
- for (max = MAXBITS; max >= 1; max--) {
- if (count[max] !== 0) {
- break;
- }
- }
- if (root > max) {
- root = max;
- }
- if (max === 0) {
- table[table_index++] = 1 << 24 | 64 << 16 | 0;
- table[table_index++] = 1 << 24 | 64 << 16 | 0;
- opts.bits = 1;
- return 0;
- }
- for (min = 1; min < max; min++) {
- if (count[min] !== 0) {
- break;
- }
- }
- if (root < min) {
- root = min;
- }
- left = 1;
- for (len = 1; len <= MAXBITS; len++) {
- left <<= 1;
- left -= count[len];
- if (left < 0) {
- return -1;
- }
- }
- if (left > 0 && (type === CODES || max !== 1)) {
- return -1;
- }
- offs[1] = 0;
- for (len = 1; len < MAXBITS; len++) {
- offs[len + 1] = offs[len] + count[len];
- }
- for (sym = 0; sym < codes; sym++) {
- if (lens[lens_index + sym] !== 0) {
- work[offs[lens[lens_index + sym]]++] = sym;
- }
- }
- if (type === CODES) {
- base = extra = work;
- end = 19;
- } else if (type === LENS) {
- base = lbase;
- base_index -= 257;
- extra = lext;
- extra_index -= 257;
- end = 256;
- } else {
- base = dbase;
- extra = dext;
- end = -1;
- }
- huff = 0;
- sym = 0;
- len = min;
- next = table_index;
- curr = root;
- drop = 0;
- low = -1;
- used = 1 << root;
- mask = used - 1;
- if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) {
- return 1;
- }
- for (; ; ) {
- here_bits = len - drop;
- if (work[sym] < end) {
- here_op = 0;
- here_val = work[sym];
- } else if (work[sym] > end) {
- here_op = extra[extra_index + work[sym]];
- here_val = base[base_index + work[sym]];
- } else {
- here_op = 32 + 64;
- here_val = 0;
- }
- incr = 1 << len - drop;
- fill = 1 << curr;
- min = fill;
- do {
- fill -= incr;
- table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0;
- } while (fill !== 0);
- incr = 1 << len - 1;
- while (huff & incr) {
- incr >>= 1;
- }
- if (incr !== 0) {
- huff &= incr - 1;
- huff += incr;
- } else {
- huff = 0;
- }
- sym++;
- if (--count[len] === 0) {
- if (len === max) {
- break;
- }
- len = lens[lens_index + work[sym]];
- }
- if (len > root && (huff & mask) !== low) {
- if (drop === 0) {
- drop = root;
- }
- next += min;
- curr = len - drop;
- left = 1 << curr;
- while (curr + drop < max) {
- left -= count[curr + drop];
- if (left <= 0) {
- break;
- }
- curr++;
- left <<= 1;
- }
- used += 1 << curr;
- if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) {
- return 1;
- }
- low = huff & mask;
- table[low] = root << 24 | curr << 16 | next - table_index | 0;
- }
- }
- if (huff !== 0) {
- table[next + huff] = len - drop << 24 | 64 << 16 | 0;
- }
- opts.bits = root;
- return 0;
- };
- }
- });
- // node_modules/pako/lib/zlib/inflate.js
- var require_inflate = __commonJS({
- "node_modules/pako/lib/zlib/inflate.js"(exports) {
- init_polyfill_buffer();
- "use strict";
- var utils = require_common();
- var adler32 = require_adler32();
- var crc322 = require_crc322();
- var inflate_fast = require_inffast();
- var inflate_table = require_inftrees();
- var CODES = 0;
- var LENS = 1;
- var DISTS = 2;
- var Z_FINISH = 4;
- var Z_BLOCK = 5;
- var Z_TREES = 6;
- var Z_OK = 0;
- var Z_STREAM_END = 1;
- var Z_NEED_DICT = 2;
- var Z_STREAM_ERROR = -2;
- var Z_DATA_ERROR = -3;
- var Z_MEM_ERROR = -4;
- var Z_BUF_ERROR = -5;
- var Z_DEFLATED = 8;
- var HEAD = 1;
- var FLAGS = 2;
- var TIME = 3;
- var OS = 4;
- var EXLEN = 5;
- var EXTRA = 6;
- var NAME = 7;
- var COMMENT = 8;
- var HCRC = 9;
- var DICTID = 10;
- var DICT = 11;
- var TYPE = 12;
- var TYPEDO = 13;
- var STORED = 14;
- var COPY_ = 15;
- var COPY = 16;
- var TABLE = 17;
- var LENLENS = 18;
- var CODELENS = 19;
- var LEN_ = 20;
- var LEN = 21;
- var LENEXT = 22;
- var DIST = 23;
- var DISTEXT = 24;
- var MATCH = 25;
- var LIT = 26;
- var CHECK = 27;
- var LENGTH = 28;
- var DONE = 29;
- var BAD = 30;
- var MEM = 31;
- var SYNC = 32;
- var ENOUGH_LENS = 852;
- var ENOUGH_DISTS = 592;
- var MAX_WBITS = 15;
- var DEF_WBITS = MAX_WBITS;
- function zswap32(q) {
- return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24);
- }
- function InflateState() {
- this.mode = 0;
- this.last = false;
- this.wrap = 0;
- this.havedict = false;
- this.flags = 0;
- this.dmax = 0;
- this.check = 0;
- this.total = 0;
- this.head = null;
- this.wbits = 0;
- this.wsize = 0;
- this.whave = 0;
- this.wnext = 0;
- this.window = null;
- this.hold = 0;
- this.bits = 0;
- this.length = 0;
- this.offset = 0;
- this.extra = 0;
- this.lencode = null;
- this.distcode = null;
- this.lenbits = 0;
- this.distbits = 0;
- this.ncode = 0;
- this.nlen = 0;
- this.ndist = 0;
- this.have = 0;
- this.next = null;
- this.lens = new utils.Buf16(320);
- this.work = new utils.Buf16(288);
- this.lendyn = null;
- this.distdyn = null;
- this.sane = 0;
- this.back = 0;
- this.was = 0;
- }
- function inflateResetKeep(strm) {
- var state;
- if (!strm || !strm.state) {
- return Z_STREAM_ERROR;
- }
- state = strm.state;
- strm.total_in = strm.total_out = state.total = 0;
- strm.msg = "";
- if (state.wrap) {
- strm.adler = state.wrap & 1;
- }
- state.mode = HEAD;
- state.last = 0;
- state.havedict = 0;
- state.dmax = 32768;
- state.head = null;
- state.hold = 0;
- state.bits = 0;
- state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
- state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);
- state.sane = 1;
- state.back = -1;
- return Z_OK;
- }
- function inflateReset(strm) {
- var state;
- if (!strm || !strm.state) {
- return Z_STREAM_ERROR;
- }
- state = strm.state;
- state.wsize = 0;
- state.whave = 0;
- state.wnext = 0;
- return inflateResetKeep(strm);
- }
- function inflateReset2(strm, windowBits) {
- var wrap;
- var state;
- if (!strm || !strm.state) {
- return Z_STREAM_ERROR;
- }
- state = strm.state;
- if (windowBits < 0) {
- wrap = 0;
- windowBits = -windowBits;
- } else {
- wrap = (windowBits >> 4) + 1;
- if (windowBits < 48) {
- windowBits &= 15;
- }
- }
- if (windowBits && (windowBits < 8 || windowBits > 15)) {
- return Z_STREAM_ERROR;
- }
- if (state.window !== null && state.wbits !== windowBits) {
- state.window = null;
- }
- state.wrap = wrap;
- state.wbits = windowBits;
- return inflateReset(strm);
- }
- function inflateInit2(strm, windowBits) {
- var ret;
- var state;
- if (!strm) {
- return Z_STREAM_ERROR;
- }
- state = new InflateState();
- strm.state = state;
- state.window = null;
- ret = inflateReset2(strm, windowBits);
- if (ret !== Z_OK) {
- strm.state = null;
- }
- return ret;
- }
- function inflateInit(strm) {
- return inflateInit2(strm, DEF_WBITS);
- }
- var virgin = true;
- var lenfix;
- var distfix;
- function fixedtables(state) {
- if (virgin) {
- var sym;
- lenfix = new utils.Buf32(512);
- distfix = new utils.Buf32(32);
- sym = 0;
- while (sym < 144) {
- state.lens[sym++] = 8;
- }
- while (sym < 256) {
- state.lens[sym++] = 9;
- }
- while (sym < 280) {
- state.lens[sym++] = 7;
- }
- while (sym < 288) {
- state.lens[sym++] = 8;
- }
- inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });
- sym = 0;
- while (sym < 32) {
- state.lens[sym++] = 5;
- }
- inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });
- virgin = false;
- }
- state.lencode = lenfix;
- state.lenbits = 9;
- state.distcode = distfix;
- state.distbits = 5;
- }
- function updatewindow(strm, src, end, copy2) {
- var dist;
- var state = strm.state;
- if (state.window === null) {
- state.wsize = 1 << state.wbits;
- state.wnext = 0;
- state.whave = 0;
- state.window = new utils.Buf8(state.wsize);
- }
- if (copy2 >= state.wsize) {
- utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
- state.wnext = 0;
- state.whave = state.wsize;
- } else {
- dist = state.wsize - state.wnext;
- if (dist > copy2) {
- dist = copy2;
- }
- utils.arraySet(state.window, src, end - copy2, dist, state.wnext);
- copy2 -= dist;
- if (copy2) {
- utils.arraySet(state.window, src, end - copy2, copy2, 0);
- state.wnext = copy2;
- state.whave = state.wsize;
- } else {
- state.wnext += dist;
- if (state.wnext === state.wsize) {
- state.wnext = 0;
- }
- if (state.whave < state.wsize) {
- state.whave += dist;
- }
- }
- }
- return 0;
- }
- function inflate2(strm, flush2) {
- var state;
- var input, output;
- var next;
- var put;
- var have, left;
- var hold;
- var bits;
- var _in, _out;
- var copy2;
- var from;
- var from_source;
- var here = 0;
- var here_bits, here_op, here_val;
- var last_bits, last_op, last_val;
- var len;
- var ret;
- var hbuf = new utils.Buf8(4);
- var opts;
- var n;
- var order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
- if (!strm || !strm.state || !strm.output || !strm.input && strm.avail_in !== 0) {
- return Z_STREAM_ERROR;
- }
- state = strm.state;
- if (state.mode === TYPE) {
- state.mode = TYPEDO;
- }
- put = strm.next_out;
- output = strm.output;
- left = strm.avail_out;
- next = strm.next_in;
- input = strm.input;
- have = strm.avail_in;
- hold = state.hold;
- bits = state.bits;
- _in = have;
- _out = left;
- ret = Z_OK;
- inf_leave:
- for (; ; ) {
- switch (state.mode) {
- case HEAD:
- if (state.wrap === 0) {
- state.mode = TYPEDO;
- break;
- }
- while (bits < 16) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- if (state.wrap & 2 && hold === 35615) {
- state.check = 0;
- hbuf[0] = hold & 255;
- hbuf[1] = hold >>> 8 & 255;
- state.check = crc322(state.check, hbuf, 2, 0);
- hold = 0;
- bits = 0;
- state.mode = FLAGS;
- break;
- }
- state.flags = 0;
- if (state.head) {
- state.head.done = false;
- }
- if (!(state.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) {
- strm.msg = "incorrect header check";
- state.mode = BAD;
- break;
- }
- if ((hold & 15) !== Z_DEFLATED) {
- strm.msg = "unknown compression method";
- state.mode = BAD;
- break;
- }
- hold >>>= 4;
- bits -= 4;
- len = (hold & 15) + 8;
- if (state.wbits === 0) {
- state.wbits = len;
- } else if (len > state.wbits) {
- strm.msg = "invalid window size";
- state.mode = BAD;
- break;
- }
- state.dmax = 1 << len;
- strm.adler = state.check = 1;
- state.mode = hold & 512 ? DICTID : TYPE;
- hold = 0;
- bits = 0;
- break;
- case FLAGS:
- while (bits < 16) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- state.flags = hold;
- if ((state.flags & 255) !== Z_DEFLATED) {
- strm.msg = "unknown compression method";
- state.mode = BAD;
- break;
- }
- if (state.flags & 57344) {
- strm.msg = "unknown header flags set";
- state.mode = BAD;
- break;
- }
- if (state.head) {
- state.head.text = hold >> 8 & 1;
- }
- if (state.flags & 512) {
- hbuf[0] = hold & 255;
- hbuf[1] = hold >>> 8 & 255;
- state.check = crc322(state.check, hbuf, 2, 0);
- }
- hold = 0;
- bits = 0;
- state.mode = TIME;
- case TIME:
- while (bits < 32) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- if (state.head) {
- state.head.time = hold;
- }
- if (state.flags & 512) {
- hbuf[0] = hold & 255;
- hbuf[1] = hold >>> 8 & 255;
- hbuf[2] = hold >>> 16 & 255;
- hbuf[3] = hold >>> 24 & 255;
- state.check = crc322(state.check, hbuf, 4, 0);
- }
- hold = 0;
- bits = 0;
- state.mode = OS;
- case OS:
- while (bits < 16) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- if (state.head) {
- state.head.xflags = hold & 255;
- state.head.os = hold >> 8;
- }
- if (state.flags & 512) {
- hbuf[0] = hold & 255;
- hbuf[1] = hold >>> 8 & 255;
- state.check = crc322(state.check, hbuf, 2, 0);
- }
- hold = 0;
- bits = 0;
- state.mode = EXLEN;
- case EXLEN:
- if (state.flags & 1024) {
- while (bits < 16) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- state.length = hold;
- if (state.head) {
- state.head.extra_len = hold;
- }
- if (state.flags & 512) {
- hbuf[0] = hold & 255;
- hbuf[1] = hold >>> 8 & 255;
- state.check = crc322(state.check, hbuf, 2, 0);
- }
- hold = 0;
- bits = 0;
- } else if (state.head) {
- state.head.extra = null;
- }
- state.mode = EXTRA;
- case EXTRA:
- if (state.flags & 1024) {
- copy2 = state.length;
- if (copy2 > have) {
- copy2 = have;
- }
- if (copy2) {
- if (state.head) {
- len = state.head.extra_len - state.length;
- if (!state.head.extra) {
- state.head.extra = new Array(state.head.extra_len);
- }
- utils.arraySet(state.head.extra, input, next, copy2, len);
- }
- if (state.flags & 512) {
- state.check = crc322(state.check, input, copy2, next);
- }
- have -= copy2;
- next += copy2;
- state.length -= copy2;
- }
- if (state.length) {
- break inf_leave;
- }
- }
- state.length = 0;
- state.mode = NAME;
- case NAME:
- if (state.flags & 2048) {
- if (have === 0) {
- break inf_leave;
- }
- copy2 = 0;
- do {
- len = input[next + copy2++];
- if (state.head && len && state.length < 65536) {
- state.head.name += String.fromCharCode(len);
- }
- } while (len && copy2 < have);
- if (state.flags & 512) {
- state.check = crc322(state.check, input, copy2, next);
- }
- have -= copy2;
- next += copy2;
- if (len) {
- break inf_leave;
- }
- } else if (state.head) {
- state.head.name = null;
- }
- state.length = 0;
- state.mode = COMMENT;
- case COMMENT:
- if (state.flags & 4096) {
- if (have === 0) {
- break inf_leave;
- }
- copy2 = 0;
- do {
- len = input[next + copy2++];
- if (state.head && len && state.length < 65536) {
- state.head.comment += String.fromCharCode(len);
- }
- } while (len && copy2 < have);
- if (state.flags & 512) {
- state.check = crc322(state.check, input, copy2, next);
- }
- have -= copy2;
- next += copy2;
- if (len) {
- break inf_leave;
- }
- } else if (state.head) {
- state.head.comment = null;
- }
- state.mode = HCRC;
- case HCRC:
- if (state.flags & 512) {
- while (bits < 16) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- if (hold !== (state.check & 65535)) {
- strm.msg = "header crc mismatch";
- state.mode = BAD;
- break;
- }
- hold = 0;
- bits = 0;
- }
- if (state.head) {
- state.head.hcrc = state.flags >> 9 & 1;
- state.head.done = true;
- }
- strm.adler = state.check = 0;
- state.mode = TYPE;
- break;
- case DICTID:
- while (bits < 32) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- strm.adler = state.check = zswap32(hold);
- hold = 0;
- bits = 0;
- state.mode = DICT;
- case DICT:
- if (state.havedict === 0) {
- strm.next_out = put;
- strm.avail_out = left;
- strm.next_in = next;
- strm.avail_in = have;
- state.hold = hold;
- state.bits = bits;
- return Z_NEED_DICT;
- }
- strm.adler = state.check = 1;
- state.mode = TYPE;
- case TYPE:
- if (flush2 === Z_BLOCK || flush2 === Z_TREES) {
- break inf_leave;
- }
- case TYPEDO:
- if (state.last) {
- hold >>>= bits & 7;
- bits -= bits & 7;
- state.mode = CHECK;
- break;
- }
- while (bits < 3) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- state.last = hold & 1;
- hold >>>= 1;
- bits -= 1;
- switch (hold & 3) {
- case 0:
- state.mode = STORED;
- break;
- case 1:
- fixedtables(state);
- state.mode = LEN_;
- if (flush2 === Z_TREES) {
- hold >>>= 2;
- bits -= 2;
- break inf_leave;
- }
- break;
- case 2:
- state.mode = TABLE;
- break;
- case 3:
- strm.msg = "invalid block type";
- state.mode = BAD;
- }
- hold >>>= 2;
- bits -= 2;
- break;
- case STORED:
- hold >>>= bits & 7;
- bits -= bits & 7;
- while (bits < 32) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- if ((hold & 65535) !== (hold >>> 16 ^ 65535)) {
- strm.msg = "invalid stored block lengths";
- state.mode = BAD;
- break;
- }
- state.length = hold & 65535;
- hold = 0;
- bits = 0;
- state.mode = COPY_;
- if (flush2 === Z_TREES) {
- break inf_leave;
- }
- case COPY_:
- state.mode = COPY;
- case COPY:
- copy2 = state.length;
- if (copy2) {
- if (copy2 > have) {
- copy2 = have;
- }
- if (copy2 > left) {
- copy2 = left;
- }
- if (copy2 === 0) {
- break inf_leave;
- }
- utils.arraySet(output, input, next, copy2, put);
- have -= copy2;
- next += copy2;
- left -= copy2;
- put += copy2;
- state.length -= copy2;
- break;
- }
- state.mode = TYPE;
- break;
- case TABLE:
- while (bits < 14) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- state.nlen = (hold & 31) + 257;
- hold >>>= 5;
- bits -= 5;
- state.ndist = (hold & 31) + 1;
- hold >>>= 5;
- bits -= 5;
- state.ncode = (hold & 15) + 4;
- hold >>>= 4;
- bits -= 4;
- if (state.nlen > 286 || state.ndist > 30) {
- strm.msg = "too many length or distance symbols";
- state.mode = BAD;
- break;
- }
- state.have = 0;
- state.mode = LENLENS;
- case LENLENS:
- while (state.have < state.ncode) {
- while (bits < 3) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- state.lens[order[state.have++]] = hold & 7;
- hold >>>= 3;
- bits -= 3;
- }
- while (state.have < 19) {
- state.lens[order[state.have++]] = 0;
- }
- state.lencode = state.lendyn;
- state.lenbits = 7;
- opts = { bits: state.lenbits };
- ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
- state.lenbits = opts.bits;
- if (ret) {
- strm.msg = "invalid code lengths set";
- state.mode = BAD;
- break;
- }
- state.have = 0;
- state.mode = CODELENS;
- case CODELENS:
- while (state.have < state.nlen + state.ndist) {
- for (; ; ) {
- here = state.lencode[hold & (1 << state.lenbits) - 1];
- here_bits = here >>> 24;
- here_op = here >>> 16 & 255;
- here_val = here & 65535;
- if (here_bits <= bits) {
- break;
- }
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- if (here_val < 16) {
- hold >>>= here_bits;
- bits -= here_bits;
- state.lens[state.have++] = here_val;
- } else {
- if (here_val === 16) {
- n = here_bits + 2;
- while (bits < n) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- hold >>>= here_bits;
- bits -= here_bits;
- if (state.have === 0) {
- strm.msg = "invalid bit length repeat";
- state.mode = BAD;
- break;
- }
- len = state.lens[state.have - 1];
- copy2 = 3 + (hold & 3);
- hold >>>= 2;
- bits -= 2;
- } else if (here_val === 17) {
- n = here_bits + 3;
- while (bits < n) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- hold >>>= here_bits;
- bits -= here_bits;
- len = 0;
- copy2 = 3 + (hold & 7);
- hold >>>= 3;
- bits -= 3;
- } else {
- n = here_bits + 7;
- while (bits < n) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- hold >>>= here_bits;
- bits -= here_bits;
- len = 0;
- copy2 = 11 + (hold & 127);
- hold >>>= 7;
- bits -= 7;
- }
- if (state.have + copy2 > state.nlen + state.ndist) {
- strm.msg = "invalid bit length repeat";
- state.mode = BAD;
- break;
- }
- while (copy2--) {
- state.lens[state.have++] = len;
- }
- }
- }
- if (state.mode === BAD) {
- break;
- }
- if (state.lens[256] === 0) {
- strm.msg = "invalid code -- missing end-of-block";
- state.mode = BAD;
- break;
- }
- state.lenbits = 9;
- opts = { bits: state.lenbits };
- ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
- state.lenbits = opts.bits;
- if (ret) {
- strm.msg = "invalid literal/lengths set";
- state.mode = BAD;
- break;
- }
- state.distbits = 6;
- state.distcode = state.distdyn;
- opts = { bits: state.distbits };
- ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
- state.distbits = opts.bits;
- if (ret) {
- strm.msg = "invalid distances set";
- state.mode = BAD;
- break;
- }
- state.mode = LEN_;
- if (flush2 === Z_TREES) {
- break inf_leave;
- }
- case LEN_:
- state.mode = LEN;
- case LEN:
- if (have >= 6 && left >= 258) {
- strm.next_out = put;
- strm.avail_out = left;
- strm.next_in = next;
- strm.avail_in = have;
- state.hold = hold;
- state.bits = bits;
- inflate_fast(strm, _out);
- put = strm.next_out;
- output = strm.output;
- left = strm.avail_out;
- next = strm.next_in;
- input = strm.input;
- have = strm.avail_in;
- hold = state.hold;
- bits = state.bits;
- if (state.mode === TYPE) {
- state.back = -1;
- }
- break;
- }
- state.back = 0;
- for (; ; ) {
- here = state.lencode[hold & (1 << state.lenbits) - 1];
- here_bits = here >>> 24;
- here_op = here >>> 16 & 255;
- here_val = here & 65535;
- if (here_bits <= bits) {
- break;
- }
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- if (here_op && (here_op & 240) === 0) {
- last_bits = here_bits;
- last_op = here_op;
- last_val = here_val;
- for (; ; ) {
- here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
- here_bits = here >>> 24;
- here_op = here >>> 16 & 255;
- here_val = here & 65535;
- if (last_bits + here_bits <= bits) {
- break;
- }
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- hold >>>= last_bits;
- bits -= last_bits;
- state.back += last_bits;
- }
- hold >>>= here_bits;
- bits -= here_bits;
- state.back += here_bits;
- state.length = here_val;
- if (here_op === 0) {
- state.mode = LIT;
- break;
- }
- if (here_op & 32) {
- state.back = -1;
- state.mode = TYPE;
- break;
- }
- if (here_op & 64) {
- strm.msg = "invalid literal/length code";
- state.mode = BAD;
- break;
- }
- state.extra = here_op & 15;
- state.mode = LENEXT;
- case LENEXT:
- if (state.extra) {
- n = state.extra;
- while (bits < n) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- state.length += hold & (1 << state.extra) - 1;
- hold >>>= state.extra;
- bits -= state.extra;
- state.back += state.extra;
- }
- state.was = state.length;
- state.mode = DIST;
- case DIST:
- for (; ; ) {
- here = state.distcode[hold & (1 << state.distbits) - 1];
- here_bits = here >>> 24;
- here_op = here >>> 16 & 255;
- here_val = here & 65535;
- if (here_bits <= bits) {
- break;
- }
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- if ((here_op & 240) === 0) {
- last_bits = here_bits;
- last_op = here_op;
- last_val = here_val;
- for (; ; ) {
- here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
- here_bits = here >>> 24;
- here_op = here >>> 16 & 255;
- here_val = here & 65535;
- if (last_bits + here_bits <= bits) {
- break;
- }
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- hold >>>= last_bits;
- bits -= last_bits;
- state.back += last_bits;
- }
- hold >>>= here_bits;
- bits -= here_bits;
- state.back += here_bits;
- if (here_op & 64) {
- strm.msg = "invalid distance code";
- state.mode = BAD;
- break;
- }
- state.offset = here_val;
- state.extra = here_op & 15;
- state.mode = DISTEXT;
- case DISTEXT:
- if (state.extra) {
- n = state.extra;
- while (bits < n) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- state.offset += hold & (1 << state.extra) - 1;
- hold >>>= state.extra;
- bits -= state.extra;
- state.back += state.extra;
- }
- if (state.offset > state.dmax) {
- strm.msg = "invalid distance too far back";
- state.mode = BAD;
- break;
- }
- state.mode = MATCH;
- case MATCH:
- if (left === 0) {
- break inf_leave;
- }
- copy2 = _out - left;
- if (state.offset > copy2) {
- copy2 = state.offset - copy2;
- if (copy2 > state.whave) {
- if (state.sane) {
- strm.msg = "invalid distance too far back";
- state.mode = BAD;
- break;
- }
- }
- if (copy2 > state.wnext) {
- copy2 -= state.wnext;
- from = state.wsize - copy2;
- } else {
- from = state.wnext - copy2;
- }
- if (copy2 > state.length) {
- copy2 = state.length;
- }
- from_source = state.window;
- } else {
- from_source = output;
- from = put - state.offset;
- copy2 = state.length;
- }
- if (copy2 > left) {
- copy2 = left;
- }
- left -= copy2;
- state.length -= copy2;
- do {
- output[put++] = from_source[from++];
- } while (--copy2);
- if (state.length === 0) {
- state.mode = LEN;
- }
- break;
- case LIT:
- if (left === 0) {
- break inf_leave;
- }
- output[put++] = state.length;
- left--;
- state.mode = LEN;
- break;
- case CHECK:
- if (state.wrap) {
- while (bits < 32) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold |= input[next++] << bits;
- bits += 8;
- }
- _out -= left;
- strm.total_out += _out;
- state.total += _out;
- if (_out) {
- strm.adler = state.check = state.flags ? crc322(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out);
- }
- _out = left;
- if ((state.flags ? hold : zswap32(hold)) !== state.check) {
- strm.msg = "incorrect data check";
- state.mode = BAD;
- break;
- }
- hold = 0;
- bits = 0;
- }
- state.mode = LENGTH;
- case LENGTH:
- if (state.wrap && state.flags) {
- while (bits < 32) {
- if (have === 0) {
- break inf_leave;
- }
- have--;
- hold += input[next++] << bits;
- bits += 8;
- }
- if (hold !== (state.total & 4294967295)) {
- strm.msg = "incorrect length check";
- state.mode = BAD;
- break;
- }
- hold = 0;
- bits = 0;
- }
- state.mode = DONE;
- case DONE:
- ret = Z_STREAM_END;
- break inf_leave;
- case BAD:
- ret = Z_DATA_ERROR;
- break inf_leave;
- case MEM:
- return Z_MEM_ERROR;
- case SYNC:
- default:
- return Z_STREAM_ERROR;
- }
- }
- strm.next_out = put;
- strm.avail_out = left;
- strm.next_in = next;
- strm.avail_in = have;
- state.hold = hold;
- state.bits = bits;
- if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush2 !== Z_FINISH)) {
- if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
- state.mode = MEM;
- return Z_MEM_ERROR;
- }
- }
- _in -= strm.avail_in;
- _out -= strm.avail_out;
- strm.total_in += _in;
- strm.total_out += _out;
- state.total += _out;
- if (state.wrap && _out) {
- strm.adler = state.check = state.flags ? crc322(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out);
- }
- strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
- if ((_in === 0 && _out === 0 || flush2 === Z_FINISH) && ret === Z_OK) {
- ret = Z_BUF_ERROR;
- }
- return ret;
- }
- function inflateEnd(strm) {
- if (!strm || !strm.state) {
- return Z_STREAM_ERROR;
- }
- var state = strm.state;
- if (state.window) {
- state.window = null;
- }
- strm.state = null;
- return Z_OK;
- }
- function inflateGetHeader(strm, head) {
- var state;
- if (!strm || !strm.state) {
- return Z_STREAM_ERROR;
- }
- state = strm.state;
- if ((state.wrap & 2) === 0) {
- return Z_STREAM_ERROR;
- }
- state.head = head;
- head.done = false;
- return Z_OK;
- }
- function inflateSetDictionary(strm, dictionary) {
- var dictLength = dictionary.length;
- var state;
- var dictid;
- var ret;
- if (!strm || !strm.state) {
- return Z_STREAM_ERROR;
- }
- state = strm.state;
- if (state.wrap !== 0 && state.mode !== DICT) {
- return Z_STREAM_ERROR;
- }
- if (state.mode === DICT) {
- dictid = 1;
- dictid = adler32(dictid, dictionary, dictLength, 0);
- if (dictid !== state.check) {
- return Z_DATA_ERROR;
- }
- }
- ret = updatewindow(strm, dictionary, dictLength, dictLength);
- if (ret) {
- state.mode = MEM;
- return Z_MEM_ERROR;
- }
- state.havedict = 1;
- return Z_OK;
- }
- exports.inflateReset = inflateReset;
- exports.inflateReset2 = inflateReset2;
- exports.inflateResetKeep = inflateResetKeep;
- exports.inflateInit = inflateInit;
- exports.inflateInit2 = inflateInit2;
- exports.inflate = inflate2;
- exports.inflateEnd = inflateEnd;
- exports.inflateGetHeader = inflateGetHeader;
- exports.inflateSetDictionary = inflateSetDictionary;
- exports.inflateInfo = "pako inflate (from Nodeca project)";
- }
- });
- // node_modules/pako/lib/zlib/constants.js
- var require_constants = __commonJS({
- "node_modules/pako/lib/zlib/constants.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- module2.exports = {
- Z_NO_FLUSH: 0,
- Z_PARTIAL_FLUSH: 1,
- Z_SYNC_FLUSH: 2,
- Z_FULL_FLUSH: 3,
- Z_FINISH: 4,
- Z_BLOCK: 5,
- Z_TREES: 6,
- Z_OK: 0,
- Z_STREAM_END: 1,
- Z_NEED_DICT: 2,
- Z_ERRNO: -1,
- Z_STREAM_ERROR: -2,
- Z_DATA_ERROR: -3,
- Z_BUF_ERROR: -5,
- Z_NO_COMPRESSION: 0,
- Z_BEST_SPEED: 1,
- Z_BEST_COMPRESSION: 9,
- Z_DEFAULT_COMPRESSION: -1,
- Z_FILTERED: 1,
- Z_HUFFMAN_ONLY: 2,
- Z_RLE: 3,
- Z_FIXED: 4,
- Z_DEFAULT_STRATEGY: 0,
- Z_BINARY: 0,
- Z_TEXT: 1,
- Z_UNKNOWN: 2,
- Z_DEFLATED: 8
- };
- }
- });
- // node_modules/pako/lib/zlib/gzheader.js
- var require_gzheader = __commonJS({
- "node_modules/pako/lib/zlib/gzheader.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- function GZheader() {
- this.text = 0;
- this.time = 0;
- this.xflags = 0;
- this.os = 0;
- this.extra = null;
- this.extra_len = 0;
- this.name = "";
- this.comment = "";
- this.hcrc = 0;
- this.done = false;
- }
- module2.exports = GZheader;
- }
- });
- // node_modules/pako/lib/inflate.js
- var require_inflate2 = __commonJS({
- "node_modules/pako/lib/inflate.js"(exports) {
- init_polyfill_buffer();
- "use strict";
- var zlib_inflate = require_inflate();
- var utils = require_common();
- var strings = require_strings();
- var c = require_constants();
- var msg = require_messages();
- var ZStream = require_zstream();
- var GZheader = require_gzheader();
- var toString = Object.prototype.toString;
- function Inflate(options) {
- if (!(this instanceof Inflate))
- return new Inflate(options);
- this.options = utils.assign({
- chunkSize: 16384,
- windowBits: 0,
- to: ""
- }, options || {});
- var opt = this.options;
- if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) {
- opt.windowBits = -opt.windowBits;
- if (opt.windowBits === 0) {
- opt.windowBits = -15;
- }
- }
- if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) {
- opt.windowBits += 32;
- }
- if (opt.windowBits > 15 && opt.windowBits < 48) {
- if ((opt.windowBits & 15) === 0) {
- opt.windowBits |= 15;
- }
- }
- this.err = 0;
- this.msg = "";
- this.ended = false;
- this.chunks = [];
- this.strm = new ZStream();
- this.strm.avail_out = 0;
- var status2 = zlib_inflate.inflateInit2(this.strm, opt.windowBits);
- if (status2 !== c.Z_OK) {
- throw new Error(msg[status2]);
- }
- this.header = new GZheader();
- zlib_inflate.inflateGetHeader(this.strm, this.header);
- if (opt.dictionary) {
- if (typeof opt.dictionary === "string") {
- opt.dictionary = strings.string2buf(opt.dictionary);
- } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") {
- opt.dictionary = new Uint8Array(opt.dictionary);
- }
- if (opt.raw) {
- status2 = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);
- if (status2 !== c.Z_OK) {
- throw new Error(msg[status2]);
- }
- }
- }
- }
- Inflate.prototype.push = function(data, mode) {
- var strm = this.strm;
- var chunkSize = this.options.chunkSize;
- var dictionary = this.options.dictionary;
- var status2, _mode;
- var next_out_utf8, tail, utf8str;
- var allowBufError = false;
- if (this.ended) {
- return false;
- }
- _mode = mode === ~~mode ? mode : mode === true ? c.Z_FINISH : c.Z_NO_FLUSH;
- if (typeof data === "string") {
- strm.input = strings.binstring2buf(data);
- } else if (toString.call(data) === "[object ArrayBuffer]") {
- strm.input = new Uint8Array(data);
- } else {
- strm.input = data;
- }
- strm.next_in = 0;
- strm.avail_in = strm.input.length;
- do {
- if (strm.avail_out === 0) {
- strm.output = new utils.Buf8(chunkSize);
- strm.next_out = 0;
- strm.avail_out = chunkSize;
- }
- status2 = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);
- if (status2 === c.Z_NEED_DICT && dictionary) {
- status2 = zlib_inflate.inflateSetDictionary(this.strm, dictionary);
- }
- if (status2 === c.Z_BUF_ERROR && allowBufError === true) {
- status2 = c.Z_OK;
- allowBufError = false;
- }
- if (status2 !== c.Z_STREAM_END && status2 !== c.Z_OK) {
- this.onEnd(status2);
- this.ended = true;
- return false;
- }
- if (strm.next_out) {
- if (strm.avail_out === 0 || status2 === c.Z_STREAM_END || strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH)) {
- if (this.options.to === "string") {
- next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
- tail = strm.next_out - next_out_utf8;
- utf8str = strings.buf2string(strm.output, next_out_utf8);
- strm.next_out = tail;
- strm.avail_out = chunkSize - tail;
- if (tail) {
- utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0);
- }
- this.onData(utf8str);
- } else {
- this.onData(utils.shrinkBuf(strm.output, strm.next_out));
- }
- }
- }
- if (strm.avail_in === 0 && strm.avail_out === 0) {
- allowBufError = true;
- }
- } while ((strm.avail_in > 0 || strm.avail_out === 0) && status2 !== c.Z_STREAM_END);
- if (status2 === c.Z_STREAM_END) {
- _mode = c.Z_FINISH;
- }
- if (_mode === c.Z_FINISH) {
- status2 = zlib_inflate.inflateEnd(this.strm);
- this.onEnd(status2);
- this.ended = true;
- return status2 === c.Z_OK;
- }
- if (_mode === c.Z_SYNC_FLUSH) {
- this.onEnd(c.Z_OK);
- strm.avail_out = 0;
- return true;
- }
- return true;
- };
- Inflate.prototype.onData = function(chunk) {
- this.chunks.push(chunk);
- };
- Inflate.prototype.onEnd = function(status2) {
- if (status2 === c.Z_OK) {
- if (this.options.to === "string") {
- this.result = this.chunks.join("");
- } else {
- this.result = utils.flattenChunks(this.chunks);
- }
- }
- this.chunks = [];
- this.err = status2;
- this.msg = this.strm.msg;
- };
- function inflate2(input, options) {
- var inflator = new Inflate(options);
- inflator.push(input, true);
- if (inflator.err) {
- throw inflator.msg || msg[inflator.err];
- }
- return inflator.result;
- }
- function inflateRaw(input, options) {
- options = options || {};
- options.raw = true;
- return inflate2(input, options);
- }
- exports.Inflate = Inflate;
- exports.inflate = inflate2;
- exports.inflateRaw = inflateRaw;
- exports.ungzip = inflate2;
- }
- });
- // node_modules/pako/index.js
- var require_pako = __commonJS({
- "node_modules/pako/index.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- var assign2 = require_common().assign;
- var deflate2 = require_deflate2();
- var inflate2 = require_inflate2();
- var constants = require_constants();
- var pako2 = {};
- assign2(pako2, deflate2, inflate2, constants);
- module2.exports = pako2;
- }
- });
- // node_modules/ignore/index.js
- var require_ignore = __commonJS({
- "node_modules/ignore/index.js"(exports, module2) {
- init_polyfill_buffer();
- function makeArray(subject) {
- return Array.isArray(subject) ? subject : [subject];
- }
- var EMPTY = "";
- var SPACE = " ";
- var ESCAPE = "\\";
- var REGEX_TEST_BLANK_LINE = /^\s+$/;
- var REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/;
- var REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/;
- var REGEX_SPLITALL_CRLF = /\r?\n/g;
- var REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/;
- var SLASH = "/";
- var KEY_IGNORE = typeof Symbol !== "undefined" ? Symbol.for("node-ignore") : "node-ignore";
- var define2 = (object, key2, value) => Object.defineProperty(object, key2, { value });
- var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g;
- var RETURN_FALSE = () => false;
- var sanitizeRange = (range) => range.replace(REGEX_REGEXP_RANGE, (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0) ? match : EMPTY);
- var cleanRangeBackSlash = (slashes) => {
- const { length } = slashes;
- return slashes.slice(0, length - length % 2);
- };
- var REPLACERS = [
- [
- /\\?\s+$/,
- (match) => match.indexOf("\\") === 0 ? SPACE : EMPTY
- ],
- [
- /\\\s/g,
- () => SPACE
- ],
- [
- /[\\$.|*+(){^]/g,
- (match) => `\\${match}`
- ],
- [
- /(?!\\)\?/g,
- () => "[^/]"
- ],
- [
- /^\//,
- () => "^"
- ],
- [
- /\//g,
- () => "\\/"
- ],
- [
- /^\^*\\\*\\\*\\\//,
- () => "^(?:.*\\/)?"
- ],
- [
- /^(?=[^^])/,
- function startingReplacer() {
- return !/\/(?!$)/.test(this) ? "(?:^|\\/)" : "^";
- }
- ],
- [
- /\\\/\\\*\\\*(?=\\\/|$)/g,
- (_, index2, str) => index2 + 6 < str.length ? "(?:\\/[^\\/]+)*" : "\\/.+"
- ],
- [
- /(^|[^\\]+)\\\*(?=.+)/g,
- (_, p1) => `${p1}[^\\/]*`
- ],
- [
- /\\\\\\(?=[$.|*+(){^])/g,
- () => ESCAPE
- ],
- [
- /\\\\/g,
- () => ESCAPE
- ],
- [
- /(\\)?\[([^\]/]*?)(\\*)($|\])/g,
- (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE ? `\\[${range}${cleanRangeBackSlash(endEscape)}${close}` : close === "]" ? endEscape.length % 2 === 0 ? `[${sanitizeRange(range)}${endEscape}]` : "[]" : "[]"
- ],
- [
- /(?:[^*])$/,
- (match) => /\/$/.test(match) ? `${match}$` : `${match}(?=$|\\/$)`
- ],
- [
- /(\^|\\\/)?\\\*$/,
- (_, p1) => {
- const prefix = p1 ? `${p1}[^/]+` : "[^/]*";
- return `${prefix}(?=$|\\/$)`;
- }
- ]
- ];
- var regexCache = Object.create(null);
- var makeRegex = (pattern, ignoreCase) => {
- let source = regexCache[pattern];
- if (!source) {
- source = REPLACERS.reduce((prev, current) => prev.replace(current[0], current[1].bind(pattern)), pattern);
- regexCache[pattern] = source;
- }
- return ignoreCase ? new RegExp(source, "i") : new RegExp(source);
- };
- var isString = (subject) => typeof subject === "string";
- var checkPattern = (pattern) => pattern && isString(pattern) && !REGEX_TEST_BLANK_LINE.test(pattern) && pattern.indexOf("#") !== 0;
- var splitPattern = (pattern) => pattern.split(REGEX_SPLITALL_CRLF);
- var IgnoreRule = class {
- constructor(origin, pattern, negative, regex2) {
- this.origin = origin;
- this.pattern = pattern;
- this.negative = negative;
- this.regex = regex2;
- }
- };
- var createRule = (pattern, ignoreCase) => {
- const origin = pattern;
- let negative = false;
- if (pattern.indexOf("!") === 0) {
- negative = true;
- pattern = pattern.substr(1);
- }
- pattern = pattern.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, "!").replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, "#");
- const regex2 = makeRegex(pattern, ignoreCase);
- return new IgnoreRule(origin, pattern, negative, regex2);
- };
- var throwError = (message, Ctor) => {
- throw new Ctor(message);
- };
- var checkPath = (path2, originalPath, doThrow) => {
- if (!isString(path2)) {
- return doThrow(`path must be a string, but got \`${originalPath}\``, TypeError);
- }
- if (!path2) {
- return doThrow(`path must not be empty`, TypeError);
- }
- if (checkPath.isNotRelative(path2)) {
- const r = "`path.relative()`d";
- return doThrow(`path should be a ${r} string, but got "${originalPath}"`, RangeError);
- }
- return true;
- };
- var isNotRelative = (path2) => REGEX_TEST_INVALID_PATH.test(path2);
- checkPath.isNotRelative = isNotRelative;
- checkPath.convert = (p) => p;
- var Ignore = class {
- constructor({
- ignorecase = true,
- ignoreCase = ignorecase,
- allowRelativePaths = false
- } = {}) {
- define2(this, KEY_IGNORE, true);
- this._rules = [];
- this._ignoreCase = ignoreCase;
- this._allowRelativePaths = allowRelativePaths;
- this._initCache();
- }
- _initCache() {
- this._ignoreCache = Object.create(null);
- this._testCache = Object.create(null);
- }
- _addPattern(pattern) {
- if (pattern && pattern[KEY_IGNORE]) {
- this._rules = this._rules.concat(pattern._rules);
- this._added = true;
- return;
- }
- if (checkPattern(pattern)) {
- const rule = createRule(pattern, this._ignoreCase);
- this._added = true;
- this._rules.push(rule);
- }
- }
- add(pattern) {
- this._added = false;
- makeArray(isString(pattern) ? splitPattern(pattern) : pattern).forEach(this._addPattern, this);
- if (this._added) {
- this._initCache();
- }
- return this;
- }
- addPattern(pattern) {
- return this.add(pattern);
- }
- _testOne(path2, checkUnignored) {
- let ignored = false;
- let unignored = false;
- this._rules.forEach((rule) => {
- const { negative } = rule;
- if (unignored === negative && ignored !== unignored || negative && !ignored && !unignored && !checkUnignored) {
- return;
- }
- const matched = rule.regex.test(path2);
- if (matched) {
- ignored = !negative;
- unignored = negative;
- }
- });
- return {
- ignored,
- unignored
- };
- }
- _test(originalPath, cache, checkUnignored, slices) {
- const path2 = originalPath && checkPath.convert(originalPath);
- checkPath(path2, originalPath, this._allowRelativePaths ? RETURN_FALSE : throwError);
- return this._t(path2, cache, checkUnignored, slices);
- }
- _t(path2, cache, checkUnignored, slices) {
- if (path2 in cache) {
- return cache[path2];
- }
- if (!slices) {
- slices = path2.split(SLASH);
- }
- slices.pop();
- if (!slices.length) {
- return cache[path2] = this._testOne(path2, checkUnignored);
- }
- const parent = this._t(slices.join(SLASH) + SLASH, cache, checkUnignored, slices);
- return cache[path2] = parent.ignored ? parent : this._testOne(path2, checkUnignored);
- }
- ignores(path2) {
- return this._test(path2, this._ignoreCache, false).ignored;
- }
- createFilter() {
- return (path2) => !this.ignores(path2);
- }
- filter(paths) {
- return makeArray(paths).filter(this.createFilter());
- }
- test(path2) {
- return this._test(path2, this._testCache, true);
- }
- };
- var factory = (options) => new Ignore(options);
- var isPathValid = (path2) => checkPath(path2 && checkPath.convert(path2), path2, RETURN_FALSE);
- factory.isPathValid = isPathValid;
- factory.default = factory;
- module2.exports = factory;
- if (typeof process !== "undefined" && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === "win32")) {
- const makePosix = (str) => /^\\\\\?\\/.test(str) || /["<>|\u0000-\u001F]+/u.test(str) ? str : str.replace(/\\/g, "/");
- checkPath.convert = makePosix;
- const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i;
- checkPath.isNotRelative = (path2) => REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path2) || isNotRelative(path2);
- }
- }
- });
- // node_modules/pify/index.js
- var require_pify = __commonJS({
- "node_modules/pify/index.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- var processFn = (fn, options) => function(...args) {
- const P = options.promiseModule;
- return new P((resolve, reject) => {
- if (options.multiArgs) {
- args.push((...result) => {
- if (options.errorFirst) {
- if (result[0]) {
- reject(result);
- } else {
- result.shift();
- resolve(result);
- }
- } else {
- resolve(result);
- }
- });
- } else if (options.errorFirst) {
- args.push((error, result) => {
- if (error) {
- reject(error);
- } else {
- resolve(result);
- }
- });
- } else {
- args.push(resolve);
- }
- fn.apply(this, args);
- });
- };
- module2.exports = (input, options) => {
- options = Object.assign({
- exclude: [/.+(Sync|Stream)$/],
- errorFirst: true,
- promiseModule: Promise
- }, options);
- const objType = typeof input;
- if (!(input !== null && (objType === "object" || objType === "function"))) {
- throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${input === null ? "null" : objType}\``);
- }
- const filter = (key2) => {
- const match = (pattern) => typeof pattern === "string" ? key2 === pattern : pattern.test(key2);
- return options.include ? options.include.some(match) : !options.exclude.some(match);
- };
- let ret;
- if (objType === "function") {
- ret = function(...args) {
- return options.excludeMain ? input(...args) : processFn(input, options).apply(this, args);
- };
- } else {
- ret = Object.create(Object.getPrototypeOf(input));
- }
- for (const key2 in input) {
- const property = input[key2];
- ret[key2] = typeof property === "function" && filter(key2) ? processFn(property, options) : property;
- }
- return ret;
- };
- }
- });
- // node_modules/clean-git-ref/lib/index.js
- var require_lib2 = __commonJS({
- "node_modules/clean-git-ref/lib/index.js"(exports, module2) {
- init_polyfill_buffer();
- "use strict";
- function escapeRegExp(string) {
- return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
- }
- function replaceAll(str, search, replacement) {
- search = search instanceof RegExp ? search : new RegExp(escapeRegExp(search), "g");
- return str.replace(search, replacement);
- }
- var CleanGitRef = {
- clean: function clean(value) {
- if (typeof value !== "string") {
- throw new Error("Expected a string, received: " + value);
- }
- value = replaceAll(value, "./", "/");
- value = replaceAll(value, "..", ".");
- value = replaceAll(value, " ", "-");
- value = replaceAll(value, /^[~^:?*\\\-]/g, "");
- value = replaceAll(value, /[~^:?*\\]/g, "-");
- value = replaceAll(value, /[~^:?*\\\-]$/g, "");
- value = replaceAll(value, "@{", "-");
- value = replaceAll(value, /\.$/g, "");
- value = replaceAll(value, /\/$/g, "");
- value = replaceAll(value, /\.lock$/g, "");
- return value;
- }
- };
- module2.exports = CleanGitRef;
- }
- });
- // node_modules/diff3/onp.js
- var require_onp = __commonJS({
- "node_modules/diff3/onp.js"(exports, module2) {
- init_polyfill_buffer();
- module2.exports = function(a_, b_) {
- var a = a_, b = b_, m = a.length, n = b.length, reverse = false, ed = null, offset = m + 1, path2 = [], pathposi = [], ses = [], lcs = "", SES_DELETE = -1, SES_COMMON = 0, SES_ADD = 1;
- var tmp1, tmp2;
- var init3 = function() {
- if (m >= n) {
- tmp1 = a;
- tmp2 = m;
- a = b;
- b = tmp1;
- m = n;
- n = tmp2;
- reverse = true;
- offset = m + 1;
- }
- };
- var P = function(x, y, k) {
- return {
- "x": x,
- "y": y,
- "k": k
- };
- };
- var seselem = function(elem, t) {
- return {
- "elem": elem,
- "t": t
- };
- };
- var snake = function(k, p, pp) {
- var r, x, y;
- if (p > pp) {
- r = path2[k - 1 + offset];
- } else {
- r = path2[k + 1 + offset];
- }
- y = Math.max(p, pp);
- x = y - k;
- while (x < m && y < n && a[x] === b[y]) {
- ++x;
- ++y;
- }
- path2[k + offset] = pathposi.length;
- pathposi[pathposi.length] = new P(x, y, r);
- return y;
- };
- var recordseq = function(epc) {
- var x_idx, y_idx, px_idx, py_idx, i;
- x_idx = y_idx = 1;
- px_idx = py_idx = 0;
- for (i = epc.length - 1; i >= 0; --i) {
- while (px_idx < epc[i].x || py_idx < epc[i].y) {
- if (epc[i].y - epc[i].x > py_idx - px_idx) {
- if (reverse) {
- ses[ses.length] = new seselem(b[py_idx], SES_DELETE);
- } else {
- ses[ses.length] = new seselem(b[py_idx], SES_ADD);
- }
- ++y_idx;
- ++py_idx;
- } else if (epc[i].y - epc[i].x < py_idx - px_idx) {
- if (reverse) {
- ses[ses.length] = new seselem(a[px_idx], SES_ADD);
- } else {
- ses[ses.length] = new seselem(a[px_idx], SES_DELETE);
- }
- ++x_idx;
- ++px_idx;
- } else {
- ses[ses.length] = new seselem(a[px_idx], SES_COMMON);
- lcs += a[px_idx];
- ++x_idx;
- ++y_idx;
- ++px_idx;
- ++py_idx;
- }
- }
- }
- };
- init3();
- return {
- SES_DELETE: -1,
- SES_COMMON: 0,
- SES_ADD: 1,
- editdistance: function() {
- return ed;
- },
- getlcs: function() {
- return lcs;
- },
- getses: function() {
- return ses;
- },
- compose: function() {
- var delta, size, fp, p, r, epc, i, k;
- delta = n - m;
- size = m + n + 3;
- fp = {};
- for (i = 0; i < size; ++i) {
- fp[i] = -1;
- path2[i] = -1;
- }
- p = -1;
- do {
- ++p;
- for (k = -p; k <= delta - 1; ++k) {
- fp[k + offset] = snake(k, fp[k - 1 + offset] + 1, fp[k + 1 + offset]);
- }
- for (k = delta + p; k >= delta + 1; --k) {
- fp[k + offset] = snake(k, fp[k - 1 + offset] + 1, fp[k + 1 + offset]);
- }
- fp[delta + offset] = snake(delta, fp[delta - 1 + offset] + 1, fp[delta + 1 + offset]);
- } while (fp[delta + offset] !== n);
- ed = delta + 2 * p;
- r = path2[delta + offset];
- epc = [];
- while (r !== -1) {
- epc[epc.length] = new P(pathposi[r].x, pathposi[r].y, null);
- r = pathposi[r].k;
- }
- recordseq(epc);
- }
- };
- };
- }
- });
- // node_modules/diff3/diff3.js
- var require_diff3 = __commonJS({
- "node_modules/diff3/diff3.js"(exports, module2) {
- init_polyfill_buffer();
- var onp = require_onp();
- function longestCommonSubsequence(file1, file2) {
- var diff2 = new onp(file1, file2);
- diff2.compose();
- var ses = diff2.getses();
- var root;
- var prev;
- var file1RevIdx = file1.length - 1, file2RevIdx = file2.length - 1;
- for (var i = ses.length - 1; i >= 0; --i) {
- if (ses[i].t === diff2.SES_COMMON) {
- if (prev) {
- prev.chain = {
- file1index: file1RevIdx,
- file2index: file2RevIdx,
- chain: null
- };
- prev = prev.chain;
- } else {
- root = {
- file1index: file1RevIdx,
- file2index: file2RevIdx,
- chain: null
- };
- prev = root;
- }
- file1RevIdx--;
- file2RevIdx--;
- } else if (ses[i].t === diff2.SES_DELETE) {
- file1RevIdx--;
- } else if (ses[i].t === diff2.SES_ADD) {
- file2RevIdx--;
- }
- }
- var tail = {
- file1index: -1,
- file2index: -1,
- chain: null
- };
- if (!prev) {
- return tail;
- }
- prev.chain = tail;
- return root;
- }
- function diffIndices(file1, file2) {
- var result = [];
- var tail1 = file1.length;
- var tail2 = file2.length;
- for (var candidate = longestCommonSubsequence(file1, file2); candidate !== null; candidate = candidate.chain) {
- var mismatchLength1 = tail1 - candidate.file1index - 1;
- var mismatchLength2 = tail2 - candidate.file2index - 1;
- tail1 = candidate.file1index;
- tail2 = candidate.file2index;
- if (mismatchLength1 || mismatchLength2) {
- result.push({
- file1: [tail1 + 1, mismatchLength1],
- file2: [tail2 + 1, mismatchLength2]
- });
- }
- }
- result.reverse();
- return result;
- }
- function diff3MergeIndices(a, o, b) {
- var i;
- var m1 = diffIndices(o, a);
- var m2 = diffIndices(o, b);
- var hunks = [];
- function addHunk(h, side2) {
- hunks.push([h.file1[0], side2, h.file1[1], h.file2[0], h.file2[1]]);
- }
- for (i = 0; i < m1.length; i++) {
- addHunk(m1[i], 0);
- }
- for (i = 0; i < m2.length; i++) {
- addHunk(m2[i], 2);
- }
- hunks.sort(function(x, y) {
- return x[0] - y[0];
- });
- var result = [];
- var commonOffset = 0;
- function copyCommon(targetOffset) {
- if (targetOffset > commonOffset) {
- result.push([1, commonOffset, targetOffset - commonOffset]);
- commonOffset = targetOffset;
- }
- }
- for (var hunkIndex = 0; hunkIndex < hunks.length; hunkIndex++) {
- var firstHunkIndex = hunkIndex;
- var hunk = hunks[hunkIndex];
- var regionLhs = hunk[0];
- var regionRhs = regionLhs + hunk[2];
- while (hunkIndex < hunks.length - 1) {
- var maybeOverlapping = hunks[hunkIndex + 1];
- var maybeLhs = maybeOverlapping[0];
- if (maybeLhs > regionRhs)
- break;
- regionRhs = Math.max(regionRhs, maybeLhs + maybeOverlapping[2]);
- hunkIndex++;
- }
- copyCommon(regionLhs);
- if (firstHunkIndex == hunkIndex) {
- if (hunk[4] > 0) {
- result.push([hunk[1], hunk[3], hunk[4]]);
- }
- } else {
- var regions = {
- 0: [a.length, -1, o.length, -1],
- 2: [b.length, -1, o.length, -1]
- };
- for (i = firstHunkIndex; i <= hunkIndex; i++) {
- hunk = hunks[i];
- var side = hunk[1];
- var r = regions[side];
- var oLhs = hunk[0];
- var oRhs = oLhs + hunk[2];
- var abLhs = hunk[3];
- var abRhs = abLhs + hunk[4];
- r[0] = Math.min(abLhs, r[0]);
- r[1] = Math.max(abRhs, r[1]);
- r[2] = Math.min(oLhs, r[2]);
- r[3] = Math.max(oRhs, r[3]);
- }
- var aLhs = regions[0][0] + (regionLhs - regions[0][2]);
- var aRhs = regions[0][1] + (regionRhs - regions[0][3]);
- var bLhs = regions[2][0] + (regionLhs - regions[2][2]);
- var bRhs = regions[2][1] + (regionRhs - regions[2][3]);
- result.push([
- -1,
- aLhs,
- aRhs - aLhs,
- regionLhs,
- regionRhs - regionLhs,
- bLhs,
- bRhs - bLhs
- ]);
- }
- commonOffset = regionRhs;
- }
- copyCommon(o.length);
- return result;
- }
- function diff3Merge2(a, o, b) {
- var result = [];
- var files = [a, o, b];
- var indices = diff3MergeIndices(a, o, b);
- var okLines = [];
- function flushOk() {
- if (okLines.length) {
- result.push({
- ok: okLines
- });
- }
- okLines = [];
- }
- function pushOk(xs) {
- for (var j = 0; j < xs.length; j++) {
- okLines.push(xs[j]);
- }
- }
- function isTrueConflict(rec) {
- if (rec[2] != rec[6])
- return true;
- var aoff = rec[1];
- var boff = rec[5];
- for (var j = 0; j < rec[2]; j++) {
- if (a[j + aoff] != b[j + boff])
- return true;
- }
- return false;
- }
- for (var i = 0; i < indices.length; i++) {
- var x = indices[i];
- var side = x[0];
- if (side == -1) {
- if (!isTrueConflict(x)) {
- pushOk(files[0].slice(x[1], x[1] + x[2]));
- } else {
- flushOk();
- result.push({
- conflict: {
- a: a.slice(x[1], x[1] + x[2]),
- aIndex: x[1],
- o: o.slice(x[3], x[3] + x[4]),
- oIndex: x[3],
- b: b.slice(x[5], x[5] + x[6]),
- bIndex: x[5]
- }
- });
- }
- } else {
- pushOk(files[side].slice(x[1], x[1] + x[2]));
- }
- }
- flushOk();
- return result;
- }
- module2.exports = diff3Merge2;
- }
- });
- // node_modules/ms/index.js
- var require_ms = __commonJS({
- "node_modules/ms/index.js"(exports, module2) {
- init_polyfill_buffer();
- var s = 1e3;
- var m = s * 60;
- var h = m * 60;
- var d = h * 24;
- var w = d * 7;
- var y = d * 365.25;
- module2.exports = function(val, options) {
- options = options || {};
- var type = typeof val;
- if (type === "string" && val.length > 0) {
- return parse2(val);
- } else if (type === "number" && isFinite(val)) {
- return options.long ? fmtLong(val) : fmtShort(val);
- }
- throw new Error("val is not a non-empty string or a valid number. val=" + JSON.stringify(val));
- };
- function parse2(str) {
- str = String(str);
- if (str.length > 100) {
- return;
- }
- var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);
- if (!match) {
- return;
- }
- var n = parseFloat(match[1]);
- var type = (match[2] || "ms").toLowerCase();
- switch (type) {
- case "years":
- case "year":
- case "yrs":
- case "yr":
- case "y":
- return n * y;
- case "weeks":
- case "week":
- case "w":
- return n * w;
- case "days":
- case "day":
- case "d":
- return n * d;
- case "hours":
- case "hour":
- case "hrs":
- case "hr":
- case "h":
- return n * h;
- case "minutes":
- case "minute":
- case "mins":
- case "min":
- case "m":
- return n * m;
- case "seconds":
- case "second":
- case "secs":
- case "sec":
- case "s":
- return n * s;
- case "milliseconds":
- case "millisecond":
- case "msecs":
- case "msec":
- case "ms":
- return n;
- default:
- return void 0;
- }
- }
- function fmtShort(ms) {
- var msAbs = Math.abs(ms);
- if (msAbs >= d) {
- return Math.round(ms / d) + "d";
- }
- if (msAbs >= h) {
- return Math.round(ms / h) + "h";
- }
- if (msAbs >= m) {
- return Math.round(ms / m) + "m";
- }
- if (msAbs >= s) {
- return Math.round(ms / s) + "s";
- }
- return ms + "ms";
- }
- function fmtLong(ms) {
- var msAbs = Math.abs(ms);
- if (msAbs >= d) {
- return plural(ms, msAbs, d, "day");
- }
- if (msAbs >= h) {
- return plural(ms, msAbs, h, "hour");
- }
- if (msAbs >= m) {
- return plural(ms, msAbs, m, "minute");
- }
- if (msAbs >= s) {
- return plural(ms, msAbs, s, "second");
- }
- return ms + " ms";
- }
- function plural(ms, msAbs, n, name) {
- var isPlural = msAbs >= n * 1.5;
- return Math.round(ms / n) + " " + name + (isPlural ? "s" : "");
- }
- }
- });
- // node_modules/debug/src/common.js
- var require_common2 = __commonJS({
- "node_modules/debug/src/common.js"(exports, module2) {
- init_polyfill_buffer();
- function setup(env) {
- createDebug.debug = createDebug;
- createDebug.default = createDebug;
- createDebug.coerce = coerce;
- createDebug.disable = disable;
- createDebug.enable = enable;
- createDebug.enabled = enabled;
- createDebug.humanize = require_ms();
- createDebug.destroy = destroy;
- Object.keys(env).forEach((key2) => {
- createDebug[key2] = env[key2];
- });
- createDebug.names = [];
- createDebug.skips = [];
- createDebug.formatters = {};
- function selectColor(namespace) {
- let hash2 = 0;
- for (let i = 0; i < namespace.length; i++) {
- hash2 = (hash2 << 5) - hash2 + namespace.charCodeAt(i);
- hash2 |= 0;
- }
- return createDebug.colors[Math.abs(hash2) % createDebug.colors.length];
- }
- createDebug.selectColor = selectColor;
- function createDebug(namespace) {
- let prevTime;
- let enableOverride = null;
- let namespacesCache;
- let enabledCache;
- function debug2(...args) {
- if (!debug2.enabled) {
- return;
- }
- const self3 = debug2;
- const curr = Number(new Date());
- const ms = curr - (prevTime || curr);
- self3.diff = ms;
- self3.prev = prevTime;
- self3.curr = curr;
- prevTime = curr;
- args[0] = createDebug.coerce(args[0]);
- if (typeof args[0] !== "string") {
- args.unshift("%O");
- }
- let index2 = 0;
- args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
- if (match === "%%") {
- return "%";
- }
- index2++;
- const formatter = createDebug.formatters[format];
- if (typeof formatter === "function") {
- const val = args[index2];
- match = formatter.call(self3, val);
- args.splice(index2, 1);
- index2--;
- }
- return match;
- });
- createDebug.formatArgs.call(self3, args);
- const logFn = self3.log || createDebug.log;
- logFn.apply(self3, args);
- }
- debug2.namespace = namespace;
- debug2.useColors = createDebug.useColors();
- debug2.color = createDebug.selectColor(namespace);
- debug2.extend = extend;
- debug2.destroy = createDebug.destroy;
- Object.defineProperty(debug2, "enabled", {
- enumerable: true,
- configurable: false,
- get: () => {
- if (enableOverride !== null) {
- return enableOverride;
- }
- if (namespacesCache !== createDebug.namespaces) {
- namespacesCache = createDebug.namespaces;
- enabledCache = createDebug.enabled(namespace);
- }
- return enabledCache;
- },
- set: (v) => {
- enableOverride = v;
- }
- });
- if (typeof createDebug.init === "function") {
- createDebug.init(debug2);
- }
- return debug2;
- }
- function extend(namespace, delimiter) {
- const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace);
- newDebug.log = this.log;
- return newDebug;
- }
- function enable(namespaces) {
- createDebug.save(namespaces);
- createDebug.namespaces = namespaces;
- createDebug.names = [];
- createDebug.skips = [];
- let i;
- const split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/);
- const len = split.length;
- for (i = 0; i < len; i++) {
- if (!split[i]) {
- continue;
- }
- namespaces = split[i].replace(/\*/g, ".*?");
- if (namespaces[0] === "-") {
- createDebug.skips.push(new RegExp("^" + namespaces.slice(1) + "$"));
- } else {
- createDebug.names.push(new RegExp("^" + namespaces + "$"));
- }
- }
- }
- function disable() {
- const namespaces = [
- ...createDebug.names.map(toNamespace),
- ...createDebug.skips.map(toNamespace).map((namespace) => "-" + namespace)
- ].join(",");
- createDebug.enable("");
- return namespaces;
- }
- function enabled(name) {
- if (name[name.length - 1] === "*") {
- return true;
- }
- let i;
- let len;
- for (i = 0, len = createDebug.skips.length; i < len; i++) {
- if (createDebug.skips[i].test(name)) {
- return false;
- }
- }
- for (i = 0, len = createDebug.names.length; i < len; i++) {
- if (createDebug.names[i].test(name)) {
- return true;
- }
- }
- return false;
- }
- function toNamespace(regexp) {
- return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, "*");
- }
- function coerce(val) {
- if (val instanceof Error) {
- return val.stack || val.message;
- }
- return val;
- }
- function destroy() {
- console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
- }
- createDebug.enable(createDebug.load());
- return createDebug;
- }
- module2.exports = setup;
- }
- });
- // node_modules/debug/src/browser.js
- var require_browser = __commonJS({
- "node_modules/debug/src/browser.js"(exports, module2) {
- init_polyfill_buffer();
- exports.formatArgs = formatArgs;
- exports.save = save;
- exports.load = load;
- exports.useColors = useColors;
- exports.storage = localstorage();
- exports.destroy = (() => {
- let warned = false;
- return () => {
- if (!warned) {
- warned = true;
- console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
- }
- };
- })();
- exports.colors = [
- "#0000CC",
- "#0000FF",
- "#0033CC",
- "#0033FF",
- "#0066CC",
- "#0066FF",
- "#0099CC",
- "#0099FF",
- "#00CC00",
- "#00CC33",
- "#00CC66",
- "#00CC99",
- "#00CCCC",
- "#00CCFF",
- "#3300CC",
- "#3300FF",
- "#3333CC",
- "#3333FF",
- "#3366CC",
- "#3366FF",
- "#3399CC",
- "#3399FF",
- "#33CC00",
- "#33CC33",
- "#33CC66",
- "#33CC99",
- "#33CCCC",
- "#33CCFF",
- "#6600CC",
- "#6600FF",
- "#6633CC",
- "#6633FF",
- "#66CC00",
- "#66CC33",
- "#9900CC",
- "#9900FF",
- "#9933CC",
- "#9933FF",
- "#99CC00",
- "#99CC33",
- "#CC0000",
- "#CC0033",
- "#CC0066",
- "#CC0099",
- "#CC00CC",
- "#CC00FF",
- "#CC3300",
- "#CC3333",
- "#CC3366",
- "#CC3399",
- "#CC33CC",
- "#CC33FF",
- "#CC6600",
- "#CC6633",
- "#CC9900",
- "#CC9933",
- "#CCCC00",
- "#CCCC33",
- "#FF0000",
- "#FF0033",
- "#FF0066",
- "#FF0099",
- "#FF00CC",
- "#FF00FF",
- "#FF3300",
- "#FF3333",
- "#FF3366",
- "#FF3399",
- "#FF33CC",
- "#FF33FF",
- "#FF6600",
- "#FF6633",
- "#FF9900",
- "#FF9933",
- "#FFCC00",
- "#FFCC33"
- ];
- function useColors() {
- if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
- return true;
- }
- if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
- return false;
- }
- return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
- }
- function formatArgs(args) {
- args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff);
- if (!this.useColors) {
- return;
- }
- const c = "color: " + this.color;
- args.splice(1, 0, c, "color: inherit");
- let index2 = 0;
- let lastC = 0;
- args[0].replace(/%[a-zA-Z%]/g, (match) => {
- if (match === "%%") {
- return;
- }
- index2++;
- if (match === "%c") {
- lastC = index2;
- }
- });
- args.splice(lastC, 0, c);
- }
- exports.log = console.debug || console.log || (() => {
- });
- function save(namespaces) {
- try {
- if (namespaces) {
- exports.storage.setItem("debug", namespaces);
- } else {
- exports.storage.removeItem("debug");
- }
- } catch (error) {
- }
- }
- function load() {
- let r;
- try {
- r = exports.storage.getItem("debug");
- } catch (error) {
- }
- if (!r && typeof process !== "undefined" && "env" in process) {
- r = process.env.DEBUG;
- }
- return r;
- }
- function localstorage() {
- try {
- return localStorage;
- } catch (error) {
- }
- }
- module2.exports = require_common2()(exports);
- var { formatters } = module2.exports;
- formatters.j = function(v) {
- try {
- return JSON.stringify(v);
- } catch (error) {
- return "[UnexpectedJSONParseError]: " + error.message;
- }
- };
- }
- });
- // node_modules/@kwsites/file-exists/dist/src/index.js
- var require_src = __commonJS({
- "node_modules/@kwsites/file-exists/dist/src/index.js"(exports) {
- init_polyfill_buffer();
- "use strict";
- var __importDefault = exports && exports.__importDefault || function(mod) {
- return mod && mod.__esModule ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var fs_1 = require("fs");
- var debug_1 = __importDefault(require_browser());
- var log2 = debug_1.default("@kwsites/file-exists");
- function check(path2, isFile, isDirectory) {
- log2(`checking %s`, path2);
- try {
- const stat = fs_1.statSync(path2);
- if (stat.isFile() && isFile) {
- log2(`[OK] path represents a file`);
- return true;
- }
- if (stat.isDirectory() && isDirectory) {
- log2(`[OK] path represents a directory`);
- return true;
- }
- log2(`[FAIL] path represents something other than a file or directory`);
- return false;
- } catch (e) {
- if (e.code === "ENOENT") {
- log2(`[FAIL] path is not accessible: %o`, e);
- return false;
- }
- log2(`[FATAL] %o`, e);
- throw e;
- }
- }
- function exists2(path2, type = exports.READABLE) {
- return check(path2, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0);
- }
- exports.exists = exists2;
- exports.FILE = 1;
- exports.FOLDER = 2;
- exports.READABLE = exports.FILE + exports.FOLDER;
- }
- });
- // node_modules/@kwsites/file-exists/dist/index.js
- var require_dist = __commonJS({
- "node_modules/@kwsites/file-exists/dist/index.js"(exports) {
- init_polyfill_buffer();
- "use strict";
- function __export3(m) {
- for (var p in m)
- if (!exports.hasOwnProperty(p))
- exports[p] = m[p];
- }
- Object.defineProperty(exports, "__esModule", { value: true });
- __export3(require_src());
- }
- });
- // node_modules/@kwsites/promise-deferred/dist/index.js
- var require_dist2 = __commonJS({
- "node_modules/@kwsites/promise-deferred/dist/index.js"(exports) {
- init_polyfill_buffer();
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.createDeferred = exports.deferred = void 0;
- function deferred2() {
- let done;
- let fail;
- let status2 = "pending";
- const promise2 = new Promise((_done, _fail) => {
- done = _done;
- fail = _fail;
- });
- return {
- promise: promise2,
- done(result) {
- if (status2 === "pending") {
- status2 = "resolved";
- done(result);
- }
- },
- fail(error) {
- if (status2 === "pending") {
- status2 = "rejected";
- fail(error);
- }
- },
- get fulfilled() {
- return status2 !== "pending";
- },
- get status() {
- return status2;
- }
- };
- }
- exports.deferred = deferred2;
- exports.createDeferred = deferred2;
- exports.default = deferred2;
- }
- });
- // node_modules/hogan.js/lib/compiler.js
- var require_compiler = __commonJS({
- "node_modules/hogan.js/lib/compiler.js"(exports) {
- init_polyfill_buffer();
- (function(Hogan4) {
- var rIsWhitespace = /\S/, rQuot = /\"/g, rNewline = /\n/g, rCr = /\r/g, rSlash = /\\/g, rLineSep = /\u2028/, rParagraphSep = /\u2029/;
- Hogan4.tags = {
- "#": 1,
- "^": 2,
- "<": 3,
- "$": 4,
- "/": 5,
- "!": 6,
- ">": 7,
- "=": 8,
- "_v": 9,
- "{": 10,
- "&": 11,
- "_t": 12
- };
- Hogan4.scan = function scan(text2, delimiters) {
- var len = text2.length, IN_TEXT = 0, IN_TAG_TYPE = 1, IN_TAG = 2, state = IN_TEXT, tagType = null, tag2 = null, buf = "", tokens = [], seenTag = false, i = 0, lineStart = 0, otag = "{{", ctag = "}}";
- function addBuf() {
- if (buf.length > 0) {
- tokens.push({ tag: "_t", text: new String(buf) });
- buf = "";
- }
- }
- function lineIsWhitespace() {
- var isAllWhitespace = true;
- for (var j = lineStart; j < tokens.length; j++) {
- isAllWhitespace = Hogan4.tags[tokens[j].tag] < Hogan4.tags["_v"] || tokens[j].tag == "_t" && tokens[j].text.match(rIsWhitespace) === null;
- if (!isAllWhitespace) {
- return false;
- }
- }
- return isAllWhitespace;
- }
- function filterLine(haveSeenTag, noNewLine) {
- addBuf();
- if (haveSeenTag && lineIsWhitespace()) {
- for (var j = lineStart, next; j < tokens.length; j++) {
- if (tokens[j].text) {
- if ((next = tokens[j + 1]) && next.tag == ">") {
- next.indent = tokens[j].text.toString();
- }
- tokens.splice(j, 1);
- }
- }
- } else if (!noNewLine) {
- tokens.push({ tag: "\n" });
- }
- seenTag = false;
- lineStart = tokens.length;
- }
- function changeDelimiters(text3, index2) {
- var close = "=" + ctag, closeIndex = text3.indexOf(close, index2), delimiters2 = trim(text3.substring(text3.indexOf("=", index2) + 1, closeIndex)).split(" ");
- otag = delimiters2[0];
- ctag = delimiters2[delimiters2.length - 1];
- return closeIndex + close.length - 1;
- }
- if (delimiters) {
- delimiters = delimiters.split(" ");
- otag = delimiters[0];
- ctag = delimiters[1];
- }
- for (i = 0; i < len; i++) {
- if (state == IN_TEXT) {
- if (tagChange(otag, text2, i)) {
- --i;
- addBuf();
- state = IN_TAG_TYPE;
- } else {
- if (text2.charAt(i) == "\n") {
- filterLine(seenTag);
- } else {
- buf += text2.charAt(i);
- }
- }
- } else if (state == IN_TAG_TYPE) {
- i += otag.length - 1;
- tag2 = Hogan4.tags[text2.charAt(i + 1)];
- tagType = tag2 ? text2.charAt(i + 1) : "_v";
- if (tagType == "=") {
- i = changeDelimiters(text2, i);
- state = IN_TEXT;
- } else {
- if (tag2) {
- i++;
- }
- state = IN_TAG;
- }
- seenTag = i;
- } else {
- if (tagChange(ctag, text2, i)) {
- tokens.push({
- tag: tagType,
- n: trim(buf),
- otag,
- ctag,
- i: tagType == "/" ? seenTag - otag.length : i + ctag.length
- });
- buf = "";
- i += ctag.length - 1;
- state = IN_TEXT;
- if (tagType == "{") {
- if (ctag == "}}") {
- i++;
- } else {
- cleanTripleStache(tokens[tokens.length - 1]);
- }
- }
- } else {
- buf += text2.charAt(i);
- }
- }
- }
- filterLine(seenTag, true);
- return tokens;
- };
- function cleanTripleStache(token) {
- if (token.n.substr(token.n.length - 1) === "}") {
- token.n = token.n.substring(0, token.n.length - 1);
- }
- }
- function trim(s) {
- if (s.trim) {
- return s.trim();
- }
- return s.replace(/^\s*|\s*$/g, "");
- }
- function tagChange(tag2, text2, index2) {
- if (text2.charAt(index2) != tag2.charAt(0)) {
- return false;
- }
- for (var i = 1, l = tag2.length; i < l; i++) {
- if (text2.charAt(index2 + i) != tag2.charAt(i)) {
- return false;
- }
- }
- return true;
- }
- var allowedInSuper = { "_t": true, "\n": true, "$": true, "/": true };
- function buildTree(tokens, kind, stack, customTags) {
- var instructions = [], opener = null, tail = null, token = null;
- tail = stack[stack.length - 1];
- while (tokens.length > 0) {
- token = tokens.shift();
- if (tail && tail.tag == "<" && !(token.tag in allowedInSuper)) {
- throw new Error("Illegal content in < super tag.");
- }
- if (Hogan4.tags[token.tag] <= Hogan4.tags["$"] || isOpener(token, customTags)) {
- stack.push(token);
- token.nodes = buildTree(tokens, token.tag, stack, customTags);
- } else if (token.tag == "/") {
- if (stack.length === 0) {
- throw new Error("Closing tag without opener: /" + token.n);
- }
- opener = stack.pop();
- if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) {
- throw new Error("Nesting error: " + opener.n + " vs. " + token.n);
- }
- opener.end = token.i;
- return instructions;
- } else if (token.tag == "\n") {
- token.last = tokens.length == 0 || tokens[0].tag == "\n";
- }
- instructions.push(token);
- }
- if (stack.length > 0) {
- throw new Error("missing closing tag: " + stack.pop().n);
- }
- return instructions;
- }
- function isOpener(token, tags) {
- for (var i = 0, l = tags.length; i < l; i++) {
- if (tags[i].o == token.n) {
- token.tag = "#";
- return true;
- }
- }
- }
- function isCloser(close, open, tags) {
- for (var i = 0, l = tags.length; i < l; i++) {
- if (tags[i].c == close && tags[i].o == open) {
- return true;
- }
- }
- }
- function stringifySubstitutions(obj) {
- var items = [];
- for (var key2 in obj) {
- items.push('"' + esc(key2) + '": function(c,p,t,i) {' + obj[key2] + "}");
- }
- return "{ " + items.join(",") + " }";
- }
- function stringifyPartials(codeObj) {
- var partials = [];
- for (var key2 in codeObj.partials) {
- partials.push('"' + esc(key2) + '":{name:"' + esc(codeObj.partials[key2].name) + '", ' + stringifyPartials(codeObj.partials[key2]) + "}");
- }
- return "partials: {" + partials.join(",") + "}, subs: " + stringifySubstitutions(codeObj.subs);
- }
- Hogan4.stringify = function(codeObj, text2, options) {
- return "{code: function (c,p,i) { " + Hogan4.wrapMain(codeObj.code) + " }," + stringifyPartials(codeObj) + "}";
- };
- var serialNo = 0;
- Hogan4.generate = function(tree, text2, options) {
- serialNo = 0;
- var context = { code: "", subs: {}, partials: {} };
- Hogan4.walk(tree, context);
- if (options.asString) {
- return this.stringify(context, text2, options);
- }
- return this.makeTemplate(context, text2, options);
- };
- Hogan4.wrapMain = function(code) {
- return 'var t=this;t.b(i=i||"");' + code + "return t.fl();";
- };
- Hogan4.template = Hogan4.Template;
- Hogan4.makeTemplate = function(codeObj, text2, options) {
- var template = this.makePartials(codeObj);
- template.code = new Function("c", "p", "i", this.wrapMain(codeObj.code));
- return new this.template(template, text2, this, options);
- };
- Hogan4.makePartials = function(codeObj) {
- var key2, template = { subs: {}, partials: codeObj.partials, name: codeObj.name };
- for (key2 in template.partials) {
- template.partials[key2] = this.makePartials(template.partials[key2]);
- }
- for (key2 in codeObj.subs) {
- template.subs[key2] = new Function("c", "p", "t", "i", codeObj.subs[key2]);
- }
- return template;
- };
- function esc(s) {
- return s.replace(rSlash, "\\\\").replace(rQuot, '\\"').replace(rNewline, "\\n").replace(rCr, "\\r").replace(rLineSep, "\\u2028").replace(rParagraphSep, "\\u2029");
- }
- function chooseMethod(s) {
- return ~s.indexOf(".") ? "d" : "f";
- }
- function createPartial(node, context) {
- var prefix = "<" + (context.prefix || "");
- var sym = prefix + node.n + serialNo++;
- context.partials[sym] = { name: node.n, partials: {} };
- context.code += 't.b(t.rp("' + esc(sym) + '",c,p,"' + (node.indent || "") + '"));';
- return sym;
- }
- Hogan4.codegen = {
- "#": function(node, context) {
- context.code += "if(t.s(t." + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,1),c,p,0,' + node.i + "," + node.end + ',"' + node.otag + " " + node.ctag + '")){t.rs(c,p,function(c,p,t){';
- Hogan4.walk(node.nodes, context);
- context.code += "});c.pop();}";
- },
- "^": function(node, context) {
- context.code += "if(!t.s(t." + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,1),c,p,1,0,0,"")){';
- Hogan4.walk(node.nodes, context);
- context.code += "};";
- },
- ">": createPartial,
- "<": function(node, context) {
- var ctx = { partials: {}, code: "", subs: {}, inPartial: true };
- Hogan4.walk(node.nodes, ctx);
- var template = context.partials[createPartial(node, context)];
- template.subs = ctx.subs;
- template.partials = ctx.partials;
- },
- "$": function(node, context) {
- var ctx = { subs: {}, code: "", partials: context.partials, prefix: node.n };
- Hogan4.walk(node.nodes, ctx);
- context.subs[node.n] = ctx.code;
- if (!context.inPartial) {
- context.code += 't.sub("' + esc(node.n) + '",c,p,i);';
- }
- },
- "\n": function(node, context) {
- context.code += write('"\\n"' + (node.last ? "" : " + i"));
- },
- "_v": function(node, context) {
- context.code += "t.b(t.v(t." + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,0)));';
- },
- "_t": function(node, context) {
- context.code += write('"' + esc(node.text) + '"');
- },
- "{": tripleStache,
- "&": tripleStache
- };
- function tripleStache(node, context) {
- context.code += "t.b(t.t(t." + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,0)));';
- }
- function write(s) {
- return "t.b(" + s + ");";
- }
- Hogan4.walk = function(nodelist, context) {
- var func;
- for (var i = 0, l = nodelist.length; i < l; i++) {
- func = Hogan4.codegen[nodelist[i].tag];
- func && func(nodelist[i], context);
- }
- return context;
- };
- Hogan4.parse = function(tokens, text2, options) {
- options = options || {};
- return buildTree(tokens, "", [], options.sectionTags || []);
- };
- Hogan4.cache = {};
- Hogan4.cacheKey = function(text2, options) {
- return [text2, !!options.asString, !!options.disableLambda, options.delimiters, !!options.modelGet].join("||");
- };
- Hogan4.compile = function(text2, options) {
- options = options || {};
- var key2 = Hogan4.cacheKey(text2, options);
- var template = this.cache[key2];
- if (template) {
- var partials = template.partials;
- for (var name in partials) {
- delete partials[name].instance;
- }
- return template;
- }
- template = this.generate(this.parse(this.scan(text2, options.delimiters), text2, options), text2, options);
- return this.cache[key2] = template;
- };
- })(typeof exports !== "undefined" ? exports : Hogan);
- }
- });
- // node_modules/hogan.js/lib/template.js
- var require_template = __commonJS({
- "node_modules/hogan.js/lib/template.js"(exports) {
- init_polyfill_buffer();
- var Hogan4 = {};
- (function(Hogan5) {
- Hogan5.Template = function(codeObj, text2, compiler, options) {
- codeObj = codeObj || {};
- this.r = codeObj.code || this.r;
- this.c = compiler;
- this.options = options || {};
- this.text = text2 || "";
- this.partials = codeObj.partials || {};
- this.subs = codeObj.subs || {};
- this.buf = "";
- };
- Hogan5.Template.prototype = {
- r: function(context, partials, indent2) {
- return "";
- },
- v: hoganEscape,
- t: coerceToString,
- render: function render2(context, partials, indent2) {
- return this.ri([context], partials || {}, indent2);
- },
- ri: function(context, partials, indent2) {
- return this.r(context, partials, indent2);
- },
- ep: function(symbol, partials) {
- var partial = this.partials[symbol];
- var template = partials[partial.name];
- if (partial.instance && partial.base == template) {
- return partial.instance;
- }
- if (typeof template == "string") {
- if (!this.c) {
- throw new Error("No compiler available.");
- }
- template = this.c.compile(template, this.options);
- }
- if (!template) {
- return null;
- }
- this.partials[symbol].base = template;
- if (partial.subs) {
- if (!partials.stackText)
- partials.stackText = {};
- for (key in partial.subs) {
- if (!partials.stackText[key]) {
- partials.stackText[key] = this.activeSub !== void 0 && partials.stackText[this.activeSub] ? partials.stackText[this.activeSub] : this.text;
- }
- }
- template = createSpecializedPartial(template, partial.subs, partial.partials, this.stackSubs, this.stackPartials, partials.stackText);
- }
- this.partials[symbol].instance = template;
- return template;
- },
- rp: function(symbol, context, partials, indent2) {
- var partial = this.ep(symbol, partials);
- if (!partial) {
- return "";
- }
- return partial.ri(context, partials, indent2);
- },
- rs: function(context, partials, section) {
- var tail = context[context.length - 1];
- if (!isArray(tail)) {
- section(context, partials, this);
- return;
- }
- for (var i = 0; i < tail.length; i++) {
- context.push(tail[i]);
- section(context, partials, this);
- context.pop();
- }
- },
- s: function(val, ctx, partials, inverted, start, end, tags) {
- var pass;
- if (isArray(val) && val.length === 0) {
- return false;
- }
- if (typeof val == "function") {
- val = this.ms(val, ctx, partials, inverted, start, end, tags);
- }
- pass = !!val;
- if (!inverted && pass && ctx) {
- ctx.push(typeof val == "object" ? val : ctx[ctx.length - 1]);
- }
- return pass;
- },
- d: function(key2, ctx, partials, returnFound) {
- var found, names = key2.split("."), val = this.f(names[0], ctx, partials, returnFound), doModelGet = this.options.modelGet, cx = null;
- if (key2 === "." && isArray(ctx[ctx.length - 2])) {
- val = ctx[ctx.length - 1];
- } else {
- for (var i = 1; i < names.length; i++) {
- found = findInScope(names[i], val, doModelGet);
- if (found !== void 0) {
- cx = val;
- val = found;
- } else {
- val = "";
- }
- }
- }
- if (returnFound && !val) {
- return false;
- }
- if (!returnFound && typeof val == "function") {
- ctx.push(cx);
- val = this.mv(val, ctx, partials);
- ctx.pop();
- }
- return val;
- },
- f: function(key2, ctx, partials, returnFound) {
- var val = false, v = null, found = false, doModelGet = this.options.modelGet;
- for (var i = ctx.length - 1; i >= 0; i--) {
- v = ctx[i];
- val = findInScope(key2, v, doModelGet);
- if (val !== void 0) {
- found = true;
- break;
- }
- }
- if (!found) {
- return returnFound ? false : "";
- }
- if (!returnFound && typeof val == "function") {
- val = this.mv(val, ctx, partials);
- }
- return val;
- },
- ls: function(func, cx, partials, text2, tags) {
- var oldTags = this.options.delimiters;
- this.options.delimiters = tags;
- this.b(this.ct(coerceToString(func.call(cx, text2)), cx, partials));
- this.options.delimiters = oldTags;
- return false;
- },
- ct: function(text2, cx, partials) {
- if (this.options.disableLambda) {
- throw new Error("Lambda features disabled.");
- }
- return this.c.compile(text2, this.options).render(cx, partials);
- },
- b: function(s) {
- this.buf += s;
- },
- fl: function() {
- var r = this.buf;
- this.buf = "";
- return r;
- },
- ms: function(func, ctx, partials, inverted, start, end, tags) {
- var textSource, cx = ctx[ctx.length - 1], result = func.call(cx);
- if (typeof result == "function") {
- if (inverted) {
- return true;
- } else {
- textSource = this.activeSub && this.subsText && this.subsText[this.activeSub] ? this.subsText[this.activeSub] : this.text;
- return this.ls(result, cx, partials, textSource.substring(start, end), tags);
- }
- }
- return result;
- },
- mv: function(func, ctx, partials) {
- var cx = ctx[ctx.length - 1];
- var result = func.call(cx);
- if (typeof result == "function") {
- return this.ct(coerceToString(result.call(cx)), cx, partials);
- }
- return result;
- },
- sub: function(name, context, partials, indent2) {
- var f = this.subs[name];
- if (f) {
- this.activeSub = name;
- f(context, partials, this, indent2);
- this.activeSub = false;
- }
- }
- };
- function findInScope(key2, scope, doModelGet) {
- var val;
- if (scope && typeof scope == "object") {
- if (scope[key2] !== void 0) {
- val = scope[key2];
- } else if (doModelGet && scope.get && typeof scope.get == "function") {
- val = scope.get(key2);
- }
- }
- return val;
- }
- function createSpecializedPartial(instance6, subs, partials, stackSubs, stackPartials, stackText) {
- function PartialTemplate() {
- }
- ;
- PartialTemplate.prototype = instance6;
- function Substitutions() {
- }
- ;
- Substitutions.prototype = instance6.subs;
- var key2;
- var partial = new PartialTemplate();
- partial.subs = new Substitutions();
- partial.subsText = {};
- partial.buf = "";
- stackSubs = stackSubs || {};
- partial.stackSubs = stackSubs;
- partial.subsText = stackText;
- for (key2 in subs) {
- if (!stackSubs[key2])
- stackSubs[key2] = subs[key2];
- }
- for (key2 in stackSubs) {
- partial.subs[key2] = stackSubs[key2];
- }
- stackPartials = stackPartials || {};
- partial.stackPartials = stackPartials;
- for (key2 in partials) {
- if (!stackPartials[key2])
- stackPartials[key2] = partials[key2];
- }
- for (key2 in stackPartials) {
- partial.partials[key2] = stackPartials[key2];
- }
- return partial;
- }
- var rAmp = /&/g, rLt = /</g, rGt = />/g, rApos = /\'/g, rQuot = /\"/g, hChars = /[&<>\"\']/;
- function coerceToString(val) {
- return String(val === null || val === void 0 ? "" : val);
- }
- function hoganEscape(str) {
- str = coerceToString(str);
- return hChars.test(str) ? str.replace(rAmp, "&").replace(rLt, "<").replace(rGt, ">").replace(rApos, "'").replace(rQuot, """) : str;
- }
- var isArray = Array.isArray || function(a) {
- return Object.prototype.toString.call(a) === "[object Array]";
- };
- })(typeof exports !== "undefined" ? exports : Hogan4);
- }
- });
- // node_modules/hogan.js/lib/hogan.js
- var require_hogan = __commonJS({
- "node_modules/hogan.js/lib/hogan.js"(exports, module2) {
- init_polyfill_buffer();
- var Hogan4 = require_compiler();
- Hogan4.Template = require_template().Template;
- Hogan4.template = Hogan4.Template;
- module2.exports = Hogan4;
- }
- });
- // node_modules/feather-icons/dist/feather.js
- var require_feather = __commonJS({
- "node_modules/feather-icons/dist/feather.js"(exports, module2) {
- init_polyfill_buffer();
- (function webpackUniversalModuleDefinition(root, factory) {
- if (typeof exports === "object" && typeof module2 === "object")
- module2.exports = factory();
- else if (typeof define === "function" && define.amd)
- define([], factory);
- else if (typeof exports === "object")
- exports["feather"] = factory();
- else
- root["feather"] = factory();
- })(typeof self !== "undefined" ? self : exports, function() {
- return function(modules) {
- var installedModules = {};
- function __webpack_require__(moduleId) {
- if (installedModules[moduleId]) {
- return installedModules[moduleId].exports;
- }
- var module3 = installedModules[moduleId] = {
- i: moduleId,
- l: false,
- exports: {}
- };
- modules[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__);
- module3.l = true;
- return module3.exports;
- }
- __webpack_require__.m = modules;
- __webpack_require__.c = installedModules;
- __webpack_require__.d = function(exports2, name, getter) {
- if (!__webpack_require__.o(exports2, name)) {
- Object.defineProperty(exports2, name, {
- configurable: false,
- enumerable: true,
- get: getter
- });
- }
- };
- __webpack_require__.r = function(exports2) {
- Object.defineProperty(exports2, "__esModule", { value: true });
- };
- __webpack_require__.n = function(module3) {
- var getter = module3 && module3.__esModule ? function getDefault() {
- return module3["default"];
- } : function getModuleExports() {
- return module3;
- };
- __webpack_require__.d(getter, "a", getter);
- return getter;
- };
- __webpack_require__.o = function(object, property) {
- return Object.prototype.hasOwnProperty.call(object, property);
- };
- __webpack_require__.p = "";
- return __webpack_require__(__webpack_require__.s = 0);
- }({
- "./dist/icons.json": function(module3) {
- module3.exports = { "activity": '<polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline>', "airplay": '<path d="M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1"></path><polygon points="12 15 17 21 7 21 12 15"></polygon>', "alert-circle": '<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line>', "alert-octagon": '<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line>', "alert-triangle": '<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line>', "align-center": '<line x1="18" y1="10" x2="6" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="18" y1="18" x2="6" y2="18"></line>', "align-justify": '<line x1="21" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="3" y2="18"></line>', "align-left": '<line x1="17" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="17" y1="18" x2="3" y2="18"></line>', "align-right": '<line x1="21" y1="10" x2="7" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="21" y1="18" x2="7" y2="18"></line>', "anchor": '<circle cx="12" cy="5" r="3"></circle><line x1="12" y1="22" x2="12" y2="8"></line><path d="M5 12H2a10 10 0 0 0 20 0h-3"></path>', "aperture": '<circle cx="12" cy="12" r="10"></circle><line x1="14.31" y1="8" x2="20.05" y2="17.94"></line><line x1="9.69" y1="8" x2="21.17" y2="8"></line><line x1="7.38" y1="12" x2="13.12" y2="2.06"></line><line x1="9.69" y1="16" x2="3.95" y2="6.06"></line><line x1="14.31" y1="16" x2="2.83" y2="16"></line><line x1="16.62" y1="12" x2="10.88" y2="21.94"></line>', "archive": '<polyline points="21 8 21 21 3 21 3 8"></polyline><rect x="1" y="3" width="22" height="5"></rect><line x1="10" y1="12" x2="14" y2="12"></line>', "arrow-down-circle": '<circle cx="12" cy="12" r="10"></circle><polyline points="8 12 12 16 16 12"></polyline><line x1="12" y1="8" x2="12" y2="16"></line>', "arrow-down-left": '<line x1="17" y1="7" x2="7" y2="17"></line><polyline points="17 17 7 17 7 7"></polyline>', "arrow-down-right": '<line x1="7" y1="7" x2="17" y2="17"></line><polyline points="17 7 17 17 7 17"></polyline>', "arrow-down": '<line x1="12" y1="5" x2="12" y2="19"></line><polyline points="19 12 12 19 5 12"></polyline>', "arrow-left-circle": '<circle cx="12" cy="12" r="10"></circle><polyline points="12 8 8 12 12 16"></polyline><line x1="16" y1="12" x2="8" y2="12"></line>', "arrow-left": '<line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline>', "arrow-right-circle": '<circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line>', "arrow-right": '<line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline>', "arrow-up-circle": '<circle cx="12" cy="12" r="10"></circle><polyline points="16 12 12 8 8 12"></polyline><line x1="12" y1="16" x2="12" y2="8"></line>', "arrow-up-left": '<line x1="17" y1="17" x2="7" y2="7"></line><polyline points="7 17 7 7 17 7"></polyline>', "arrow-up-right": '<line x1="7" y1="17" x2="17" y2="7"></line><polyline points="7 7 17 7 17 17"></polyline>', "arrow-up": '<line x1="12" y1="19" x2="12" y2="5"></line><polyline points="5 12 12 5 19 12"></polyline>', "at-sign": '<circle cx="12" cy="12" r="4"></circle><path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94"></path>', "award": '<circle cx="12" cy="8" r="7"></circle><polyline points="8.21 13.89 7 23 12 20 17 23 15.79 13.88"></polyline>', "bar-chart-2": '<line x1="18" y1="20" x2="18" y2="10"></line><line x1="12" y1="20" x2="12" y2="4"></line><line x1="6" y1="20" x2="6" y2="14"></line>', "bar-chart": '<line x1="12" y1="20" x2="12" y2="10"></line><line x1="18" y1="20" x2="18" y2="4"></line><line x1="6" y1="20" x2="6" y2="16"></line>', "battery-charging": '<path d="M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19"></path><line x1="23" y1="13" x2="23" y2="11"></line><polyline points="11 6 7 12 13 12 9 18"></polyline>', "battery": '<rect x="1" y="6" width="18" height="12" rx="2" ry="2"></rect><line x1="23" y1="13" x2="23" y2="11"></line>', "bell-off": '<path d="M13.73 21a2 2 0 0 1-3.46 0"></path><path d="M18.63 13A17.89 17.89 0 0 1 18 8"></path><path d="M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14"></path><path d="M18 8a6 6 0 0 0-9.33-5"></path><line x1="1" y1="1" x2="23" y2="23"></line>', "bell": '<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path>', "bluetooth": '<polyline points="6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5"></polyline>', "bold": '<path d="M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z"></path><path d="M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z"></path>', "book-open": '<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path>', "book": '<path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path>', "bookmark": '<path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"></path>', "box": '<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line>', "briefcase": '<rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path>', "calendar": '<rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line>', "camera-off": '<line x1="1" y1="1" x2="23" y2="23"></line><path d="M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56"></path>', "camera": '<path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"></path><circle cx="12" cy="13" r="4"></circle>', "cast": '<path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path><line x1="2" y1="20" x2="2.01" y2="20"></line>', "check-circle": '<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline>', "check-square": '<polyline points="9 11 12 14 22 4"></polyline><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path>', "check": '<polyline points="20 6 9 17 4 12"></polyline>', "chevron-down": '<polyline points="6 9 12 15 18 9"></polyline>', "chevron-left": '<polyline points="15 18 9 12 15 6"></polyline>', "chevron-right": '<polyline points="9 18 15 12 9 6"></polyline>', "chevron-up": '<polyline points="18 15 12 9 6 15"></polyline>', "chevrons-down": '<polyline points="7 13 12 18 17 13"></polyline><polyline points="7 6 12 11 17 6"></polyline>', "chevrons-left": '<polyline points="11 17 6 12 11 7"></polyline><polyline points="18 17 13 12 18 7"></polyline>', "chevrons-right": '<polyline points="13 17 18 12 13 7"></polyline><polyline points="6 17 11 12 6 7"></polyline>', "chevrons-up": '<polyline points="17 11 12 6 7 11"></polyline><polyline points="17 18 12 13 7 18"></polyline>', "chrome": '<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="4"></circle><line x1="21.17" y1="8" x2="12" y2="8"></line><line x1="3.95" y1="6.06" x2="8.54" y2="14"></line><line x1="10.88" y1="21.94" x2="15.46" y2="14"></line>', "circle": '<circle cx="12" cy="12" r="10"></circle>', "clipboard": '<path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path><rect x="8" y="2" width="8" height="4" rx="1" ry="1"></rect>', "clock": '<circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline>', "cloud-drizzle": '<line x1="8" y1="19" x2="8" y2="21"></line><line x1="8" y1="13" x2="8" y2="15"></line><line x1="16" y1="19" x2="16" y2="21"></line><line x1="16" y1="13" x2="16" y2="15"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="12" y1="15" x2="12" y2="17"></line><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"></path>', "cloud-lightning": '<path d="M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9"></path><polyline points="13 11 9 17 15 17 11 23"></polyline>', "cloud-off": '<path d="M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3"></path><line x1="1" y1="1" x2="23" y2="23"></line>', "cloud-rain": '<line x1="16" y1="13" x2="16" y2="21"></line><line x1="8" y1="13" x2="8" y2="21"></line><line x1="12" y1="15" x2="12" y2="23"></line><path d="M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25"></path>', "cloud-snow": '<path d="M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25"></path><line x1="8" y1="16" x2="8.01" y2="16"></line><line x1="8" y1="20" x2="8.01" y2="20"></line><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="12" y1="22" x2="12.01" y2="22"></line><line x1="16" y1="16" x2="16.01" y2="16"></line><line x1="16" y1="20" x2="16.01" y2="20"></line>', "cloud": '<path d="M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z"></path>', "code": '<polyline points="16 18 22 12 16 6"></polyline><polyline points="8 6 2 12 8 18"></polyline>', "codepen": '<polygon points="12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2"></polygon><line x1="12" y1="22" x2="12" y2="15.5"></line><polyline points="22 8.5 12 15.5 2 8.5"></polyline><polyline points="2 15.5 12 8.5 22 15.5"></polyline><line x1="12" y1="2" x2="12" y2="8.5"></line>', "codesandbox": '<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="7.5 4.21 12 6.81 16.5 4.21"></polyline><polyline points="7.5 19.79 7.5 14.6 3 12"></polyline><polyline points="21 12 16.5 14.6 16.5 19.79"></polyline><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line>', "coffee": '<path d="M18 8h1a4 4 0 0 1 0 8h-1"></path><path d="M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z"></path><line x1="6" y1="1" x2="6" y2="4"></line><line x1="10" y1="1" x2="10" y2="4"></line><line x1="14" y1="1" x2="14" y2="4"></line>', "columns": '<path d="M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18"></path>', "command": '<path d="M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z"></path>', "compass": '<circle cx="12" cy="12" r="10"></circle><polygon points="16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76"></polygon>', "copy": '<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>', "corner-down-left": '<polyline points="9 10 4 15 9 20"></polyline><path d="M20 4v7a4 4 0 0 1-4 4H4"></path>', "corner-down-right": '<polyline points="15 10 20 15 15 20"></polyline><path d="M4 4v7a4 4 0 0 0 4 4h12"></path>', "corner-left-down": '<polyline points="14 15 9 20 4 15"></polyline><path d="M20 4h-7a4 4 0 0 0-4 4v12"></path>', "corner-left-up": '<polyline points="14 9 9 4 4 9"></polyline><path d="M20 20h-7a4 4 0 0 1-4-4V4"></path>', "corner-right-down": '<polyline points="10 15 15 20 20 15"></polyline><path d="M4 4h7a4 4 0 0 1 4 4v12"></path>', "corner-right-up": '<polyline points="10 9 15 4 20 9"></polyline><path d="M4 20h7a4 4 0 0 0 4-4V4"></path>', "corner-up-left": '<polyline points="9 14 4 9 9 4"></polyline><path d="M20 20v-7a4 4 0 0 0-4-4H4"></path>', "corner-up-right": '<polyline points="15 14 20 9 15 4"></polyline><path d="M4 20v-7a4 4 0 0 1 4-4h12"></path>', "cpu": '<rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line>', "credit-card": '<rect x="1" y="4" width="22" height="16" rx="2" ry="2"></rect><line x1="1" y1="10" x2="23" y2="10"></line>', "crop": '<path d="M6.13 1L6 16a2 2 0 0 0 2 2h15"></path><path d="M1 6.13L16 6a2 2 0 0 1 2 2v15"></path>', "crosshair": '<circle cx="12" cy="12" r="10"></circle><line x1="22" y1="12" x2="18" y2="12"></line><line x1="6" y1="12" x2="2" y2="12"></line><line x1="12" y1="6" x2="12" y2="2"></line><line x1="12" y1="22" x2="12" y2="18"></line>', "database": '<ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"></path><path d="M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"></path>', "delete": '<path d="M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z"></path><line x1="18" y1="9" x2="12" y2="15"></line><line x1="12" y1="9" x2="18" y2="15"></line>', "disc": '<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="3"></circle>', "divide-circle": '<line x1="8" y1="12" x2="16" y2="12"></line><line x1="12" y1="16" x2="12" y2="16"></line><line x1="12" y1="8" x2="12" y2="8"></line><circle cx="12" cy="12" r="10"></circle>', "divide-square": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="8" y1="12" x2="16" y2="12"></line><line x1="12" y1="16" x2="12" y2="16"></line><line x1="12" y1="8" x2="12" y2="8"></line>', "divide": '<circle cx="12" cy="6" r="2"></circle><line x1="5" y1="12" x2="19" y2="12"></line><circle cx="12" cy="18" r="2"></circle>', "dollar-sign": '<line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>', "download-cloud": '<polyline points="8 17 12 21 16 17"></polyline><line x1="12" y1="12" x2="12" y2="21"></line><path d="M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29"></path>', "download": '<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line>', "dribbble": '<circle cx="12" cy="12" r="10"></circle><path d="M8.56 2.75c4.37 6.03 6.02 9.42 8.03 17.72m2.54-15.38c-3.72 4.35-8.94 5.66-16.88 5.85m19.5 1.9c-3.5-.93-6.63-.82-8.94 0-2.58.92-5.01 2.86-7.44 6.32"></path>', "droplet": '<path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path>', "edit-2": '<path d="M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"></path>', "edit-3": '<path d="M12 20h9"></path><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"></path>', "edit": '<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path>', "external-link": '<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line>', "eye-off": '<path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"></path><line x1="1" y1="1" x2="23" y2="23"></line>', "eye": '<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle>', "facebook": '<path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path>', "fast-forward": '<polygon points="13 19 22 12 13 5 13 19"></polygon><polygon points="2 19 11 12 2 5 2 19"></polygon>', "feather": '<path d="M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z"></path><line x1="16" y1="8" x2="2" y2="22"></line><line x1="17.5" y1="15" x2="9" y2="15"></line>', "figma": '<path d="M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z"></path><path d="M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z"></path><path d="M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z"></path><path d="M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z"></path><path d="M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z"></path>', "file-minus": '<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="9" y1="15" x2="15" y2="15"></line>', "file-plus": '<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="12" y1="18" x2="12" y2="12"></line><line x1="9" y1="15" x2="15" y2="15"></line>', "file-text": '<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline>', "file": '<path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>', "film": '<rect x="2" y="2" width="20" height="20" rx="2.18" ry="2.18"></rect><line x1="7" y1="2" x2="7" y2="22"></line><line x1="17" y1="2" x2="17" y2="22"></line><line x1="2" y1="12" x2="22" y2="12"></line><line x1="2" y1="7" x2="7" y2="7"></line><line x1="2" y1="17" x2="7" y2="17"></line><line x1="17" y1="17" x2="22" y2="17"></line><line x1="17" y1="7" x2="22" y2="7"></line>', "filter": '<polygon points="22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"></polygon>', "flag": '<path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"></path><line x1="4" y1="22" x2="4" y2="15"></line>', "folder-minus": '<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path><line x1="9" y1="14" x2="15" y2="14"></line>', "folder-plus": '<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path><line x1="12" y1="11" x2="12" y2="17"></line><line x1="9" y1="14" x2="15" y2="14"></line>', "folder": '<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path>', "framer": '<path d="M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7"></path>', "frown": '<circle cx="12" cy="12" r="10"></circle><path d="M16 16s-1.5-2-4-2-4 2-4 2"></path><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line>', "gift": '<polyline points="20 12 20 22 4 22 4 12"></polyline><rect x="2" y="7" width="20" height="5"></rect><line x1="12" y1="22" x2="12" y2="7"></line><path d="M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z"></path><path d="M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z"></path>', "git-branch": '<line x1="6" y1="3" x2="6" y2="15"></line><circle cx="18" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><path d="M18 9a9 9 0 0 1-9 9"></path>', "git-commit": '<circle cx="12" cy="12" r="4"></circle><line x1="1.05" y1="12" x2="7" y2="12"></line><line x1="17.01" y1="12" x2="22.96" y2="12"></line>', "git-merge": '<circle cx="18" cy="18" r="3"></circle><circle cx="6" cy="6" r="3"></circle><path d="M6 21V9a9 9 0 0 0 9 9"></path>', "git-pull-request": '<circle cx="18" cy="18" r="3"></circle><circle cx="6" cy="6" r="3"></circle><path d="M13 6h3a2 2 0 0 1 2 2v7"></path><line x1="6" y1="9" x2="6" y2="21"></line>', "github": '<path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path>', "gitlab": '<path d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z"></path>', "globe": '<circle cx="12" cy="12" r="10"></circle><line x1="2" y1="12" x2="22" y2="12"></line><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path>', "grid": '<rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect>', "hard-drive": '<line x1="22" y1="12" x2="2" y2="12"></line><path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"></path><line x1="6" y1="16" x2="6.01" y2="16"></line><line x1="10" y1="16" x2="10.01" y2="16"></line>', "hash": '<line x1="4" y1="9" x2="20" y2="9"></line><line x1="4" y1="15" x2="20" y2="15"></line><line x1="10" y1="3" x2="8" y2="21"></line><line x1="16" y1="3" x2="14" y2="21"></line>', "headphones": '<path d="M3 18v-6a9 9 0 0 1 18 0v6"></path><path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>', "heart": '<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"></path>', "help-circle": '<circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line>', "hexagon": '<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path>', "home": '<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline>', "image": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline>', "inbox": '<polyline points="22 12 16 12 14 15 10 15 8 12 2 12"></polyline><path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"></path>', "info": '<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line>', "instagram": '<rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"></line>', "italic": '<line x1="19" y1="4" x2="10" y2="4"></line><line x1="14" y1="20" x2="5" y2="20"></line><line x1="15" y1="4" x2="9" y2="20"></line>', "key": '<path d="M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4"></path>', "layers": '<polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline>', "layout": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line>', "life-buoy": '<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="4"></circle><line x1="4.93" y1="4.93" x2="9.17" y2="9.17"></line><line x1="14.83" y1="14.83" x2="19.07" y2="19.07"></line><line x1="14.83" y1="9.17" x2="19.07" y2="4.93"></line><line x1="14.83" y1="9.17" x2="18.36" y2="5.64"></line><line x1="4.93" y1="19.07" x2="9.17" y2="14.83"></line>', "link-2": '<path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"></path><line x1="8" y1="12" x2="16" y2="12"></line>', "link": '<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>', "linkedin": '<path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle>', "list": '<line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line>', "loader": '<line x1="12" y1="2" x2="12" y2="6"></line><line x1="12" y1="18" x2="12" y2="22"></line><line x1="4.93" y1="4.93" x2="7.76" y2="7.76"></line><line x1="16.24" y1="16.24" x2="19.07" y2="19.07"></line><line x1="2" y1="12" x2="6" y2="12"></line><line x1="18" y1="12" x2="22" y2="12"></line><line x1="4.93" y1="19.07" x2="7.76" y2="16.24"></line><line x1="16.24" y1="7.76" x2="19.07" y2="4.93"></line>', "lock": '<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path>', "log-in": '<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"></path><polyline points="10 17 15 12 10 7"></polyline><line x1="15" y1="12" x2="3" y2="12"></line>', "log-out": '<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path><polyline points="16 17 21 12 16 7"></polyline><line x1="21" y1="12" x2="9" y2="12"></line>', "mail": '<path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline>', "map-pin": '<path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle>', "map": '<polygon points="1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6"></polygon><line x1="8" y1="2" x2="8" y2="18"></line><line x1="16" y1="6" x2="16" y2="22"></line>', "maximize-2": '<polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" y1="3" x2="14" y2="10"></line><line x1="3" y1="21" x2="10" y2="14"></line>', "maximize": '<path d="M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"></path>', "meh": '<circle cx="12" cy="12" r="10"></circle><line x1="8" y1="15" x2="16" y2="15"></line><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line>', "menu": '<line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line>', "message-circle": '<path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"></path>', "message-square": '<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>', "mic-off": '<line x1="1" y1="1" x2="23" y2="23"></line><path d="M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6"></path><path d="M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23"></path><line x1="12" y1="19" x2="12" y2="23"></line><line x1="8" y1="23" x2="16" y2="23"></line>', "mic": '<path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path><path d="M19 10v2a7 7 0 0 1-14 0v-2"></path><line x1="12" y1="19" x2="12" y2="23"></line><line x1="8" y1="23" x2="16" y2="23"></line>', "minimize-2": '<polyline points="4 14 10 14 10 20"></polyline><polyline points="20 10 14 10 14 4"></polyline><line x1="14" y1="10" x2="21" y2="3"></line><line x1="3" y1="21" x2="10" y2="14"></line>', "minimize": '<path d="M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3"></path>', "minus-circle": '<circle cx="12" cy="12" r="10"></circle><line x1="8" y1="12" x2="16" y2="12"></line>', "minus-square": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="8" y1="12" x2="16" y2="12"></line>', "minus": '<line x1="5" y1="12" x2="19" y2="12"></line>', "monitor": '<rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line>', "moon": '<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>', "more-horizontal": '<circle cx="12" cy="12" r="1"></circle><circle cx="19" cy="12" r="1"></circle><circle cx="5" cy="12" r="1"></circle>', "more-vertical": '<circle cx="12" cy="12" r="1"></circle><circle cx="12" cy="5" r="1"></circle><circle cx="12" cy="19" r="1"></circle>', "mouse-pointer": '<path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z"></path><path d="M13 13l6 6"></path>', "move": '<polyline points="5 9 2 12 5 15"></polyline><polyline points="9 5 12 2 15 5"></polyline><polyline points="15 19 12 22 9 19"></polyline><polyline points="19 9 22 12 19 15"></polyline><line x1="2" y1="12" x2="22" y2="12"></line><line x1="12" y1="2" x2="12" y2="22"></line>', "music": '<path d="M9 18V5l12-2v13"></path><circle cx="6" cy="18" r="3"></circle><circle cx="18" cy="16" r="3"></circle>', "navigation-2": '<polygon points="12 2 19 21 12 17 5 21 12 2"></polygon>', "navigation": '<polygon points="3 11 22 2 13 21 11 13 3 11"></polygon>', "octagon": '<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon>', "package": '<line x1="16.5" y1="9.4" x2="7.5" y2="4.21"></line><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line>', "paperclip": '<path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path>', "pause-circle": '<circle cx="12" cy="12" r="10"></circle><line x1="10" y1="15" x2="10" y2="9"></line><line x1="14" y1="15" x2="14" y2="9"></line>', "pause": '<rect x="6" y="4" width="4" height="16"></rect><rect x="14" y="4" width="4" height="16"></rect>', "pen-tool": '<path d="M12 19l7-7 3 3-7 7-3-3z"></path><path d="M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z"></path><path d="M2 2l7.586 7.586"></path><circle cx="11" cy="11" r="2"></circle>', "percent": '<line x1="19" y1="5" x2="5" y2="19"></line><circle cx="6.5" cy="6.5" r="2.5"></circle><circle cx="17.5" cy="17.5" r="2.5"></circle>', "phone-call": '<path d="M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>', "phone-forwarded": '<polyline points="19 1 23 5 19 9"></polyline><line x1="15" y1="5" x2="23" y2="5"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>', "phone-incoming": '<polyline points="16 2 16 8 22 8"></polyline><line x1="23" y1="1" x2="16" y2="8"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>', "phone-missed": '<line x1="23" y1="1" x2="17" y2="7"></line><line x1="17" y1="1" x2="23" y2="7"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>', "phone-off": '<path d="M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91"></path><line x1="23" y1="1" x2="1" y2="23"></line>', "phone-outgoing": '<polyline points="23 7 23 1 17 1"></polyline><line x1="16" y1="8" x2="23" y2="1"></line><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>', "phone": '<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path>', "pie-chart": '<path d="M21.21 15.89A10 10 0 1 1 8 2.83"></path><path d="M22 12A10 10 0 0 0 12 2v10z"></path>', "play-circle": '<circle cx="12" cy="12" r="10"></circle><polygon points="10 8 16 12 10 16 10 8"></polygon>', "play": '<polygon points="5 3 19 12 5 21 5 3"></polygon>', "plus-circle": '<circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line>', "plus-square": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line>', "plus": '<line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line>', "pocket": '<path d="M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z"></path><polyline points="8 10 12 14 16 10"></polyline>', "power": '<path d="M18.36 6.64a9 9 0 1 1-12.73 0"></path><line x1="12" y1="2" x2="12" y2="12"></line>', "printer": '<polyline points="6 9 6 2 18 2 18 9"></polyline><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"></path><rect x="6" y="14" width="12" height="8"></rect>', "radio": '<circle cx="12" cy="12" r="2"></circle><path d="M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14"></path>', "refresh-ccw": '<polyline points="1 4 1 10 7 10"></polyline><polyline points="23 20 23 14 17 14"></polyline><path d="M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"></path>', "refresh-cw": '<polyline points="23 4 23 10 17 10"></polyline><polyline points="1 20 1 14 7 14"></polyline><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path>', "repeat": '<polyline points="17 1 21 5 17 9"></polyline><path d="M3 11V9a4 4 0 0 1 4-4h14"></path><polyline points="7 23 3 19 7 15"></polyline><path d="M21 13v2a4 4 0 0 1-4 4H3"></path>', "rewind": '<polygon points="11 19 2 12 11 5 11 19"></polygon><polygon points="22 19 13 12 22 5 22 19"></polygon>', "rotate-ccw": '<polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path>', "rotate-cw": '<polyline points="23 4 23 10 17 10"></polyline><path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10"></path>', "rss": '<path d="M4 11a9 9 0 0 1 9 9"></path><path d="M4 4a16 16 0 0 1 16 16"></path><circle cx="5" cy="19" r="1"></circle>', "save": '<path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"></path><polyline points="17 21 17 13 7 13 7 21"></polyline><polyline points="7 3 7 8 15 8"></polyline>', "scissors": '<circle cx="6" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><line x1="20" y1="4" x2="8.12" y2="15.88"></line><line x1="14.47" y1="14.48" x2="20" y2="20"></line><line x1="8.12" y1="8.12" x2="12" y2="12"></line>', "search": '<circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line>', "send": '<line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>', "server": '<rect x="2" y="2" width="20" height="8" rx="2" ry="2"></rect><rect x="2" y="14" width="20" height="8" rx="2" ry="2"></rect><line x1="6" y1="6" x2="6.01" y2="6"></line><line x1="6" y1="18" x2="6.01" y2="18"></line>', "settings": '<circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path>', "share-2": '<circle cx="18" cy="5" r="3"></circle><circle cx="6" cy="12" r="3"></circle><circle cx="18" cy="19" r="3"></circle><line x1="8.59" y1="13.51" x2="15.42" y2="17.49"></line><line x1="15.41" y1="6.51" x2="8.59" y2="10.49"></line>', "share": '<path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"></path><polyline points="16 6 12 2 8 6"></polyline><line x1="12" y1="2" x2="12" y2="15"></line>', "shield-off": '<path d="M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18"></path><path d="M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38"></path><line x1="1" y1="1" x2="23" y2="23"></line>', "shield": '<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>', "shopping-bag": '<path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"></path><line x1="3" y1="6" x2="21" y2="6"></line><path d="M16 10a4 4 0 0 1-8 0"></path>', "shopping-cart": '<circle cx="9" cy="21" r="1"></circle><circle cx="20" cy="21" r="1"></circle><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"></path>', "shuffle": '<polyline points="16 3 21 3 21 8"></polyline><line x1="4" y1="20" x2="21" y2="3"></line><polyline points="21 16 21 21 16 21"></polyline><line x1="15" y1="15" x2="21" y2="21"></line><line x1="4" y1="4" x2="9" y2="9"></line>', "sidebar": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line>', "skip-back": '<polygon points="19 20 9 12 19 4 19 20"></polygon><line x1="5" y1="19" x2="5" y2="5"></line>', "skip-forward": '<polygon points="5 4 15 12 5 20 5 4"></polygon><line x1="19" y1="5" x2="19" y2="19"></line>', "slack": '<path d="M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z"></path><path d="M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"></path><path d="M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z"></path><path d="M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z"></path><path d="M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z"></path><path d="M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"></path><path d="M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z"></path><path d="M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z"></path>', "slash": '<circle cx="12" cy="12" r="10"></circle><line x1="4.93" y1="4.93" x2="19.07" y2="19.07"></line>', "sliders": '<line x1="4" y1="21" x2="4" y2="14"></line><line x1="4" y1="10" x2="4" y2="3"></line><line x1="12" y1="21" x2="12" y2="12"></line><line x1="12" y1="8" x2="12" y2="3"></line><line x1="20" y1="21" x2="20" y2="16"></line><line x1="20" y1="12" x2="20" y2="3"></line><line x1="1" y1="14" x2="7" y2="14"></line><line x1="9" y1="8" x2="15" y2="8"></line><line x1="17" y1="16" x2="23" y2="16"></line>', "smartphone": '<rect x="5" y="2" width="14" height="20" rx="2" ry="2"></rect><line x1="12" y1="18" x2="12.01" y2="18"></line>', "smile": '<circle cx="12" cy="12" r="10"></circle><path d="M8 14s1.5 2 4 2 4-2 4-2"></path><line x1="9" y1="9" x2="9.01" y2="9"></line><line x1="15" y1="9" x2="15.01" y2="9"></line>', "speaker": '<rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><circle cx="12" cy="14" r="4"></circle><line x1="12" y1="6" x2="12.01" y2="6"></line>', "square": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect>', "star": '<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>', "stop-circle": '<circle cx="12" cy="12" r="10"></circle><rect x="9" y="9" width="6" height="6"></rect>', "sun": '<circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>', "sunrise": '<path d="M17 18a5 5 0 0 0-10 0"></path><line x1="12" y1="2" x2="12" y2="9"></line><line x1="4.22" y1="10.22" x2="5.64" y2="11.64"></line><line x1="1" y1="18" x2="3" y2="18"></line><line x1="21" y1="18" x2="23" y2="18"></line><line x1="18.36" y1="11.64" x2="19.78" y2="10.22"></line><line x1="23" y1="22" x2="1" y2="22"></line><polyline points="8 6 12 2 16 6"></polyline>', "sunset": '<path d="M17 18a5 5 0 0 0-10 0"></path><line x1="12" y1="9" x2="12" y2="2"></line><line x1="4.22" y1="10.22" x2="5.64" y2="11.64"></line><line x1="1" y1="18" x2="3" y2="18"></line><line x1="21" y1="18" x2="23" y2="18"></line><line x1="18.36" y1="11.64" x2="19.78" y2="10.22"></line><line x1="23" y1="22" x2="1" y2="22"></line><polyline points="16 5 12 9 8 5"></polyline>', "table": '<path d="M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18"></path>', "tablet": '<rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="12" y1="18" x2="12.01" y2="18"></line>', "tag": '<path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7.01" y2="7"></line>', "target": '<circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="6"></circle><circle cx="12" cy="12" r="2"></circle>', "terminal": '<polyline points="4 17 10 11 4 5"></polyline><line x1="12" y1="19" x2="20" y2="19"></line>', "thermometer": '<path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path>', "thumbs-down": '<path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path>', "thumbs-up": '<path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path>', "toggle-left": '<rect x="1" y="5" width="22" height="14" rx="7" ry="7"></rect><circle cx="8" cy="12" r="3"></circle>', "toggle-right": '<rect x="1" y="5" width="22" height="14" rx="7" ry="7"></rect><circle cx="16" cy="12" r="3"></circle>', "tool": '<path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"></path>', "trash-2": '<polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line>', "trash": '<polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path>', "trello": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><rect x="7" y="7" width="3" height="9"></rect><rect x="14" y="7" width="3" height="5"></rect>', "trending-down": '<polyline points="23 18 13.5 8.5 8.5 13.5 1 6"></polyline><polyline points="17 18 23 18 23 12"></polyline>', "trending-up": '<polyline points="23 6 13.5 15.5 8.5 10.5 1 18"></polyline><polyline points="17 6 23 6 23 12"></polyline>', "triangle": '<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path>', "truck": '<rect x="1" y="3" width="15" height="13"></rect><polygon points="16 8 20 8 23 11 23 16 16 16 16 8"></polygon><circle cx="5.5" cy="18.5" r="2.5"></circle><circle cx="18.5" cy="18.5" r="2.5"></circle>', "tv": '<rect x="2" y="7" width="20" height="15" rx="2" ry="2"></rect><polyline points="17 2 12 7 7 2"></polyline>', "twitch": '<path d="M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7"></path>', "twitter": '<path d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z"></path>', "type": '<polyline points="4 7 4 4 20 4 20 7"></polyline><line x1="9" y1="20" x2="15" y2="20"></line><line x1="12" y1="4" x2="12" y2="20"></line>', "umbrella": '<path d="M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7"></path>', "underline": '<path d="M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3"></path><line x1="4" y1="21" x2="20" y2="21"></line>', "unlock": '<rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 9.9-1"></path>', "upload-cloud": '<polyline points="16 16 12 12 8 16"></polyline><line x1="12" y1="12" x2="12" y2="21"></line><path d="M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3"></path><polyline points="16 16 12 12 8 16"></polyline>', "upload": '<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="17 8 12 3 7 8"></polyline><line x1="12" y1="3" x2="12" y2="15"></line>', "user-check": '<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><polyline points="17 11 19 13 23 9"></polyline>', "user-minus": '<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="23" y1="11" x2="17" y2="11"></line>', "user-plus": '<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="20" y1="8" x2="20" y2="14"></line><line x1="23" y1="11" x2="17" y2="11"></line>', "user-x": '<path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="18" y1="8" x2="23" y2="13"></line><line x1="23" y1="8" x2="18" y2="13"></line>', "user": '<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle>', "users": '<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path>', "video-off": '<path d="M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10"></path><line x1="1" y1="1" x2="23" y2="23"></line>', "video": '<polygon points="23 7 16 12 23 17 23 7"></polygon><rect x="1" y="5" width="15" height="14" rx="2" ry="2"></rect>', "voicemail": '<circle cx="5.5" cy="11.5" r="4.5"></circle><circle cx="18.5" cy="11.5" r="4.5"></circle><line x1="5.5" y1="16" x2="18.5" y2="16"></line>', "volume-1": '<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M15.54 8.46a5 5 0 0 1 0 7.07"></path>', "volume-2": '<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07"></path>', "volume-x": '<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><line x1="23" y1="9" x2="17" y2="15"></line><line x1="17" y1="9" x2="23" y2="15"></line>', "volume": '<polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon>', "watch": '<circle cx="12" cy="12" r="7"></circle><polyline points="12 9 12 12 13.5 13.5"></polyline><path d="M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83"></path>', "wifi-off": '<line x1="1" y1="1" x2="23" y2="23"></line><path d="M16.72 11.06A10.94 10.94 0 0 1 19 12.55"></path><path d="M5 12.55a10.94 10.94 0 0 1 5.17-2.39"></path><path d="M10.71 5.05A16 16 0 0 1 22.58 9"></path><path d="M1.42 9a15.91 15.91 0 0 1 4.7-2.88"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12.01" y2="20"></line>', "wifi": '<path d="M5 12.55a11 11 0 0 1 14.08 0"></path><path d="M1.42 9a16 16 0 0 1 21.16 0"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12.01" y2="20"></line>', "wind": '<path d="M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2"></path>', "x-circle": '<circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line>', "x-octagon": '<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line>', "x-square": '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="9" x2="15" y2="15"></line><line x1="15" y1="9" x2="9" y2="15"></line>', "x": '<line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line>', "youtube": '<path d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z"></path><polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"></polygon>', "zap-off": '<polyline points="12.41 6.75 13 2 10.57 4.92"></polyline><polyline points="18.57 12.91 21 10 15.66 10"></polyline><polyline points="8 8 3 14 12 14 11 22 16 16"></polyline><line x1="1" y1="1" x2="23" y2="23"></line>', "zap": '<polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon>', "zoom-in": '<circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line>', "zoom-out": '<circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="8" y1="11" x2="14" y2="11"></line>' };
- },
- "./node_modules/classnames/dedupe.js": function(module3, exports2, __webpack_require__) {
- var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
- (function() {
- "use strict";
- var classNames = function() {
- function StorageObject() {
- }
- StorageObject.prototype = Object.create(null);
- function _parseArray(resultSet, array) {
- var length = array.length;
- for (var i = 0; i < length; ++i) {
- _parse(resultSet, array[i]);
- }
- }
- var hasOwn = {}.hasOwnProperty;
- function _parseNumber(resultSet, num2) {
- resultSet[num2] = true;
- }
- function _parseObject(resultSet, object) {
- for (var k in object) {
- if (hasOwn.call(object, k)) {
- resultSet[k] = !!object[k];
- }
- }
- }
- var SPACE = /\s+/;
- function _parseString(resultSet, str) {
- var array = str.split(SPACE);
- var length = array.length;
- for (var i = 0; i < length; ++i) {
- resultSet[array[i]] = true;
- }
- }
- function _parse(resultSet, arg) {
- if (!arg)
- return;
- var argType = typeof arg;
- if (argType === "string") {
- _parseString(resultSet, arg);
- } else if (Array.isArray(arg)) {
- _parseArray(resultSet, arg);
- } else if (argType === "object") {
- _parseObject(resultSet, arg);
- } else if (argType === "number") {
- _parseNumber(resultSet, arg);
- }
- }
- function _classNames() {
- var len = arguments.length;
- var args = Array(len);
- for (var i = 0; i < len; i++) {
- args[i] = arguments[i];
- }
- var classSet = new StorageObject();
- _parseArray(classSet, args);
- var list = [];
- for (var k in classSet) {
- if (classSet[k]) {
- list.push(k);
- }
- }
- return list.join(" ");
- }
- return _classNames;
- }();
- if (typeof module3 !== "undefined" && module3.exports) {
- module3.exports = classNames;
- } else if (true) {
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
- return classNames;
- }.apply(exports2, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module3.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- } else {
- }
- })();
- },
- "./node_modules/core-js/es/array/from.js": function(module3, exports2, __webpack_require__) {
- __webpack_require__("./node_modules/core-js/modules/es.string.iterator.js");
- __webpack_require__("./node_modules/core-js/modules/es.array.from.js");
- var path2 = __webpack_require__("./node_modules/core-js/internals/path.js");
- module3.exports = path2.Array.from;
- },
- "./node_modules/core-js/internals/a-function.js": function(module3, exports2) {
- module3.exports = function(it) {
- if (typeof it != "function") {
- throw TypeError(String(it) + " is not a function");
- }
- return it;
- };
- },
- "./node_modules/core-js/internals/an-object.js": function(module3, exports2, __webpack_require__) {
- var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
- module3.exports = function(it) {
- if (!isObject(it)) {
- throw TypeError(String(it) + " is not an object");
- }
- return it;
- };
- },
- "./node_modules/core-js/internals/array-from.js": function(module3, exports2, __webpack_require__) {
- "use strict";
- var bind = __webpack_require__("./node_modules/core-js/internals/bind-context.js");
- var toObject = __webpack_require__("./node_modules/core-js/internals/to-object.js");
- var callWithSafeIterationClosing = __webpack_require__("./node_modules/core-js/internals/call-with-safe-iteration-closing.js");
- var isArrayIteratorMethod = __webpack_require__("./node_modules/core-js/internals/is-array-iterator-method.js");
- var toLength = __webpack_require__("./node_modules/core-js/internals/to-length.js");
- var createProperty = __webpack_require__("./node_modules/core-js/internals/create-property.js");
- var getIteratorMethod = __webpack_require__("./node_modules/core-js/internals/get-iterator-method.js");
- module3.exports = function from(arrayLike) {
- var O = toObject(arrayLike);
- var C = typeof this == "function" ? this : Array;
- var argumentsLength = arguments.length;
- var mapfn = argumentsLength > 1 ? arguments[1] : void 0;
- var mapping = mapfn !== void 0;
- var index2 = 0;
- var iteratorMethod = getIteratorMethod(O);
- var length, result, step, iterator;
- if (mapping)
- mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2);
- if (iteratorMethod != void 0 && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {
- iterator = iteratorMethod.call(O);
- result = new C();
- for (; !(step = iterator.next()).done; index2++) {
- createProperty(result, index2, mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index2], true) : step.value);
- }
- } else {
- length = toLength(O.length);
- result = new C(length);
- for (; length > index2; index2++) {
- createProperty(result, index2, mapping ? mapfn(O[index2], index2) : O[index2]);
- }
- }
- result.length = index2;
- return result;
- };
- },
- "./node_modules/core-js/internals/array-includes.js": function(module3, exports2, __webpack_require__) {
- var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js");
- var toLength = __webpack_require__("./node_modules/core-js/internals/to-length.js");
- var toAbsoluteIndex = __webpack_require__("./node_modules/core-js/internals/to-absolute-index.js");
- module3.exports = function(IS_INCLUDES) {
- return function($this, el, fromIndex) {
- var O = toIndexedObject($this);
- var length = toLength(O.length);
- var index2 = toAbsoluteIndex(fromIndex, length);
- var value;
- if (IS_INCLUDES && el != el)
- while (length > index2) {
- value = O[index2++];
- if (value != value)
- return true;
- }
- else
- for (; length > index2; index2++)
- if (IS_INCLUDES || index2 in O) {
- if (O[index2] === el)
- return IS_INCLUDES || index2 || 0;
- }
- return !IS_INCLUDES && -1;
- };
- };
- },
- "./node_modules/core-js/internals/bind-context.js": function(module3, exports2, __webpack_require__) {
- var aFunction = __webpack_require__("./node_modules/core-js/internals/a-function.js");
- module3.exports = function(fn, that, length) {
- aFunction(fn);
- if (that === void 0)
- return fn;
- switch (length) {
- case 0:
- return function() {
- return fn.call(that);
- };
- case 1:
- return function(a) {
- return fn.call(that, a);
- };
- case 2:
- return function(a, b) {
- return fn.call(that, a, b);
- };
- case 3:
- return function(a, b, c) {
- return fn.call(that, a, b, c);
- };
- }
- return function() {
- return fn.apply(that, arguments);
- };
- };
- },
- "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": function(module3, exports2, __webpack_require__) {
- var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
- module3.exports = function(iterator, fn, value, ENTRIES) {
- try {
- return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
- } catch (error) {
- var returnMethod = iterator["return"];
- if (returnMethod !== void 0)
- anObject(returnMethod.call(iterator));
- throw error;
- }
- };
- },
- "./node_modules/core-js/internals/check-correctness-of-iteration.js": function(module3, exports2, __webpack_require__) {
- var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
- var ITERATOR = wellKnownSymbol("iterator");
- var SAFE_CLOSING = false;
- try {
- var called = 0;
- var iteratorWithReturn = {
- next: function() {
- return { done: !!called++ };
- },
- "return": function() {
- SAFE_CLOSING = true;
- }
- };
- iteratorWithReturn[ITERATOR] = function() {
- return this;
- };
- Array.from(iteratorWithReturn, function() {
- throw 2;
- });
- } catch (error) {
- }
- module3.exports = function(exec, SKIP_CLOSING) {
- if (!SKIP_CLOSING && !SAFE_CLOSING)
- return false;
- var ITERATION_SUPPORT = false;
- try {
- var object = {};
- object[ITERATOR] = function() {
- return {
- next: function() {
- return { done: ITERATION_SUPPORT = true };
- }
- };
- };
- exec(object);
- } catch (error) {
- }
- return ITERATION_SUPPORT;
- };
- },
- "./node_modules/core-js/internals/classof-raw.js": function(module3, exports2) {
- var toString = {}.toString;
- module3.exports = function(it) {
- return toString.call(it).slice(8, -1);
- };
- },
- "./node_modules/core-js/internals/classof.js": function(module3, exports2, __webpack_require__) {
- var classofRaw = __webpack_require__("./node_modules/core-js/internals/classof-raw.js");
- var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
- var TO_STRING_TAG = wellKnownSymbol("toStringTag");
- var CORRECT_ARGUMENTS = classofRaw(function() {
- return arguments;
- }()) == "Arguments";
- var tryGet = function(it, key2) {
- try {
- return it[key2];
- } catch (error) {
- }
- };
- module3.exports = function(it) {
- var O, tag2, result;
- return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag2 = tryGet(O = Object(it), TO_STRING_TAG)) == "string" ? tag2 : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == "Object" && typeof O.callee == "function" ? "Arguments" : result;
- };
- },
- "./node_modules/core-js/internals/copy-constructor-properties.js": function(module3, exports2, __webpack_require__) {
- var has = __webpack_require__("./node_modules/core-js/internals/has.js");
- var ownKeys = __webpack_require__("./node_modules/core-js/internals/own-keys.js");
- var getOwnPropertyDescriptorModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-descriptor.js");
- var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js");
- module3.exports = function(target, source) {
- var keys = ownKeys(source);
- var defineProperty = definePropertyModule.f;
- var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
- for (var i = 0; i < keys.length; i++) {
- var key2 = keys[i];
- if (!has(target, key2))
- defineProperty(target, key2, getOwnPropertyDescriptor(source, key2));
- }
- };
- },
- "./node_modules/core-js/internals/correct-prototype-getter.js": function(module3, exports2, __webpack_require__) {
- var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
- module3.exports = !fails(function() {
- function F() {
- }
- F.prototype.constructor = null;
- return Object.getPrototypeOf(new F()) !== F.prototype;
- });
- },
- "./node_modules/core-js/internals/create-iterator-constructor.js": function(module3, exports2, __webpack_require__) {
- "use strict";
- var IteratorPrototype = __webpack_require__("./node_modules/core-js/internals/iterators-core.js").IteratorPrototype;
- var create = __webpack_require__("./node_modules/core-js/internals/object-create.js");
- var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js");
- var setToStringTag = __webpack_require__("./node_modules/core-js/internals/set-to-string-tag.js");
- var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js");
- var returnThis = function() {
- return this;
- };
- module3.exports = function(IteratorConstructor, NAME, next) {
- var TO_STRING_TAG = NAME + " Iterator";
- IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
- setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
- Iterators[TO_STRING_TAG] = returnThis;
- return IteratorConstructor;
- };
- },
- "./node_modules/core-js/internals/create-property-descriptor.js": function(module3, exports2) {
- module3.exports = function(bitmap, value) {
- return {
- enumerable: !(bitmap & 1),
- configurable: !(bitmap & 2),
- writable: !(bitmap & 4),
- value
- };
- };
- },
- "./node_modules/core-js/internals/create-property.js": function(module3, exports2, __webpack_require__) {
- "use strict";
- var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js");
- var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js");
- var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js");
- module3.exports = function(object, key2, value) {
- var propertyKey = toPrimitive(key2);
- if (propertyKey in object)
- definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));
- else
- object[propertyKey] = value;
- };
- },
- "./node_modules/core-js/internals/define-iterator.js": function(module3, exports2, __webpack_require__) {
- "use strict";
- var $ = __webpack_require__("./node_modules/core-js/internals/export.js");
- var createIteratorConstructor = __webpack_require__("./node_modules/core-js/internals/create-iterator-constructor.js");
- var getPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-get-prototype-of.js");
- var setPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-set-prototype-of.js");
- var setToStringTag = __webpack_require__("./node_modules/core-js/internals/set-to-string-tag.js");
- var hide = __webpack_require__("./node_modules/core-js/internals/hide.js");
- var redefine = __webpack_require__("./node_modules/core-js/internals/redefine.js");
- var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
- var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js");
- var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js");
- var IteratorsCore = __webpack_require__("./node_modules/core-js/internals/iterators-core.js");
- var IteratorPrototype = IteratorsCore.IteratorPrototype;
- var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
- var ITERATOR = wellKnownSymbol("iterator");
- var KEYS = "keys";
- var VALUES = "values";
- var ENTRIES = "entries";
- var returnThis = function() {
- return this;
- };
- module3.exports = function(Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
- createIteratorConstructor(IteratorConstructor, NAME, next);
- var getIterationMethod = function(KIND) {
- if (KIND === DEFAULT && defaultIterator)
- return defaultIterator;
- if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype)
- return IterablePrototype[KIND];
- switch (KIND) {
- case KEYS:
- return function keys() {
- return new IteratorConstructor(this, KIND);
- };
- case VALUES:
- return function values() {
- return new IteratorConstructor(this, KIND);
- };
- case ENTRIES:
- return function entries() {
- return new IteratorConstructor(this, KIND);
- };
- }
- return function() {
- return new IteratorConstructor(this);
- };
- };
- var TO_STRING_TAG = NAME + " Iterator";
- var INCORRECT_VALUES_NAME = false;
- var IterablePrototype = Iterable.prototype;
- var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype["@@iterator"] || DEFAULT && IterablePrototype[DEFAULT];
- var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
- var anyNativeIterator = NAME == "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator;
- var CurrentIteratorPrototype, methods, KEY;
- if (anyNativeIterator) {
- CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
- if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
- if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
- if (setPrototypeOf) {
- setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
- } else if (typeof CurrentIteratorPrototype[ITERATOR] != "function") {
- hide(CurrentIteratorPrototype, ITERATOR, returnThis);
- }
- }
- setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
- if (IS_PURE)
- Iterators[TO_STRING_TAG] = returnThis;
- }
- }
- if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
- INCORRECT_VALUES_NAME = true;
- defaultIterator = function values() {
- return nativeIterator.call(this);
- };
- }
- if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
- hide(IterablePrototype, ITERATOR, defaultIterator);
- }
- Iterators[NAME] = defaultIterator;
- if (DEFAULT) {
- methods = {
- values: getIterationMethod(VALUES),
- keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
- entries: getIterationMethod(ENTRIES)
- };
- if (FORCED)
- for (KEY in methods) {
- if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
- redefine(IterablePrototype, KEY, methods[KEY]);
- }
- }
- else
- $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
- }
- return methods;
- };
- },
- "./node_modules/core-js/internals/descriptors.js": function(module3, exports2, __webpack_require__) {
- var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
- module3.exports = !fails(function() {
- return Object.defineProperty({}, "a", { get: function() {
- return 7;
- } }).a != 7;
- });
- },
- "./node_modules/core-js/internals/document-create-element.js": function(module3, exports2, __webpack_require__) {
- var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
- var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
- var document2 = global2.document;
- var exist = isObject(document2) && isObject(document2.createElement);
- module3.exports = function(it) {
- return exist ? document2.createElement(it) : {};
- };
- },
- "./node_modules/core-js/internals/enum-bug-keys.js": function(module3, exports2) {
- module3.exports = [
- "constructor",
- "hasOwnProperty",
- "isPrototypeOf",
- "propertyIsEnumerable",
- "toLocaleString",
- "toString",
- "valueOf"
- ];
- },
- "./node_modules/core-js/internals/export.js": function(module3, exports2, __webpack_require__) {
- var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
- var getOwnPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-descriptor.js").f;
- var hide = __webpack_require__("./node_modules/core-js/internals/hide.js");
- var redefine = __webpack_require__("./node_modules/core-js/internals/redefine.js");
- var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js");
- var copyConstructorProperties = __webpack_require__("./node_modules/core-js/internals/copy-constructor-properties.js");
- var isForced = __webpack_require__("./node_modules/core-js/internals/is-forced.js");
- module3.exports = function(options, source) {
- var TARGET = options.target;
- var GLOBAL = options.global;
- var STATIC = options.stat;
- var FORCED, target, key2, targetProperty, sourceProperty, descriptor;
- if (GLOBAL) {
- target = global2;
- } else if (STATIC) {
- target = global2[TARGET] || setGlobal(TARGET, {});
- } else {
- target = (global2[TARGET] || {}).prototype;
- }
- if (target)
- for (key2 in source) {
- sourceProperty = source[key2];
- if (options.noTargetGet) {
- descriptor = getOwnPropertyDescriptor(target, key2);
- targetProperty = descriptor && descriptor.value;
- } else
- targetProperty = target[key2];
- FORCED = isForced(GLOBAL ? key2 : TARGET + (STATIC ? "." : "#") + key2, options.forced);
- if (!FORCED && targetProperty !== void 0) {
- if (typeof sourceProperty === typeof targetProperty)
- continue;
- copyConstructorProperties(sourceProperty, targetProperty);
- }
- if (options.sham || targetProperty && targetProperty.sham) {
- hide(sourceProperty, "sham", true);
- }
- redefine(target, key2, sourceProperty, options);
- }
- };
- },
- "./node_modules/core-js/internals/fails.js": function(module3, exports2) {
- module3.exports = function(exec) {
- try {
- return !!exec();
- } catch (error) {
- return true;
- }
- };
- },
- "./node_modules/core-js/internals/function-to-string.js": function(module3, exports2, __webpack_require__) {
- var shared = __webpack_require__("./node_modules/core-js/internals/shared.js");
- module3.exports = shared("native-function-to-string", Function.toString);
- },
- "./node_modules/core-js/internals/get-iterator-method.js": function(module3, exports2, __webpack_require__) {
- var classof = __webpack_require__("./node_modules/core-js/internals/classof.js");
- var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js");
- var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
- var ITERATOR = wellKnownSymbol("iterator");
- module3.exports = function(it) {
- if (it != void 0)
- return it[ITERATOR] || it["@@iterator"] || Iterators[classof(it)];
- };
- },
- "./node_modules/core-js/internals/global.js": function(module3, exports2, __webpack_require__) {
- (function(global2) {
- var O = "object";
- var check = function(it) {
- return it && it.Math == Math && it;
- };
- module3.exports = check(typeof globalThis == O && globalThis) || check(typeof window == O && window) || check(typeof self == O && self) || check(typeof global2 == O && global2) || Function("return this")();
- }).call(this, __webpack_require__("./node_modules/webpack/buildin/global.js"));
- },
- "./node_modules/core-js/internals/has.js": function(module3, exports2) {
- var hasOwnProperty = {}.hasOwnProperty;
- module3.exports = function(it, key2) {
- return hasOwnProperty.call(it, key2);
- };
- },
- "./node_modules/core-js/internals/hidden-keys.js": function(module3, exports2) {
- module3.exports = {};
- },
- "./node_modules/core-js/internals/hide.js": function(module3, exports2, __webpack_require__) {
- var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
- var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js");
- var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js");
- module3.exports = DESCRIPTORS ? function(object, key2, value) {
- return definePropertyModule.f(object, key2, createPropertyDescriptor(1, value));
- } : function(object, key2, value) {
- object[key2] = value;
- return object;
- };
- },
- "./node_modules/core-js/internals/html.js": function(module3, exports2, __webpack_require__) {
- var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
- var document2 = global2.document;
- module3.exports = document2 && document2.documentElement;
- },
- "./node_modules/core-js/internals/ie8-dom-define.js": function(module3, exports2, __webpack_require__) {
- var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
- var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
- var createElement = __webpack_require__("./node_modules/core-js/internals/document-create-element.js");
- module3.exports = !DESCRIPTORS && !fails(function() {
- return Object.defineProperty(createElement("div"), "a", {
- get: function() {
- return 7;
- }
- }).a != 7;
- });
- },
- "./node_modules/core-js/internals/indexed-object.js": function(module3, exports2, __webpack_require__) {
- var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
- var classof = __webpack_require__("./node_modules/core-js/internals/classof-raw.js");
- var split = "".split;
- module3.exports = fails(function() {
- return !Object("z").propertyIsEnumerable(0);
- }) ? function(it) {
- return classof(it) == "String" ? split.call(it, "") : Object(it);
- } : Object;
- },
- "./node_modules/core-js/internals/internal-state.js": function(module3, exports2, __webpack_require__) {
- var NATIVE_WEAK_MAP = __webpack_require__("./node_modules/core-js/internals/native-weak-map.js");
- var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
- var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
- var hide = __webpack_require__("./node_modules/core-js/internals/hide.js");
- var objectHas = __webpack_require__("./node_modules/core-js/internals/has.js");
- var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js");
- var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js");
- var WeakMap2 = global2.WeakMap;
- var set, get, has;
- var enforce = function(it) {
- return has(it) ? get(it) : set(it, {});
- };
- var getterFor = function(TYPE) {
- return function(it) {
- var state;
- if (!isObject(it) || (state = get(it)).type !== TYPE) {
- throw TypeError("Incompatible receiver, " + TYPE + " required");
- }
- return state;
- };
- };
- if (NATIVE_WEAK_MAP) {
- var store = new WeakMap2();
- var wmget = store.get;
- var wmhas = store.has;
- var wmset = store.set;
- set = function(it, metadata) {
- wmset.call(store, it, metadata);
- return metadata;
- };
- get = function(it) {
- return wmget.call(store, it) || {};
- };
- has = function(it) {
- return wmhas.call(store, it);
- };
- } else {
- var STATE = sharedKey("state");
- hiddenKeys[STATE] = true;
- set = function(it, metadata) {
- hide(it, STATE, metadata);
- return metadata;
- };
- get = function(it) {
- return objectHas(it, STATE) ? it[STATE] : {};
- };
- has = function(it) {
- return objectHas(it, STATE);
- };
- }
- module3.exports = {
- set,
- get,
- has,
- enforce,
- getterFor
- };
- },
- "./node_modules/core-js/internals/is-array-iterator-method.js": function(module3, exports2, __webpack_require__) {
- var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
- var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js");
- var ITERATOR = wellKnownSymbol("iterator");
- var ArrayPrototype = Array.prototype;
- module3.exports = function(it) {
- return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
- };
- },
- "./node_modules/core-js/internals/is-forced.js": function(module3, exports2, __webpack_require__) {
- var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
- var replacement = /#|\.prototype\./;
- var isForced = function(feature, detection) {
- var value = data[normalize(feature)];
- return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == "function" ? fails(detection) : !!detection;
- };
- var normalize = isForced.normalize = function(string) {
- return String(string).replace(replacement, ".").toLowerCase();
- };
- var data = isForced.data = {};
- var NATIVE = isForced.NATIVE = "N";
- var POLYFILL = isForced.POLYFILL = "P";
- module3.exports = isForced;
- },
- "./node_modules/core-js/internals/is-object.js": function(module3, exports2) {
- module3.exports = function(it) {
- return typeof it === "object" ? it !== null : typeof it === "function";
- };
- },
- "./node_modules/core-js/internals/is-pure.js": function(module3, exports2) {
- module3.exports = false;
- },
- "./node_modules/core-js/internals/iterators-core.js": function(module3, exports2, __webpack_require__) {
- "use strict";
- var getPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-get-prototype-of.js");
- var hide = __webpack_require__("./node_modules/core-js/internals/hide.js");
- var has = __webpack_require__("./node_modules/core-js/internals/has.js");
- var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
- var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js");
- var ITERATOR = wellKnownSymbol("iterator");
- var BUGGY_SAFARI_ITERATORS = false;
- var returnThis = function() {
- return this;
- };
- var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
- if ([].keys) {
- arrayIterator = [].keys();
- if (!("next" in arrayIterator))
- BUGGY_SAFARI_ITERATORS = true;
- else {
- PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
- if (PrototypeOfArrayIteratorPrototype !== Object.prototype)
- IteratorPrototype = PrototypeOfArrayIteratorPrototype;
- }
- }
- if (IteratorPrototype == void 0)
- IteratorPrototype = {};
- if (!IS_PURE && !has(IteratorPrototype, ITERATOR))
- hide(IteratorPrototype, ITERATOR, returnThis);
- module3.exports = {
- IteratorPrototype,
- BUGGY_SAFARI_ITERATORS
- };
- },
- "./node_modules/core-js/internals/iterators.js": function(module3, exports2) {
- module3.exports = {};
- },
- "./node_modules/core-js/internals/native-symbol.js": function(module3, exports2, __webpack_require__) {
- var fails = __webpack_require__("./node_modules/core-js/internals/fails.js");
- module3.exports = !!Object.getOwnPropertySymbols && !fails(function() {
- return !String(Symbol());
- });
- },
- "./node_modules/core-js/internals/native-weak-map.js": function(module3, exports2, __webpack_require__) {
- var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
- var nativeFunctionToString = __webpack_require__("./node_modules/core-js/internals/function-to-string.js");
- var WeakMap2 = global2.WeakMap;
- module3.exports = typeof WeakMap2 === "function" && /native code/.test(nativeFunctionToString.call(WeakMap2));
- },
- "./node_modules/core-js/internals/object-create.js": function(module3, exports2, __webpack_require__) {
- var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
- var defineProperties = __webpack_require__("./node_modules/core-js/internals/object-define-properties.js");
- var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js");
- var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js");
- var html2 = __webpack_require__("./node_modules/core-js/internals/html.js");
- var documentCreateElement = __webpack_require__("./node_modules/core-js/internals/document-create-element.js");
- var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js");
- var IE_PROTO = sharedKey("IE_PROTO");
- var PROTOTYPE = "prototype";
- var Empty = function() {
- };
- var createDict = function() {
- var iframe = documentCreateElement("iframe");
- var length = enumBugKeys.length;
- var lt = "<";
- var script = "script";
- var gt = ">";
- var js = "java" + script + ":";
- var iframeDocument;
- iframe.style.display = "none";
- html2.appendChild(iframe);
- iframe.src = String(js);
- iframeDocument = iframe.contentWindow.document;
- iframeDocument.open();
- iframeDocument.write(lt + script + gt + "document.F=Object" + lt + "/" + script + gt);
- iframeDocument.close();
- createDict = iframeDocument.F;
- while (length--)
- delete createDict[PROTOTYPE][enumBugKeys[length]];
- return createDict();
- };
- module3.exports = Object.create || function create(O, Properties) {
- var result;
- if (O !== null) {
- Empty[PROTOTYPE] = anObject(O);
- result = new Empty();
- Empty[PROTOTYPE] = null;
- result[IE_PROTO] = O;
- } else
- result = createDict();
- return Properties === void 0 ? result : defineProperties(result, Properties);
- };
- hiddenKeys[IE_PROTO] = true;
- },
- "./node_modules/core-js/internals/object-define-properties.js": function(module3, exports2, __webpack_require__) {
- var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
- var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js");
- var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
- var objectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys.js");
- module3.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
- anObject(O);
- var keys = objectKeys(Properties);
- var length = keys.length;
- var i = 0;
- var key2;
- while (length > i)
- definePropertyModule.f(O, key2 = keys[i++], Properties[key2]);
- return O;
- };
- },
- "./node_modules/core-js/internals/object-define-property.js": function(module3, exports2, __webpack_require__) {
- var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
- var IE8_DOM_DEFINE = __webpack_require__("./node_modules/core-js/internals/ie8-dom-define.js");
- var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
- var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js");
- var nativeDefineProperty = Object.defineProperty;
- exports2.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
- anObject(O);
- P = toPrimitive(P, true);
- anObject(Attributes);
- if (IE8_DOM_DEFINE)
- try {
- return nativeDefineProperty(O, P, Attributes);
- } catch (error) {
- }
- if ("get" in Attributes || "set" in Attributes)
- throw TypeError("Accessors not supported");
- if ("value" in Attributes)
- O[P] = Attributes.value;
- return O;
- };
- },
- "./node_modules/core-js/internals/object-get-own-property-descriptor.js": function(module3, exports2, __webpack_require__) {
- var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js");
- var propertyIsEnumerableModule = __webpack_require__("./node_modules/core-js/internals/object-property-is-enumerable.js");
- var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js");
- var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js");
- var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js");
- var has = __webpack_require__("./node_modules/core-js/internals/has.js");
- var IE8_DOM_DEFINE = __webpack_require__("./node_modules/core-js/internals/ie8-dom-define.js");
- var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
- exports2.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
- O = toIndexedObject(O);
- P = toPrimitive(P, true);
- if (IE8_DOM_DEFINE)
- try {
- return nativeGetOwnPropertyDescriptor(O, P);
- } catch (error) {
- }
- if (has(O, P))
- return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
- };
- },
- "./node_modules/core-js/internals/object-get-own-property-names.js": function(module3, exports2, __webpack_require__) {
- var internalObjectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys-internal.js");
- var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js");
- var hiddenKeys = enumBugKeys.concat("length", "prototype");
- exports2.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
- return internalObjectKeys(O, hiddenKeys);
- };
- },
- "./node_modules/core-js/internals/object-get-own-property-symbols.js": function(module3, exports2) {
- exports2.f = Object.getOwnPropertySymbols;
- },
- "./node_modules/core-js/internals/object-get-prototype-of.js": function(module3, exports2, __webpack_require__) {
- var has = __webpack_require__("./node_modules/core-js/internals/has.js");
- var toObject = __webpack_require__("./node_modules/core-js/internals/to-object.js");
- var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js");
- var CORRECT_PROTOTYPE_GETTER = __webpack_require__("./node_modules/core-js/internals/correct-prototype-getter.js");
- var IE_PROTO = sharedKey("IE_PROTO");
- var ObjectPrototype = Object.prototype;
- module3.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function(O) {
- O = toObject(O);
- if (has(O, IE_PROTO))
- return O[IE_PROTO];
- if (typeof O.constructor == "function" && O instanceof O.constructor) {
- return O.constructor.prototype;
- }
- return O instanceof Object ? ObjectPrototype : null;
- };
- },
- "./node_modules/core-js/internals/object-keys-internal.js": function(module3, exports2, __webpack_require__) {
- var has = __webpack_require__("./node_modules/core-js/internals/has.js");
- var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js");
- var arrayIncludes = __webpack_require__("./node_modules/core-js/internals/array-includes.js");
- var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js");
- var arrayIndexOf = arrayIncludes(false);
- module3.exports = function(object, names) {
- var O = toIndexedObject(object);
- var i = 0;
- var result = [];
- var key2;
- for (key2 in O)
- !has(hiddenKeys, key2) && has(O, key2) && result.push(key2);
- while (names.length > i)
- if (has(O, key2 = names[i++])) {
- ~arrayIndexOf(result, key2) || result.push(key2);
- }
- return result;
- };
- },
- "./node_modules/core-js/internals/object-keys.js": function(module3, exports2, __webpack_require__) {
- var internalObjectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys-internal.js");
- var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js");
- module3.exports = Object.keys || function keys(O) {
- return internalObjectKeys(O, enumBugKeys);
- };
- },
- "./node_modules/core-js/internals/object-property-is-enumerable.js": function(module3, exports2, __webpack_require__) {
- "use strict";
- var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
- var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
- var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
- exports2.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
- var descriptor = getOwnPropertyDescriptor(this, V);
- return !!descriptor && descriptor.enumerable;
- } : nativePropertyIsEnumerable;
- },
- "./node_modules/core-js/internals/object-set-prototype-of.js": function(module3, exports2, __webpack_require__) {
- var validateSetPrototypeOfArguments = __webpack_require__("./node_modules/core-js/internals/validate-set-prototype-of-arguments.js");
- module3.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() {
- var correctSetter = false;
- var test = {};
- var setter;
- try {
- setter = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set;
- setter.call(test, []);
- correctSetter = test instanceof Array;
- } catch (error) {
- }
- return function setPrototypeOf(O, proto) {
- validateSetPrototypeOfArguments(O, proto);
- if (correctSetter)
- setter.call(O, proto);
- else
- O.__proto__ = proto;
- return O;
- };
- }() : void 0);
- },
- "./node_modules/core-js/internals/own-keys.js": function(module3, exports2, __webpack_require__) {
- var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
- var getOwnPropertyNamesModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-names.js");
- var getOwnPropertySymbolsModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-symbols.js");
- var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
- var Reflect = global2.Reflect;
- module3.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
- var keys = getOwnPropertyNamesModule.f(anObject(it));
- var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
- return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
- };
- },
- "./node_modules/core-js/internals/path.js": function(module3, exports2, __webpack_require__) {
- module3.exports = __webpack_require__("./node_modules/core-js/internals/global.js");
- },
- "./node_modules/core-js/internals/redefine.js": function(module3, exports2, __webpack_require__) {
- var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
- var shared = __webpack_require__("./node_modules/core-js/internals/shared.js");
- var hide = __webpack_require__("./node_modules/core-js/internals/hide.js");
- var has = __webpack_require__("./node_modules/core-js/internals/has.js");
- var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js");
- var nativeFunctionToString = __webpack_require__("./node_modules/core-js/internals/function-to-string.js");
- var InternalStateModule = __webpack_require__("./node_modules/core-js/internals/internal-state.js");
- var getInternalState = InternalStateModule.get;
- var enforceInternalState = InternalStateModule.enforce;
- var TEMPLATE = String(nativeFunctionToString).split("toString");
- shared("inspectSource", function(it) {
- return nativeFunctionToString.call(it);
- });
- (module3.exports = function(O, key2, value, options) {
- var unsafe = options ? !!options.unsafe : false;
- var simple = options ? !!options.enumerable : false;
- var noTargetGet = options ? !!options.noTargetGet : false;
- if (typeof value == "function") {
- if (typeof key2 == "string" && !has(value, "name"))
- hide(value, "name", key2);
- enforceInternalState(value).source = TEMPLATE.join(typeof key2 == "string" ? key2 : "");
- }
- if (O === global2) {
- if (simple)
- O[key2] = value;
- else
- setGlobal(key2, value);
- return;
- } else if (!unsafe) {
- delete O[key2];
- } else if (!noTargetGet && O[key2]) {
- simple = true;
- }
- if (simple)
- O[key2] = value;
- else
- hide(O, key2, value);
- })(Function.prototype, "toString", function toString() {
- return typeof this == "function" && getInternalState(this).source || nativeFunctionToString.call(this);
- });
- },
- "./node_modules/core-js/internals/require-object-coercible.js": function(module3, exports2) {
- module3.exports = function(it) {
- if (it == void 0)
- throw TypeError("Can't call method on " + it);
- return it;
- };
- },
- "./node_modules/core-js/internals/set-global.js": function(module3, exports2, __webpack_require__) {
- var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
- var hide = __webpack_require__("./node_modules/core-js/internals/hide.js");
- module3.exports = function(key2, value) {
- try {
- hide(global2, key2, value);
- } catch (error) {
- global2[key2] = value;
- }
- return value;
- };
- },
- "./node_modules/core-js/internals/set-to-string-tag.js": function(module3, exports2, __webpack_require__) {
- var defineProperty = __webpack_require__("./node_modules/core-js/internals/object-define-property.js").f;
- var has = __webpack_require__("./node_modules/core-js/internals/has.js");
- var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js");
- var TO_STRING_TAG = wellKnownSymbol("toStringTag");
- module3.exports = function(it, TAG, STATIC) {
- if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
- defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });
- }
- };
- },
- "./node_modules/core-js/internals/shared-key.js": function(module3, exports2, __webpack_require__) {
- var shared = __webpack_require__("./node_modules/core-js/internals/shared.js");
- var uid = __webpack_require__("./node_modules/core-js/internals/uid.js");
- var keys = shared("keys");
- module3.exports = function(key2) {
- return keys[key2] || (keys[key2] = uid(key2));
- };
- },
- "./node_modules/core-js/internals/shared.js": function(module3, exports2, __webpack_require__) {
- var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
- var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js");
- var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js");
- var SHARED = "__core-js_shared__";
- var store = global2[SHARED] || setGlobal(SHARED, {});
- (module3.exports = function(key2, value) {
- return store[key2] || (store[key2] = value !== void 0 ? value : {});
- })("versions", []).push({
- version: "3.1.3",
- mode: IS_PURE ? "pure" : "global",
- copyright: "\xA9 2019 Denis Pushkarev (zloirock.ru)"
- });
- },
- "./node_modules/core-js/internals/string-at.js": function(module3, exports2, __webpack_require__) {
- var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js");
- var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js");
- module3.exports = function(that, pos, CONVERT_TO_STRING) {
- var S = String(requireObjectCoercible(that));
- var position = toInteger(pos);
- var size = S.length;
- var first2, second;
- if (position < 0 || position >= size)
- return CONVERT_TO_STRING ? "" : void 0;
- first2 = S.charCodeAt(position);
- return first2 < 55296 || first2 > 56319 || position + 1 === size || (second = S.charCodeAt(position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? S.charAt(position) : first2 : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first2 - 55296 << 10) + (second - 56320) + 65536;
- };
- },
- "./node_modules/core-js/internals/to-absolute-index.js": function(module3, exports2, __webpack_require__) {
- var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js");
- var max = Math.max;
- var min = Math.min;
- module3.exports = function(index2, length) {
- var integer = toInteger(index2);
- return integer < 0 ? max(integer + length, 0) : min(integer, length);
- };
- },
- "./node_modules/core-js/internals/to-indexed-object.js": function(module3, exports2, __webpack_require__) {
- var IndexedObject = __webpack_require__("./node_modules/core-js/internals/indexed-object.js");
- var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js");
- module3.exports = function(it) {
- return IndexedObject(requireObjectCoercible(it));
- };
- },
- "./node_modules/core-js/internals/to-integer.js": function(module3, exports2) {
- var ceil = Math.ceil;
- var floor = Math.floor;
- module3.exports = function(argument) {
- return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
- };
- },
- "./node_modules/core-js/internals/to-length.js": function(module3, exports2, __webpack_require__) {
- var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js");
- var min = Math.min;
- module3.exports = function(argument) {
- return argument > 0 ? min(toInteger(argument), 9007199254740991) : 0;
- };
- },
- "./node_modules/core-js/internals/to-object.js": function(module3, exports2, __webpack_require__) {
- var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js");
- module3.exports = function(argument) {
- return Object(requireObjectCoercible(argument));
- };
- },
- "./node_modules/core-js/internals/to-primitive.js": function(module3, exports2, __webpack_require__) {
- var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
- module3.exports = function(it, S) {
- if (!isObject(it))
- return it;
- var fn, val;
- if (S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it)))
- return val;
- if (typeof (fn = it.valueOf) == "function" && !isObject(val = fn.call(it)))
- return val;
- if (!S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it)))
- return val;
- throw TypeError("Can't convert object to primitive value");
- };
- },
- "./node_modules/core-js/internals/uid.js": function(module3, exports2) {
- var id = 0;
- var postfix = Math.random();
- module3.exports = function(key2) {
- return "Symbol(".concat(key2 === void 0 ? "" : key2, ")_", (++id + postfix).toString(36));
- };
- },
- "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js": function(module3, exports2, __webpack_require__) {
- var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js");
- var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js");
- module3.exports = function(O, proto) {
- anObject(O);
- if (!isObject(proto) && proto !== null) {
- throw TypeError("Can't set " + String(proto) + " as a prototype");
- }
- };
- },
- "./node_modules/core-js/internals/well-known-symbol.js": function(module3, exports2, __webpack_require__) {
- var global2 = __webpack_require__("./node_modules/core-js/internals/global.js");
- var shared = __webpack_require__("./node_modules/core-js/internals/shared.js");
- var uid = __webpack_require__("./node_modules/core-js/internals/uid.js");
- var NATIVE_SYMBOL = __webpack_require__("./node_modules/core-js/internals/native-symbol.js");
- var Symbol2 = global2.Symbol;
- var store = shared("wks");
- module3.exports = function(name) {
- return store[name] || (store[name] = NATIVE_SYMBOL && Symbol2[name] || (NATIVE_SYMBOL ? Symbol2 : uid)("Symbol." + name));
- };
- },
- "./node_modules/core-js/modules/es.array.from.js": function(module3, exports2, __webpack_require__) {
- var $ = __webpack_require__("./node_modules/core-js/internals/export.js");
- var from = __webpack_require__("./node_modules/core-js/internals/array-from.js");
- var checkCorrectnessOfIteration = __webpack_require__("./node_modules/core-js/internals/check-correctness-of-iteration.js");
- var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function(iterable) {
- Array.from(iterable);
- });
- $({ target: "Array", stat: true, forced: INCORRECT_ITERATION }, {
- from
- });
- },
- "./node_modules/core-js/modules/es.string.iterator.js": function(module3, exports2, __webpack_require__) {
- "use strict";
- var codePointAt = __webpack_require__("./node_modules/core-js/internals/string-at.js");
- var InternalStateModule = __webpack_require__("./node_modules/core-js/internals/internal-state.js");
- var defineIterator = __webpack_require__("./node_modules/core-js/internals/define-iterator.js");
- var STRING_ITERATOR = "String Iterator";
- var setInternalState = InternalStateModule.set;
- var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
- defineIterator(String, "String", function(iterated) {
- setInternalState(this, {
- type: STRING_ITERATOR,
- string: String(iterated),
- index: 0
- });
- }, function next() {
- var state = getInternalState(this);
- var string = state.string;
- var index2 = state.index;
- var point;
- if (index2 >= string.length)
- return { value: void 0, done: true };
- point = codePointAt(string, index2, true);
- state.index += point.length;
- return { value: point, done: false };
- });
- },
- "./node_modules/webpack/buildin/global.js": function(module3, exports2) {
- var g;
- g = function() {
- return this;
- }();
- try {
- g = g || Function("return this")() || (1, eval)("this");
- } catch (e) {
- if (typeof window === "object")
- g = window;
- }
- module3.exports = g;
- },
- "./src/default-attrs.json": function(module3) {
- module3.exports = { "xmlns": "http://www.w3.org/2000/svg", "width": 24, "height": 24, "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "stroke-width": 2, "stroke-linecap": "round", "stroke-linejoin": "round" };
- },
- "./src/icon.js": function(module3, exports2, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports2, "__esModule", {
- value: true
- });
- var _extends = Object.assign || function(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i];
- for (var key2 in source) {
- if (Object.prototype.hasOwnProperty.call(source, key2)) {
- target[key2] = source[key2];
- }
- }
- }
- return target;
- };
- var _createClass = function() {
- function defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor)
- descriptor.writable = true;
- Object.defineProperty(target, descriptor.key, descriptor);
- }
- }
- return function(Constructor, protoProps, staticProps) {
- if (protoProps)
- defineProperties(Constructor.prototype, protoProps);
- if (staticProps)
- defineProperties(Constructor, staticProps);
- return Constructor;
- };
- }();
- var _dedupe = __webpack_require__("./node_modules/classnames/dedupe.js");
- var _dedupe2 = _interopRequireDefault(_dedupe);
- var _defaultAttrs = __webpack_require__("./src/default-attrs.json");
- var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs);
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : { default: obj };
- }
- function _classCallCheck(instance6, Constructor) {
- if (!(instance6 instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
- }
- var Icon = function() {
- function Icon2(name, contents) {
- var tags = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
- _classCallCheck(this, Icon2);
- this.name = name;
- this.contents = contents;
- this.tags = tags;
- this.attrs = _extends({}, _defaultAttrs2.default, { class: "feather feather-" + name });
- }
- _createClass(Icon2, [{
- key: "toSvg",
- value: function toSvg() {
- var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
- var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) });
- return "<svg " + attrsToString(combinedAttrs) + ">" + this.contents + "</svg>";
- }
- }, {
- key: "toString",
- value: function toString() {
- return this.contents;
- }
- }]);
- return Icon2;
- }();
- function attrsToString(attrs) {
- return Object.keys(attrs).map(function(key2) {
- return key2 + '="' + attrs[key2] + '"';
- }).join(" ");
- }
- exports2.default = Icon;
- },
- "./src/icons.js": function(module3, exports2, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports2, "__esModule", {
- value: true
- });
- var _icon = __webpack_require__("./src/icon.js");
- var _icon2 = _interopRequireDefault(_icon);
- var _icons = __webpack_require__("./dist/icons.json");
- var _icons2 = _interopRequireDefault(_icons);
- var _tags = __webpack_require__("./src/tags.json");
- var _tags2 = _interopRequireDefault(_tags);
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : { default: obj };
- }
- exports2.default = Object.keys(_icons2.default).map(function(key2) {
- return new _icon2.default(key2, _icons2.default[key2], _tags2.default[key2]);
- }).reduce(function(object, icon) {
- object[icon.name] = icon;
- return object;
- }, {});
- },
- "./src/index.js": function(module3, exports2, __webpack_require__) {
- "use strict";
- var _icons = __webpack_require__("./src/icons.js");
- var _icons2 = _interopRequireDefault(_icons);
- var _toSvg = __webpack_require__("./src/to-svg.js");
- var _toSvg2 = _interopRequireDefault(_toSvg);
- var _replace = __webpack_require__("./src/replace.js");
- var _replace2 = _interopRequireDefault(_replace);
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : { default: obj };
- }
- module3.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default };
- },
- "./src/replace.js": function(module3, exports2, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports2, "__esModule", {
- value: true
- });
- var _extends = Object.assign || function(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i];
- for (var key2 in source) {
- if (Object.prototype.hasOwnProperty.call(source, key2)) {
- target[key2] = source[key2];
- }
- }
- }
- return target;
- };
- var _dedupe = __webpack_require__("./node_modules/classnames/dedupe.js");
- var _dedupe2 = _interopRequireDefault(_dedupe);
- var _icons = __webpack_require__("./src/icons.js");
- var _icons2 = _interopRequireDefault(_icons);
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : { default: obj };
- }
- function replace() {
- var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
- if (typeof document === "undefined") {
- throw new Error("`feather.replace()` only works in a browser environment.");
- }
- var elementsToReplace = document.querySelectorAll("[data-feather]");
- Array.from(elementsToReplace).forEach(function(element2) {
- return replaceElement(element2, attrs);
- });
- }
- function replaceElement(element2) {
- var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
- var elementAttrs = getAttrs(element2);
- var name = elementAttrs["data-feather"];
- delete elementAttrs["data-feather"];
- var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) }));
- var svgDocument = new DOMParser().parseFromString(svgString, "image/svg+xml");
- var svgElement = svgDocument.querySelector("svg");
- element2.parentNode.replaceChild(svgElement, element2);
- }
- function getAttrs(element2) {
- return Array.from(element2.attributes).reduce(function(attrs, attr2) {
- attrs[attr2.name] = attr2.value;
- return attrs;
- }, {});
- }
- exports2.default = replace;
- },
- "./src/tags.json": function(module3) {
- module3.exports = { "activity": ["pulse", "health", "action", "motion"], "airplay": ["stream", "cast", "mirroring"], "alert-circle": ["warning", "alert", "danger"], "alert-octagon": ["warning", "alert", "danger"], "alert-triangle": ["warning", "alert", "danger"], "align-center": ["text alignment", "center"], "align-justify": ["text alignment", "justified"], "align-left": ["text alignment", "left"], "align-right": ["text alignment", "right"], "anchor": [], "archive": ["index", "box"], "at-sign": ["mention", "at", "email", "message"], "award": ["achievement", "badge"], "aperture": ["camera", "photo"], "bar-chart": ["statistics", "diagram", "graph"], "bar-chart-2": ["statistics", "diagram", "graph"], "battery": ["power", "electricity"], "battery-charging": ["power", "electricity"], "bell": ["alarm", "notification", "sound"], "bell-off": ["alarm", "notification", "silent"], "bluetooth": ["wireless"], "book-open": ["read", "library"], "book": ["read", "dictionary", "booklet", "magazine", "library"], "bookmark": ["read", "clip", "marker", "tag"], "box": ["cube"], "briefcase": ["work", "bag", "baggage", "folder"], "calendar": ["date"], "camera": ["photo"], "cast": ["chromecast", "airplay"], "chevron-down": ["expand"], "chevron-up": ["collapse"], "circle": ["off", "zero", "record"], "clipboard": ["copy"], "clock": ["time", "watch", "alarm"], "cloud-drizzle": ["weather", "shower"], "cloud-lightning": ["weather", "bolt"], "cloud-rain": ["weather"], "cloud-snow": ["weather", "blizzard"], "cloud": ["weather"], "codepen": ["logo"], "codesandbox": ["logo"], "code": ["source", "programming"], "coffee": ["drink", "cup", "mug", "tea", "cafe", "hot", "beverage"], "columns": ["layout"], "command": ["keyboard", "cmd", "terminal", "prompt"], "compass": ["navigation", "safari", "travel", "direction"], "copy": ["clone", "duplicate"], "corner-down-left": ["arrow", "return"], "corner-down-right": ["arrow"], "corner-left-down": ["arrow"], "corner-left-up": ["arrow"], "corner-right-down": ["arrow"], "corner-right-up": ["arrow"], "corner-up-left": ["arrow"], "corner-up-right": ["arrow"], "cpu": ["processor", "technology"], "credit-card": ["purchase", "payment", "cc"], "crop": ["photo", "image"], "crosshair": ["aim", "target"], "database": ["storage", "memory"], "delete": ["remove"], "disc": ["album", "cd", "dvd", "music"], "dollar-sign": ["currency", "money", "payment"], "droplet": ["water"], "edit": ["pencil", "change"], "edit-2": ["pencil", "change"], "edit-3": ["pencil", "change"], "eye": ["view", "watch"], "eye-off": ["view", "watch", "hide", "hidden"], "external-link": ["outbound"], "facebook": ["logo", "social"], "fast-forward": ["music"], "figma": ["logo", "design", "tool"], "file-minus": ["delete", "remove", "erase"], "file-plus": ["add", "create", "new"], "file-text": ["data", "txt", "pdf"], "film": ["movie", "video"], "filter": ["funnel", "hopper"], "flag": ["report"], "folder-minus": ["directory"], "folder-plus": ["directory"], "folder": ["directory"], "framer": ["logo", "design", "tool"], "frown": ["emoji", "face", "bad", "sad", "emotion"], "gift": ["present", "box", "birthday", "party"], "git-branch": ["code", "version control"], "git-commit": ["code", "version control"], "git-merge": ["code", "version control"], "git-pull-request": ["code", "version control"], "github": ["logo", "version control"], "gitlab": ["logo", "version control"], "globe": ["world", "browser", "language", "translate"], "hard-drive": ["computer", "server", "memory", "data"], "hash": ["hashtag", "number", "pound"], "headphones": ["music", "audio", "sound"], "heart": ["like", "love", "emotion"], "help-circle": ["question mark"], "hexagon": ["shape", "node.js", "logo"], "home": ["house", "living"], "image": ["picture"], "inbox": ["email"], "instagram": ["logo", "camera"], "key": ["password", "login", "authentication", "secure"], "layers": ["stack"], "layout": ["window", "webpage"], "life-bouy": ["help", "life ring", "support"], "link": ["chain", "url"], "link-2": ["chain", "url"], "linkedin": ["logo", "social media"], "list": ["options"], "lock": ["security", "password", "secure"], "log-in": ["sign in", "arrow", "enter"], "log-out": ["sign out", "arrow", "exit"], "mail": ["email", "message"], "map-pin": ["location", "navigation", "travel", "marker"], "map": ["location", "navigation", "travel"], "maximize": ["fullscreen"], "maximize-2": ["fullscreen", "arrows", "expand"], "meh": ["emoji", "face", "neutral", "emotion"], "menu": ["bars", "navigation", "hamburger"], "message-circle": ["comment", "chat"], "message-square": ["comment", "chat"], "mic-off": ["record", "sound", "mute"], "mic": ["record", "sound", "listen"], "minimize": ["exit fullscreen", "close"], "minimize-2": ["exit fullscreen", "arrows", "close"], "minus": ["subtract"], "monitor": ["tv", "screen", "display"], "moon": ["dark", "night"], "more-horizontal": ["ellipsis"], "more-vertical": ["ellipsis"], "mouse-pointer": ["arrow", "cursor"], "move": ["arrows"], "music": ["note"], "navigation": ["location", "travel"], "navigation-2": ["location", "travel"], "octagon": ["stop"], "package": ["box", "container"], "paperclip": ["attachment"], "pause": ["music", "stop"], "pause-circle": ["music", "audio", "stop"], "pen-tool": ["vector", "drawing"], "percent": ["discount"], "phone-call": ["ring"], "phone-forwarded": ["call"], "phone-incoming": ["call"], "phone-missed": ["call"], "phone-off": ["call", "mute"], "phone-outgoing": ["call"], "phone": ["call"], "play": ["music", "start"], "pie-chart": ["statistics", "diagram"], "play-circle": ["music", "start"], "plus": ["add", "new"], "plus-circle": ["add", "new"], "plus-square": ["add", "new"], "pocket": ["logo", "save"], "power": ["on", "off"], "printer": ["fax", "office", "device"], "radio": ["signal"], "refresh-cw": ["synchronise", "arrows"], "refresh-ccw": ["arrows"], "repeat": ["loop", "arrows"], "rewind": ["music"], "rotate-ccw": ["arrow"], "rotate-cw": ["arrow"], "rss": ["feed", "subscribe"], "save": ["floppy disk"], "scissors": ["cut"], "search": ["find", "magnifier", "magnifying glass"], "send": ["message", "mail", "email", "paper airplane", "paper aeroplane"], "settings": ["cog", "edit", "gear", "preferences"], "share-2": ["network", "connections"], "shield": ["security", "secure"], "shield-off": ["security", "insecure"], "shopping-bag": ["ecommerce", "cart", "purchase", "store"], "shopping-cart": ["ecommerce", "cart", "purchase", "store"], "shuffle": ["music"], "skip-back": ["music"], "skip-forward": ["music"], "slack": ["logo"], "slash": ["ban", "no"], "sliders": ["settings", "controls"], "smartphone": ["cellphone", "device"], "smile": ["emoji", "face", "happy", "good", "emotion"], "speaker": ["audio", "music"], "star": ["bookmark", "favorite", "like"], "stop-circle": ["media", "music"], "sun": ["brightness", "weather", "light"], "sunrise": ["weather", "time", "morning", "day"], "sunset": ["weather", "time", "evening", "night"], "tablet": ["device"], "tag": ["label"], "target": ["logo", "bullseye"], "terminal": ["code", "command line", "prompt"], "thermometer": ["temperature", "celsius", "fahrenheit", "weather"], "thumbs-down": ["dislike", "bad", "emotion"], "thumbs-up": ["like", "good", "emotion"], "toggle-left": ["on", "off", "switch"], "toggle-right": ["on", "off", "switch"], "tool": ["settings", "spanner"], "trash": ["garbage", "delete", "remove", "bin"], "trash-2": ["garbage", "delete", "remove", "bin"], "triangle": ["delta"], "truck": ["delivery", "van", "shipping", "transport", "lorry"], "tv": ["television", "stream"], "twitch": ["logo"], "twitter": ["logo", "social"], "type": ["text"], "umbrella": ["rain", "weather"], "unlock": ["security"], "user-check": ["followed", "subscribed"], "user-minus": ["delete", "remove", "unfollow", "unsubscribe"], "user-plus": ["new", "add", "create", "follow", "subscribe"], "user-x": ["delete", "remove", "unfollow", "unsubscribe", "unavailable"], "user": ["person", "account"], "users": ["group"], "video-off": ["camera", "movie", "film"], "video": ["camera", "movie", "film"], "voicemail": ["phone"], "volume": ["music", "sound", "mute"], "volume-1": ["music", "sound"], "volume-2": ["music", "sound"], "volume-x": ["music", "sound", "mute"], "watch": ["clock", "time"], "wifi-off": ["disabled"], "wifi": ["connection", "signal", "wireless"], "wind": ["weather", "air"], "x-circle": ["cancel", "close", "delete", "remove", "times", "clear"], "x-octagon": ["delete", "stop", "alert", "warning", "times", "clear"], "x-square": ["cancel", "close", "delete", "remove", "times", "clear"], "x": ["cancel", "close", "delete", "remove", "times", "clear"], "youtube": ["logo", "video", "play"], "zap-off": ["flash", "camera", "lightning"], "zap": ["flash", "camera", "lightning"], "zoom-in": ["magnifying glass"], "zoom-out": ["magnifying glass"] };
- },
- "./src/to-svg.js": function(module3, exports2, __webpack_require__) {
- "use strict";
- Object.defineProperty(exports2, "__esModule", {
- value: true
- });
- var _icons = __webpack_require__("./src/icons.js");
- var _icons2 = _interopRequireDefault(_icons);
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : { default: obj };
- }
- function toSvg(name) {
- var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
- console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.");
- if (!name) {
- throw new Error("The required `key` (icon name) parameter is missing.");
- }
- if (!_icons2.default[name]) {
- throw new Error("No icon matching '" + name + "'. See the complete list of icons at https://feathericons.com");
- }
- return _icons2.default[name].toSvg(attrs);
- }
- exports2.default = toSvg;
- },
- 0: function(module3, exports2, __webpack_require__) {
- __webpack_require__("./node_modules/core-js/es/array/from.js");
- module3.exports = __webpack_require__("./src/index.js");
- }
- });
- });
- }
- });
- // src/main.ts
- __export(exports, {
- default: () => ObsidianGit
- });
- init_polyfill_buffer();
- // node_modules/isomorphic-git/index.js
- init_polyfill_buffer();
- var import_async_lock = __toModule(require_async_lock());
- var import_sha1 = __toModule(require_sha1());
- var import_crc_32 = __toModule(require_crc32());
- var import_pako = __toModule(require_pako());
- var import_ignore = __toModule(require_ignore());
- var import_pify = __toModule(require_pify());
- var import_clean_git_ref = __toModule(require_lib2());
- var import_diff3 = __toModule(require_diff3());
- var BaseError = class extends Error {
- constructor(message) {
- super(message);
- this.caller = "";
- }
- toJSON() {
- return {
- code: this.code,
- data: this.data,
- caller: this.caller,
- message: this.message,
- stack: this.stack
- };
- }
- fromJSON(json) {
- const e = new BaseError(json.message);
- e.code = json.code;
- e.data = json.data;
- e.caller = json.caller;
- e.stack = json.stack;
- return e;
- }
- get isIsomorphicGitError() {
- return true;
- }
- };
- var InternalError = class extends BaseError {
- constructor(message) {
- super(`An internal error caused this command to fail. Please file a bug report at https://github.com/isomorphic-git/isomorphic-git/issues with this error message: ${message}`);
- this.code = this.name = InternalError.code;
- this.data = { message };
- }
- };
- InternalError.code = "InternalError";
- var UnsafeFilepathError = class extends BaseError {
- constructor(filepath) {
- super(`The filepath "${filepath}" contains unsafe character sequences`);
- this.code = this.name = UnsafeFilepathError.code;
- this.data = { filepath };
- }
- };
- UnsafeFilepathError.code = "UnsafeFilepathError";
- var BufferCursor = class {
- constructor(buffer2) {
- this.buffer = buffer2;
- this._start = 0;
- }
- eof() {
- return this._start >= this.buffer.length;
- }
- tell() {
- return this._start;
- }
- seek(n) {
- this._start = n;
- }
- slice(n) {
- const r = this.buffer.slice(this._start, this._start + n);
- this._start += n;
- return r;
- }
- toString(enc, length) {
- const r = this.buffer.toString(enc, this._start, this._start + length);
- this._start += length;
- return r;
- }
- write(value, length, enc) {
- const r = this.buffer.write(value, this._start, length, enc);
- this._start += length;
- return r;
- }
- copy(source, start, end) {
- const r = source.copy(this.buffer, this._start, start, end);
- this._start += r;
- return r;
- }
- readUInt8() {
- const r = this.buffer.readUInt8(this._start);
- this._start += 1;
- return r;
- }
- writeUInt8(value) {
- const r = this.buffer.writeUInt8(value, this._start);
- this._start += 1;
- return r;
- }
- readUInt16BE() {
- const r = this.buffer.readUInt16BE(this._start);
- this._start += 2;
- return r;
- }
- writeUInt16BE(value) {
- const r = this.buffer.writeUInt16BE(value, this._start);
- this._start += 2;
- return r;
- }
- readUInt32BE() {
- const r = this.buffer.readUInt32BE(this._start);
- this._start += 4;
- return r;
- }
- writeUInt32BE(value) {
- const r = this.buffer.writeUInt32BE(value, this._start);
- this._start += 4;
- return r;
- }
- };
- function compareStrings(a, b) {
- return -(a < b) || +(a > b);
- }
- function comparePath(a, b) {
- return compareStrings(a.path, b.path);
- }
- function normalizeMode(mode) {
- let type = mode > 0 ? mode >> 12 : 0;
- if (type !== 4 && type !== 8 && type !== 10 && type !== 14) {
- type = 8;
- }
- let permissions = mode & 511;
- if (permissions & 73) {
- permissions = 493;
- } else {
- permissions = 420;
- }
- if (type !== 8)
- permissions = 0;
- return (type << 12) + permissions;
- }
- var MAX_UINT32 = 2 ** 32;
- function SecondsNanoseconds(givenSeconds, givenNanoseconds, milliseconds, date) {
- if (givenSeconds !== void 0 && givenNanoseconds !== void 0) {
- return [givenSeconds, givenNanoseconds];
- }
- if (milliseconds === void 0) {
- milliseconds = date.valueOf();
- }
- const seconds = Math.floor(milliseconds / 1e3);
- const nanoseconds = (milliseconds - seconds * 1e3) * 1e6;
- return [seconds, nanoseconds];
- }
- function normalizeStats(e) {
- const [ctimeSeconds, ctimeNanoseconds] = SecondsNanoseconds(e.ctimeSeconds, e.ctimeNanoseconds, e.ctimeMs, e.ctime);
- const [mtimeSeconds, mtimeNanoseconds] = SecondsNanoseconds(e.mtimeSeconds, e.mtimeNanoseconds, e.mtimeMs, e.mtime);
- return {
- ctimeSeconds: ctimeSeconds % MAX_UINT32,
- ctimeNanoseconds: ctimeNanoseconds % MAX_UINT32,
- mtimeSeconds: mtimeSeconds % MAX_UINT32,
- mtimeNanoseconds: mtimeNanoseconds % MAX_UINT32,
- dev: e.dev % MAX_UINT32,
- ino: e.ino % MAX_UINT32,
- mode: normalizeMode(e.mode % MAX_UINT32),
- uid: e.uid % MAX_UINT32,
- gid: e.gid % MAX_UINT32,
- size: e.size > -1 ? e.size % MAX_UINT32 : 0
- };
- }
- function toHex(buffer2) {
- let hex = "";
- for (const byte of new Uint8Array(buffer2)) {
- if (byte < 16)
- hex += "0";
- hex += byte.toString(16);
- }
- return hex;
- }
- var supportsSubtleSHA1 = null;
- async function shasum(buffer2) {
- if (supportsSubtleSHA1 === null) {
- supportsSubtleSHA1 = await testSubtleSHA1();
- }
- return supportsSubtleSHA1 ? subtleSHA1(buffer2) : shasumSync(buffer2);
- }
- function shasumSync(buffer2) {
- return new import_sha1.default().update(buffer2).digest("hex");
- }
- async function subtleSHA1(buffer2) {
- const hash2 = await crypto.subtle.digest("SHA-1", buffer2);
- return toHex(hash2);
- }
- async function testSubtleSHA1() {
- try {
- const hash2 = await subtleSHA1(new Uint8Array([]));
- if (hash2 === "da39a3ee5e6b4b0d3255bfef95601890afd80709")
- return true;
- } catch (_) {
- }
- return false;
- }
- function parseCacheEntryFlags(bits) {
- return {
- assumeValid: Boolean(bits & 32768),
- extended: Boolean(bits & 16384),
- stage: (bits & 12288) >> 12,
- nameLength: bits & 4095
- };
- }
- function renderCacheEntryFlags(entry) {
- const flags = entry.flags;
- flags.extended = false;
- flags.nameLength = Math.min(Buffer2.from(entry.path).length, 4095);
- return (flags.assumeValid ? 32768 : 0) + (flags.extended ? 16384 : 0) + ((flags.stage & 3) << 12) + (flags.nameLength & 4095);
- }
- var GitIndex = class {
- constructor(entries) {
- this._dirty = false;
- this._entries = entries || new Map();
- }
- static async from(buffer2) {
- if (Buffer2.isBuffer(buffer2)) {
- return GitIndex.fromBuffer(buffer2);
- } else if (buffer2 === null) {
- return new GitIndex(null);
- } else {
- throw new InternalError("invalid type passed to GitIndex.from");
- }
- }
- static async fromBuffer(buffer2) {
- const shaComputed = await shasum(buffer2.slice(0, -20));
- const shaClaimed = buffer2.slice(-20).toString("hex");
- if (shaClaimed !== shaComputed) {
- throw new InternalError(`Invalid checksum in GitIndex buffer: expected ${shaClaimed} but saw ${shaComputed}`);
- }
- const reader = new BufferCursor(buffer2);
- const _entries = new Map();
- const magic = reader.toString("utf8", 4);
- if (magic !== "DIRC") {
- throw new InternalError(`Inavlid dircache magic file number: ${magic}`);
- }
- const version2 = reader.readUInt32BE();
- if (version2 !== 2) {
- throw new InternalError(`Unsupported dircache version: ${version2}`);
- }
- const numEntries = reader.readUInt32BE();
- let i = 0;
- while (!reader.eof() && i < numEntries) {
- const entry = {};
- entry.ctimeSeconds = reader.readUInt32BE();
- entry.ctimeNanoseconds = reader.readUInt32BE();
- entry.mtimeSeconds = reader.readUInt32BE();
- entry.mtimeNanoseconds = reader.readUInt32BE();
- entry.dev = reader.readUInt32BE();
- entry.ino = reader.readUInt32BE();
- entry.mode = reader.readUInt32BE();
- entry.uid = reader.readUInt32BE();
- entry.gid = reader.readUInt32BE();
- entry.size = reader.readUInt32BE();
- entry.oid = reader.slice(20).toString("hex");
- const flags = reader.readUInt16BE();
- entry.flags = parseCacheEntryFlags(flags);
- const pathlength = buffer2.indexOf(0, reader.tell() + 1) - reader.tell();
- if (pathlength < 1) {
- throw new InternalError(`Got a path length of: ${pathlength}`);
- }
- entry.path = reader.toString("utf8", pathlength);
- if (entry.path.includes("..\\") || entry.path.includes("../")) {
- throw new UnsafeFilepathError(entry.path);
- }
- let padding = 8 - (reader.tell() - 12) % 8;
- if (padding === 0)
- padding = 8;
- while (padding--) {
- const tmp = reader.readUInt8();
- if (tmp !== 0) {
- throw new InternalError(`Expected 1-8 null characters but got '${tmp}' after ${entry.path}`);
- } else if (reader.eof()) {
- throw new InternalError("Unexpected end of file");
- }
- }
- _entries.set(entry.path, entry);
- i++;
- }
- return new GitIndex(_entries);
- }
- get entries() {
- return [...this._entries.values()].sort(comparePath);
- }
- get entriesMap() {
- return this._entries;
- }
- *[Symbol.iterator]() {
- for (const entry of this.entries) {
- yield entry;
- }
- }
- insert({ filepath, stats, oid }) {
- stats = normalizeStats(stats);
- const bfilepath = Buffer2.from(filepath);
- const entry = {
- ctimeSeconds: stats.ctimeSeconds,
- ctimeNanoseconds: stats.ctimeNanoseconds,
- mtimeSeconds: stats.mtimeSeconds,
- mtimeNanoseconds: stats.mtimeNanoseconds,
- dev: stats.dev,
- ino: stats.ino,
- mode: stats.mode || 33188,
- uid: stats.uid,
- gid: stats.gid,
- size: stats.size,
- path: filepath,
- oid,
- flags: {
- assumeValid: false,
- extended: false,
- stage: 0,
- nameLength: bfilepath.length < 4095 ? bfilepath.length : 4095
- }
- };
- this._entries.set(entry.path, entry);
- this._dirty = true;
- }
- delete({ filepath }) {
- if (this._entries.has(filepath)) {
- this._entries.delete(filepath);
- } else {
- for (const key2 of this._entries.keys()) {
- if (key2.startsWith(filepath + "/")) {
- this._entries.delete(key2);
- }
- }
- }
- this._dirty = true;
- }
- clear() {
- this._entries.clear();
- this._dirty = true;
- }
- has({ filepath }) {
- return this._entries.has(filepath);
- }
- render() {
- return this.entries.map((entry) => `${entry.mode.toString(8)} ${entry.oid} ${entry.path}`).join("\n");
- }
- async toObject() {
- const header = Buffer2.alloc(12);
- const writer = new BufferCursor(header);
- writer.write("DIRC", 4, "utf8");
- writer.writeUInt32BE(2);
- writer.writeUInt32BE(this.entries.length);
- const body = Buffer2.concat(this.entries.map((entry) => {
- const bpath = Buffer2.from(entry.path);
- const length = Math.ceil((62 + bpath.length + 1) / 8) * 8;
- const written = Buffer2.alloc(length);
- const writer2 = new BufferCursor(written);
- const stat = normalizeStats(entry);
- writer2.writeUInt32BE(stat.ctimeSeconds);
- writer2.writeUInt32BE(stat.ctimeNanoseconds);
- writer2.writeUInt32BE(stat.mtimeSeconds);
- writer2.writeUInt32BE(stat.mtimeNanoseconds);
- writer2.writeUInt32BE(stat.dev);
- writer2.writeUInt32BE(stat.ino);
- writer2.writeUInt32BE(stat.mode);
- writer2.writeUInt32BE(stat.uid);
- writer2.writeUInt32BE(stat.gid);
- writer2.writeUInt32BE(stat.size);
- writer2.write(entry.oid, 20, "hex");
- writer2.writeUInt16BE(renderCacheEntryFlags(entry));
- writer2.write(entry.path, bpath.length, "utf8");
- return written;
- }));
- const main = Buffer2.concat([header, body]);
- const sum = await shasum(main);
- return Buffer2.concat([main, Buffer2.from(sum, "hex")]);
- }
- };
- function compareStats(entry, stats) {
- const e = normalizeStats(entry);
- const s = normalizeStats(stats);
- const staleness = e.mode !== s.mode || e.mtimeSeconds !== s.mtimeSeconds || e.ctimeSeconds !== s.ctimeSeconds || e.uid !== s.uid || e.gid !== s.gid || e.ino !== s.ino || e.size !== s.size;
- return staleness;
- }
- var lock = null;
- var IndexCache = Symbol("IndexCache");
- function createCache() {
- return {
- map: new Map(),
- stats: new Map()
- };
- }
- async function updateCachedIndexFile(fs, filepath, cache) {
- const stat = await fs.lstat(filepath);
- const rawIndexFile = await fs.read(filepath);
- const index2 = await GitIndex.from(rawIndexFile);
- cache.map.set(filepath, index2);
- cache.stats.set(filepath, stat);
- }
- async function isIndexStale(fs, filepath, cache) {
- const savedStats = cache.stats.get(filepath);
- if (savedStats === void 0)
- return true;
- const currStats = await fs.lstat(filepath);
- if (savedStats === null)
- return false;
- if (currStats === null)
- return false;
- return compareStats(savedStats, currStats);
- }
- var GitIndexManager = class {
- static async acquire({ fs, gitdir, cache }, closure) {
- if (!cache[IndexCache])
- cache[IndexCache] = createCache();
- const filepath = `${gitdir}/index`;
- if (lock === null)
- lock = new import_async_lock.default({ maxPending: Infinity });
- let result;
- await lock.acquire(filepath, async () => {
- if (await isIndexStale(fs, filepath, cache[IndexCache])) {
- await updateCachedIndexFile(fs, filepath, cache[IndexCache]);
- }
- const index2 = cache[IndexCache].map.get(filepath);
- result = await closure(index2);
- if (index2._dirty) {
- const buffer2 = await index2.toObject();
- await fs.write(filepath, buffer2);
- cache[IndexCache].stats.set(filepath, await fs.lstat(filepath));
- index2._dirty = false;
- }
- });
- return result;
- }
- };
- function basename(path2) {
- const last2 = Math.max(path2.lastIndexOf("/"), path2.lastIndexOf("\\"));
- if (last2 > -1) {
- path2 = path2.slice(last2 + 1);
- }
- return path2;
- }
- function dirname(path2) {
- const last2 = Math.max(path2.lastIndexOf("/"), path2.lastIndexOf("\\"));
- if (last2 === -1)
- return ".";
- if (last2 === 0)
- return "/";
- return path2.slice(0, last2);
- }
- function flatFileListToDirectoryStructure(files) {
- const inodes = new Map();
- const mkdir = function(name) {
- if (!inodes.has(name)) {
- const dir = {
- type: "tree",
- fullpath: name,
- basename: basename(name),
- metadata: {},
- children: []
- };
- inodes.set(name, dir);
- dir.parent = mkdir(dirname(name));
- if (dir.parent && dir.parent !== dir)
- dir.parent.children.push(dir);
- }
- return inodes.get(name);
- };
- const mkfile = function(name, metadata) {
- if (!inodes.has(name)) {
- const file = {
- type: "blob",
- fullpath: name,
- basename: basename(name),
- metadata,
- parent: mkdir(dirname(name)),
- children: []
- };
- if (file.parent)
- file.parent.children.push(file);
- inodes.set(name, file);
- }
- return inodes.get(name);
- };
- mkdir(".");
- for (const file of files) {
- mkfile(file.path, file);
- }
- return inodes;
- }
- function mode2type(mode) {
- switch (mode) {
- case 16384:
- return "tree";
- case 33188:
- return "blob";
- case 33261:
- return "blob";
- case 40960:
- return "blob";
- case 57344:
- return "commit";
- }
- throw new InternalError(`Unexpected GitTree entry mode: ${mode.toString(8)}`);
- }
- var GitWalkerIndex = class {
- constructor({ fs, gitdir, cache }) {
- this.treePromise = GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) {
- return flatFileListToDirectoryStructure(index2.entries);
- });
- const walker = this;
- this.ConstructEntry = class StageEntry {
- constructor(fullpath) {
- this._fullpath = fullpath;
- this._type = false;
- this._mode = false;
- this._stat = false;
- this._oid = false;
- }
- async type() {
- return walker.type(this);
- }
- async mode() {
- return walker.mode(this);
- }
- async stat() {
- return walker.stat(this);
- }
- async content() {
- return walker.content(this);
- }
- async oid() {
- return walker.oid(this);
- }
- };
- }
- async readdir(entry) {
- const filepath = entry._fullpath;
- const tree = await this.treePromise;
- const inode = tree.get(filepath);
- if (!inode)
- return null;
- if (inode.type === "blob")
- return null;
- if (inode.type !== "tree") {
- throw new Error(`ENOTDIR: not a directory, scandir '${filepath}'`);
- }
- const names = inode.children.map((inode2) => inode2.fullpath);
- names.sort(compareStrings);
- return names;
- }
- async type(entry) {
- if (entry._type === false) {
- await entry.stat();
- }
- return entry._type;
- }
- async mode(entry) {
- if (entry._mode === false) {
- await entry.stat();
- }
- return entry._mode;
- }
- async stat(entry) {
- if (entry._stat === false) {
- const tree = await this.treePromise;
- const inode = tree.get(entry._fullpath);
- if (!inode) {
- throw new Error(`ENOENT: no such file or directory, lstat '${entry._fullpath}'`);
- }
- const stats = inode.type === "tree" ? {} : normalizeStats(inode.metadata);
- entry._type = inode.type === "tree" ? "tree" : mode2type(stats.mode);
- entry._mode = stats.mode;
- if (inode.type === "tree") {
- entry._stat = void 0;
- } else {
- entry._stat = stats;
- }
- }
- return entry._stat;
- }
- async content(_entry) {
- }
- async oid(entry) {
- if (entry._oid === false) {
- const tree = await this.treePromise;
- const inode = tree.get(entry._fullpath);
- entry._oid = inode.metadata.oid;
- }
- return entry._oid;
- }
- };
- var GitWalkSymbol = Symbol("GitWalkSymbol");
- function STAGE() {
- const o = Object.create(null);
- Object.defineProperty(o, GitWalkSymbol, {
- value: function({ fs, gitdir, cache }) {
- return new GitWalkerIndex({ fs, gitdir, cache });
- }
- });
- Object.freeze(o);
- return o;
- }
- var NotFoundError = class extends BaseError {
- constructor(what) {
- super(`Could not find ${what}.`);
- this.code = this.name = NotFoundError.code;
- this.data = { what };
- }
- };
- NotFoundError.code = "NotFoundError";
- var ObjectTypeError = class extends BaseError {
- constructor(oid, actual, expected, filepath) {
- super(`Object ${oid} ${filepath ? `at ${filepath}` : ""}was anticipated to be a ${expected} but it is a ${actual}.`);
- this.code = this.name = ObjectTypeError.code;
- this.data = { oid, actual, expected, filepath };
- }
- };
- ObjectTypeError.code = "ObjectTypeError";
- var InvalidOidError = class extends BaseError {
- constructor(value) {
- super(`Expected a 40-char hex object id but saw "${value}".`);
- this.code = this.name = InvalidOidError.code;
- this.data = { value };
- }
- };
- InvalidOidError.code = "InvalidOidError";
- var NoRefspecError = class extends BaseError {
- constructor(remote) {
- super(`Could not find a fetch refspec for remote "${remote}". Make sure the config file has an entry like the following:
- [remote "${remote}"]
- fetch = +refs/heads/*:refs/remotes/origin/*
- `);
- this.code = this.name = NoRefspecError.code;
- this.data = { remote };
- }
- };
- NoRefspecError.code = "NoRefspecError";
- var GitPackedRefs = class {
- constructor(text2) {
- this.refs = new Map();
- this.parsedConfig = [];
- if (text2) {
- let key2 = null;
- this.parsedConfig = text2.trim().split("\n").map((line) => {
- if (/^\s*#/.test(line)) {
- return { line, comment: true };
- }
- const i = line.indexOf(" ");
- if (line.startsWith("^")) {
- const value = line.slice(1);
- this.refs.set(key2 + "^{}", value);
- return { line, ref: key2, peeled: value };
- } else {
- const value = line.slice(0, i);
- key2 = line.slice(i + 1);
- this.refs.set(key2, value);
- return { line, ref: key2, oid: value };
- }
- });
- }
- return this;
- }
- static from(text2) {
- return new GitPackedRefs(text2);
- }
- delete(ref) {
- this.parsedConfig = this.parsedConfig.filter((entry) => entry.ref !== ref);
- this.refs.delete(ref);
- }
- toString() {
- return this.parsedConfig.map(({ line }) => line).join("\n") + "\n";
- }
- };
- var GitRefSpec = class {
- constructor({ remotePath, localPath, force, matchPrefix }) {
- Object.assign(this, {
- remotePath,
- localPath,
- force,
- matchPrefix
- });
- }
- static from(refspec) {
- const [
- forceMatch,
- remotePath,
- remoteGlobMatch,
- localPath,
- localGlobMatch
- ] = refspec.match(/^(\+?)(.*?)(\*?):(.*?)(\*?)$/).slice(1);
- const force = forceMatch === "+";
- const remoteIsGlob = remoteGlobMatch === "*";
- const localIsGlob = localGlobMatch === "*";
- if (remoteIsGlob !== localIsGlob) {
- throw new InternalError("Invalid refspec");
- }
- return new GitRefSpec({
- remotePath,
- localPath,
- force,
- matchPrefix: remoteIsGlob
- });
- }
- translate(remoteBranch) {
- if (this.matchPrefix) {
- if (remoteBranch.startsWith(this.remotePath)) {
- return this.localPath + remoteBranch.replace(this.remotePath, "");
- }
- } else {
- if (remoteBranch === this.remotePath)
- return this.localPath;
- }
- return null;
- }
- reverseTranslate(localBranch) {
- if (this.matchPrefix) {
- if (localBranch.startsWith(this.localPath)) {
- return this.remotePath + localBranch.replace(this.localPath, "");
- }
- } else {
- if (localBranch === this.localPath)
- return this.remotePath;
- }
- return null;
- }
- };
- var GitRefSpecSet = class {
- constructor(rules = []) {
- this.rules = rules;
- }
- static from(refspecs) {
- const rules = [];
- for (const refspec of refspecs) {
- rules.push(GitRefSpec.from(refspec));
- }
- return new GitRefSpecSet(rules);
- }
- add(refspec) {
- const rule = GitRefSpec.from(refspec);
- this.rules.push(rule);
- }
- translate(remoteRefs) {
- const result = [];
- for (const rule of this.rules) {
- for (const remoteRef of remoteRefs) {
- const localRef = rule.translate(remoteRef);
- if (localRef) {
- result.push([remoteRef, localRef]);
- }
- }
- }
- return result;
- }
- translateOne(remoteRef) {
- let result = null;
- for (const rule of this.rules) {
- const localRef = rule.translate(remoteRef);
- if (localRef) {
- result = localRef;
- }
- }
- return result;
- }
- localNamespaces() {
- return this.rules.filter((rule) => rule.matchPrefix).map((rule) => rule.localPath.replace(/\/$/, ""));
- }
- };
- function compareRefNames(a, b) {
- const _a2 = a.replace(/\^\{\}$/, "");
- const _b = b.replace(/\^\{\}$/, "");
- const tmp = -(_a2 < _b) || +(_a2 > _b);
- if (tmp === 0) {
- return a.endsWith("^{}") ? 1 : -1;
- }
- return tmp;
- }
- function normalizePath(path2) {
- return path2.replace(/\/\.\//g, "/").replace(/\/{2,}/g, "/").replace(/^\/\.$/, "/").replace(/^\.\/$/, ".").replace(/^\.\//, "").replace(/\/\.$/, "").replace(/(.+)\/$/, "$1").replace(/^$/, ".");
- }
- function join(...parts) {
- return normalizePath(parts.map(normalizePath).join("/"));
- }
- var num = (val) => {
- val = val.toLowerCase();
- let n = parseInt(val);
- if (val.endsWith("k"))
- n *= 1024;
- if (val.endsWith("m"))
- n *= 1024 * 1024;
- if (val.endsWith("g"))
- n *= 1024 * 1024 * 1024;
- return n;
- };
- var bool = (val) => {
- val = val.trim().toLowerCase();
- if (val === "true" || val === "yes" || val === "on")
- return true;
- if (val === "false" || val === "no" || val === "off")
- return false;
- throw Error(`Expected 'true', 'false', 'yes', 'no', 'on', or 'off', but got ${val}`);
- };
- var schema = {
- core: {
- filemode: bool,
- bare: bool,
- logallrefupdates: bool,
- symlinks: bool,
- ignorecase: bool,
- bigFileThreshold: num
- }
- };
- var SECTION_LINE_REGEX = /^\[([A-Za-z0-9-.]+)(?: "(.*)")?\]$/;
- var SECTION_REGEX = /^[A-Za-z0-9-.]+$/;
- var VARIABLE_LINE_REGEX = /^([A-Za-z][A-Za-z-]*)(?: *= *(.*))?$/;
- var VARIABLE_NAME_REGEX = /^[A-Za-z][A-Za-z-]*$/;
- var VARIABLE_VALUE_COMMENT_REGEX = /^(.*?)( *[#;].*)$/;
- var extractSectionLine = (line) => {
- const matches = SECTION_LINE_REGEX.exec(line);
- if (matches != null) {
- const [section, subsection] = matches.slice(1);
- return [section, subsection];
- }
- return null;
- };
- var extractVariableLine = (line) => {
- const matches = VARIABLE_LINE_REGEX.exec(line);
- if (matches != null) {
- const [name, rawValue = "true"] = matches.slice(1);
- const valueWithoutComments = removeComments(rawValue);
- const valueWithoutQuotes = removeQuotes(valueWithoutComments);
- return [name, valueWithoutQuotes];
- }
- return null;
- };
- var removeComments = (rawValue) => {
- const commentMatches = VARIABLE_VALUE_COMMENT_REGEX.exec(rawValue);
- if (commentMatches == null) {
- return rawValue;
- }
- const [valueWithoutComment, comment] = commentMatches.slice(1);
- if (hasOddNumberOfQuotes(valueWithoutComment) && hasOddNumberOfQuotes(comment)) {
- return `${valueWithoutComment}${comment}`;
- }
- return valueWithoutComment;
- };
- var hasOddNumberOfQuotes = (text2) => {
- const numberOfQuotes = (text2.match(/(?:^|[^\\])"/g) || []).length;
- return numberOfQuotes % 2 !== 0;
- };
- var removeQuotes = (text2) => {
- return text2.split("").reduce((newText, c, idx, text3) => {
- const isQuote = c === '"' && text3[idx - 1] !== "\\";
- const isEscapeForQuote = c === "\\" && text3[idx + 1] === '"';
- if (isQuote || isEscapeForQuote) {
- return newText;
- }
- return newText + c;
- }, "");
- };
- var lower = (text2) => {
- return text2 != null ? text2.toLowerCase() : null;
- };
- var getPath = (section, subsection, name) => {
- return [lower(section), subsection, lower(name)].filter((a) => a != null).join(".");
- };
- var normalizePath$1 = (path2) => {
- const pathSegments = path2.split(".");
- const section = pathSegments.shift();
- const name = pathSegments.pop();
- const subsection = pathSegments.length ? pathSegments.join(".") : void 0;
- return {
- section,
- subsection,
- name,
- path: getPath(section, subsection, name),
- sectionPath: getPath(section, subsection, null)
- };
- };
- var findLastIndex = (array, callback) => {
- return array.reduce((lastIndex, item, index2) => {
- return callback(item) ? index2 : lastIndex;
- }, -1);
- };
- var GitConfig = class {
- constructor(text2) {
- let section = null;
- let subsection = null;
- this.parsedConfig = text2.split("\n").map((line) => {
- let name = null;
- let value = null;
- const trimmedLine = line.trim();
- const extractedSection = extractSectionLine(trimmedLine);
- const isSection = extractedSection != null;
- if (isSection) {
- ;
- [section, subsection] = extractedSection;
- } else {
- const extractedVariable = extractVariableLine(trimmedLine);
- const isVariable = extractedVariable != null;
- if (isVariable) {
- ;
- [name, value] = extractedVariable;
- }
- }
- const path2 = getPath(section, subsection, name);
- return { line, isSection, section, subsection, name, value, path: path2 };
- });
- }
- static from(text2) {
- return new GitConfig(text2);
- }
- async get(path2, getall = false) {
- const normalizedPath = normalizePath$1(path2).path;
- const allValues = this.parsedConfig.filter((config) => config.path === normalizedPath).map(({ section, name, value }) => {
- const fn = schema[section] && schema[section][name];
- return fn ? fn(value) : value;
- });
- return getall ? allValues : allValues.pop();
- }
- async getall(path2) {
- return this.get(path2, true);
- }
- async getSubsections(section) {
- return this.parsedConfig.filter((config) => config.section === section && config.isSection).map((config) => config.subsection);
- }
- async deleteSection(section, subsection) {
- this.parsedConfig = this.parsedConfig.filter((config) => !(config.section === section && config.subsection === subsection));
- }
- async append(path2, value) {
- return this.set(path2, value, true);
- }
- async set(path2, value, append3 = false) {
- const {
- section,
- subsection,
- name,
- path: normalizedPath,
- sectionPath
- } = normalizePath$1(path2);
- const configIndex = findLastIndex(this.parsedConfig, (config) => config.path === normalizedPath);
- if (value == null) {
- if (configIndex !== -1) {
- this.parsedConfig.splice(configIndex, 1);
- }
- } else {
- if (configIndex !== -1) {
- const config = this.parsedConfig[configIndex];
- const modifiedConfig = Object.assign({}, config, {
- name,
- value,
- modified: true
- });
- if (append3) {
- this.parsedConfig.splice(configIndex + 1, 0, modifiedConfig);
- } else {
- this.parsedConfig[configIndex] = modifiedConfig;
- }
- } else {
- const sectionIndex = this.parsedConfig.findIndex((config) => config.path === sectionPath);
- const newConfig = {
- section,
- subsection,
- name,
- value,
- modified: true,
- path: normalizedPath
- };
- if (SECTION_REGEX.test(section) && VARIABLE_NAME_REGEX.test(name)) {
- if (sectionIndex >= 0) {
- this.parsedConfig.splice(sectionIndex + 1, 0, newConfig);
- } else {
- const newSection = {
- section,
- subsection,
- modified: true,
- path: sectionPath
- };
- this.parsedConfig.push(newSection, newConfig);
- }
- }
- }
- }
- }
- toString() {
- return this.parsedConfig.map(({ line, section, subsection, name, value, modified: modified2 = false }) => {
- if (!modified2) {
- return line;
- }
- if (name != null && value != null) {
- if (typeof value === "string" && /[#;]/.test(value)) {
- return ` ${name} = "${value}"`;
- }
- return ` ${name} = ${value}`;
- }
- if (subsection != null) {
- return `[${section} "${subsection}"]`;
- }
- return `[${section}]`;
- }).join("\n");
- }
- };
- var GitConfigManager = class {
- static async get({ fs, gitdir }) {
- const text2 = await fs.read(`${gitdir}/config`, { encoding: "utf8" });
- return GitConfig.from(text2);
- }
- static async save({ fs, gitdir, config }) {
- await fs.write(`${gitdir}/config`, config.toString(), {
- encoding: "utf8"
- });
- }
- };
- var refpaths = (ref) => [
- `${ref}`,
- `refs/${ref}`,
- `refs/tags/${ref}`,
- `refs/heads/${ref}`,
- `refs/remotes/${ref}`,
- `refs/remotes/${ref}/HEAD`
- ];
- var GIT_FILES = ["config", "description", "index", "shallow", "commondir"];
- var GitRefManager = class {
- static async updateRemoteRefs({
- fs,
- gitdir,
- remote,
- refs,
- symrefs,
- tags,
- refspecs = void 0,
- prune = false,
- pruneTags = false
- }) {
- for (const value of refs.values()) {
- if (!value.match(/[0-9a-f]{40}/)) {
- throw new InvalidOidError(value);
- }
- }
- const config = await GitConfigManager.get({ fs, gitdir });
- if (!refspecs) {
- refspecs = await config.getall(`remote.${remote}.fetch`);
- if (refspecs.length === 0) {
- throw new NoRefspecError(remote);
- }
- refspecs.unshift(`+HEAD:refs/remotes/${remote}/HEAD`);
- }
- const refspec = GitRefSpecSet.from(refspecs);
- const actualRefsToWrite = new Map();
- if (pruneTags) {
- const tags2 = await GitRefManager.listRefs({
- fs,
- gitdir,
- filepath: "refs/tags"
- });
- await GitRefManager.deleteRefs({
- fs,
- gitdir,
- refs: tags2.map((tag2) => `refs/tags/${tag2}`)
- });
- }
- if (tags) {
- for (const serverRef of refs.keys()) {
- if (serverRef.startsWith("refs/tags") && !serverRef.endsWith("^{}")) {
- if (!await GitRefManager.exists({ fs, gitdir, ref: serverRef })) {
- const oid = refs.get(serverRef);
- actualRefsToWrite.set(serverRef, oid);
- }
- }
- }
- }
- const refTranslations = refspec.translate([...refs.keys()]);
- for (const [serverRef, translatedRef] of refTranslations) {
- const value = refs.get(serverRef);
- actualRefsToWrite.set(translatedRef, value);
- }
- const symrefTranslations = refspec.translate([...symrefs.keys()]);
- for (const [serverRef, translatedRef] of symrefTranslations) {
- const value = symrefs.get(serverRef);
- const symtarget = refspec.translateOne(value);
- if (symtarget) {
- actualRefsToWrite.set(translatedRef, `ref: ${symtarget}`);
- }
- }
- const pruned = [];
- if (prune) {
- for (const filepath of refspec.localNamespaces()) {
- const refs2 = (await GitRefManager.listRefs({
- fs,
- gitdir,
- filepath
- })).map((file) => `${filepath}/${file}`);
- for (const ref of refs2) {
- if (!actualRefsToWrite.has(ref)) {
- pruned.push(ref);
- }
- }
- }
- if (pruned.length > 0) {
- await GitRefManager.deleteRefs({ fs, gitdir, refs: pruned });
- }
- }
- for (const [key2, value] of actualRefsToWrite) {
- await fs.write(join(gitdir, key2), `${value.trim()}
- `, "utf8");
- }
- return { pruned };
- }
- static async writeRef({ fs, gitdir, ref, value }) {
- if (!value.match(/[0-9a-f]{40}/)) {
- throw new InvalidOidError(value);
- }
- await fs.write(join(gitdir, ref), `${value.trim()}
- `, "utf8");
- }
- static async writeSymbolicRef({ fs, gitdir, ref, value }) {
- await fs.write(join(gitdir, ref), `ref: ${value.trim()}
- `, "utf8");
- }
- static async deleteRef({ fs, gitdir, ref }) {
- return GitRefManager.deleteRefs({ fs, gitdir, refs: [ref] });
- }
- static async deleteRefs({ fs, gitdir, refs }) {
- await Promise.all(refs.map((ref) => fs.rm(join(gitdir, ref))));
- let text2 = await fs.read(`${gitdir}/packed-refs`, { encoding: "utf8" });
- const packed = GitPackedRefs.from(text2);
- const beforeSize = packed.refs.size;
- for (const ref of refs) {
- if (packed.refs.has(ref)) {
- packed.delete(ref);
- }
- }
- if (packed.refs.size < beforeSize) {
- text2 = packed.toString();
- await fs.write(`${gitdir}/packed-refs`, text2, { encoding: "utf8" });
- }
- }
- static async resolve({ fs, gitdir, ref, depth = void 0 }) {
- if (depth !== void 0) {
- depth--;
- if (depth === -1) {
- return ref;
- }
- }
- let sha;
- if (ref.startsWith("ref: ")) {
- ref = ref.slice("ref: ".length);
- return GitRefManager.resolve({ fs, gitdir, ref, depth });
- }
- if (ref.length === 40 && /[0-9a-f]{40}/.test(ref)) {
- return ref;
- }
- const packedMap = await GitRefManager.packedRefs({ fs, gitdir });
- const allpaths = refpaths(ref).filter((p) => !GIT_FILES.includes(p));
- for (const ref2 of allpaths) {
- sha = await fs.read(`${gitdir}/${ref2}`, { encoding: "utf8" }) || packedMap.get(ref2);
- if (sha) {
- return GitRefManager.resolve({ fs, gitdir, ref: sha.trim(), depth });
- }
- }
- throw new NotFoundError(ref);
- }
- static async exists({ fs, gitdir, ref }) {
- try {
- await GitRefManager.expand({ fs, gitdir, ref });
- return true;
- } catch (err) {
- return false;
- }
- }
- static async expand({ fs, gitdir, ref }) {
- if (ref.length === 40 && /[0-9a-f]{40}/.test(ref)) {
- return ref;
- }
- const packedMap = await GitRefManager.packedRefs({ fs, gitdir });
- const allpaths = refpaths(ref);
- for (const ref2 of allpaths) {
- if (await fs.exists(`${gitdir}/${ref2}`))
- return ref2;
- if (packedMap.has(ref2))
- return ref2;
- }
- throw new NotFoundError(ref);
- }
- static async expandAgainstMap({ ref, map }) {
- const allpaths = refpaths(ref);
- for (const ref2 of allpaths) {
- if (await map.has(ref2))
- return ref2;
- }
- throw new NotFoundError(ref);
- }
- static resolveAgainstMap({ ref, fullref = ref, depth = void 0, map }) {
- if (depth !== void 0) {
- depth--;
- if (depth === -1) {
- return { fullref, oid: ref };
- }
- }
- if (ref.startsWith("ref: ")) {
- ref = ref.slice("ref: ".length);
- return GitRefManager.resolveAgainstMap({ ref, fullref, depth, map });
- }
- if (ref.length === 40 && /[0-9a-f]{40}/.test(ref)) {
- return { fullref, oid: ref };
- }
- const allpaths = refpaths(ref);
- for (const ref2 of allpaths) {
- const sha = map.get(ref2);
- if (sha) {
- return GitRefManager.resolveAgainstMap({
- ref: sha.trim(),
- fullref: ref2,
- depth,
- map
- });
- }
- }
- throw new NotFoundError(ref);
- }
- static async packedRefs({ fs, gitdir }) {
- const text2 = await fs.read(`${gitdir}/packed-refs`, { encoding: "utf8" });
- const packed = GitPackedRefs.from(text2);
- return packed.refs;
- }
- static async listRefs({ fs, gitdir, filepath }) {
- const packedMap = GitRefManager.packedRefs({ fs, gitdir });
- let files = null;
- try {
- files = await fs.readdirDeep(`${gitdir}/${filepath}`);
- files = files.map((x) => x.replace(`${gitdir}/${filepath}/`, ""));
- } catch (err) {
- files = [];
- }
- for (let key2 of (await packedMap).keys()) {
- if (key2.startsWith(filepath)) {
- key2 = key2.replace(filepath + "/", "");
- if (!files.includes(key2)) {
- files.push(key2);
- }
- }
- }
- files.sort(compareRefNames);
- return files;
- }
- static async listBranches({ fs, gitdir, remote }) {
- if (remote) {
- return GitRefManager.listRefs({
- fs,
- gitdir,
- filepath: `refs/remotes/${remote}`
- });
- } else {
- return GitRefManager.listRefs({ fs, gitdir, filepath: `refs/heads` });
- }
- }
- static async listTags({ fs, gitdir }) {
- const tags = await GitRefManager.listRefs({
- fs,
- gitdir,
- filepath: `refs/tags`
- });
- return tags.filter((x) => !x.endsWith("^{}"));
- }
- };
- function compareTreeEntryPath(a, b) {
- return compareStrings(appendSlashIfDir(a), appendSlashIfDir(b));
- }
- function appendSlashIfDir(entry) {
- return entry.mode === "040000" ? entry.path + "/" : entry.path;
- }
- function mode2type$1(mode) {
- switch (mode) {
- case "040000":
- return "tree";
- case "100644":
- return "blob";
- case "100755":
- return "blob";
- case "120000":
- return "blob";
- case "160000":
- return "commit";
- }
- throw new InternalError(`Unexpected GitTree entry mode: ${mode}`);
- }
- function parseBuffer(buffer2) {
- const _entries = [];
- let cursor = 0;
- while (cursor < buffer2.length) {
- const space2 = buffer2.indexOf(32, cursor);
- if (space2 === -1) {
- throw new InternalError(`GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next space character.`);
- }
- const nullchar = buffer2.indexOf(0, cursor);
- if (nullchar === -1) {
- throw new InternalError(`GitTree: Error parsing buffer at byte location ${cursor}: Could not find the next null character.`);
- }
- let mode = buffer2.slice(cursor, space2).toString("utf8");
- if (mode === "40000")
- mode = "040000";
- const type = mode2type$1(mode);
- const path2 = buffer2.slice(space2 + 1, nullchar).toString("utf8");
- if (path2.includes("\\") || path2.includes("/")) {
- throw new UnsafeFilepathError(path2);
- }
- const oid = buffer2.slice(nullchar + 1, nullchar + 21).toString("hex");
- cursor = nullchar + 21;
- _entries.push({ mode, path: path2, oid, type });
- }
- return _entries;
- }
- function limitModeToAllowed(mode) {
- if (typeof mode === "number") {
- mode = mode.toString(8);
- }
- if (mode.match(/^0?4.*/))
- return "040000";
- if (mode.match(/^1006.*/))
- return "100644";
- if (mode.match(/^1007.*/))
- return "100755";
- if (mode.match(/^120.*/))
- return "120000";
- if (mode.match(/^160.*/))
- return "160000";
- throw new InternalError(`Could not understand file mode: ${mode}`);
- }
- function nudgeIntoShape(entry) {
- if (!entry.oid && entry.sha) {
- entry.oid = entry.sha;
- }
- entry.mode = limitModeToAllowed(entry.mode);
- if (!entry.type) {
- entry.type = mode2type$1(entry.mode);
- }
- return entry;
- }
- var GitTree = class {
- constructor(entries) {
- if (Buffer2.isBuffer(entries)) {
- this._entries = parseBuffer(entries);
- } else if (Array.isArray(entries)) {
- this._entries = entries.map(nudgeIntoShape);
- } else {
- throw new InternalError("invalid type passed to GitTree constructor");
- }
- this._entries.sort(comparePath);
- }
- static from(tree) {
- return new GitTree(tree);
- }
- render() {
- return this._entries.map((entry) => `${entry.mode} ${entry.type} ${entry.oid} ${entry.path}`).join("\n");
- }
- toObject() {
- const entries = [...this._entries];
- entries.sort(compareTreeEntryPath);
- return Buffer2.concat(entries.map((entry) => {
- const mode = Buffer2.from(entry.mode.replace(/^0/, ""));
- const space2 = Buffer2.from(" ");
- const path2 = Buffer2.from(entry.path, "utf8");
- const nullchar = Buffer2.from([0]);
- const oid = Buffer2.from(entry.oid, "hex");
- return Buffer2.concat([mode, space2, path2, nullchar, oid]);
- }));
- }
- entries() {
- return this._entries;
- }
- *[Symbol.iterator]() {
- for (const entry of this._entries) {
- yield entry;
- }
- }
- };
- var GitObject = class {
- static wrap({ type, object }) {
- return Buffer2.concat([
- Buffer2.from(`${type} ${object.byteLength.toString()}\0`),
- Buffer2.from(object)
- ]);
- }
- static unwrap(buffer2) {
- const s = buffer2.indexOf(32);
- const i = buffer2.indexOf(0);
- const type = buffer2.slice(0, s).toString("utf8");
- const length = buffer2.slice(s + 1, i).toString("utf8");
- const actualLength = buffer2.length - (i + 1);
- if (parseInt(length) !== actualLength) {
- throw new InternalError(`Length mismatch: expected ${length} bytes but got ${actualLength} instead.`);
- }
- return {
- type,
- object: Buffer2.from(buffer2.slice(i + 1))
- };
- }
- };
- async function readObjectLoose({ fs, gitdir, oid }) {
- const source = `objects/${oid.slice(0, 2)}/${oid.slice(2)}`;
- const file = await fs.read(`${gitdir}/${source}`);
- if (!file) {
- return null;
- }
- return { object: file, format: "deflated", source };
- }
- function applyDelta(delta, source) {
- const reader = new BufferCursor(delta);
- const sourceSize = readVarIntLE(reader);
- if (sourceSize !== source.byteLength) {
- throw new InternalError(`applyDelta expected source buffer to be ${sourceSize} bytes but the provided buffer was ${source.length} bytes`);
- }
- const targetSize = readVarIntLE(reader);
- let target;
- const firstOp = readOp(reader, source);
- if (firstOp.byteLength === targetSize) {
- target = firstOp;
- } else {
- target = Buffer2.alloc(targetSize);
- const writer = new BufferCursor(target);
- writer.copy(firstOp);
- while (!reader.eof()) {
- writer.copy(readOp(reader, source));
- }
- const tell = writer.tell();
- if (targetSize !== tell) {
- throw new InternalError(`applyDelta expected target buffer to be ${targetSize} bytes but the resulting buffer was ${tell} bytes`);
- }
- }
- return target;
- }
- function readVarIntLE(reader) {
- let result = 0;
- let shift = 0;
- let byte = null;
- do {
- byte = reader.readUInt8();
- result |= (byte & 127) << shift;
- shift += 7;
- } while (byte & 128);
- return result;
- }
- function readCompactLE(reader, flags, size) {
- let result = 0;
- let shift = 0;
- while (size--) {
- if (flags & 1) {
- result |= reader.readUInt8() << shift;
- }
- flags >>= 1;
- shift += 8;
- }
- return result;
- }
- function readOp(reader, source) {
- const byte = reader.readUInt8();
- const COPY = 128;
- const OFFS = 15;
- const SIZE = 112;
- if (byte & COPY) {
- const offset = readCompactLE(reader, byte & OFFS, 4);
- let size = readCompactLE(reader, (byte & SIZE) >> 4, 3);
- if (size === 0)
- size = 65536;
- return source.slice(offset, offset + size);
- } else {
- return reader.slice(byte);
- }
- }
- function fromValue(value) {
- let queue = [value];
- return {
- next() {
- return Promise.resolve({ done: queue.length === 0, value: queue.pop() });
- },
- return() {
- queue = [];
- return {};
- },
- [Symbol.asyncIterator]() {
- return this;
- }
- };
- }
- function getIterator(iterable) {
- if (iterable[Symbol.asyncIterator]) {
- return iterable[Symbol.asyncIterator]();
- }
- if (iterable[Symbol.iterator]) {
- return iterable[Symbol.iterator]();
- }
- if (iterable.next) {
- return iterable;
- }
- return fromValue(iterable);
- }
- var StreamReader = class {
- constructor(stream) {
- this.stream = getIterator(stream);
- this.buffer = null;
- this.cursor = 0;
- this.undoCursor = 0;
- this.started = false;
- this._ended = false;
- this._discardedBytes = 0;
- }
- eof() {
- return this._ended && this.cursor === this.buffer.length;
- }
- tell() {
- return this._discardedBytes + this.cursor;
- }
- async byte() {
- if (this.eof())
- return;
- if (!this.started)
- await this._init();
- if (this.cursor === this.buffer.length) {
- await this._loadnext();
- if (this._ended)
- return;
- }
- this._moveCursor(1);
- return this.buffer[this.undoCursor];
- }
- async chunk() {
- if (this.eof())
- return;
- if (!this.started)
- await this._init();
- if (this.cursor === this.buffer.length) {
- await this._loadnext();
- if (this._ended)
- return;
- }
- this._moveCursor(this.buffer.length);
- return this.buffer.slice(this.undoCursor, this.cursor);
- }
- async read(n) {
- if (this.eof())
- return;
- if (!this.started)
- await this._init();
- if (this.cursor + n > this.buffer.length) {
- this._trim();
- await this._accumulate(n);
- }
- this._moveCursor(n);
- return this.buffer.slice(this.undoCursor, this.cursor);
- }
- async skip(n) {
- if (this.eof())
- return;
- if (!this.started)
- await this._init();
- if (this.cursor + n > this.buffer.length) {
- this._trim();
- await this._accumulate(n);
- }
- this._moveCursor(n);
- }
- async undo() {
- this.cursor = this.undoCursor;
- }
- async _next() {
- this.started = true;
- let { done, value } = await this.stream.next();
- if (done) {
- this._ended = true;
- }
- if (value) {
- value = Buffer2.from(value);
- }
- return value;
- }
- _trim() {
- this.buffer = this.buffer.slice(this.undoCursor);
- this.cursor -= this.undoCursor;
- this._discardedBytes += this.undoCursor;
- this.undoCursor = 0;
- }
- _moveCursor(n) {
- this.undoCursor = this.cursor;
- this.cursor += n;
- if (this.cursor > this.buffer.length) {
- this.cursor = this.buffer.length;
- }
- }
- async _accumulate(n) {
- if (this._ended)
- return;
- const buffers = [this.buffer];
- while (this.cursor + n > lengthBuffers(buffers)) {
- const nextbuffer = await this._next();
- if (this._ended)
- break;
- buffers.push(nextbuffer);
- }
- this.buffer = Buffer2.concat(buffers);
- }
- async _loadnext() {
- this._discardedBytes += this.buffer.length;
- this.undoCursor = 0;
- this.cursor = 0;
- this.buffer = await this._next();
- }
- async _init() {
- this.buffer = await this._next();
- }
- };
- function lengthBuffers(buffers) {
- return buffers.reduce((acc, buffer2) => acc + buffer2.length, 0);
- }
- async function listpack(stream, onData) {
- const reader = new StreamReader(stream);
- let PACK = await reader.read(4);
- PACK = PACK.toString("utf8");
- if (PACK !== "PACK") {
- throw new InternalError(`Invalid PACK header '${PACK}'`);
- }
- let version2 = await reader.read(4);
- version2 = version2.readUInt32BE(0);
- if (version2 !== 2) {
- throw new InternalError(`Invalid packfile version: ${version2}`);
- }
- let numObjects = await reader.read(4);
- numObjects = numObjects.readUInt32BE(0);
- if (numObjects < 1)
- return;
- while (!reader.eof() && numObjects--) {
- const offset = reader.tell();
- const { type, length, ofs, reference } = await parseHeader(reader);
- const inflator = new import_pako.default.Inflate();
- while (!inflator.result) {
- const chunk = await reader.chunk();
- if (!chunk)
- break;
- inflator.push(chunk, false);
- if (inflator.err) {
- throw new InternalError(`Pako error: ${inflator.msg}`);
- }
- if (inflator.result) {
- if (inflator.result.length !== length) {
- throw new InternalError(`Inflated object size is different from that stated in packfile.`);
- }
- await reader.undo();
- await reader.read(chunk.length - inflator.strm.avail_in);
- const end = reader.tell();
- await onData({
- data: inflator.result,
- type,
- num: numObjects,
- offset,
- end,
- reference,
- ofs
- });
- }
- }
- }
- }
- async function parseHeader(reader) {
- let byte = await reader.byte();
- const type = byte >> 4 & 7;
- let length = byte & 15;
- if (byte & 128) {
- let shift = 4;
- do {
- byte = await reader.byte();
- length |= (byte & 127) << shift;
- shift += 7;
- } while (byte & 128);
- }
- let ofs;
- let reference;
- if (type === 6) {
- let shift = 0;
- ofs = 0;
- const bytes = [];
- do {
- byte = await reader.byte();
- ofs |= (byte & 127) << shift;
- shift += 7;
- bytes.push(byte);
- } while (byte & 128);
- reference = Buffer2.from(bytes);
- }
- if (type === 7) {
- const buf = await reader.read(20);
- reference = buf;
- }
- return { type, length, ofs, reference };
- }
- var supportsDecompressionStream = false;
- async function inflate(buffer2) {
- if (supportsDecompressionStream === null) {
- supportsDecompressionStream = testDecompressionStream();
- }
- return supportsDecompressionStream ? browserInflate(buffer2) : import_pako.default.inflate(buffer2);
- }
- async function browserInflate(buffer2) {
- const ds = new DecompressionStream("deflate");
- const d = new Blob([buffer2]).stream().pipeThrough(ds);
- return new Uint8Array(await new Response(d).arrayBuffer());
- }
- function testDecompressionStream() {
- try {
- const ds = new DecompressionStream("deflate");
- if (ds)
- return true;
- } catch (_) {
- }
- return false;
- }
- function decodeVarInt(reader) {
- const bytes = [];
- let byte = 0;
- let multibyte = 0;
- do {
- byte = reader.readUInt8();
- const lastSeven = byte & 127;
- bytes.push(lastSeven);
- multibyte = byte & 128;
- } while (multibyte);
- return bytes.reduce((a, b) => a + 1 << 7 | b, -1);
- }
- function otherVarIntDecode(reader, startWith) {
- let result = startWith;
- let shift = 4;
- let byte = null;
- do {
- byte = reader.readUInt8();
- result |= (byte & 127) << shift;
- shift += 7;
- } while (byte & 128);
- return result;
- }
- var GitPackIndex = class {
- constructor(stuff) {
- Object.assign(this, stuff);
- this.offsetCache = {};
- }
- static async fromIdx({ idx, getExternalRefDelta }) {
- const reader = new BufferCursor(idx);
- const magic = reader.slice(4).toString("hex");
- if (magic !== "ff744f63") {
- return;
- }
- const version2 = reader.readUInt32BE();
- if (version2 !== 2) {
- throw new InternalError(`Unable to read version ${version2} packfile IDX. (Only version 2 supported)`);
- }
- if (idx.byteLength > 2048 * 1024 * 1024) {
- throw new InternalError(`To keep implementation simple, I haven't implemented the layer 5 feature needed to support packfiles > 2GB in size.`);
- }
- reader.seek(reader.tell() + 4 * 255);
- const size = reader.readUInt32BE();
- const hashes = [];
- for (let i = 0; i < size; i++) {
- const hash2 = reader.slice(20).toString("hex");
- hashes[i] = hash2;
- }
- reader.seek(reader.tell() + 4 * size);
- const offsets = new Map();
- for (let i = 0; i < size; i++) {
- offsets.set(hashes[i], reader.readUInt32BE());
- }
- const packfileSha = reader.slice(20).toString("hex");
- return new GitPackIndex({
- hashes,
- crcs: {},
- offsets,
- packfileSha,
- getExternalRefDelta
- });
- }
- static async fromPack({ pack, getExternalRefDelta, onProgress }) {
- const listpackTypes = {
- 1: "commit",
- 2: "tree",
- 3: "blob",
- 4: "tag",
- 6: "ofs-delta",
- 7: "ref-delta"
- };
- const offsetToObject = {};
- const packfileSha = pack.slice(-20).toString("hex");
- const hashes = [];
- const crcs = {};
- const offsets = new Map();
- let totalObjectCount = null;
- let lastPercent = null;
- await listpack([pack], async ({ data, type, reference, offset, num: num2 }) => {
- if (totalObjectCount === null)
- totalObjectCount = num2;
- const percent = Math.floor((totalObjectCount - num2) * 100 / totalObjectCount);
- if (percent !== lastPercent) {
- if (onProgress) {
- await onProgress({
- phase: "Receiving objects",
- loaded: totalObjectCount - num2,
- total: totalObjectCount
- });
- }
- }
- lastPercent = percent;
- type = listpackTypes[type];
- if (["commit", "tree", "blob", "tag"].includes(type)) {
- offsetToObject[offset] = {
- type,
- offset
- };
- } else if (type === "ofs-delta") {
- offsetToObject[offset] = {
- type,
- offset
- };
- } else if (type === "ref-delta") {
- offsetToObject[offset] = {
- type,
- offset
- };
- }
- });
- const offsetArray = Object.keys(offsetToObject).map(Number);
- for (const [i, start] of offsetArray.entries()) {
- const end = i + 1 === offsetArray.length ? pack.byteLength - 20 : offsetArray[i + 1];
- const o = offsetToObject[start];
- const crc = import_crc_32.default.buf(pack.slice(start, end)) >>> 0;
- o.end = end;
- o.crc = crc;
- }
- const p = new GitPackIndex({
- pack: Promise.resolve(pack),
- packfileSha,
- crcs,
- hashes,
- offsets,
- getExternalRefDelta
- });
- lastPercent = null;
- let count = 0;
- const objectsByDepth = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
- for (let offset in offsetToObject) {
- offset = Number(offset);
- const percent = Math.floor(count * 100 / totalObjectCount);
- if (percent !== lastPercent) {
- if (onProgress) {
- await onProgress({
- phase: "Resolving deltas",
- loaded: count,
- total: totalObjectCount
- });
- }
- }
- count++;
- lastPercent = percent;
- const o = offsetToObject[offset];
- if (o.oid)
- continue;
- try {
- p.readDepth = 0;
- p.externalReadDepth = 0;
- const { type, object } = await p.readSlice({ start: offset });
- objectsByDepth[p.readDepth] += 1;
- const oid = await shasum(GitObject.wrap({ type, object }));
- o.oid = oid;
- hashes.push(oid);
- offsets.set(oid, offset);
- crcs[oid] = o.crc;
- } catch (err) {
- continue;
- }
- }
- hashes.sort();
- return p;
- }
- async toBuffer() {
- const buffers = [];
- const write = (str, encoding) => {
- buffers.push(Buffer2.from(str, encoding));
- };
- write("ff744f63", "hex");
- write("00000002", "hex");
- const fanoutBuffer = new BufferCursor(Buffer2.alloc(256 * 4));
- for (let i = 0; i < 256; i++) {
- let count = 0;
- for (const hash2 of this.hashes) {
- if (parseInt(hash2.slice(0, 2), 16) <= i)
- count++;
- }
- fanoutBuffer.writeUInt32BE(count);
- }
- buffers.push(fanoutBuffer.buffer);
- for (const hash2 of this.hashes) {
- write(hash2, "hex");
- }
- const crcsBuffer = new BufferCursor(Buffer2.alloc(this.hashes.length * 4));
- for (const hash2 of this.hashes) {
- crcsBuffer.writeUInt32BE(this.crcs[hash2]);
- }
- buffers.push(crcsBuffer.buffer);
- const offsetsBuffer = new BufferCursor(Buffer2.alloc(this.hashes.length * 4));
- for (const hash2 of this.hashes) {
- offsetsBuffer.writeUInt32BE(this.offsets.get(hash2));
- }
- buffers.push(offsetsBuffer.buffer);
- write(this.packfileSha, "hex");
- const totalBuffer = Buffer2.concat(buffers);
- const sha = await shasum(totalBuffer);
- const shaBuffer = Buffer2.alloc(20);
- shaBuffer.write(sha, "hex");
- return Buffer2.concat([totalBuffer, shaBuffer]);
- }
- async load({ pack }) {
- this.pack = pack;
- }
- async unload() {
- this.pack = null;
- }
- async read({ oid }) {
- if (!this.offsets.get(oid)) {
- if (this.getExternalRefDelta) {
- this.externalReadDepth++;
- return this.getExternalRefDelta(oid);
- } else {
- throw new InternalError(`Could not read object ${oid} from packfile`);
- }
- }
- const start = this.offsets.get(oid);
- return this.readSlice({ start });
- }
- async readSlice({ start }) {
- if (this.offsetCache[start]) {
- return Object.assign({}, this.offsetCache[start]);
- }
- this.readDepth++;
- const types2 = {
- 16: "commit",
- 32: "tree",
- 48: "blob",
- 64: "tag",
- 96: "ofs_delta",
- 112: "ref_delta"
- };
- if (!this.pack) {
- throw new InternalError("Tried to read from a GitPackIndex with no packfile loaded into memory");
- }
- const raw = (await this.pack).slice(start);
- const reader = new BufferCursor(raw);
- const byte = reader.readUInt8();
- const btype = byte & 112;
- let type = types2[btype];
- if (type === void 0) {
- throw new InternalError("Unrecognized type: 0b" + btype.toString(2));
- }
- const lastFour = byte & 15;
- let length = lastFour;
- const multibyte = byte & 128;
- if (multibyte) {
- length = otherVarIntDecode(reader, lastFour);
- }
- let base = null;
- let object = null;
- if (type === "ofs_delta") {
- const offset = decodeVarInt(reader);
- const baseOffset = start - offset;
- ({ object: base, type } = await this.readSlice({ start: baseOffset }));
- }
- if (type === "ref_delta") {
- const oid = reader.slice(20).toString("hex");
- ({ object: base, type } = await this.read({ oid }));
- }
- const buffer2 = raw.slice(reader.tell());
- object = Buffer2.from(await inflate(buffer2));
- if (object.byteLength !== length) {
- throw new InternalError(`Packfile told us object would have length ${length} but it had length ${object.byteLength}`);
- }
- if (base) {
- object = Buffer2.from(applyDelta(object, base));
- }
- if (this.readDepth > 3) {
- this.offsetCache[start] = { type, object };
- }
- return { type, format: "content", object };
- }
- };
- var PackfileCache = Symbol("PackfileCache");
- async function loadPackIndex({
- fs,
- filename,
- getExternalRefDelta,
- emitter,
- emitterPrefix
- }) {
- const idx = await fs.read(filename);
- return GitPackIndex.fromIdx({ idx, getExternalRefDelta });
- }
- function readPackIndex({
- fs,
- cache,
- filename,
- getExternalRefDelta,
- emitter,
- emitterPrefix
- }) {
- if (!cache[PackfileCache])
- cache[PackfileCache] = new Map();
- let p = cache[PackfileCache].get(filename);
- if (!p) {
- p = loadPackIndex({
- fs,
- filename,
- getExternalRefDelta,
- emitter,
- emitterPrefix
- });
- cache[PackfileCache].set(filename, p);
- }
- return p;
- }
- async function readObjectPacked({
- fs,
- cache,
- gitdir,
- oid,
- format = "content",
- getExternalRefDelta
- }) {
- let list = await fs.readdir(join(gitdir, "objects/pack"));
- list = list.filter((x) => x.endsWith(".idx"));
- for (const filename of list) {
- const indexFile = `${gitdir}/objects/pack/${filename}`;
- const p = await readPackIndex({
- fs,
- cache,
- filename: indexFile,
- getExternalRefDelta
- });
- if (p.error)
- throw new InternalError(p.error);
- if (p.offsets.has(oid)) {
- if (!p.pack) {
- const packFile = indexFile.replace(/idx$/, "pack");
- p.pack = fs.read(packFile);
- }
- const result = await p.read({ oid, getExternalRefDelta });
- result.format = "content";
- result.source = `objects/pack/${filename.replace(/idx$/, "pack")}`;
- return result;
- }
- }
- return null;
- }
- async function _readObject({
- fs,
- cache,
- gitdir,
- oid,
- format = "content"
- }) {
- const getExternalRefDelta = (oid2) => _readObject({ fs, cache, gitdir, oid: oid2 });
- let result;
- if (oid === "4b825dc642cb6eb9a060e54bf8d69288fbee4904") {
- result = { format: "wrapped", object: Buffer2.from(`tree 0\0`) };
- }
- if (!result) {
- result = await readObjectLoose({ fs, gitdir, oid });
- }
- if (!result) {
- result = await readObjectPacked({
- fs,
- cache,
- gitdir,
- oid,
- getExternalRefDelta
- });
- }
- if (!result) {
- throw new NotFoundError(oid);
- }
- if (format === "deflated") {
- return result;
- }
- if (result.format === "deflated") {
- result.object = Buffer2.from(await inflate(result.object));
- result.format = "wrapped";
- }
- if (result.format === "wrapped") {
- if (format === "wrapped" && result.format === "wrapped") {
- return result;
- }
- const sha = await shasum(result.object);
- if (sha !== oid) {
- throw new InternalError(`SHA check failed! Expected ${oid}, computed ${sha}`);
- }
- const { object, type } = GitObject.unwrap(result.object);
- result.type = type;
- result.object = object;
- result.format = "content";
- }
- if (result.format === "content") {
- if (format === "content")
- return result;
- return;
- }
- throw new InternalError(`invalid format "${result.format}"`);
- }
- var AlreadyExistsError = class extends BaseError {
- constructor(noun, where, canForce = true) {
- super(`Failed to create ${noun} at ${where} because it already exists.${canForce ? ` (Hint: use 'force: true' parameter to overwrite existing ${noun}.)` : ""}`);
- this.code = this.name = AlreadyExistsError.code;
- this.data = { noun, where, canForce };
- }
- };
- AlreadyExistsError.code = "AlreadyExistsError";
- var AmbiguousError = class extends BaseError {
- constructor(nouns, short, matches) {
- super(`Found multiple ${nouns} matching "${short}" (${matches.join(", ")}). Use a longer abbreviation length to disambiguate them.`);
- this.code = this.name = AmbiguousError.code;
- this.data = { nouns, short, matches };
- }
- };
- AmbiguousError.code = "AmbiguousError";
- var CheckoutConflictError = class extends BaseError {
- constructor(filepaths) {
- super(`Your local changes to the following files would be overwritten by checkout: ${filepaths.join(", ")}`);
- this.code = this.name = CheckoutConflictError.code;
- this.data = { filepaths };
- }
- };
- CheckoutConflictError.code = "CheckoutConflictError";
- var CommitNotFetchedError = class extends BaseError {
- constructor(ref, oid) {
- super(`Failed to checkout "${ref}" because commit ${oid} is not available locally. Do a git fetch to make the branch available locally.`);
- this.code = this.name = CommitNotFetchedError.code;
- this.data = { ref, oid };
- }
- };
- CommitNotFetchedError.code = "CommitNotFetchedError";
- var EmptyServerResponseError = class extends BaseError {
- constructor() {
- super(`Empty response from git server.`);
- this.code = this.name = EmptyServerResponseError.code;
- this.data = {};
- }
- };
- EmptyServerResponseError.code = "EmptyServerResponseError";
- var FastForwardError = class extends BaseError {
- constructor() {
- super(`A simple fast-forward merge was not possible.`);
- this.code = this.name = FastForwardError.code;
- this.data = {};
- }
- };
- FastForwardError.code = "FastForwardError";
- var GitPushError = class extends BaseError {
- constructor(prettyDetails, result) {
- super(`One or more branches were not updated: ${prettyDetails}`);
- this.code = this.name = GitPushError.code;
- this.data = { prettyDetails, result };
- }
- };
- GitPushError.code = "GitPushError";
- var HttpError = class extends BaseError {
- constructor(statusCode, statusMessage, response) {
- super(`HTTP Error: ${statusCode} ${statusMessage}`);
- this.code = this.name = HttpError.code;
- this.data = { statusCode, statusMessage, response };
- }
- };
- HttpError.code = "HttpError";
- var InvalidFilepathError = class extends BaseError {
- constructor(reason) {
- let message = "invalid filepath";
- if (reason === "leading-slash" || reason === "trailing-slash") {
- message = `"filepath" parameter should not include leading or trailing directory separators because these can cause problems on some platforms.`;
- } else if (reason === "directory") {
- message = `"filepath" should not be a directory.`;
- }
- super(message);
- this.code = this.name = InvalidFilepathError.code;
- this.data = { reason };
- }
- };
- InvalidFilepathError.code = "InvalidFilepathError";
- var InvalidRefNameError = class extends BaseError {
- constructor(ref, suggestion) {
- super(`"${ref}" would be an invalid git reference. (Hint: a valid alternative would be "${suggestion}".)`);
- this.code = this.name = InvalidRefNameError.code;
- this.data = { ref, suggestion };
- }
- };
- InvalidRefNameError.code = "InvalidRefNameError";
- var MaxDepthError = class extends BaseError {
- constructor(depth) {
- super(`Maximum search depth of ${depth} exceeded.`);
- this.code = this.name = MaxDepthError.code;
- this.data = { depth };
- }
- };
- MaxDepthError.code = "MaxDepthError";
- var MergeNotSupportedError = class extends BaseError {
- constructor() {
- super(`Merges with conflicts are not supported yet.`);
- this.code = this.name = MergeNotSupportedError.code;
- this.data = {};
- }
- };
- MergeNotSupportedError.code = "MergeNotSupportedError";
- var MergeConflictError = class extends BaseError {
- constructor(filepaths) {
- super(`Automatic merge failed with one or more merge conflicts in the following files: ${filepaths.toString()}. Fix conflicts then commit the result.`);
- this.code = this.name = MergeConflictError.code;
- this.data = { filepaths };
- }
- };
- MergeConflictError.code = "MergeConflictError";
- var MissingNameError = class extends BaseError {
- constructor(role) {
- super(`No name was provided for ${role} in the argument or in the .git/config file.`);
- this.code = this.name = MissingNameError.code;
- this.data = { role };
- }
- };
- MissingNameError.code = "MissingNameError";
- var MissingParameterError = class extends BaseError {
- constructor(parameter) {
- super(`The function requires a "${parameter}" parameter but none was provided.`);
- this.code = this.name = MissingParameterError.code;
- this.data = { parameter };
- }
- };
- MissingParameterError.code = "MissingParameterError";
- var MultipleGitError = class extends BaseError {
- constructor(errors) {
- super(`There are multiple errors that were thrown by the method. Please refer to the "errors" property to see more`);
- this.code = this.name = MultipleGitError.code;
- this.data = { errors };
- this.errors = errors;
- }
- };
- MultipleGitError.code = "MultipleGitError";
- var ParseError = class extends BaseError {
- constructor(expected, actual) {
- super(`Expected "${expected}" but received "${actual}".`);
- this.code = this.name = ParseError.code;
- this.data = { expected, actual };
- }
- };
- ParseError.code = "ParseError";
- var PushRejectedError = class extends BaseError {
- constructor(reason) {
- let message = "";
- if (reason === "not-fast-forward") {
- message = " because it was not a simple fast-forward";
- } else if (reason === "tag-exists") {
- message = " because tag already exists";
- }
- super(`Push rejected${message}. Use "force: true" to override.`);
- this.code = this.name = PushRejectedError.code;
- this.data = { reason };
- }
- };
- PushRejectedError.code = "PushRejectedError";
- var RemoteCapabilityError = class extends BaseError {
- constructor(capability, parameter) {
- super(`Remote does not support the "${capability}" so the "${parameter}" parameter cannot be used.`);
- this.code = this.name = RemoteCapabilityError.code;
- this.data = { capability, parameter };
- }
- };
- RemoteCapabilityError.code = "RemoteCapabilityError";
- var SmartHttpError = class extends BaseError {
- constructor(preview, response) {
- super(`Remote did not reply using the "smart" HTTP protocol. Expected "001e# service=git-upload-pack" but received: ${preview}`);
- this.code = this.name = SmartHttpError.code;
- this.data = { preview, response };
- }
- };
- SmartHttpError.code = "SmartHttpError";
- var UnknownTransportError = class extends BaseError {
- constructor(url, transport, suggestion) {
- super(`Git remote "${url}" uses an unrecognized transport protocol: "${transport}"`);
- this.code = this.name = UnknownTransportError.code;
- this.data = { url, transport, suggestion };
- }
- };
- UnknownTransportError.code = "UnknownTransportError";
- var UrlParseError = class extends BaseError {
- constructor(url) {
- super(`Cannot parse remote URL: "${url}"`);
- this.code = this.name = UrlParseError.code;
- this.data = { url };
- }
- };
- UrlParseError.code = "UrlParseError";
- var UserCanceledError = class extends BaseError {
- constructor() {
- super(`The operation was canceled.`);
- this.code = this.name = UserCanceledError.code;
- this.data = {};
- }
- };
- UserCanceledError.code = "UserCanceledError";
- var Errors = /* @__PURE__ */ Object.freeze({
- __proto__: null,
- AlreadyExistsError,
- AmbiguousError,
- CheckoutConflictError,
- CommitNotFetchedError,
- EmptyServerResponseError,
- FastForwardError,
- GitPushError,
- HttpError,
- InternalError,
- InvalidFilepathError,
- InvalidOidError,
- InvalidRefNameError,
- MaxDepthError,
- MergeNotSupportedError,
- MergeConflictError,
- MissingNameError,
- MissingParameterError,
- MultipleGitError,
- NoRefspecError,
- NotFoundError,
- ObjectTypeError,
- ParseError,
- PushRejectedError,
- RemoteCapabilityError,
- SmartHttpError,
- UnknownTransportError,
- UnsafeFilepathError,
- UrlParseError,
- UserCanceledError
- });
- function formatAuthor({ name, email, timestamp, timezoneOffset }) {
- timezoneOffset = formatTimezoneOffset(timezoneOffset);
- return `${name} <${email}> ${timestamp} ${timezoneOffset}`;
- }
- function formatTimezoneOffset(minutes) {
- const sign = simpleSign(negateExceptForZero(minutes));
- minutes = Math.abs(minutes);
- const hours = Math.floor(minutes / 60);
- minutes -= hours * 60;
- let strHours = String(hours);
- let strMinutes = String(minutes);
- if (strHours.length < 2)
- strHours = "0" + strHours;
- if (strMinutes.length < 2)
- strMinutes = "0" + strMinutes;
- return (sign === -1 ? "-" : "+") + strHours + strMinutes;
- }
- function simpleSign(n) {
- return Math.sign(n) || (Object.is(n, -0) ? -1 : 1);
- }
- function negateExceptForZero(n) {
- return n === 0 ? n : -n;
- }
- function normalizeNewlines(str) {
- str = str.replace(/\r/g, "");
- str = str.replace(/^\n+/, "");
- str = str.replace(/\n+$/, "") + "\n";
- return str;
- }
- function parseAuthor(author) {
- const [, name, email, timestamp, offset] = author.match(/^(.*) <(.*)> (.*) (.*)$/);
- return {
- name,
- email,
- timestamp: Number(timestamp),
- timezoneOffset: parseTimezoneOffset(offset)
- };
- }
- function parseTimezoneOffset(offset) {
- let [, sign, hours, minutes] = offset.match(/(\+|-)(\d\d)(\d\d)/);
- minutes = (sign === "+" ? 1 : -1) * (Number(hours) * 60 + Number(minutes));
- return negateExceptForZero$1(minutes);
- }
- function negateExceptForZero$1(n) {
- return n === 0 ? n : -n;
- }
- var GitAnnotatedTag = class {
- constructor(tag2) {
- if (typeof tag2 === "string") {
- this._tag = tag2;
- } else if (Buffer2.isBuffer(tag2)) {
- this._tag = tag2.toString("utf8");
- } else if (typeof tag2 === "object") {
- this._tag = GitAnnotatedTag.render(tag2);
- } else {
- throw new InternalError("invalid type passed to GitAnnotatedTag constructor");
- }
- }
- static from(tag2) {
- return new GitAnnotatedTag(tag2);
- }
- static render(obj) {
- return `object ${obj.object}
- type ${obj.type}
- tag ${obj.tag}
- tagger ${formatAuthor(obj.tagger)}
- ${obj.message}
- ${obj.gpgsig ? obj.gpgsig : ""}`;
- }
- justHeaders() {
- return this._tag.slice(0, this._tag.indexOf("\n\n"));
- }
- message() {
- const tag2 = this.withoutSignature();
- return tag2.slice(tag2.indexOf("\n\n") + 2);
- }
- parse() {
- return Object.assign(this.headers(), {
- message: this.message(),
- gpgsig: this.gpgsig()
- });
- }
- render() {
- return this._tag;
- }
- headers() {
- const headers = this.justHeaders().split("\n");
- const hs = [];
- for (const h of headers) {
- if (h[0] === " ") {
- hs[hs.length - 1] += "\n" + h.slice(1);
- } else {
- hs.push(h);
- }
- }
- const obj = {};
- for (const h of hs) {
- const key2 = h.slice(0, h.indexOf(" "));
- const value = h.slice(h.indexOf(" ") + 1);
- if (Array.isArray(obj[key2])) {
- obj[key2].push(value);
- } else {
- obj[key2] = value;
- }
- }
- if (obj.tagger) {
- obj.tagger = parseAuthor(obj.tagger);
- }
- if (obj.committer) {
- obj.committer = parseAuthor(obj.committer);
- }
- return obj;
- }
- withoutSignature() {
- const tag2 = normalizeNewlines(this._tag);
- if (tag2.indexOf("\n-----BEGIN PGP SIGNATURE-----") === -1)
- return tag2;
- return tag2.slice(0, tag2.lastIndexOf("\n-----BEGIN PGP SIGNATURE-----"));
- }
- gpgsig() {
- if (this._tag.indexOf("\n-----BEGIN PGP SIGNATURE-----") === -1)
- return;
- const signature = this._tag.slice(this._tag.indexOf("-----BEGIN PGP SIGNATURE-----"), this._tag.indexOf("-----END PGP SIGNATURE-----") + "-----END PGP SIGNATURE-----".length);
- return normalizeNewlines(signature);
- }
- payload() {
- return this.withoutSignature() + "\n";
- }
- toObject() {
- return Buffer2.from(this._tag, "utf8");
- }
- static async sign(tag2, sign, secretKey) {
- const payload = tag2.payload();
- let { signature } = await sign({ payload, secretKey });
- signature = normalizeNewlines(signature);
- const signedTag = payload + signature;
- return GitAnnotatedTag.from(signedTag);
- }
- };
- function indent(str) {
- return str.trim().split("\n").map((x) => " " + x).join("\n") + "\n";
- }
- function outdent(str) {
- return str.split("\n").map((x) => x.replace(/^ /, "")).join("\n");
- }
- var GitCommit = class {
- constructor(commit2) {
- if (typeof commit2 === "string") {
- this._commit = commit2;
- } else if (Buffer2.isBuffer(commit2)) {
- this._commit = commit2.toString("utf8");
- } else if (typeof commit2 === "object") {
- this._commit = GitCommit.render(commit2);
- } else {
- throw new InternalError("invalid type passed to GitCommit constructor");
- }
- }
- static fromPayloadSignature({ payload, signature }) {
- const headers = GitCommit.justHeaders(payload);
- const message = GitCommit.justMessage(payload);
- const commit2 = normalizeNewlines(headers + "\ngpgsig" + indent(signature) + "\n" + message);
- return new GitCommit(commit2);
- }
- static from(commit2) {
- return new GitCommit(commit2);
- }
- toObject() {
- return Buffer2.from(this._commit, "utf8");
- }
- headers() {
- return this.parseHeaders();
- }
- message() {
- return GitCommit.justMessage(this._commit);
- }
- parse() {
- return Object.assign({ message: this.message() }, this.headers());
- }
- static justMessage(commit2) {
- return normalizeNewlines(commit2.slice(commit2.indexOf("\n\n") + 2));
- }
- static justHeaders(commit2) {
- return commit2.slice(0, commit2.indexOf("\n\n"));
- }
- parseHeaders() {
- const headers = GitCommit.justHeaders(this._commit).split("\n");
- const hs = [];
- for (const h of headers) {
- if (h[0] === " ") {
- hs[hs.length - 1] += "\n" + h.slice(1);
- } else {
- hs.push(h);
- }
- }
- const obj = {
- parent: []
- };
- for (const h of hs) {
- const key2 = h.slice(0, h.indexOf(" "));
- const value = h.slice(h.indexOf(" ") + 1);
- if (Array.isArray(obj[key2])) {
- obj[key2].push(value);
- } else {
- obj[key2] = value;
- }
- }
- if (obj.author) {
- obj.author = parseAuthor(obj.author);
- }
- if (obj.committer) {
- obj.committer = parseAuthor(obj.committer);
- }
- return obj;
- }
- static renderHeaders(obj) {
- let headers = "";
- if (obj.tree) {
- headers += `tree ${obj.tree}
- `;
- } else {
- headers += `tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
- `;
- }
- if (obj.parent) {
- if (obj.parent.length === void 0) {
- throw new InternalError(`commit 'parent' property should be an array`);
- }
- for (const p of obj.parent) {
- headers += `parent ${p}
- `;
- }
- }
- const author = obj.author;
- headers += `author ${formatAuthor(author)}
- `;
- const committer = obj.committer || obj.author;
- headers += `committer ${formatAuthor(committer)}
- `;
- if (obj.gpgsig) {
- headers += "gpgsig" + indent(obj.gpgsig);
- }
- return headers;
- }
- static render(obj) {
- return GitCommit.renderHeaders(obj) + "\n" + normalizeNewlines(obj.message);
- }
- render() {
- return this._commit;
- }
- withoutSignature() {
- const commit2 = normalizeNewlines(this._commit);
- if (commit2.indexOf("\ngpgsig") === -1)
- return commit2;
- const headers = commit2.slice(0, commit2.indexOf("\ngpgsig"));
- const message = commit2.slice(commit2.indexOf("-----END PGP SIGNATURE-----\n") + "-----END PGP SIGNATURE-----\n".length);
- return normalizeNewlines(headers + "\n" + message);
- }
- isolateSignature() {
- const signature = this._commit.slice(this._commit.indexOf("-----BEGIN PGP SIGNATURE-----"), this._commit.indexOf("-----END PGP SIGNATURE-----") + "-----END PGP SIGNATURE-----".length);
- return outdent(signature);
- }
- static async sign(commit2, sign, secretKey) {
- const payload = commit2.withoutSignature();
- const message = GitCommit.justMessage(commit2._commit);
- let { signature } = await sign({ payload, secretKey });
- signature = normalizeNewlines(signature);
- const headers = GitCommit.justHeaders(commit2._commit);
- const signedCommit = headers + "\ngpgsig" + indent(signature) + "\n" + message;
- return GitCommit.from(signedCommit);
- }
- };
- async function resolveTree({ fs, cache, gitdir, oid }) {
- if (oid === "4b825dc642cb6eb9a060e54bf8d69288fbee4904") {
- return { tree: GitTree.from([]), oid };
- }
- const { type, object } = await _readObject({ fs, cache, gitdir, oid });
- if (type === "tag") {
- oid = GitAnnotatedTag.from(object).parse().object;
- return resolveTree({ fs, cache, gitdir, oid });
- }
- if (type === "commit") {
- oid = GitCommit.from(object).parse().tree;
- return resolveTree({ fs, cache, gitdir, oid });
- }
- if (type !== "tree") {
- throw new ObjectTypeError(oid, type, "tree");
- }
- return { tree: GitTree.from(object), oid };
- }
- var GitWalkerRepo = class {
- constructor({ fs, gitdir, ref, cache }) {
- this.fs = fs;
- this.cache = cache;
- this.gitdir = gitdir;
- this.mapPromise = (async () => {
- const map = new Map();
- let oid;
- try {
- oid = await GitRefManager.resolve({ fs, gitdir, ref });
- } catch (e) {
- if (e instanceof NotFoundError) {
- oid = "4b825dc642cb6eb9a060e54bf8d69288fbee4904";
- }
- }
- const tree = await resolveTree({ fs, cache: this.cache, gitdir, oid });
- tree.type = "tree";
- tree.mode = "40000";
- map.set(".", tree);
- return map;
- })();
- const walker = this;
- this.ConstructEntry = class TreeEntry {
- constructor(fullpath) {
- this._fullpath = fullpath;
- this._type = false;
- this._mode = false;
- this._stat = false;
- this._content = false;
- this._oid = false;
- }
- async type() {
- return walker.type(this);
- }
- async mode() {
- return walker.mode(this);
- }
- async stat() {
- return walker.stat(this);
- }
- async content() {
- return walker.content(this);
- }
- async oid() {
- return walker.oid(this);
- }
- };
- }
- async readdir(entry) {
- const filepath = entry._fullpath;
- const { fs, cache, gitdir } = this;
- const map = await this.mapPromise;
- const obj = map.get(filepath);
- if (!obj)
- throw new Error(`No obj for ${filepath}`);
- const oid = obj.oid;
- if (!oid)
- throw new Error(`No oid for obj ${JSON.stringify(obj)}`);
- if (obj.type !== "tree") {
- return null;
- }
- const { type, object } = await _readObject({ fs, cache, gitdir, oid });
- if (type !== obj.type) {
- throw new ObjectTypeError(oid, type, obj.type);
- }
- const tree = GitTree.from(object);
- for (const entry2 of tree) {
- map.set(join(filepath, entry2.path), entry2);
- }
- return tree.entries().map((entry2) => join(filepath, entry2.path));
- }
- async type(entry) {
- if (entry._type === false) {
- const map = await this.mapPromise;
- const { type } = map.get(entry._fullpath);
- entry._type = type;
- }
- return entry._type;
- }
- async mode(entry) {
- if (entry._mode === false) {
- const map = await this.mapPromise;
- const { mode } = map.get(entry._fullpath);
- entry._mode = normalizeMode(parseInt(mode, 8));
- }
- return entry._mode;
- }
- async stat(_entry) {
- }
- async content(entry) {
- if (entry._content === false) {
- const map = await this.mapPromise;
- const { fs, cache, gitdir } = this;
- const obj = map.get(entry._fullpath);
- const oid = obj.oid;
- const { type, object } = await _readObject({ fs, cache, gitdir, oid });
- if (type !== "blob") {
- entry._content = void 0;
- } else {
- entry._content = new Uint8Array(object);
- }
- }
- return entry._content;
- }
- async oid(entry) {
- if (entry._oid === false) {
- const map = await this.mapPromise;
- const obj = map.get(entry._fullpath);
- entry._oid = obj.oid;
- }
- return entry._oid;
- }
- };
- function TREE({ ref = "HEAD" } = {}) {
- const o = Object.create(null);
- Object.defineProperty(o, GitWalkSymbol, {
- value: function({ fs, gitdir, cache }) {
- return new GitWalkerRepo({ fs, gitdir, ref, cache });
- }
- });
- Object.freeze(o);
- return o;
- }
- var GitWalkerFs = class {
- constructor({ fs, dir, gitdir, cache }) {
- this.fs = fs;
- this.cache = cache;
- this.dir = dir;
- this.gitdir = gitdir;
- const walker = this;
- this.ConstructEntry = class WorkdirEntry {
- constructor(fullpath) {
- this._fullpath = fullpath;
- this._type = false;
- this._mode = false;
- this._stat = false;
- this._content = false;
- this._oid = false;
- }
- async type() {
- return walker.type(this);
- }
- async mode() {
- return walker.mode(this);
- }
- async stat() {
- return walker.stat(this);
- }
- async content() {
- return walker.content(this);
- }
- async oid() {
- return walker.oid(this);
- }
- };
- }
- async readdir(entry) {
- const filepath = entry._fullpath;
- const { fs, dir } = this;
- const names = await fs.readdir(join(dir, filepath));
- if (names === null)
- return null;
- return names.map((name) => join(filepath, name));
- }
- async type(entry) {
- if (entry._type === false) {
- await entry.stat();
- }
- return entry._type;
- }
- async mode(entry) {
- if (entry._mode === false) {
- await entry.stat();
- }
- return entry._mode;
- }
- async stat(entry) {
- if (entry._stat === false) {
- const { fs, dir } = this;
- let stat = await fs.lstat(`${dir}/${entry._fullpath}`);
- if (!stat) {
- throw new Error(`ENOENT: no such file or directory, lstat '${entry._fullpath}'`);
- }
- let type = stat.isDirectory() ? "tree" : "blob";
- if (type === "blob" && !stat.isFile() && !stat.isSymbolicLink()) {
- type = "special";
- }
- entry._type = type;
- stat = normalizeStats(stat);
- entry._mode = stat.mode;
- if (stat.size === -1 && entry._actualSize) {
- stat.size = entry._actualSize;
- }
- entry._stat = stat;
- }
- return entry._stat;
- }
- async content(entry) {
- if (entry._content === false) {
- const { fs, dir } = this;
- if (await entry.type() === "tree") {
- entry._content = void 0;
- } else {
- const content = await fs.read(`${dir}/${entry._fullpath}`);
- entry._actualSize = content.length;
- if (entry._stat && entry._stat.size === -1) {
- entry._stat.size = entry._actualSize;
- }
- entry._content = new Uint8Array(content);
- }
- }
- return entry._content;
- }
- async oid(entry) {
- if (entry._oid === false) {
- const { fs, gitdir, cache } = this;
- let oid;
- await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) {
- const stage = index2.entriesMap.get(entry._fullpath);
- const stats = await entry.stat();
- if (!stage || compareStats(stats, stage)) {
- const content = await entry.content();
- if (content === void 0) {
- oid = void 0;
- } else {
- oid = await shasum(GitObject.wrap({ type: "blob", object: await entry.content() }));
- if (stage && oid === stage.oid && stats.mode === stage.mode && compareStats(stats, stage)) {
- index2.insert({
- filepath: entry._fullpath,
- stats,
- oid
- });
- }
- }
- } else {
- oid = stage.oid;
- }
- });
- entry._oid = oid;
- }
- return entry._oid;
- }
- };
- function WORKDIR() {
- const o = Object.create(null);
- Object.defineProperty(o, GitWalkSymbol, {
- value: function({ fs, dir, gitdir, cache }) {
- return new GitWalkerFs({ fs, dir, gitdir, cache });
- }
- });
- Object.freeze(o);
- return o;
- }
- var GitIgnoreManager = class {
- static async isIgnored({ fs, dir, gitdir = join(dir, ".git"), filepath }) {
- if (basename(filepath) === ".git")
- return true;
- if (filepath === ".")
- return false;
- let excludes = "";
- const excludesFile = join(gitdir, "info", "exclude");
- if (await fs.exists(excludesFile)) {
- excludes = await fs.read(excludesFile, "utf8");
- }
- const pairs = [
- {
- gitignore: join(dir, ".gitignore"),
- filepath
- }
- ];
- const pieces = filepath.split("/").filter(Boolean);
- for (let i = 1; i < pieces.length; i++) {
- const folder = pieces.slice(0, i).join("/");
- const file = pieces.slice(i).join("/");
- pairs.push({
- gitignore: join(dir, folder, ".gitignore"),
- filepath: file
- });
- }
- let ignoredStatus = false;
- for (const p of pairs) {
- let file;
- try {
- file = await fs.read(p.gitignore, "utf8");
- } catch (err) {
- if (err.code === "NOENT")
- continue;
- }
- const ign = (0, import_ignore.default)().add(excludes);
- ign.add(file);
- const parentdir = dirname(p.filepath);
- if (parentdir !== "." && ign.ignores(parentdir))
- return true;
- if (ignoredStatus) {
- ignoredStatus = !ign.test(p.filepath).unignored;
- } else {
- ignoredStatus = ign.test(p.filepath).ignored;
- }
- }
- return ignoredStatus;
- }
- };
- async function rmRecursive(fs, filepath) {
- const entries = await fs.readdir(filepath);
- if (entries == null) {
- await fs.rm(filepath);
- } else if (entries.length) {
- await Promise.all(entries.map((entry) => {
- const subpath = join(filepath, entry);
- return fs.lstat(subpath).then((stat) => {
- if (!stat)
- return;
- return stat.isDirectory() ? rmRecursive(fs, subpath) : fs.rm(subpath);
- });
- })).then(() => fs.rmdir(filepath));
- } else {
- await fs.rmdir(filepath);
- }
- }
- var FileSystem = class {
- constructor(fs) {
- if (typeof fs._original_unwrapped_fs !== "undefined")
- return fs;
- const promises = Object.getOwnPropertyDescriptor(fs, "promises");
- if (promises && promises.enumerable) {
- this._readFile = fs.promises.readFile.bind(fs.promises);
- this._writeFile = fs.promises.writeFile.bind(fs.promises);
- this._mkdir = fs.promises.mkdir.bind(fs.promises);
- if (fs.promises.rm) {
- this._rm = fs.promises.rm.bind(fs.promises);
- } else if (fs.promises.rmdir.length > 1) {
- this._rm = fs.promises.rmdir.bind(fs.promises);
- } else {
- this._rm = rmRecursive.bind(null, this);
- }
- this._rmdir = fs.promises.rmdir.bind(fs.promises);
- this._unlink = fs.promises.unlink.bind(fs.promises);
- this._stat = fs.promises.stat.bind(fs.promises);
- this._lstat = fs.promises.lstat.bind(fs.promises);
- this._readdir = fs.promises.readdir.bind(fs.promises);
- this._readlink = fs.promises.readlink.bind(fs.promises);
- this._symlink = fs.promises.symlink.bind(fs.promises);
- } else {
- this._readFile = (0, import_pify.default)(fs.readFile.bind(fs));
- this._writeFile = (0, import_pify.default)(fs.writeFile.bind(fs));
- this._mkdir = (0, import_pify.default)(fs.mkdir.bind(fs));
- if (fs.rm) {
- this._rm = (0, import_pify.default)(fs.rm.bind(fs));
- } else if (fs.rmdir.length > 2) {
- this._rm = (0, import_pify.default)(fs.rmdir.bind(fs));
- } else {
- this._rm = rmRecursive.bind(null, this);
- }
- this._rmdir = (0, import_pify.default)(fs.rmdir.bind(fs));
- this._unlink = (0, import_pify.default)(fs.unlink.bind(fs));
- this._stat = (0, import_pify.default)(fs.stat.bind(fs));
- this._lstat = (0, import_pify.default)(fs.lstat.bind(fs));
- this._readdir = (0, import_pify.default)(fs.readdir.bind(fs));
- this._readlink = (0, import_pify.default)(fs.readlink.bind(fs));
- this._symlink = (0, import_pify.default)(fs.symlink.bind(fs));
- }
- this._original_unwrapped_fs = fs;
- }
- async exists(filepath, options = {}) {
- try {
- await this._stat(filepath);
- return true;
- } catch (err) {
- if (err.code === "ENOENT" || err.code === "ENOTDIR") {
- return false;
- } else {
- console.log('Unhandled error in "FileSystem.exists()" function', err);
- throw err;
- }
- }
- }
- async read(filepath, options = {}) {
- try {
- let buffer2 = await this._readFile(filepath, options);
- if (typeof buffer2 !== "string") {
- buffer2 = Buffer2.from(buffer2);
- }
- return buffer2;
- } catch (err) {
- return null;
- }
- }
- async write(filepath, contents, options = {}) {
- try {
- await this._writeFile(filepath, contents, options);
- return;
- } catch (err) {
- await this.mkdir(dirname(filepath));
- await this._writeFile(filepath, contents, options);
- }
- }
- async mkdir(filepath, _selfCall = false) {
- try {
- await this._mkdir(filepath);
- return;
- } catch (err) {
- if (err === null)
- return;
- if (err.code === "EEXIST")
- return;
- if (_selfCall)
- throw err;
- if (err.code === "ENOENT") {
- const parent = dirname(filepath);
- if (parent === "." || parent === "/" || parent === filepath)
- throw err;
- await this.mkdir(parent);
- await this.mkdir(filepath, true);
- }
- }
- }
- async rm(filepath) {
- try {
- await this._unlink(filepath);
- } catch (err) {
- if (err.code !== "ENOENT")
- throw err;
- }
- }
- async rmdir(filepath, opts) {
- try {
- if (opts && opts.recursive) {
- await this._rm(filepath, opts);
- } else {
- await this._rmdir(filepath);
- }
- } catch (err) {
- if (err.code !== "ENOENT")
- throw err;
- }
- }
- async readdir(filepath) {
- try {
- const names = await this._readdir(filepath);
- names.sort(compareStrings);
- return names;
- } catch (err) {
- if (err.code === "ENOTDIR")
- return null;
- return [];
- }
- }
- async readdirDeep(dir) {
- const subdirs = await this._readdir(dir);
- const files = await Promise.all(subdirs.map(async (subdir) => {
- const res = dir + "/" + subdir;
- return (await this._stat(res)).isDirectory() ? this.readdirDeep(res) : res;
- }));
- return files.reduce((a, f) => a.concat(f), []);
- }
- async lstat(filename) {
- try {
- const stats = await this._lstat(filename);
- return stats;
- } catch (err) {
- if (err.code === "ENOENT") {
- return null;
- }
- throw err;
- }
- }
- async readlink(filename, opts = { encoding: "buffer" }) {
- try {
- const link = await this._readlink(filename, opts);
- return Buffer2.isBuffer(link) ? link : Buffer2.from(link);
- } catch (err) {
- if (err.code === "ENOENT") {
- return null;
- }
- throw err;
- }
- }
- async writelink(filename, buffer2) {
- return this._symlink(buffer2.toString("utf8"), filename);
- }
- };
- async function writeObjectLoose({ fs, gitdir, object, format, oid }) {
- if (format !== "deflated") {
- throw new InternalError("GitObjectStoreLoose expects objects to write to be in deflated format");
- }
- const source = `objects/${oid.slice(0, 2)}/${oid.slice(2)}`;
- const filepath = `${gitdir}/${source}`;
- if (!await fs.exists(filepath))
- await fs.write(filepath, object);
- }
- var supportsCompressionStream = null;
- async function deflate(buffer2) {
- if (supportsCompressionStream === null) {
- supportsCompressionStream = testCompressionStream();
- }
- return supportsCompressionStream ? browserDeflate(buffer2) : import_pako.default.deflate(buffer2);
- }
- async function browserDeflate(buffer2) {
- const cs = new CompressionStream("deflate");
- const c = new Blob([buffer2]).stream().pipeThrough(cs);
- return new Uint8Array(await new Response(c).arrayBuffer());
- }
- function testCompressionStream() {
- try {
- const cs = new CompressionStream("deflate");
- new Blob([]).stream();
- if (cs)
- return true;
- } catch (_) {
- }
- return false;
- }
- async function _writeObject({
- fs,
- gitdir,
- type,
- object,
- format = "content",
- oid = void 0,
- dryRun = false
- }) {
- if (format !== "deflated") {
- if (format !== "wrapped") {
- object = GitObject.wrap({ type, object });
- }
- oid = await shasum(object);
- object = Buffer2.from(await deflate(object));
- }
- if (!dryRun) {
- await writeObjectLoose({ fs, gitdir, object, format: "deflated", oid });
- }
- return oid;
- }
- function assertParameter(name, value) {
- if (value === void 0) {
- throw new MissingParameterError(name);
- }
- }
- function posixifyPathBuffer(buffer2) {
- let idx;
- while (~(idx = buffer2.indexOf(92)))
- buffer2[idx] = 47;
- return buffer2;
- }
- async function add({
- fs: _fs,
- dir,
- gitdir = join(dir, ".git"),
- filepath,
- cache = {},
- force = false
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("dir", dir);
- assertParameter("gitdir", gitdir);
- assertParameter("filepath", filepath);
- const fs = new FileSystem(_fs);
- await GitIndexManager.acquire({ fs, gitdir, cache }, async (index2) => {
- return addToIndex({ dir, gitdir, fs, filepath, index: index2, force });
- });
- } catch (err) {
- err.caller = "git.add";
- throw err;
- }
- }
- async function addToIndex({ dir, gitdir, fs, filepath, index: index2, force }) {
- filepath = Array.isArray(filepath) ? filepath : [filepath];
- const promises = filepath.map(async (currentFilepath) => {
- if (!force) {
- const ignored = await GitIgnoreManager.isIgnored({
- fs,
- dir,
- gitdir,
- filepath: currentFilepath
- });
- if (ignored)
- return;
- }
- const stats = await fs.lstat(join(dir, currentFilepath));
- if (!stats)
- throw new NotFoundError(currentFilepath);
- if (stats.isDirectory()) {
- const children2 = await fs.readdir(join(dir, currentFilepath));
- const promises2 = children2.map((child) => addToIndex({
- dir,
- gitdir,
- fs,
- filepath: [join(currentFilepath, child)],
- index: index2,
- force
- }));
- await Promise.all(promises2);
- } else {
- const object = stats.isSymbolicLink() ? await fs.readlink(join(dir, currentFilepath)).then(posixifyPathBuffer) : await fs.read(join(dir, currentFilepath));
- if (object === null)
- throw new NotFoundError(currentFilepath);
- const oid = await _writeObject({ fs, gitdir, type: "blob", object });
- index2.insert({ filepath: currentFilepath, stats, oid });
- }
- });
- const settledPromises = await Promise.allSettled(promises);
- const rejectedPromises = settledPromises.filter((settle) => settle.status === "rejected").map((settle) => settle.reason);
- if (rejectedPromises.length > 1) {
- throw new MultipleGitError(rejectedPromises);
- }
- if (rejectedPromises.length === 1) {
- throw rejectedPromises[0];
- }
- const fulfilledPromises = settledPromises.filter((settle) => settle.status === "fulfilled" && settle.value).map((settle) => settle.value);
- return fulfilledPromises;
- }
- async function _commit({
- fs,
- cache,
- onSign,
- gitdir,
- message,
- author,
- committer,
- signingKey,
- dryRun = false,
- noUpdateBranch = false,
- ref,
- parent,
- tree
- }) {
- if (!ref) {
- ref = await GitRefManager.resolve({
- fs,
- gitdir,
- ref: "HEAD",
- depth: 2
- });
- }
- return GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) {
- const inodes = flatFileListToDirectoryStructure(index2.entries);
- const inode = inodes.get(".");
- if (!tree) {
- tree = await constructTree({ fs, gitdir, inode, dryRun });
- }
- if (!parent) {
- try {
- parent = [
- await GitRefManager.resolve({
- fs,
- gitdir,
- ref
- })
- ];
- } catch (err) {
- parent = [];
- }
- } else {
- parent = await Promise.all(parent.map((p) => {
- return GitRefManager.resolve({ fs, gitdir, ref: p });
- }));
- }
- let comm = GitCommit.from({
- tree,
- parent,
- author,
- committer,
- message
- });
- if (signingKey) {
- comm = await GitCommit.sign(comm, onSign, signingKey);
- }
- const oid = await _writeObject({
- fs,
- gitdir,
- type: "commit",
- object: comm.toObject(),
- dryRun
- });
- if (!noUpdateBranch && !dryRun) {
- await GitRefManager.writeRef({
- fs,
- gitdir,
- ref,
- value: oid
- });
- }
- return oid;
- });
- }
- async function constructTree({ fs, gitdir, inode, dryRun }) {
- const children2 = inode.children;
- for (const inode2 of children2) {
- if (inode2.type === "tree") {
- inode2.metadata.mode = "040000";
- inode2.metadata.oid = await constructTree({ fs, gitdir, inode: inode2, dryRun });
- }
- }
- const entries = children2.map((inode2) => ({
- mode: inode2.metadata.mode,
- path: inode2.basename,
- oid: inode2.metadata.oid,
- type: inode2.type
- }));
- const tree = GitTree.from(entries);
- const oid = await _writeObject({
- fs,
- gitdir,
- type: "tree",
- object: tree.toObject(),
- dryRun
- });
- return oid;
- }
- async function resolveFilepath({ fs, cache, gitdir, oid, filepath }) {
- if (filepath.startsWith("/")) {
- throw new InvalidFilepathError("leading-slash");
- } else if (filepath.endsWith("/")) {
- throw new InvalidFilepathError("trailing-slash");
- }
- const _oid = oid;
- const result = await resolveTree({ fs, cache, gitdir, oid });
- const tree = result.tree;
- if (filepath === "") {
- oid = result.oid;
- } else {
- const pathArray = filepath.split("/");
- oid = await _resolveFilepath({
- fs,
- cache,
- gitdir,
- tree,
- pathArray,
- oid: _oid,
- filepath
- });
- }
- return oid;
- }
- async function _resolveFilepath({
- fs,
- cache,
- gitdir,
- tree,
- pathArray,
- oid,
- filepath
- }) {
- const name = pathArray.shift();
- for (const entry of tree) {
- if (entry.path === name) {
- if (pathArray.length === 0) {
- return entry.oid;
- } else {
- const { type, object } = await _readObject({
- fs,
- cache,
- gitdir,
- oid: entry.oid
- });
- if (type !== "tree") {
- throw new ObjectTypeError(oid, type, "blob", filepath);
- }
- tree = GitTree.from(object);
- return _resolveFilepath({
- fs,
- cache,
- gitdir,
- tree,
- pathArray,
- oid,
- filepath
- });
- }
- }
- }
- throw new NotFoundError(`file or directory found at "${oid}:${filepath}"`);
- }
- async function _readTree({
- fs,
- cache,
- gitdir,
- oid,
- filepath = void 0
- }) {
- if (filepath !== void 0) {
- oid = await resolveFilepath({ fs, cache, gitdir, oid, filepath });
- }
- const { tree, oid: treeOid } = await resolveTree({ fs, cache, gitdir, oid });
- const result = {
- oid: treeOid,
- tree: tree.entries()
- };
- return result;
- }
- async function _writeTree({ fs, gitdir, tree }) {
- const object = GitTree.from(tree).toObject();
- const oid = await _writeObject({
- fs,
- gitdir,
- type: "tree",
- object,
- format: "content"
- });
- return oid;
- }
- async function _addNote({
- fs,
- cache,
- onSign,
- gitdir,
- ref,
- oid,
- note,
- force,
- author,
- committer,
- signingKey
- }) {
- let parent;
- try {
- parent = await GitRefManager.resolve({ gitdir, fs, ref });
- } catch (err) {
- if (!(err instanceof NotFoundError)) {
- throw err;
- }
- }
- const result = await _readTree({
- fs,
- cache,
- gitdir,
- oid: parent || "4b825dc642cb6eb9a060e54bf8d69288fbee4904"
- });
- let tree = result.tree;
- if (force) {
- tree = tree.filter((entry) => entry.path !== oid);
- } else {
- for (const entry of tree) {
- if (entry.path === oid) {
- throw new AlreadyExistsError("note", oid);
- }
- }
- }
- if (typeof note === "string") {
- note = Buffer2.from(note, "utf8");
- }
- const noteOid = await _writeObject({
- fs,
- gitdir,
- type: "blob",
- object: note,
- format: "content"
- });
- tree.push({ mode: "100644", path: oid, oid: noteOid, type: "blob" });
- const treeOid = await _writeTree({
- fs,
- gitdir,
- tree
- });
- const commitOid = await _commit({
- fs,
- cache,
- onSign,
- gitdir,
- ref,
- tree: treeOid,
- parent: parent && [parent],
- message: `Note added by 'isomorphic-git addNote'
- `,
- author,
- committer,
- signingKey
- });
- return commitOid;
- }
- async function _getConfig({ fs, gitdir, path: path2 }) {
- const config = await GitConfigManager.get({ fs, gitdir });
- return config.get(path2);
- }
- async function normalizeAuthorObject({ fs, gitdir, author = {} }) {
- let { name, email, timestamp, timezoneOffset } = author;
- name = name || await _getConfig({ fs, gitdir, path: "user.name" });
- email = email || await _getConfig({ fs, gitdir, path: "user.email" }) || "";
- if (name === void 0) {
- return void 0;
- }
- timestamp = timestamp != null ? timestamp : Math.floor(Date.now() / 1e3);
- timezoneOffset = timezoneOffset != null ? timezoneOffset : new Date(timestamp * 1e3).getTimezoneOffset();
- return { name, email, timestamp, timezoneOffset };
- }
- async function normalizeCommitterObject({
- fs,
- gitdir,
- author,
- committer
- }) {
- committer = Object.assign({}, committer || author);
- if (author) {
- committer.timestamp = committer.timestamp || author.timestamp;
- committer.timezoneOffset = committer.timezoneOffset || author.timezoneOffset;
- }
- committer = await normalizeAuthorObject({ fs, gitdir, author: committer });
- return committer;
- }
- async function addNote({
- fs: _fs,
- onSign,
- dir,
- gitdir = join(dir, ".git"),
- ref = "refs/notes/commits",
- oid,
- note,
- force,
- author: _author,
- committer: _committer,
- signingKey,
- cache = {}
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- assertParameter("oid", oid);
- assertParameter("note", note);
- if (signingKey) {
- assertParameter("onSign", onSign);
- }
- const fs = new FileSystem(_fs);
- const author = await normalizeAuthorObject({ fs, gitdir, author: _author });
- if (!author)
- throw new MissingNameError("author");
- const committer = await normalizeCommitterObject({
- fs,
- gitdir,
- author,
- committer: _committer
- });
- if (!committer)
- throw new MissingNameError("committer");
- return await _addNote({
- fs: new FileSystem(fs),
- cache,
- onSign,
- gitdir,
- ref,
- oid,
- note,
- force,
- author,
- committer,
- signingKey
- });
- } catch (err) {
- err.caller = "git.addNote";
- throw err;
- }
- }
- async function _addRemote({ fs, gitdir, remote, url, force }) {
- if (remote !== import_clean_git_ref.default.clean(remote)) {
- throw new InvalidRefNameError(remote, import_clean_git_ref.default.clean(remote));
- }
- const config = await GitConfigManager.get({ fs, gitdir });
- if (!force) {
- const remoteNames = await config.getSubsections("remote");
- if (remoteNames.includes(remote)) {
- if (url !== await config.get(`remote.${remote}.url`)) {
- throw new AlreadyExistsError("remote", remote);
- }
- }
- }
- await config.set(`remote.${remote}.url`, url);
- await config.set(`remote.${remote}.fetch`, `+refs/heads/*:refs/remotes/${remote}/*`);
- await GitConfigManager.save({ fs, gitdir, config });
- }
- async function addRemote({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- remote,
- url,
- force = false
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("remote", remote);
- assertParameter("url", url);
- return await _addRemote({
- fs: new FileSystem(fs),
- gitdir,
- remote,
- url,
- force
- });
- } catch (err) {
- err.caller = "git.addRemote";
- throw err;
- }
- }
- async function _annotatedTag({
- fs,
- cache,
- onSign,
- gitdir,
- ref,
- tagger,
- message = ref,
- gpgsig,
- object,
- signingKey,
- force = false
- }) {
- ref = ref.startsWith("refs/tags/") ? ref : `refs/tags/${ref}`;
- if (!force && await GitRefManager.exists({ fs, gitdir, ref })) {
- throw new AlreadyExistsError("tag", ref);
- }
- const oid = await GitRefManager.resolve({
- fs,
- gitdir,
- ref: object || "HEAD"
- });
- const { type } = await _readObject({ fs, cache, gitdir, oid });
- let tagObject = GitAnnotatedTag.from({
- object: oid,
- type,
- tag: ref.replace("refs/tags/", ""),
- tagger,
- message,
- gpgsig
- });
- if (signingKey) {
- tagObject = await GitAnnotatedTag.sign(tagObject, onSign, signingKey);
- }
- const value = await _writeObject({
- fs,
- gitdir,
- type: "tag",
- object: tagObject.toObject()
- });
- await GitRefManager.writeRef({ fs, gitdir, ref, value });
- }
- async function annotatedTag({
- fs: _fs,
- onSign,
- dir,
- gitdir = join(dir, ".git"),
- ref,
- tagger: _tagger,
- message = ref,
- gpgsig,
- object,
- signingKey,
- force = false,
- cache = {}
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- assertParameter("ref", ref);
- if (signingKey) {
- assertParameter("onSign", onSign);
- }
- const fs = new FileSystem(_fs);
- const tagger = await normalizeAuthorObject({ fs, gitdir, author: _tagger });
- if (!tagger)
- throw new MissingNameError("tagger");
- return await _annotatedTag({
- fs,
- cache,
- onSign,
- gitdir,
- ref,
- tagger,
- message,
- gpgsig,
- object,
- signingKey,
- force
- });
- } catch (err) {
- err.caller = "git.annotatedTag";
- throw err;
- }
- }
- async function _branch({
- fs,
- gitdir,
- ref,
- object,
- checkout: checkout2 = false,
- force = false
- }) {
- if (ref !== import_clean_git_ref.default.clean(ref)) {
- throw new InvalidRefNameError(ref, import_clean_git_ref.default.clean(ref));
- }
- const fullref = `refs/heads/${ref}`;
- if (!force) {
- const exist = await GitRefManager.exists({ fs, gitdir, ref: fullref });
- if (exist) {
- throw new AlreadyExistsError("branch", ref, false);
- }
- }
- let oid;
- try {
- oid = await GitRefManager.resolve({ fs, gitdir, ref: object || "HEAD" });
- } catch (e) {
- }
- if (oid) {
- await GitRefManager.writeRef({ fs, gitdir, ref: fullref, value: oid });
- }
- if (checkout2) {
- await GitRefManager.writeSymbolicRef({
- fs,
- gitdir,
- ref: "HEAD",
- value: fullref
- });
- }
- }
- async function branch({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- ref,
- object,
- checkout: checkout2 = false,
- force = false
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("ref", ref);
- return await _branch({
- fs: new FileSystem(fs),
- gitdir,
- ref,
- object,
- checkout: checkout2,
- force
- });
- } catch (err) {
- err.caller = "git.branch";
- throw err;
- }
- }
- function arrayRange(start, end) {
- const length = end - start;
- return Array.from({ length }, (_, i) => start + i);
- }
- var flat = typeof Array.prototype.flat === "undefined" ? (entries) => entries.reduce((acc, x) => acc.concat(x), []) : (entries) => entries.flat();
- var RunningMinimum = class {
- constructor() {
- this.value = null;
- }
- consider(value) {
- if (value === null || value === void 0)
- return;
- if (this.value === null) {
- this.value = value;
- } else if (value < this.value) {
- this.value = value;
- }
- }
- reset() {
- this.value = null;
- }
- };
- function* unionOfIterators(sets) {
- const min = new RunningMinimum();
- let minimum;
- const heads = [];
- const numsets = sets.length;
- for (let i = 0; i < numsets; i++) {
- heads[i] = sets[i].next().value;
- if (heads[i] !== void 0) {
- min.consider(heads[i]);
- }
- }
- if (min.value === null)
- return;
- while (true) {
- const result = [];
- minimum = min.value;
- min.reset();
- for (let i = 0; i < numsets; i++) {
- if (heads[i] !== void 0 && heads[i] === minimum) {
- result[i] = heads[i];
- heads[i] = sets[i].next().value;
- } else {
- result[i] = null;
- }
- if (heads[i] !== void 0) {
- min.consider(heads[i]);
- }
- }
- yield result;
- if (min.value === null)
- return;
- }
- }
- async function _walk({
- fs,
- cache,
- dir,
- gitdir,
- trees,
- map = async (_, entry) => entry,
- reduce = async (parent, children2) => {
- const flatten = flat(children2);
- if (parent !== void 0)
- flatten.unshift(parent);
- return flatten;
- },
- iterate = (walk2, children2) => Promise.all([...children2].map(walk2))
- }) {
- const walkers = trees.map((proxy) => proxy[GitWalkSymbol]({ fs, dir, gitdir, cache }));
- const root = new Array(walkers.length).fill(".");
- const range = arrayRange(0, walkers.length);
- const unionWalkerFromReaddir = async (entries) => {
- range.map((i) => {
- entries[i] = entries[i] && new walkers[i].ConstructEntry(entries[i]);
- });
- const subdirs = await Promise.all(range.map((i) => entries[i] ? walkers[i].readdir(entries[i]) : []));
- const iterators = subdirs.map((array) => array === null ? [] : array).map((array) => array[Symbol.iterator]());
- return {
- entries,
- children: unionOfIterators(iterators)
- };
- };
- const walk2 = async (root2) => {
- const { entries, children: children2 } = await unionWalkerFromReaddir(root2);
- const fullpath = entries.find((entry) => entry && entry._fullpath)._fullpath;
- const parent = await map(fullpath, entries);
- if (parent !== null) {
- let walkedChildren = await iterate(walk2, children2);
- walkedChildren = walkedChildren.filter((x) => x !== void 0);
- return reduce(parent, walkedChildren);
- }
- };
- return walk2(root);
- }
- var worthWalking = (filepath, root) => {
- if (filepath === "." || root == null || root.length === 0 || root === ".") {
- return true;
- }
- if (root.length >= filepath.length) {
- return root.startsWith(filepath);
- } else {
- return filepath.startsWith(root);
- }
- };
- async function _checkout({
- fs,
- cache,
- onProgress,
- dir,
- gitdir,
- remote,
- ref,
- filepaths,
- noCheckout,
- noUpdateHead,
- dryRun,
- force,
- track = true
- }) {
- let oid;
- try {
- oid = await GitRefManager.resolve({ fs, gitdir, ref });
- } catch (err) {
- if (ref === "HEAD")
- throw err;
- const remoteRef = `${remote}/${ref}`;
- oid = await GitRefManager.resolve({
- fs,
- gitdir,
- ref: remoteRef
- });
- if (track) {
- const config = await GitConfigManager.get({ fs, gitdir });
- await config.set(`branch.${ref}.remote`, remote);
- await config.set(`branch.${ref}.merge`, `refs/heads/${ref}`);
- await GitConfigManager.save({ fs, gitdir, config });
- }
- await GitRefManager.writeRef({
- fs,
- gitdir,
- ref: `refs/heads/${ref}`,
- value: oid
- });
- }
- if (!noCheckout) {
- let ops;
- try {
- ops = await analyze({
- fs,
- cache,
- onProgress,
- dir,
- gitdir,
- ref,
- force,
- filepaths
- });
- } catch (err) {
- if (err instanceof NotFoundError && err.data.what === oid) {
- throw new CommitNotFetchedError(ref, oid);
- } else {
- throw err;
- }
- }
- const conflicts2 = ops.filter(([method]) => method === "conflict").map(([method, fullpath]) => fullpath);
- if (conflicts2.length > 0) {
- throw new CheckoutConflictError(conflicts2);
- }
- const errors = ops.filter(([method]) => method === "error").map(([method, fullpath]) => fullpath);
- if (errors.length > 0) {
- throw new InternalError(errors.join(", "));
- }
- if (dryRun) {
- return;
- }
- let count = 0;
- const total = ops.length;
- await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) {
- await Promise.all(ops.filter(([method]) => method === "delete" || method === "delete-index").map(async function([method, fullpath]) {
- const filepath = `${dir}/${fullpath}`;
- if (method === "delete") {
- await fs.rm(filepath);
- }
- index2.delete({ filepath: fullpath });
- if (onProgress) {
- await onProgress({
- phase: "Updating workdir",
- loaded: ++count,
- total
- });
- }
- }));
- });
- await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) {
- for (const [method, fullpath] of ops) {
- if (method === "rmdir" || method === "rmdir-index") {
- const filepath = `${dir}/${fullpath}`;
- try {
- if (method === "rmdir-index") {
- index2.delete({ filepath: fullpath });
- }
- await fs.rmdir(filepath);
- if (onProgress) {
- await onProgress({
- phase: "Updating workdir",
- loaded: ++count,
- total
- });
- }
- } catch (e) {
- if (e.code === "ENOTEMPTY") {
- console.log(`Did not delete ${fullpath} because directory is not empty`);
- } else {
- throw e;
- }
- }
- }
- }
- });
- await Promise.all(ops.filter(([method]) => method === "mkdir" || method === "mkdir-index").map(async function([_, fullpath]) {
- const filepath = `${dir}/${fullpath}`;
- await fs.mkdir(filepath);
- if (onProgress) {
- await onProgress({
- phase: "Updating workdir",
- loaded: ++count,
- total
- });
- }
- }));
- await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) {
- await Promise.all(ops.filter(([method]) => method === "create" || method === "create-index" || method === "update" || method === "mkdir-index").map(async function([method, fullpath, oid2, mode, chmod]) {
- const filepath = `${dir}/${fullpath}`;
- try {
- if (method !== "create-index" && method !== "mkdir-index") {
- const { object } = await _readObject({ fs, cache, gitdir, oid: oid2 });
- if (chmod) {
- await fs.rm(filepath);
- }
- if (mode === 33188) {
- await fs.write(filepath, object);
- } else if (mode === 33261) {
- await fs.write(filepath, object, { mode: 511 });
- } else if (mode === 40960) {
- await fs.writelink(filepath, object);
- } else {
- throw new InternalError(`Invalid mode 0o${mode.toString(8)} detected in blob ${oid2}`);
- }
- }
- const stats = await fs.lstat(filepath);
- if (mode === 33261) {
- stats.mode = 493;
- }
- if (method === "mkdir-index") {
- stats.mode = 57344;
- }
- index2.insert({
- filepath: fullpath,
- stats,
- oid: oid2
- });
- if (onProgress) {
- await onProgress({
- phase: "Updating workdir",
- loaded: ++count,
- total
- });
- }
- } catch (e) {
- console.log(e);
- }
- }));
- });
- }
- if (!noUpdateHead) {
- const fullRef = await GitRefManager.expand({ fs, gitdir, ref });
- if (fullRef.startsWith("refs/heads")) {
- await GitRefManager.writeSymbolicRef({
- fs,
- gitdir,
- ref: "HEAD",
- value: fullRef
- });
- } else {
- await GitRefManager.writeRef({ fs, gitdir, ref: "HEAD", value: oid });
- }
- }
- }
- async function analyze({
- fs,
- cache,
- onProgress,
- dir,
- gitdir,
- ref,
- force,
- filepaths
- }) {
- let count = 0;
- return _walk({
- fs,
- cache,
- dir,
- gitdir,
- trees: [TREE({ ref }), WORKDIR(), STAGE()],
- map: async function(fullpath, [commit2, workdir, stage]) {
- if (fullpath === ".")
- return;
- if (filepaths && !filepaths.some((base) => worthWalking(fullpath, base))) {
- return null;
- }
- if (onProgress) {
- await onProgress({ phase: "Analyzing workdir", loaded: ++count });
- }
- const key2 = [!!stage, !!commit2, !!workdir].map(Number).join("");
- switch (key2) {
- case "000":
- return;
- case "001":
- if (force && filepaths && filepaths.includes(fullpath)) {
- return ["delete", fullpath];
- }
- return;
- case "010": {
- switch (await commit2.type()) {
- case "tree": {
- return ["mkdir", fullpath];
- }
- case "blob": {
- return [
- "create",
- fullpath,
- await commit2.oid(),
- await commit2.mode()
- ];
- }
- case "commit": {
- return [
- "mkdir-index",
- fullpath,
- await commit2.oid(),
- await commit2.mode()
- ];
- }
- default: {
- return [
- "error",
- `new entry Unhandled type ${await commit2.type()}`
- ];
- }
- }
- }
- case "011": {
- switch (`${await commit2.type()}-${await workdir.type()}`) {
- case "tree-tree": {
- return;
- }
- case "tree-blob":
- case "blob-tree": {
- return ["conflict", fullpath];
- }
- case "blob-blob": {
- if (await commit2.oid() !== await workdir.oid()) {
- if (force) {
- return [
- "update",
- fullpath,
- await commit2.oid(),
- await commit2.mode(),
- await commit2.mode() !== await workdir.mode()
- ];
- } else {
- return ["conflict", fullpath];
- }
- } else {
- if (await commit2.mode() !== await workdir.mode()) {
- if (force) {
- return [
- "update",
- fullpath,
- await commit2.oid(),
- await commit2.mode(),
- true
- ];
- } else {
- return ["conflict", fullpath];
- }
- } else {
- return [
- "create-index",
- fullpath,
- await commit2.oid(),
- await commit2.mode()
- ];
- }
- }
- }
- case "commit-tree": {
- return;
- }
- case "commit-blob": {
- return ["conflict", fullpath];
- }
- default: {
- return ["error", `new entry Unhandled type ${commit2.type}`];
- }
- }
- }
- case "100": {
- return ["delete-index", fullpath];
- }
- case "101": {
- switch (await stage.type()) {
- case "tree": {
- return ["rmdir", fullpath];
- }
- case "blob": {
- if (await stage.oid() !== await workdir.oid()) {
- if (force) {
- return ["delete", fullpath];
- } else {
- return ["conflict", fullpath];
- }
- } else {
- return ["delete", fullpath];
- }
- }
- case "commit": {
- return ["rmdir-index", fullpath];
- }
- default: {
- return [
- "error",
- `delete entry Unhandled type ${await stage.type()}`
- ];
- }
- }
- }
- case "110":
- case "111": {
- switch (`${await stage.type()}-${await commit2.type()}`) {
- case "tree-tree": {
- return;
- }
- case "blob-blob": {
- if (await stage.oid() === await commit2.oid() && await stage.mode() === await commit2.mode() && !force) {
- return;
- }
- if (workdir) {
- if (await workdir.oid() !== await stage.oid() && await workdir.oid() !== await commit2.oid()) {
- if (force) {
- return [
- "update",
- fullpath,
- await commit2.oid(),
- await commit2.mode(),
- await commit2.mode() !== await workdir.mode()
- ];
- } else {
- return ["conflict", fullpath];
- }
- }
- } else if (force) {
- return [
- "update",
- fullpath,
- await commit2.oid(),
- await commit2.mode(),
- await commit2.mode() !== await stage.mode()
- ];
- }
- if (await commit2.mode() !== await stage.mode()) {
- return [
- "update",
- fullpath,
- await commit2.oid(),
- await commit2.mode(),
- true
- ];
- }
- if (await commit2.oid() !== await stage.oid()) {
- return [
- "update",
- fullpath,
- await commit2.oid(),
- await commit2.mode(),
- false
- ];
- } else {
- return;
- }
- }
- case "tree-blob": {
- return ["update-dir-to-blob", fullpath, await commit2.oid()];
- }
- case "blob-tree": {
- return ["update-blob-to-tree", fullpath];
- }
- case "commit-commit": {
- return [
- "mkdir-index",
- fullpath,
- await commit2.oid(),
- await commit2.mode()
- ];
- }
- default: {
- return [
- "error",
- `update entry Unhandled type ${await stage.type()}-${await commit2.type()}`
- ];
- }
- }
- }
- }
- },
- reduce: async function(parent, children2) {
- children2 = flat(children2);
- if (!parent) {
- return children2;
- } else if (parent && parent[0] === "rmdir") {
- children2.push(parent);
- return children2;
- } else {
- children2.unshift(parent);
- return children2;
- }
- }
- });
- }
- async function checkout({
- fs,
- onProgress,
- dir,
- gitdir = join(dir, ".git"),
- remote = "origin",
- ref: _ref,
- filepaths,
- noCheckout = false,
- noUpdateHead = _ref === void 0,
- dryRun = false,
- force = false,
- track = true,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("dir", dir);
- assertParameter("gitdir", gitdir);
- const ref = _ref || "HEAD";
- return await _checkout({
- fs: new FileSystem(fs),
- cache,
- onProgress,
- dir,
- gitdir,
- remote,
- ref,
- filepaths,
- noCheckout,
- noUpdateHead,
- dryRun,
- force,
- track
- });
- } catch (err) {
- err.caller = "git.checkout";
- throw err;
- }
- }
- var abbreviateRx = new RegExp("^refs/(heads/|tags/|remotes/)?(.*)");
- function abbreviateRef(ref) {
- const match = abbreviateRx.exec(ref);
- if (match) {
- if (match[1] === "remotes/" && ref.endsWith("/HEAD")) {
- return match[2].slice(0, -5);
- } else {
- return match[2];
- }
- }
- return ref;
- }
- async function _currentBranch({
- fs,
- gitdir,
- fullname = false,
- test = false
- }) {
- const ref = await GitRefManager.resolve({
- fs,
- gitdir,
- ref: "HEAD",
- depth: 2
- });
- if (test) {
- try {
- await GitRefManager.resolve({ fs, gitdir, ref });
- } catch (_) {
- return;
- }
- }
- if (!ref.startsWith("refs/"))
- return;
- return fullname ? ref : abbreviateRef(ref);
- }
- function translateSSHtoHTTP(url) {
- url = url.replace(/^git@([^:]+):/, "https://$1/");
- url = url.replace(/^ssh:\/\//, "https://");
- return url;
- }
- function calculateBasicAuthHeader({ username = "", password = "" }) {
- return `Basic ${Buffer2.from(`${username}:${password}`).toString("base64")}`;
- }
- async function forAwait(iterable, cb) {
- const iter = getIterator(iterable);
- while (true) {
- const { value, done } = await iter.next();
- if (value)
- await cb(value);
- if (done)
- break;
- }
- if (iter.return)
- iter.return();
- }
- async function collect(iterable) {
- let size = 0;
- const buffers = [];
- await forAwait(iterable, (value) => {
- buffers.push(value);
- size += value.byteLength;
- });
- const result = new Uint8Array(size);
- let nextIndex = 0;
- for (const buffer2 of buffers) {
- result.set(buffer2, nextIndex);
- nextIndex += buffer2.byteLength;
- }
- return result;
- }
- function extractAuthFromUrl(url) {
- let userpass = url.match(/^https?:\/\/([^/]+)@/);
- if (userpass == null)
- return { url, auth: {} };
- userpass = userpass[1];
- const [username, password] = userpass.split(":");
- url = url.replace(`${userpass}@`, "");
- return { url, auth: { username, password } };
- }
- function padHex(b, n) {
- const s = n.toString(16);
- return "0".repeat(b - s.length) + s;
- }
- var GitPktLine = class {
- static flush() {
- return Buffer2.from("0000", "utf8");
- }
- static delim() {
- return Buffer2.from("0001", "utf8");
- }
- static encode(line) {
- if (typeof line === "string") {
- line = Buffer2.from(line);
- }
- const length = line.length + 4;
- const hexlength = padHex(4, length);
- return Buffer2.concat([Buffer2.from(hexlength, "utf8"), line]);
- }
- static streamReader(stream) {
- const reader = new StreamReader(stream);
- return async function read() {
- try {
- let length = await reader.read(4);
- if (length == null)
- return true;
- length = parseInt(length.toString("utf8"), 16);
- if (length === 0)
- return null;
- if (length === 1)
- return null;
- const buffer2 = await reader.read(length - 4);
- if (buffer2 == null)
- return true;
- return buffer2;
- } catch (err) {
- console.log("error", err);
- return true;
- }
- };
- }
- };
- async function parseCapabilitiesV2(read) {
- const capabilities2 = {};
- let line;
- while (true) {
- line = await read();
- if (line === true)
- break;
- if (line === null)
- continue;
- line = line.toString("utf8").replace(/\n$/, "");
- const i = line.indexOf("=");
- if (i > -1) {
- const key2 = line.slice(0, i);
- const value = line.slice(i + 1);
- capabilities2[key2] = value;
- } else {
- capabilities2[line] = true;
- }
- }
- return { protocolVersion: 2, capabilities2 };
- }
- async function parseRefsAdResponse(stream, { service }) {
- const capabilities = new Set();
- const refs = new Map();
- const symrefs = new Map();
- const read = GitPktLine.streamReader(stream);
- let lineOne = await read();
- while (lineOne === null)
- lineOne = await read();
- if (lineOne === true)
- throw new EmptyServerResponseError();
- if (lineOne.includes("version 2")) {
- return parseCapabilitiesV2(read);
- }
- if (lineOne.toString("utf8").replace(/\n$/, "") !== `# service=${service}`) {
- throw new ParseError(`# service=${service}\\n`, lineOne.toString("utf8"));
- }
- let lineTwo = await read();
- while (lineTwo === null)
- lineTwo = await read();
- if (lineTwo === true)
- return { capabilities, refs, symrefs };
- lineTwo = lineTwo.toString("utf8");
- if (lineTwo.includes("version 2")) {
- return parseCapabilitiesV2(read);
- }
- const [firstRef, capabilitiesLine] = splitAndAssert(lineTwo, "\0", "\\x00");
- capabilitiesLine.split(" ").map((x) => capabilities.add(x));
- const [ref, name] = splitAndAssert(firstRef, " ", " ");
- refs.set(name, ref);
- while (true) {
- const line = await read();
- if (line === true)
- break;
- if (line !== null) {
- const [ref2, name2] = splitAndAssert(line.toString("utf8"), " ", " ");
- refs.set(name2, ref2);
- }
- }
- for (const cap of capabilities) {
- if (cap.startsWith("symref=")) {
- const m = cap.match(/symref=([^:]+):(.*)/);
- if (m.length === 3) {
- symrefs.set(m[1], m[2]);
- }
- }
- }
- return { protocolVersion: 1, capabilities, refs, symrefs };
- }
- function splitAndAssert(line, sep2, expected) {
- const split = line.trim().split(sep2);
- if (split.length !== 2) {
- throw new ParseError(`Two strings separated by '${expected}'`, line.toString("utf8"));
- }
- return split;
- }
- var corsProxify = (corsProxy, url) => corsProxy.endsWith("?") ? `${corsProxy}${url}` : `${corsProxy}/${url.replace(/^https?:\/\//, "")}`;
- var updateHeaders = (headers, auth) => {
- if (auth.username || auth.password) {
- headers.Authorization = calculateBasicAuthHeader(auth);
- }
- if (auth.headers) {
- Object.assign(headers, auth.headers);
- }
- };
- var stringifyBody = async (res) => {
- try {
- const data = Buffer2.from(await collect(res.body));
- const response = data.toString("utf8");
- const preview = response.length < 256 ? response : response.slice(0, 256) + "...";
- return { preview, response, data };
- } catch (e) {
- return {};
- }
- };
- var GitRemoteHTTP = class {
- static async capabilities() {
- return ["discover", "connect"];
- }
- static async discover({
- http,
- onProgress,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- corsProxy,
- service,
- url: _origUrl,
- headers,
- protocolVersion
- }) {
- let { url, auth } = extractAuthFromUrl(_origUrl);
- const proxifiedURL = corsProxy ? corsProxify(corsProxy, url) : url;
- if (auth.username || auth.password) {
- headers.Authorization = calculateBasicAuthHeader(auth);
- }
- if (protocolVersion === 2) {
- headers["Git-Protocol"] = "version=2";
- }
- let res;
- let tryAgain;
- let providedAuthBefore = false;
- do {
- res = await http.request({
- onProgress,
- method: "GET",
- url: `${proxifiedURL}/info/refs?service=${service}`,
- headers
- });
- tryAgain = false;
- if (res.statusCode === 401 || res.statusCode === 203) {
- const getAuth = providedAuthBefore ? onAuthFailure : onAuth;
- if (getAuth) {
- auth = await getAuth(url, {
- ...auth,
- headers: { ...headers }
- });
- if (auth && auth.cancel) {
- throw new UserCanceledError();
- } else if (auth) {
- updateHeaders(headers, auth);
- providedAuthBefore = true;
- tryAgain = true;
- }
- }
- } else if (res.statusCode === 200 && providedAuthBefore && onAuthSuccess) {
- await onAuthSuccess(url, auth);
- }
- } while (tryAgain);
- if (res.statusCode !== 200) {
- const { response } = await stringifyBody(res);
- throw new HttpError(res.statusCode, res.statusMessage, response);
- }
- if (res.headers["content-type"] === `application/x-${service}-advertisement`) {
- const remoteHTTP = await parseRefsAdResponse(res.body, { service });
- remoteHTTP.auth = auth;
- return remoteHTTP;
- } else {
- const { preview, response, data } = await stringifyBody(res);
- try {
- const remoteHTTP = await parseRefsAdResponse([data], { service });
- remoteHTTP.auth = auth;
- return remoteHTTP;
- } catch (e) {
- throw new SmartHttpError(preview, response);
- }
- }
- }
- static async connect({
- http,
- onProgress,
- corsProxy,
- service,
- url,
- auth,
- body,
- headers
- }) {
- const urlAuth = extractAuthFromUrl(url);
- if (urlAuth)
- url = urlAuth.url;
- if (corsProxy)
- url = corsProxify(corsProxy, url);
- headers["content-type"] = `application/x-${service}-request`;
- headers.accept = `application/x-${service}-result`;
- updateHeaders(headers, auth);
- const res = await http.request({
- onProgress,
- method: "POST",
- url: `${url}/${service}`,
- body,
- headers
- });
- if (res.statusCode !== 200) {
- const { response } = stringifyBody(res);
- throw new HttpError(res.statusCode, res.statusMessage, response);
- }
- return res;
- }
- };
- function parseRemoteUrl({ url }) {
- if (url.startsWith("git@")) {
- return {
- transport: "ssh",
- address: url
- };
- }
- const matches = url.match(/(\w+)(:\/\/|::)(.*)/);
- if (matches === null)
- return;
- if (matches[2] === "://") {
- return {
- transport: matches[1],
- address: matches[0]
- };
- }
- if (matches[2] === "::") {
- return {
- transport: matches[1],
- address: matches[3]
- };
- }
- }
- var GitRemoteManager = class {
- static getRemoteHelperFor({ url }) {
- const remoteHelpers = new Map();
- remoteHelpers.set("http", GitRemoteHTTP);
- remoteHelpers.set("https", GitRemoteHTTP);
- const parts = parseRemoteUrl({ url });
- if (!parts) {
- throw new UrlParseError(url);
- }
- if (remoteHelpers.has(parts.transport)) {
- return remoteHelpers.get(parts.transport);
- }
- throw new UnknownTransportError(url, parts.transport, parts.transport === "ssh" ? translateSSHtoHTTP(url) : void 0);
- }
- };
- var lock$1 = null;
- var GitShallowManager = class {
- static async read({ fs, gitdir }) {
- if (lock$1 === null)
- lock$1 = new import_async_lock.default();
- const filepath = join(gitdir, "shallow");
- const oids = new Set();
- await lock$1.acquire(filepath, async function() {
- const text2 = await fs.read(filepath, { encoding: "utf8" });
- if (text2 === null)
- return oids;
- if (text2.trim() === "")
- return oids;
- text2.trim().split("\n").map((oid) => oids.add(oid));
- });
- return oids;
- }
- static async write({ fs, gitdir, oids }) {
- if (lock$1 === null)
- lock$1 = new import_async_lock.default();
- const filepath = join(gitdir, "shallow");
- if (oids.size > 0) {
- const text2 = [...oids].join("\n") + "\n";
- await lock$1.acquire(filepath, async function() {
- await fs.write(filepath, text2, {
- encoding: "utf8"
- });
- });
- } else {
- await lock$1.acquire(filepath, async function() {
- await fs.rm(filepath);
- });
- }
- }
- };
- async function hasObjectLoose({ fs, gitdir, oid }) {
- const source = `objects/${oid.slice(0, 2)}/${oid.slice(2)}`;
- return fs.exists(`${gitdir}/${source}`);
- }
- async function hasObjectPacked({
- fs,
- cache,
- gitdir,
- oid,
- getExternalRefDelta
- }) {
- let list = await fs.readdir(join(gitdir, "objects/pack"));
- list = list.filter((x) => x.endsWith(".idx"));
- for (const filename of list) {
- const indexFile = `${gitdir}/objects/pack/${filename}`;
- const p = await readPackIndex({
- fs,
- cache,
- filename: indexFile,
- getExternalRefDelta
- });
- if (p.error)
- throw new InternalError(p.error);
- if (p.offsets.has(oid)) {
- return true;
- }
- }
- return false;
- }
- async function hasObject({
- fs,
- cache,
- gitdir,
- oid,
- format = "content"
- }) {
- const getExternalRefDelta = (oid2) => _readObject({ fs, cache, gitdir, oid: oid2 });
- let result = await hasObjectLoose({ fs, gitdir, oid });
- if (!result) {
- result = await hasObjectPacked({
- fs,
- cache,
- gitdir,
- oid,
- getExternalRefDelta
- });
- }
- return result;
- }
- function emptyPackfile(pack) {
- const pheader = "5041434b";
- const version2 = "00000002";
- const obCount = "00000000";
- const header = pheader + version2 + obCount;
- return pack.slice(0, 12).toString("hex") === header;
- }
- function filterCapabilities(server, client) {
- const serverNames = server.map((cap) => cap.split("=", 1)[0]);
- return client.filter((cap) => {
- const name = cap.split("=", 1)[0];
- return serverNames.includes(name);
- });
- }
- var pkg = {
- name: "isomorphic-git",
- version: "1.21.0",
- agent: "git/isomorphic-git@1.21.0"
- };
- var FIFO = class {
- constructor() {
- this._queue = [];
- }
- write(chunk) {
- if (this._ended) {
- throw Error("You cannot write to a FIFO that has already been ended!");
- }
- if (this._waiting) {
- const resolve = this._waiting;
- this._waiting = null;
- resolve({ value: chunk });
- } else {
- this._queue.push(chunk);
- }
- }
- end() {
- this._ended = true;
- if (this._waiting) {
- const resolve = this._waiting;
- this._waiting = null;
- resolve({ done: true });
- }
- }
- destroy(err) {
- this._ended = true;
- this.error = err;
- }
- async next() {
- if (this._queue.length > 0) {
- return { value: this._queue.shift() };
- }
- if (this._ended) {
- return { done: true };
- }
- if (this._waiting) {
- throw Error("You cannot call read until the previous call to read has returned!");
- }
- return new Promise((resolve) => {
- this._waiting = resolve;
- });
- }
- };
- function findSplit(str) {
- const r = str.indexOf("\r");
- const n = str.indexOf("\n");
- if (r === -1 && n === -1)
- return -1;
- if (r === -1)
- return n + 1;
- if (n === -1)
- return r + 1;
- if (n === r + 1)
- return n + 1;
- return Math.min(r, n) + 1;
- }
- function splitLines(input) {
- const output = new FIFO();
- let tmp = "";
- (async () => {
- await forAwait(input, (chunk) => {
- chunk = chunk.toString("utf8");
- tmp += chunk;
- while (true) {
- const i = findSplit(tmp);
- if (i === -1)
- break;
- output.write(tmp.slice(0, i));
- tmp = tmp.slice(i);
- }
- });
- if (tmp.length > 0) {
- output.write(tmp);
- }
- output.end();
- })();
- return output;
- }
- var GitSideBand = class {
- static demux(input) {
- const read = GitPktLine.streamReader(input);
- const packetlines = new FIFO();
- const packfile = new FIFO();
- const progress = new FIFO();
- const nextBit = async function() {
- const line = await read();
- if (line === null)
- return nextBit();
- if (line === true) {
- packetlines.end();
- progress.end();
- packfile.end();
- return;
- }
- switch (line[0]) {
- case 1: {
- packfile.write(line.slice(1));
- break;
- }
- case 2: {
- progress.write(line.slice(1));
- break;
- }
- case 3: {
- const error = line.slice(1);
- progress.write(error);
- packfile.destroy(new Error(error.toString("utf8")));
- return;
- }
- default: {
- packetlines.write(line.slice(0));
- }
- }
- nextBit();
- };
- nextBit();
- return {
- packetlines,
- packfile,
- progress
- };
- }
- };
- async function parseUploadPackResponse(stream) {
- const { packetlines, packfile, progress } = GitSideBand.demux(stream);
- const shallows = [];
- const unshallows = [];
- const acks = [];
- let nak = false;
- let done = false;
- return new Promise((resolve, reject) => {
- forAwait(packetlines, (data) => {
- const line = data.toString("utf8").trim();
- if (line.startsWith("shallow")) {
- const oid = line.slice(-41).trim();
- if (oid.length !== 40) {
- reject(new InvalidOidError(oid));
- }
- shallows.push(oid);
- } else if (line.startsWith("unshallow")) {
- const oid = line.slice(-41).trim();
- if (oid.length !== 40) {
- reject(new InvalidOidError(oid));
- }
- unshallows.push(oid);
- } else if (line.startsWith("ACK")) {
- const [, oid, status2] = line.split(" ");
- acks.push({ oid, status: status2 });
- if (!status2)
- done = true;
- } else if (line.startsWith("NAK")) {
- nak = true;
- done = true;
- }
- if (done) {
- resolve({ shallows, unshallows, acks, nak, packfile, progress });
- }
- });
- });
- }
- function writeUploadPackRequest({
- capabilities = [],
- wants = [],
- haves = [],
- shallows = [],
- depth = null,
- since = null,
- exclude = []
- }) {
- const packstream = [];
- wants = [...new Set(wants)];
- let firstLineCapabilities = ` ${capabilities.join(" ")}`;
- for (const oid of wants) {
- packstream.push(GitPktLine.encode(`want ${oid}${firstLineCapabilities}
- `));
- firstLineCapabilities = "";
- }
- for (const oid of shallows) {
- packstream.push(GitPktLine.encode(`shallow ${oid}
- `));
- }
- if (depth !== null) {
- packstream.push(GitPktLine.encode(`deepen ${depth}
- `));
- }
- if (since !== null) {
- packstream.push(GitPktLine.encode(`deepen-since ${Math.floor(since.valueOf() / 1e3)}
- `));
- }
- for (const oid of exclude) {
- packstream.push(GitPktLine.encode(`deepen-not ${oid}
- `));
- }
- packstream.push(GitPktLine.flush());
- for (const oid of haves) {
- packstream.push(GitPktLine.encode(`have ${oid}
- `));
- }
- packstream.push(GitPktLine.encode(`done
- `));
- return packstream;
- }
- async function _fetch({
- fs,
- cache,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- gitdir,
- ref: _ref,
- remoteRef: _remoteRef,
- remote: _remote,
- url: _url,
- corsProxy,
- depth = null,
- since = null,
- exclude = [],
- relative = false,
- tags = false,
- singleBranch = false,
- headers = {},
- prune = false,
- pruneTags = false
- }) {
- const ref = _ref || await _currentBranch({ fs, gitdir, test: true });
- const config = await GitConfigManager.get({ fs, gitdir });
- const remote = _remote || ref && await config.get(`branch.${ref}.remote`) || "origin";
- const url = _url || await config.get(`remote.${remote}.url`);
- if (typeof url === "undefined") {
- throw new MissingParameterError("remote OR url");
- }
- const remoteRef = _remoteRef || ref && await config.get(`branch.${ref}.merge`) || _ref || "HEAD";
- if (corsProxy === void 0) {
- corsProxy = await config.get("http.corsProxy");
- }
- const GitRemoteHTTP2 = GitRemoteManager.getRemoteHelperFor({ url });
- const remoteHTTP = await GitRemoteHTTP2.discover({
- http,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- corsProxy,
- service: "git-upload-pack",
- url,
- headers,
- protocolVersion: 1
- });
- const auth = remoteHTTP.auth;
- const remoteRefs = remoteHTTP.refs;
- if (remoteRefs.size === 0) {
- return {
- defaultBranch: null,
- fetchHead: null,
- fetchHeadDescription: null
- };
- }
- if (depth !== null && !remoteHTTP.capabilities.has("shallow")) {
- throw new RemoteCapabilityError("shallow", "depth");
- }
- if (since !== null && !remoteHTTP.capabilities.has("deepen-since")) {
- throw new RemoteCapabilityError("deepen-since", "since");
- }
- if (exclude.length > 0 && !remoteHTTP.capabilities.has("deepen-not")) {
- throw new RemoteCapabilityError("deepen-not", "exclude");
- }
- if (relative === true && !remoteHTTP.capabilities.has("deepen-relative")) {
- throw new RemoteCapabilityError("deepen-relative", "relative");
- }
- const { oid, fullref } = GitRefManager.resolveAgainstMap({
- ref: remoteRef,
- map: remoteRefs
- });
- for (const remoteRef2 of remoteRefs.keys()) {
- if (remoteRef2 === fullref || remoteRef2 === "HEAD" || remoteRef2.startsWith("refs/heads/") || tags && remoteRef2.startsWith("refs/tags/")) {
- continue;
- }
- remoteRefs.delete(remoteRef2);
- }
- const capabilities = filterCapabilities([...remoteHTTP.capabilities], [
- "multi_ack_detailed",
- "no-done",
- "side-band-64k",
- "ofs-delta",
- `agent=${pkg.agent}`
- ]);
- if (relative)
- capabilities.push("deepen-relative");
- const wants = singleBranch ? [oid] : remoteRefs.values();
- const haveRefs = singleBranch ? [ref] : await GitRefManager.listRefs({
- fs,
- gitdir,
- filepath: `refs`
- });
- let haves = [];
- for (let ref2 of haveRefs) {
- try {
- ref2 = await GitRefManager.expand({ fs, gitdir, ref: ref2 });
- const oid2 = await GitRefManager.resolve({ fs, gitdir, ref: ref2 });
- if (await hasObject({ fs, cache, gitdir, oid: oid2 })) {
- haves.push(oid2);
- }
- } catch (err) {
- }
- }
- haves = [...new Set(haves)];
- const oids = await GitShallowManager.read({ fs, gitdir });
- const shallows = remoteHTTP.capabilities.has("shallow") ? [...oids] : [];
- const packstream = writeUploadPackRequest({
- capabilities,
- wants,
- haves,
- shallows,
- depth,
- since,
- exclude
- });
- const packbuffer = Buffer2.from(await collect(packstream));
- const raw = await GitRemoteHTTP2.connect({
- http,
- onProgress,
- corsProxy,
- service: "git-upload-pack",
- url,
- auth,
- body: [packbuffer],
- headers
- });
- const response = await parseUploadPackResponse(raw.body);
- if (raw.headers) {
- response.headers = raw.headers;
- }
- for (const oid2 of response.shallows) {
- if (!oids.has(oid2)) {
- try {
- const { object } = await _readObject({ fs, cache, gitdir, oid: oid2 });
- const commit2 = new GitCommit(object);
- const hasParents = await Promise.all(commit2.headers().parent.map((oid3) => hasObject({ fs, cache, gitdir, oid: oid3 })));
- const haveAllParents = hasParents.length === 0 || hasParents.every((has) => has);
- if (!haveAllParents) {
- oids.add(oid2);
- }
- } catch (err) {
- oids.add(oid2);
- }
- }
- }
- for (const oid2 of response.unshallows) {
- oids.delete(oid2);
- }
- await GitShallowManager.write({ fs, gitdir, oids });
- if (singleBranch) {
- const refs = new Map([[fullref, oid]]);
- const symrefs = new Map();
- let bail = 10;
- let key2 = fullref;
- while (bail--) {
- const value = remoteHTTP.symrefs.get(key2);
- if (value === void 0)
- break;
- symrefs.set(key2, value);
- key2 = value;
- }
- const realRef = remoteRefs.get(key2);
- if (realRef) {
- refs.set(key2, realRef);
- }
- const { pruned } = await GitRefManager.updateRemoteRefs({
- fs,
- gitdir,
- remote,
- refs,
- symrefs,
- tags,
- prune
- });
- if (prune) {
- response.pruned = pruned;
- }
- } else {
- const { pruned } = await GitRefManager.updateRemoteRefs({
- fs,
- gitdir,
- remote,
- refs: remoteRefs,
- symrefs: remoteHTTP.symrefs,
- tags,
- prune,
- pruneTags
- });
- if (prune) {
- response.pruned = pruned;
- }
- }
- response.HEAD = remoteHTTP.symrefs.get("HEAD");
- if (response.HEAD === void 0) {
- const { oid: oid2 } = GitRefManager.resolveAgainstMap({
- ref: "HEAD",
- map: remoteRefs
- });
- for (const [key2, value] of remoteRefs.entries()) {
- if (key2 !== "HEAD" && value === oid2) {
- response.HEAD = key2;
- break;
- }
- }
- }
- const noun = fullref.startsWith("refs/tags") ? "tag" : "branch";
- response.FETCH_HEAD = {
- oid,
- description: `${noun} '${abbreviateRef(fullref)}' of ${url}`
- };
- if (onProgress || onMessage) {
- const lines = splitLines(response.progress);
- forAwait(lines, async (line) => {
- if (onMessage)
- await onMessage(line);
- if (onProgress) {
- const matches = line.match(/([^:]*).*\((\d+?)\/(\d+?)\)/);
- if (matches) {
- await onProgress({
- phase: matches[1].trim(),
- loaded: parseInt(matches[2], 10),
- total: parseInt(matches[3], 10)
- });
- }
- }
- });
- }
- const packfile = Buffer2.from(await collect(response.packfile));
- const packfileSha = packfile.slice(-20).toString("hex");
- const res = {
- defaultBranch: response.HEAD,
- fetchHead: response.FETCH_HEAD.oid,
- fetchHeadDescription: response.FETCH_HEAD.description
- };
- if (response.headers) {
- res.headers = response.headers;
- }
- if (prune) {
- res.pruned = response.pruned;
- }
- if (packfileSha !== "" && !emptyPackfile(packfile)) {
- res.packfile = `objects/pack/pack-${packfileSha}.pack`;
- const fullpath = join(gitdir, res.packfile);
- await fs.write(fullpath, packfile);
- const getExternalRefDelta = (oid2) => _readObject({ fs, cache, gitdir, oid: oid2 });
- const idx = await GitPackIndex.fromPack({
- pack: packfile,
- getExternalRefDelta,
- onProgress
- });
- await fs.write(fullpath.replace(/\.pack$/, ".idx"), await idx.toBuffer());
- }
- return res;
- }
- async function _init({
- fs,
- bare = false,
- dir,
- gitdir = bare ? dir : join(dir, ".git"),
- defaultBranch = "master"
- }) {
- if (await fs.exists(gitdir + "/config"))
- return;
- let folders = [
- "hooks",
- "info",
- "objects/info",
- "objects/pack",
- "refs/heads",
- "refs/tags"
- ];
- folders = folders.map((dir2) => gitdir + "/" + dir2);
- for (const folder of folders) {
- await fs.mkdir(folder);
- }
- await fs.write(gitdir + "/config", `[core]
- repositoryformatversion = 0
- filemode = false
- bare = ${bare}
- ` + (bare ? "" : " logallrefupdates = true\n") + " symlinks = false\n ignorecase = true\n");
- await fs.write(gitdir + "/HEAD", `ref: refs/heads/${defaultBranch}
- `);
- }
- async function _clone({
- fs,
- cache,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- dir,
- gitdir,
- url,
- corsProxy,
- ref,
- remote,
- depth,
- since,
- exclude,
- relative,
- singleBranch,
- noCheckout,
- noTags,
- headers
- }) {
- try {
- await _init({ fs, gitdir });
- await _addRemote({ fs, gitdir, remote, url, force: false });
- if (corsProxy) {
- const config = await GitConfigManager.get({ fs, gitdir });
- await config.set(`http.corsProxy`, corsProxy);
- await GitConfigManager.save({ fs, gitdir, config });
- }
- const { defaultBranch, fetchHead } = await _fetch({
- fs,
- cache,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- gitdir,
- ref,
- remote,
- corsProxy,
- depth,
- since,
- exclude,
- relative,
- singleBranch,
- headers,
- tags: !noTags
- });
- if (fetchHead === null)
- return;
- ref = ref || defaultBranch;
- ref = ref.replace("refs/heads/", "");
- await _checkout({
- fs,
- cache,
- onProgress,
- dir,
- gitdir,
- ref,
- remote,
- noCheckout
- });
- } catch (err) {
- await fs.rmdir(gitdir, { recursive: true, maxRetries: 10 }).catch(() => void 0);
- throw err;
- }
- }
- async function clone({
- fs,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- dir,
- gitdir = join(dir, ".git"),
- url,
- corsProxy = void 0,
- ref = void 0,
- remote = "origin",
- depth = void 0,
- since = void 0,
- exclude = [],
- relative = false,
- singleBranch = false,
- noCheckout = false,
- noTags = false,
- headers = {},
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("http", http);
- assertParameter("gitdir", gitdir);
- if (!noCheckout) {
- assertParameter("dir", dir);
- }
- assertParameter("url", url);
- return await _clone({
- fs: new FileSystem(fs),
- cache,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- dir,
- gitdir,
- url,
- corsProxy,
- ref,
- remote,
- depth,
- since,
- exclude,
- relative,
- singleBranch,
- noCheckout,
- noTags,
- headers
- });
- } catch (err) {
- err.caller = "git.clone";
- throw err;
- }
- }
- async function commit({
- fs: _fs,
- onSign,
- dir,
- gitdir = join(dir, ".git"),
- message,
- author: _author,
- committer: _committer,
- signingKey,
- dryRun = false,
- noUpdateBranch = false,
- ref,
- parent,
- tree,
- cache = {}
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("message", message);
- if (signingKey) {
- assertParameter("onSign", onSign);
- }
- const fs = new FileSystem(_fs);
- const author = await normalizeAuthorObject({ fs, gitdir, author: _author });
- if (!author)
- throw new MissingNameError("author");
- const committer = await normalizeCommitterObject({
- fs,
- gitdir,
- author,
- committer: _committer
- });
- if (!committer)
- throw new MissingNameError("committer");
- return await _commit({
- fs,
- cache,
- onSign,
- gitdir,
- message,
- author,
- committer,
- signingKey,
- dryRun,
- noUpdateBranch,
- ref,
- parent,
- tree
- });
- } catch (err) {
- err.caller = "git.commit";
- throw err;
- }
- }
- async function currentBranch({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- fullname = false,
- test = false
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- return await _currentBranch({
- fs: new FileSystem(fs),
- gitdir,
- fullname,
- test
- });
- } catch (err) {
- err.caller = "git.currentBranch";
- throw err;
- }
- }
- async function _deleteBranch({ fs, gitdir, ref }) {
- const exist = await GitRefManager.exists({ fs, gitdir, ref });
- if (!exist) {
- throw new NotFoundError(ref);
- }
- const fullRef = await GitRefManager.expand({ fs, gitdir, ref });
- const currentRef = await _currentBranch({ fs, gitdir, fullname: true });
- if (fullRef === currentRef) {
- const value = await GitRefManager.resolve({ fs, gitdir, ref: fullRef });
- await GitRefManager.writeRef({ fs, gitdir, ref: "HEAD", value });
- }
- await GitRefManager.deleteRef({ fs, gitdir, ref: fullRef });
- }
- async function deleteBranch({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- ref
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("ref", ref);
- return await _deleteBranch({
- fs: new FileSystem(fs),
- gitdir,
- ref
- });
- } catch (err) {
- err.caller = "git.deleteBranch";
- throw err;
- }
- }
- async function deleteRef({ fs, dir, gitdir = join(dir, ".git"), ref }) {
- try {
- assertParameter("fs", fs);
- assertParameter("ref", ref);
- await GitRefManager.deleteRef({ fs: new FileSystem(fs), gitdir, ref });
- } catch (err) {
- err.caller = "git.deleteRef";
- throw err;
- }
- }
- async function _deleteRemote({ fs, gitdir, remote }) {
- const config = await GitConfigManager.get({ fs, gitdir });
- await config.deleteSection("remote", remote);
- await GitConfigManager.save({ fs, gitdir, config });
- }
- async function deleteRemote({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- remote
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("remote", remote);
- return await _deleteRemote({
- fs: new FileSystem(fs),
- gitdir,
- remote
- });
- } catch (err) {
- err.caller = "git.deleteRemote";
- throw err;
- }
- }
- async function _deleteTag({ fs, gitdir, ref }) {
- ref = ref.startsWith("refs/tags/") ? ref : `refs/tags/${ref}`;
- await GitRefManager.deleteRef({ fs, gitdir, ref });
- }
- async function deleteTag({ fs, dir, gitdir = join(dir, ".git"), ref }) {
- try {
- assertParameter("fs", fs);
- assertParameter("ref", ref);
- return await _deleteTag({
- fs: new FileSystem(fs),
- gitdir,
- ref
- });
- } catch (err) {
- err.caller = "git.deleteTag";
- throw err;
- }
- }
- async function expandOidLoose({ fs, gitdir, oid: short }) {
- const prefix = short.slice(0, 2);
- const objectsSuffixes = await fs.readdir(`${gitdir}/objects/${prefix}`);
- return objectsSuffixes.map((suffix) => `${prefix}${suffix}`).filter((_oid) => _oid.startsWith(short));
- }
- async function expandOidPacked({
- fs,
- cache,
- gitdir,
- oid: short,
- getExternalRefDelta
- }) {
- const results = [];
- let list = await fs.readdir(join(gitdir, "objects/pack"));
- list = list.filter((x) => x.endsWith(".idx"));
- for (const filename of list) {
- const indexFile = `${gitdir}/objects/pack/${filename}`;
- const p = await readPackIndex({
- fs,
- cache,
- filename: indexFile,
- getExternalRefDelta
- });
- if (p.error)
- throw new InternalError(p.error);
- for (const oid of p.offsets.keys()) {
- if (oid.startsWith(short))
- results.push(oid);
- }
- }
- return results;
- }
- async function _expandOid({ fs, cache, gitdir, oid: short }) {
- const getExternalRefDelta = (oid) => _readObject({ fs, cache, gitdir, oid });
- const results1 = await expandOidLoose({ fs, gitdir, oid: short });
- const results2 = await expandOidPacked({
- fs,
- cache,
- gitdir,
- oid: short,
- getExternalRefDelta
- });
- const results = results1.concat(results2);
- if (results.length === 1) {
- return results[0];
- }
- if (results.length > 1) {
- throw new AmbiguousError("oids", short, results);
- }
- throw new NotFoundError(`an object matching "${short}"`);
- }
- async function expandOid({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- oid,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("oid", oid);
- return await _expandOid({
- fs: new FileSystem(fs),
- cache,
- gitdir,
- oid
- });
- } catch (err) {
- err.caller = "git.expandOid";
- throw err;
- }
- }
- async function expandRef({ fs, dir, gitdir = join(dir, ".git"), ref }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("ref", ref);
- return await GitRefManager.expand({
- fs: new FileSystem(fs),
- gitdir,
- ref
- });
- } catch (err) {
- err.caller = "git.expandRef";
- throw err;
- }
- }
- async function _findMergeBase({ fs, cache, gitdir, oids }) {
- const visits = {};
- const passes = oids.length;
- let heads = oids.map((oid, index2) => ({ index: index2, oid }));
- while (heads.length) {
- const result = new Set();
- for (const { oid, index: index2 } of heads) {
- if (!visits[oid])
- visits[oid] = new Set();
- visits[oid].add(index2);
- if (visits[oid].size === passes) {
- result.add(oid);
- }
- }
- if (result.size > 0) {
- return [...result];
- }
- const newheads = new Map();
- for (const { oid, index: index2 } of heads) {
- try {
- const { object } = await _readObject({ fs, cache, gitdir, oid });
- const commit2 = GitCommit.from(object);
- const { parent } = commit2.parseHeaders();
- for (const oid2 of parent) {
- if (!visits[oid2] || !visits[oid2].has(index2)) {
- newheads.set(oid2 + ":" + index2, { oid: oid2, index: index2 });
- }
- }
- } catch (err) {
- }
- }
- heads = Array.from(newheads.values());
- }
- return [];
- }
- var LINEBREAKS = /^.*(\r?\n|$)/gm;
- function mergeFile({ branches, contents }) {
- const ourName = branches[1];
- const theirName = branches[2];
- const baseContent = contents[0];
- const ourContent = contents[1];
- const theirContent = contents[2];
- const ours = ourContent.match(LINEBREAKS);
- const base = baseContent.match(LINEBREAKS);
- const theirs = theirContent.match(LINEBREAKS);
- const result = (0, import_diff3.default)(ours, base, theirs);
- const markerSize = 7;
- let mergedText = "";
- let cleanMerge = true;
- for (const item of result) {
- if (item.ok) {
- mergedText += item.ok.join("");
- }
- if (item.conflict) {
- cleanMerge = false;
- mergedText += `${"<".repeat(markerSize)} ${ourName}
- `;
- mergedText += item.conflict.a.join("");
- mergedText += `${"=".repeat(markerSize)}
- `;
- mergedText += item.conflict.b.join("");
- mergedText += `${">".repeat(markerSize)} ${theirName}
- `;
- }
- }
- return { cleanMerge, mergedText };
- }
- async function mergeTree({
- fs,
- cache,
- dir,
- gitdir = join(dir, ".git"),
- ourOid,
- baseOid,
- theirOid,
- ourName = "ours",
- baseName = "base",
- theirName = "theirs",
- dryRun = false,
- abortOnConflict = true,
- mergeDriver
- }) {
- const ourTree = TREE({ ref: ourOid });
- const baseTree = TREE({ ref: baseOid });
- const theirTree = TREE({ ref: theirOid });
- const unmergedFiles = [];
- let cleanMerge = true;
- const results = await _walk({
- fs,
- cache,
- dir,
- gitdir,
- trees: [ourTree, baseTree, theirTree],
- map: async function(filepath, [ours, base, theirs]) {
- const path2 = basename(filepath);
- const ourChange = await modified(ours, base);
- const theirChange = await modified(theirs, base);
- switch (`${ourChange}-${theirChange}`) {
- case "false-false": {
- return {
- mode: await base.mode(),
- path: path2,
- oid: await base.oid(),
- type: await base.type()
- };
- }
- case "false-true": {
- return theirs ? {
- mode: await theirs.mode(),
- path: path2,
- oid: await theirs.oid(),
- type: await theirs.type()
- } : void 0;
- }
- case "true-false": {
- return ours ? {
- mode: await ours.mode(),
- path: path2,
- oid: await ours.oid(),
- type: await ours.type()
- } : void 0;
- }
- case "true-true": {
- if (ours && base && theirs && await ours.type() === "blob" && await base.type() === "blob" && await theirs.type() === "blob") {
- return mergeBlobs({
- fs,
- gitdir,
- path: path2,
- ours,
- base,
- theirs,
- ourName,
- baseName,
- theirName,
- mergeDriver
- }).then((r) => {
- cleanMerge = cleanMerge && r.cleanMerge;
- unmergedFiles.push(filepath);
- return r.mergeResult;
- });
- }
- throw new MergeNotSupportedError();
- }
- }
- },
- reduce: async (parent, children2) => {
- const entries = children2.filter(Boolean);
- if (!parent)
- return;
- if (parent && parent.type === "tree" && entries.length === 0)
- return;
- if (entries.length > 0) {
- const tree = new GitTree(entries);
- const object = tree.toObject();
- const oid = await _writeObject({
- fs,
- gitdir,
- type: "tree",
- object,
- dryRun
- });
- parent.oid = oid;
- }
- return parent;
- }
- });
- if (!cleanMerge) {
- if (dir && !abortOnConflict) {
- await _walk({
- fs,
- cache,
- dir,
- gitdir,
- trees: [TREE({ ref: results.oid })],
- map: async function(filepath, [entry]) {
- const path2 = `${dir}/${filepath}`;
- if (await entry.type() === "blob") {
- const mode = await entry.mode();
- const content = new TextDecoder().decode(await entry.content());
- await fs.write(path2, content, { mode });
- }
- return true;
- }
- });
- }
- throw new MergeConflictError(unmergedFiles);
- }
- return results.oid;
- }
- async function modified(entry, base) {
- if (!entry && !base)
- return false;
- if (entry && !base)
- return true;
- if (!entry && base)
- return true;
- if (await entry.type() === "tree" && await base.type() === "tree") {
- return false;
- }
- if (await entry.type() === await base.type() && await entry.mode() === await base.mode() && await entry.oid() === await base.oid()) {
- return false;
- }
- return true;
- }
- async function mergeBlobs({
- fs,
- gitdir,
- path: path2,
- ours,
- base,
- theirs,
- ourName,
- theirName,
- baseName,
- dryRun,
- mergeDriver = mergeFile
- }) {
- const type = "blob";
- const mode = await base.mode() === await ours.mode() ? await theirs.mode() : await ours.mode();
- if (await ours.oid() === await theirs.oid()) {
- return {
- cleanMerge: true,
- mergeResult: { mode, path: path2, oid: await ours.oid(), type }
- };
- }
- if (await ours.oid() === await base.oid()) {
- return {
- cleanMerge: true,
- mergeResult: { mode, path: path2, oid: await theirs.oid(), type }
- };
- }
- if (await theirs.oid() === await base.oid()) {
- return {
- cleanMerge: true,
- mergeResult: { mode, path: path2, oid: await ours.oid(), type }
- };
- }
- const ourContent = Buffer2.from(await ours.content()).toString("utf8");
- const baseContent = Buffer2.from(await base.content()).toString("utf8");
- const theirContent = Buffer2.from(await theirs.content()).toString("utf8");
- const { mergedText, cleanMerge } = await mergeDriver({
- branches: [baseName, ourName, theirName],
- contents: [baseContent, ourContent, theirContent],
- path: path2
- });
- const oid = await _writeObject({
- fs,
- gitdir,
- type: "blob",
- object: Buffer2.from(mergedText, "utf8"),
- dryRun
- });
- return { cleanMerge, mergeResult: { mode, path: path2, oid, type } };
- }
- async function _merge({
- fs,
- cache,
- dir,
- gitdir,
- ours,
- theirs,
- fastForward: fastForward2 = true,
- fastForwardOnly = false,
- dryRun = false,
- noUpdateBranch = false,
- abortOnConflict = true,
- message,
- author,
- committer,
- signingKey,
- onSign,
- mergeDriver
- }) {
- if (ours === void 0) {
- ours = await _currentBranch({ fs, gitdir, fullname: true });
- }
- ours = await GitRefManager.expand({
- fs,
- gitdir,
- ref: ours
- });
- theirs = await GitRefManager.expand({
- fs,
- gitdir,
- ref: theirs
- });
- const ourOid = await GitRefManager.resolve({
- fs,
- gitdir,
- ref: ours
- });
- const theirOid = await GitRefManager.resolve({
- fs,
- gitdir,
- ref: theirs
- });
- const baseOids = await _findMergeBase({
- fs,
- cache,
- gitdir,
- oids: [ourOid, theirOid]
- });
- if (baseOids.length !== 1) {
- throw new MergeNotSupportedError();
- }
- const baseOid = baseOids[0];
- if (baseOid === theirOid) {
- return {
- oid: ourOid,
- alreadyMerged: true
- };
- }
- if (fastForward2 && baseOid === ourOid) {
- if (!dryRun && !noUpdateBranch) {
- await GitRefManager.writeRef({ fs, gitdir, ref: ours, value: theirOid });
- }
- return {
- oid: theirOid,
- fastForward: true
- };
- } else {
- if (fastForwardOnly) {
- throw new FastForwardError();
- }
- const tree = await mergeTree({
- fs,
- cache,
- dir,
- gitdir,
- ourOid,
- theirOid,
- baseOid,
- ourName: abbreviateRef(ours),
- baseName: "base",
- theirName: abbreviateRef(theirs),
- dryRun,
- abortOnConflict,
- mergeDriver
- });
- if (!message) {
- message = `Merge branch '${abbreviateRef(theirs)}' into ${abbreviateRef(ours)}`;
- }
- const oid = await _commit({
- fs,
- cache,
- gitdir,
- message,
- ref: ours,
- tree,
- parent: [ourOid, theirOid],
- author,
- committer,
- signingKey,
- onSign,
- dryRun,
- noUpdateBranch
- });
- return {
- oid,
- tree,
- mergeCommit: true
- };
- }
- }
- async function _pull({
- fs,
- cache,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- dir,
- gitdir,
- ref,
- url,
- remote,
- remoteRef,
- prune,
- pruneTags,
- fastForward: fastForward2,
- fastForwardOnly,
- corsProxy,
- singleBranch,
- headers,
- author,
- committer,
- signingKey
- }) {
- try {
- if (!ref) {
- const head = await _currentBranch({ fs, gitdir });
- if (!head) {
- throw new MissingParameterError("ref");
- }
- ref = head;
- }
- const { fetchHead, fetchHeadDescription } = await _fetch({
- fs,
- cache,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- gitdir,
- corsProxy,
- ref,
- url,
- remote,
- remoteRef,
- singleBranch,
- headers,
- prune,
- pruneTags
- });
- await _merge({
- fs,
- cache,
- gitdir,
- ours: ref,
- theirs: fetchHead,
- fastForward: fastForward2,
- fastForwardOnly,
- message: `Merge ${fetchHeadDescription}`,
- author,
- committer,
- signingKey,
- dryRun: false,
- noUpdateBranch: false
- });
- await _checkout({
- fs,
- cache,
- onProgress,
- dir,
- gitdir,
- ref,
- remote,
- noCheckout: false
- });
- } catch (err) {
- err.caller = "git.pull";
- throw err;
- }
- }
- async function fastForward({
- fs,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- dir,
- gitdir = join(dir, ".git"),
- ref,
- url,
- remote,
- remoteRef,
- corsProxy,
- singleBranch,
- headers = {},
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("http", http);
- assertParameter("gitdir", gitdir);
- const thisWillNotBeUsed = {
- name: "",
- email: "",
- timestamp: Date.now(),
- timezoneOffset: 0
- };
- return await _pull({
- fs: new FileSystem(fs),
- cache,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- dir,
- gitdir,
- ref,
- url,
- remote,
- remoteRef,
- fastForwardOnly: true,
- corsProxy,
- singleBranch,
- headers,
- author: thisWillNotBeUsed,
- committer: thisWillNotBeUsed
- });
- } catch (err) {
- err.caller = "git.fastForward";
- throw err;
- }
- }
- async function fetch({
- fs,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- dir,
- gitdir = join(dir, ".git"),
- ref,
- remote,
- remoteRef,
- url,
- corsProxy,
- depth = null,
- since = null,
- exclude = [],
- relative = false,
- tags = false,
- singleBranch = false,
- headers = {},
- prune = false,
- pruneTags = false,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("http", http);
- assertParameter("gitdir", gitdir);
- return await _fetch({
- fs: new FileSystem(fs),
- cache,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- gitdir,
- ref,
- remote,
- remoteRef,
- url,
- corsProxy,
- depth,
- since,
- exclude,
- relative,
- tags,
- singleBranch,
- headers,
- prune,
- pruneTags
- });
- } catch (err) {
- err.caller = "git.fetch";
- throw err;
- }
- }
- async function findMergeBase({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- oids,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("oids", oids);
- return await _findMergeBase({
- fs: new FileSystem(fs),
- cache,
- gitdir,
- oids
- });
- } catch (err) {
- err.caller = "git.findMergeBase";
- throw err;
- }
- }
- async function _findRoot({ fs, filepath }) {
- if (await fs.exists(join(filepath, ".git"))) {
- return filepath;
- } else {
- const parent = dirname(filepath);
- if (parent === filepath) {
- throw new NotFoundError(`git root for ${filepath}`);
- }
- return _findRoot({ fs, filepath: parent });
- }
- }
- async function findRoot({ fs, filepath }) {
- try {
- assertParameter("fs", fs);
- assertParameter("filepath", filepath);
- return await _findRoot({ fs: new FileSystem(fs), filepath });
- } catch (err) {
- err.caller = "git.findRoot";
- throw err;
- }
- }
- async function getConfig({ fs, dir, gitdir = join(dir, ".git"), path: path2 }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("path", path2);
- return await _getConfig({
- fs: new FileSystem(fs),
- gitdir,
- path: path2
- });
- } catch (err) {
- err.caller = "git.getConfig";
- throw err;
- }
- }
- async function _getConfigAll({ fs, gitdir, path: path2 }) {
- const config = await GitConfigManager.get({ fs, gitdir });
- return config.getall(path2);
- }
- async function getConfigAll({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- path: path2
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("path", path2);
- return await _getConfigAll({
- fs: new FileSystem(fs),
- gitdir,
- path: path2
- });
- } catch (err) {
- err.caller = "git.getConfigAll";
- throw err;
- }
- }
- async function getRemoteInfo({
- http,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- corsProxy,
- url,
- headers = {},
- forPush = false
- }) {
- try {
- assertParameter("http", http);
- assertParameter("url", url);
- const GitRemoteHTTP2 = GitRemoteManager.getRemoteHelperFor({ url });
- const remote = await GitRemoteHTTP2.discover({
- http,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- corsProxy,
- service: forPush ? "git-receive-pack" : "git-upload-pack",
- url,
- headers,
- protocolVersion: 1
- });
- const result = {
- capabilities: [...remote.capabilities]
- };
- for (const [ref, oid] of remote.refs) {
- const parts = ref.split("/");
- const last2 = parts.pop();
- let o = result;
- for (const part of parts) {
- o[part] = o[part] || {};
- o = o[part];
- }
- o[last2] = oid;
- }
- for (const [symref, ref] of remote.symrefs) {
- const parts = symref.split("/");
- const last2 = parts.pop();
- let o = result;
- for (const part of parts) {
- o[part] = o[part] || {};
- o = o[part];
- }
- o[last2] = ref;
- }
- return result;
- } catch (err) {
- err.caller = "git.getRemoteInfo";
- throw err;
- }
- }
- function formatInfoRefs(remote, prefix, symrefs, peelTags) {
- const refs = [];
- for (const [key2, value] of remote.refs) {
- if (prefix && !key2.startsWith(prefix))
- continue;
- if (key2.endsWith("^{}")) {
- if (peelTags) {
- const _key = key2.replace("^{}", "");
- const last2 = refs[refs.length - 1];
- const r = last2.ref === _key ? last2 : refs.find((x) => x.ref === _key);
- if (r === void 0) {
- throw new Error("I did not expect this to happen");
- }
- r.peeled = value;
- }
- continue;
- }
- const ref = { ref: key2, oid: value };
- if (symrefs) {
- if (remote.symrefs.has(key2)) {
- ref.target = remote.symrefs.get(key2);
- }
- }
- refs.push(ref);
- }
- return refs;
- }
- async function getRemoteInfo2({
- http,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- corsProxy,
- url,
- headers = {},
- forPush = false,
- protocolVersion = 2
- }) {
- try {
- assertParameter("http", http);
- assertParameter("url", url);
- const GitRemoteHTTP2 = GitRemoteManager.getRemoteHelperFor({ url });
- const remote = await GitRemoteHTTP2.discover({
- http,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- corsProxy,
- service: forPush ? "git-receive-pack" : "git-upload-pack",
- url,
- headers,
- protocolVersion
- });
- if (remote.protocolVersion === 2) {
- return {
- protocolVersion: remote.protocolVersion,
- capabilities: remote.capabilities2
- };
- }
- const capabilities = {};
- for (const cap of remote.capabilities) {
- const [key2, value] = cap.split("=");
- if (value) {
- capabilities[key2] = value;
- } else {
- capabilities[key2] = true;
- }
- }
- return {
- protocolVersion: 1,
- capabilities,
- refs: formatInfoRefs(remote, void 0, true, true)
- };
- } catch (err) {
- err.caller = "git.getRemoteInfo2";
- throw err;
- }
- }
- async function hashObject({
- type,
- object,
- format = "content",
- oid = void 0
- }) {
- if (format !== "deflated") {
- if (format !== "wrapped") {
- object = GitObject.wrap({ type, object });
- }
- oid = await shasum(object);
- }
- return { oid, object };
- }
- async function hashBlob({ object }) {
- try {
- assertParameter("object", object);
- if (typeof object === "string") {
- object = Buffer2.from(object, "utf8");
- } else {
- object = Buffer2.from(object);
- }
- const type = "blob";
- const { oid, object: _object } = await hashObject({
- type: "blob",
- format: "content",
- object
- });
- return { oid, type, object: new Uint8Array(_object), format: "wrapped" };
- } catch (err) {
- err.caller = "git.hashBlob";
- throw err;
- }
- }
- async function _indexPack({
- fs,
- cache,
- onProgress,
- dir,
- gitdir,
- filepath
- }) {
- try {
- filepath = join(dir, filepath);
- const pack = await fs.read(filepath);
- const getExternalRefDelta = (oid) => _readObject({ fs, cache, gitdir, oid });
- const idx = await GitPackIndex.fromPack({
- pack,
- getExternalRefDelta,
- onProgress
- });
- await fs.write(filepath.replace(/\.pack$/, ".idx"), await idx.toBuffer());
- return {
- oids: [...idx.hashes]
- };
- } catch (err) {
- err.caller = "git.indexPack";
- throw err;
- }
- }
- async function indexPack({
- fs,
- onProgress,
- dir,
- gitdir = join(dir, ".git"),
- filepath,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("dir", dir);
- assertParameter("gitdir", dir);
- assertParameter("filepath", filepath);
- return await _indexPack({
- fs: new FileSystem(fs),
- cache,
- onProgress,
- dir,
- gitdir,
- filepath
- });
- } catch (err) {
- err.caller = "git.indexPack";
- throw err;
- }
- }
- async function init({
- fs,
- bare = false,
- dir,
- gitdir = bare ? dir : join(dir, ".git"),
- defaultBranch = "master"
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- if (!bare) {
- assertParameter("dir", dir);
- }
- return await _init({
- fs: new FileSystem(fs),
- bare,
- dir,
- gitdir,
- defaultBranch
- });
- } catch (err) {
- err.caller = "git.init";
- throw err;
- }
- }
- async function _isDescendent({
- fs,
- cache,
- gitdir,
- oid,
- ancestor,
- depth
- }) {
- const shallows = await GitShallowManager.read({ fs, gitdir });
- if (!oid) {
- throw new MissingParameterError("oid");
- }
- if (!ancestor) {
- throw new MissingParameterError("ancestor");
- }
- if (oid === ancestor)
- return false;
- const queue = [oid];
- const visited = new Set();
- let searchdepth = 0;
- while (queue.length) {
- if (searchdepth++ === depth) {
- throw new MaxDepthError(depth);
- }
- const oid2 = queue.shift();
- const { type, object } = await _readObject({
- fs,
- cache,
- gitdir,
- oid: oid2
- });
- if (type !== "commit") {
- throw new ObjectTypeError(oid2, type, "commit");
- }
- const commit2 = GitCommit.from(object).parse();
- for (const parent of commit2.parent) {
- if (parent === ancestor)
- return true;
- }
- if (!shallows.has(oid2)) {
- for (const parent of commit2.parent) {
- if (!visited.has(parent)) {
- queue.push(parent);
- visited.add(parent);
- }
- }
- }
- }
- return false;
- }
- async function isDescendent({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- oid,
- ancestor,
- depth = -1,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("oid", oid);
- assertParameter("ancestor", ancestor);
- return await _isDescendent({
- fs: new FileSystem(fs),
- cache,
- gitdir,
- oid,
- ancestor,
- depth
- });
- } catch (err) {
- err.caller = "git.isDescendent";
- throw err;
- }
- }
- async function isIgnored({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- filepath
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("dir", dir);
- assertParameter("gitdir", gitdir);
- assertParameter("filepath", filepath);
- return GitIgnoreManager.isIgnored({
- fs: new FileSystem(fs),
- dir,
- gitdir,
- filepath
- });
- } catch (err) {
- err.caller = "git.isIgnored";
- throw err;
- }
- }
- async function listBranches({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- remote
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- return GitRefManager.listBranches({
- fs: new FileSystem(fs),
- gitdir,
- remote
- });
- } catch (err) {
- err.caller = "git.listBranches";
- throw err;
- }
- }
- async function _listFiles({ fs, gitdir, ref, cache }) {
- if (ref) {
- const oid = await GitRefManager.resolve({ gitdir, fs, ref });
- const filenames = [];
- await accumulateFilesFromOid({
- fs,
- cache,
- gitdir,
- oid,
- filenames,
- prefix: ""
- });
- return filenames;
- } else {
- return GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) {
- return index2.entries.map((x) => x.path);
- });
- }
- }
- async function accumulateFilesFromOid({
- fs,
- cache,
- gitdir,
- oid,
- filenames,
- prefix
- }) {
- const { tree } = await _readTree({ fs, cache, gitdir, oid });
- for (const entry of tree) {
- if (entry.type === "tree") {
- await accumulateFilesFromOid({
- fs,
- cache,
- gitdir,
- oid: entry.oid,
- filenames,
- prefix: join(prefix, entry.path)
- });
- } else {
- filenames.push(join(prefix, entry.path));
- }
- }
- }
- async function listFiles({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- ref,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- return await _listFiles({
- fs: new FileSystem(fs),
- cache,
- gitdir,
- ref
- });
- } catch (err) {
- err.caller = "git.listFiles";
- throw err;
- }
- }
- async function _listNotes({ fs, cache, gitdir, ref }) {
- let parent;
- try {
- parent = await GitRefManager.resolve({ gitdir, fs, ref });
- } catch (err) {
- if (err instanceof NotFoundError) {
- return [];
- }
- }
- const result = await _readTree({
- fs,
- cache,
- gitdir,
- oid: parent
- });
- const notes = result.tree.map((entry) => ({
- target: entry.path,
- note: entry.oid
- }));
- return notes;
- }
- async function listNotes({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- ref = "refs/notes/commits",
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("ref", ref);
- return await _listNotes({
- fs: new FileSystem(fs),
- cache,
- gitdir,
- ref
- });
- } catch (err) {
- err.caller = "git.listNotes";
- throw err;
- }
- }
- async function _listRemotes({ fs, gitdir }) {
- const config = await GitConfigManager.get({ fs, gitdir });
- const remoteNames = await config.getSubsections("remote");
- const remotes = Promise.all(remoteNames.map(async (remote) => {
- const url = await config.get(`remote.${remote}.url`);
- return { remote, url };
- }));
- return remotes;
- }
- async function listRemotes({ fs, dir, gitdir = join(dir, ".git") }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- return await _listRemotes({
- fs: new FileSystem(fs),
- gitdir
- });
- } catch (err) {
- err.caller = "git.listRemotes";
- throw err;
- }
- }
- async function parseListRefsResponse(stream) {
- const read = GitPktLine.streamReader(stream);
- const refs = [];
- let line;
- while (true) {
- line = await read();
- if (line === true)
- break;
- if (line === null)
- continue;
- line = line.toString("utf8").replace(/\n$/, "");
- const [oid, ref, ...attrs] = line.split(" ");
- const r = { ref, oid };
- for (const attr2 of attrs) {
- const [name, value] = attr2.split(":");
- if (name === "symref-target") {
- r.target = value;
- } else if (name === "peeled") {
- r.peeled = value;
- }
- }
- refs.push(r);
- }
- return refs;
- }
- async function writeListRefsRequest({ prefix, symrefs, peelTags }) {
- const packstream = [];
- packstream.push(GitPktLine.encode("command=ls-refs\n"));
- packstream.push(GitPktLine.encode(`agent=${pkg.agent}
- `));
- if (peelTags || symrefs || prefix) {
- packstream.push(GitPktLine.delim());
- }
- if (peelTags)
- packstream.push(GitPktLine.encode("peel"));
- if (symrefs)
- packstream.push(GitPktLine.encode("symrefs"));
- if (prefix)
- packstream.push(GitPktLine.encode(`ref-prefix ${prefix}`));
- packstream.push(GitPktLine.flush());
- return packstream;
- }
- async function listServerRefs({
- http,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- corsProxy,
- url,
- headers = {},
- forPush = false,
- protocolVersion = 2,
- prefix,
- symrefs,
- peelTags
- }) {
- try {
- assertParameter("http", http);
- assertParameter("url", url);
- const remote = await GitRemoteHTTP.discover({
- http,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- corsProxy,
- service: forPush ? "git-receive-pack" : "git-upload-pack",
- url,
- headers,
- protocolVersion
- });
- if (remote.protocolVersion === 1) {
- return formatInfoRefs(remote, prefix, symrefs, peelTags);
- }
- const body = await writeListRefsRequest({ prefix, symrefs, peelTags });
- const res = await GitRemoteHTTP.connect({
- http,
- auth: remote.auth,
- headers,
- corsProxy,
- service: forPush ? "git-receive-pack" : "git-upload-pack",
- url,
- body
- });
- return parseListRefsResponse(res.body);
- } catch (err) {
- err.caller = "git.listServerRefs";
- throw err;
- }
- }
- async function listTags({ fs, dir, gitdir = join(dir, ".git") }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- return GitRefManager.listTags({ fs: new FileSystem(fs), gitdir });
- } catch (err) {
- err.caller = "git.listTags";
- throw err;
- }
- }
- async function resolveCommit({ fs, cache, gitdir, oid }) {
- const { type, object } = await _readObject({ fs, cache, gitdir, oid });
- if (type === "tag") {
- oid = GitAnnotatedTag.from(object).parse().object;
- return resolveCommit({ fs, cache, gitdir, oid });
- }
- if (type !== "commit") {
- throw new ObjectTypeError(oid, type, "commit");
- }
- return { commit: GitCommit.from(object), oid };
- }
- async function _readCommit({ fs, cache, gitdir, oid }) {
- const { commit: commit2, oid: commitOid } = await resolveCommit({
- fs,
- cache,
- gitdir,
- oid
- });
- const result = {
- oid: commitOid,
- commit: commit2.parse(),
- payload: commit2.withoutSignature()
- };
- return result;
- }
- function compareAge(a, b) {
- return a.committer.timestamp - b.committer.timestamp;
- }
- var EMPTY_OID = "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391";
- async function resolveFileIdInTree({ fs, cache, gitdir, oid, fileId }) {
- if (fileId === EMPTY_OID)
- return;
- const _oid = oid;
- let filepath;
- const result = await resolveTree({ fs, cache, gitdir, oid });
- const tree = result.tree;
- if (fileId === result.oid) {
- filepath = result.path;
- } else {
- filepath = await _resolveFileId({
- fs,
- cache,
- gitdir,
- tree,
- fileId,
- oid: _oid
- });
- if (Array.isArray(filepath)) {
- if (filepath.length === 0)
- filepath = void 0;
- else if (filepath.length === 1)
- filepath = filepath[0];
- }
- }
- return filepath;
- }
- async function _resolveFileId({
- fs,
- cache,
- gitdir,
- tree,
- fileId,
- oid,
- filepaths = [],
- parentPath = ""
- }) {
- const walks = tree.entries().map(function(entry) {
- let result;
- if (entry.oid === fileId) {
- result = join(parentPath, entry.path);
- filepaths.push(result);
- } else if (entry.type === "tree") {
- result = _readObject({
- fs,
- cache,
- gitdir,
- oid: entry.oid
- }).then(function({ object }) {
- return _resolveFileId({
- fs,
- cache,
- gitdir,
- tree: GitTree.from(object),
- fileId,
- oid,
- filepaths,
- parentPath: join(parentPath, entry.path)
- });
- });
- }
- return result;
- });
- await Promise.all(walks);
- return filepaths;
- }
- async function _log({
- fs,
- cache,
- gitdir,
- filepath,
- ref,
- depth,
- since,
- force,
- follow
- }) {
- const sinceTimestamp = typeof since === "undefined" ? void 0 : Math.floor(since.valueOf() / 1e3);
- const commits = [];
- const shallowCommits = await GitShallowManager.read({ fs, gitdir });
- const oid = await GitRefManager.resolve({ fs, gitdir, ref });
- const tips = [await _readCommit({ fs, cache, gitdir, oid })];
- let lastFileOid;
- let lastCommit;
- let isOk;
- function endCommit(commit2) {
- if (isOk && filepath)
- commits.push(commit2);
- }
- while (tips.length > 0) {
- const commit2 = tips.pop();
- if (sinceTimestamp !== void 0 && commit2.commit.committer.timestamp <= sinceTimestamp) {
- break;
- }
- if (filepath) {
- let vFileOid;
- try {
- vFileOid = await resolveFilepath({
- fs,
- cache,
- gitdir,
- oid: commit2.commit.tree,
- filepath
- });
- if (lastCommit && lastFileOid !== vFileOid) {
- commits.push(lastCommit);
- }
- lastFileOid = vFileOid;
- lastCommit = commit2;
- isOk = true;
- } catch (e) {
- if (e instanceof NotFoundError) {
- let found = follow && lastFileOid;
- if (found) {
- found = await resolveFileIdInTree({
- fs,
- cache,
- gitdir,
- oid: commit2.commit.tree,
- fileId: lastFileOid
- });
- if (found) {
- if (Array.isArray(found)) {
- if (lastCommit) {
- const lastFound = await resolveFileIdInTree({
- fs,
- cache,
- gitdir,
- oid: lastCommit.commit.tree,
- fileId: lastFileOid
- });
- if (Array.isArray(lastFound)) {
- found = found.filter((p) => lastFound.indexOf(p) === -1);
- if (found.length === 1) {
- found = found[0];
- filepath = found;
- if (lastCommit)
- commits.push(lastCommit);
- } else {
- found = false;
- if (lastCommit)
- commits.push(lastCommit);
- break;
- }
- }
- }
- } else {
- filepath = found;
- if (lastCommit)
- commits.push(lastCommit);
- }
- }
- }
- if (!found) {
- if (isOk && lastFileOid) {
- commits.push(lastCommit);
- if (!force)
- break;
- }
- if (!force && !follow)
- throw e;
- }
- lastCommit = commit2;
- isOk = false;
- } else
- throw e;
- }
- } else {
- commits.push(commit2);
- }
- if (depth !== void 0 && commits.length === depth) {
- endCommit(commit2);
- break;
- }
- if (!shallowCommits.has(commit2.oid)) {
- for (const oid2 of commit2.commit.parent) {
- const commit3 = await _readCommit({ fs, cache, gitdir, oid: oid2 });
- if (!tips.map((commit4) => commit4.oid).includes(commit3.oid)) {
- tips.push(commit3);
- }
- }
- }
- if (tips.length === 0) {
- endCommit(commit2);
- }
- tips.sort((a, b) => compareAge(a.commit, b.commit));
- }
- return commits;
- }
- async function log({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- filepath,
- ref = "HEAD",
- depth,
- since,
- force,
- follow,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("ref", ref);
- return await _log({
- fs: new FileSystem(fs),
- cache,
- gitdir,
- filepath,
- ref,
- depth,
- since,
- force,
- follow
- });
- } catch (err) {
- err.caller = "git.log";
- throw err;
- }
- }
- async function merge({
- fs: _fs,
- onSign,
- dir,
- gitdir = join(dir, ".git"),
- ours,
- theirs,
- fastForward: fastForward2 = true,
- fastForwardOnly = false,
- dryRun = false,
- noUpdateBranch = false,
- abortOnConflict = true,
- message,
- author: _author,
- committer: _committer,
- signingKey,
- cache = {},
- mergeDriver
- }) {
- try {
- assertParameter("fs", _fs);
- if (signingKey) {
- assertParameter("onSign", onSign);
- }
- const fs = new FileSystem(_fs);
- const author = await normalizeAuthorObject({ fs, gitdir, author: _author });
- if (!author && (!fastForwardOnly || !fastForward2)) {
- throw new MissingNameError("author");
- }
- const committer = await normalizeCommitterObject({
- fs,
- gitdir,
- author,
- committer: _committer
- });
- if (!committer && (!fastForwardOnly || !fastForward2)) {
- throw new MissingNameError("committer");
- }
- return await _merge({
- fs,
- cache,
- dir,
- gitdir,
- ours,
- theirs,
- fastForward: fastForward2,
- fastForwardOnly,
- dryRun,
- noUpdateBranch,
- abortOnConflict,
- message,
- author,
- committer,
- signingKey,
- onSign,
- mergeDriver
- });
- } catch (err) {
- err.caller = "git.merge";
- throw err;
- }
- }
- var types = {
- commit: 16,
- tree: 32,
- blob: 48,
- tag: 64,
- ofs_delta: 96,
- ref_delta: 112
- };
- async function _pack({
- fs,
- cache,
- dir,
- gitdir = join(dir, ".git"),
- oids
- }) {
- const hash2 = new import_sha1.default();
- const outputStream = [];
- function write(chunk, enc) {
- const buff = Buffer2.from(chunk, enc);
- outputStream.push(buff);
- hash2.update(buff);
- }
- async function writeObject2({ stype, object }) {
- const type = types[stype];
- let length = object.length;
- let multibyte = length > 15 ? 128 : 0;
- const lastFour = length & 15;
- length = length >>> 4;
- let byte = (multibyte | type | lastFour).toString(16);
- write(byte, "hex");
- while (multibyte) {
- multibyte = length > 127 ? 128 : 0;
- byte = multibyte | length & 127;
- write(padHex(2, byte), "hex");
- length = length >>> 7;
- }
- write(Buffer2.from(await deflate(object)));
- }
- write("PACK");
- write("00000002", "hex");
- write(padHex(8, oids.length), "hex");
- for (const oid of oids) {
- const { type, object } = await _readObject({ fs, cache, gitdir, oid });
- await writeObject2({ write, object, stype: type });
- }
- const digest = hash2.digest();
- outputStream.push(digest);
- return outputStream;
- }
- async function _packObjects({ fs, cache, gitdir, oids, write }) {
- const buffers = await _pack({ fs, cache, gitdir, oids });
- const packfile = Buffer2.from(await collect(buffers));
- const packfileSha = packfile.slice(-20).toString("hex");
- const filename = `pack-${packfileSha}.pack`;
- if (write) {
- await fs.write(join(gitdir, `objects/pack/${filename}`), packfile);
- return { filename };
- }
- return {
- filename,
- packfile: new Uint8Array(packfile)
- };
- }
- async function packObjects({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- oids,
- write = false,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("oids", oids);
- return await _packObjects({
- fs: new FileSystem(fs),
- cache,
- gitdir,
- oids,
- write
- });
- } catch (err) {
- err.caller = "git.packObjects";
- throw err;
- }
- }
- async function pull({
- fs: _fs,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- dir,
- gitdir = join(dir, ".git"),
- ref,
- url,
- remote,
- remoteRef,
- prune = false,
- pruneTags = false,
- fastForward: fastForward2 = true,
- fastForwardOnly = false,
- corsProxy,
- singleBranch,
- headers = {},
- author: _author,
- committer: _committer,
- signingKey,
- cache = {}
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- const fs = new FileSystem(_fs);
- const author = await normalizeAuthorObject({ fs, gitdir, author: _author });
- if (!author)
- throw new MissingNameError("author");
- const committer = await normalizeCommitterObject({
- fs,
- gitdir,
- author,
- committer: _committer
- });
- if (!committer)
- throw new MissingNameError("committer");
- return await _pull({
- fs,
- cache,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- dir,
- gitdir,
- ref,
- url,
- remote,
- remoteRef,
- fastForward: fastForward2,
- fastForwardOnly,
- corsProxy,
- singleBranch,
- headers,
- author,
- committer,
- signingKey,
- prune,
- pruneTags
- });
- } catch (err) {
- err.caller = "git.pull";
- throw err;
- }
- }
- async function listCommitsAndTags({
- fs,
- cache,
- dir,
- gitdir = join(dir, ".git"),
- start,
- finish
- }) {
- const shallows = await GitShallowManager.read({ fs, gitdir });
- const startingSet = new Set();
- const finishingSet = new Set();
- for (const ref of start) {
- startingSet.add(await GitRefManager.resolve({ fs, gitdir, ref }));
- }
- for (const ref of finish) {
- try {
- const oid = await GitRefManager.resolve({ fs, gitdir, ref });
- finishingSet.add(oid);
- } catch (err) {
- }
- }
- const visited = new Set();
- async function walk2(oid) {
- visited.add(oid);
- const { type, object } = await _readObject({ fs, cache, gitdir, oid });
- if (type === "tag") {
- const tag2 = GitAnnotatedTag.from(object);
- const commit2 = tag2.headers().object;
- return walk2(commit2);
- }
- if (type !== "commit") {
- throw new ObjectTypeError(oid, type, "commit");
- }
- if (!shallows.has(oid)) {
- const commit2 = GitCommit.from(object);
- const parents = commit2.headers().parent;
- for (oid of parents) {
- if (!finishingSet.has(oid) && !visited.has(oid)) {
- await walk2(oid);
- }
- }
- }
- }
- for (const oid of startingSet) {
- await walk2(oid);
- }
- return visited;
- }
- async function listObjects({
- fs,
- cache,
- dir,
- gitdir = join(dir, ".git"),
- oids
- }) {
- const visited = new Set();
- async function walk2(oid) {
- if (visited.has(oid))
- return;
- visited.add(oid);
- const { type, object } = await _readObject({ fs, cache, gitdir, oid });
- if (type === "tag") {
- const tag2 = GitAnnotatedTag.from(object);
- const obj = tag2.headers().object;
- await walk2(obj);
- } else if (type === "commit") {
- const commit2 = GitCommit.from(object);
- const tree = commit2.headers().tree;
- await walk2(tree);
- } else if (type === "tree") {
- const tree = GitTree.from(object);
- for (const entry of tree) {
- if (entry.type === "blob") {
- visited.add(entry.oid);
- }
- if (entry.type === "tree") {
- await walk2(entry.oid);
- }
- }
- }
- }
- for (const oid of oids) {
- await walk2(oid);
- }
- return visited;
- }
- async function parseReceivePackResponse(packfile) {
- const result = {};
- let response = "";
- const read = GitPktLine.streamReader(packfile);
- let line = await read();
- while (line !== true) {
- if (line !== null)
- response += line.toString("utf8") + "\n";
- line = await read();
- }
- const lines = response.toString("utf8").split("\n");
- line = lines.shift();
- if (!line.startsWith("unpack ")) {
- throw new ParseError('unpack ok" or "unpack [error message]', line);
- }
- result.ok = line === "unpack ok";
- if (!result.ok) {
- result.error = line.slice("unpack ".length);
- }
- result.refs = {};
- for (const line2 of lines) {
- if (line2.trim() === "")
- continue;
- const status2 = line2.slice(0, 2);
- const refAndMessage = line2.slice(3);
- let space2 = refAndMessage.indexOf(" ");
- if (space2 === -1)
- space2 = refAndMessage.length;
- const ref = refAndMessage.slice(0, space2);
- const error = refAndMessage.slice(space2 + 1);
- result.refs[ref] = {
- ok: status2 === "ok",
- error
- };
- }
- return result;
- }
- async function writeReceivePackRequest({
- capabilities = [],
- triplets = []
- }) {
- const packstream = [];
- let capsFirstLine = `\0 ${capabilities.join(" ")}`;
- for (const trip of triplets) {
- packstream.push(GitPktLine.encode(`${trip.oldoid} ${trip.oid} ${trip.fullRef}${capsFirstLine}
- `));
- capsFirstLine = "";
- }
- packstream.push(GitPktLine.flush());
- return packstream;
- }
- async function _push({
- fs,
- cache,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- gitdir,
- ref: _ref,
- remoteRef: _remoteRef,
- remote,
- url: _url,
- force = false,
- delete: _delete = false,
- corsProxy,
- headers = {}
- }) {
- const ref = _ref || await _currentBranch({ fs, gitdir });
- if (typeof ref === "undefined") {
- throw new MissingParameterError("ref");
- }
- const config = await GitConfigManager.get({ fs, gitdir });
- remote = remote || await config.get(`branch.${ref}.pushRemote`) || await config.get("remote.pushDefault") || await config.get(`branch.${ref}.remote`) || "origin";
- const url = _url || await config.get(`remote.${remote}.pushurl`) || await config.get(`remote.${remote}.url`);
- if (typeof url === "undefined") {
- throw new MissingParameterError("remote OR url");
- }
- const remoteRef = _remoteRef || await config.get(`branch.${ref}.merge`);
- if (typeof url === "undefined") {
- throw new MissingParameterError("remoteRef");
- }
- if (corsProxy === void 0) {
- corsProxy = await config.get("http.corsProxy");
- }
- const fullRef = await GitRefManager.expand({ fs, gitdir, ref });
- const oid = _delete ? "0000000000000000000000000000000000000000" : await GitRefManager.resolve({ fs, gitdir, ref: fullRef });
- const GitRemoteHTTP2 = GitRemoteManager.getRemoteHelperFor({ url });
- const httpRemote = await GitRemoteHTTP2.discover({
- http,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- corsProxy,
- service: "git-receive-pack",
- url,
- headers,
- protocolVersion: 1
- });
- const auth = httpRemote.auth;
- let fullRemoteRef;
- if (!remoteRef) {
- fullRemoteRef = fullRef;
- } else {
- try {
- fullRemoteRef = await GitRefManager.expandAgainstMap({
- ref: remoteRef,
- map: httpRemote.refs
- });
- } catch (err) {
- if (err instanceof NotFoundError) {
- fullRemoteRef = remoteRef.startsWith("refs/") ? remoteRef : `refs/heads/${remoteRef}`;
- } else {
- throw err;
- }
- }
- }
- const oldoid = httpRemote.refs.get(fullRemoteRef) || "0000000000000000000000000000000000000000";
- const thinPack = !httpRemote.capabilities.has("no-thin");
- let objects = new Set();
- if (!_delete) {
- const finish = [...httpRemote.refs.values()];
- let skipObjects = new Set();
- if (oldoid !== "0000000000000000000000000000000000000000") {
- const mergebase = await _findMergeBase({
- fs,
- cache,
- gitdir,
- oids: [oid, oldoid]
- });
- for (const oid2 of mergebase)
- finish.push(oid2);
- if (thinPack) {
- skipObjects = await listObjects({ fs, cache, gitdir, oids: mergebase });
- }
- }
- if (!finish.includes(oid)) {
- const commits = await listCommitsAndTags({
- fs,
- cache,
- gitdir,
- start: [oid],
- finish
- });
- objects = await listObjects({ fs, cache, gitdir, oids: commits });
- }
- if (thinPack) {
- try {
- const ref2 = await GitRefManager.resolve({
- fs,
- gitdir,
- ref: `refs/remotes/${remote}/HEAD`,
- depth: 2
- });
- const { oid: oid2 } = await GitRefManager.resolveAgainstMap({
- ref: ref2.replace(`refs/remotes/${remote}/`, ""),
- fullref: ref2,
- map: httpRemote.refs
- });
- const oids = [oid2];
- for (const oid3 of await listObjects({ fs, cache, gitdir, oids })) {
- skipObjects.add(oid3);
- }
- } catch (e) {
- }
- for (const oid2 of skipObjects) {
- objects.delete(oid2);
- }
- }
- if (oid === oldoid)
- force = true;
- if (!force) {
- if (fullRef.startsWith("refs/tags") && oldoid !== "0000000000000000000000000000000000000000") {
- throw new PushRejectedError("tag-exists");
- }
- if (oid !== "0000000000000000000000000000000000000000" && oldoid !== "0000000000000000000000000000000000000000" && !await _isDescendent({
- fs,
- cache,
- gitdir,
- oid,
- ancestor: oldoid,
- depth: -1
- })) {
- throw new PushRejectedError("not-fast-forward");
- }
- }
- }
- const capabilities = filterCapabilities([...httpRemote.capabilities], ["report-status", "side-band-64k", `agent=${pkg.agent}`]);
- const packstream1 = await writeReceivePackRequest({
- capabilities,
- triplets: [{ oldoid, oid, fullRef: fullRemoteRef }]
- });
- const packstream2 = _delete ? [] : await _pack({
- fs,
- cache,
- gitdir,
- oids: [...objects]
- });
- const res = await GitRemoteHTTP2.connect({
- http,
- onProgress,
- corsProxy,
- service: "git-receive-pack",
- url,
- auth,
- headers,
- body: [...packstream1, ...packstream2]
- });
- const { packfile, progress } = await GitSideBand.demux(res.body);
- if (onMessage) {
- const lines = splitLines(progress);
- forAwait(lines, async (line) => {
- await onMessage(line);
- });
- }
- const result = await parseReceivePackResponse(packfile);
- if (res.headers) {
- result.headers = res.headers;
- }
- if (remote && result.ok && result.refs[fullRemoteRef].ok) {
- const ref2 = `refs/remotes/${remote}/${fullRemoteRef.replace("refs/heads", "")}`;
- if (_delete) {
- await GitRefManager.deleteRef({ fs, gitdir, ref: ref2 });
- } else {
- await GitRefManager.writeRef({ fs, gitdir, ref: ref2, value: oid });
- }
- }
- if (result.ok && Object.values(result.refs).every((result2) => result2.ok)) {
- return result;
- } else {
- const prettyDetails = Object.entries(result.refs).filter(([k, v]) => !v.ok).map(([k, v]) => `
- - ${k}: ${v.error}`).join("");
- throw new GitPushError(prettyDetails, result);
- }
- }
- async function push({
- fs,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- dir,
- gitdir = join(dir, ".git"),
- ref,
- remoteRef,
- remote = "origin",
- url,
- force = false,
- delete: _delete = false,
- corsProxy,
- headers = {},
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("http", http);
- assertParameter("gitdir", gitdir);
- return await _push({
- fs: new FileSystem(fs),
- cache,
- http,
- onProgress,
- onMessage,
- onAuth,
- onAuthSuccess,
- onAuthFailure,
- gitdir,
- ref,
- remoteRef,
- remote,
- url,
- force,
- delete: _delete,
- corsProxy,
- headers
- });
- } catch (err) {
- err.caller = "git.push";
- throw err;
- }
- }
- async function resolveBlob({ fs, cache, gitdir, oid }) {
- const { type, object } = await _readObject({ fs, cache, gitdir, oid });
- if (type === "tag") {
- oid = GitAnnotatedTag.from(object).parse().object;
- return resolveBlob({ fs, cache, gitdir, oid });
- }
- if (type !== "blob") {
- throw new ObjectTypeError(oid, type, "blob");
- }
- return { oid, blob: new Uint8Array(object) };
- }
- async function _readBlob({
- fs,
- cache,
- gitdir,
- oid,
- filepath = void 0
- }) {
- if (filepath !== void 0) {
- oid = await resolveFilepath({ fs, cache, gitdir, oid, filepath });
- }
- const blob = await resolveBlob({
- fs,
- cache,
- gitdir,
- oid
- });
- return blob;
- }
- async function readBlob({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- oid,
- filepath,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("oid", oid);
- return await _readBlob({
- fs: new FileSystem(fs),
- cache,
- gitdir,
- oid,
- filepath
- });
- } catch (err) {
- err.caller = "git.readBlob";
- throw err;
- }
- }
- async function readCommit({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- oid,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("oid", oid);
- return await _readCommit({
- fs: new FileSystem(fs),
- cache,
- gitdir,
- oid
- });
- } catch (err) {
- err.caller = "git.readCommit";
- throw err;
- }
- }
- async function _readNote({
- fs,
- cache,
- gitdir,
- ref = "refs/notes/commits",
- oid
- }) {
- const parent = await GitRefManager.resolve({ gitdir, fs, ref });
- const { blob } = await _readBlob({
- fs,
- cache,
- gitdir,
- oid: parent,
- filepath: oid
- });
- return blob;
- }
- async function readNote({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- ref = "refs/notes/commits",
- oid,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("ref", ref);
- assertParameter("oid", oid);
- return await _readNote({
- fs: new FileSystem(fs),
- cache,
- gitdir,
- ref,
- oid
- });
- } catch (err) {
- err.caller = "git.readNote";
- throw err;
- }
- }
- async function readObject({
- fs: _fs,
- dir,
- gitdir = join(dir, ".git"),
- oid,
- format = "parsed",
- filepath = void 0,
- encoding = void 0,
- cache = {}
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- assertParameter("oid", oid);
- const fs = new FileSystem(_fs);
- if (filepath !== void 0) {
- oid = await resolveFilepath({
- fs,
- cache,
- gitdir,
- oid,
- filepath
- });
- }
- const _format = format === "parsed" ? "content" : format;
- const result = await _readObject({
- fs,
- cache,
- gitdir,
- oid,
- format: _format
- });
- result.oid = oid;
- if (format === "parsed") {
- result.format = "parsed";
- switch (result.type) {
- case "commit":
- result.object = GitCommit.from(result.object).parse();
- break;
- case "tree":
- result.object = GitTree.from(result.object).entries();
- break;
- case "blob":
- if (encoding) {
- result.object = result.object.toString(encoding);
- } else {
- result.object = new Uint8Array(result.object);
- result.format = "content";
- }
- break;
- case "tag":
- result.object = GitAnnotatedTag.from(result.object).parse();
- break;
- default:
- throw new ObjectTypeError(result.oid, result.type, "blob|commit|tag|tree");
- }
- } else if (result.format === "deflated" || result.format === "wrapped") {
- result.type = result.format;
- }
- return result;
- } catch (err) {
- err.caller = "git.readObject";
- throw err;
- }
- }
- async function _readTag({ fs, cache, gitdir, oid }) {
- const { type, object } = await _readObject({
- fs,
- cache,
- gitdir,
- oid,
- format: "content"
- });
- if (type !== "tag") {
- throw new ObjectTypeError(oid, type, "tag");
- }
- const tag2 = GitAnnotatedTag.from(object);
- const result = {
- oid,
- tag: tag2.parse(),
- payload: tag2.payload()
- };
- return result;
- }
- async function readTag({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- oid,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("oid", oid);
- return await _readTag({
- fs: new FileSystem(fs),
- cache,
- gitdir,
- oid
- });
- } catch (err) {
- err.caller = "git.readTag";
- throw err;
- }
- }
- async function readTree({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- oid,
- filepath = void 0,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("oid", oid);
- return await _readTree({
- fs: new FileSystem(fs),
- cache,
- gitdir,
- oid,
- filepath
- });
- } catch (err) {
- err.caller = "git.readTree";
- throw err;
- }
- }
- async function remove({
- fs: _fs,
- dir,
- gitdir = join(dir, ".git"),
- filepath,
- cache = {}
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- assertParameter("filepath", filepath);
- await GitIndexManager.acquire({ fs: new FileSystem(_fs), gitdir, cache }, async function(index2) {
- index2.delete({ filepath });
- });
- } catch (err) {
- err.caller = "git.remove";
- throw err;
- }
- }
- async function _removeNote({
- fs,
- cache,
- onSign,
- gitdir,
- ref = "refs/notes/commits",
- oid,
- author,
- committer,
- signingKey
- }) {
- let parent;
- try {
- parent = await GitRefManager.resolve({ gitdir, fs, ref });
- } catch (err) {
- if (!(err instanceof NotFoundError)) {
- throw err;
- }
- }
- const result = await _readTree({
- fs,
- gitdir,
- oid: parent || "4b825dc642cb6eb9a060e54bf8d69288fbee4904"
- });
- let tree = result.tree;
- tree = tree.filter((entry) => entry.path !== oid);
- const treeOid = await _writeTree({
- fs,
- gitdir,
- tree
- });
- const commitOid = await _commit({
- fs,
- cache,
- onSign,
- gitdir,
- ref,
- tree: treeOid,
- parent: parent && [parent],
- message: `Note removed by 'isomorphic-git removeNote'
- `,
- author,
- committer,
- signingKey
- });
- return commitOid;
- }
- async function removeNote({
- fs: _fs,
- onSign,
- dir,
- gitdir = join(dir, ".git"),
- ref = "refs/notes/commits",
- oid,
- author: _author,
- committer: _committer,
- signingKey,
- cache = {}
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- assertParameter("oid", oid);
- const fs = new FileSystem(_fs);
- const author = await normalizeAuthorObject({ fs, gitdir, author: _author });
- if (!author)
- throw new MissingNameError("author");
- const committer = await normalizeCommitterObject({
- fs,
- gitdir,
- author,
- committer: _committer
- });
- if (!committer)
- throw new MissingNameError("committer");
- return await _removeNote({
- fs,
- cache,
- onSign,
- gitdir,
- ref,
- oid,
- author,
- committer,
- signingKey
- });
- } catch (err) {
- err.caller = "git.removeNote";
- throw err;
- }
- }
- async function _renameBranch({
- fs,
- gitdir,
- oldref,
- ref,
- checkout: checkout2 = false
- }) {
- if (ref !== import_clean_git_ref.default.clean(ref)) {
- throw new InvalidRefNameError(ref, import_clean_git_ref.default.clean(ref));
- }
- if (oldref !== import_clean_git_ref.default.clean(oldref)) {
- throw new InvalidRefNameError(oldref, import_clean_git_ref.default.clean(oldref));
- }
- const fulloldref = `refs/heads/${oldref}`;
- const fullnewref = `refs/heads/${ref}`;
- const newexist = await GitRefManager.exists({ fs, gitdir, ref: fullnewref });
- if (newexist) {
- throw new AlreadyExistsError("branch", ref, false);
- }
- const value = await GitRefManager.resolve({
- fs,
- gitdir,
- ref: fulloldref,
- depth: 1
- });
- await GitRefManager.writeRef({ fs, gitdir, ref: fullnewref, value });
- await GitRefManager.deleteRef({ fs, gitdir, ref: fulloldref });
- if (checkout2) {
- await GitRefManager.writeSymbolicRef({
- fs,
- gitdir,
- ref: "HEAD",
- value: fullnewref
- });
- }
- }
- async function renameBranch({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- ref,
- oldref,
- checkout: checkout2 = false
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("ref", ref);
- assertParameter("oldref", oldref);
- return await _renameBranch({
- fs: new FileSystem(fs),
- gitdir,
- ref,
- oldref,
- checkout: checkout2
- });
- } catch (err) {
- err.caller = "git.renameBranch";
- throw err;
- }
- }
- async function hashObject$1({ gitdir, type, object }) {
- return shasum(GitObject.wrap({ type, object }));
- }
- async function resetIndex({
- fs: _fs,
- dir,
- gitdir = join(dir, ".git"),
- filepath,
- ref,
- cache = {}
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- assertParameter("filepath", filepath);
- const fs = new FileSystem(_fs);
- let oid;
- let workdirOid;
- try {
- oid = await GitRefManager.resolve({ fs, gitdir, ref: ref || "HEAD" });
- } catch (e) {
- if (ref) {
- throw e;
- }
- }
- if (oid) {
- try {
- oid = await resolveFilepath({
- fs,
- cache,
- gitdir,
- oid,
- filepath
- });
- } catch (e) {
- oid = null;
- }
- }
- let stats = {
- ctime: new Date(0),
- mtime: new Date(0),
- dev: 0,
- ino: 0,
- mode: 0,
- uid: 0,
- gid: 0,
- size: 0
- };
- const object = dir && await fs.read(join(dir, filepath));
- if (object) {
- workdirOid = await hashObject$1({
- gitdir,
- type: "blob",
- object
- });
- if (oid === workdirOid) {
- stats = await fs.lstat(join(dir, filepath));
- }
- }
- await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) {
- index2.delete({ filepath });
- if (oid) {
- index2.insert({ filepath, stats, oid });
- }
- });
- } catch (err) {
- err.caller = "git.reset";
- throw err;
- }
- }
- async function resolveRef({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- ref,
- depth
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("ref", ref);
- const oid = await GitRefManager.resolve({
- fs: new FileSystem(fs),
- gitdir,
- ref,
- depth
- });
- return oid;
- } catch (err) {
- err.caller = "git.resolveRef";
- throw err;
- }
- }
- async function setConfig({
- fs: _fs,
- dir,
- gitdir = join(dir, ".git"),
- path: path2,
- value,
- append: append3 = false
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- assertParameter("path", path2);
- const fs = new FileSystem(_fs);
- const config = await GitConfigManager.get({ fs, gitdir });
- if (append3) {
- await config.append(path2, value);
- } else {
- await config.set(path2, value);
- }
- await GitConfigManager.save({ fs, gitdir, config });
- } catch (err) {
- err.caller = "git.setConfig";
- throw err;
- }
- }
- async function status({
- fs: _fs,
- dir,
- gitdir = join(dir, ".git"),
- filepath,
- cache = {}
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- assertParameter("filepath", filepath);
- const fs = new FileSystem(_fs);
- const ignored = await GitIgnoreManager.isIgnored({
- fs,
- gitdir,
- dir,
- filepath
- });
- if (ignored) {
- return "ignored";
- }
- const headTree = await getHeadTree({ fs, cache, gitdir });
- const treeOid = await getOidAtPath({
- fs,
- cache,
- gitdir,
- tree: headTree,
- path: filepath
- });
- const indexEntry = await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) {
- for (const entry of index2) {
- if (entry.path === filepath)
- return entry;
- }
- return null;
- });
- const stats = await fs.lstat(join(dir, filepath));
- const H = treeOid !== null;
- const I = indexEntry !== null;
- const W = stats !== null;
- const getWorkdirOid = async () => {
- if (I && !compareStats(indexEntry, stats)) {
- return indexEntry.oid;
- } else {
- const object = await fs.read(join(dir, filepath));
- const workdirOid = await hashObject$1({
- gitdir,
- type: "blob",
- object
- });
- if (I && indexEntry.oid === workdirOid) {
- if (stats.size !== -1) {
- GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) {
- index2.insert({ filepath, stats, oid: workdirOid });
- });
- }
- }
- return workdirOid;
- }
- };
- if (!H && !W && !I)
- return "absent";
- if (!H && !W && I)
- return "*absent";
- if (!H && W && !I)
- return "*added";
- if (!H && W && I) {
- const workdirOid = await getWorkdirOid();
- return workdirOid === indexEntry.oid ? "added" : "*added";
- }
- if (H && !W && !I)
- return "deleted";
- if (H && !W && I) {
- return treeOid === indexEntry.oid ? "*deleted" : "*deleted";
- }
- if (H && W && !I) {
- const workdirOid = await getWorkdirOid();
- return workdirOid === treeOid ? "*undeleted" : "*undeletemodified";
- }
- if (H && W && I) {
- const workdirOid = await getWorkdirOid();
- if (workdirOid === treeOid) {
- return workdirOid === indexEntry.oid ? "unmodified" : "*unmodified";
- } else {
- return workdirOid === indexEntry.oid ? "modified" : "*modified";
- }
- }
- } catch (err) {
- err.caller = "git.status";
- throw err;
- }
- }
- async function getOidAtPath({ fs, cache, gitdir, tree, path: path2 }) {
- if (typeof path2 === "string")
- path2 = path2.split("/");
- const dirname2 = path2.shift();
- for (const entry of tree) {
- if (entry.path === dirname2) {
- if (path2.length === 0) {
- return entry.oid;
- }
- const { type, object } = await _readObject({
- fs,
- cache,
- gitdir,
- oid: entry.oid
- });
- if (type === "tree") {
- const tree2 = GitTree.from(object);
- return getOidAtPath({ fs, cache, gitdir, tree: tree2, path: path2 });
- }
- if (type === "blob") {
- throw new ObjectTypeError(entry.oid, type, "blob", path2.join("/"));
- }
- }
- }
- return null;
- }
- async function getHeadTree({ fs, cache, gitdir }) {
- let oid;
- try {
- oid = await GitRefManager.resolve({ fs, gitdir, ref: "HEAD" });
- } catch (e) {
- if (e instanceof NotFoundError) {
- return [];
- }
- }
- const { tree } = await _readTree({ fs, cache, gitdir, oid });
- return tree;
- }
- async function statusMatrix({
- fs: _fs,
- dir,
- gitdir = join(dir, ".git"),
- ref = "HEAD",
- filepaths = ["."],
- filter,
- cache = {},
- ignored: shouldIgnore = false
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- assertParameter("ref", ref);
- const fs = new FileSystem(_fs);
- return await _walk({
- fs,
- cache,
- dir,
- gitdir,
- trees: [TREE({ ref }), WORKDIR(), STAGE()],
- map: async function(filepath, [head, workdir, stage]) {
- if (!head && !stage && workdir) {
- if (!shouldIgnore) {
- const isIgnored2 = await GitIgnoreManager.isIgnored({
- fs,
- dir,
- filepath
- });
- if (isIgnored2) {
- return null;
- }
- }
- }
- if (!filepaths.some((base) => worthWalking(filepath, base))) {
- return null;
- }
- if (filter) {
- if (!filter(filepath))
- return;
- }
- const [headType, workdirType, stageType] = await Promise.all([
- head && head.type(),
- workdir && workdir.type(),
- stage && stage.type()
- ]);
- const isBlob = [headType, workdirType, stageType].includes("blob");
- if ((headType === "tree" || headType === "special") && !isBlob)
- return;
- if (headType === "commit")
- return null;
- if ((workdirType === "tree" || workdirType === "special") && !isBlob)
- return;
- if (stageType === "commit")
- return null;
- if ((stageType === "tree" || stageType === "special") && !isBlob)
- return;
- const headOid = headType === "blob" ? await head.oid() : void 0;
- const stageOid = stageType === "blob" ? await stage.oid() : void 0;
- let workdirOid;
- if (headType !== "blob" && workdirType === "blob" && stageType !== "blob") {
- workdirOid = "42";
- } else if (workdirType === "blob") {
- workdirOid = await workdir.oid();
- }
- const entry = [void 0, headOid, workdirOid, stageOid];
- const result = entry.map((value) => entry.indexOf(value));
- result.shift();
- return [filepath, ...result];
- }
- });
- } catch (err) {
- err.caller = "git.statusMatrix";
- throw err;
- }
- }
- async function tag({
- fs: _fs,
- dir,
- gitdir = join(dir, ".git"),
- ref,
- object,
- force = false
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- assertParameter("ref", ref);
- const fs = new FileSystem(_fs);
- if (ref === void 0) {
- throw new MissingParameterError("ref");
- }
- ref = ref.startsWith("refs/tags/") ? ref : `refs/tags/${ref}`;
- const value = await GitRefManager.resolve({
- fs,
- gitdir,
- ref: object || "HEAD"
- });
- if (!force && await GitRefManager.exists({ fs, gitdir, ref })) {
- throw new AlreadyExistsError("tag", ref);
- }
- await GitRefManager.writeRef({ fs, gitdir, ref, value });
- } catch (err) {
- err.caller = "git.tag";
- throw err;
- }
- }
- async function updateIndex({
- fs: _fs,
- dir,
- gitdir = join(dir, ".git"),
- cache = {},
- filepath,
- oid,
- mode,
- add: add2,
- remove: remove3,
- force
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- assertParameter("filepath", filepath);
- const fs = new FileSystem(_fs);
- if (remove3) {
- return await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) {
- let fileStats2;
- if (!force) {
- fileStats2 = await fs.lstat(join(dir, filepath));
- if (fileStats2) {
- if (fileStats2.isDirectory()) {
- throw new InvalidFilepathError("directory");
- }
- return;
- }
- }
- if (index2.has({ filepath })) {
- index2.delete({
- filepath
- });
- }
- });
- }
- let fileStats;
- if (!oid) {
- fileStats = await fs.lstat(join(dir, filepath));
- if (!fileStats) {
- throw new NotFoundError(`file at "${filepath}" on disk and "remove" not set`);
- }
- if (fileStats.isDirectory()) {
- throw new InvalidFilepathError("directory");
- }
- }
- return await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) {
- if (!add2 && !index2.has({ filepath })) {
- throw new NotFoundError(`file at "${filepath}" in index and "add" not set`);
- }
- let stats = {
- ctime: new Date(0),
- mtime: new Date(0),
- dev: 0,
- ino: 0,
- mode,
- uid: 0,
- gid: 0,
- size: 0
- };
- if (!oid) {
- stats = fileStats;
- const object = stats.isSymbolicLink() ? await fs.readlink(join(dir, filepath)) : await fs.read(join(dir, filepath));
- oid = await _writeObject({
- fs,
- gitdir,
- type: "blob",
- format: "content",
- object
- });
- }
- index2.insert({
- filepath,
- oid,
- stats
- });
- return oid;
- });
- } catch (err) {
- err.caller = "git.updateIndex";
- throw err;
- }
- }
- function version() {
- try {
- return pkg.version;
- } catch (err) {
- err.caller = "git.version";
- throw err;
- }
- }
- async function walk({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- trees,
- map,
- reduce,
- iterate,
- cache = {}
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("trees", trees);
- return await _walk({
- fs: new FileSystem(fs),
- cache,
- dir,
- gitdir,
- trees,
- map,
- reduce,
- iterate
- });
- } catch (err) {
- err.caller = "git.walk";
- throw err;
- }
- }
- async function writeBlob({ fs, dir, gitdir = join(dir, ".git"), blob }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("blob", blob);
- return await _writeObject({
- fs: new FileSystem(fs),
- gitdir,
- type: "blob",
- object: blob,
- format: "content"
- });
- } catch (err) {
- err.caller = "git.writeBlob";
- throw err;
- }
- }
- async function _writeCommit({ fs, gitdir, commit: commit2 }) {
- const object = GitCommit.from(commit2).toObject();
- const oid = await _writeObject({
- fs,
- gitdir,
- type: "commit",
- object,
- format: "content"
- });
- return oid;
- }
- async function writeCommit({
- fs,
- dir,
- gitdir = join(dir, ".git"),
- commit: commit2
- }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("commit", commit2);
- return await _writeCommit({
- fs: new FileSystem(fs),
- gitdir,
- commit: commit2
- });
- } catch (err) {
- err.caller = "git.writeCommit";
- throw err;
- }
- }
- async function writeObject({
- fs: _fs,
- dir,
- gitdir = join(dir, ".git"),
- type,
- object,
- format = "parsed",
- oid,
- encoding = void 0
- }) {
- try {
- const fs = new FileSystem(_fs);
- if (format === "parsed") {
- switch (type) {
- case "commit":
- object = GitCommit.from(object).toObject();
- break;
- case "tree":
- object = GitTree.from(object).toObject();
- break;
- case "blob":
- object = Buffer2.from(object, encoding);
- break;
- case "tag":
- object = GitAnnotatedTag.from(object).toObject();
- break;
- default:
- throw new ObjectTypeError(oid || "", type, "blob|commit|tag|tree");
- }
- format = "content";
- }
- oid = await _writeObject({
- fs,
- gitdir,
- type,
- object,
- oid,
- format
- });
- return oid;
- } catch (err) {
- err.caller = "git.writeObject";
- throw err;
- }
- }
- async function writeRef({
- fs: _fs,
- dir,
- gitdir = join(dir, ".git"),
- ref,
- value,
- force = false,
- symbolic = false
- }) {
- try {
- assertParameter("fs", _fs);
- assertParameter("gitdir", gitdir);
- assertParameter("ref", ref);
- assertParameter("value", value);
- const fs = new FileSystem(_fs);
- if (ref !== import_clean_git_ref.default.clean(ref)) {
- throw new InvalidRefNameError(ref, import_clean_git_ref.default.clean(ref));
- }
- if (!force && await GitRefManager.exists({ fs, gitdir, ref })) {
- throw new AlreadyExistsError("ref", ref);
- }
- if (symbolic) {
- await GitRefManager.writeSymbolicRef({
- fs,
- gitdir,
- ref,
- value
- });
- } else {
- value = await GitRefManager.resolve({
- fs,
- gitdir,
- ref: value
- });
- await GitRefManager.writeRef({
- fs,
- gitdir,
- ref,
- value
- });
- }
- } catch (err) {
- err.caller = "git.writeRef";
- throw err;
- }
- }
- async function _writeTag({ fs, gitdir, tag: tag2 }) {
- const object = GitAnnotatedTag.from(tag2).toObject();
- const oid = await _writeObject({
- fs,
- gitdir,
- type: "tag",
- object,
- format: "content"
- });
- return oid;
- }
- async function writeTag({ fs, dir, gitdir = join(dir, ".git"), tag: tag2 }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("tag", tag2);
- return await _writeTag({
- fs: new FileSystem(fs),
- gitdir,
- tag: tag2
- });
- } catch (err) {
- err.caller = "git.writeTag";
- throw err;
- }
- }
- async function writeTree({ fs, dir, gitdir = join(dir, ".git"), tree }) {
- try {
- assertParameter("fs", fs);
- assertParameter("gitdir", gitdir);
- assertParameter("tree", tree);
- return await _writeTree({
- fs: new FileSystem(fs),
- gitdir,
- tree
- });
- } catch (err) {
- err.caller = "git.writeTree";
- throw err;
- }
- }
- var index = {
- Errors,
- STAGE,
- TREE,
- WORKDIR,
- add,
- addNote,
- addRemote,
- annotatedTag,
- branch,
- checkout,
- clone,
- commit,
- getConfig,
- getConfigAll,
- setConfig,
- currentBranch,
- deleteBranch,
- deleteRef,
- deleteRemote,
- deleteTag,
- expandOid,
- expandRef,
- fastForward,
- fetch,
- findMergeBase,
- findRoot,
- getRemoteInfo,
- getRemoteInfo2,
- hashBlob,
- indexPack,
- init,
- isDescendent,
- isIgnored,
- listBranches,
- listFiles,
- listNotes,
- listRemotes,
- listServerRefs,
- listTags,
- log,
- merge,
- packObjects,
- pull,
- push,
- readBlob,
- readCommit,
- readNote,
- readObject,
- readTag,
- readTree,
- remove,
- removeNote,
- renameBranch,
- resetIndex,
- updateIndex,
- resolveRef,
- status,
- statusMatrix,
- tag,
- version,
- walk,
- writeBlob,
- writeCommit,
- writeObject,
- writeRef,
- writeTag,
- writeTree
- };
- var isomorphic_git_default = index;
- // src/main.ts
- var import_obsidian23 = __toModule(require("obsidian"));
- // src/promiseQueue.ts
- init_polyfill_buffer();
- var PromiseQueue = class {
- constructor() {
- this.tasks = [];
- }
- addTask(task) {
- this.tasks.push(task);
- if (this.tasks.length === 1) {
- this.handleTask();
- }
- }
- async handleTask() {
- if (this.tasks.length > 0) {
- this.tasks[0]().finally(() => {
- this.tasks.shift();
- this.handleTask();
- });
- }
- }
- };
- // src/settings.ts
- init_polyfill_buffer();
- var import_obsidian7 = __toModule(require("obsidian"));
- // src/isomorphicGit.ts
- init_polyfill_buffer();
- // node_modules/diff/lib/index.mjs
- init_polyfill_buffer();
- function Diff() {
- }
- Diff.prototype = {
- diff: function diff(oldString, newString) {
- var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
- var callback = options.callback;
- if (typeof options === "function") {
- callback = options;
- options = {};
- }
- this.options = options;
- var self3 = this;
- function done(value) {
- if (callback) {
- setTimeout(function() {
- callback(void 0, value);
- }, 0);
- return true;
- } else {
- return value;
- }
- }
- oldString = this.castInput(oldString);
- newString = this.castInput(newString);
- oldString = this.removeEmpty(this.tokenize(oldString));
- newString = this.removeEmpty(this.tokenize(newString));
- var newLen = newString.length, oldLen = oldString.length;
- var editLength = 1;
- var maxEditLength = newLen + oldLen;
- if (options.maxEditLength) {
- maxEditLength = Math.min(maxEditLength, options.maxEditLength);
- }
- var bestPath = [{
- newPos: -1,
- components: []
- }];
- var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
- if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
- return done([{
- value: this.join(newString),
- count: newString.length
- }]);
- }
- function execEditLength() {
- for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
- var basePath = void 0;
- var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
- if (addPath) {
- bestPath[diagonalPath - 1] = void 0;
- }
- var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
- if (!canAdd && !canRemove) {
- bestPath[diagonalPath] = void 0;
- continue;
- }
- if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
- basePath = clonePath(removePath);
- self3.pushComponent(basePath.components, void 0, true);
- } else {
- basePath = addPath;
- basePath.newPos++;
- self3.pushComponent(basePath.components, true, void 0);
- }
- _oldPos = self3.extractCommon(basePath, newString, oldString, diagonalPath);
- if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
- return done(buildValues(self3, basePath.components, newString, oldString, self3.useLongestToken));
- } else {
- bestPath[diagonalPath] = basePath;
- }
- }
- editLength++;
- }
- if (callback) {
- (function exec() {
- setTimeout(function() {
- if (editLength > maxEditLength) {
- return callback();
- }
- if (!execEditLength()) {
- exec();
- }
- }, 0);
- })();
- } else {
- while (editLength <= maxEditLength) {
- var ret = execEditLength();
- if (ret) {
- return ret;
- }
- }
- }
- },
- pushComponent: function pushComponent(components, added, removed) {
- var last2 = components[components.length - 1];
- if (last2 && last2.added === added && last2.removed === removed) {
- components[components.length - 1] = {
- count: last2.count + 1,
- added,
- removed
- };
- } else {
- components.push({
- count: 1,
- added,
- removed
- });
- }
- },
- extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
- var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0;
- while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
- newPos++;
- oldPos++;
- commonCount++;
- }
- if (commonCount) {
- basePath.components.push({
- count: commonCount
- });
- }
- basePath.newPos = newPos;
- return oldPos;
- },
- equals: function equals(left, right) {
- if (this.options.comparator) {
- return this.options.comparator(left, right);
- } else {
- return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();
- }
- },
- removeEmpty: function removeEmpty(array) {
- var ret = [];
- for (var i = 0; i < array.length; i++) {
- if (array[i]) {
- ret.push(array[i]);
- }
- }
- return ret;
- },
- castInput: function castInput(value) {
- return value;
- },
- tokenize: function tokenize(value) {
- return value.split("");
- },
- join: function join2(chars) {
- return chars.join("");
- }
- };
- function buildValues(diff2, components, newString, oldString, useLongestToken) {
- var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0;
- for (; componentPos < componentLen; componentPos++) {
- var component = components[componentPos];
- if (!component.removed) {
- if (!component.added && useLongestToken) {
- var value = newString.slice(newPos, newPos + component.count);
- value = value.map(function(value2, i) {
- var oldValue = oldString[oldPos + i];
- return oldValue.length > value2.length ? oldValue : value2;
- });
- component.value = diff2.join(value);
- } else {
- component.value = diff2.join(newString.slice(newPos, newPos + component.count));
- }
- newPos += component.count;
- if (!component.added) {
- oldPos += component.count;
- }
- } else {
- component.value = diff2.join(oldString.slice(oldPos, oldPos + component.count));
- oldPos += component.count;
- if (componentPos && components[componentPos - 1].added) {
- var tmp = components[componentPos - 1];
- components[componentPos - 1] = components[componentPos];
- components[componentPos] = tmp;
- }
- }
- }
- var lastComponent = components[componentLen - 1];
- if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff2.equals("", lastComponent.value)) {
- components[componentLen - 2].value += lastComponent.value;
- components.pop();
- }
- return components;
- }
- function clonePath(path2) {
- return {
- newPos: path2.newPos,
- components: path2.components.slice(0)
- };
- }
- var characterDiff = new Diff();
- function diffChars(oldStr, newStr, options) {
- return characterDiff.diff(oldStr, newStr, options);
- }
- var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
- var reWhitespace = /\S/;
- var wordDiff = new Diff();
- wordDiff.equals = function(left, right) {
- if (this.options.ignoreCase) {
- left = left.toLowerCase();
- right = right.toLowerCase();
- }
- return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
- };
- wordDiff.tokenize = function(value) {
- var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/);
- for (var i = 0; i < tokens.length - 1; i++) {
- if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
- tokens[i] += tokens[i + 2];
- tokens.splice(i + 1, 2);
- i--;
- }
- }
- return tokens;
- };
- function diffWordsWithSpace(oldStr, newStr, options) {
- return wordDiff.diff(oldStr, newStr, options);
- }
- var lineDiff = new Diff();
- lineDiff.tokenize = function(value) {
- var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/);
- if (!linesAndNewlines[linesAndNewlines.length - 1]) {
- linesAndNewlines.pop();
- }
- for (var i = 0; i < linesAndNewlines.length; i++) {
- var line = linesAndNewlines[i];
- if (i % 2 && !this.options.newlineIsToken) {
- retLines[retLines.length - 1] += line;
- } else {
- if (this.options.ignoreWhitespace) {
- line = line.trim();
- }
- retLines.push(line);
- }
- }
- return retLines;
- };
- function diffLines(oldStr, newStr, callback) {
- return lineDiff.diff(oldStr, newStr, callback);
- }
- var sentenceDiff = new Diff();
- sentenceDiff.tokenize = function(value) {
- return value.split(/(\S.+?[.!?])(?=\s+|$)/);
- };
- var cssDiff = new Diff();
- cssDiff.tokenize = function(value) {
- return value.split(/([{}:;,]|\s+)/);
- };
- function _typeof(obj) {
- "@babel/helpers - typeof";
- if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
- _typeof = function(obj2) {
- return typeof obj2;
- };
- } else {
- _typeof = function(obj2) {
- return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
- };
- }
- return _typeof(obj);
- }
- function _toConsumableArray(arr) {
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
- }
- function _arrayWithoutHoles(arr) {
- if (Array.isArray(arr))
- return _arrayLikeToArray(arr);
- }
- function _iterableToArray(iter) {
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter))
- return Array.from(iter);
- }
- function _unsupportedIterableToArray(o, minLen) {
- if (!o)
- return;
- if (typeof o === "string")
- return _arrayLikeToArray(o, minLen);
- var n = Object.prototype.toString.call(o).slice(8, -1);
- if (n === "Object" && o.constructor)
- n = o.constructor.name;
- if (n === "Map" || n === "Set")
- return Array.from(o);
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
- return _arrayLikeToArray(o, minLen);
- }
- function _arrayLikeToArray(arr, len) {
- if (len == null || len > arr.length)
- len = arr.length;
- for (var i = 0, arr2 = new Array(len); i < len; i++)
- arr2[i] = arr[i];
- return arr2;
- }
- function _nonIterableSpread() {
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
- }
- var objectPrototypeToString = Object.prototype.toString;
- var jsonDiff = new Diff();
- jsonDiff.useLongestToken = true;
- jsonDiff.tokenize = lineDiff.tokenize;
- jsonDiff.castInput = function(value) {
- var _this$options = this.options, undefinedReplacement = _this$options.undefinedReplacement, _this$options$stringi = _this$options.stringifyReplacer, stringifyReplacer = _this$options$stringi === void 0 ? function(k, v) {
- return typeof v === "undefined" ? undefinedReplacement : v;
- } : _this$options$stringi;
- return typeof value === "string" ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, " ");
- };
- jsonDiff.equals = function(left, right) {
- return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1"));
- };
- function canonicalize(obj, stack, replacementStack, replacer, key2) {
- stack = stack || [];
- replacementStack = replacementStack || [];
- if (replacer) {
- obj = replacer(key2, obj);
- }
- var i;
- for (i = 0; i < stack.length; i += 1) {
- if (stack[i] === obj) {
- return replacementStack[i];
- }
- }
- var canonicalizedObj;
- if (objectPrototypeToString.call(obj) === "[object Array]") {
- stack.push(obj);
- canonicalizedObj = new Array(obj.length);
- replacementStack.push(canonicalizedObj);
- for (i = 0; i < obj.length; i += 1) {
- canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key2);
- }
- stack.pop();
- replacementStack.pop();
- return canonicalizedObj;
- }
- if (obj && obj.toJSON) {
- obj = obj.toJSON();
- }
- if (_typeof(obj) === "object" && obj !== null) {
- stack.push(obj);
- canonicalizedObj = {};
- replacementStack.push(canonicalizedObj);
- var sortedKeys = [], _key;
- for (_key in obj) {
- if (obj.hasOwnProperty(_key)) {
- sortedKeys.push(_key);
- }
- }
- sortedKeys.sort();
- for (i = 0; i < sortedKeys.length; i += 1) {
- _key = sortedKeys[i];
- canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);
- }
- stack.pop();
- replacementStack.pop();
- } else {
- canonicalizedObj = obj;
- }
- return canonicalizedObj;
- }
- var arrayDiff = new Diff();
- arrayDiff.tokenize = function(value) {
- return value.slice();
- };
- arrayDiff.join = arrayDiff.removeEmpty = function(value) {
- return value;
- };
- function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
- if (!options) {
- options = {};
- }
- if (typeof options.context === "undefined") {
- options.context = 4;
- }
- var diff2 = diffLines(oldStr, newStr, options);
- if (!diff2) {
- return;
- }
- diff2.push({
- value: "",
- lines: []
- });
- function contextLines(lines) {
- return lines.map(function(entry) {
- return " " + entry;
- });
- }
- var hunks = [];
- var oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1;
- var _loop = function _loop2(i2) {
- var current = diff2[i2], lines = current.lines || current.value.replace(/\n$/, "").split("\n");
- current.lines = lines;
- if (current.added || current.removed) {
- var _curRange;
- if (!oldRangeStart) {
- var prev = diff2[i2 - 1];
- oldRangeStart = oldLine;
- newRangeStart = newLine;
- if (prev) {
- curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
- oldRangeStart -= curRange.length;
- newRangeStart -= curRange.length;
- }
- }
- (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function(entry) {
- return (current.added ? "+" : "-") + entry;
- })));
- if (current.added) {
- newLine += lines.length;
- } else {
- oldLine += lines.length;
- }
- } else {
- if (oldRangeStart) {
- if (lines.length <= options.context * 2 && i2 < diff2.length - 2) {
- var _curRange2;
- (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));
- } else {
- var _curRange3;
- var contextSize = Math.min(lines.length, options.context);
- (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));
- var hunk = {
- oldStart: oldRangeStart,
- oldLines: oldLine - oldRangeStart + contextSize,
- newStart: newRangeStart,
- newLines: newLine - newRangeStart + contextSize,
- lines: curRange
- };
- if (i2 >= diff2.length - 2 && lines.length <= options.context) {
- var oldEOFNewline = /\n$/.test(oldStr);
- var newEOFNewline = /\n$/.test(newStr);
- var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;
- if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {
- curRange.splice(hunk.oldLines, 0, "\\ No newline at end of file");
- }
- if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {
- curRange.push("\\ No newline at end of file");
- }
- }
- hunks.push(hunk);
- oldRangeStart = 0;
- newRangeStart = 0;
- curRange = [];
- }
- }
- oldLine += lines.length;
- newLine += lines.length;
- }
- };
- for (var i = 0; i < diff2.length; i++) {
- _loop(i);
- }
- return {
- oldFileName,
- newFileName,
- oldHeader,
- newHeader,
- hunks
- };
- }
- function formatPatch(diff2) {
- var ret = [];
- if (diff2.oldFileName == diff2.newFileName) {
- ret.push("Index: " + diff2.oldFileName);
- }
- ret.push("===================================================================");
- ret.push("--- " + diff2.oldFileName + (typeof diff2.oldHeader === "undefined" ? "" : " " + diff2.oldHeader));
- ret.push("+++ " + diff2.newFileName + (typeof diff2.newHeader === "undefined" ? "" : " " + diff2.newHeader));
- for (var i = 0; i < diff2.hunks.length; i++) {
- var hunk = diff2.hunks[i];
- if (hunk.oldLines === 0) {
- hunk.oldStart -= 1;
- }
- if (hunk.newLines === 0) {
- hunk.newStart -= 1;
- }
- ret.push("@@ -" + hunk.oldStart + "," + hunk.oldLines + " +" + hunk.newStart + "," + hunk.newLines + " @@");
- ret.push.apply(ret, hunk.lines);
- }
- return ret.join("\n") + "\n";
- }
- function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
- return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));
- }
- function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
- return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
- }
- // src/isomorphicGit.ts
- var import_obsidian5 = __toModule(require("obsidian"));
- // src/gitManager.ts
- init_polyfill_buffer();
- var GitManager = class {
- constructor(plugin) {
- this.plugin = plugin;
- this.app = plugin.app;
- }
- getVaultPath(path2) {
- if (this.plugin.settings.basePath) {
- return this.plugin.settings.basePath + "/" + path2;
- } else {
- return path2;
- }
- }
- getPath(path2, relativeToVault) {
- return relativeToVault && this.plugin.settings.basePath.length > 0 ? path2.substring(this.plugin.settings.basePath.length + 1) : path2;
- }
- _getTreeStructure(children2, beginLength = 0) {
- const list = [];
- children2 = [...children2];
- while (children2.length > 0) {
- const first2 = children2.first();
- const restPath = first2.path.substring(beginLength);
- if (restPath.contains("/")) {
- const title = restPath.substring(0, restPath.indexOf("/"));
- const childrenWithSameTitle = children2.filter((item) => {
- return item.path.substring(beginLength).startsWith(title + "/");
- });
- childrenWithSameTitle.forEach((item) => children2.remove(item));
- const path2 = first2.path.substring(0, restPath.indexOf("/") + beginLength);
- list.push({
- title,
- path: path2,
- vaultPath: this.getVaultPath(path2),
- children: this._getTreeStructure(childrenWithSameTitle, (beginLength > 0 ? beginLength + title.length : title.length) + 1)
- });
- } else {
- list.push({
- title: restPath,
- statusResult: first2,
- path: first2.path,
- vaultPath: this.getVaultPath(first2.path)
- });
- children2.remove(first2);
- }
- }
- return list;
- }
- simplify(tree) {
- var _a2, _b, _c, _d;
- for (const node of tree) {
- while (true) {
- const singleChild = ((_a2 = node.children) == null ? void 0 : _a2.length) == 1;
- const singleChildIsDir = ((_c = (_b = node.children) == null ? void 0 : _b.first()) == null ? void 0 : _c.statusResult) == void 0;
- if (!(node.children != void 0 && singleChild && singleChildIsDir))
- break;
- const child = node.children.first();
- node.title += "/" + child.title;
- node.statusResult = child.statusResult;
- node.path = child.path;
- node.vaultPath = child.vaultPath;
- node.children = child.children;
- }
- if (node.children != void 0) {
- this.simplify(node.children);
- }
- (_d = node.children) == null ? void 0 : _d.sort((a, b) => {
- const dirCompare = (b.statusResult == void 0 ? 1 : 0) - (a.statusResult == void 0 ? 1 : 0);
- if (dirCompare != 0) {
- return dirCompare;
- } else {
- return a.title.localeCompare(b.title);
- }
- });
- }
- return tree.sort((a, b) => {
- const dirCompare = (b.statusResult == void 0 ? 1 : 0) - (a.statusResult == void 0 ? 1 : 0);
- if (dirCompare != 0) {
- return dirCompare;
- } else {
- return a.title.localeCompare(b.title);
- }
- });
- }
- getTreeStructure(children2) {
- const tree = this._getTreeStructure(children2);
- const res = this.simplify(tree);
- return res;
- }
- async formatCommitMessage(template) {
- let status2;
- if (template.includes("{{numFiles}}")) {
- status2 = await this.status();
- const numFiles = status2.staged.length;
- template = template.replace("{{numFiles}}", String(numFiles));
- }
- if (template.includes("{{hostname}}")) {
- const hostname = this.plugin.localStorage.getHostname() || "";
- template = template.replace("{{hostname}}", hostname);
- }
- if (template.includes("{{files}}")) {
- status2 = status2 != null ? status2 : await this.status();
- const changeset = {};
- status2.staged.forEach((value) => {
- if (value.index in changeset) {
- changeset[value.index].push(value.path);
- } else {
- changeset[value.index] = [value.path];
- }
- });
- const chunks = [];
- for (const [action, files2] of Object.entries(changeset)) {
- chunks.push(action + " " + files2.join(" "));
- }
- const files = chunks.join(", ");
- template = template.replace("{{files}}", files);
- }
- const moment = window.moment;
- template = template.replace("{{date}}", moment().format(this.plugin.settings.commitDateFormat));
- if (this.plugin.settings.listChangedFilesInMessageBody) {
- template = template + "\n\nAffected files:\n" + (status2 != null ? status2 : await this.status()).staged.map((e) => e.path).join("\n");
- }
- return template;
- }
- };
- // src/myAdapter.ts
- init_polyfill_buffer();
- var import_obsidian2 = __toModule(require("obsidian"));
- var MyAdapter = class {
- constructor(vault, plugin) {
- this.plugin = plugin;
- this.promises = {};
- this.adapter = vault.adapter;
- this.vault = vault;
- this.promises.readFile = this.readFile.bind(this);
- this.promises.writeFile = this.writeFile.bind(this);
- this.promises.readdir = this.readdir.bind(this);
- this.promises.mkdir = this.mkdir.bind(this);
- this.promises.rmdir = this.rmdir.bind(this);
- this.promises.stat = this.stat.bind(this);
- this.promises.unlink = this.unlink.bind(this);
- this.promises.lstat = this.lstat.bind(this);
- this.promises.readlink = this.readlink.bind(this);
- this.promises.symlink = this.symlink.bind(this);
- }
- async readFile(path2, opts) {
- var _a2;
- this.maybeLog("Read: " + path2 + JSON.stringify(opts));
- if (opts == "utf8" || opts.encoding == "utf8") {
- const file = this.vault.getAbstractFileByPath(path2);
- if (file instanceof import_obsidian2.TFile) {
- this.maybeLog("Reuse");
- return this.vault.read(file);
- } else {
- return this.adapter.read(path2);
- }
- } else {
- if (path2.endsWith(".git/index")) {
- return (_a2 = this.index) != null ? _a2 : this.adapter.readBinary(path2);
- }
- const file = this.vault.getAbstractFileByPath(path2);
- if (file instanceof import_obsidian2.TFile) {
- this.maybeLog("Reuse");
- return this.vault.readBinary(file);
- } else {
- return this.adapter.readBinary(path2);
- }
- }
- }
- async writeFile(path2, data) {
- this.maybeLog("Write: " + path2);
- if (typeof data === "string") {
- const file = this.vault.getAbstractFileByPath(path2);
- if (file instanceof import_obsidian2.TFile) {
- return this.vault.modify(file, data);
- } else {
- return this.adapter.write(path2, data);
- }
- } else {
- if (path2.endsWith(".git/index")) {
- this.index = data;
- this.indexmtime = Date.now();
- } else {
- const file = this.vault.getAbstractFileByPath(path2);
- if (file instanceof import_obsidian2.TFile) {
- return this.vault.modifyBinary(file, data);
- } else {
- return this.adapter.writeBinary(path2, data);
- }
- }
- }
- }
- async readdir(path2) {
- if (path2 === ".")
- path2 = "/";
- const res = await this.adapter.list(path2);
- const all = [...res.files, ...res.folders];
- let formattedAll;
- if (path2 !== "/") {
- formattedAll = all.map((e) => (0, import_obsidian2.normalizePath)(e.substring(path2.length)));
- } else {
- formattedAll = all;
- }
- return formattedAll;
- }
- async mkdir(path2) {
- return this.adapter.mkdir(path2);
- }
- async rmdir(path2, opts) {
- var _a2, _b;
- return this.adapter.rmdir(path2, (_b = (_a2 = opts == null ? void 0 : opts.options) == null ? void 0 : _a2.recursive) != null ? _b : false);
- }
- async stat(path2) {
- if (path2.endsWith(".git/index")) {
- if (this.index !== void 0 && this.indexctime != void 0 && this.indexmtime != void 0) {
- return {
- isFile: () => true,
- isDirectory: () => false,
- isSymbolicLink: () => false,
- size: this.index.length,
- type: "file",
- ctimeMs: this.indexctime,
- mtimeMs: this.indexmtime
- };
- } else {
- const stat = await this.adapter.stat(path2);
- if (stat == void 0) {
- throw { "code": "ENOENT" };
- }
- this.indexctime = stat.ctime;
- this.indexmtime = stat.mtime;
- return {
- ctimeMs: stat.ctime,
- mtimeMs: stat.mtime,
- size: stat.size,
- type: "file",
- isFile: () => true,
- isDirectory: () => false,
- isSymbolicLink: () => false
- };
- }
- }
- if (path2 === ".")
- path2 = "/";
- const file = this.vault.getAbstractFileByPath(path2);
- this.maybeLog("Stat: " + path2);
- if (file instanceof import_obsidian2.TFile) {
- this.maybeLog("Reuse stat");
- return {
- ctimeMs: file.stat.ctime,
- mtimeMs: file.stat.mtime,
- size: file.stat.size,
- type: "file",
- isFile: () => true,
- isDirectory: () => false,
- isSymbolicLink: () => false
- };
- } else {
- const stat = await this.adapter.stat(path2);
- if (stat) {
- return {
- ctimeMs: stat.ctime,
- mtimeMs: stat.mtime,
- size: stat.size,
- type: stat.type === "folder" ? "directory" : stat.type,
- isFile: () => stat.type === "file",
- isDirectory: () => stat.type === "folder",
- isSymbolicLink: () => false
- };
- } else {
- throw { "code": "ENOENT" };
- }
- }
- }
- async unlink(path2) {
- return this.adapter.remove(path2);
- }
- async lstat(path2) {
- return this.stat(path2);
- }
- async readlink(path2) {
- throw new Error(`readlink of (${path2}) is not implemented.`);
- }
- async symlink(path2) {
- throw new Error(`symlink of (${path2}) is not implemented.`);
- }
- async saveAndClear() {
- if (this.index !== void 0) {
- await this.adapter.writeBinary(this.plugin.gitManager.getVaultPath(".git/index"), this.index, {
- ctime: this.indexctime,
- mtime: this.indexmtime
- });
- }
- this.index = void 0;
- this.indexctime = void 0;
- this.indexmtime = void 0;
- }
- maybeLog(text2) {
- }
- };
- // src/types.ts
- init_polyfill_buffer();
- var PluginState;
- (function(PluginState2) {
- PluginState2[PluginState2["idle"] = 0] = "idle";
- PluginState2[PluginState2["status"] = 1] = "status";
- PluginState2[PluginState2["pull"] = 2] = "pull";
- PluginState2[PluginState2["add"] = 3] = "add";
- PluginState2[PluginState2["commit"] = 4] = "commit";
- PluginState2[PluginState2["push"] = 5] = "push";
- PluginState2[PluginState2["conflicted"] = 6] = "conflicted";
- })(PluginState || (PluginState = {}));
- var FileType;
- (function(FileType2) {
- FileType2[FileType2["staged"] = 0] = "staged";
- FileType2[FileType2["changed"] = 1] = "changed";
- FileType2[FileType2["pulled"] = 2] = "pulled";
- })(FileType || (FileType = {}));
- // src/ui/modals/generalModal.ts
- init_polyfill_buffer();
- var import_obsidian3 = __toModule(require("obsidian"));
- var generalModalConfigDefaults = {
- options: [],
- placeholder: "",
- allowEmpty: false,
- onlySelection: false,
- initialValue: void 0
- };
- var GeneralModal = class extends import_obsidian3.SuggestModal {
- constructor(config) {
- super(app);
- this.config = { ...generalModalConfigDefaults, ...config };
- this.setPlaceholder(this.config.placeholder);
- }
- open() {
- super.open();
- if (this.config.initialValue != void 0) {
- this.inputEl.value = this.config.initialValue;
- this.inputEl.dispatchEvent(new Event("input"));
- }
- return new Promise((resolve) => {
- this.resolve = resolve;
- });
- }
- selectSuggestion(value, evt) {
- if (this.resolve) {
- let res;
- if (this.config.allowEmpty && value === " ")
- res = "";
- else if (value === "...")
- res = void 0;
- else
- res = value;
- this.resolve(res);
- }
- super.selectSuggestion(value, evt);
- }
- onClose() {
- if (this.resolve)
- this.resolve(void 0);
- }
- getSuggestions(query) {
- if (this.config.onlySelection) {
- return this.config.options;
- } else if (this.config.allowEmpty) {
- return [query.length > 0 ? query : " ", ...this.config.options];
- } else {
- return [query.length > 0 ? query : "...", ...this.config.options];
- }
- }
- renderSuggestion(value, el) {
- el.setText(value);
- }
- onChooseSuggestion(item, evt) {
- }
- };
- // src/utils.ts
- init_polyfill_buffer();
- var import_obsidian4 = __toModule(require("obsidian"));
- var worthWalking2 = (filepath, root) => {
- if (filepath === "." || root == null || root.length === 0 || root === ".") {
- return true;
- }
- if (root.length >= filepath.length) {
- return root.startsWith(filepath);
- } else {
- return filepath.startsWith(root);
- }
- };
- function getNewLeaf(event) {
- let leaf;
- if (event) {
- if (event.button === 0 || event.button === 1) {
- const type = import_obsidian4.Keymap.isModEvent(event);
- leaf = app.workspace.getLeaf(type);
- }
- } else {
- leaf = app.workspace.getLeaf(false);
- }
- return leaf;
- }
- // src/isomorphicGit.ts
- var IsomorphicGit = class extends GitManager {
- constructor(plugin) {
- super(plugin);
- this.FILE = 0;
- this.HEAD = 1;
- this.WORKDIR = 2;
- this.STAGE = 3;
- this.status_mapping = {
- "000": " ",
- "003": "AD",
- "020": "??",
- "022": "A ",
- "023": "AM",
- "100": "D ",
- "101": " D",
- "103": "MD",
- "110": "DA",
- "111": " ",
- "120": "DA",
- "121": " M",
- "122": "M ",
- "123": "MM"
- };
- this.noticeLength = 999999;
- this.fs = new MyAdapter(this.app.vault, this.plugin);
- }
- getRepo() {
- return {
- fs: this.fs,
- dir: this.plugin.settings.basePath,
- onAuth: () => {
- var _a2, _b;
- return {
- username: (_a2 = this.plugin.localStorage.getUsername()) != null ? _a2 : void 0,
- password: (_b = this.plugin.localStorage.getPassword()) != null ? _b : void 0
- };
- },
- onAuthFailure: async () => {
- new import_obsidian5.Notice("Authentication failed. Please try with different credentials");
- const username = await new GeneralModal({ placeholder: "Specify your username" }).open();
- if (username) {
- const password = await new GeneralModal({ placeholder: "Specify your password/personal access token" }).open();
- if (password) {
- this.plugin.localStorage.setUsername(username);
- this.plugin.localStorage.setPassword(password);
- return {
- username,
- password
- };
- }
- }
- return { cancel: true };
- },
- http: {
- async request({
- url,
- method,
- headers,
- body
- }) {
- if (body) {
- body = await collect2(body);
- body = body.buffer;
- }
- const res = await (0, import_obsidian5.requestUrl)({ url, method, headers, body, throw: false });
- return {
- url,
- method,
- headers: res.headers,
- body: [new Uint8Array(res.arrayBuffer)],
- statusCode: res.status,
- statusMessage: res.status.toString()
- };
- }
- }
- };
- }
- async wrapFS(call) {
- try {
- const res = await call;
- await this.fs.saveAndClear();
- return res;
- } catch (error) {
- await this.fs.saveAndClear();
- throw error;
- }
- }
- async status() {
- let notice;
- const timeout = window.setTimeout(function() {
- notice = new import_obsidian5.Notice("This takes longer: Getting status", this.noticeLength);
- }, 2e4);
- try {
- this.plugin.setState(PluginState.status);
- const status2 = (await this.wrapFS(isomorphic_git_default.statusMatrix({ ...this.getRepo() }))).map((row) => this.getFileStatusResult(row));
- const changed = status2.filter((fileStatus) => fileStatus.working_dir !== " ");
- const staged = status2.filter((fileStatus) => fileStatus.index !== " " && fileStatus.index !== "U");
- const conflicted = [];
- window.clearTimeout(timeout);
- notice == null ? void 0 : notice.hide();
- return { changed, staged, conflicted };
- } catch (error) {
- window.clearTimeout(timeout);
- notice == null ? void 0 : notice.hide();
- this.plugin.displayError(error);
- throw error;
- }
- }
- async commitAll({ message, status: status2, unstagedFiles }) {
- try {
- await this.stageAll({ status: status2, unstagedFiles });
- return this.commit(message);
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async commit(message) {
- try {
- this.plugin.setState(PluginState.commit);
- const formatMessage = await this.formatCommitMessage(message);
- const hadConflict = this.plugin.localStorage.getConflict() === "true";
- let parent = void 0;
- if (hadConflict) {
- const branchInfo = await this.branchInfo();
- parent = [branchInfo.current, branchInfo.tracking];
- }
- await this.wrapFS(isomorphic_git_default.commit({
- ...this.getRepo(),
- message: formatMessage,
- parent
- }));
- this.plugin.localStorage.setConflict("false");
- return;
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async stage(filepath, relativeToVault) {
- const gitPath = this.getPath(filepath, relativeToVault);
- let vaultPath;
- if (relativeToVault) {
- vaultPath = filepath;
- } else {
- vaultPath = this.getVaultPath(filepath);
- }
- try {
- this.plugin.setState(PluginState.add);
- if (await this.app.vault.adapter.exists(vaultPath)) {
- await this.wrapFS(isomorphic_git_default.add({ ...this.getRepo(), filepath: gitPath }));
- } else {
- await this.wrapFS(isomorphic_git_default.remove({ ...this.getRepo(), filepath: gitPath }));
- }
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async stageAll({ dir, status: status2, unstagedFiles }) {
- try {
- if (status2) {
- await Promise.all(status2.changed.map((file) => file.working_dir !== "D" ? this.wrapFS(isomorphic_git_default.add({ ...this.getRepo(), filepath: file.path })) : isomorphic_git_default.remove({ ...this.getRepo(), filepath: file.path })));
- } else {
- const filesToStage = unstagedFiles != null ? unstagedFiles : await this.getUnstagedFiles(dir != null ? dir : ".");
- await Promise.all(filesToStage.map(({ filepath, deleted }) => deleted ? isomorphic_git_default.remove({ ...this.getRepo(), filepath }) : this.wrapFS(isomorphic_git_default.add({ ...this.getRepo(), filepath }))));
- }
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async unstage(filepath, relativeToVault) {
- try {
- this.plugin.setState(PluginState.add);
- filepath = this.getPath(filepath, relativeToVault);
- await this.wrapFS(isomorphic_git_default.resetIndex({ ...this.getRepo(), filepath }));
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async unstageAll({ dir, status: status2 }) {
- try {
- let staged;
- if (status2) {
- staged = status2.staged.map((file) => file.path);
- } else {
- const res = await this.getStagedFiles(dir != null ? dir : ".");
- staged = res.map(({ filepath }) => filepath);
- }
- await this.wrapFS(Promise.all(staged.map((file) => isomorphic_git_default.resetIndex({ ...this.getRepo(), filepath: file }))));
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async discard(filepath) {
- try {
- this.plugin.setState(PluginState.add);
- await this.wrapFS(isomorphic_git_default.checkout({ ...this.getRepo(), filepaths: [filepath], force: true }));
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async discardAll({ dir, status: status2 }) {
- let files = [];
- if (status2) {
- if (dir != void 0) {
- files = status2.changed.filter((file) => file.path.startsWith(dir)).map((file) => file.path);
- } else {
- files = status2.changed.map((file) => file.path);
- }
- } else {
- files = (await this.getUnstagedFiles(dir)).map(({ filepath }) => filepath);
- }
- try {
- await this.wrapFS(isomorphic_git_default.checkout({ ...this.getRepo(), filepaths: files, force: true }));
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- getProgressText(action, event) {
- let out = `${action} progress:`;
- if (event.phase) {
- out = `${out} ${event.phase}:`;
- }
- if (event.loaded) {
- out = `${out} ${event.loaded}`;
- if (event.total) {
- out = `${out} of ${event.total}`;
- }
- }
- return out;
- }
- resolveRef(ref) {
- return this.wrapFS(isomorphic_git_default.resolveRef({ ...this.getRepo(), ref }));
- }
- async pull() {
- const progressNotice = this.showNotice("Initializing pull");
- try {
- this.plugin.setState(PluginState.pull);
- const localCommit = await this.resolveRef("HEAD");
- await this.fetch();
- const branchInfo = await this.branchInfo();
- await this.wrapFS(isomorphic_git_default.merge({
- ...this.getRepo(),
- ours: branchInfo.current,
- theirs: branchInfo.tracking,
- abortOnConflict: false
- }));
- await this.wrapFS(isomorphic_git_default.checkout({
- ...this.getRepo(),
- ref: branchInfo.current,
- onProgress: (progress) => {
- if (progressNotice !== void 0) {
- progressNotice.noticeEl.innerText = this.getProgressText("Checkout", progress);
- }
- },
- remote: branchInfo.remote
- }));
- progressNotice == null ? void 0 : progressNotice.hide();
- const upstreamCommit = await this.resolveRef("HEAD");
- this.plugin.lastUpdate = Date.now();
- const changedFiles = await this.getFileChangesCount(localCommit, upstreamCommit);
- new import_obsidian5.Notice("Finished pull");
- return changedFiles.map((file) => ({
- path: file.path,
- working_dir: "P",
- index: "P",
- vault_path: this.getVaultPath(file.path)
- }));
- } catch (error) {
- progressNotice == null ? void 0 : progressNotice.hide();
- if (error instanceof Errors.MergeConflictError) {
- this.plugin.handleConflict(error.data.filepaths.map((file) => this.getVaultPath(file)));
- }
- this.plugin.displayError(error);
- throw error;
- }
- }
- async push() {
- if (!await this.canPush()) {
- return 0;
- }
- const progressNotice = this.showNotice("Initializing push");
- try {
- this.plugin.setState(PluginState.status);
- const status2 = await this.branchInfo();
- const trackingBranch = status2.tracking;
- const currentBranch2 = status2.current;
- const numChangedFiles = (await this.getFileChangesCount(currentBranch2, trackingBranch)).length;
- this.plugin.setState(PluginState.push);
- await this.wrapFS(isomorphic_git_default.push({
- ...this.getRepo(),
- onProgress: (progress) => {
- if (progressNotice !== void 0) {
- progressNotice.noticeEl.innerText = this.getProgressText("Pushing", progress);
- }
- }
- }));
- progressNotice == null ? void 0 : progressNotice.hide();
- return numChangedFiles;
- } catch (error) {
- progressNotice == null ? void 0 : progressNotice.hide();
- this.plugin.displayError(error);
- throw error;
- }
- }
- async canPush() {
- const status2 = await this.branchInfo();
- const trackingBranch = status2.tracking;
- const currentBranch2 = status2.current;
- const current = await this.resolveRef(currentBranch2);
- const tracking = await this.resolveRef(trackingBranch);
- return current != tracking;
- }
- async checkRequirements() {
- const headExists = await this.plugin.app.vault.adapter.exists(`${this.getRepo().dir}/.git/HEAD`);
- return headExists ? "valid" : "missing-repo";
- }
- async branchInfo() {
- var _a2, _b;
- try {
- const current = await isomorphic_git_default.currentBranch(this.getRepo()) || "";
- const branches = await isomorphic_git_default.listBranches(this.getRepo());
- const remote = (_a2 = await this.getConfig(`branch.${current}.remote`)) != null ? _a2 : "origin";
- const trackingBranch = (_b = await this.getConfig(`branch.${current}.merge`)) == null ? void 0 : _b.split("refs/heads")[1];
- const tracking = trackingBranch ? remote + trackingBranch : void 0;
- return {
- current,
- tracking,
- branches,
- remote
- };
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async getCurrentRemote() {
- var _a2;
- const current = await isomorphic_git_default.currentBranch(this.getRepo()) || "";
- const remote = (_a2 = await this.getConfig(`branch.${current}.remote`)) != null ? _a2 : "origin";
- return remote;
- }
- async checkout(branch2) {
- try {
- return this.wrapFS(isomorphic_git_default.checkout({
- ...this.getRepo(),
- ref: branch2
- }));
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async createBranch(branch2) {
- try {
- await this.wrapFS(isomorphic_git_default.branch({ ...this.getRepo(), ref: branch2, checkout: true }));
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async deleteBranch(branch2) {
- try {
- await this.wrapFS(isomorphic_git_default.deleteBranch({ ...this.getRepo(), ref: branch2 }));
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async branchIsMerged(branch2) {
- return true;
- }
- async init() {
- try {
- await this.wrapFS(isomorphic_git_default.init(this.getRepo()));
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async clone(url, dir) {
- const progressNotice = this.showNotice("Initializing clone");
- try {
- await this.wrapFS(isomorphic_git_default.clone({
- ...this.getRepo(),
- dir,
- url,
- onProgress: (progress) => {
- if (progressNotice !== void 0) {
- progressNotice.noticeEl.innerText = this.getProgressText("Cloning", progress);
- }
- }
- }));
- progressNotice == null ? void 0 : progressNotice.hide();
- } catch (error) {
- progressNotice == null ? void 0 : progressNotice.hide();
- this.plugin.displayError(error);
- throw error;
- }
- }
- async setConfig(path2, value) {
- try {
- return this.wrapFS(isomorphic_git_default.setConfig({
- ...this.getRepo(),
- path: path2,
- value
- }));
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async getConfig(path2) {
- try {
- return this.wrapFS(isomorphic_git_default.getConfig({
- ...this.getRepo(),
- path: path2
- }));
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async fetch(remote) {
- const progressNotice = this.showNotice("Initializing fetch");
- try {
- const args = {
- ...this.getRepo(),
- onProgress: (progress) => {
- if (progressNotice !== void 0) {
- progressNotice.noticeEl.innerText = this.getProgressText("Fetching", progress);
- }
- },
- remote: remote != null ? remote : await this.getCurrentRemote()
- };
- await this.wrapFS(isomorphic_git_default.fetch(args));
- progressNotice == null ? void 0 : progressNotice.hide();
- } catch (error) {
- this.plugin.displayError(error);
- progressNotice == null ? void 0 : progressNotice.hide();
- throw error;
- }
- }
- async setRemote(name, url) {
- try {
- await this.wrapFS(isomorphic_git_default.addRemote({ ...this.getRepo(), remote: name, url, force: true }));
- } catch (error) {
- this.plugin.displayError(error);
- throw error;
- }
- }
- async getRemoteBranches(remote) {
- let remoteBranches = [];
- remoteBranches.push(...await this.wrapFS(isomorphic_git_default.listBranches({ ...this.getRepo(), remote })));
- remoteBranches.remove("HEAD");
- remoteBranches = remoteBranches.map((e) => `${remote}/${e}`);
- return remoteBranches;
- }
- async getRemotes() {
- return (await this.wrapFS(isomorphic_git_default.listRemotes({ ...this.getRepo() }))).map((remoteUrl) => remoteUrl.remote);
- }
- async removeRemote(remoteName) {
- await this.wrapFS(isomorphic_git_default.deleteRemote({ ...this.getRepo(), remote: remoteName }));
- }
- async getRemoteUrl(remote) {
- var _a2;
- return (_a2 = (await this.wrapFS(isomorphic_git_default.listRemotes({ ...this.getRepo() }))).filter((item) => item.remote == remote)[0]) == null ? void 0 : _a2.url;
- }
- updateBasePath(basePath) {
- this.getRepo().dir = basePath;
- }
- async updateUpstreamBranch(remoteBranch) {
- const [remote, branch2] = remoteBranch.split("/");
- const branchInfo = await this.branchInfo();
- await this.setConfig(`branch.${branchInfo.current}.merge`, `refs/heads/${branch2}`);
- await this.setConfig(`branch.${branch2}.remote`, remote);
- }
- updateGitPath(gitPath) {
- return;
- }
- async getFileChangesCount(commitHash1, commitHash2) {
- return this.walkDifference({ walkers: [isomorphic_git_default.TREE({ ref: commitHash1 }), isomorphic_git_default.TREE({ ref: commitHash2 })] });
- }
- async walkDifference({ walkers, dir: base }) {
- const res = await this.wrapFS(isomorphic_git_default.walk({
- ...this.getRepo(),
- trees: walkers,
- map: async function(filepath, [A, B]) {
- if (!worthWalking2(filepath, base)) {
- return null;
- }
- if (await (A == null ? void 0 : A.type()) === "tree" || await (B == null ? void 0 : B.type()) === "tree") {
- return;
- }
- const Aoid = await (A == null ? void 0 : A.oid());
- const Boid = await (B == null ? void 0 : B.oid());
- let type = "equal";
- if (Aoid !== Boid) {
- type = "modify";
- }
- if (Aoid === void 0) {
- type = "add";
- }
- if (Boid === void 0) {
- type = "remove";
- }
- if (Aoid === void 0 && Boid === void 0) {
- console.log("Something weird happened:");
- console.log(A);
- console.log(B);
- }
- if (type === "equal") {
- return;
- }
- return {
- path: filepath,
- type
- };
- }
- }));
- return res;
- }
- async getStagedFiles(dir = ".") {
- const res = await this.walkDifference({
- walkers: [isomorphic_git_default.TREE({ ref: "HEAD" }), isomorphic_git_default.STAGE()],
- dir
- });
- return res.map((file) => {
- return {
- vault_path: this.getVaultPath(file.path),
- filepath: file.path
- };
- });
- }
- async getUnstagedFiles(base = ".") {
- let notice;
- const timeout = window.setTimeout(function() {
- notice = new import_obsidian5.Notice("This takes longer: Getting status", this.noticeLength);
- }, 2e4);
- try {
- const repo = this.getRepo();
- const res = await this.wrapFS(isomorphic_git_default.walk({
- ...repo,
- trees: [isomorphic_git_default.WORKDIR(), isomorphic_git_default.STAGE()],
- map: async function(filepath, [workdir, stage]) {
- if (!stage && workdir) {
- const isIgnored2 = await isomorphic_git_default.isIgnored({
- ...repo,
- filepath
- });
- if (isIgnored2) {
- return null;
- }
- }
- if (!worthWalking2(filepath, base)) {
- return null;
- }
- const [workdirType, stageType] = await Promise.all([
- workdir && workdir.type(),
- stage && stage.type()
- ]);
- const isBlob = [workdirType, stageType].includes("blob");
- if ((workdirType === "tree" || workdirType === "special") && !isBlob)
- return;
- if (stageType === "commit")
- return null;
- if ((stageType === "tree" || stageType === "special") && !isBlob)
- return;
- const stageOid = stageType === "blob" ? await stage.oid() : void 0;
- let workdirOid;
- if (workdirType === "blob" && stageType !== "blob") {
- workdirOid = "42";
- } else if (workdirType === "blob") {
- workdirOid = await workdir.oid();
- }
- if (!workdirOid) {
- return {
- filepath,
- deleted: true
- };
- }
- if (workdirOid !== stageOid) {
- return {
- filepath,
- deleted: false
- };
- }
- return null;
- }
- }));
- window.clearTimeout(timeout);
- notice == null ? void 0 : notice.hide();
- return res;
- } catch (error) {
- window.clearTimeout(timeout);
- notice == null ? void 0 : notice.hide();
- this.plugin.displayError(error);
- throw error;
- }
- }
- async getDiffString(filePath, stagedChanges = false) {
- const map = async (file, [A]) => {
- if (filePath == file) {
- const oid = await A.oid();
- const contents = await isomorphic_git_default.readBlob({ ...this.getRepo(), oid });
- return contents.blob;
- }
- };
- const stagedBlob = (await isomorphic_git_default.walk({
- ...this.getRepo(),
- trees: [isomorphic_git_default.STAGE()],
- map
- })).first();
- const stagedContent = new TextDecoder().decode(stagedBlob);
- if (stagedChanges) {
- const headBlob = await readBlob({ ...this.getRepo(), filepath: filePath, oid: await this.resolveRef("HEAD") });
- const headContent = new TextDecoder().decode(headBlob.blob);
- const diff2 = createPatch(filePath, headContent, stagedContent);
- return diff2;
- } else {
- let workdirContent;
- if (await app.vault.adapter.exists(filePath)) {
- workdirContent = await app.vault.adapter.read(filePath);
- } else {
- workdirContent = "";
- }
- const diff2 = createPatch(filePath, stagedContent, workdirContent);
- return diff2;
- }
- }
- getFileStatusResult(row) {
- const status2 = this.status_mapping[`${row[this.HEAD]}${row[this.WORKDIR]}${row[this.STAGE]}`];
- return {
- index: status2[0] == "?" ? "U" : status2[0],
- working_dir: status2[1] == "?" ? "U" : status2[1],
- path: row[this.FILE],
- vault_path: this.getVaultPath(row[this.FILE])
- };
- }
- showNotice(message) {
- if (!this.plugin.settings.disablePopups) {
- return new import_obsidian5.Notice(message, this.noticeLength);
- }
- }
- };
- function fromValue2(value) {
- let queue = [value];
- return {
- next() {
- return Promise.resolve({ done: queue.length === 0, value: queue.pop() });
- },
- return() {
- queue = [];
- return {};
- },
- [Symbol.asyncIterator]() {
- return this;
- }
- };
- }
- function getIterator2(iterable) {
- if (iterable[Symbol.asyncIterator]) {
- return iterable[Symbol.asyncIterator]();
- }
- if (iterable[Symbol.iterator]) {
- return iterable[Symbol.iterator]();
- }
- if (iterable.next) {
- return iterable;
- }
- return fromValue2(iterable);
- }
- async function forAwait2(iterable, cb) {
- const iter = getIterator2(iterable);
- while (true) {
- const { value, done } = await iter.next();
- if (value)
- await cb(value);
- if (done)
- break;
- }
- if (iter.return)
- iter.return();
- }
- async function collect2(iterable) {
- let size = 0;
- const buffers = [];
- await forAwait2(iterable, (value) => {
- buffers.push(value);
- size += value.byteLength;
- });
- const result = new Uint8Array(size);
- let nextIndex = 0;
- for (const buffer2 of buffers) {
- result.set(buffer2, nextIndex);
- nextIndex += buffer2.byteLength;
- }
- return result;
- }
- // src/simpleGit.ts
- init_polyfill_buffer();
- var import_child_process2 = __toModule(require("child_process"));
- var import_obsidian6 = __toModule(require("obsidian"));
- var path = __toModule(require("path"));
- var import_path = __toModule(require("path"));
- // node_modules/simple-git/dist/esm/index.js
- init_polyfill_buffer();
- var import_file_exists = __toModule(require_dist());
- var import_debug = __toModule(require_browser());
- var import_child_process = __toModule(require("child_process"));
- var import_promise_deferred = __toModule(require_dist2());
- var import_promise_deferred2 = __toModule(require_dist2());
- var __defProp2 = Object.defineProperty;
- var __defProps = Object.defineProperties;
- var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
- var __getOwnPropNames2 = Object.getOwnPropertyNames;
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
- var __hasOwnProp2 = Object.prototype.hasOwnProperty;
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
- var __defNormalProp = (obj, key2, value) => key2 in obj ? __defProp2(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value;
- var __spreadValues = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp2.call(b, prop))
- __defNormalProp(a, prop, b[prop]);
- if (__getOwnPropSymbols)
- for (var prop of __getOwnPropSymbols(b)) {
- if (__propIsEnum.call(b, prop))
- __defNormalProp(a, prop, b[prop]);
- }
- return a;
- };
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
- var __markAsModule2 = (target) => __defProp2(target, "__esModule", { value: true });
- var __esm2 = (fn, res) => function __init() {
- return fn && (res = (0, fn[__getOwnPropNames2(fn)[0]])(fn = 0)), res;
- };
- var __commonJS2 = (cb, mod) => function __require() {
- return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
- };
- var __export2 = (target, all) => {
- for (var name in all)
- __defProp2(target, name, { get: all[name], enumerable: true });
- };
- var __reExport2 = (target, module2, copyDefault, desc) => {
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
- for (let key2 of __getOwnPropNames2(module2))
- if (!__hasOwnProp2.call(target, key2) && (copyDefault || key2 !== "default"))
- __defProp2(target, key2, { get: () => module2[key2], enumerable: !(desc = __getOwnPropDesc2(module2, key2)) || desc.enumerable });
- }
- return target;
- };
- var __toCommonJS = /* @__PURE__ */ ((cache) => {
- return (module2, temp) => {
- return cache && cache.get(module2) || (temp = __reExport2(__markAsModule2({}), module2, 1), cache && cache.set(module2, temp), temp);
- };
- })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
- var __async = (__this, __arguments, generator) => {
- return new Promise((resolve, reject) => {
- var fulfilled = (value) => {
- try {
- step(generator.next(value));
- } catch (e) {
- reject(e);
- }
- };
- var rejected = (value) => {
- try {
- step(generator.throw(value));
- } catch (e) {
- reject(e);
- }
- };
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
- step((generator = generator.apply(__this, __arguments)).next());
- });
- };
- var GitError;
- var init_git_error = __esm2({
- "src/lib/errors/git-error.ts"() {
- GitError = class extends Error {
- constructor(task, message) {
- super(message);
- this.task = task;
- Object.setPrototypeOf(this, new.target.prototype);
- }
- };
- }
- });
- var GitResponseError;
- var init_git_response_error = __esm2({
- "src/lib/errors/git-response-error.ts"() {
- init_git_error();
- GitResponseError = class extends GitError {
- constructor(git, message) {
- super(void 0, message || String(git));
- this.git = git;
- }
- };
- }
- });
- var TaskConfigurationError;
- var init_task_configuration_error = __esm2({
- "src/lib/errors/task-configuration-error.ts"() {
- init_git_error();
- TaskConfigurationError = class extends GitError {
- constructor(message) {
- super(void 0, message);
- }
- };
- }
- });
- function asFunction(source) {
- return typeof source === "function" ? source : NOOP;
- }
- function isUserFunction(source) {
- return typeof source === "function" && source !== NOOP;
- }
- function splitOn(input, char) {
- const index2 = input.indexOf(char);
- if (index2 <= 0) {
- return [input, ""];
- }
- return [input.substr(0, index2), input.substr(index2 + 1)];
- }
- function first(input, offset = 0) {
- return isArrayLike(input) && input.length > offset ? input[offset] : void 0;
- }
- function last(input, offset = 0) {
- if (isArrayLike(input) && input.length > offset) {
- return input[input.length - 1 - offset];
- }
- }
- function isArrayLike(input) {
- return !!(input && typeof input.length === "number");
- }
- function toLinesWithContent(input = "", trimmed2 = true, separator2 = "\n") {
- return input.split(separator2).reduce((output, line) => {
- const lineContent = trimmed2 ? line.trim() : line;
- if (lineContent) {
- output.push(lineContent);
- }
- return output;
- }, []);
- }
- function forEachLineWithContent(input, callback) {
- return toLinesWithContent(input, true).map((line) => callback(line));
- }
- function folderExists(path2) {
- return (0, import_file_exists.exists)(path2, import_file_exists.FOLDER);
- }
- function append(target, item) {
- if (Array.isArray(target)) {
- if (!target.includes(item)) {
- target.push(item);
- }
- } else {
- target.add(item);
- }
- return item;
- }
- function including(target, item) {
- if (Array.isArray(target) && !target.includes(item)) {
- target.push(item);
- }
- return target;
- }
- function remove2(target, item) {
- if (Array.isArray(target)) {
- const index2 = target.indexOf(item);
- if (index2 >= 0) {
- target.splice(index2, 1);
- }
- } else {
- target.delete(item);
- }
- return item;
- }
- function asArray(source) {
- return Array.isArray(source) ? source : [source];
- }
- function asStringArray(source) {
- return asArray(source).map(String);
- }
- function asNumber(source, onNaN = 0) {
- if (source == null) {
- return onNaN;
- }
- const num2 = parseInt(source, 10);
- return isNaN(num2) ? onNaN : num2;
- }
- function prefixedArray(input, prefix) {
- const output = [];
- for (let i = 0, max = input.length; i < max; i++) {
- output.push(prefix, input[i]);
- }
- return output;
- }
- function bufferToString(input) {
- return (Array.isArray(input) ? Buffer2.concat(input) : input).toString("utf-8");
- }
- function pick(source, properties) {
- return Object.assign({}, ...properties.map((property) => property in source ? { [property]: source[property] } : {}));
- }
- function delay(duration = 0) {
- return new Promise((done) => setTimeout(done, duration));
- }
- var NULL;
- var NOOP;
- var objectToString;
- var init_util = __esm2({
- "src/lib/utils/util.ts"() {
- NULL = "\0";
- NOOP = () => {
- };
- objectToString = Object.prototype.toString.call.bind(Object.prototype.toString);
- }
- });
- function filterType(input, filter, def) {
- if (filter(input)) {
- return input;
- }
- return arguments.length > 2 ? def : void 0;
- }
- function filterPrimitives(input, omit) {
- return /number|string|boolean/.test(typeof input) && (!omit || !omit.includes(typeof input));
- }
- function filterPlainObject(input) {
- return !!input && objectToString(input) === "[object Object]";
- }
- function filterFunction(input) {
- return typeof input === "function";
- }
- var filterArray;
- var filterString;
- var filterStringArray;
- var filterStringOrStringArray;
- var filterHasLength;
- var init_argument_filters = __esm2({
- "src/lib/utils/argument-filters.ts"() {
- init_util();
- filterArray = (input) => {
- return Array.isArray(input);
- };
- filterString = (input) => {
- return typeof input === "string";
- };
- filterStringArray = (input) => {
- return Array.isArray(input) && input.every(filterString);
- };
- filterStringOrStringArray = (input) => {
- return filterString(input) || Array.isArray(input) && input.every(filterString);
- };
- filterHasLength = (input) => {
- if (input == null || "number|boolean|function".includes(typeof input)) {
- return false;
- }
- return Array.isArray(input) || typeof input === "string" || typeof input.length === "number";
- };
- }
- });
- var ExitCodes;
- var init_exit_codes = __esm2({
- "src/lib/utils/exit-codes.ts"() {
- ExitCodes = /* @__PURE__ */ ((ExitCodes2) => {
- ExitCodes2[ExitCodes2["SUCCESS"] = 0] = "SUCCESS";
- ExitCodes2[ExitCodes2["ERROR"] = 1] = "ERROR";
- ExitCodes2[ExitCodes2["NOT_FOUND"] = -2] = "NOT_FOUND";
- ExitCodes2[ExitCodes2["UNCLEAN"] = 128] = "UNCLEAN";
- return ExitCodes2;
- })(ExitCodes || {});
- }
- });
- var GitOutputStreams;
- var init_git_output_streams = __esm2({
- "src/lib/utils/git-output-streams.ts"() {
- GitOutputStreams = class {
- constructor(stdOut, stdErr) {
- this.stdOut = stdOut;
- this.stdErr = stdErr;
- }
- asStrings() {
- return new GitOutputStreams(this.stdOut.toString("utf8"), this.stdErr.toString("utf8"));
- }
- };
- }
- });
- var LineParser;
- var RemoteLineParser;
- var init_line_parser = __esm2({
- "src/lib/utils/line-parser.ts"() {
- LineParser = class {
- constructor(regExp, useMatches) {
- this.matches = [];
- this.parse = (line, target) => {
- this.resetMatches();
- if (!this._regExp.every((reg, index2) => this.addMatch(reg, index2, line(index2)))) {
- return false;
- }
- return this.useMatches(target, this.prepareMatches()) !== false;
- };
- this._regExp = Array.isArray(regExp) ? regExp : [regExp];
- if (useMatches) {
- this.useMatches = useMatches;
- }
- }
- useMatches(target, match) {
- throw new Error(`LineParser:useMatches not implemented`);
- }
- resetMatches() {
- this.matches.length = 0;
- }
- prepareMatches() {
- return this.matches;
- }
- addMatch(reg, index2, line) {
- const matched = line && reg.exec(line);
- if (matched) {
- this.pushMatch(index2, matched);
- }
- return !!matched;
- }
- pushMatch(_index, matched) {
- this.matches.push(...matched.slice(1));
- }
- };
- RemoteLineParser = class extends LineParser {
- addMatch(reg, index2, line) {
- return /^remote:\s/.test(String(line)) && super.addMatch(reg, index2, line);
- }
- pushMatch(index2, matched) {
- if (index2 > 0 || matched.length > 1) {
- super.pushMatch(index2, matched);
- }
- }
- };
- }
- });
- function createInstanceConfig(...options) {
- const baseDir = process.cwd();
- const config = Object.assign(__spreadValues({ baseDir }, defaultOptions), ...options.filter((o) => typeof o === "object" && o));
- config.baseDir = config.baseDir || baseDir;
- config.trimmed = config.trimmed === true;
- return config;
- }
- var defaultOptions;
- var init_simple_git_options = __esm2({
- "src/lib/utils/simple-git-options.ts"() {
- defaultOptions = {
- binary: "git",
- maxConcurrentProcesses: 5,
- config: [],
- trimmed: false
- };
- }
- });
- function appendTaskOptions(options, commands = []) {
- if (!filterPlainObject(options)) {
- return commands;
- }
- return Object.keys(options).reduce((commands2, key2) => {
- const value = options[key2];
- if (filterPrimitives(value, ["boolean"])) {
- commands2.push(key2 + "=" + value);
- } else {
- commands2.push(key2);
- }
- return commands2;
- }, commands);
- }
- function getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) {
- const command = [];
- for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) {
- if ("string|number".includes(typeof args[i])) {
- command.push(String(args[i]));
- }
- }
- appendTaskOptions(trailingOptionsArgument(args), command);
- if (!objectOnly) {
- command.push(...trailingArrayArgument(args));
- }
- return command;
- }
- function trailingArrayArgument(args) {
- const hasTrailingCallback = typeof last(args) === "function";
- return filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []);
- }
- function trailingOptionsArgument(args) {
- const hasTrailingCallback = filterFunction(last(args));
- return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject);
- }
- function trailingFunctionArgument(args, includeNoop = true) {
- const callback = asFunction(last(args));
- return includeNoop || isUserFunction(callback) ? callback : void 0;
- }
- var init_task_options = __esm2({
- "src/lib/utils/task-options.ts"() {
- init_argument_filters();
- init_util();
- }
- });
- function callTaskParser(parser3, streams) {
- return parser3(streams.stdOut, streams.stdErr);
- }
- function parseStringResponse(result, parsers12, texts, trim = true) {
- asArray(texts).forEach((text2) => {
- for (let lines = toLinesWithContent(text2, trim), i = 0, max = lines.length; i < max; i++) {
- const line = (offset = 0) => {
- if (i + offset >= max) {
- return;
- }
- return lines[i + offset];
- };
- parsers12.some(({ parse: parse2 }) => parse2(line, result));
- }
- });
- return result;
- }
- var init_task_parser = __esm2({
- "src/lib/utils/task-parser.ts"() {
- init_util();
- }
- });
- var utils_exports = {};
- __export2(utils_exports, {
- ExitCodes: () => ExitCodes,
- GitOutputStreams: () => GitOutputStreams,
- LineParser: () => LineParser,
- NOOP: () => NOOP,
- NULL: () => NULL,
- RemoteLineParser: () => RemoteLineParser,
- append: () => append,
- appendTaskOptions: () => appendTaskOptions,
- asArray: () => asArray,
- asFunction: () => asFunction,
- asNumber: () => asNumber,
- asStringArray: () => asStringArray,
- bufferToString: () => bufferToString,
- callTaskParser: () => callTaskParser,
- createInstanceConfig: () => createInstanceConfig,
- delay: () => delay,
- filterArray: () => filterArray,
- filterFunction: () => filterFunction,
- filterHasLength: () => filterHasLength,
- filterPlainObject: () => filterPlainObject,
- filterPrimitives: () => filterPrimitives,
- filterString: () => filterString,
- filterStringArray: () => filterStringArray,
- filterStringOrStringArray: () => filterStringOrStringArray,
- filterType: () => filterType,
- first: () => first,
- folderExists: () => folderExists,
- forEachLineWithContent: () => forEachLineWithContent,
- getTrailingOptions: () => getTrailingOptions,
- including: () => including,
- isUserFunction: () => isUserFunction,
- last: () => last,
- objectToString: () => objectToString,
- parseStringResponse: () => parseStringResponse,
- pick: () => pick,
- prefixedArray: () => prefixedArray,
- remove: () => remove2,
- splitOn: () => splitOn,
- toLinesWithContent: () => toLinesWithContent,
- trailingFunctionArgument: () => trailingFunctionArgument,
- trailingOptionsArgument: () => trailingOptionsArgument
- });
- var init_utils = __esm2({
- "src/lib/utils/index.ts"() {
- init_argument_filters();
- init_exit_codes();
- init_git_output_streams();
- init_line_parser();
- init_simple_git_options();
- init_task_options();
- init_task_parser();
- init_util();
- }
- });
- var check_is_repo_exports = {};
- __export2(check_is_repo_exports, {
- CheckRepoActions: () => CheckRepoActions,
- checkIsBareRepoTask: () => checkIsBareRepoTask,
- checkIsRepoRootTask: () => checkIsRepoRootTask,
- checkIsRepoTask: () => checkIsRepoTask
- });
- function checkIsRepoTask(action) {
- switch (action) {
- case "bare":
- return checkIsBareRepoTask();
- case "root":
- return checkIsRepoRootTask();
- }
- const commands = ["rev-parse", "--is-inside-work-tree"];
- return {
- commands,
- format: "utf-8",
- onError,
- parser
- };
- }
- function checkIsRepoRootTask() {
- const commands = ["rev-parse", "--git-dir"];
- return {
- commands,
- format: "utf-8",
- onError,
- parser(path2) {
- return /^\.(git)?$/.test(path2.trim());
- }
- };
- }
- function checkIsBareRepoTask() {
- const commands = ["rev-parse", "--is-bare-repository"];
- return {
- commands,
- format: "utf-8",
- onError,
- parser
- };
- }
- function isNotRepoMessage(error) {
- return /(Not a git repository|Kein Git-Repository)/i.test(String(error));
- }
- var CheckRepoActions;
- var onError;
- var parser;
- var init_check_is_repo = __esm2({
- "src/lib/tasks/check-is-repo.ts"() {
- init_utils();
- CheckRepoActions = /* @__PURE__ */ ((CheckRepoActions2) => {
- CheckRepoActions2["BARE"] = "bare";
- CheckRepoActions2["IN_TREE"] = "tree";
- CheckRepoActions2["IS_REPO_ROOT"] = "root";
- return CheckRepoActions2;
- })(CheckRepoActions || {});
- onError = ({ exitCode }, error, done, fail) => {
- if (exitCode === 128 && isNotRepoMessage(error)) {
- return done(Buffer2.from("false"));
- }
- fail(error);
- };
- parser = (text2) => {
- return text2.trim() === "true";
- };
- }
- });
- function cleanSummaryParser(dryRun, text2) {
- const summary = new CleanResponse(dryRun);
- const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp;
- toLinesWithContent(text2).forEach((line) => {
- const removed = line.replace(regexp, "");
- summary.paths.push(removed);
- (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed);
- });
- return summary;
- }
- var CleanResponse;
- var removalRegexp;
- var dryRunRemovalRegexp;
- var isFolderRegexp;
- var init_CleanSummary = __esm2({
- "src/lib/responses/CleanSummary.ts"() {
- init_utils();
- CleanResponse = class {
- constructor(dryRun) {
- this.dryRun = dryRun;
- this.paths = [];
- this.files = [];
- this.folders = [];
- }
- };
- removalRegexp = /^[a-z]+\s*/i;
- dryRunRemovalRegexp = /^[a-z]+\s+[a-z]+\s*/i;
- isFolderRegexp = /\/$/;
- }
- });
- var task_exports = {};
- __export2(task_exports, {
- EMPTY_COMMANDS: () => EMPTY_COMMANDS,
- adhocExecTask: () => adhocExecTask,
- configurationErrorTask: () => configurationErrorTask,
- isBufferTask: () => isBufferTask,
- isEmptyTask: () => isEmptyTask,
- straightThroughBufferTask: () => straightThroughBufferTask,
- straightThroughStringTask: () => straightThroughStringTask
- });
- function adhocExecTask(parser3) {
- return {
- commands: EMPTY_COMMANDS,
- format: "empty",
- parser: parser3
- };
- }
- function configurationErrorTask(error) {
- return {
- commands: EMPTY_COMMANDS,
- format: "empty",
- parser() {
- throw typeof error === "string" ? new TaskConfigurationError(error) : error;
- }
- };
- }
- function straightThroughStringTask(commands, trimmed2 = false) {
- return {
- commands,
- format: "utf-8",
- parser(text2) {
- return trimmed2 ? String(text2).trim() : text2;
- }
- };
- }
- function straightThroughBufferTask(commands) {
- return {
- commands,
- format: "buffer",
- parser(buffer2) {
- return buffer2;
- }
- };
- }
- function isBufferTask(task) {
- return task.format === "buffer";
- }
- function isEmptyTask(task) {
- return task.format === "empty" || !task.commands.length;
- }
- var EMPTY_COMMANDS;
- var init_task = __esm2({
- "src/lib/tasks/task.ts"() {
- init_task_configuration_error();
- EMPTY_COMMANDS = [];
- }
- });
- var clean_exports = {};
- __export2(clean_exports, {
- CONFIG_ERROR_INTERACTIVE_MODE: () => CONFIG_ERROR_INTERACTIVE_MODE,
- CONFIG_ERROR_MODE_REQUIRED: () => CONFIG_ERROR_MODE_REQUIRED,
- CONFIG_ERROR_UNKNOWN_OPTION: () => CONFIG_ERROR_UNKNOWN_OPTION,
- CleanOptions: () => CleanOptions,
- cleanTask: () => cleanTask,
- cleanWithOptionsTask: () => cleanWithOptionsTask,
- isCleanOptionsArray: () => isCleanOptionsArray
- });
- function cleanWithOptionsTask(mode, customArgs) {
- const { cleanMode, options, valid } = getCleanOptions(mode);
- if (!cleanMode) {
- return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED);
- }
- if (!valid.options) {
- return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode));
- }
- options.push(...customArgs);
- if (options.some(isInteractiveMode)) {
- return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE);
- }
- return cleanTask(cleanMode, options);
- }
- function cleanTask(mode, customArgs) {
- const commands = ["clean", `-${mode}`, ...customArgs];
- return {
- commands,
- format: "utf-8",
- parser(text2) {
- return cleanSummaryParser(mode === "n", text2);
- }
- };
- }
- function isCleanOptionsArray(input) {
- return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test));
- }
- function getCleanOptions(input) {
- let cleanMode;
- let options = [];
- let valid = { cleanMode: false, options: true };
- input.replace(/[^a-z]i/g, "").split("").forEach((char) => {
- if (isCleanMode(char)) {
- cleanMode = char;
- valid.cleanMode = true;
- } else {
- valid.options = valid.options && isKnownOption(options[options.length] = `-${char}`);
- }
- });
- return {
- cleanMode,
- options,
- valid
- };
- }
- function isCleanMode(cleanMode) {
- return cleanMode === "f" || cleanMode === "n";
- }
- function isKnownOption(option) {
- return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1));
- }
- function isInteractiveMode(option) {
- if (/^-[^\-]/.test(option)) {
- return option.indexOf("i") > 0;
- }
- return option === "--interactive";
- }
- var CONFIG_ERROR_INTERACTIVE_MODE;
- var CONFIG_ERROR_MODE_REQUIRED;
- var CONFIG_ERROR_UNKNOWN_OPTION;
- var CleanOptions;
- var CleanOptionValues;
- var init_clean = __esm2({
- "src/lib/tasks/clean.ts"() {
- init_CleanSummary();
- init_utils();
- init_task();
- CONFIG_ERROR_INTERACTIVE_MODE = "Git clean interactive mode is not supported";
- CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter ("n" or "f") is required';
- CONFIG_ERROR_UNKNOWN_OPTION = "Git clean unknown option found in: ";
- CleanOptions = /* @__PURE__ */ ((CleanOptions2) => {
- CleanOptions2["DRY_RUN"] = "n";
- CleanOptions2["FORCE"] = "f";
- CleanOptions2["IGNORED_INCLUDED"] = "x";
- CleanOptions2["IGNORED_ONLY"] = "X";
- CleanOptions2["EXCLUDING"] = "e";
- CleanOptions2["QUIET"] = "q";
- CleanOptions2["RECURSIVE"] = "d";
- return CleanOptions2;
- })(CleanOptions || {});
- CleanOptionValues = /* @__PURE__ */ new Set([
- "i",
- ...asStringArray(Object.values(CleanOptions))
- ]);
- }
- });
- function configListParser(text2) {
- const config = new ConfigList();
- for (const item of configParser(text2)) {
- config.addValue(item.file, String(item.key), item.value);
- }
- return config;
- }
- function configGetParser(text2, key2) {
- let value = null;
- const values = [];
- const scopes = /* @__PURE__ */ new Map();
- for (const item of configParser(text2, key2)) {
- if (item.key !== key2) {
- continue;
- }
- values.push(value = item.value);
- if (!scopes.has(item.file)) {
- scopes.set(item.file, []);
- }
- scopes.get(item.file).push(value);
- }
- return {
- key: key2,
- paths: Array.from(scopes.keys()),
- scopes,
- value,
- values
- };
- }
- function configFilePath(filePath) {
- return filePath.replace(/^(file):/, "");
- }
- function* configParser(text2, requestedKey = null) {
- const lines = text2.split("\0");
- for (let i = 0, max = lines.length - 1; i < max; ) {
- const file = configFilePath(lines[i++]);
- let value = lines[i++];
- let key2 = requestedKey;
- if (value.includes("\n")) {
- const line = splitOn(value, "\n");
- key2 = line[0];
- value = line[1];
- }
- yield { file, key: key2, value };
- }
- }
- var ConfigList;
- var init_ConfigList = __esm2({
- "src/lib/responses/ConfigList.ts"() {
- init_utils();
- ConfigList = class {
- constructor() {
- this.files = [];
- this.values = /* @__PURE__ */ Object.create(null);
- }
- get all() {
- if (!this._all) {
- this._all = this.files.reduce((all, file) => {
- return Object.assign(all, this.values[file]);
- }, {});
- }
- return this._all;
- }
- addFile(file) {
- if (!(file in this.values)) {
- const latest = last(this.files);
- this.values[file] = latest ? Object.create(this.values[latest]) : {};
- this.files.push(file);
- }
- return this.values[file];
- }
- addValue(file, key2, value) {
- const values = this.addFile(file);
- if (!values.hasOwnProperty(key2)) {
- values[key2] = value;
- } else if (Array.isArray(values[key2])) {
- values[key2].push(value);
- } else {
- values[key2] = [values[key2], value];
- }
- this._all = void 0;
- }
- };
- }
- });
- function asConfigScope(scope, fallback) {
- if (typeof scope === "string" && GitConfigScope.hasOwnProperty(scope)) {
- return scope;
- }
- return fallback;
- }
- function addConfigTask(key2, value, append22, scope) {
- const commands = ["config", `--${scope}`];
- if (append22) {
- commands.push("--add");
- }
- commands.push(key2, value);
- return {
- commands,
- format: "utf-8",
- parser(text2) {
- return text2;
- }
- };
- }
- function getConfigTask(key2, scope) {
- const commands = ["config", "--null", "--show-origin", "--get-all", key2];
- if (scope) {
- commands.splice(1, 0, `--${scope}`);
- }
- return {
- commands,
- format: "utf-8",
- parser(text2) {
- return configGetParser(text2, key2);
- }
- };
- }
- function listConfigTask(scope) {
- const commands = ["config", "--list", "--show-origin", "--null"];
- if (scope) {
- commands.push(`--${scope}`);
- }
- return {
- commands,
- format: "utf-8",
- parser(text2) {
- return configListParser(text2);
- }
- };
- }
- function config_default() {
- return {
- addConfig(key2, value, ...rest) {
- return this._runTask(addConfigTask(key2, value, rest[0] === true, asConfigScope(rest[1], "local")), trailingFunctionArgument(arguments));
- },
- getConfig(key2, scope) {
- return this._runTask(getConfigTask(key2, asConfigScope(scope, void 0)), trailingFunctionArgument(arguments));
- },
- listConfig(...rest) {
- return this._runTask(listConfigTask(asConfigScope(rest[0], void 0)), trailingFunctionArgument(arguments));
- }
- };
- }
- var GitConfigScope;
- var init_config = __esm2({
- "src/lib/tasks/config.ts"() {
- init_ConfigList();
- init_utils();
- GitConfigScope = /* @__PURE__ */ ((GitConfigScope2) => {
- GitConfigScope2["system"] = "system";
- GitConfigScope2["global"] = "global";
- GitConfigScope2["local"] = "local";
- GitConfigScope2["worktree"] = "worktree";
- return GitConfigScope2;
- })(GitConfigScope || {});
- }
- });
- function grepQueryBuilder(...params) {
- return new GrepQuery().param(...params);
- }
- function parseGrep(grep) {
- const paths = /* @__PURE__ */ new Set();
- const results = {};
- forEachLineWithContent(grep, (input) => {
- const [path2, line, preview] = input.split(NULL);
- paths.add(path2);
- (results[path2] = results[path2] || []).push({
- line: asNumber(line),
- path: path2,
- preview
- });
- });
- return {
- paths,
- results
- };
- }
- function grep_default() {
- return {
- grep(searchTerm) {
- const then = trailingFunctionArgument(arguments);
- const options = getTrailingOptions(arguments);
- for (const option of disallowedOptions) {
- if (options.includes(option)) {
- return this._runTask(configurationErrorTask(`git.grep: use of "${option}" is not supported.`), then);
- }
- }
- if (typeof searchTerm === "string") {
- searchTerm = grepQueryBuilder().param(searchTerm);
- }
- const commands = ["grep", "--null", "-n", "--full-name", ...options, ...searchTerm];
- return this._runTask({
- commands,
- format: "utf-8",
- parser(stdOut) {
- return parseGrep(stdOut);
- }
- }, then);
- }
- };
- }
- var disallowedOptions;
- var Query;
- var _a;
- var GrepQuery;
- var init_grep = __esm2({
- "src/lib/tasks/grep.ts"() {
- init_utils();
- init_task();
- disallowedOptions = ["-h"];
- Query = Symbol("grepQuery");
- GrepQuery = class {
- constructor() {
- this[_a] = [];
- }
- *[(_a = Query, Symbol.iterator)]() {
- for (const query of this[Query]) {
- yield query;
- }
- }
- and(...and) {
- and.length && this[Query].push("--and", "(", ...prefixedArray(and, "-e"), ")");
- return this;
- }
- param(...param) {
- this[Query].push(...prefixedArray(param, "-e"));
- return this;
- }
- };
- }
- });
- var reset_exports = {};
- __export2(reset_exports, {
- ResetMode: () => ResetMode,
- getResetMode: () => getResetMode,
- resetTask: () => resetTask
- });
- function resetTask(mode, customArgs) {
- const commands = ["reset"];
- if (isValidResetMode(mode)) {
- commands.push(`--${mode}`);
- }
- commands.push(...customArgs);
- return straightThroughStringTask(commands);
- }
- function getResetMode(mode) {
- if (isValidResetMode(mode)) {
- return mode;
- }
- switch (typeof mode) {
- case "string":
- case "undefined":
- return "soft";
- }
- return;
- }
- function isValidResetMode(mode) {
- return ResetModes.includes(mode);
- }
- var ResetMode;
- var ResetModes;
- var init_reset = __esm2({
- "src/lib/tasks/reset.ts"() {
- init_task();
- ResetMode = /* @__PURE__ */ ((ResetMode2) => {
- ResetMode2["MIXED"] = "mixed";
- ResetMode2["SOFT"] = "soft";
- ResetMode2["HARD"] = "hard";
- ResetMode2["MERGE"] = "merge";
- ResetMode2["KEEP"] = "keep";
- return ResetMode2;
- })(ResetMode || {});
- ResetModes = Array.from(Object.values(ResetMode));
- }
- });
- function createLog() {
- return (0, import_debug.default)("simple-git");
- }
- function prefixedLogger(to, prefix, forward) {
- if (!prefix || !String(prefix).replace(/\s*/, "")) {
- return !forward ? to : (message, ...args) => {
- to(message, ...args);
- forward(message, ...args);
- };
- }
- return (message, ...args) => {
- to(`%s ${message}`, prefix, ...args);
- if (forward) {
- forward(message, ...args);
- }
- };
- }
- function childLoggerName(name, childDebugger, { namespace: parentNamespace }) {
- if (typeof name === "string") {
- return name;
- }
- const childNamespace = childDebugger && childDebugger.namespace || "";
- if (childNamespace.startsWith(parentNamespace)) {
- return childNamespace.substr(parentNamespace.length + 1);
- }
- return childNamespace || parentNamespace;
- }
- function createLogger(label, verbose, initialStep, infoDebugger = createLog()) {
- const labelPrefix = label && `[${label}]` || "";
- const spawned = [];
- const debugDebugger = typeof verbose === "string" ? infoDebugger.extend(verbose) : verbose;
- const key2 = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);
- return step(initialStep);
- function sibling(name, initial) {
- return append(spawned, createLogger(label, key2.replace(/^[^:]+/, name), initial, infoDebugger));
- }
- function step(phase) {
- const stepPrefix = phase && `[${phase}]` || "";
- const debug2 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP;
- const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug2);
- return Object.assign(debugDebugger ? debug2 : info, {
- label,
- sibling,
- info,
- step
- });
- }
- }
- var init_git_logger = __esm2({
- "src/lib/git-logger.ts"() {
- init_utils();
- import_debug.default.formatters.L = (value) => String(filterHasLength(value) ? value.length : "-");
- import_debug.default.formatters.B = (value) => {
- if (Buffer2.isBuffer(value)) {
- return value.toString("utf8");
- }
- return objectToString(value);
- };
- }
- });
- var _TasksPendingQueue;
- var TasksPendingQueue;
- var init_tasks_pending_queue = __esm2({
- "src/lib/runners/tasks-pending-queue.ts"() {
- init_git_error();
- init_git_logger();
- _TasksPendingQueue = class {
- constructor(logLabel = "GitExecutor") {
- this.logLabel = logLabel;
- this._queue = /* @__PURE__ */ new Map();
- }
- withProgress(task) {
- return this._queue.get(task);
- }
- createProgress(task) {
- const name = _TasksPendingQueue.getName(task.commands[0]);
- const logger = createLogger(this.logLabel, name);
- return {
- task,
- logger,
- name
- };
- }
- push(task) {
- const progress = this.createProgress(task);
- progress.logger("Adding task to the queue, commands = %o", task.commands);
- this._queue.set(task, progress);
- return progress;
- }
- fatal(err) {
- for (const [task, { logger }] of Array.from(this._queue.entries())) {
- if (task === err.task) {
- logger.info(`Failed %o`, err);
- logger(`Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`);
- } else {
- logger.info(`A fatal exception occurred in a previous task, the queue has been purged: %o`, err.message);
- }
- this.complete(task);
- }
- if (this._queue.size !== 0) {
- throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`);
- }
- }
- complete(task) {
- const progress = this.withProgress(task);
- if (progress) {
- this._queue.delete(task);
- }
- }
- attempt(task) {
- const progress = this.withProgress(task);
- if (!progress) {
- throw new GitError(void 0, "TasksPendingQueue: attempt called for an unknown task");
- }
- progress.logger("Starting task");
- return progress;
- }
- static getName(name = "empty") {
- return `task:${name}:${++_TasksPendingQueue.counter}`;
- }
- };
- TasksPendingQueue = _TasksPendingQueue;
- TasksPendingQueue.counter = 0;
- }
- });
- function pluginContext(task, commands) {
- return {
- method: first(task.commands) || "",
- commands
- };
- }
- function onErrorReceived(target, logger) {
- return (err) => {
- logger(`[ERROR] child process exception %o`, err);
- target.push(Buffer2.from(String(err.stack), "ascii"));
- };
- }
- function onDataReceived(target, name, logger, output) {
- return (buffer2) => {
- logger(`%s received %L bytes`, name, buffer2);
- output(`%B`, buffer2);
- target.push(buffer2);
- };
- }
- var GitExecutorChain;
- var init_git_executor_chain = __esm2({
- "src/lib/runners/git-executor-chain.ts"() {
- init_git_error();
- init_task();
- init_utils();
- init_tasks_pending_queue();
- GitExecutorChain = class {
- constructor(_executor, _scheduler, _plugins) {
- this._executor = _executor;
- this._scheduler = _scheduler;
- this._plugins = _plugins;
- this._chain = Promise.resolve();
- this._queue = new TasksPendingQueue();
- }
- get binary() {
- return this._executor.binary;
- }
- get cwd() {
- return this._cwd || this._executor.cwd;
- }
- set cwd(cwd) {
- this._cwd = cwd;
- }
- get env() {
- return this._executor.env;
- }
- get outputHandler() {
- return this._executor.outputHandler;
- }
- chain() {
- return this;
- }
- push(task) {
- this._queue.push(task);
- return this._chain = this._chain.then(() => this.attemptTask(task));
- }
- attemptTask(task) {
- return __async(this, null, function* () {
- const onScheduleComplete = yield this._scheduler.next();
- const onQueueComplete = () => this._queue.complete(task);
- try {
- const { logger } = this._queue.attempt(task);
- return yield isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger);
- } catch (e) {
- throw this.onFatalException(task, e);
- } finally {
- onQueueComplete();
- onScheduleComplete();
- }
- });
- }
- onFatalException(task, e) {
- const gitError = e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));
- this._chain = Promise.resolve();
- this._queue.fatal(gitError);
- return gitError;
- }
- attemptRemoteTask(task, logger) {
- return __async(this, null, function* () {
- const args = this._plugins.exec("spawn.args", [...task.commands], pluginContext(task, task.commands));
- const raw = yield this.gitResponse(task, this.binary, args, this.outputHandler, logger.step("SPAWN"));
- const outputStreams = yield this.handleTaskData(task, args, raw, logger.step("HANDLE"));
- logger(`passing response to task's parser as a %s`, task.format);
- if (isBufferTask(task)) {
- return callTaskParser(task.parser, outputStreams);
- }
- return callTaskParser(task.parser, outputStreams.asStrings());
- });
- }
- attemptEmptyTask(task, logger) {
- return __async(this, null, function* () {
- logger(`empty task bypassing child process to call to task's parser`);
- return task.parser(this);
- });
- }
- handleTaskData(task, args, result, logger) {
- const { exitCode, rejection, stdOut, stdErr } = result;
- return new Promise((done, fail) => {
- logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);
- const { error } = this._plugins.exec("task.error", { error: rejection }, __spreadValues(__spreadValues({}, pluginContext(task, args)), result));
- if (error && task.onError) {
- logger.info(`exitCode=%s handling with custom error handler`);
- return task.onError(result, error, (newStdOut) => {
- logger.info(`custom error handler treated as success`);
- logger(`custom error returned a %s`, objectToString(newStdOut));
- done(new GitOutputStreams(Array.isArray(newStdOut) ? Buffer2.concat(newStdOut) : newStdOut, Buffer2.concat(stdErr)));
- }, fail);
- }
- if (error) {
- logger.info(`handling as error: exitCode=%s stdErr=%s rejection=%o`, exitCode, stdErr.length, rejection);
- return fail(error);
- }
- logger.info(`retrieving task output complete`);
- done(new GitOutputStreams(Buffer2.concat(stdOut), Buffer2.concat(stdErr)));
- });
- }
- gitResponse(task, command, args, outputHandler, logger) {
- return __async(this, null, function* () {
- const outputLogger = logger.sibling("output");
- const spawnOptions = this._plugins.exec("spawn.options", {
- cwd: this.cwd,
- env: this.env,
- windowsHide: true
- }, pluginContext(task, task.commands));
- return new Promise((done) => {
- const stdOut = [];
- const stdErr = [];
- logger.info(`%s %o`, command, args);
- logger("%O", spawnOptions);
- let rejection = this._beforeSpawn(task, args);
- if (rejection) {
- return done({
- stdOut,
- stdErr,
- exitCode: 9901,
- rejection
- });
- }
- this._plugins.exec("spawn.before", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), {
- kill(reason) {
- rejection = reason || rejection;
- }
- }));
- const spawned = (0, import_child_process.spawn)(command, args, spawnOptions);
- spawned.stdout.on("data", onDataReceived(stdOut, "stdOut", logger, outputLogger.step("stdOut")));
- spawned.stderr.on("data", onDataReceived(stdErr, "stdErr", logger, outputLogger.step("stdErr")));
- spawned.on("error", onErrorReceived(stdErr, logger));
- if (outputHandler) {
- logger(`Passing child process stdOut/stdErr to custom outputHandler`);
- outputHandler(command, spawned.stdout, spawned.stderr, [...args]);
- }
- this._plugins.exec("spawn.after", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), {
- spawned,
- close(exitCode, reason) {
- done({
- stdOut,
- stdErr,
- exitCode,
- rejection: rejection || reason
- });
- },
- kill(reason) {
- if (spawned.killed) {
- return;
- }
- rejection = reason;
- spawned.kill("SIGINT");
- }
- }));
- });
- });
- }
- _beforeSpawn(task, args) {
- let rejection;
- this._plugins.exec("spawn.before", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), {
- kill(reason) {
- rejection = reason || rejection;
- }
- }));
- return rejection;
- }
- };
- }
- });
- var git_executor_exports = {};
- __export2(git_executor_exports, {
- GitExecutor: () => GitExecutor
- });
- var GitExecutor;
- var init_git_executor = __esm2({
- "src/lib/runners/git-executor.ts"() {
- init_git_executor_chain();
- GitExecutor = class {
- constructor(binary = "git", cwd, _scheduler, _plugins) {
- this.binary = binary;
- this.cwd = cwd;
- this._scheduler = _scheduler;
- this._plugins = _plugins;
- this._chain = new GitExecutorChain(this, this._scheduler, this._plugins);
- }
- chain() {
- return new GitExecutorChain(this, this._scheduler, this._plugins);
- }
- push(task) {
- return this._chain.push(task);
- }
- };
- }
- });
- function taskCallback(task, response, callback = NOOP) {
- const onSuccess = (data) => {
- callback(null, data);
- };
- const onError2 = (err) => {
- if ((err == null ? void 0 : err.task) === task) {
- callback(err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err, void 0);
- }
- };
- response.then(onSuccess, onError2);
- }
- function addDeprecationNoticeToError(err) {
- let log2 = (name) => {
- console.warn(`simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`);
- log2 = NOOP;
- };
- return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));
- function descriptorReducer(all, name) {
- if (name in err) {
- return all;
- }
- all[name] = {
- enumerable: false,
- configurable: false,
- get() {
- log2(name);
- return err.git[name];
- }
- };
- return all;
- }
- }
- var init_task_callback = __esm2({
- "src/lib/task-callback.ts"() {
- init_git_response_error();
- init_utils();
- }
- });
- function changeWorkingDirectoryTask(directory, root) {
- return adhocExecTask((instance6) => {
- if (!folderExists(directory)) {
- throw new Error(`Git.cwd: cannot change to non-directory "${directory}"`);
- }
- return (root || instance6).cwd = directory;
- });
- }
- var init_change_working_directory = __esm2({
- "src/lib/tasks/change-working-directory.ts"() {
- init_utils();
- init_task();
- }
- });
- function parseCommitResult(stdOut) {
- const result = {
- author: null,
- branch: "",
- commit: "",
- root: false,
- summary: {
- changes: 0,
- insertions: 0,
- deletions: 0
- }
- };
- return parseStringResponse(result, parsers, stdOut);
- }
- var parsers;
- var init_parse_commit = __esm2({
- "src/lib/parsers/parse-commit.ts"() {
- init_utils();
- parsers = [
- new LineParser(/^\[([^\s]+)( \([^)]+\))? ([^\]]+)/, (result, [branch2, root, commit2]) => {
- result.branch = branch2;
- result.commit = commit2;
- result.root = !!root;
- }),
- new LineParser(/\s*Author:\s(.+)/i, (result, [author]) => {
- const parts = author.split("<");
- const email = parts.pop();
- if (!email || !email.includes("@")) {
- return;
- }
- result.author = {
- email: email.substr(0, email.length - 1),
- name: parts.join("<").trim()
- };
- }),
- new LineParser(/(\d+)[^,]*(?:,\s*(\d+)[^,]*)(?:,\s*(\d+))/g, (result, [changes, insertions, deletions]) => {
- result.summary.changes = parseInt(changes, 10) || 0;
- result.summary.insertions = parseInt(insertions, 10) || 0;
- result.summary.deletions = parseInt(deletions, 10) || 0;
- }),
- new LineParser(/^(\d+)[^,]*(?:,\s*(\d+)[^(]+\(([+-]))?/, (result, [changes, lines, direction]) => {
- result.summary.changes = parseInt(changes, 10) || 0;
- const count = parseInt(lines, 10) || 0;
- if (direction === "-") {
- result.summary.deletions = count;
- } else if (direction === "+") {
- result.summary.insertions = count;
- }
- })
- ];
- }
- });
- var commit_exports = {};
- __export2(commit_exports, {
- commitTask: () => commitTask,
- default: () => commit_default
- });
- function commitTask(message, files, customArgs) {
- const commands = [
- "-c",
- "core.abbrev=40",
- "commit",
- ...prefixedArray(message, "-m"),
- ...files,
- ...customArgs
- ];
- return {
- commands,
- format: "utf-8",
- parser: parseCommitResult
- };
- }
- function commit_default() {
- return {
- commit(message, ...rest) {
- const next = trailingFunctionArgument(arguments);
- const task = rejectDeprecatedSignatures(message) || commitTask(asArray(message), asArray(filterType(rest[0], filterStringOrStringArray, [])), [...filterType(rest[1], filterArray, []), ...getTrailingOptions(arguments, 0, true)]);
- return this._runTask(task, next);
- }
- };
- function rejectDeprecatedSignatures(message) {
- return !filterStringOrStringArray(message) && configurationErrorTask(`git.commit: requires the commit message to be supplied as a string/string[]`);
- }
- }
- var init_commit = __esm2({
- "src/lib/tasks/commit.ts"() {
- init_parse_commit();
- init_utils();
- init_task();
- }
- });
- function hashObjectTask(filePath, write) {
- const commands = ["hash-object", filePath];
- if (write) {
- commands.push("-w");
- }
- return straightThroughStringTask(commands, true);
- }
- var init_hash_object = __esm2({
- "src/lib/tasks/hash-object.ts"() {
- init_task();
- }
- });
- function parseInit(bare, path2, text2) {
- const response = String(text2).trim();
- let result;
- if (result = initResponseRegex.exec(response)) {
- return new InitSummary(bare, path2, false, result[1]);
- }
- if (result = reInitResponseRegex.exec(response)) {
- return new InitSummary(bare, path2, true, result[1]);
- }
- let gitDir = "";
- const tokens = response.split(" ");
- while (tokens.length) {
- const token = tokens.shift();
- if (token === "in") {
- gitDir = tokens.join(" ");
- break;
- }
- }
- return new InitSummary(bare, path2, /^re/i.test(response), gitDir);
- }
- var InitSummary;
- var initResponseRegex;
- var reInitResponseRegex;
- var init_InitSummary = __esm2({
- "src/lib/responses/InitSummary.ts"() {
- InitSummary = class {
- constructor(bare, path2, existing, gitDir) {
- this.bare = bare;
- this.path = path2;
- this.existing = existing;
- this.gitDir = gitDir;
- }
- };
- initResponseRegex = /^Init.+ repository in (.+)$/;
- reInitResponseRegex = /^Rein.+ in (.+)$/;
- }
- });
- function hasBareCommand(command) {
- return command.includes(bareCommand);
- }
- function initTask(bare = false, path2, customArgs) {
- const commands = ["init", ...customArgs];
- if (bare && !hasBareCommand(commands)) {
- commands.splice(1, 0, bareCommand);
- }
- return {
- commands,
- format: "utf-8",
- parser(text2) {
- return parseInit(commands.includes("--bare"), path2, text2);
- }
- };
- }
- var bareCommand;
- var init_init = __esm2({
- "src/lib/tasks/init.ts"() {
- init_InitSummary();
- bareCommand = "--bare";
- }
- });
- function logFormatFromCommand(customArgs) {
- for (let i = 0; i < customArgs.length; i++) {
- const format = logFormatRegex.exec(customArgs[i]);
- if (format) {
- return `--${format[1]}`;
- }
- }
- return "";
- }
- function isLogFormat(customArg) {
- return logFormatRegex.test(customArg);
- }
- var logFormatRegex;
- var init_log_format = __esm2({
- "src/lib/args/log-format.ts"() {
- logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;
- }
- });
- var DiffSummary;
- var init_DiffSummary = __esm2({
- "src/lib/responses/DiffSummary.ts"() {
- DiffSummary = class {
- constructor() {
- this.changed = 0;
- this.deletions = 0;
- this.insertions = 0;
- this.files = [];
- }
- };
- }
- });
- function getDiffParser(format = "") {
- const parser3 = diffSummaryParsers[format];
- return (stdOut) => parseStringResponse(new DiffSummary(), parser3, stdOut, false);
- }
- var statParser;
- var numStatParser;
- var nameOnlyParser;
- var nameStatusParser;
- var diffSummaryParsers;
- var init_parse_diff_summary = __esm2({
- "src/lib/parsers/parse-diff-summary.ts"() {
- init_log_format();
- init_DiffSummary();
- init_utils();
- statParser = [
- new LineParser(/(.+)\s+\|\s+(\d+)(\s+[+\-]+)?$/, (result, [file, changes, alterations = ""]) => {
- result.files.push({
- file: file.trim(),
- changes: asNumber(changes),
- insertions: alterations.replace(/[^+]/g, "").length,
- deletions: alterations.replace(/[^-]/g, "").length,
- binary: false
- });
- }),
- new LineParser(/(.+) \|\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/, (result, [file, before, after]) => {
- result.files.push({
- file: file.trim(),
- before: asNumber(before),
- after: asNumber(after),
- binary: true
- });
- }),
- new LineParser(/(\d+) files? changed\s*((?:, \d+ [^,]+){0,2})/, (result, [changed, summary]) => {
- const inserted = /(\d+) i/.exec(summary);
- const deleted = /(\d+) d/.exec(summary);
- result.changed = asNumber(changed);
- result.insertions = asNumber(inserted == null ? void 0 : inserted[1]);
- result.deletions = asNumber(deleted == null ? void 0 : deleted[1]);
- })
- ];
- numStatParser = [
- new LineParser(/(\d+)\t(\d+)\t(.+)$/, (result, [changesInsert, changesDelete, file]) => {
- const insertions = asNumber(changesInsert);
- const deletions = asNumber(changesDelete);
- result.changed++;
- result.insertions += insertions;
- result.deletions += deletions;
- result.files.push({
- file,
- changes: insertions + deletions,
- insertions,
- deletions,
- binary: false
- });
- }),
- new LineParser(/-\t-\t(.+)$/, (result, [file]) => {
- result.changed++;
- result.files.push({
- file,
- after: 0,
- before: 0,
- binary: true
- });
- })
- ];
- nameOnlyParser = [
- new LineParser(/(.+)$/, (result, [file]) => {
- result.changed++;
- result.files.push({
- file,
- changes: 0,
- insertions: 0,
- deletions: 0,
- binary: false
- });
- })
- ];
- nameStatusParser = [
- new LineParser(/([ACDMRTUXB])\s*(.+)$/, (result, [_status, file]) => {
- result.changed++;
- result.files.push({
- file,
- changes: 0,
- insertions: 0,
- deletions: 0,
- binary: false
- });
- })
- ];
- diffSummaryParsers = {
- [""]: statParser,
- ["--stat"]: statParser,
- ["--numstat"]: numStatParser,
- ["--name-status"]: nameStatusParser,
- ["--name-only"]: nameOnlyParser
- };
- }
- });
- function lineBuilder(tokens, fields) {
- return fields.reduce((line, field, index2) => {
- line[field] = tokens[index2] || "";
- return line;
- }, /* @__PURE__ */ Object.create({ diff: null }));
- }
- function createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNames, logFormat = "") {
- const parseDiffResult = getDiffParser(logFormat);
- return function(stdOut) {
- const all = toLinesWithContent(stdOut, true, START_BOUNDARY).map(function(item) {
- const lineDetail = item.trim().split(COMMIT_BOUNDARY);
- const listLogLine = lineBuilder(lineDetail[0].trim().split(splitter), fields);
- if (lineDetail.length > 1 && !!lineDetail[1].trim()) {
- listLogLine.diff = parseDiffResult(lineDetail[1]);
- }
- return listLogLine;
- });
- return {
- all,
- latest: all.length && all[0] || null,
- total: all.length
- };
- };
- }
- var START_BOUNDARY;
- var COMMIT_BOUNDARY;
- var SPLITTER;
- var defaultFieldNames;
- var init_parse_list_log_summary = __esm2({
- "src/lib/parsers/parse-list-log-summary.ts"() {
- init_utils();
- init_parse_diff_summary();
- init_log_format();
- START_BOUNDARY = "\xF2\xF2\xF2\xF2\xF2\xF2 ";
- COMMIT_BOUNDARY = " \xF2\xF2";
- SPLITTER = " \xF2 ";
- defaultFieldNames = ["hash", "date", "message", "refs", "author_name", "author_email"];
- }
- });
- var diff_exports = {};
- __export2(diff_exports, {
- diffSummaryTask: () => diffSummaryTask,
- validateLogFormatConfig: () => validateLogFormatConfig
- });
- function diffSummaryTask(customArgs) {
- let logFormat = logFormatFromCommand(customArgs);
- const commands = ["diff"];
- if (logFormat === "") {
- logFormat = "--stat";
- commands.push("--stat=4096");
- }
- commands.push(...customArgs);
- return validateLogFormatConfig(commands) || {
- commands,
- format: "utf-8",
- parser: getDiffParser(logFormat)
- };
- }
- function validateLogFormatConfig(customArgs) {
- const flags = customArgs.filter(isLogFormat);
- if (flags.length > 1) {
- return configurationErrorTask(`Summary flags are mutually exclusive - pick one of ${flags.join(",")}`);
- }
- if (flags.length && customArgs.includes("-z")) {
- return configurationErrorTask(`Summary flag ${flags} parsing is not compatible with null termination option '-z'`);
- }
- }
- var init_diff = __esm2({
- "src/lib/tasks/diff.ts"() {
- init_log_format();
- init_parse_diff_summary();
- init_task();
- }
- });
- function prettyFormat(format, splitter) {
- const fields = [];
- const formatStr = [];
- Object.keys(format).forEach((field) => {
- fields.push(field);
- formatStr.push(String(format[field]));
- });
- return [fields, formatStr.join(splitter)];
- }
- function userOptions(input) {
- return Object.keys(input).reduce((out, key2) => {
- if (!(key2 in excludeOptions)) {
- out[key2] = input[key2];
- }
- return out;
- }, {});
- }
- function parseLogOptions(opt = {}, customArgs = []) {
- const splitter = filterType(opt.splitter, filterString, SPLITTER);
- const format = !filterPrimitives(opt.format) && opt.format ? opt.format : {
- hash: "%H",
- date: opt.strictDate === false ? "%ai" : "%aI",
- message: "%s",
- refs: "%D",
- body: opt.multiLine ? "%B" : "%b",
- author_name: opt.mailMap !== false ? "%aN" : "%an",
- author_email: opt.mailMap !== false ? "%aE" : "%ae"
- };
- const [fields, formatStr] = prettyFormat(format, splitter);
- const suffix = [];
- const command = [
- `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`,
- ...customArgs
- ];
- const maxCount = opt.n || opt["max-count"] || opt.maxCount;
- if (maxCount) {
- command.push(`--max-count=${maxCount}`);
- }
- if (opt.from || opt.to) {
- const rangeOperator = opt.symmetric !== false ? "..." : "..";
- suffix.push(`${opt.from || ""}${rangeOperator}${opt.to || ""}`);
- }
- if (filterString(opt.file)) {
- suffix.push("--follow", opt.file);
- }
- appendTaskOptions(userOptions(opt), command);
- return {
- fields,
- splitter,
- commands: [...command, ...suffix]
- };
- }
- function logTask(splitter, fields, customArgs) {
- const parser3 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));
- return {
- commands: ["log", ...customArgs],
- format: "utf-8",
- parser: parser3
- };
- }
- function log_default() {
- return {
- log(...rest) {
- const next = trailingFunctionArgument(arguments);
- const options = parseLogOptions(trailingOptionsArgument(arguments), filterType(arguments[0], filterArray));
- const task = rejectDeprecatedSignatures(...rest) || validateLogFormatConfig(options.commands) || createLogTask(options);
- return this._runTask(task, next);
- }
- };
- function createLogTask(options) {
- return logTask(options.splitter, options.fields, options.commands);
- }
- function rejectDeprecatedSignatures(from, to) {
- return filterString(from) && filterString(to) && configurationErrorTask(`git.log(string, string) should be replaced with git.log({ from: string, to: string })`);
- }
- }
- var excludeOptions;
- var init_log = __esm2({
- "src/lib/tasks/log.ts"() {
- init_log_format();
- init_parse_list_log_summary();
- init_utils();
- init_task();
- init_diff();
- excludeOptions = /* @__PURE__ */ ((excludeOptions2) => {
- excludeOptions2[excludeOptions2["--pretty"] = 0] = "--pretty";
- excludeOptions2[excludeOptions2["max-count"] = 1] = "max-count";
- excludeOptions2[excludeOptions2["maxCount"] = 2] = "maxCount";
- excludeOptions2[excludeOptions2["n"] = 3] = "n";
- excludeOptions2[excludeOptions2["file"] = 4] = "file";
- excludeOptions2[excludeOptions2["format"] = 5] = "format";
- excludeOptions2[excludeOptions2["from"] = 6] = "from";
- excludeOptions2[excludeOptions2["to"] = 7] = "to";
- excludeOptions2[excludeOptions2["splitter"] = 8] = "splitter";
- excludeOptions2[excludeOptions2["symmetric"] = 9] = "symmetric";
- excludeOptions2[excludeOptions2["mailMap"] = 10] = "mailMap";
- excludeOptions2[excludeOptions2["multiLine"] = 11] = "multiLine";
- excludeOptions2[excludeOptions2["strictDate"] = 12] = "strictDate";
- return excludeOptions2;
- })(excludeOptions || {});
- }
- });
- var MergeSummaryConflict;
- var MergeSummaryDetail;
- var init_MergeSummary = __esm2({
- "src/lib/responses/MergeSummary.ts"() {
- MergeSummaryConflict = class {
- constructor(reason, file = null, meta) {
- this.reason = reason;
- this.file = file;
- this.meta = meta;
- }
- toString() {
- return `${this.file}:${this.reason}`;
- }
- };
- MergeSummaryDetail = class {
- constructor() {
- this.conflicts = [];
- this.merges = [];
- this.result = "success";
- }
- get failed() {
- return this.conflicts.length > 0;
- }
- get reason() {
- return this.result;
- }
- toString() {
- if (this.conflicts.length) {
- return `CONFLICTS: ${this.conflicts.join(", ")}`;
- }
- return "OK";
- }
- };
- }
- });
- var PullSummary;
- var PullFailedSummary;
- var init_PullSummary = __esm2({
- "src/lib/responses/PullSummary.ts"() {
- PullSummary = class {
- constructor() {
- this.remoteMessages = {
- all: []
- };
- this.created = [];
- this.deleted = [];
- this.files = [];
- this.deletions = {};
- this.insertions = {};
- this.summary = {
- changes: 0,
- deletions: 0,
- insertions: 0
- };
- }
- };
- PullFailedSummary = class {
- constructor() {
- this.remote = "";
- this.hash = {
- local: "",
- remote: ""
- };
- this.branch = {
- local: "",
- remote: ""
- };
- this.message = "";
- }
- toString() {
- return this.message;
- }
- };
- }
- });
- function objectEnumerationResult(remoteMessages) {
- return remoteMessages.objects = remoteMessages.objects || {
- compressing: 0,
- counting: 0,
- enumerating: 0,
- packReused: 0,
- reused: { count: 0, delta: 0 },
- total: { count: 0, delta: 0 }
- };
- }
- function asObjectCount(source) {
- const count = /^\s*(\d+)/.exec(source);
- const delta = /delta (\d+)/i.exec(source);
- return {
- count: asNumber(count && count[1] || "0"),
- delta: asNumber(delta && delta[1] || "0")
- };
- }
- var remoteMessagesObjectParsers;
- var init_parse_remote_objects = __esm2({
- "src/lib/parsers/parse-remote-objects.ts"() {
- init_utils();
- remoteMessagesObjectParsers = [
- new RemoteLineParser(/^remote:\s*(enumerating|counting|compressing) objects: (\d+),/i, (result, [action, count]) => {
- const key2 = action.toLowerCase();
- const enumeration = objectEnumerationResult(result.remoteMessages);
- Object.assign(enumeration, { [key2]: asNumber(count) });
- }),
- new RemoteLineParser(/^remote:\s*(enumerating|counting|compressing) objects: \d+% \(\d+\/(\d+)\),/i, (result, [action, count]) => {
- const key2 = action.toLowerCase();
- const enumeration = objectEnumerationResult(result.remoteMessages);
- Object.assign(enumeration, { [key2]: asNumber(count) });
- }),
- new RemoteLineParser(/total ([^,]+), reused ([^,]+), pack-reused (\d+)/i, (result, [total, reused, packReused]) => {
- const objects = objectEnumerationResult(result.remoteMessages);
- objects.total = asObjectCount(total);
- objects.reused = asObjectCount(reused);
- objects.packReused = asNumber(packReused);
- })
- ];
- }
- });
- function parseRemoteMessages(_stdOut, stdErr) {
- return parseStringResponse({ remoteMessages: new RemoteMessageSummary() }, parsers2, stdErr);
- }
- var parsers2;
- var RemoteMessageSummary;
- var init_parse_remote_messages = __esm2({
- "src/lib/parsers/parse-remote-messages.ts"() {
- init_utils();
- init_parse_remote_objects();
- parsers2 = [
- new RemoteLineParser(/^remote:\s*(.+)$/, (result, [text2]) => {
- result.remoteMessages.all.push(text2.trim());
- return false;
- }),
- ...remoteMessagesObjectParsers,
- new RemoteLineParser([/create a (?:pull|merge) request/i, /\s(https?:\/\/\S+)$/], (result, [pullRequestUrl]) => {
- result.remoteMessages.pullRequestUrl = pullRequestUrl;
- }),
- new RemoteLineParser([/found (\d+) vulnerabilities.+\(([^)]+)\)/i, /\s(https?:\/\/\S+)$/], (result, [count, summary, url]) => {
- result.remoteMessages.vulnerabilities = {
- count: asNumber(count),
- summary,
- url
- };
- })
- ];
- RemoteMessageSummary = class {
- constructor() {
- this.all = [];
- }
- };
- }
- });
- function parsePullErrorResult(stdOut, stdErr) {
- const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]);
- return pullError.message && pullError;
- }
- var FILE_UPDATE_REGEX;
- var SUMMARY_REGEX;
- var ACTION_REGEX;
- var parsers3;
- var errorParsers;
- var parsePullDetail;
- var parsePullResult;
- var init_parse_pull = __esm2({
- "src/lib/parsers/parse-pull.ts"() {
- init_PullSummary();
- init_utils();
- init_parse_remote_messages();
- FILE_UPDATE_REGEX = /^\s*(.+?)\s+\|\s+\d+\s*(\+*)(-*)/;
- SUMMARY_REGEX = /(\d+)\D+((\d+)\D+\(\+\))?(\D+(\d+)\D+\(-\))?/;
- ACTION_REGEX = /^(create|delete) mode \d+ (.+)/;
- parsers3 = [
- new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => {
- result.files.push(file);
- if (insertions) {
- result.insertions[file] = insertions.length;
- }
- if (deletions) {
- result.deletions[file] = deletions.length;
- }
- }),
- new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => {
- if (insertions !== void 0 || deletions !== void 0) {
- result.summary.changes = +changes || 0;
- result.summary.insertions = +insertions || 0;
- result.summary.deletions = +deletions || 0;
- return true;
- }
- return false;
- }),
- new LineParser(ACTION_REGEX, (result, [action, file]) => {
- append(result.files, file);
- append(action === "create" ? result.created : result.deleted, file);
- })
- ];
- errorParsers = [
- new LineParser(/^from\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),
- new LineParser(/^fatal:\s(.+)$/, (result, [message]) => void (result.message = message)),
- new LineParser(/([a-z0-9]+)\.\.([a-z0-9]+)\s+(\S+)\s+->\s+(\S+)$/, (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {
- result.branch.local = branchLocal;
- result.hash.local = hashLocal;
- result.branch.remote = branchRemote;
- result.hash.remote = hashRemote;
- })
- ];
- parsePullDetail = (stdOut, stdErr) => {
- return parseStringResponse(new PullSummary(), parsers3, [stdOut, stdErr]);
- };
- parsePullResult = (stdOut, stdErr) => {
- return Object.assign(new PullSummary(), parsePullDetail(stdOut, stdErr), parseRemoteMessages(stdOut, stdErr));
- };
- }
- });
- var parsers4;
- var parseMergeResult;
- var parseMergeDetail;
- var init_parse_merge = __esm2({
- "src/lib/parsers/parse-merge.ts"() {
- init_MergeSummary();
- init_utils();
- init_parse_pull();
- parsers4 = [
- new LineParser(/^Auto-merging\s+(.+)$/, (summary, [autoMerge]) => {
- summary.merges.push(autoMerge);
- }),
- new LineParser(/^CONFLICT\s+\((.+)\): Merge conflict in (.+)$/, (summary, [reason, file]) => {
- summary.conflicts.push(new MergeSummaryConflict(reason, file));
- }),
- new LineParser(/^CONFLICT\s+\((.+\/delete)\): (.+) deleted in (.+) and/, (summary, [reason, file, deleteRef2]) => {
- summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef: deleteRef2 }));
- }),
- new LineParser(/^CONFLICT\s+\((.+)\):/, (summary, [reason]) => {
- summary.conflicts.push(new MergeSummaryConflict(reason, null));
- }),
- new LineParser(/^Automatic merge failed;\s+(.+)$/, (summary, [result]) => {
- summary.result = result;
- })
- ];
- parseMergeResult = (stdOut, stdErr) => {
- return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr));
- };
- parseMergeDetail = (stdOut) => {
- return parseStringResponse(new MergeSummaryDetail(), parsers4, stdOut);
- };
- }
- });
- function mergeTask(customArgs) {
- if (!customArgs.length) {
- return configurationErrorTask("Git.merge requires at least one option");
- }
- return {
- commands: ["merge", ...customArgs],
- format: "utf-8",
- parser(stdOut, stdErr) {
- const merge2 = parseMergeResult(stdOut, stdErr);
- if (merge2.failed) {
- throw new GitResponseError(merge2);
- }
- return merge2;
- }
- };
- }
- var init_merge = __esm2({
- "src/lib/tasks/merge.ts"() {
- init_git_response_error();
- init_parse_merge();
- init_task();
- }
- });
- function pushResultPushedItem(local, remote, status2) {
- const deleted = status2.includes("deleted");
- const tag2 = status2.includes("tag") || /^refs\/tags/.test(local);
- const alreadyUpdated = !status2.includes("new");
- return {
- deleted,
- tag: tag2,
- branch: !tag2,
- new: !alreadyUpdated,
- alreadyUpdated,
- local,
- remote
- };
- }
- var parsers5;
- var parsePushResult;
- var parsePushDetail;
- var init_parse_push = __esm2({
- "src/lib/parsers/parse-push.ts"() {
- init_utils();
- init_parse_remote_messages();
- parsers5 = [
- new LineParser(/^Pushing to (.+)$/, (result, [repo]) => {
- result.repo = repo;
- }),
- new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {
- result.ref = __spreadProps(__spreadValues({}, result.ref || {}), {
- local
- });
- }),
- new LineParser(/^[*-=]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => {
- result.pushed.push(pushResultPushedItem(local, remote, type));
- }),
- new LineParser(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/, (result, [local, remote, remoteName]) => {
- result.branch = __spreadProps(__spreadValues({}, result.branch || {}), {
- local,
- remote,
- remoteName
- });
- }),
- new LineParser(/^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/, (result, [local, remote, from, to]) => {
- result.update = {
- head: {
- local,
- remote
- },
- hash: {
- from,
- to
- }
- };
- })
- ];
- parsePushResult = (stdOut, stdErr) => {
- const pushDetail = parsePushDetail(stdOut, stdErr);
- const responseDetail = parseRemoteMessages(stdOut, stdErr);
- return __spreadValues(__spreadValues({}, pushDetail), responseDetail);
- };
- parsePushDetail = (stdOut, stdErr) => {
- return parseStringResponse({ pushed: [] }, parsers5, [stdOut, stdErr]);
- };
- }
- });
- var push_exports = {};
- __export2(push_exports, {
- pushTagsTask: () => pushTagsTask,
- pushTask: () => pushTask
- });
- function pushTagsTask(ref = {}, customArgs) {
- append(customArgs, "--tags");
- return pushTask(ref, customArgs);
- }
- function pushTask(ref = {}, customArgs) {
- const commands = ["push", ...customArgs];
- if (ref.branch) {
- commands.splice(1, 0, ref.branch);
- }
- if (ref.remote) {
- commands.splice(1, 0, ref.remote);
- }
- remove2(commands, "-v");
- append(commands, "--verbose");
- append(commands, "--porcelain");
- return {
- commands,
- format: "utf-8",
- parser: parsePushResult
- };
- }
- var init_push = __esm2({
- "src/lib/tasks/push.ts"() {
- init_parse_push();
- init_utils();
- }
- });
- var fromPathRegex;
- var FileStatusSummary;
- var init_FileStatusSummary = __esm2({
- "src/lib/responses/FileStatusSummary.ts"() {
- fromPathRegex = /^(.+) -> (.+)$/;
- FileStatusSummary = class {
- constructor(path2, index2, working_dir) {
- this.path = path2;
- this.index = index2;
- this.working_dir = working_dir;
- if (index2 + working_dir === "R") {
- const detail = fromPathRegex.exec(path2) || [null, path2, path2];
- this.from = detail[1] || "";
- this.path = detail[2] || "";
- }
- }
- };
- }
- });
- function renamedFile(line) {
- const [to, from] = line.split(NULL);
- return {
- from: from || to,
- to
- };
- }
- function parser2(indexX, indexY, handler) {
- return [`${indexX}${indexY}`, handler];
- }
- function conflicts(indexX, ...indexY) {
- return indexY.map((y) => parser2(indexX, y, (result, file) => append(result.conflicted, file)));
- }
- function splitLine(result, lineStr) {
- const trimmed2 = lineStr.trim();
- switch (" ") {
- case trimmed2.charAt(2):
- return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.substr(3));
- case trimmed2.charAt(1):
- return data(" ", trimmed2.charAt(0), trimmed2.substr(2));
- default:
- return;
- }
- function data(index2, workingDir, path2) {
- const raw = `${index2}${workingDir}`;
- const handler = parsers6.get(raw);
- if (handler) {
- handler(result, path2);
- }
- if (raw !== "##" && raw !== "!!") {
- result.files.push(new FileStatusSummary(path2.replace(/\0.+$/, ""), index2, workingDir));
- }
- }
- }
- var StatusSummary;
- var parsers6;
- var parseStatusSummary;
- var init_StatusSummary = __esm2({
- "src/lib/responses/StatusSummary.ts"() {
- init_utils();
- init_FileStatusSummary();
- StatusSummary = class {
- constructor() {
- this.not_added = [];
- this.conflicted = [];
- this.created = [];
- this.deleted = [];
- this.ignored = void 0;
- this.modified = [];
- this.renamed = [];
- this.files = [];
- this.staged = [];
- this.ahead = 0;
- this.behind = 0;
- this.current = null;
- this.tracking = null;
- this.detached = false;
- this.isClean = () => {
- return !this.files.length;
- };
- }
- };
- parsers6 = new Map([
- parser2(" ", "A", (result, file) => append(result.created, file)),
- parser2(" ", "D", (result, file) => append(result.deleted, file)),
- parser2(" ", "M", (result, file) => append(result.modified, file)),
- parser2("A", " ", (result, file) => append(result.created, file) && append(result.staged, file)),
- parser2("A", "M", (result, file) => append(result.created, file) && append(result.staged, file) && append(result.modified, file)),
- parser2("D", " ", (result, file) => append(result.deleted, file) && append(result.staged, file)),
- parser2("M", " ", (result, file) => append(result.modified, file) && append(result.staged, file)),
- parser2("M", "M", (result, file) => append(result.modified, file) && append(result.staged, file)),
- parser2("R", " ", (result, file) => {
- append(result.renamed, renamedFile(file));
- }),
- parser2("R", "M", (result, file) => {
- const renamed = renamedFile(file);
- append(result.renamed, renamed);
- append(result.modified, renamed.to);
- }),
- parser2("!", "!", (_result, _file) => {
- append(_result.ignored = _result.ignored || [], _file);
- }),
- parser2("?", "?", (result, file) => append(result.not_added, file)),
- ...conflicts("A", "A", "U"),
- ...conflicts("D", "D", "U"),
- ...conflicts("U", "A", "D", "U"),
- [
- "##",
- (result, line) => {
- const aheadReg = /ahead (\d+)/;
- const behindReg = /behind (\d+)/;
- const currentReg = /^(.+?(?=(?:\.{3}|\s|$)))/;
- const trackingReg = /\.{3}(\S*)/;
- const onEmptyBranchReg = /\son\s([\S]+)$/;
- let regexResult;
- regexResult = aheadReg.exec(line);
- result.ahead = regexResult && +regexResult[1] || 0;
- regexResult = behindReg.exec(line);
- result.behind = regexResult && +regexResult[1] || 0;
- regexResult = currentReg.exec(line);
- result.current = regexResult && regexResult[1];
- regexResult = trackingReg.exec(line);
- result.tracking = regexResult && regexResult[1];
- regexResult = onEmptyBranchReg.exec(line);
- result.current = regexResult && regexResult[1] || result.current;
- result.detached = /\(no branch\)/.test(line);
- }
- ]
- ]);
- parseStatusSummary = function(text2) {
- const lines = text2.split(NULL);
- const status2 = new StatusSummary();
- for (let i = 0, l = lines.length; i < l; ) {
- let line = lines[i++].trim();
- if (!line) {
- continue;
- }
- if (line.charAt(0) === "R") {
- line += NULL + (lines[i++] || "");
- }
- splitLine(status2, line);
- }
- return status2;
- };
- }
- });
- function statusTask(customArgs) {
- const commands = [
- "status",
- "--porcelain",
- "-b",
- "-u",
- "--null",
- ...customArgs.filter((arg) => !ignoredOptions.includes(arg))
- ];
- return {
- format: "utf-8",
- commands,
- parser(text2) {
- return parseStatusSummary(text2);
- }
- };
- }
- var ignoredOptions;
- var init_status = __esm2({
- "src/lib/tasks/status.ts"() {
- init_StatusSummary();
- ignoredOptions = ["--null", "-z"];
- }
- });
- function versionResponse(major = 0, minor = 0, patch = 0, agent = "", installed = true) {
- return Object.defineProperty({
- major,
- minor,
- patch,
- agent,
- installed
- }, "toString", {
- value() {
- return `${this.major}.${this.minor}.${this.patch}`;
- },
- configurable: false,
- enumerable: false
- });
- }
- function notInstalledResponse() {
- return versionResponse(0, 0, 0, "", false);
- }
- function version_default() {
- return {
- version() {
- return this._runTask({
- commands: ["--version"],
- format: "utf-8",
- parser: versionParser,
- onError(result, error, done, fail) {
- if (result.exitCode === -2) {
- return done(Buffer2.from(NOT_INSTALLED));
- }
- fail(error);
- }
- });
- }
- };
- }
- function versionParser(stdOut) {
- if (stdOut === NOT_INSTALLED) {
- return notInstalledResponse();
- }
- return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers7, stdOut);
- }
- var NOT_INSTALLED;
- var parsers7;
- var init_version = __esm2({
- "src/lib/tasks/version.ts"() {
- init_utils();
- NOT_INSTALLED = "installed=false";
- parsers7 = [
- new LineParser(/version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/, (result, [major, minor, patch, agent = ""]) => {
- Object.assign(result, versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent));
- }),
- new LineParser(/version (\d+)\.(\d+)\.(\D+)(.+)?$/, (result, [major, minor, patch, agent = ""]) => {
- Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));
- })
- ];
- }
- });
- var simple_git_api_exports = {};
- __export2(simple_git_api_exports, {
- SimpleGitApi: () => SimpleGitApi
- });
- var SimpleGitApi;
- var init_simple_git_api = __esm2({
- "src/lib/simple-git-api.ts"() {
- init_task_callback();
- init_change_working_directory();
- init_commit();
- init_config();
- init_grep();
- init_hash_object();
- init_init();
- init_log();
- init_merge();
- init_push();
- init_status();
- init_task();
- init_version();
- init_utils();
- SimpleGitApi = class {
- constructor(_executor) {
- this._executor = _executor;
- }
- _runTask(task, then) {
- const chain = this._executor.chain();
- const promise2 = chain.push(task);
- if (then) {
- taskCallback(task, promise2, then);
- }
- return Object.create(this, {
- then: { value: promise2.then.bind(promise2) },
- catch: { value: promise2.catch.bind(promise2) },
- _executor: { value: chain }
- });
- }
- add(files) {
- return this._runTask(straightThroughStringTask(["add", ...asArray(files)]), trailingFunctionArgument(arguments));
- }
- cwd(directory) {
- const next = trailingFunctionArgument(arguments);
- if (typeof directory === "string") {
- return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);
- }
- if (typeof (directory == null ? void 0 : directory.path) === "string") {
- return this._runTask(changeWorkingDirectoryTask(directory.path, directory.root && this._executor || void 0), next);
- }
- return this._runTask(configurationErrorTask("Git.cwd: workingDirectory must be supplied as a string"), next);
- }
- hashObject(path2, write) {
- return this._runTask(hashObjectTask(path2, write === true), trailingFunctionArgument(arguments));
- }
- init(bare) {
- return this._runTask(initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)), trailingFunctionArgument(arguments));
- }
- merge() {
- return this._runTask(mergeTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments));
- }
- mergeFromTo(remote, branch2) {
- if (!(filterString(remote) && filterString(branch2))) {
- return this._runTask(configurationErrorTask(`Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`));
- }
- return this._runTask(mergeTask([remote, branch2, ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments, false));
- }
- outputHandler(handler) {
- this._executor.outputHandler = handler;
- return this;
- }
- push() {
- const task = pushTask({
- remote: filterType(arguments[0], filterString),
- branch: filterType(arguments[1], filterString)
- }, getTrailingOptions(arguments));
- return this._runTask(task, trailingFunctionArgument(arguments));
- }
- stash() {
- return this._runTask(straightThroughStringTask(["stash", ...getTrailingOptions(arguments)]), trailingFunctionArgument(arguments));
- }
- status() {
- return this._runTask(statusTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments));
- }
- };
- Object.assign(SimpleGitApi.prototype, commit_default(), config_default(), grep_default(), log_default(), version_default());
- }
- });
- var scheduler_exports = {};
- __export2(scheduler_exports, {
- Scheduler: () => Scheduler
- });
- var createScheduledTask;
- var Scheduler;
- var init_scheduler = __esm2({
- "src/lib/runners/scheduler.ts"() {
- init_utils();
- init_git_logger();
- createScheduledTask = (() => {
- let id = 0;
- return () => {
- id++;
- const { promise: promise2, done } = (0, import_promise_deferred.createDeferred)();
- return {
- promise: promise2,
- done,
- id
- };
- };
- })();
- Scheduler = class {
- constructor(concurrency = 2) {
- this.concurrency = concurrency;
- this.logger = createLogger("", "scheduler");
- this.pending = [];
- this.running = [];
- this.logger(`Constructed, concurrency=%s`, concurrency);
- }
- schedule() {
- if (!this.pending.length || this.running.length >= this.concurrency) {
- this.logger(`Schedule attempt ignored, pending=%s running=%s concurrency=%s`, this.pending.length, this.running.length, this.concurrency);
- return;
- }
- const task = append(this.running, this.pending.shift());
- this.logger(`Attempting id=%s`, task.id);
- task.done(() => {
- this.logger(`Completing id=`, task.id);
- remove2(this.running, task);
- this.schedule();
- });
- }
- next() {
- const { promise: promise2, id } = append(this.pending, createScheduledTask());
- this.logger(`Scheduling id=%s`, id);
- this.schedule();
- return promise2;
- }
- };
- }
- });
- var apply_patch_exports = {};
- __export2(apply_patch_exports, {
- applyPatchTask: () => applyPatchTask
- });
- function applyPatchTask(patches, customArgs) {
- return straightThroughStringTask(["apply", ...customArgs, ...patches]);
- }
- var init_apply_patch = __esm2({
- "src/lib/tasks/apply-patch.ts"() {
- init_task();
- }
- });
- function branchDeletionSuccess(branch2, hash2) {
- return {
- branch: branch2,
- hash: hash2,
- success: true
- };
- }
- function branchDeletionFailure(branch2) {
- return {
- branch: branch2,
- hash: null,
- success: false
- };
- }
- var BranchDeletionBatch;
- var init_BranchDeleteSummary = __esm2({
- "src/lib/responses/BranchDeleteSummary.ts"() {
- BranchDeletionBatch = class {
- constructor() {
- this.all = [];
- this.branches = {};
- this.errors = [];
- }
- get success() {
- return !this.errors.length;
- }
- };
- }
- });
- function hasBranchDeletionError(data, processExitCode) {
- return processExitCode === 1 && deleteErrorRegex.test(data);
- }
- var deleteSuccessRegex;
- var deleteErrorRegex;
- var parsers8;
- var parseBranchDeletions;
- var init_parse_branch_delete = __esm2({
- "src/lib/parsers/parse-branch-delete.ts"() {
- init_BranchDeleteSummary();
- init_utils();
- deleteSuccessRegex = /(\S+)\s+\(\S+\s([^)]+)\)/;
- deleteErrorRegex = /^error[^']+'([^']+)'/m;
- parsers8 = [
- new LineParser(deleteSuccessRegex, (result, [branch2, hash2]) => {
- const deletion = branchDeletionSuccess(branch2, hash2);
- result.all.push(deletion);
- result.branches[branch2] = deletion;
- }),
- new LineParser(deleteErrorRegex, (result, [branch2]) => {
- const deletion = branchDeletionFailure(branch2);
- result.errors.push(deletion);
- result.all.push(deletion);
- result.branches[branch2] = deletion;
- })
- ];
- parseBranchDeletions = (stdOut, stdErr) => {
- return parseStringResponse(new BranchDeletionBatch(), parsers8, [stdOut, stdErr]);
- };
- }
- });
- var BranchSummaryResult;
- var init_BranchSummary = __esm2({
- "src/lib/responses/BranchSummary.ts"() {
- BranchSummaryResult = class {
- constructor() {
- this.all = [];
- this.branches = {};
- this.current = "";
- this.detached = false;
- }
- push(status2, detached, name, commit2, label) {
- if (status2 === "*") {
- this.detached = detached;
- this.current = name;
- }
- this.all.push(name);
- this.branches[name] = {
- current: status2 === "*",
- linkedWorkTree: status2 === "+",
- name,
- commit: commit2,
- label
- };
- }
- };
- }
- });
- function branchStatus(input) {
- return input ? input.charAt(0) : "";
- }
- function parseBranchSummary(stdOut) {
- return parseStringResponse(new BranchSummaryResult(), parsers9, stdOut);
- }
- var parsers9;
- var init_parse_branch = __esm2({
- "src/lib/parsers/parse-branch.ts"() {
- init_BranchSummary();
- init_utils();
- parsers9 = [
- new LineParser(/^([*+]\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/, (result, [current, name, commit2, label]) => {
- result.push(branchStatus(current), true, name, commit2, label);
- }),
- new LineParser(/^([*+]\s)?(\S+)\s+([a-z0-9]+)\s?(.*)$/s, (result, [current, name, commit2, label]) => {
- result.push(branchStatus(current), false, name, commit2, label);
- })
- ];
- }
- });
- var branch_exports = {};
- __export2(branch_exports, {
- branchLocalTask: () => branchLocalTask,
- branchTask: () => branchTask,
- containsDeleteBranchCommand: () => containsDeleteBranchCommand,
- deleteBranchTask: () => deleteBranchTask,
- deleteBranchesTask: () => deleteBranchesTask
- });
- function containsDeleteBranchCommand(commands) {
- const deleteCommands = ["-d", "-D", "--delete"];
- return commands.some((command) => deleteCommands.includes(command));
- }
- function branchTask(customArgs) {
- const isDelete = containsDeleteBranchCommand(customArgs);
- const commands = ["branch", ...customArgs];
- if (commands.length === 1) {
- commands.push("-a");
- }
- if (!commands.includes("-v")) {
- commands.splice(1, 0, "-v");
- }
- return {
- format: "utf-8",
- commands,
- parser(stdOut, stdErr) {
- if (isDelete) {
- return parseBranchDeletions(stdOut, stdErr).all[0];
- }
- return parseBranchSummary(stdOut);
- }
- };
- }
- function branchLocalTask() {
- const parser3 = parseBranchSummary;
- return {
- format: "utf-8",
- commands: ["branch", "-v"],
- parser: parser3
- };
- }
- function deleteBranchesTask(branches, forceDelete = false) {
- return {
- format: "utf-8",
- commands: ["branch", "-v", forceDelete ? "-D" : "-d", ...branches],
- parser(stdOut, stdErr) {
- return parseBranchDeletions(stdOut, stdErr);
- },
- onError({ exitCode, stdOut }, error, done, fail) {
- if (!hasBranchDeletionError(String(error), exitCode)) {
- return fail(error);
- }
- done(stdOut);
- }
- };
- }
- function deleteBranchTask(branch2, forceDelete = false) {
- const task = {
- format: "utf-8",
- commands: ["branch", "-v", forceDelete ? "-D" : "-d", branch2],
- parser(stdOut, stdErr) {
- return parseBranchDeletions(stdOut, stdErr).branches[branch2];
- },
- onError({ exitCode, stdErr, stdOut }, error, _, fail) {
- if (!hasBranchDeletionError(String(error), exitCode)) {
- return fail(error);
- }
- throw new GitResponseError(task.parser(bufferToString(stdOut), bufferToString(stdErr)), String(error));
- }
- };
- return task;
- }
- var init_branch = __esm2({
- "src/lib/tasks/branch.ts"() {
- init_git_response_error();
- init_parse_branch_delete();
- init_parse_branch();
- init_utils();
- }
- });
- var parseCheckIgnore;
- var init_CheckIgnore = __esm2({
- "src/lib/responses/CheckIgnore.ts"() {
- parseCheckIgnore = (text2) => {
- return text2.split(/\n/g).map((line) => line.trim()).filter((file) => !!file);
- };
- }
- });
- var check_ignore_exports = {};
- __export2(check_ignore_exports, {
- checkIgnoreTask: () => checkIgnoreTask
- });
- function checkIgnoreTask(paths) {
- return {
- commands: ["check-ignore", ...paths],
- format: "utf-8",
- parser: parseCheckIgnore
- };
- }
- var init_check_ignore = __esm2({
- "src/lib/tasks/check-ignore.ts"() {
- init_CheckIgnore();
- }
- });
- var clone_exports = {};
- __export2(clone_exports, {
- cloneMirrorTask: () => cloneMirrorTask,
- cloneTask: () => cloneTask
- });
- function disallowedCommand(command) {
- return /^--upload-pack(=|$)/.test(command);
- }
- function cloneTask(repo, directory, customArgs) {
- const commands = ["clone", ...customArgs];
- filterString(repo) && commands.push(repo);
- filterString(directory) && commands.push(directory);
- const banned = commands.find(disallowedCommand);
- if (banned) {
- return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);
- }
- return straightThroughStringTask(commands);
- }
- function cloneMirrorTask(repo, directory, customArgs) {
- append(customArgs, "--mirror");
- return cloneTask(repo, directory, customArgs);
- }
- var init_clone = __esm2({
- "src/lib/tasks/clone.ts"() {
- init_task();
- init_utils();
- }
- });
- function parseFetchResult(stdOut, stdErr) {
- const result = {
- raw: stdOut,
- remote: null,
- branches: [],
- tags: [],
- updated: [],
- deleted: []
- };
- return parseStringResponse(result, parsers10, [stdOut, stdErr]);
- }
- var parsers10;
- var init_parse_fetch = __esm2({
- "src/lib/parsers/parse-fetch.ts"() {
- init_utils();
- parsers10 = [
- new LineParser(/From (.+)$/, (result, [remote]) => {
- result.remote = remote;
- }),
- new LineParser(/\* \[new branch]\s+(\S+)\s*-> (.+)$/, (result, [name, tracking]) => {
- result.branches.push({
- name,
- tracking
- });
- }),
- new LineParser(/\* \[new tag]\s+(\S+)\s*-> (.+)$/, (result, [name, tracking]) => {
- result.tags.push({
- name,
- tracking
- });
- }),
- new LineParser(/- \[deleted]\s+\S+\s*-> (.+)$/, (result, [tracking]) => {
- result.deleted.push({
- tracking
- });
- }),
- new LineParser(/\s*([^.]+)\.\.(\S+)\s+(\S+)\s*-> (.+)$/, (result, [from, to, name, tracking]) => {
- result.updated.push({
- name,
- tracking,
- to,
- from
- });
- })
- ];
- }
- });
- var fetch_exports = {};
- __export2(fetch_exports, {
- fetchTask: () => fetchTask
- });
- function disallowedCommand2(command) {
- return /^--upload-pack(=|$)/.test(command);
- }
- function fetchTask(remote, branch2, customArgs) {
- const commands = ["fetch", ...customArgs];
- if (remote && branch2) {
- commands.push(remote, branch2);
- }
- const banned = commands.find(disallowedCommand2);
- if (banned) {
- return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);
- }
- return {
- commands,
- format: "utf-8",
- parser: parseFetchResult
- };
- }
- var init_fetch = __esm2({
- "src/lib/tasks/fetch.ts"() {
- init_parse_fetch();
- init_task();
- }
- });
- function parseMoveResult(stdOut) {
- return parseStringResponse({ moves: [] }, parsers11, stdOut);
- }
- var parsers11;
- var init_parse_move = __esm2({
- "src/lib/parsers/parse-move.ts"() {
- init_utils();
- parsers11 = [
- new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {
- result.moves.push({ from, to });
- })
- ];
- }
- });
- var move_exports = {};
- __export2(move_exports, {
- moveTask: () => moveTask
- });
- function moveTask(from, to) {
- return {
- commands: ["mv", "-v", ...asArray(from), to],
- format: "utf-8",
- parser: parseMoveResult
- };
- }
- var init_move = __esm2({
- "src/lib/tasks/move.ts"() {
- init_parse_move();
- init_utils();
- }
- });
- var pull_exports = {};
- __export2(pull_exports, {
- pullTask: () => pullTask
- });
- function pullTask(remote, branch2, customArgs) {
- const commands = ["pull", ...customArgs];
- if (remote && branch2) {
- commands.splice(1, 0, remote, branch2);
- }
- return {
- commands,
- format: "utf-8",
- parser(stdOut, stdErr) {
- return parsePullResult(stdOut, stdErr);
- },
- onError(result, _error, _done, fail) {
- const pullError = parsePullErrorResult(bufferToString(result.stdOut), bufferToString(result.stdErr));
- if (pullError) {
- return fail(new GitResponseError(pullError));
- }
- fail(_error);
- }
- };
- }
- var init_pull = __esm2({
- "src/lib/tasks/pull.ts"() {
- init_git_response_error();
- init_parse_pull();
- init_utils();
- }
- });
- function parseGetRemotes(text2) {
- const remotes = {};
- forEach(text2, ([name]) => remotes[name] = { name });
- return Object.values(remotes);
- }
- function parseGetRemotesVerbose(text2) {
- const remotes = {};
- forEach(text2, ([name, url, purpose]) => {
- if (!remotes.hasOwnProperty(name)) {
- remotes[name] = {
- name,
- refs: { fetch: "", push: "" }
- };
- }
- if (purpose && url) {
- remotes[name].refs[purpose.replace(/[^a-z]/g, "")] = url;
- }
- });
- return Object.values(remotes);
- }
- function forEach(text2, handler) {
- forEachLineWithContent(text2, (line) => handler(line.split(/\s+/)));
- }
- var init_GetRemoteSummary = __esm2({
- "src/lib/responses/GetRemoteSummary.ts"() {
- init_utils();
- }
- });
- var remote_exports = {};
- __export2(remote_exports, {
- addRemoteTask: () => addRemoteTask,
- getRemotesTask: () => getRemotesTask,
- listRemotesTask: () => listRemotesTask,
- remoteTask: () => remoteTask,
- removeRemoteTask: () => removeRemoteTask
- });
- function addRemoteTask(remoteName, remoteRepo, customArgs = []) {
- return straightThroughStringTask(["remote", "add", ...customArgs, remoteName, remoteRepo]);
- }
- function getRemotesTask(verbose) {
- const commands = ["remote"];
- if (verbose) {
- commands.push("-v");
- }
- return {
- commands,
- format: "utf-8",
- parser: verbose ? parseGetRemotesVerbose : parseGetRemotes
- };
- }
- function listRemotesTask(customArgs = []) {
- const commands = [...customArgs];
- if (commands[0] !== "ls-remote") {
- commands.unshift("ls-remote");
- }
- return straightThroughStringTask(commands);
- }
- function remoteTask(customArgs = []) {
- const commands = [...customArgs];
- if (commands[0] !== "remote") {
- commands.unshift("remote");
- }
- return straightThroughStringTask(commands);
- }
- function removeRemoteTask(remoteName) {
- return straightThroughStringTask(["remote", "remove", remoteName]);
- }
- var init_remote = __esm2({
- "src/lib/tasks/remote.ts"() {
- init_GetRemoteSummary();
- init_task();
- }
- });
- var stash_list_exports = {};
- __export2(stash_list_exports, {
- stashListTask: () => stashListTask
- });
- function stashListTask(opt = {}, customArgs) {
- const options = parseLogOptions(opt);
- const commands = ["stash", "list", ...options.commands, ...customArgs];
- const parser3 = createListLogSummaryParser(options.splitter, options.fields, logFormatFromCommand(commands));
- return validateLogFormatConfig(commands) || {
- commands,
- format: "utf-8",
- parser: parser3
- };
- }
- var init_stash_list = __esm2({
- "src/lib/tasks/stash-list.ts"() {
- init_log_format();
- init_parse_list_log_summary();
- init_diff();
- init_log();
- }
- });
- var sub_module_exports = {};
- __export2(sub_module_exports, {
- addSubModuleTask: () => addSubModuleTask,
- initSubModuleTask: () => initSubModuleTask,
- subModuleTask: () => subModuleTask,
- updateSubModuleTask: () => updateSubModuleTask
- });
- function addSubModuleTask(repo, path2) {
- return subModuleTask(["add", repo, path2]);
- }
- function initSubModuleTask(customArgs) {
- return subModuleTask(["init", ...customArgs]);
- }
- function subModuleTask(customArgs) {
- const commands = [...customArgs];
- if (commands[0] !== "submodule") {
- commands.unshift("submodule");
- }
- return straightThroughStringTask(commands);
- }
- function updateSubModuleTask(customArgs) {
- return subModuleTask(["update", ...customArgs]);
- }
- var init_sub_module = __esm2({
- "src/lib/tasks/sub-module.ts"() {
- init_task();
- }
- });
- function singleSorted(a, b) {
- const aIsNum = isNaN(a);
- const bIsNum = isNaN(b);
- if (aIsNum !== bIsNum) {
- return aIsNum ? 1 : -1;
- }
- return aIsNum ? sorted(a, b) : 0;
- }
- function sorted(a, b) {
- return a === b ? 0 : a > b ? 1 : -1;
- }
- function trimmed(input) {
- return input.trim();
- }
- function toNumber(input) {
- if (typeof input === "string") {
- return parseInt(input.replace(/^\D+/g, ""), 10) || 0;
- }
- return 0;
- }
- var TagList;
- var parseTagList;
- var init_TagList = __esm2({
- "src/lib/responses/TagList.ts"() {
- TagList = class {
- constructor(all, latest) {
- this.all = all;
- this.latest = latest;
- }
- };
- parseTagList = function(data, customSort = false) {
- const tags = data.split("\n").map(trimmed).filter(Boolean);
- if (!customSort) {
- tags.sort(function(tagA, tagB) {
- const partsA = tagA.split(".");
- const partsB = tagB.split(".");
- if (partsA.length === 1 || partsB.length === 1) {
- return singleSorted(toNumber(partsA[0]), toNumber(partsB[0]));
- }
- for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {
- const diff2 = sorted(toNumber(partsA[i]), toNumber(partsB[i]));
- if (diff2) {
- return diff2;
- }
- }
- return 0;
- });
- }
- const latest = customSort ? tags[0] : [...tags].reverse().find((tag2) => tag2.indexOf(".") >= 0);
- return new TagList(tags, latest);
- };
- }
- });
- var tag_exports = {};
- __export2(tag_exports, {
- addAnnotatedTagTask: () => addAnnotatedTagTask,
- addTagTask: () => addTagTask,
- tagListTask: () => tagListTask
- });
- function tagListTask(customArgs = []) {
- const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option));
- return {
- format: "utf-8",
- commands: ["tag", "-l", ...customArgs],
- parser(text2) {
- return parseTagList(text2, hasCustomSort);
- }
- };
- }
- function addTagTask(name) {
- return {
- format: "utf-8",
- commands: ["tag", name],
- parser() {
- return { name };
- }
- };
- }
- function addAnnotatedTagTask(name, tagMessage) {
- return {
- format: "utf-8",
- commands: ["tag", "-a", "-m", tagMessage, name],
- parser() {
- return { name };
- }
- };
- }
- var init_tag = __esm2({
- "src/lib/tasks/tag.ts"() {
- init_TagList();
- }
- });
- var require_git = __commonJS2({
- "src/git.js"(exports, module2) {
- var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS(git_executor_exports));
- var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS(simple_git_api_exports));
- var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS(scheduler_exports));
- var { configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));
- var {
- asArray: asArray2,
- filterArray: filterArray2,
- filterPrimitives: filterPrimitives2,
- filterString: filterString2,
- filterStringOrStringArray: filterStringOrStringArray2,
- filterType: filterType2,
- getTrailingOptions: getTrailingOptions2,
- trailingFunctionArgument: trailingFunctionArgument2,
- trailingOptionsArgument: trailingOptionsArgument2
- } = (init_utils(), __toCommonJS(utils_exports));
- var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS(apply_patch_exports));
- var {
- branchTask: branchTask2,
- branchLocalTask: branchLocalTask2,
- deleteBranchesTask: deleteBranchesTask2,
- deleteBranchTask: deleteBranchTask2
- } = (init_branch(), __toCommonJS(branch_exports));
- var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS(check_ignore_exports));
- var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports));
- var { cloneTask: cloneTask2, cloneMirrorTask: cloneMirrorTask2 } = (init_clone(), __toCommonJS(clone_exports));
- var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports));
- var { commitTask: commitTask2 } = (init_commit(), __toCommonJS(commit_exports));
- var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports));
- var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports));
- var { moveTask: moveTask2 } = (init_move(), __toCommonJS(move_exports));
- var { pullTask: pullTask2 } = (init_pull(), __toCommonJS(pull_exports));
- var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS(push_exports));
- var {
- addRemoteTask: addRemoteTask2,
- getRemotesTask: getRemotesTask2,
- listRemotesTask: listRemotesTask2,
- remoteTask: remoteTask2,
- removeRemoteTask: removeRemoteTask2
- } = (init_remote(), __toCommonJS(remote_exports));
- var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS(reset_exports));
- var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS(stash_list_exports));
- var {
- addSubModuleTask: addSubModuleTask2,
- initSubModuleTask: initSubModuleTask2,
- subModuleTask: subModuleTask2,
- updateSubModuleTask: updateSubModuleTask2
- } = (init_sub_module(), __toCommonJS(sub_module_exports));
- var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS(tag_exports));
- var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS(task_exports));
- function Git2(options, plugins) {
- this._executor = new GitExecutor2(options.binary, options.baseDir, new Scheduler2(options.maxConcurrentProcesses), plugins);
- this._trimmed = options.trimmed;
- }
- (Git2.prototype = Object.create(SimpleGitApi2.prototype)).constructor = Git2;
- Git2.prototype.customBinary = function(command) {
- this._executor.binary = command;
- return this;
- };
- Git2.prototype.env = function(name, value) {
- if (arguments.length === 1 && typeof name === "object") {
- this._executor.env = name;
- } else {
- (this._executor.env = this._executor.env || {})[name] = value;
- }
- return this;
- };
- Git2.prototype.stashList = function(options) {
- return this._runTask(stashListTask2(trailingOptionsArgument2(arguments) || {}, filterArray2(options) && options || []), trailingFunctionArgument2(arguments));
- };
- function createCloneTask(api, task, repoPath, localPath) {
- if (typeof repoPath !== "string") {
- return configurationErrorTask2(`git.${api}() requires a string 'repoPath'`);
- }
- return task(repoPath, filterType2(localPath, filterString2), getTrailingOptions2(arguments));
- }
- Git2.prototype.clone = function() {
- return this._runTask(createCloneTask("clone", cloneTask2, ...arguments), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.mirror = function() {
- return this._runTask(createCloneTask("mirror", cloneMirrorTask2, ...arguments), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.mv = function(from, to) {
- return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.checkoutLatestTag = function(then) {
- var git = this;
- return this.pull(function() {
- git.tags(function(err, tags) {
- git.checkout(tags.latest, then);
- });
- });
- };
- Git2.prototype.pull = function(remote, branch2, options, then) {
- return this._runTask(pullTask2(filterType2(remote, filterString2), filterType2(branch2, filterString2), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.fetch = function(remote, branch2) {
- return this._runTask(fetchTask2(filterType2(remote, filterString2), filterType2(branch2, filterString2), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.silent = function(silence) {
- console.warn("simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this will be an error in version 3");
- return this;
- };
- Git2.prototype.tags = function(options, then) {
- return this._runTask(tagListTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.rebase = function() {
- return this._runTask(straightThroughStringTask2(["rebase", ...getTrailingOptions2(arguments)]), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.reset = function(mode) {
- return this._runTask(resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.revert = function(commit2) {
- const next = trailingFunctionArgument2(arguments);
- if (typeof commit2 !== "string") {
- return this._runTask(configurationErrorTask2("Commit must be a string"), next);
- }
- return this._runTask(straightThroughStringTask2(["revert", ...getTrailingOptions2(arguments, 0, true), commit2]), next);
- };
- Git2.prototype.addTag = function(name) {
- const task = typeof name === "string" ? addTagTask2(name) : configurationErrorTask2("Git.addTag requires a tag name");
- return this._runTask(task, trailingFunctionArgument2(arguments));
- };
- Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) {
- return this._runTask(addAnnotatedTagTask2(tagName, tagMessage), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.checkout = function() {
- const commands = ["checkout", ...getTrailingOptions2(arguments, true)];
- return this._runTask(straightThroughStringTask2(commands), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.checkoutBranch = function(branchName, startPoint, then) {
- return this.checkout(["-b", branchName, startPoint], trailingFunctionArgument2(arguments));
- };
- Git2.prototype.checkoutLocalBranch = function(branchName, then) {
- return this.checkout(["-b", branchName], trailingFunctionArgument2(arguments));
- };
- Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) {
- return this._runTask(deleteBranchTask2(branchName, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.deleteLocalBranches = function(branchNames, forceDelete, then) {
- return this._runTask(deleteBranchesTask2(branchNames, typeof forceDelete === "boolean" ? forceDelete : false), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.branch = function(options, then) {
- return this._runTask(branchTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.branchLocal = function(then) {
- return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.raw = function(commands) {
- const createRestCommands = !Array.isArray(commands);
- const command = [].slice.call(createRestCommands ? arguments : commands, 0);
- for (let i = 0; i < command.length && createRestCommands; i++) {
- if (!filterPrimitives2(command[i])) {
- command.splice(i, command.length - i);
- break;
- }
- }
- command.push(...getTrailingOptions2(arguments, 0, true));
- var next = trailingFunctionArgument2(arguments);
- if (!command.length) {
- return this._runTask(configurationErrorTask2("Raw: must supply one or more command to execute"), next);
- }
- return this._runTask(straightThroughStringTask2(command, this._trimmed), next);
- };
- Git2.prototype.submoduleAdd = function(repo, path2, then) {
- return this._runTask(addSubModuleTask2(repo, path2), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.submoduleUpdate = function(args, then) {
- return this._runTask(updateSubModuleTask2(getTrailingOptions2(arguments, true)), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.submoduleInit = function(args, then) {
- return this._runTask(initSubModuleTask2(getTrailingOptions2(arguments, true)), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.subModule = function(options, then) {
- return this._runTask(subModuleTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.listRemote = function() {
- return this._runTask(listRemotesTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.addRemote = function(remoteName, remoteRepo, then) {
- return this._runTask(addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.removeRemote = function(remoteName, then) {
- return this._runTask(removeRemoteTask2(remoteName), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.getRemotes = function(verbose, then) {
- return this._runTask(getRemotesTask2(verbose === true), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.remote = function(options, then) {
- return this._runTask(remoteTask2(getTrailingOptions2(arguments)), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.tag = function(options, then) {
- const command = getTrailingOptions2(arguments);
- if (command[0] !== "tag") {
- command.unshift("tag");
- }
- return this._runTask(straightThroughStringTask2(command), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.updateServerInfo = function(then) {
- return this._runTask(straightThroughStringTask2(["update-server-info"]), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.pushTags = function(remote, then) {
- const task = pushTagsTask2({ remote: filterType2(remote, filterString2) }, getTrailingOptions2(arguments));
- return this._runTask(task, trailingFunctionArgument2(arguments));
- };
- Git2.prototype.rm = function(files) {
- return this._runTask(straightThroughStringTask2(["rm", "-f", ...asArray2(files)]), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.rmKeepLocal = function(files) {
- return this._runTask(straightThroughStringTask2(["rm", "--cached", ...asArray2(files)]), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.catFile = function(options, then) {
- return this._catFile("utf-8", arguments);
- };
- Git2.prototype.binaryCatFile = function() {
- return this._catFile("buffer", arguments);
- };
- Git2.prototype._catFile = function(format, args) {
- var handler = trailingFunctionArgument2(args);
- var command = ["cat-file"];
- var options = args[0];
- if (typeof options === "string") {
- return this._runTask(configurationErrorTask2("Git.catFile: options must be supplied as an array of strings"), handler);
- }
- if (Array.isArray(options)) {
- command.push.apply(command, options);
- }
- const task = format === "buffer" ? straightThroughBufferTask2(command) : straightThroughStringTask2(command);
- return this._runTask(task, handler);
- };
- Git2.prototype.diff = function(options, then) {
- const task = filterString2(options) ? configurationErrorTask2("git.diff: supplying options as a single string is no longer supported, switch to an array of strings") : straightThroughStringTask2(["diff", ...getTrailingOptions2(arguments)]);
- return this._runTask(task, trailingFunctionArgument2(arguments));
- };
- Git2.prototype.diffSummary = function() {
- return this._runTask(diffSummaryTask2(getTrailingOptions2(arguments, 1)), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.applyPatch = function(patches) {
- const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(`git.applyPatch requires one or more string patches as the first argument`) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1)));
- return this._runTask(task, trailingFunctionArgument2(arguments));
- };
- Git2.prototype.revparse = function() {
- const commands = ["rev-parse", ...getTrailingOptions2(arguments, true)];
- return this._runTask(straightThroughStringTask2(commands, true), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.show = function(options, then) {
- return this._runTask(straightThroughStringTask2(["show", ...getTrailingOptions2(arguments, 1)]), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.clean = function(mode, options, then) {
- const usingCleanOptionsArray = isCleanOptionsArray2(mode);
- const cleanMode = usingCleanOptionsArray && mode.join("") || filterType2(mode, filterString2) || "";
- const customArgs = getTrailingOptions2([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));
- return this._runTask(cleanWithOptionsTask2(cleanMode, customArgs), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.exec = function(then) {
- const task = {
- commands: [],
- format: "utf-8",
- parser() {
- if (typeof then === "function") {
- then();
- }
- }
- };
- return this._runTask(task);
- };
- Git2.prototype.clearQueue = function() {
- return this;
- };
- Git2.prototype.checkIgnore = function(pathnames, then) {
- return this._runTask(checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))), trailingFunctionArgument2(arguments));
- };
- Git2.prototype.checkIsRepo = function(checkType, then) {
- return this._runTask(checkIsRepoTask2(filterType2(checkType, filterString2)), trailingFunctionArgument2(arguments));
- };
- module2.exports = Git2;
- }
- });
- init_git_error();
- var GitConstructError = class extends GitError {
- constructor(config, message) {
- super(void 0, message);
- this.config = config;
- }
- };
- init_git_error();
- init_git_error();
- var GitPluginError = class extends GitError {
- constructor(task, plugin, message) {
- super(task, message);
- this.task = task;
- this.plugin = plugin;
- Object.setPrototypeOf(this, new.target.prototype);
- }
- };
- init_git_response_error();
- init_task_configuration_error();
- init_check_is_repo();
- init_clean();
- init_config();
- init_grep();
- init_reset();
- function abortPlugin(signal) {
- if (!signal) {
- return;
- }
- const onSpawnAfter = {
- type: "spawn.after",
- action(_data, context) {
- function kill() {
- context.kill(new GitPluginError(void 0, "abort", "Abort signal received"));
- }
- signal.addEventListener("abort", kill);
- context.spawned.on("close", () => signal.removeEventListener("abort", kill));
- }
- };
- const onSpawnBefore = {
- type: "spawn.before",
- action(_data, context) {
- if (signal.aborted) {
- context.kill(new GitPluginError(void 0, "abort", "Abort already signaled"));
- }
- }
- };
- return [onSpawnBefore, onSpawnAfter];
- }
- function isConfigSwitch(arg) {
- return arg.trim().toLowerCase() === "-c";
- }
- function preventProtocolOverride(arg, next) {
- if (!isConfigSwitch(arg)) {
- return;
- }
- if (!/^\s*protocol(.[a-z]+)?.allow/.test(next)) {
- return;
- }
- throw new GitPluginError(void 0, "unsafe", "Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol");
- }
- function blockUnsafeOperationsPlugin({
- allowUnsafeProtocolOverride = false
- } = {}) {
- return {
- type: "spawn.args",
- action(args, _context) {
- args.forEach((current, index2) => {
- const next = index2 < args.length ? args[index2 + 1] : "";
- allowUnsafeProtocolOverride || preventProtocolOverride(current, next);
- });
- return args;
- }
- };
- }
- init_utils();
- function commandConfigPrefixingPlugin(configuration) {
- const prefix = prefixedArray(configuration, "-c");
- return {
- type: "spawn.args",
- action(data) {
- return [...prefix, ...data];
- }
- };
- }
- init_utils();
- var never = (0, import_promise_deferred2.deferred)().promise;
- function completionDetectionPlugin({
- onClose = true,
- onExit = 50
- } = {}) {
- function createEvents() {
- let exitCode = -1;
- const events = {
- close: (0, import_promise_deferred2.deferred)(),
- closeTimeout: (0, import_promise_deferred2.deferred)(),
- exit: (0, import_promise_deferred2.deferred)(),
- exitTimeout: (0, import_promise_deferred2.deferred)()
- };
- const result = Promise.race([
- onClose === false ? never : events.closeTimeout.promise,
- onExit === false ? never : events.exitTimeout.promise
- ]);
- configureTimeout(onClose, events.close, events.closeTimeout);
- configureTimeout(onExit, events.exit, events.exitTimeout);
- return {
- close(code) {
- exitCode = code;
- events.close.done();
- },
- exit(code) {
- exitCode = code;
- events.exit.done();
- },
- get exitCode() {
- return exitCode;
- },
- result
- };
- }
- function configureTimeout(flag, event, timeout) {
- if (flag === false) {
- return;
- }
- (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done);
- }
- return {
- type: "spawn.after",
- action(_0, _1) {
- return __async(this, arguments, function* (_data, { spawned, close }) {
- var _a2, _b;
- const events = createEvents();
- let deferClose = true;
- let quickClose = () => void (deferClose = false);
- (_a2 = spawned.stdout) == null ? void 0 : _a2.on("data", quickClose);
- (_b = spawned.stderr) == null ? void 0 : _b.on("data", quickClose);
- spawned.on("error", quickClose);
- spawned.on("close", (code) => events.close(code));
- spawned.on("exit", (code) => events.exit(code));
- try {
- yield events.result;
- if (deferClose) {
- yield delay(50);
- }
- close(events.exitCode);
- } catch (err) {
- close(events.exitCode, err);
- }
- });
- }
- };
- }
- init_git_error();
- function isTaskError(result) {
- return !!(result.exitCode && result.stdErr.length);
- }
- function getErrorMessage(result) {
- return Buffer2.concat([...result.stdOut, ...result.stdErr]);
- }
- function errorDetectionHandler(overwrite = false, isError = isTaskError, errorMessage = getErrorMessage) {
- return (error, result) => {
- if (!overwrite && error || !isError(result)) {
- return error;
- }
- return errorMessage(result);
- };
- }
- function errorDetectionPlugin(config) {
- return {
- type: "task.error",
- action(data, context) {
- const error = config(data.error, {
- stdErr: context.stdErr,
- stdOut: context.stdOut,
- exitCode: context.exitCode
- });
- if (Buffer2.isBuffer(error)) {
- return { error: new GitError(void 0, error.toString("utf-8")) };
- }
- return {
- error
- };
- }
- };
- }
- init_utils();
- var PluginStore = class {
- constructor() {
- this.plugins = /* @__PURE__ */ new Set();
- }
- add(plugin) {
- const plugins = [];
- asArray(plugin).forEach((plugin2) => plugin2 && this.plugins.add(append(plugins, plugin2)));
- return () => {
- plugins.forEach((plugin2) => this.plugins.delete(plugin2));
- };
- }
- exec(type, data, context) {
- let output = data;
- const contextual = Object.freeze(Object.create(context));
- for (const plugin of this.plugins) {
- if (plugin.type === type) {
- output = plugin.action(output, contextual);
- }
- }
- return output;
- }
- };
- init_utils();
- function progressMonitorPlugin(progress) {
- const progressCommand = "--progress";
- const progressMethods = ["checkout", "clone", "fetch", "pull", "push"];
- const onProgress = {
- type: "spawn.after",
- action(_data, context) {
- var _a2;
- if (!context.commands.includes(progressCommand)) {
- return;
- }
- (_a2 = context.spawned.stderr) == null ? void 0 : _a2.on("data", (chunk) => {
- const message = /^([\s\S]+?):\s*(\d+)% \((\d+)\/(\d+)\)/.exec(chunk.toString("utf8"));
- if (!message) {
- return;
- }
- progress({
- method: context.method,
- stage: progressEventStage(message[1]),
- progress: asNumber(message[2]),
- processed: asNumber(message[3]),
- total: asNumber(message[4])
- });
- });
- }
- };
- const onArgs = {
- type: "spawn.args",
- action(args, context) {
- if (!progressMethods.includes(context.method)) {
- return args;
- }
- return including(args, progressCommand);
- }
- };
- return [onArgs, onProgress];
- }
- function progressEventStage(input) {
- return String(input.toLowerCase().split(" ", 1)) || "unknown";
- }
- init_utils();
- function spawnOptionsPlugin(spawnOptions) {
- const options = pick(spawnOptions, ["uid", "gid"]);
- return {
- type: "spawn.options",
- action(data) {
- return __spreadValues(__spreadValues({}, options), data);
- }
- };
- }
- function timeoutPlugin({
- block
- }) {
- if (block > 0) {
- return {
- type: "spawn.after",
- action(_data, context) {
- var _a2, _b;
- let timeout;
- function wait3() {
- timeout && clearTimeout(timeout);
- timeout = setTimeout(kill, block);
- }
- function stop() {
- var _a3, _b2;
- (_a3 = context.spawned.stdout) == null ? void 0 : _a3.off("data", wait3);
- (_b2 = context.spawned.stderr) == null ? void 0 : _b2.off("data", wait3);
- context.spawned.off("exit", stop);
- context.spawned.off("close", stop);
- timeout && clearTimeout(timeout);
- }
- function kill() {
- stop();
- context.kill(new GitPluginError(void 0, "timeout", `block timeout reached`));
- }
- (_a2 = context.spawned.stdout) == null ? void 0 : _a2.on("data", wait3);
- (_b = context.spawned.stderr) == null ? void 0 : _b.on("data", wait3);
- context.spawned.on("exit", stop);
- context.spawned.on("close", stop);
- wait3();
- }
- };
- }
- }
- init_utils();
- var Git = require_git();
- function gitInstanceFactory(baseDir, options) {
- const plugins = new PluginStore();
- const config = createInstanceConfig(baseDir && (typeof baseDir === "string" ? { baseDir } : baseDir) || {}, options);
- if (!folderExists(config.baseDir)) {
- throw new GitConstructError(config, `Cannot use simple-git on a directory that does not exist`);
- }
- if (Array.isArray(config.config)) {
- plugins.add(commandConfigPrefixingPlugin(config.config));
- }
- plugins.add(blockUnsafeOperationsPlugin(config.unsafe));
- plugins.add(completionDetectionPlugin(config.completion));
- config.abort && plugins.add(abortPlugin(config.abort));
- config.progress && plugins.add(progressMonitorPlugin(config.progress));
- config.timeout && plugins.add(timeoutPlugin(config.timeout));
- config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));
- plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));
- config.errors && plugins.add(errorDetectionPlugin(config.errors));
- return new Git(config, plugins);
- }
- init_git_response_error();
- var esm_default = gitInstanceFactory;
- // src/simpleGit.ts
- var SimpleGit = class extends GitManager {
- constructor(plugin) {
- super(plugin);
- }
- async setGitInstance(ignoreError = false) {
- if (this.isGitInstalled()) {
- const adapter = this.app.vault.adapter;
- const path2 = adapter.getBasePath();
- let basePath = path2;
- if (this.plugin.settings.basePath) {
- const exists2 = await adapter.exists((0, import_obsidian6.normalizePath)(this.plugin.settings.basePath));
- if (exists2) {
- basePath = path2 + import_path.sep + this.plugin.settings.basePath;
- } else if (!ignoreError) {
- new import_obsidian6.Notice("ObsidianGit: Base path does not exist");
- }
- }
- this.git = esm_default({
- baseDir: basePath,
- binary: this.plugin.localStorage.getGitPath() || void 0,
- config: ["core.quotepath=off"]
- });
- const env = this.plugin.localStorage.getPATHPaths();
- if (env.length > 0) {
- const path3 = process.env["PATH"] + ":" + env.join(":");
- process.env["PATH"] = path3;
- }
- const debug2 = require_browser();
- debug2.enable("simple-git");
- await this.git.cwd(await this.git.revparse("--show-toplevel"));
- }
- }
- async status() {
- this.plugin.setState(PluginState.status);
- const status2 = await this.git.status((err) => this.onError(err));
- this.plugin.setState(PluginState.idle);
- return {
- changed: status2.files.filter((e) => e.working_dir !== " ").map((e) => {
- const res = this.formatPath(e);
- return {
- path: res.path,
- from: res.from,
- working_dir: e.working_dir === "?" ? "U" : e.working_dir,
- vault_path: this.getVaultPath(res.path)
- };
- }),
- staged: status2.files.filter((e) => e.index !== " " && e.index != "?").map((e) => {
- const res = this.formatPath(e, e.index === "R");
- return {
- path: res.path,
- from: res.from,
- index: e.index,
- vault_path: this.getVaultPath(res.path)
- };
- }),
- conflicted: status2.conflicted.map((path2) => this.formatPath({ path: path2 }).path)
- };
- }
- formatPath(path2, renamed = false) {
- function format(path3) {
- if (path3 == void 0)
- return void 0;
- if (path3.startsWith('"') && path3.endsWith('"')) {
- return path3.substring(1, path3.length - 1);
- } else {
- return path3;
- }
- }
- if (renamed) {
- return {
- from: format(path2.from),
- path: format(path2.path)
- };
- } else {
- return {
- path: format(path2.path)
- };
- }
- }
- async commitAll({ message }) {
- if (this.plugin.settings.updateSubmodules) {
- this.plugin.setState(PluginState.commit);
- await new Promise(async (resolve, reject) => {
- this.git.outputHandler(async (cmd, stdout, stderr, args) => {
- if (!(args.contains("submodule") && args.contains("foreach")))
- return;
- let body = "";
- const root = this.app.vault.adapter.getBasePath() + (this.plugin.settings.basePath ? "/" + this.plugin.settings.basePath : "");
- stdout.on("data", (chunk) => {
- body += chunk.toString("utf8");
- });
- stdout.on("end", async () => {
- const submods = body.split("\n");
- const strippedSubmods = submods.map((i) => {
- const submod = i.match(/'([^']*)'/);
- if (submod != void 0) {
- return root + "/" + submod[1] + import_path.sep;
- }
- });
- strippedSubmods.reverse();
- for (const item of strippedSubmods) {
- if (item != void 0) {
- await this.git.cwd({ path: item, root: false }).add("-A", (err) => this.onError(err));
- await this.git.cwd({ path: item, root: false }).commit(await this.formatCommitMessage(message), (err) => this.onError(err));
- }
- }
- resolve();
- });
- });
- await this.git.subModule(["foreach", "--recursive", ""]);
- this.git.outputHandler(() => {
- });
- });
- }
- this.plugin.setState(PluginState.add);
- await this.git.add("-A", (err) => this.onError(err));
- this.plugin.setState(PluginState.commit);
- return (await this.git.commit(await this.formatCommitMessage(message), (err) => this.onError(err))).summary.changes;
- }
- async commit(message) {
- this.plugin.setState(PluginState.commit);
- const res = (await this.git.commit(await this.formatCommitMessage(message), (err) => this.onError(err))).summary.changes;
- this.plugin.setState(PluginState.idle);
- return res;
- }
- async stage(path2, relativeToVault) {
- this.plugin.setState(PluginState.add);
- path2 = this.getPath(path2, relativeToVault);
- await this.git.add(["--", path2], (err) => this.onError(err));
- this.plugin.setState(PluginState.idle);
- }
- async stageAll({ dir }) {
- this.plugin.setState(PluginState.add);
- await this.git.add(dir != null ? dir : "-A", (err) => this.onError(err));
- this.plugin.setState(PluginState.idle);
- }
- async unstageAll({ dir }) {
- this.plugin.setState(PluginState.add);
- await this.git.reset(dir != void 0 ? ["--", dir] : [], (err) => this.onError(err));
- this.plugin.setState(PluginState.idle);
- }
- async unstage(path2, relativeToVault) {
- this.plugin.setState(PluginState.add);
- path2 = this.getPath(path2, relativeToVault);
- await this.git.reset(["--", path2], (err) => this.onError(err));
- this.plugin.setState(PluginState.idle);
- }
- async discard(filepath) {
- this.plugin.setState(PluginState.add);
- await this.git.checkout(["--", filepath], (err) => this.onError(err));
- this.plugin.setState(PluginState.idle);
- }
- async discardAll({ dir }) {
- return this.discard(dir != null ? dir : ".");
- }
- async pull() {
- this.plugin.setState(PluginState.pull);
- if (this.plugin.settings.updateSubmodules)
- await this.git.subModule(["update", "--remote", "--merge", "--recursive"], (err) => this.onError(err));
- const branchInfo = await this.branchInfo();
- const localCommit = await this.git.revparse([branchInfo.current], (err) => this.onError(err));
- await this.git.fetch((err) => this.onError(err));
- const upstreamCommit = await this.git.revparse([branchInfo.tracking], (err) => this.onError(err));
- if (localCommit !== upstreamCommit) {
- if (this.plugin.settings.syncMethod === "merge" || this.plugin.settings.syncMethod === "rebase") {
- try {
- switch (this.plugin.settings.syncMethod) {
- case "merge":
- await this.git.merge([branchInfo.tracking]);
- break;
- case "rebase":
- await this.git.rebase([branchInfo.tracking]);
- }
- } catch (err) {
- this.plugin.displayError(`Pull failed (${this.plugin.settings.syncMethod}): ${err.message}`);
- return;
- }
- } else if (this.plugin.settings.syncMethod === "reset") {
- try {
- await this.git.raw(["update-ref", `refs/heads/${branchInfo.current}`, upstreamCommit], (err) => this.onError(err));
- await this.unstageAll({});
- } catch (err) {
- this.plugin.displayError(`Sync failed (${this.plugin.settings.syncMethod}): ${err.message}`);
- }
- }
- const afterMergeCommit = await this.git.revparse([branchInfo.current], (err) => this.onError(err));
- const filesChanged = await this.git.diff([`${localCommit}..${afterMergeCommit}`, "--name-only"]);
- return filesChanged.split(/\r\n|\r|\n/).filter((value) => value.length > 0).map((e) => {
- return {
- path: e,
- working_dir: "P",
- vault_path: this.getVaultPath(e)
- };
- });
- } else {
- return [];
- }
- }
- async push() {
- this.plugin.setState(PluginState.status);
- const status2 = await this.git.status();
- const trackingBranch = status2.tracking;
- const currentBranch2 = status2.current;
- const remoteChangedFiles = (await this.git.diffSummary([currentBranch2, trackingBranch, "--"], (err) => this.onError(err))).changed;
- this.plugin.setState(PluginState.push);
- if (this.plugin.settings.updateSubmodules) {
- await this.git.env({ ...process.env, "OBSIDIAN_GIT": 1 }).subModule(["foreach", "--recursive", `tracking=$(git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"); echo $tracking; if [ ! -z "$(git diff --shortstat $tracking)" ]; then git push; fi`], (err) => this.onError(err));
- }
- await this.git.env({ ...process.env, "OBSIDIAN_GIT": 1 }).push((err) => this.onError(err));
- return remoteChangedFiles;
- }
- async canPush() {
- if (this.plugin.settings.updateSubmodules === true) {
- return true;
- }
- const status2 = await this.git.status((err) => this.onError(err));
- const trackingBranch = status2.tracking;
- const currentBranch2 = status2.current;
- const remoteChangedFiles = (await this.git.diffSummary([currentBranch2, trackingBranch, "--"])).changed;
- return remoteChangedFiles !== 0;
- }
- async checkRequirements() {
- if (!this.isGitInstalled()) {
- return "missing-git";
- }
- if (!await this.git.checkIsRepo()) {
- return "missing-repo";
- }
- return "valid";
- }
- async branchInfo() {
- const status2 = await this.git.status((err) => this.onError(err));
- const branches = await this.git.branch(["--no-color"], (err) => this.onError(err));
- return {
- current: status2.current || void 0,
- tracking: status2.tracking || void 0,
- branches: branches.all
- };
- }
- async getRemoteUrl(remote) {
- return await this.git.remote(["get-url", remote], (err, url) => this.onError(err)) || void 0;
- }
- async log(file, relativeToVault = true) {
- const path2 = this.getPath(file, relativeToVault);
- const res = await this.git.log({ file: path2 }, (err) => this.onError(err));
- return res.all;
- }
- async show(commitHash, file, relativeToVault = true) {
- const path2 = this.getPath(file, relativeToVault);
- return this.git.show([commitHash + ":" + path2], (err) => this.onError(err));
- }
- async checkout(branch2) {
- await this.git.checkout(branch2, (err) => this.onError(err));
- }
- async createBranch(branch2) {
- await this.git.checkout(["-b", branch2], (err) => this.onError(err));
- }
- async deleteBranch(branch2, force) {
- await this.git.branch([force ? "-D" : "-d", branch2], (err) => this.onError(err));
- }
- async branchIsMerged(branch2) {
- const notMergedBranches = await this.git.branch(["--no-merged"], (err) => this.onError(err));
- return !notMergedBranches.all.contains(branch2);
- }
- async init() {
- await this.git.init(false, (err) => this.onError(err));
- }
- async clone(url, dir) {
- await this.git.clone(url, path.join(this.app.vault.adapter.getBasePath(), dir), [], (err) => this.onError(err));
- }
- async setConfig(path2, value) {
- if (value == void 0) {
- await this.git.raw(["config", "--local", "--unset", path2]);
- } else {
- await this.git.addConfig(path2, value, (err) => this.onError(err));
- }
- }
- async getConfig(path2) {
- const config = await this.git.listConfig("local", (err) => this.onError(err));
- return config.all[path2];
- }
- async fetch(remote) {
- await this.git.fetch(remote != void 0 ? [remote] : [], (err) => this.onError(err));
- }
- async setRemote(name, url) {
- if ((await this.getRemotes()).includes(name))
- await this.git.remote(["set-url", name, url], (err) => this.onError(err));
- else {
- await this.git.remote(["add", name, url], (err) => this.onError(err));
- }
- }
- async getRemoteBranches(remote) {
- const res = await this.git.branch(["-r", "--list", `${remote}*`], (err) => this.onError(err));
- console.log(remote);
- console.log(res);
- const list = [];
- for (const item in res.branches) {
- list.push(res.branches[item].name);
- }
- return list;
- }
- async getRemotes() {
- const res = await this.git.remote([], (err) => this.onError(err));
- if (res) {
- return res.trim().split("\n");
- } else {
- return [];
- }
- }
- async removeRemote(remoteName) {
- await this.git.removeRemote(remoteName);
- }
- async updateUpstreamBranch(remoteBranch) {
- try {
- await this.git.branch(["--set-upstream-to", remoteBranch]);
- } catch (e) {
- console.error(e);
- try {
- await this.git.branch(["--set-upstream", remoteBranch]);
- } catch (e2) {
- console.error(e2);
- await this.git.push(["--set-upstream", ...remoteBranch.split("/")], (err) => this.onError(err));
- }
- }
- }
- updateGitPath(gitPath) {
- this.setGitInstance();
- }
- updateBasePath(basePath) {
- this.setGitInstance(true);
- }
- async getDiffString(filePath, stagedChanges = false) {
- if (stagedChanges)
- return await this.git.diff(["--cached", "--", filePath]);
- else
- return await this.git.diff(["--", filePath]);
- }
- async diff(file, commit1, commit2) {
- return await this.git.diff([`${commit1}..${commit2}`, "--", file]);
- }
- isGitInstalled() {
- const command = (0, import_child_process2.spawnSync)(this.plugin.localStorage.getGitPath() || "git", ["--version"], {
- stdio: "ignore"
- });
- if (command.error) {
- console.error(command.error);
- return false;
- }
- return true;
- }
- onError(error) {
- if (error) {
- const networkFailure = error.message.contains("Could not resolve host") || error.message.match(/ssh: connect to host .*? port .*?: Operation timed out/) || error.message.match(/ssh: connect to host .*? port .*?: Network is unreachable/);
- if (!networkFailure) {
- this.plugin.displayError(error.message);
- this.plugin.setState(PluginState.idle);
- } else if (!this.plugin.offlineMode) {
- this.plugin.displayError("Git: Going into offline mode. Future network errors will no longer be displayed.", 2e3);
- }
- if (networkFailure) {
- this.plugin.offlineMode = true;
- this.plugin.setState(PluginState.idle);
- }
- }
- }
- };
- // src/settings.ts
- var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab {
- display() {
- const { containerEl } = this;
- const plugin = this.plugin;
- const commitOrBackup = plugin.settings.differentIntervalCommitAndPush ? "commit" : "backup";
- const gitReady = plugin.gitReady;
- containerEl.empty();
- containerEl.createEl("h2", { text: "Git Backup settings" });
- if (!gitReady) {
- containerEl.createEl("p", { text: "Git is not ready. When all settings are correct you can configure auto backup, etc." });
- }
- if (gitReady) {
- containerEl.createEl("br");
- containerEl.createEl("h3", { text: "Automatic" });
- new import_obsidian7.Setting(containerEl).setName("Split automatic commit and push").setDesc("Enable to use separate timer for commit and push").addToggle((toggle) => toggle.setValue(plugin.settings.differentIntervalCommitAndPush).onChange((value) => {
- plugin.settings.differentIntervalCommitAndPush = value;
- plugin.saveSettings();
- plugin.clearAutoBackup();
- plugin.clearAutoPush();
- if (plugin.settings.autoSaveInterval > 0) {
- plugin.startAutoBackup(plugin.settings.autoSaveInterval);
- }
- if (value && plugin.settings.autoPushInterval > 0) {
- plugin.startAutoPush(plugin.settings.autoPushInterval);
- }
- this.display();
- }));
- new import_obsidian7.Setting(containerEl).setName(`Vault ${commitOrBackup} interval (minutes)`).setDesc(`${plugin.settings.differentIntervalCommitAndPush ? "Commit" : "Commit and push"} changes every X minutes. Set to 0 (default) to disable. (See below setting for further configuration!)`).addText((text2) => text2.setValue(String(plugin.settings.autoSaveInterval)).onChange((value) => {
- if (!isNaN(Number(value))) {
- plugin.settings.autoSaveInterval = Number(value);
- plugin.saveSettings();
- if (plugin.settings.autoSaveInterval > 0) {
- plugin.clearAutoBackup();
- plugin.startAutoBackup(plugin.settings.autoSaveInterval);
- new import_obsidian7.Notice(`Automatic ${commitOrBackup} enabled! Every ${plugin.settings.autoSaveInterval} minutes.`);
- } else if (plugin.settings.autoSaveInterval <= 0) {
- plugin.clearAutoBackup() && new import_obsidian7.Notice(`Automatic ${commitOrBackup} disabled!`);
- }
- } else {
- new import_obsidian7.Notice("Please specify a valid number.");
- }
- }));
- new import_obsidian7.Setting(containerEl).setName(`Auto Backup after Filechange`).setDesc(`If turned on, do auto ${commitOrBackup} every ${plugin.settings.autoSaveInterval} minutes after last change. This also prevents auto ${commitOrBackup} while editing a file. If turned off, it's independent from last the change.`).addToggle((toggle) => toggle.setValue(plugin.settings.autoBackupAfterFileChange).onChange((value) => {
- plugin.settings.autoBackupAfterFileChange = value;
- plugin.saveSettings();
- plugin.clearAutoBackup();
- if (plugin.settings.autoSaveInterval > 0) {
- plugin.startAutoBackup(plugin.settings.autoSaveInterval);
- }
- }));
- if (plugin.settings.differentIntervalCommitAndPush) {
- new import_obsidian7.Setting(containerEl).setName(`Vault push interval (minutes)`).setDesc("Push changes every X minutes. Set to 0 (default) to disable.").addText((text2) => text2.setValue(String(plugin.settings.autoPushInterval)).onChange((value) => {
- if (!isNaN(Number(value))) {
- plugin.settings.autoPushInterval = Number(value);
- plugin.saveSettings();
- if (plugin.settings.autoPushInterval > 0) {
- plugin.clearAutoPush();
- plugin.startAutoPush(plugin.settings.autoPushInterval);
- new import_obsidian7.Notice(`Automatic push enabled! Every ${plugin.settings.autoPushInterval} minutes.`);
- } else if (plugin.settings.autoPushInterval <= 0) {
- plugin.clearAutoPush() && new import_obsidian7.Notice("Automatic push disabled!");
- }
- } else {
- new import_obsidian7.Notice("Please specify a valid number.");
- }
- }));
- }
- new import_obsidian7.Setting(containerEl).setName("Auto pull interval (minutes)").setDesc("Pull changes every X minutes. Set to 0 (default) to disable.").addText((text2) => text2.setValue(String(plugin.settings.autoPullInterval)).onChange((value) => {
- if (!isNaN(Number(value))) {
- plugin.settings.autoPullInterval = Number(value);
- plugin.saveSettings();
- if (plugin.settings.autoPullInterval > 0) {
- plugin.clearAutoPull();
- plugin.startAutoPull(plugin.settings.autoPullInterval);
- new import_obsidian7.Notice(`Automatic pull enabled! Every ${plugin.settings.autoPullInterval} minutes.`);
- } else if (plugin.settings.autoPullInterval <= 0) {
- plugin.clearAutoPull() && new import_obsidian7.Notice("Automatic pull disabled!");
- }
- } else {
- new import_obsidian7.Notice("Please specify a valid number.");
- }
- }));
- new import_obsidian7.Setting(containerEl).setName("Commit message on manual backup/commit").setDesc("Available placeholders: {{date}} (see below), {{hostname}} (see below) and {{numFiles}} (number of changed files in the commit)").addText((text2) => text2.setPlaceholder("vault backup: {{date}}").setValue(plugin.settings.commitMessage ? plugin.settings.commitMessage : "").onChange((value) => {
- plugin.settings.commitMessage = value;
- plugin.saveSettings();
- }));
- new import_obsidian7.Setting(containerEl).setName("Specify custom commit message on auto backup").setDesc("You will get a pop up to specify your message").addToggle((toggle) => toggle.setValue(plugin.settings.customMessageOnAutoBackup).onChange((value) => {
- plugin.settings.customMessageOnAutoBackup = value;
- plugin.saveSettings();
- }));
- new import_obsidian7.Setting(containerEl).setName("Commit message on auto backup/commit").setDesc("Available placeholders: {{date}} (see below), {{hostname}} (see below) and {{numFiles}} (number of changed files in the commit)").addText((text2) => text2.setPlaceholder("vault backup: {{date}}").setValue(plugin.settings.autoCommitMessage).onChange((value) => {
- plugin.settings.autoCommitMessage = value;
- plugin.saveSettings();
- }));
- containerEl.createEl("br");
- containerEl.createEl("h3", { text: "Commit message" });
- new import_obsidian7.Setting(containerEl).setName("{{date}} placeholder format").setDesc('Specify custom date format. E.g. "YYYY-MM-DD HH:mm:ss"').addText((text2) => text2.setPlaceholder(plugin.settings.commitDateFormat).setValue(plugin.settings.commitDateFormat).onChange(async (value) => {
- plugin.settings.commitDateFormat = value;
- await plugin.saveSettings();
- }));
- new import_obsidian7.Setting(containerEl).setName("{{hostname}} placeholder replacement").setDesc("Specify custom hostname for every device.").addText((text2) => {
- var _a2;
- return text2.setValue((_a2 = plugin.localStorage.getHostname()) != null ? _a2 : "").onChange(async (value) => {
- plugin.localStorage.setHostname(value);
- });
- });
- new import_obsidian7.Setting(containerEl).setName("Preview commit message").addButton((button) => button.setButtonText("Preview").onClick(async () => {
- const commitMessagePreview = await plugin.gitManager.formatCommitMessage(plugin.settings.commitMessage);
- new import_obsidian7.Notice(`${commitMessagePreview}`);
- }));
- new import_obsidian7.Setting(containerEl).setName("List filenames affected by commit in the commit body").addToggle((toggle) => toggle.setValue(plugin.settings.listChangedFilesInMessageBody).onChange((value) => {
- plugin.settings.listChangedFilesInMessageBody = value;
- plugin.saveSettings();
- }));
- containerEl.createEl("br");
- containerEl.createEl("h3", { text: "Backup" });
- if (plugin.gitManager instanceof SimpleGit)
- new import_obsidian7.Setting(containerEl).setName("Sync Method").setDesc("Selects the method used for handling new changes found in your remote git repository.").addDropdown((dropdown) => {
- const options = {
- "merge": "Merge",
- "rebase": "Rebase",
- "reset": "Other sync service (Only updates the HEAD without touching the working directory)"
- };
- dropdown.addOptions(options);
- dropdown.setValue(plugin.settings.syncMethod);
- dropdown.onChange(async (option) => {
- plugin.settings.syncMethod = option;
- plugin.saveSettings();
- });
- });
- new import_obsidian7.Setting(containerEl).setName("Pull updates on startup").setDesc("Automatically pull updates when Obsidian starts").addToggle((toggle) => toggle.setValue(plugin.settings.autoPullOnBoot).onChange((value) => {
- plugin.settings.autoPullOnBoot = value;
- plugin.saveSettings();
- }));
- new import_obsidian7.Setting(containerEl).setName("Push on backup").setDesc("Disable to only commit changes").addToggle((toggle) => toggle.setValue(!plugin.settings.disablePush).onChange((value) => {
- plugin.settings.disablePush = !value;
- plugin.saveSettings();
- }));
- new import_obsidian7.Setting(containerEl).setName("Pull changes before push").setDesc("Commit -> pull -> push (Only if pushing is enabled)").addToggle((toggle) => toggle.setValue(plugin.settings.pullBeforePush).onChange((value) => {
- plugin.settings.pullBeforePush = value;
- plugin.saveSettings();
- }));
- }
- containerEl.createEl("br");
- containerEl.createEl("h3", { text: "Miscellaneous" });
- new import_obsidian7.Setting(containerEl).setName("Automatically refresh Source Control View on file changes").setDesc("On slower machines this may cause lags. If so, just disable this option").addToggle((toggle) => toggle.setValue(plugin.settings.refreshSourceControl).onChange((value) => {
- plugin.settings.refreshSourceControl = value;
- plugin.saveSettings();
- }));
- new import_obsidian7.Setting(containerEl).setName("Source Control View refresh interval").setDesc("Milliseconds to wait after file change before refreshing the Source Control View").addText((toggle) => toggle.setValue(plugin.settings.refreshSourceControlTimer.toString()).setPlaceholder("7000").onChange((value) => {
- plugin.settings.refreshSourceControlTimer = Math.max(parseInt(value), 500);
- plugin.saveSettings();
- plugin.setRefreshDebouncer();
- }));
- new import_obsidian7.Setting(containerEl).setName("Disable notifications").setDesc("Disable notifications for git operations to minimize distraction (refer to status bar for updates). Errors are still shown as notifications even if you enable this setting").addToggle((toggle) => toggle.setValue(plugin.settings.disablePopups).onChange((value) => {
- plugin.settings.disablePopups = value;
- plugin.saveSettings();
- }));
- new import_obsidian7.Setting(containerEl).setName("Show status bar").setDesc("Obsidian must be restarted for the changes to take affect").addToggle((toggle) => toggle.setValue(plugin.settings.showStatusBar).onChange((value) => {
- plugin.settings.showStatusBar = value;
- plugin.saveSettings();
- }));
- new import_obsidian7.Setting(containerEl).setName("Show branch status bar").setDesc("Obsidian must be restarted for the changes to take affect").addToggle((toggle) => toggle.setValue(plugin.settings.showBranchStatusBar).onChange((value) => {
- plugin.settings.showBranchStatusBar = value;
- plugin.saveSettings();
- }));
- new import_obsidian7.Setting(containerEl).setName("Show changes files count in status bar").addToggle((toggle) => toggle.setValue(plugin.settings.changedFilesInStatusBar).onChange((value) => {
- plugin.settings.changedFilesInStatusBar = value;
- plugin.saveSettings();
- }));
- containerEl.createEl("br");
- if (plugin.gitManager instanceof IsomorphicGit) {
- containerEl.createEl("h3", { text: "Authentication/Commit Author" });
- } else {
- containerEl.createEl("h3", { text: "Commit Author" });
- }
- if (plugin.gitManager instanceof IsomorphicGit)
- new import_obsidian7.Setting(containerEl).setName("Username on your git server. E.g. your username on GitHub").addText((cb) => {
- var _a2;
- cb.setValue((_a2 = plugin.localStorage.getUsername()) != null ? _a2 : "");
- cb.onChange((value) => {
- plugin.localStorage.setUsername(value);
- });
- });
- if (plugin.gitManager instanceof IsomorphicGit)
- new import_obsidian7.Setting(containerEl).setName("Password/Personal access token").setDesc("Type in your password. You won't be able to see it again.").addText((cb) => {
- cb.inputEl.autocapitalize = "off";
- cb.inputEl.autocomplete = "off";
- cb.inputEl.spellcheck = false;
- cb.onChange((value) => {
- plugin.localStorage.setPassword(value);
- });
- });
- if (gitReady)
- new import_obsidian7.Setting(containerEl).setName("Author name for commit").addText(async (cb) => {
- cb.setValue(await plugin.gitManager.getConfig("user.name"));
- cb.onChange((value) => {
- plugin.gitManager.setConfig("user.name", value == "" ? void 0 : value);
- });
- });
- if (gitReady)
- new import_obsidian7.Setting(containerEl).setName("Author email for commit").addText(async (cb) => {
- cb.setValue(await plugin.gitManager.getConfig("user.email"));
- cb.onChange((value) => {
- plugin.gitManager.setConfig("user.email", value == "" ? void 0 : value);
- });
- });
- containerEl.createEl("br");
- containerEl.createEl("h3", { text: "Advanced" });
- if (plugin.gitManager instanceof SimpleGit)
- new import_obsidian7.Setting(containerEl).setName("Update submodules").setDesc('"Create backup" and "pull" takes care of submodules. Missing features: Conflicted files, count of pulled/pushed/committed files. Tracking branch needs to be set for each submodule').addToggle((toggle) => toggle.setValue(plugin.settings.updateSubmodules).onChange((value) => {
- plugin.settings.updateSubmodules = value;
- plugin.saveSettings();
- }));
- if (plugin.gitManager instanceof SimpleGit)
- new import_obsidian7.Setting(containerEl).setName("Custom Git binary path").addText((cb) => {
- var _a2;
- cb.setValue((_a2 = plugin.localStorage.getGitPath()) != null ? _a2 : "");
- cb.setPlaceholder("git");
- cb.onChange((value) => {
- plugin.localStorage.setGitPath(value);
- plugin.gitManager.updateGitPath(value || "git");
- });
- });
- if (plugin.gitManager instanceof SimpleGit)
- new import_obsidian7.Setting(containerEl).setName("Additional PATH environment variable paths").setDesc("Use each line for one path").addTextArea((cb) => {
- cb.setValue(plugin.localStorage.getPATHPaths().join("\n"));
- cb.onChange((value) => {
- plugin.localStorage.setPATHPaths(value.split("\n"));
- });
- });
- if (plugin.gitManager instanceof SimpleGit)
- new import_obsidian7.Setting(containerEl).setName("Reload with new PATH environment variable").addButton((cb) => {
- cb.setButtonText("Reload");
- cb.setCta();
- cb.onClick(() => {
- plugin.gitManager.setGitInstance();
- });
- });
- new import_obsidian7.Setting(containerEl).setName("Custom base path (Git repository path)").setDesc(`
- Sets the relative path to the vault from which the Git binary should be executed.
- Mostly used to set the path to the Git repository, which is only required if the Git repository is below the vault root directory. Use "\\" instead of "/" on Windows.
- `).addText((cb) => {
- cb.setValue(plugin.settings.basePath);
- cb.setPlaceholder("directory/directory-with-git-repo");
- cb.onChange((value) => {
- plugin.settings.basePath = value;
- plugin.saveSettings();
- plugin.gitManager.updateBasePath(value || "");
- });
- });
- new import_obsidian7.Setting(containerEl).setName("Disable on this device").addToggle((toggle) => toggle.setValue(plugin.localStorage.getPluginDisabled()).onChange((value) => {
- plugin.localStorage.setPluginDisabled(value);
- if (value) {
- plugin.unloadPlugin();
- } else {
- plugin.loadPlugin();
- }
- new import_obsidian7.Notice("Obsidian must be restarted for the changes to take affect");
- }));
- new import_obsidian7.Setting(containerEl).setName("Donate").setDesc("If you like this Plugin, consider donating to support continued development.").addButton((bt) => {
- bt.buttonEl.outerHTML = "<a href='https://ko-fi.com/F1F195IQ5' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://cdn.ko-fi.com/cdn/kofi3.png?v=3' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>";
- });
- const info = containerEl.createDiv();
- info.setAttr("align", "center");
- info.setText("Debugging and logging:\nYou can always see the logs of this and every other plugin by opening the console with");
- const keys = containerEl.createDiv();
- keys.setAttr("align", "center");
- keys.addClass("obsidian-git-shortcuts");
- if (import_obsidian7.Platform.isMacOS === true) {
- keys.createEl("kbd", { text: "CMD (\u2318) + OPTION (\u2325) + I" });
- } else {
- keys.createEl("kbd", { text: "CTRL + SHIFT + I" });
- }
- }
- };
- // src/statusBar.ts
- init_polyfill_buffer();
- var import_obsidian8 = __toModule(require("obsidian"));
- var StatusBar = class {
- constructor(statusBarEl, plugin) {
- this.statusBarEl = statusBarEl;
- this.plugin = plugin;
- this.messages = [];
- this.base = "obsidian-git-statusbar-";
- this.statusBarEl.setAttribute("aria-label-position", "top");
- }
- displayMessage(message, timeout) {
- this.messages.push({
- message: `Git: ${message.slice(0, 100)}`,
- timeout
- });
- this.display();
- }
- display() {
- if (this.messages.length > 0 && !this.currentMessage) {
- this.currentMessage = this.messages.shift();
- this.statusBarEl.addClass(this.base + "message");
- this.statusBarEl.ariaLabel = "";
- this.statusBarEl.setText(this.currentMessage.message);
- this.lastMessageTimestamp = Date.now();
- } else if (this.currentMessage) {
- const messageAge = Date.now() - this.lastMessageTimestamp;
- if (messageAge >= this.currentMessage.timeout) {
- this.currentMessage = null;
- this.lastMessageTimestamp = null;
- }
- } else {
- this.displayState();
- }
- }
- displayState() {
- if (this.statusBarEl.getText().length > 3 || !this.statusBarEl.hasChildNodes()) {
- this.statusBarEl.empty();
- this.iconEl = this.statusBarEl.createDiv();
- this.textEl = this.statusBarEl.createDiv();
- this.textEl.style.float = "right";
- this.textEl.style.marginLeft = "5px";
- this.iconEl.style.float = "left";
- }
- switch (this.plugin.state) {
- case PluginState.idle:
- this.displayFromNow(this.plugin.lastUpdate);
- break;
- case PluginState.status:
- this.statusBarEl.ariaLabel = "Checking repository status...";
- (0, import_obsidian8.setIcon)(this.iconEl, "refresh-cw");
- this.statusBarEl.addClass(this.base + "status");
- break;
- case PluginState.add:
- this.statusBarEl.ariaLabel = "Adding files...";
- (0, import_obsidian8.setIcon)(this.iconEl, "refresh-w");
- this.statusBarEl.addClass(this.base + "add");
- break;
- case PluginState.commit:
- this.statusBarEl.ariaLabel = "Committing changes...";
- (0, import_obsidian8.setIcon)(this.iconEl, "git-commit");
- this.statusBarEl.addClass(this.base + "commit");
- break;
- case PluginState.push:
- this.statusBarEl.ariaLabel = "Pushing changes...";
- (0, import_obsidian8.setIcon)(this.iconEl, "upload");
- this.statusBarEl.addClass(this.base + "push");
- break;
- case PluginState.pull:
- this.statusBarEl.ariaLabel = "Pulling changes...";
- (0, import_obsidian8.setIcon)(this.iconEl, "download");
- this.statusBarEl.addClass(this.base + "pull");
- break;
- case PluginState.conflicted:
- this.statusBarEl.ariaLabel = "You have conflict files...";
- (0, import_obsidian8.setIcon)(this.iconEl, "alert-circle");
- this.statusBarEl.addClass(this.base + "conflict");
- break;
- default:
- this.statusBarEl.ariaLabel = "Failed on initialization!";
- (0, import_obsidian8.setIcon)(this.iconEl, "alert-triangle");
- this.statusBarEl.addClass(this.base + "failed-init");
- break;
- }
- }
- displayFromNow(timestamp) {
- if (timestamp) {
- const moment = window.moment;
- const fromNow = moment(timestamp).fromNow();
- this.statusBarEl.ariaLabel = `${this.plugin.offlineMode ? "Offline: " : ""}Last Git update: ${fromNow}`;
- } else {
- this.statusBarEl.ariaLabel = this.plugin.offlineMode ? "Git is offline" : "Git is ready";
- }
- if (this.plugin.offlineMode) {
- (0, import_obsidian8.setIcon)(this.iconEl, "globe");
- } else {
- (0, import_obsidian8.setIcon)(this.iconEl, "check");
- }
- if (this.plugin.settings.changedFilesInStatusBar && this.plugin.cachedStatus) {
- this.textEl.setText(this.plugin.cachedStatus.changed.length.toString());
- }
- this.statusBarEl.addClass(this.base + "idle");
- }
- };
- // src/ui/modals/changedFilesModal.ts
- init_polyfill_buffer();
- var import_obsidian9 = __toModule(require("obsidian"));
- var ChangedFilesModal = class extends import_obsidian9.FuzzySuggestModal {
- constructor(plugin, changedFiles) {
- super(plugin.app);
- this.plugin = plugin;
- this.changedFiles = changedFiles;
- this.setPlaceholder("Not supported files will be opened by default app!");
- }
- getItems() {
- return this.changedFiles;
- }
- getItemText(item) {
- if (item.index == "U" && item.working_dir == "U") {
- return `Untracked | ${item.vault_path}`;
- }
- let working_dir = "";
- let index2 = "";
- if (item.working_dir != " ")
- working_dir = `Working dir: ${item.working_dir} `;
- if (item.index != " ")
- index2 = `Index: ${item.index}`;
- return `${working_dir}${index2} | ${item.vault_path}`;
- }
- onChooseItem(item, _) {
- if (this.plugin.app.metadataCache.getFirstLinkpathDest(item.vault_path, "") == null) {
- this.app.openWithDefaultApp(item.vault_path);
- } else {
- this.plugin.app.workspace.openLinkText(item.vault_path, "/");
- }
- }
- };
- // src/ui/modals/customMessageModal.ts
- init_polyfill_buffer();
- var import_obsidian10 = __toModule(require("obsidian"));
- var CustomMessageModal = class extends import_obsidian10.SuggestModal {
- constructor(plugin, fromAutoBackup) {
- super(plugin.app);
- this.fromAutoBackup = fromAutoBackup;
- this.resolve = null;
- this.plugin = plugin;
- this.setPlaceholder("Type your message and select optional the version with the added date.");
- }
- open() {
- super.open();
- return new Promise((resolve) => {
- this.resolve = resolve;
- });
- }
- onClose() {
- if (this.resolve)
- this.resolve(void 0);
- }
- selectSuggestion(value, evt) {
- if (this.resolve)
- this.resolve(value);
- super.selectSuggestion(value, evt);
- }
- getSuggestions(query) {
- const date = window.moment().format(this.plugin.settings.commitDateFormat);
- if (query == "")
- query = "...";
- return [query, `${date}: ${query}`, `${query}: ${date}`];
- }
- renderSuggestion(value, el) {
- el.innerText = value;
- }
- onChooseSuggestion(item, _) {
- }
- };
- // src/constants.ts
- init_polyfill_buffer();
- var import_obsidian11 = __toModule(require("obsidian"));
- var DEFAULT_SETTINGS = {
- commitMessage: "vault backup: {{date}}",
- autoCommitMessage: void 0,
- commitDateFormat: "YYYY-MM-DD HH:mm:ss",
- autoSaveInterval: 0,
- autoPushInterval: 0,
- autoPullInterval: 0,
- autoPullOnBoot: false,
- disablePush: false,
- pullBeforePush: true,
- disablePopups: false,
- listChangedFilesInMessageBody: false,
- showStatusBar: true,
- updateSubmodules: false,
- syncMethod: "merge",
- customMessageOnAutoBackup: false,
- autoBackupAfterFileChange: false,
- treeStructure: false,
- refreshSourceControl: import_obsidian11.Platform.isDesktopApp,
- basePath: "",
- differentIntervalCommitAndPush: false,
- changedFilesInStatusBar: false,
- showedMobileNotice: false,
- refreshSourceControlTimer: 7e3,
- showBranchStatusBar: true
- };
- var GIT_VIEW_CONFIG = {
- type: "git-view",
- name: "Source Control",
- icon: "git-pull-request"
- };
- var DIFF_VIEW_CONFIG = {
- type: "diff-view",
- name: "Diff View",
- icon: "git-pull-request"
- };
- // src/localStorageSettings.ts
- init_polyfill_buffer();
- var LocalStorageSettings = class {
- constructor(plugin) {
- this.plugin = plugin;
- this.prefix = this.plugin.manifest.id + ":";
- }
- migrate() {
- const keys = ["password", "hostname", "conflict", "lastAutoPull", "lastAutoBackup", "lastAutoPush", "gitPath", "pluginDisabled"];
- for (const key2 of keys) {
- const old = localStorage.getItem(this.prefix + key2);
- if (app.loadLocalStorage(this.prefix + key2) == null && old != null) {
- if (old != null) {
- app.saveLocalStorage(this.prefix + key2, old);
- localStorage.removeItem(this.prefix + key2);
- }
- }
- }
- }
- getPassword() {
- return app.loadLocalStorage(this.prefix + "password");
- }
- setPassword(value) {
- return app.saveLocalStorage(this.prefix + "password", value);
- }
- getUsername() {
- return app.loadLocalStorage(this.prefix + "username");
- }
- setUsername(value) {
- return app.saveLocalStorage(this.prefix + "username", value);
- }
- getHostname() {
- return app.loadLocalStorage(this.prefix + "hostname");
- }
- setHostname(value) {
- return app.saveLocalStorage(this.prefix + "hostname", value);
- }
- getConflict() {
- return app.loadLocalStorage(this.prefix + "conflict");
- }
- setConflict(value) {
- return app.saveLocalStorage(this.prefix + "conflict", value);
- }
- getLastAutoPull() {
- return app.loadLocalStorage(this.prefix + "lastAutoPull");
- }
- setLastAutoPull(value) {
- return app.saveLocalStorage(this.prefix + "lastAutoPull", value);
- }
- getLastAutoBackup() {
- return app.loadLocalStorage(this.prefix + "lastAutoBackup");
- }
- setLastAutoBackup(value) {
- return app.saveLocalStorage(this.prefix + "lastAutoBackup", value);
- }
- getLastAutoPush() {
- return app.loadLocalStorage(this.prefix + "lastAutoPush");
- }
- setLastAutoPush(value) {
- return app.saveLocalStorage(this.prefix + "lastAutoPush", value);
- }
- getGitPath() {
- return app.loadLocalStorage(this.prefix + "gitPath");
- }
- setGitPath(value) {
- return app.saveLocalStorage(this.prefix + "gitPath", value);
- }
- getPATHPaths() {
- var _a2, _b;
- return (_b = (_a2 = app.loadLocalStorage(this.prefix + "PATHPaths")) == null ? void 0 : _a2.split(":")) != null ? _b : [];
- }
- setPATHPaths(value) {
- return app.saveLocalStorage(this.prefix + "PATHPaths", value.join(":"));
- }
- getPluginDisabled() {
- return app.loadLocalStorage(this.prefix + "pluginDisabled") == "true";
- }
- setPluginDisabled(value) {
- return app.saveLocalStorage(this.prefix + "pluginDisabled", `${value}`);
- }
- };
- // src/openInGitHub.ts
- init_polyfill_buffer();
- var import_obsidian12 = __toModule(require("obsidian"));
- async function openLineInGitHub(editor, file, manager) {
- const { isGitHub, branch: branch2, repo, user } = await getData(manager);
- if (isGitHub) {
- const path2 = manager.getPath(file.path, true);
- const from = editor.getCursor("from").line + 1;
- const to = editor.getCursor("to").line + 1;
- if (from === to) {
- window.open(`https://github.com/${user}/${repo}/blob/${branch2}/${path2}?plain=1#L${from}`);
- } else {
- window.open(`https://github.com/${user}/${repo}/blob/${branch2}/${path2}?plain=1#L${from}-L${to}`);
- }
- } else {
- new import_obsidian12.Notice("It seems like you are not using GitHub");
- }
- }
- async function openHistoryInGitHub(file, manager) {
- const { isGitHub, branch: branch2, repo, user } = await getData(manager);
- const path2 = manager.getPath(file.path, true);
- if (isGitHub) {
- window.open(`https://github.com/${user}/${repo}/commits/${branch2}/${path2}`);
- } else {
- new import_obsidian12.Notice("It seems like you are not using GitHub");
- }
- }
- async function getData(manager) {
- const branchInfo = await manager.branchInfo();
- const remoteBranch = branchInfo.tracking;
- const branch2 = branchInfo.current;
- const remote = remoteBranch.substring(0, remoteBranch.indexOf("/"));
- const remoteUrl = await manager.getConfig(`remote.${remote}.url`);
- const [isGitHub, httpsUser, httpsRepo, sshUser, sshRepo] = remoteUrl.match(/(?:^https:\/\/github\.com\/(.*)\/(.*)\.git$)|(?:^git@github\.com:(.*)\/(.*)\.git$)/);
- return {
- isGitHub: !!isGitHub,
- repo: httpsRepo || sshRepo,
- user: httpsUser || sshUser,
- branch: branch2
- };
- }
- // src/ui/diff/diffView.ts
- init_polyfill_buffer();
- // node_modules/diff2html/lib-esm/diff2html.js
- init_polyfill_buffer();
- // node_modules/diff2html/lib-esm/diff-parser.js
- init_polyfill_buffer();
- // node_modules/diff2html/lib-esm/types.js
- init_polyfill_buffer();
- var LineType;
- (function(LineType2) {
- LineType2["INSERT"] = "insert";
- LineType2["DELETE"] = "delete";
- LineType2["CONTEXT"] = "context";
- })(LineType || (LineType = {}));
- var OutputFormatType = {
- LINE_BY_LINE: "line-by-line",
- SIDE_BY_SIDE: "side-by-side"
- };
- var LineMatchingType = {
- LINES: "lines",
- WORDS: "words",
- NONE: "none"
- };
- var DiffStyleType = {
- WORD: "word",
- CHAR: "char"
- };
- // node_modules/diff2html/lib-esm/utils.js
- init_polyfill_buffer();
- var specials = [
- "-",
- "[",
- "]",
- "/",
- "{",
- "}",
- "(",
- ")",
- "*",
- "+",
- "?",
- ".",
- "\\",
- "^",
- "$",
- "|"
- ];
- var regex = RegExp("[" + specials.join("\\") + "]", "g");
- function escapeForRegExp(str) {
- return str.replace(regex, "\\$&");
- }
- function unifyPath(path2) {
- return path2 ? path2.replace(/\\/g, "/") : path2;
- }
- function hashCode(text2) {
- var i, chr, len;
- var hash2 = 0;
- for (i = 0, len = text2.length; i < len; i++) {
- chr = text2.charCodeAt(i);
- hash2 = (hash2 << 5) - hash2 + chr;
- hash2 |= 0;
- }
- return hash2;
- }
- // node_modules/diff2html/lib-esm/diff-parser.js
- var __spreadArray = function(to, from, pack) {
- if (pack || arguments.length === 2)
- for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar)
- ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
- };
- function getExtension(filename, language) {
- var filenameParts = filename.split(".");
- return filenameParts.length > 1 ? filenameParts[filenameParts.length - 1] : language;
- }
- function startsWithAny(str, prefixes) {
- return prefixes.reduce(function(startsWith, prefix) {
- return startsWith || str.startsWith(prefix);
- }, false);
- }
- var baseDiffFilenamePrefixes = ["a/", "b/", "i/", "w/", "c/", "o/"];
- function getFilename(line, linePrefix, extraPrefix) {
- var prefixes = extraPrefix !== void 0 ? __spreadArray(__spreadArray([], baseDiffFilenamePrefixes, true), [extraPrefix], false) : baseDiffFilenamePrefixes;
- var FilenameRegExp = linePrefix ? new RegExp("^".concat(escapeForRegExp(linePrefix), ' "?(.+?)"?$')) : new RegExp('^"?(.+?)"?$');
- var _a2 = FilenameRegExp.exec(line) || [], _b = _a2[1], filename = _b === void 0 ? "" : _b;
- var matchingPrefix = prefixes.find(function(p) {
- return filename.indexOf(p) === 0;
- });
- var fnameWithoutPrefix = matchingPrefix ? filename.slice(matchingPrefix.length) : filename;
- return fnameWithoutPrefix.replace(/\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)? [+-]\d{4}.*$/, "");
- }
- function getSrcFilename(line, srcPrefix) {
- return getFilename(line, "---", srcPrefix);
- }
- function getDstFilename(line, dstPrefix) {
- return getFilename(line, "+++", dstPrefix);
- }
- function parse(diffInput, config) {
- if (config === void 0) {
- config = {};
- }
- var files = [];
- var currentFile = null;
- var currentBlock = null;
- var oldLine = null;
- var oldLine2 = null;
- var newLine = null;
- var possibleOldName = null;
- var possibleNewName = null;
- var oldFileNameHeader = "--- ";
- var newFileNameHeader = "+++ ";
- var hunkHeaderPrefix = "@@";
- var oldMode = /^old mode (\d{6})/;
- var newMode = /^new mode (\d{6})/;
- var deletedFileMode = /^deleted file mode (\d{6})/;
- var newFileMode = /^new file mode (\d{6})/;
- var copyFrom = /^copy from "?(.+)"?/;
- var copyTo = /^copy to "?(.+)"?/;
- var renameFrom = /^rename from "?(.+)"?/;
- var renameTo = /^rename to "?(.+)"?/;
- var similarityIndex = /^similarity index (\d+)%/;
- var dissimilarityIndex = /^dissimilarity index (\d+)%/;
- var index2 = /^index ([\da-z]+)\.\.([\da-z]+)\s*(\d{6})?/;
- var binaryFiles = /^Binary files (.*) and (.*) differ/;
- var binaryDiff = /^GIT binary patch/;
- var combinedIndex = /^index ([\da-z]+),([\da-z]+)\.\.([\da-z]+)/;
- var combinedMode = /^mode (\d{6}),(\d{6})\.\.(\d{6})/;
- var combinedNewFile = /^new file mode (\d{6})/;
- var combinedDeletedFile = /^deleted file mode (\d{6}),(\d{6})/;
- var diffLines2 = diffInput.replace(/\\ No newline at end of file/g, "").replace(/\r\n?/g, "\n").split("\n");
- function saveBlock() {
- if (currentBlock !== null && currentFile !== null) {
- currentFile.blocks.push(currentBlock);
- currentBlock = null;
- }
- }
- function saveFile() {
- if (currentFile !== null) {
- if (!currentFile.oldName && possibleOldName !== null) {
- currentFile.oldName = possibleOldName;
- }
- if (!currentFile.newName && possibleNewName !== null) {
- currentFile.newName = possibleNewName;
- }
- if (currentFile.newName) {
- files.push(currentFile);
- currentFile = null;
- }
- }
- possibleOldName = null;
- possibleNewName = null;
- }
- function startFile() {
- saveBlock();
- saveFile();
- currentFile = {
- blocks: [],
- deletedLines: 0,
- addedLines: 0
- };
- }
- function startBlock(line) {
- saveBlock();
- var values;
- if (currentFile !== null) {
- if (values = /^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@.*/.exec(line)) {
- currentFile.isCombined = false;
- oldLine = parseInt(values[1], 10);
- newLine = parseInt(values[2], 10);
- } else if (values = /^@@@ -(\d+)(?:,\d+)? -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@@.*/.exec(line)) {
- currentFile.isCombined = true;
- oldLine = parseInt(values[1], 10);
- oldLine2 = parseInt(values[2], 10);
- newLine = parseInt(values[3], 10);
- } else {
- if (line.startsWith(hunkHeaderPrefix)) {
- console.error("Failed to parse lines, starting in 0!");
- }
- oldLine = 0;
- newLine = 0;
- currentFile.isCombined = false;
- }
- }
- currentBlock = {
- lines: [],
- oldStartLine: oldLine,
- oldStartLine2: oldLine2,
- newStartLine: newLine,
- header: line
- };
- }
- function createLine(line) {
- if (currentFile === null || currentBlock === null || oldLine === null || newLine === null)
- return;
- var currentLine = {
- content: line
- };
- var addedPrefixes = currentFile.isCombined ? ["+ ", " +", "++"] : ["+"];
- var deletedPrefixes = currentFile.isCombined ? ["- ", " -", "--"] : ["-"];
- if (startsWithAny(line, addedPrefixes)) {
- currentFile.addedLines++;
- currentLine.type = LineType.INSERT;
- currentLine.oldNumber = void 0;
- currentLine.newNumber = newLine++;
- } else if (startsWithAny(line, deletedPrefixes)) {
- currentFile.deletedLines++;
- currentLine.type = LineType.DELETE;
- currentLine.oldNumber = oldLine++;
- currentLine.newNumber = void 0;
- } else {
- currentLine.type = LineType.CONTEXT;
- currentLine.oldNumber = oldLine++;
- currentLine.newNumber = newLine++;
- }
- currentBlock.lines.push(currentLine);
- }
- function existHunkHeader(line, lineIdx) {
- var idx = lineIdx;
- while (idx < diffLines2.length - 3) {
- if (line.startsWith("diff")) {
- return false;
- }
- if (diffLines2[idx].startsWith(oldFileNameHeader) && diffLines2[idx + 1].startsWith(newFileNameHeader) && diffLines2[idx + 2].startsWith(hunkHeaderPrefix)) {
- return true;
- }
- idx++;
- }
- return false;
- }
- diffLines2.forEach(function(line, lineIndex) {
- if (!line || line.startsWith("*")) {
- return;
- }
- var values;
- var prevLine = diffLines2[lineIndex - 1];
- var nxtLine = diffLines2[lineIndex + 1];
- var afterNxtLine = diffLines2[lineIndex + 2];
- if (line.startsWith("diff")) {
- startFile();
- var gitDiffStart = /^diff --git "?([a-ciow]\/.+)"? "?([a-ciow]\/.+)"?/;
- if (values = gitDiffStart.exec(line)) {
- possibleOldName = getFilename(values[1], void 0, config.dstPrefix);
- possibleNewName = getFilename(values[2], void 0, config.srcPrefix);
- }
- if (currentFile === null) {
- throw new Error("Where is my file !!!");
- }
- currentFile.isGitDiff = true;
- return;
- }
- if (!currentFile || !currentFile.isGitDiff && currentFile && line.startsWith(oldFileNameHeader) && nxtLine.startsWith(newFileNameHeader) && afterNxtLine.startsWith(hunkHeaderPrefix)) {
- startFile();
- }
- if (currentFile === null || currentFile === void 0 ? void 0 : currentFile.isTooBig) {
- return;
- }
- if (currentFile && (typeof config.diffMaxChanges === "number" && currentFile.addedLines + currentFile.deletedLines > config.diffMaxChanges || typeof config.diffMaxLineLength === "number" && line.length > config.diffMaxLineLength)) {
- currentFile.isTooBig = true;
- currentFile.addedLines = 0;
- currentFile.deletedLines = 0;
- currentFile.blocks = [];
- currentBlock = null;
- var message = typeof config.diffTooBigMessage === "function" ? config.diffTooBigMessage(files.length) : "Diff too big to be displayed";
- startBlock(message);
- return;
- }
- if (line.startsWith(oldFileNameHeader) && nxtLine.startsWith(newFileNameHeader) || line.startsWith(newFileNameHeader) && prevLine.startsWith(oldFileNameHeader)) {
- if (currentFile && !currentFile.oldName && line.startsWith("--- ") && (values = getSrcFilename(line, config.srcPrefix))) {
- currentFile.oldName = values;
- currentFile.language = getExtension(currentFile.oldName, currentFile.language);
- return;
- }
- if (currentFile && !currentFile.newName && line.startsWith("+++ ") && (values = getDstFilename(line, config.dstPrefix))) {
- currentFile.newName = values;
- currentFile.language = getExtension(currentFile.newName, currentFile.language);
- return;
- }
- }
- if (currentFile && (line.startsWith(hunkHeaderPrefix) || currentFile.isGitDiff && currentFile.oldName && currentFile.newName && !currentBlock)) {
- startBlock(line);
- return;
- }
- if (currentBlock && (line.startsWith("+") || line.startsWith("-") || line.startsWith(" "))) {
- createLine(line);
- return;
- }
- var doesNotExistHunkHeader = !existHunkHeader(line, lineIndex);
- if (currentFile === null) {
- throw new Error("Where is my file !!!");
- }
- if (values = oldMode.exec(line)) {
- currentFile.oldMode = values[1];
- } else if (values = newMode.exec(line)) {
- currentFile.newMode = values[1];
- } else if (values = deletedFileMode.exec(line)) {
- currentFile.deletedFileMode = values[1];
- currentFile.isDeleted = true;
- } else if (values = newFileMode.exec(line)) {
- currentFile.newFileMode = values[1];
- currentFile.isNew = true;
- } else if (values = copyFrom.exec(line)) {
- if (doesNotExistHunkHeader) {
- currentFile.oldName = values[1];
- }
- currentFile.isCopy = true;
- } else if (values = copyTo.exec(line)) {
- if (doesNotExistHunkHeader) {
- currentFile.newName = values[1];
- }
- currentFile.isCopy = true;
- } else if (values = renameFrom.exec(line)) {
- if (doesNotExistHunkHeader) {
- currentFile.oldName = values[1];
- }
- currentFile.isRename = true;
- } else if (values = renameTo.exec(line)) {
- if (doesNotExistHunkHeader) {
- currentFile.newName = values[1];
- }
- currentFile.isRename = true;
- } else if (values = binaryFiles.exec(line)) {
- currentFile.isBinary = true;
- currentFile.oldName = getFilename(values[1], void 0, config.srcPrefix);
- currentFile.newName = getFilename(values[2], void 0, config.dstPrefix);
- startBlock("Binary file");
- } else if (binaryDiff.test(line)) {
- currentFile.isBinary = true;
- startBlock(line);
- } else if (values = similarityIndex.exec(line)) {
- currentFile.unchangedPercentage = parseInt(values[1], 10);
- } else if (values = dissimilarityIndex.exec(line)) {
- currentFile.changedPercentage = parseInt(values[1], 10);
- } else if (values = index2.exec(line)) {
- currentFile.checksumBefore = values[1];
- currentFile.checksumAfter = values[2];
- values[3] && (currentFile.mode = values[3]);
- } else if (values = combinedIndex.exec(line)) {
- currentFile.checksumBefore = [values[2], values[3]];
- currentFile.checksumAfter = values[1];
- } else if (values = combinedMode.exec(line)) {
- currentFile.oldMode = [values[2], values[3]];
- currentFile.newMode = values[1];
- } else if (values = combinedNewFile.exec(line)) {
- currentFile.newFileMode = values[1];
- currentFile.isNew = true;
- } else if (values = combinedDeletedFile.exec(line)) {
- currentFile.deletedFileMode = values[1];
- currentFile.isDeleted = true;
- }
- });
- saveBlock();
- saveFile();
- return files;
- }
- // node_modules/diff2html/lib-esm/file-list-renderer.js
- init_polyfill_buffer();
- // node_modules/diff2html/lib-esm/render-utils.js
- init_polyfill_buffer();
- // node_modules/diff2html/lib-esm/rematch.js
- init_polyfill_buffer();
- function levenshtein(a, b) {
- if (a.length === 0) {
- return b.length;
- }
- if (b.length === 0) {
- return a.length;
- }
- var matrix = [];
- var i;
- for (i = 0; i <= b.length; i++) {
- matrix[i] = [i];
- }
- var j;
- for (j = 0; j <= a.length; j++) {
- matrix[0][j] = j;
- }
- for (i = 1; i <= b.length; i++) {
- for (j = 1; j <= a.length; j++) {
- if (b.charAt(i - 1) === a.charAt(j - 1)) {
- matrix[i][j] = matrix[i - 1][j - 1];
- } else {
- matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1));
- }
- }
- }
- return matrix[b.length][a.length];
- }
- function newDistanceFn(str) {
- return function(x, y) {
- var xValue = str(x).trim();
- var yValue = str(y).trim();
- var lev = levenshtein(xValue, yValue);
- return lev / (xValue.length + yValue.length);
- };
- }
- function newMatcherFn(distance2) {
- function findBestMatch(a, b, cache) {
- if (cache === void 0) {
- cache = new Map();
- }
- var bestMatchDist = Infinity;
- var bestMatch;
- for (var i = 0; i < a.length; ++i) {
- for (var j = 0; j < b.length; ++j) {
- var cacheKey = JSON.stringify([a[i], b[j]]);
- var md = void 0;
- if (!(cache.has(cacheKey) && (md = cache.get(cacheKey)))) {
- md = distance2(a[i], b[j]);
- cache.set(cacheKey, md);
- }
- if (md < bestMatchDist) {
- bestMatchDist = md;
- bestMatch = { indexA: i, indexB: j, score: bestMatchDist };
- }
- }
- }
- return bestMatch;
- }
- function group(a, b, level, cache) {
- if (level === void 0) {
- level = 0;
- }
- if (cache === void 0) {
- cache = new Map();
- }
- var bm = findBestMatch(a, b, cache);
- if (!bm || a.length + b.length < 3) {
- return [[a, b]];
- }
- var a1 = a.slice(0, bm.indexA);
- var b1 = b.slice(0, bm.indexB);
- var aMatch = [a[bm.indexA]];
- var bMatch = [b[bm.indexB]];
- var tailA = bm.indexA + 1;
- var tailB = bm.indexB + 1;
- var a2 = a.slice(tailA);
- var b2 = b.slice(tailB);
- var group1 = group(a1, b1, level + 1, cache);
- var groupMatch = group(aMatch, bMatch, level + 1, cache);
- var group2 = group(a2, b2, level + 1, cache);
- var result = groupMatch;
- if (bm.indexA > 0 || bm.indexB > 0) {
- result = group1.concat(result);
- }
- if (a.length > tailA || b.length > tailB) {
- result = result.concat(group2);
- }
- return result;
- }
- return group;
- }
- // node_modules/diff2html/lib-esm/render-utils.js
- var __assign = function() {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s)
- if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- var CSSLineClass = {
- INSERTS: "d2h-ins",
- DELETES: "d2h-del",
- CONTEXT: "d2h-cntx",
- INFO: "d2h-info",
- INSERT_CHANGES: "d2h-ins d2h-change",
- DELETE_CHANGES: "d2h-del d2h-change"
- };
- var defaultRenderConfig = {
- matching: LineMatchingType.NONE,
- matchWordsThreshold: 0.25,
- maxLineLengthHighlight: 1e4,
- diffStyle: DiffStyleType.WORD
- };
- var separator = "/";
- var distance = newDistanceFn(function(change) {
- return change.value;
- });
- var matcher = newMatcherFn(distance);
- function isDevNullName(name) {
- return name.indexOf("dev/null") !== -1;
- }
- function removeInsElements(line) {
- return line.replace(/(<ins[^>]*>((.|\n)*?)<\/ins>)/g, "");
- }
- function removeDelElements(line) {
- return line.replace(/(<del[^>]*>((.|\n)*?)<\/del>)/g, "");
- }
- function toCSSClass(lineType) {
- switch (lineType) {
- case LineType.CONTEXT:
- return CSSLineClass.CONTEXT;
- case LineType.INSERT:
- return CSSLineClass.INSERTS;
- case LineType.DELETE:
- return CSSLineClass.DELETES;
- }
- }
- function prefixLength(isCombined) {
- return isCombined ? 2 : 1;
- }
- function escapeForHtml(str) {
- return str.slice(0).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/\//g, "/");
- }
- function deconstructLine(line, isCombined, escape) {
- if (escape === void 0) {
- escape = true;
- }
- var indexToSplit = prefixLength(isCombined);
- return {
- prefix: line.substring(0, indexToSplit),
- content: escape ? escapeForHtml(line.substring(indexToSplit)) : line.substring(indexToSplit)
- };
- }
- function filenameDiff(file) {
- var oldFilename = unifyPath(file.oldName);
- var newFilename = unifyPath(file.newName);
- if (oldFilename !== newFilename && !isDevNullName(oldFilename) && !isDevNullName(newFilename)) {
- var prefixPaths = [];
- var suffixPaths = [];
- var oldFilenameParts = oldFilename.split(separator);
- var newFilenameParts = newFilename.split(separator);
- var oldFilenamePartsSize = oldFilenameParts.length;
- var newFilenamePartsSize = newFilenameParts.length;
- var i = 0;
- var j = oldFilenamePartsSize - 1;
- var k = newFilenamePartsSize - 1;
- while (i < j && i < k) {
- if (oldFilenameParts[i] === newFilenameParts[i]) {
- prefixPaths.push(newFilenameParts[i]);
- i += 1;
- } else {
- break;
- }
- }
- while (j > i && k > i) {
- if (oldFilenameParts[j] === newFilenameParts[k]) {
- suffixPaths.unshift(newFilenameParts[k]);
- j -= 1;
- k -= 1;
- } else {
- break;
- }
- }
- var finalPrefix = prefixPaths.join(separator);
- var finalSuffix = suffixPaths.join(separator);
- var oldRemainingPath = oldFilenameParts.slice(i, j + 1).join(separator);
- var newRemainingPath = newFilenameParts.slice(i, k + 1).join(separator);
- if (finalPrefix.length && finalSuffix.length) {
- return finalPrefix + separator + "{" + oldRemainingPath + " \u2192 " + newRemainingPath + "}" + separator + finalSuffix;
- } else if (finalPrefix.length) {
- return finalPrefix + separator + "{" + oldRemainingPath + " \u2192 " + newRemainingPath + "}";
- } else if (finalSuffix.length) {
- return "{" + oldRemainingPath + " \u2192 " + newRemainingPath + "}" + separator + finalSuffix;
- }
- return oldFilename + " \u2192 " + newFilename;
- } else if (!isDevNullName(newFilename)) {
- return newFilename;
- } else {
- return oldFilename;
- }
- }
- function getHtmlId(file) {
- return "d2h-".concat(hashCode(filenameDiff(file)).toString().slice(-6));
- }
- function getFileIcon(file) {
- var templateName = "file-changed";
- if (file.isRename) {
- templateName = "file-renamed";
- } else if (file.isCopy) {
- templateName = "file-renamed";
- } else if (file.isNew) {
- templateName = "file-added";
- } else if (file.isDeleted) {
- templateName = "file-deleted";
- } else if (file.newName !== file.oldName) {
- templateName = "file-renamed";
- }
- return templateName;
- }
- function diffHighlight(diffLine1, diffLine2, isCombined, config) {
- if (config === void 0) {
- config = {};
- }
- var _a2 = __assign(__assign({}, defaultRenderConfig), config), matching = _a2.matching, maxLineLengthHighlight = _a2.maxLineLengthHighlight, matchWordsThreshold = _a2.matchWordsThreshold, diffStyle = _a2.diffStyle;
- var line1 = deconstructLine(diffLine1, isCombined, false);
- var line2 = deconstructLine(diffLine2, isCombined, false);
- if (line1.content.length > maxLineLengthHighlight || line2.content.length > maxLineLengthHighlight) {
- return {
- oldLine: {
- prefix: line1.prefix,
- content: escapeForHtml(line1.content)
- },
- newLine: {
- prefix: line2.prefix,
- content: escapeForHtml(line2.content)
- }
- };
- }
- var diff2 = diffStyle === "char" ? diffChars(line1.content, line2.content) : diffWordsWithSpace(line1.content, line2.content);
- var changedWords = [];
- if (diffStyle === "word" && matching === "words") {
- var removed = diff2.filter(function(element2) {
- return element2.removed;
- });
- var added = diff2.filter(function(element2) {
- return element2.added;
- });
- var chunks = matcher(added, removed);
- chunks.forEach(function(chunk) {
- if (chunk[0].length === 1 && chunk[1].length === 1) {
- var dist = distance(chunk[0][0], chunk[1][0]);
- if (dist < matchWordsThreshold) {
- changedWords.push(chunk[0][0]);
- changedWords.push(chunk[1][0]);
- }
- }
- });
- }
- var highlightedLine = diff2.reduce(function(highlightedLine2, part) {
- var elemType = part.added ? "ins" : part.removed ? "del" : null;
- var addClass = changedWords.indexOf(part) > -1 ? ' class="d2h-change"' : "";
- var escapedValue = escapeForHtml(part.value);
- return elemType !== null ? "".concat(highlightedLine2, "<").concat(elemType).concat(addClass, ">").concat(escapedValue, "</").concat(elemType, ">") : "".concat(highlightedLine2).concat(escapedValue);
- }, "");
- return {
- oldLine: {
- prefix: line1.prefix,
- content: removeInsElements(highlightedLine)
- },
- newLine: {
- prefix: line2.prefix,
- content: removeDelElements(highlightedLine)
- }
- };
- }
- // node_modules/diff2html/lib-esm/file-list-renderer.js
- var baseTemplatesPath = "file-summary";
- var iconsBaseTemplatesPath = "icon";
- function render(diffFiles, hoganUtils) {
- var files = diffFiles.map(function(file) {
- return hoganUtils.render(baseTemplatesPath, "line", {
- fileHtmlId: getHtmlId(file),
- oldName: file.oldName,
- newName: file.newName,
- fileName: filenameDiff(file),
- deletedLines: "-" + file.deletedLines,
- addedLines: "+" + file.addedLines
- }, {
- fileIcon: hoganUtils.template(iconsBaseTemplatesPath, getFileIcon(file))
- });
- }).join("\n");
- return hoganUtils.render(baseTemplatesPath, "wrapper", {
- filesNumber: diffFiles.length,
- files
- });
- }
- // node_modules/diff2html/lib-esm/line-by-line-renderer.js
- init_polyfill_buffer();
- var __assign2 = function() {
- __assign2 = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s)
- if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign2.apply(this, arguments);
- };
- var defaultLineByLineRendererConfig = __assign2(__assign2({}, defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 });
- var genericTemplatesPath = "generic";
- var baseTemplatesPath2 = "line-by-line";
- var iconsBaseTemplatesPath2 = "icon";
- var tagsBaseTemplatesPath = "tag";
- var LineByLineRenderer = function() {
- function LineByLineRenderer2(hoganUtils, config) {
- if (config === void 0) {
- config = {};
- }
- this.hoganUtils = hoganUtils;
- this.config = __assign2(__assign2({}, defaultLineByLineRendererConfig), config);
- }
- LineByLineRenderer2.prototype.render = function(diffFiles) {
- var _this = this;
- var diffsHtml = diffFiles.map(function(file) {
- var diffs;
- if (file.blocks.length) {
- diffs = _this.generateFileHtml(file);
- } else {
- diffs = _this.generateEmptyDiff();
- }
- return _this.makeFileDiffHtml(file, diffs);
- }).join("\n");
- return this.hoganUtils.render(genericTemplatesPath, "wrapper", { content: diffsHtml });
- };
- LineByLineRenderer2.prototype.makeFileDiffHtml = function(file, diffs) {
- if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0)
- return "";
- var fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath2, "file-diff");
- var filePathTemplate = this.hoganUtils.template(genericTemplatesPath, "file-path");
- var fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath2, "file");
- var fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath, getFileIcon(file));
- return fileDiffTemplate.render({
- file,
- fileHtmlId: getHtmlId(file),
- diffs,
- filePath: filePathTemplate.render({
- fileDiffName: filenameDiff(file)
- }, {
- fileIcon: fileIconTemplate,
- fileTag: fileTagTemplate
- })
- });
- };
- LineByLineRenderer2.prototype.generateEmptyDiff = function() {
- return this.hoganUtils.render(genericTemplatesPath, "empty-diff", {
- contentClass: "d2h-code-line",
- CSSLineClass
- });
- };
- LineByLineRenderer2.prototype.generateFileHtml = function(file) {
- var _this = this;
- var matcher2 = newMatcherFn(newDistanceFn(function(e) {
- return deconstructLine(e.content, file.isCombined).content;
- }));
- return file.blocks.map(function(block) {
- var lines = _this.hoganUtils.render(genericTemplatesPath, "block-header", {
- CSSLineClass,
- blockHeader: file.isTooBig ? block.header : escapeForHtml(block.header),
- lineClass: "d2h-code-linenumber",
- contentClass: "d2h-code-line"
- });
- _this.applyLineGroupping(block).forEach(function(_a2) {
- var contextLines = _a2[0], oldLines = _a2[1], newLines = _a2[2];
- if (oldLines.length && newLines.length && !contextLines.length) {
- _this.applyRematchMatching(oldLines, newLines, matcher2).map(function(_a3) {
- var oldLines2 = _a3[0], newLines2 = _a3[1];
- var _b2 = _this.processChangedLines(file.isCombined, oldLines2, newLines2), left2 = _b2.left, right2 = _b2.right;
- lines += left2;
- lines += right2;
- });
- } else if (contextLines.length) {
- contextLines.forEach(function(line) {
- var _a3 = deconstructLine(line.content, file.isCombined), prefix = _a3.prefix, content = _a3.content;
- lines += _this.generateSingleLineHtml({
- type: CSSLineClass.CONTEXT,
- prefix,
- content,
- oldNumber: line.oldNumber,
- newNumber: line.newNumber
- });
- });
- } else if (oldLines.length || newLines.length) {
- var _b = _this.processChangedLines(file.isCombined, oldLines, newLines), left = _b.left, right = _b.right;
- lines += left;
- lines += right;
- } else {
- console.error("Unknown state reached while processing groups of lines", contextLines, oldLines, newLines);
- }
- });
- return lines;
- }).join("\n");
- };
- LineByLineRenderer2.prototype.applyLineGroupping = function(block) {
- var blockLinesGroups = [];
- var oldLines = [];
- var newLines = [];
- for (var i = 0; i < block.lines.length; i++) {
- var diffLine = block.lines[i];
- if (diffLine.type !== LineType.INSERT && newLines.length || diffLine.type === LineType.CONTEXT && oldLines.length > 0) {
- blockLinesGroups.push([[], oldLines, newLines]);
- oldLines = [];
- newLines = [];
- }
- if (diffLine.type === LineType.CONTEXT) {
- blockLinesGroups.push([[diffLine], [], []]);
- } else if (diffLine.type === LineType.INSERT && oldLines.length === 0) {
- blockLinesGroups.push([[], [], [diffLine]]);
- } else if (diffLine.type === LineType.INSERT && oldLines.length > 0) {
- newLines.push(diffLine);
- } else if (diffLine.type === LineType.DELETE) {
- oldLines.push(diffLine);
- }
- }
- if (oldLines.length || newLines.length) {
- blockLinesGroups.push([[], oldLines, newLines]);
- oldLines = [];
- newLines = [];
- }
- return blockLinesGroups;
- };
- LineByLineRenderer2.prototype.applyRematchMatching = function(oldLines, newLines, matcher2) {
- var comparisons = oldLines.length * newLines.length;
- var maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map(function(elem) {
- return elem.content.length;
- })));
- var doMatching = comparisons < this.config.matchingMaxComparisons && maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison && (this.config.matching === "lines" || this.config.matching === "words");
- return doMatching ? matcher2(oldLines, newLines) : [[oldLines, newLines]];
- };
- LineByLineRenderer2.prototype.processChangedLines = function(isCombined, oldLines, newLines) {
- var fileHtml = {
- right: "",
- left: ""
- };
- var maxLinesNumber = Math.max(oldLines.length, newLines.length);
- for (var i = 0; i < maxLinesNumber; i++) {
- var oldLine = oldLines[i];
- var newLine = newLines[i];
- var diff2 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0;
- var preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? __assign2(__assign2({}, diff2 !== void 0 ? {
- prefix: diff2.oldLine.prefix,
- content: diff2.oldLine.content,
- type: CSSLineClass.DELETE_CHANGES
- } : __assign2(__assign2({}, deconstructLine(oldLine.content, isCombined)), { type: toCSSClass(oldLine.type) })), { oldNumber: oldLine.oldNumber, newNumber: oldLine.newNumber }) : void 0;
- var preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? __assign2(__assign2({}, diff2 !== void 0 ? {
- prefix: diff2.newLine.prefix,
- content: diff2.newLine.content,
- type: CSSLineClass.INSERT_CHANGES
- } : __assign2(__assign2({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { oldNumber: newLine.oldNumber, newNumber: newLine.newNumber }) : void 0;
- var _a2 = this.generateLineHtml(preparedOldLine, preparedNewLine), left = _a2.left, right = _a2.right;
- fileHtml.left += left;
- fileHtml.right += right;
- }
- return fileHtml;
- };
- LineByLineRenderer2.prototype.generateLineHtml = function(oldLine, newLine) {
- return {
- left: this.generateSingleLineHtml(oldLine),
- right: this.generateSingleLineHtml(newLine)
- };
- };
- LineByLineRenderer2.prototype.generateSingleLineHtml = function(line) {
- if (line === void 0)
- return "";
- var lineNumberHtml = this.hoganUtils.render(baseTemplatesPath2, "numbers", {
- oldNumber: line.oldNumber || "",
- newNumber: line.newNumber || ""
- });
- return this.hoganUtils.render(genericTemplatesPath, "line", {
- type: line.type,
- lineClass: "d2h-code-linenumber",
- contentClass: "d2h-code-line",
- prefix: line.prefix === " " ? " " : line.prefix,
- content: line.content,
- lineNumber: lineNumberHtml
- });
- };
- return LineByLineRenderer2;
- }();
- var line_by_line_renderer_default = LineByLineRenderer;
- // node_modules/diff2html/lib-esm/side-by-side-renderer.js
- init_polyfill_buffer();
- var __assign3 = function() {
- __assign3 = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s)
- if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign3.apply(this, arguments);
- };
- var defaultSideBySideRendererConfig = __assign3(__assign3({}, defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 });
- var genericTemplatesPath2 = "generic";
- var baseTemplatesPath3 = "side-by-side";
- var iconsBaseTemplatesPath3 = "icon";
- var tagsBaseTemplatesPath2 = "tag";
- var SideBySideRenderer = function() {
- function SideBySideRenderer2(hoganUtils, config) {
- if (config === void 0) {
- config = {};
- }
- this.hoganUtils = hoganUtils;
- this.config = __assign3(__assign3({}, defaultSideBySideRendererConfig), config);
- }
- SideBySideRenderer2.prototype.render = function(diffFiles) {
- var _this = this;
- var diffsHtml = diffFiles.map(function(file) {
- var diffs;
- if (file.blocks.length) {
- diffs = _this.generateFileHtml(file);
- } else {
- diffs = _this.generateEmptyDiff();
- }
- return _this.makeFileDiffHtml(file, diffs);
- }).join("\n");
- return this.hoganUtils.render(genericTemplatesPath2, "wrapper", { content: diffsHtml });
- };
- SideBySideRenderer2.prototype.makeFileDiffHtml = function(file, diffs) {
- if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0)
- return "";
- var fileDiffTemplate = this.hoganUtils.template(baseTemplatesPath3, "file-diff");
- var filePathTemplate = this.hoganUtils.template(genericTemplatesPath2, "file-path");
- var fileIconTemplate = this.hoganUtils.template(iconsBaseTemplatesPath3, "file");
- var fileTagTemplate = this.hoganUtils.template(tagsBaseTemplatesPath2, getFileIcon(file));
- return fileDiffTemplate.render({
- file,
- fileHtmlId: getHtmlId(file),
- diffs,
- filePath: filePathTemplate.render({
- fileDiffName: filenameDiff(file)
- }, {
- fileIcon: fileIconTemplate,
- fileTag: fileTagTemplate
- })
- });
- };
- SideBySideRenderer2.prototype.generateEmptyDiff = function() {
- return {
- right: "",
- left: this.hoganUtils.render(genericTemplatesPath2, "empty-diff", {
- contentClass: "d2h-code-side-line",
- CSSLineClass
- })
- };
- };
- SideBySideRenderer2.prototype.generateFileHtml = function(file) {
- var _this = this;
- var matcher2 = newMatcherFn(newDistanceFn(function(e) {
- return deconstructLine(e.content, file.isCombined).content;
- }));
- return file.blocks.map(function(block) {
- var fileHtml = {
- left: _this.makeHeaderHtml(block.header, file),
- right: _this.makeHeaderHtml("")
- };
- _this.applyLineGroupping(block).forEach(function(_a2) {
- var contextLines = _a2[0], oldLines = _a2[1], newLines = _a2[2];
- if (oldLines.length && newLines.length && !contextLines.length) {
- _this.applyRematchMatching(oldLines, newLines, matcher2).map(function(_a3) {
- var oldLines2 = _a3[0], newLines2 = _a3[1];
- var _b2 = _this.processChangedLines(file.isCombined, oldLines2, newLines2), left2 = _b2.left, right2 = _b2.right;
- fileHtml.left += left2;
- fileHtml.right += right2;
- });
- } else if (contextLines.length) {
- contextLines.forEach(function(line) {
- var _a3 = deconstructLine(line.content, file.isCombined), prefix = _a3.prefix, content = _a3.content;
- var _b2 = _this.generateLineHtml({
- type: CSSLineClass.CONTEXT,
- prefix,
- content,
- number: line.oldNumber
- }, {
- type: CSSLineClass.CONTEXT,
- prefix,
- content,
- number: line.newNumber
- }), left2 = _b2.left, right2 = _b2.right;
- fileHtml.left += left2;
- fileHtml.right += right2;
- });
- } else if (oldLines.length || newLines.length) {
- var _b = _this.processChangedLines(file.isCombined, oldLines, newLines), left = _b.left, right = _b.right;
- fileHtml.left += left;
- fileHtml.right += right;
- } else {
- console.error("Unknown state reached while processing groups of lines", contextLines, oldLines, newLines);
- }
- });
- return fileHtml;
- }).reduce(function(accomulated, html2) {
- return { left: accomulated.left + html2.left, right: accomulated.right + html2.right };
- }, { left: "", right: "" });
- };
- SideBySideRenderer2.prototype.applyLineGroupping = function(block) {
- var blockLinesGroups = [];
- var oldLines = [];
- var newLines = [];
- for (var i = 0; i < block.lines.length; i++) {
- var diffLine = block.lines[i];
- if (diffLine.type !== LineType.INSERT && newLines.length || diffLine.type === LineType.CONTEXT && oldLines.length > 0) {
- blockLinesGroups.push([[], oldLines, newLines]);
- oldLines = [];
- newLines = [];
- }
- if (diffLine.type === LineType.CONTEXT) {
- blockLinesGroups.push([[diffLine], [], []]);
- } else if (diffLine.type === LineType.INSERT && oldLines.length === 0) {
- blockLinesGroups.push([[], [], [diffLine]]);
- } else if (diffLine.type === LineType.INSERT && oldLines.length > 0) {
- newLines.push(diffLine);
- } else if (diffLine.type === LineType.DELETE) {
- oldLines.push(diffLine);
- }
- }
- if (oldLines.length || newLines.length) {
- blockLinesGroups.push([[], oldLines, newLines]);
- oldLines = [];
- newLines = [];
- }
- return blockLinesGroups;
- };
- SideBySideRenderer2.prototype.applyRematchMatching = function(oldLines, newLines, matcher2) {
- var comparisons = oldLines.length * newLines.length;
- var maxLineSizeInBlock = Math.max.apply(null, [0].concat(oldLines.concat(newLines).map(function(elem) {
- return elem.content.length;
- })));
- var doMatching = comparisons < this.config.matchingMaxComparisons && maxLineSizeInBlock < this.config.maxLineSizeInBlockForComparison && (this.config.matching === "lines" || this.config.matching === "words");
- return doMatching ? matcher2(oldLines, newLines) : [[oldLines, newLines]];
- };
- SideBySideRenderer2.prototype.makeHeaderHtml = function(blockHeader, file) {
- return this.hoganUtils.render(genericTemplatesPath2, "block-header", {
- CSSLineClass,
- blockHeader: (file === null || file === void 0 ? void 0 : file.isTooBig) ? blockHeader : escapeForHtml(blockHeader),
- lineClass: "d2h-code-side-linenumber",
- contentClass: "d2h-code-side-line"
- });
- };
- SideBySideRenderer2.prototype.processChangedLines = function(isCombined, oldLines, newLines) {
- var fileHtml = {
- right: "",
- left: ""
- };
- var maxLinesNumber = Math.max(oldLines.length, newLines.length);
- for (var i = 0; i < maxLinesNumber; i++) {
- var oldLine = oldLines[i];
- var newLine = newLines[i];
- var diff2 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0;
- var preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? __assign3(__assign3({}, diff2 !== void 0 ? {
- prefix: diff2.oldLine.prefix,
- content: diff2.oldLine.content,
- type: CSSLineClass.DELETE_CHANGES
- } : __assign3(__assign3({}, deconstructLine(oldLine.content, isCombined)), { type: toCSSClass(oldLine.type) })), { number: oldLine.oldNumber }) : void 0;
- var preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? __assign3(__assign3({}, diff2 !== void 0 ? {
- prefix: diff2.newLine.prefix,
- content: diff2.newLine.content,
- type: CSSLineClass.INSERT_CHANGES
- } : __assign3(__assign3({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { number: newLine.newNumber }) : void 0;
- var _a2 = this.generateLineHtml(preparedOldLine, preparedNewLine), left = _a2.left, right = _a2.right;
- fileHtml.left += left;
- fileHtml.right += right;
- }
- return fileHtml;
- };
- SideBySideRenderer2.prototype.generateLineHtml = function(oldLine, newLine) {
- return {
- left: this.generateSingleHtml(oldLine),
- right: this.generateSingleHtml(newLine)
- };
- };
- SideBySideRenderer2.prototype.generateSingleHtml = function(line) {
- var lineClass = "d2h-code-side-linenumber";
- var contentClass = "d2h-code-side-line";
- return this.hoganUtils.render(genericTemplatesPath2, "line", {
- type: (line === null || line === void 0 ? void 0 : line.type) || "".concat(CSSLineClass.CONTEXT, " d2h-emptyplaceholder"),
- lineClass: line !== void 0 ? lineClass : "".concat(lineClass, " d2h-code-side-emptyplaceholder"),
- contentClass: line !== void 0 ? contentClass : "".concat(contentClass, " d2h-code-side-emptyplaceholder"),
- prefix: (line === null || line === void 0 ? void 0 : line.prefix) === " " ? " " : line === null || line === void 0 ? void 0 : line.prefix,
- content: line === null || line === void 0 ? void 0 : line.content,
- lineNumber: line === null || line === void 0 ? void 0 : line.number
- });
- };
- return SideBySideRenderer2;
- }();
- var side_by_side_renderer_default = SideBySideRenderer;
- // node_modules/diff2html/lib-esm/hoganjs-utils.js
- init_polyfill_buffer();
- var Hogan3 = __toModule(require_hogan());
- // node_modules/diff2html/lib-esm/diff2html-templates.js
- init_polyfill_buffer();
- var Hogan2 = __toModule(require_hogan());
- var defaultTemplates = {};
- defaultTemplates["file-summary-line"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<li class="d2h-file-list-line">');
- t.b("\n" + i);
- t.b(' <span class="d2h-file-name-wrapper">');
- t.b("\n" + i);
- t.b(t.rp("<fileIcon0", c, p, " "));
- t.b(' <a href="#');
- t.b(t.v(t.f("fileHtmlId", c, p, 0)));
- t.b('" class="d2h-file-name">');
- t.b(t.v(t.f("fileName", c, p, 0)));
- t.b("</a>");
- t.b("\n" + i);
- t.b(' <span class="d2h-file-stats">');
- t.b("\n" + i);
- t.b(' <span class="d2h-lines-added">');
- t.b(t.v(t.f("addedLines", c, p, 0)));
- t.b("</span>");
- t.b("\n" + i);
- t.b(' <span class="d2h-lines-deleted">');
- t.b(t.v(t.f("deletedLines", c, p, 0)));
- t.b("</span>");
- t.b("\n" + i);
- t.b(" </span>");
- t.b("\n" + i);
- t.b(" </span>");
- t.b("\n" + i);
- t.b("</li>");
- return t.fl();
- }, partials: { "<fileIcon0": { name: "fileIcon", partials: {}, subs: {} } }, subs: {} });
- defaultTemplates["file-summary-wrapper"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<div class="d2h-file-list-wrapper">');
- t.b("\n" + i);
- t.b(' <div class="d2h-file-list-header">');
- t.b("\n" + i);
- t.b(' <span class="d2h-file-list-title">Files changed (');
- t.b(t.v(t.f("filesNumber", c, p, 0)));
- t.b(")</span>");
- t.b("\n" + i);
- t.b(' <a class="d2h-file-switch d2h-hide">hide</a>');
- t.b("\n" + i);
- t.b(' <a class="d2h-file-switch d2h-show">show</a>');
- t.b("\n" + i);
- t.b(" </div>");
- t.b("\n" + i);
- t.b(' <ol class="d2h-file-list">');
- t.b("\n" + i);
- t.b(" ");
- t.b(t.t(t.f("files", c, p, 0)));
- t.b("\n" + i);
- t.b(" </ol>");
- t.b("\n" + i);
- t.b("</div>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["generic-block-header"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b("<tr>");
- t.b("\n" + i);
- t.b(' <td class="');
- t.b(t.v(t.f("lineClass", c, p, 0)));
- t.b(" ");
- t.b(t.v(t.d("CSSLineClass.INFO", c, p, 0)));
- t.b('"></td>');
- t.b("\n" + i);
- t.b(' <td class="');
- t.b(t.v(t.d("CSSLineClass.INFO", c, p, 0)));
- t.b('">');
- t.b("\n" + i);
- t.b(' <div class="');
- t.b(t.v(t.f("contentClass", c, p, 0)));
- t.b('">');
- t.b(t.t(t.f("blockHeader", c, p, 0)));
- t.b("</div>");
- t.b("\n" + i);
- t.b(" </td>");
- t.b("\n" + i);
- t.b("</tr>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["generic-empty-diff"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b("<tr>");
- t.b("\n" + i);
- t.b(' <td class="');
- t.b(t.v(t.d("CSSLineClass.INFO", c, p, 0)));
- t.b('">');
- t.b("\n" + i);
- t.b(' <div class="');
- t.b(t.v(t.f("contentClass", c, p, 0)));
- t.b('">');
- t.b("\n" + i);
- t.b(" File without changes");
- t.b("\n" + i);
- t.b(" </div>");
- t.b("\n" + i);
- t.b(" </td>");
- t.b("\n" + i);
- t.b("</tr>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["generic-file-path"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<span class="d2h-file-name-wrapper">');
- t.b("\n" + i);
- t.b(t.rp("<fileIcon0", c, p, " "));
- t.b(' <span class="d2h-file-name">');
- t.b(t.v(t.f("fileDiffName", c, p, 0)));
- t.b("</span>");
- t.b("\n" + i);
- t.b(t.rp("<fileTag1", c, p, " "));
- t.b("</span>");
- t.b("\n" + i);
- t.b('<label class="d2h-file-collapse">');
- t.b("\n" + i);
- t.b(' <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed">');
- t.b("\n" + i);
- t.b(" Viewed");
- t.b("\n" + i);
- t.b("</label>");
- return t.fl();
- }, partials: { "<fileIcon0": { name: "fileIcon", partials: {}, subs: {} }, "<fileTag1": { name: "fileTag", partials: {}, subs: {} } }, subs: {} });
- defaultTemplates["generic-line"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b("<tr>");
- t.b("\n" + i);
- t.b(' <td class="');
- t.b(t.v(t.f("lineClass", c, p, 0)));
- t.b(" ");
- t.b(t.v(t.f("type", c, p, 0)));
- t.b('">');
- t.b("\n" + i);
- t.b(" ");
- t.b(t.t(t.f("lineNumber", c, p, 0)));
- t.b("\n" + i);
- t.b(" </td>");
- t.b("\n" + i);
- t.b(' <td class="');
- t.b(t.v(t.f("type", c, p, 0)));
- t.b('">');
- t.b("\n" + i);
- t.b(' <div class="');
- t.b(t.v(t.f("contentClass", c, p, 0)));
- t.b('">');
- t.b("\n" + i);
- if (t.s(t.f("prefix", c, p, 1), c, p, 0, 162, 238, "{{ }}")) {
- t.rs(c, p, function(c2, p2, t2) {
- t2.b(' <span class="d2h-code-line-prefix">');
- t2.b(t2.t(t2.f("prefix", c2, p2, 0)));
- t2.b("</span>");
- t2.b("\n" + i);
- });
- c.pop();
- }
- if (!t.s(t.f("prefix", c, p, 1), c, p, 1, 0, 0, "")) {
- t.b(' <span class="d2h-code-line-prefix"> </span>');
- t.b("\n" + i);
- }
- ;
- if (t.s(t.f("content", c, p, 1), c, p, 0, 371, 445, "{{ }}")) {
- t.rs(c, p, function(c2, p2, t2) {
- t2.b(' <span class="d2h-code-line-ctn">');
- t2.b(t2.t(t2.f("content", c2, p2, 0)));
- t2.b("</span>");
- t2.b("\n" + i);
- });
- c.pop();
- }
- if (!t.s(t.f("content", c, p, 1), c, p, 1, 0, 0, "")) {
- t.b(' <span class="d2h-code-line-ctn"><br></span>');
- t.b("\n" + i);
- }
- ;
- t.b(" </div>");
- t.b("\n" + i);
- t.b(" </td>");
- t.b("\n" + i);
- t.b("</tr>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["generic-wrapper"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<div class="d2h-wrapper">');
- t.b("\n" + i);
- t.b(" ");
- t.b(t.t(t.f("content", c, p, 0)));
- t.b("\n" + i);
- t.b("</div>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["icon-file-added"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16"');
- t.b("\n" + i);
- t.b(' width="14">');
- t.b("\n" + i);
- t.b(' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path>');
- t.b("\n" + i);
- t.b("</svg>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["icon-file-changed"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1"');
- t.b("\n" + i);
- t.b(' viewBox="0 0 14 16" width="14">');
- t.b("\n" + i);
- t.b(' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path>');
- t.b("\n" + i);
- t.b("</svg>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["icon-file-deleted"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1"');
- t.b("\n" + i);
- t.b(' viewBox="0 0 14 16" width="14">');
- t.b("\n" + i);
- t.b(' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path>');
- t.b("\n" + i);
- t.b("</svg>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["icon-file-renamed"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<svg aria-hidden="true" class="d2h-icon d2h-moved" height="16" title="renamed" version="1.1"');
- t.b("\n" + i);
- t.b(' viewBox="0 0 14 16" width="14">');
- t.b("\n" + i);
- t.b(' <path d="M6 9H3V7h3V4l5 4-5 4V9z m8-7v12c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h12c0.55 0 1 0.45 1 1z m-1 0H1v12h12V2z"></path>');
- t.b("\n" + i);
- t.b("</svg>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["icon-file"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">');
- t.b("\n" + i);
- t.b(' <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>');
- t.b("\n" + i);
- t.b("</svg>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["line-by-line-file-diff"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<div id="');
- t.b(t.v(t.f("fileHtmlId", c, p, 0)));
- t.b('" class="d2h-file-wrapper" data-lang="');
- t.b(t.v(t.d("file.language", c, p, 0)));
- t.b('">');
- t.b("\n" + i);
- t.b(' <div class="d2h-file-header">');
- t.b("\n" + i);
- t.b(" ");
- t.b(t.t(t.f("filePath", c, p, 0)));
- t.b("\n" + i);
- t.b(" </div>");
- t.b("\n" + i);
- t.b(' <div class="d2h-file-diff">');
- t.b("\n" + i);
- t.b(' <div class="d2h-code-wrapper">');
- t.b("\n" + i);
- t.b(' <table class="d2h-diff-table">');
- t.b("\n" + i);
- t.b(' <tbody class="d2h-diff-tbody">');
- t.b("\n" + i);
- t.b(" ");
- t.b(t.t(t.f("diffs", c, p, 0)));
- t.b("\n" + i);
- t.b(" </tbody>");
- t.b("\n" + i);
- t.b(" </table>");
- t.b("\n" + i);
- t.b(" </div>");
- t.b("\n" + i);
- t.b(" </div>");
- t.b("\n" + i);
- t.b("</div>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["line-by-line-numbers"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<div class="line-num1">');
- t.b(t.v(t.f("oldNumber", c, p, 0)));
- t.b("</div>");
- t.b("\n" + i);
- t.b('<div class="line-num2">');
- t.b(t.v(t.f("newNumber", c, p, 0)));
- t.b("</div>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["side-by-side-file-diff"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<div id="');
- t.b(t.v(t.f("fileHtmlId", c, p, 0)));
- t.b('" class="d2h-file-wrapper" data-lang="');
- t.b(t.v(t.d("file.language", c, p, 0)));
- t.b('">');
- t.b("\n" + i);
- t.b(' <div class="d2h-file-header">');
- t.b("\n" + i);
- t.b(" ");
- t.b(t.t(t.f("filePath", c, p, 0)));
- t.b("\n" + i);
- t.b(" </div>");
- t.b("\n" + i);
- t.b(' <div class="d2h-files-diff">');
- t.b("\n" + i);
- t.b(' <div class="d2h-file-side-diff">');
- t.b("\n" + i);
- t.b(' <div class="d2h-code-wrapper">');
- t.b("\n" + i);
- t.b(' <table class="d2h-diff-table">');
- t.b("\n" + i);
- t.b(' <tbody class="d2h-diff-tbody">');
- t.b("\n" + i);
- t.b(" ");
- t.b(t.t(t.d("diffs.left", c, p, 0)));
- t.b("\n" + i);
- t.b(" </tbody>");
- t.b("\n" + i);
- t.b(" </table>");
- t.b("\n" + i);
- t.b(" </div>");
- t.b("\n" + i);
- t.b(" </div>");
- t.b("\n" + i);
- t.b(' <div class="d2h-file-side-diff">');
- t.b("\n" + i);
- t.b(' <div class="d2h-code-wrapper">');
- t.b("\n" + i);
- t.b(' <table class="d2h-diff-table">');
- t.b("\n" + i);
- t.b(' <tbody class="d2h-diff-tbody">');
- t.b("\n" + i);
- t.b(" ");
- t.b(t.t(t.d("diffs.right", c, p, 0)));
- t.b("\n" + i);
- t.b(" </tbody>");
- t.b("\n" + i);
- t.b(" </table>");
- t.b("\n" + i);
- t.b(" </div>");
- t.b("\n" + i);
- t.b(" </div>");
- t.b("\n" + i);
- t.b(" </div>");
- t.b("\n" + i);
- t.b("</div>");
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["tag-file-added"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<span class="d2h-tag d2h-added d2h-added-tag">ADDED</span>');
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["tag-file-changed"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span>');
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["tag-file-deleted"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<span class="d2h-tag d2h-deleted d2h-deleted-tag">DELETED</span>');
- return t.fl();
- }, partials: {}, subs: {} });
- defaultTemplates["tag-file-renamed"] = new Hogan2.Template({ code: function(c, p, i) {
- var t = this;
- t.b(i = i || "");
- t.b('<span class="d2h-tag d2h-moved d2h-moved-tag">RENAMED</span>');
- return t.fl();
- }, partials: {}, subs: {} });
- // node_modules/diff2html/lib-esm/hoganjs-utils.js
- var __assign4 = function() {
- __assign4 = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s)
- if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign4.apply(this, arguments);
- };
- var HoganJsUtils = function() {
- function HoganJsUtils2(_a2) {
- var _b = _a2.compiledTemplates, compiledTemplates = _b === void 0 ? {} : _b, _c = _a2.rawTemplates, rawTemplates = _c === void 0 ? {} : _c;
- var compiledRawTemplates = Object.entries(rawTemplates).reduce(function(previousTemplates, _a3) {
- var _b2;
- var name = _a3[0], templateString = _a3[1];
- var compiledTemplate = Hogan3.compile(templateString, { asString: false });
- return __assign4(__assign4({}, previousTemplates), (_b2 = {}, _b2[name] = compiledTemplate, _b2));
- }, {});
- this.preCompiledTemplates = __assign4(__assign4(__assign4({}, defaultTemplates), compiledTemplates), compiledRawTemplates);
- }
- HoganJsUtils2.compile = function(templateString) {
- return Hogan3.compile(templateString, { asString: false });
- };
- HoganJsUtils2.prototype.render = function(namespace, view, params, partials, indent2) {
- var templateKey = this.templateKey(namespace, view);
- try {
- var template = this.preCompiledTemplates[templateKey];
- return template.render(params, partials, indent2);
- } catch (e) {
- throw new Error("Could not find template to render '".concat(templateKey, "'"));
- }
- };
- HoganJsUtils2.prototype.template = function(namespace, view) {
- return this.preCompiledTemplates[this.templateKey(namespace, view)];
- };
- HoganJsUtils2.prototype.templateKey = function(namespace, view) {
- return "".concat(namespace, "-").concat(view);
- };
- return HoganJsUtils2;
- }();
- var hoganjs_utils_default = HoganJsUtils;
- // node_modules/diff2html/lib-esm/diff2html.js
- var __assign5 = function() {
- __assign5 = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s)
- if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign5.apply(this, arguments);
- };
- var defaultDiff2HtmlConfig = __assign5(__assign5(__assign5({}, defaultLineByLineRendererConfig), defaultSideBySideRendererConfig), { outputFormat: OutputFormatType.LINE_BY_LINE, drawFileList: true });
- function html(diffInput, configuration) {
- if (configuration === void 0) {
- configuration = {};
- }
- var config = __assign5(__assign5({}, defaultDiff2HtmlConfig), configuration);
- var diffJson = typeof diffInput === "string" ? parse(diffInput, config) : diffInput;
- var hoganUtils = new hoganjs_utils_default(config);
- var fileList = config.drawFileList ? render(diffJson, hoganUtils) : "";
- var diffOutput = config.outputFormat === "side-by-side" ? new side_by_side_renderer_default(hoganUtils, config).render(diffJson) : new line_by_line_renderer_default(hoganUtils, config).render(diffJson);
- return fileList + diffOutput;
- }
- // src/ui/diff/diffView.ts
- var import_obsidian13 = __toModule(require("obsidian"));
- var DiffView = class extends import_obsidian13.ItemView {
- constructor(leaf, plugin) {
- super(leaf);
- this.plugin = plugin;
- this.gettingDiff = false;
- this.parser = new DOMParser();
- this.navigation = true;
- addEventListener("git-refresh", this.refresh.bind(this));
- }
- getViewType() {
- return DIFF_VIEW_CONFIG.type;
- }
- getDisplayText() {
- return DIFF_VIEW_CONFIG.name;
- }
- getIcon() {
- return DIFF_VIEW_CONFIG.icon;
- }
- async setState(state, result) {
- this.state = state;
- await this.refresh();
- return;
- }
- getState() {
- return this.state;
- }
- onClose() {
- removeEventListener("git-refresh", this.refresh.bind(this));
- return super.onClose();
- }
- onOpen() {
- this.refresh();
- return super.onOpen();
- }
- async refresh() {
- var _a2;
- if (((_a2 = this.state) == null ? void 0 : _a2.file) && !this.gettingDiff && this.plugin.gitManager) {
- this.gettingDiff = true;
- let diff2 = await this.plugin.gitManager.getDiffString(this.state.file, this.state.staged);
- this.contentEl.empty();
- if (!diff2) {
- const content = await this.app.vault.adapter.read(this.plugin.gitManager.getVaultPath(this.state.file));
- const header = `--- /dev/null
- +++ ${this.state.file}
- @@ -0,0 +1,${content.split("\n").length} @@`;
- diff2 = [...header.split("\n"), ...content.split("\n").map((line) => `+${line}`)].join("\n");
- }
- const diffEl = this.parser.parseFromString(html(diff2), "text/html").querySelector(".d2h-file-diff");
- this.contentEl.append(diffEl);
- this.gettingDiff = false;
- }
- }
- };
- // src/ui/modals/branchModal.ts
- init_polyfill_buffer();
- var import_obsidian14 = __toModule(require("obsidian"));
- var BranchModal = class extends import_obsidian14.FuzzySuggestModal {
- constructor(branches) {
- super(app);
- this.branches = branches;
- this.setPlaceholder("Select branch to checkout");
- }
- getItems() {
- return this.branches;
- }
- getItemText(item) {
- return item;
- }
- onChooseItem(item, evt) {
- this.resolve(item);
- }
- open() {
- super.open();
- return new Promise((resolve) => {
- this.resolve = resolve;
- });
- }
- async onClose() {
- await new Promise((resolve) => setTimeout(resolve, 10));
- if (this.resolve)
- this.resolve(void 0);
- }
- };
- // src/ui/modals/ignoreModal.ts
- init_polyfill_buffer();
- var import_obsidian15 = __toModule(require("obsidian"));
- var IgnoreModal = class extends import_obsidian15.Modal {
- constructor(app2, content) {
- super(app2);
- this.content = content;
- this.resolve = null;
- }
- open() {
- super.open();
- return new Promise((resolve) => {
- this.resolve = resolve;
- });
- }
- onOpen() {
- const { contentEl, titleEl } = this;
- titleEl.setText("Edit .gitignore");
- const div = contentEl.createDiv();
- const text2 = div.createEl("textarea", {
- text: this.content,
- cls: ["obsidian-git-textarea"],
- attr: { rows: 10, cols: 30, wrap: "off" }
- });
- div.createEl("button", {
- cls: ["mod-cta", "obsidian-git-center-button"],
- text: "Save"
- }).addEventListener("click", async () => {
- this.resolve(text2.value);
- this.close();
- });
- }
- onClose() {
- const { contentEl } = this;
- this.resolve(void 0);
- contentEl.empty();
- }
- };
- // src/ui/sidebar/sidebarView.ts
- init_polyfill_buffer();
- var import_obsidian22 = __toModule(require("obsidian"));
- // src/ui/sidebar/gitView.svelte
- init_polyfill_buffer();
- // node_modules/svelte/internal/index.mjs
- init_polyfill_buffer();
- function noop() {
- }
- var identity = (x) => x;
- function run(fn) {
- return fn();
- }
- function blank_object() {
- return Object.create(null);
- }
- function run_all(fns) {
- fns.forEach(run);
- }
- function is_function(thing) {
- return typeof thing === "function";
- }
- function safe_not_equal(a, b) {
- return a != a ? b == b : a !== b || (a && typeof a === "object" || typeof a === "function");
- }
- function is_empty(obj) {
- return Object.keys(obj).length === 0;
- }
- var is_client = typeof window !== "undefined";
- var now = is_client ? () => window.performance.now() : () => Date.now();
- var raf = is_client ? (cb) => requestAnimationFrame(cb) : noop;
- var tasks = new Set();
- function run_tasks(now2) {
- tasks.forEach((task) => {
- if (!task.c(now2)) {
- tasks.delete(task);
- task.f();
- }
- });
- if (tasks.size !== 0)
- raf(run_tasks);
- }
- function loop(callback) {
- let task;
- if (tasks.size === 0)
- raf(run_tasks);
- return {
- promise: new Promise((fulfill) => {
- tasks.add(task = { c: callback, f: fulfill });
- }),
- abort() {
- tasks.delete(task);
- }
- };
- }
- var is_hydrating = false;
- function start_hydrating() {
- is_hydrating = true;
- }
- function end_hydrating() {
- is_hydrating = false;
- }
- function append2(target, node) {
- target.appendChild(node);
- }
- function append_styles(target, style_sheet_id, styles) {
- const append_styles_to = get_root_for_style(target);
- if (!append_styles_to.getElementById(style_sheet_id)) {
- const style = element("style");
- style.id = style_sheet_id;
- style.textContent = styles;
- append_stylesheet(append_styles_to, style);
- }
- }
- function get_root_for_style(node) {
- if (!node)
- return document;
- const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;
- if (root && root.host) {
- return root;
- }
- return node.ownerDocument;
- }
- function append_empty_stylesheet(node) {
- const style_element = element("style");
- append_stylesheet(get_root_for_style(node), style_element);
- return style_element.sheet;
- }
- function append_stylesheet(node, style) {
- append2(node.head || node, style);
- return style.sheet;
- }
- function insert(target, node, anchor) {
- target.insertBefore(node, anchor || null);
- }
- function detach(node) {
- if (node.parentNode) {
- node.parentNode.removeChild(node);
- }
- }
- function destroy_each(iterations, detaching) {
- for (let i = 0; i < iterations.length; i += 1) {
- if (iterations[i])
- iterations[i].d(detaching);
- }
- }
- function element(name) {
- return document.createElement(name);
- }
- function text(data) {
- return document.createTextNode(data);
- }
- function space() {
- return text(" ");
- }
- function empty() {
- return text("");
- }
- function listen(node, event, handler, options) {
- node.addEventListener(event, handler, options);
- return () => node.removeEventListener(event, handler, options);
- }
- function self2(fn) {
- return function(event) {
- if (event.target === this)
- fn.call(this, event);
- };
- }
- function attr(node, attribute, value) {
- if (value == null)
- node.removeAttribute(attribute);
- else if (node.getAttribute(attribute) !== value)
- node.setAttribute(attribute, value);
- }
- function children(element2) {
- return Array.from(element2.childNodes);
- }
- function set_data(text2, data) {
- data = "" + data;
- if (text2.wholeText !== data)
- text2.data = data;
- }
- function set_input_value(input, value) {
- input.value = value == null ? "" : value;
- }
- function set_style(node, key2, value, important) {
- if (value === null) {
- node.style.removeProperty(key2);
- } else {
- node.style.setProperty(key2, value, important ? "important" : "");
- }
- }
- function toggle_class(element2, name, toggle) {
- element2.classList[toggle ? "add" : "remove"](name);
- }
- function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
- const e = document.createEvent("CustomEvent");
- e.initCustomEvent(type, bubbles, cancelable, detail);
- return e;
- }
- var managed_styles = new Map();
- var active = 0;
- function hash(str) {
- let hash2 = 5381;
- let i = str.length;
- while (i--)
- hash2 = (hash2 << 5) - hash2 ^ str.charCodeAt(i);
- return hash2 >>> 0;
- }
- function create_style_information(doc, node) {
- const info = { stylesheet: append_empty_stylesheet(node), rules: {} };
- managed_styles.set(doc, info);
- return info;
- }
- function create_rule(node, a, b, duration, delay2, ease, fn, uid = 0) {
- const step = 16.666 / duration;
- let keyframes = "{\n";
- for (let p = 0; p <= 1; p += step) {
- const t = a + (b - a) * ease(p);
- keyframes += p * 100 + `%{${fn(t, 1 - t)}}
- `;
- }
- const rule = keyframes + `100% {${fn(b, 1 - b)}}
- }`;
- const name = `__svelte_${hash(rule)}_${uid}`;
- const doc = get_root_for_style(node);
- const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);
- if (!rules[name]) {
- rules[name] = true;
- stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);
- }
- const animation = node.style.animation || "";
- node.style.animation = `${animation ? `${animation}, ` : ""}${name} ${duration}ms linear ${delay2}ms 1 both`;
- active += 1;
- return name;
- }
- function delete_rule(node, name) {
- const previous = (node.style.animation || "").split(", ");
- const next = previous.filter(name ? (anim) => anim.indexOf(name) < 0 : (anim) => anim.indexOf("__svelte") === -1);
- const deleted = previous.length - next.length;
- if (deleted) {
- node.style.animation = next.join(", ");
- active -= deleted;
- if (!active)
- clear_rules();
- }
- }
- function clear_rules() {
- raf(() => {
- if (active)
- return;
- managed_styles.forEach((info) => {
- const { ownerNode } = info.stylesheet;
- if (ownerNode)
- detach(ownerNode);
- });
- managed_styles.clear();
- });
- }
- var current_component;
- function set_current_component(component) {
- current_component = component;
- }
- function get_current_component() {
- if (!current_component)
- throw new Error("Function called outside component initialization");
- return current_component;
- }
- function onDestroy(fn) {
- get_current_component().$$.on_destroy.push(fn);
- }
- function bubble(component, event) {
- const callbacks = component.$$.callbacks[event.type];
- if (callbacks) {
- callbacks.slice().forEach((fn) => fn.call(this, event));
- }
- }
- var dirty_components = [];
- var binding_callbacks = [];
- var render_callbacks = [];
- var flush_callbacks = [];
- var resolved_promise = Promise.resolve();
- var update_scheduled = false;
- function schedule_update() {
- if (!update_scheduled) {
- update_scheduled = true;
- resolved_promise.then(flush);
- }
- }
- function add_render_callback(fn) {
- render_callbacks.push(fn);
- }
- var seen_callbacks = new Set();
- var flushidx = 0;
- function flush() {
- const saved_component = current_component;
- do {
- while (flushidx < dirty_components.length) {
- const component = dirty_components[flushidx];
- flushidx++;
- set_current_component(component);
- update(component.$$);
- }
- set_current_component(null);
- dirty_components.length = 0;
- flushidx = 0;
- while (binding_callbacks.length)
- binding_callbacks.pop()();
- for (let i = 0; i < render_callbacks.length; i += 1) {
- const callback = render_callbacks[i];
- if (!seen_callbacks.has(callback)) {
- seen_callbacks.add(callback);
- callback();
- }
- }
- render_callbacks.length = 0;
- } while (dirty_components.length);
- while (flush_callbacks.length) {
- flush_callbacks.pop()();
- }
- update_scheduled = false;
- seen_callbacks.clear();
- set_current_component(saved_component);
- }
- function update($$) {
- if ($$.fragment !== null) {
- $$.update();
- run_all($$.before_update);
- const dirty = $$.dirty;
- $$.dirty = [-1];
- $$.fragment && $$.fragment.p($$.ctx, dirty);
- $$.after_update.forEach(add_render_callback);
- }
- }
- var promise;
- function wait() {
- if (!promise) {
- promise = Promise.resolve();
- promise.then(() => {
- promise = null;
- });
- }
- return promise;
- }
- function dispatch(node, direction, kind) {
- node.dispatchEvent(custom_event(`${direction ? "intro" : "outro"}${kind}`));
- }
- var outroing = new Set();
- var outros;
- function group_outros() {
- outros = {
- r: 0,
- c: [],
- p: outros
- };
- }
- function check_outros() {
- if (!outros.r) {
- run_all(outros.c);
- }
- outros = outros.p;
- }
- function transition_in(block, local) {
- if (block && block.i) {
- outroing.delete(block);
- block.i(local);
- }
- }
- function transition_out(block, local, detach2, callback) {
- if (block && block.o) {
- if (outroing.has(block))
- return;
- outroing.add(block);
- outros.c.push(() => {
- outroing.delete(block);
- if (callback) {
- if (detach2)
- block.d(1);
- callback();
- }
- });
- block.o(local);
- } else if (callback) {
- callback();
- }
- }
- var null_transition = { duration: 0 };
- function create_bidirectional_transition(node, fn, params, intro) {
- let config = fn(node, params);
- let t = intro ? 0 : 1;
- let running_program = null;
- let pending_program = null;
- let animation_name = null;
- function clear_animation() {
- if (animation_name)
- delete_rule(node, animation_name);
- }
- function init3(program, duration) {
- const d = program.b - t;
- duration *= Math.abs(d);
- return {
- a: t,
- b: program.b,
- d,
- duration,
- start: program.start,
- end: program.start + duration,
- group: program.group
- };
- }
- function go(b) {
- const { delay: delay2 = 0, duration = 300, easing = identity, tick: tick2 = noop, css } = config || null_transition;
- const program = {
- start: now() + delay2,
- b
- };
- if (!b) {
- program.group = outros;
- outros.r += 1;
- }
- if (running_program || pending_program) {
- pending_program = program;
- } else {
- if (css) {
- clear_animation();
- animation_name = create_rule(node, t, b, duration, delay2, easing, css);
- }
- if (b)
- tick2(0, 1);
- running_program = init3(program, duration);
- add_render_callback(() => dispatch(node, b, "start"));
- loop((now2) => {
- if (pending_program && now2 > pending_program.start) {
- running_program = init3(pending_program, duration);
- pending_program = null;
- dispatch(node, running_program.b, "start");
- if (css) {
- clear_animation();
- animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);
- }
- }
- if (running_program) {
- if (now2 >= running_program.end) {
- tick2(t = running_program.b, 1 - t);
- dispatch(node, running_program.b, "end");
- if (!pending_program) {
- if (running_program.b) {
- clear_animation();
- } else {
- if (!--running_program.group.r)
- run_all(running_program.group.c);
- }
- }
- running_program = null;
- } else if (now2 >= running_program.start) {
- const p = now2 - running_program.start;
- t = running_program.a + running_program.d * easing(p / running_program.duration);
- tick2(t, 1 - t);
- }
- }
- return !!(running_program || pending_program);
- });
- }
- }
- return {
- run(b) {
- if (is_function(config)) {
- wait().then(() => {
- config = config();
- go(b);
- });
- } else {
- go(b);
- }
- },
- end() {
- clear_animation();
- running_program = pending_program = null;
- }
- };
- }
- var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : global;
- var boolean_attributes = new Set([
- "allowfullscreen",
- "allowpaymentrequest",
- "async",
- "autofocus",
- "autoplay",
- "checked",
- "controls",
- "default",
- "defer",
- "disabled",
- "formnovalidate",
- "hidden",
- "inert",
- "ismap",
- "itemscope",
- "loop",
- "multiple",
- "muted",
- "nomodule",
- "novalidate",
- "open",
- "playsinline",
- "readonly",
- "required",
- "reversed",
- "selected"
- ]);
- function create_component(block) {
- block && block.c();
- }
- function mount_component(component, target, anchor, customElement) {
- const { fragment, after_update } = component.$$;
- fragment && fragment.m(target, anchor);
- if (!customElement) {
- add_render_callback(() => {
- const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);
- if (component.$$.on_destroy) {
- component.$$.on_destroy.push(...new_on_destroy);
- } else {
- run_all(new_on_destroy);
- }
- component.$$.on_mount = [];
- });
- }
- after_update.forEach(add_render_callback);
- }
- function destroy_component(component, detaching) {
- const $$ = component.$$;
- if ($$.fragment !== null) {
- run_all($$.on_destroy);
- $$.fragment && $$.fragment.d(detaching);
- $$.on_destroy = $$.fragment = null;
- $$.ctx = [];
- }
- }
- function make_dirty(component, i) {
- if (component.$$.dirty[0] === -1) {
- dirty_components.push(component);
- schedule_update();
- component.$$.dirty.fill(0);
- }
- component.$$.dirty[i / 31 | 0] |= 1 << i % 31;
- }
- function init2(component, options, instance6, create_fragment6, not_equal, props, append_styles2, dirty = [-1]) {
- const parent_component = current_component;
- set_current_component(component);
- const $$ = component.$$ = {
- fragment: null,
- ctx: [],
- props,
- update: noop,
- not_equal,
- bound: blank_object(),
- on_mount: [],
- on_destroy: [],
- on_disconnect: [],
- before_update: [],
- after_update: [],
- context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
- callbacks: blank_object(),
- dirty,
- skip_bound: false,
- root: options.target || parent_component.$$.root
- };
- append_styles2 && append_styles2($$.root);
- let ready = false;
- $$.ctx = instance6 ? instance6(component, options.props || {}, (i, ret, ...rest) => {
- const value = rest.length ? rest[0] : ret;
- if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
- if (!$$.skip_bound && $$.bound[i])
- $$.bound[i](value);
- if (ready)
- make_dirty(component, i);
- }
- return ret;
- }) : [];
- $$.update();
- ready = true;
- run_all($$.before_update);
- $$.fragment = create_fragment6 ? create_fragment6($$.ctx) : false;
- if (options.target) {
- if (options.hydrate) {
- start_hydrating();
- const nodes = children(options.target);
- $$.fragment && $$.fragment.l(nodes);
- nodes.forEach(detach);
- } else {
- $$.fragment && $$.fragment.c();
- }
- if (options.intro)
- transition_in(component.$$.fragment);
- mount_component(component, options.target, options.anchor, options.customElement);
- end_hydrating();
- flush();
- }
- set_current_component(parent_component);
- }
- var SvelteElement;
- if (typeof HTMLElement === "function") {
- SvelteElement = class extends HTMLElement {
- constructor() {
- super();
- this.attachShadow({ mode: "open" });
- }
- connectedCallback() {
- const { on_mount } = this.$$;
- this.$$.on_disconnect = on_mount.map(run).filter(is_function);
- for (const key2 in this.$$.slotted) {
- this.appendChild(this.$$.slotted[key2]);
- }
- }
- attributeChangedCallback(attr2, _oldValue, newValue) {
- this[attr2] = newValue;
- }
- disconnectedCallback() {
- run_all(this.$$.on_disconnect);
- }
- $destroy() {
- destroy_component(this, 1);
- this.$destroy = noop;
- }
- $on(type, callback) {
- if (!is_function(callback)) {
- return noop;
- }
- const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
- callbacks.push(callback);
- return () => {
- const index2 = callbacks.indexOf(callback);
- if (index2 !== -1)
- callbacks.splice(index2, 1);
- };
- }
- $set($$props) {
- if (this.$$set && !is_empty($$props)) {
- this.$$.skip_bound = true;
- this.$$set($$props);
- this.$$.skip_bound = false;
- }
- }
- };
- }
- var SvelteComponent = class {
- $destroy() {
- destroy_component(this, 1);
- this.$destroy = noop;
- }
- $on(type, callback) {
- if (!is_function(callback)) {
- return noop;
- }
- const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
- callbacks.push(callback);
- return () => {
- const index2 = callbacks.indexOf(callback);
- if (index2 !== -1)
- callbacks.splice(index2, 1);
- };
- }
- $set($$props) {
- if (this.$$set && !is_empty($$props)) {
- this.$$.skip_bound = true;
- this.$$set($$props);
- this.$$.skip_bound = false;
- }
- }
- };
- // src/ui/sidebar/gitView.svelte
- var import_obsidian21 = __toModule(require("obsidian"));
- // node_modules/svelte/index.mjs
- init_polyfill_buffer();
- // node_modules/svelte/transition/index.mjs
- init_polyfill_buffer();
- // node_modules/svelte/easing/index.mjs
- init_polyfill_buffer();
- function cubicOut(t) {
- const f = t - 1;
- return f * f * f + 1;
- }
- // node_modules/svelte/transition/index.mjs
- function slide(node, { delay: delay2 = 0, duration = 400, easing = cubicOut } = {}) {
- const style = getComputedStyle(node);
- const opacity = +style.opacity;
- const height = parseFloat(style.height);
- const padding_top = parseFloat(style.paddingTop);
- const padding_bottom = parseFloat(style.paddingBottom);
- const margin_top = parseFloat(style.marginTop);
- const margin_bottom = parseFloat(style.marginBottom);
- const border_top_width = parseFloat(style.borderTopWidth);
- const border_bottom_width = parseFloat(style.borderBottomWidth);
- return {
- delay: delay2,
- duration,
- easing,
- css: (t) => `overflow: hidden;opacity: ${Math.min(t * 20, 1) * opacity};height: ${t * height}px;padding-top: ${t * padding_top}px;padding-bottom: ${t * padding_bottom}px;margin-top: ${t * margin_top}px;margin-bottom: ${t * margin_bottom}px;border-top-width: ${t * border_top_width}px;border-bottom-width: ${t * border_bottom_width}px;`
- };
- }
- // src/ui/modals/discardModal.ts
- init_polyfill_buffer();
- var import_obsidian16 = __toModule(require("obsidian"));
- var DiscardModal = class extends import_obsidian16.Modal {
- constructor(app2, deletion, filename) {
- super(app2);
- this.deletion = deletion;
- this.filename = filename;
- this.resolve = null;
- }
- myOpen() {
- this.open();
- return new Promise((resolve) => {
- this.resolve = resolve;
- });
- }
- onOpen() {
- const { contentEl, titleEl } = this;
- titleEl.setText(`${this.deletion ? "Delete" : "Discard"} this file?`);
- contentEl.createEl("h4").setText(`Do you really want to ${this.deletion ? "delete" : "discard the changes of"} "${this.filename}"`);
- const div = contentEl.createDiv();
- div.addClass("obsidian-git-center");
- div.createEl("button", {
- text: "Cancel",
- attr: {
- style: "margin: 0 10px"
- }
- }).addEventListener("click", () => {
- if (this.resolve)
- this.resolve(false);
- return this.close();
- });
- div.createEl("button", {
- cls: "mod-cta",
- text: "Confirm",
- attr: {
- style: "margin: 0 10px"
- }
- }).addEventListener("click", async () => {
- if (this.resolve)
- this.resolve(true);
- this.close();
- });
- }
- onClose() {
- const { contentEl } = this;
- contentEl.empty();
- }
- };
- // src/ui/sidebar/components/fileComponent.svelte
- init_polyfill_buffer();
- var import_obsidian18 = __toModule(require("obsidian"));
- // node_modules/obsidian-community-lib/dist/index.js
- init_polyfill_buffer();
- // node_modules/obsidian-community-lib/dist/utils.js
- init_polyfill_buffer();
- var feather = __toModule(require_feather());
- var import_obsidian17 = __toModule(require("obsidian"));
- function hoverPreview(event, view, to) {
- const targetEl = event.target;
- app.workspace.trigger("hover-link", {
- event,
- source: view.getViewType(),
- hoverParent: view,
- targetEl,
- linktext: to
- });
- }
- // src/ui/sidebar/components/fileComponent.svelte
- function add_css(target) {
- append_styles(target, "svelte-wn85nz", "main.svelte-wn85nz .nav-file-title-content.svelte-wn85nz.svelte-wn85nz{display:flex;align-items:center}main.svelte-wn85nz .tools.svelte-wn85nz.svelte-wn85nz{display:flex;margin-left:auto}main.svelte-wn85nz .tools .type.svelte-wn85nz.svelte-wn85nz{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}main.svelte-wn85nz .tools .type[data-type=M].svelte-wn85nz.svelte-wn85nz{color:orange}main.svelte-wn85nz .tools .type[data-type=D].svelte-wn85nz.svelte-wn85nz{color:red}main.svelte-wn85nz .tools .buttons.svelte-wn85nz.svelte-wn85nz{display:flex}main.svelte-wn85nz .tools .buttons.svelte-wn85nz>.svelte-wn85nz{padding:0 0;height:auto}");
- }
- function create_if_block(ctx) {
- let div;
- let mounted;
- let dispose;
- return {
- c() {
- div = element("div");
- attr(div, "data-icon", "go-to-file");
- attr(div, "aria-label", "Open File");
- attr(div, "class", "clickable-icon svelte-wn85nz");
- },
- m(target, anchor) {
- insert(target, div, anchor);
- ctx[11](div);
- if (!mounted) {
- dispose = [
- listen(div, "auxclick", ctx[5]),
- listen(div, "click", ctx[5])
- ];
- mounted = true;
- }
- },
- p: noop,
- d(detaching) {
- if (detaching)
- detach(div);
- ctx[11](null);
- mounted = false;
- run_all(dispose);
- }
- };
- }
- function create_fragment(ctx) {
- var _a2;
- let main;
- let div6;
- let div0;
- let t0_value = ((_a2 = ctx[0].vault_path.split("/").last()) == null ? void 0 : _a2.replace(".md", "")) + "";
- let t0;
- let t1;
- let div5;
- let div3;
- let show_if = ctx[1].app.vault.getAbstractFileByPath(ctx[0].vault_path);
- let t2;
- let div1;
- let t3;
- let div2;
- let t4;
- let div4;
- let t5_value = ctx[0].working_dir + "";
- let t5;
- let div4_data_type_value;
- let div6_aria_label_value;
- let mounted;
- let dispose;
- let if_block = show_if && create_if_block(ctx);
- return {
- c() {
- main = element("main");
- div6 = element("div");
- div0 = element("div");
- t0 = text(t0_value);
- t1 = space();
- div5 = element("div");
- div3 = element("div");
- if (if_block)
- if_block.c();
- t2 = space();
- div1 = element("div");
- t3 = space();
- div2 = element("div");
- t4 = space();
- div4 = element("div");
- t5 = text(t5_value);
- attr(div0, "class", "nav-file-title-content svelte-wn85nz");
- attr(div1, "data-icon", "undo");
- attr(div1, "aria-label", "Discard");
- attr(div1, "class", "clickable-icon svelte-wn85nz");
- attr(div2, "data-icon", "plus");
- attr(div2, "aria-label", "Stage");
- attr(div2, "class", "clickable-icon svelte-wn85nz");
- attr(div3, "class", "buttons svelte-wn85nz");
- attr(div4, "class", "type svelte-wn85nz");
- attr(div4, "data-type", div4_data_type_value = ctx[0].working_dir);
- attr(div5, "class", "tools svelte-wn85nz");
- attr(div6, "class", "nav-file-title");
- attr(div6, "aria-label-position", ctx[3]);
- attr(div6, "aria-label", div6_aria_label_value = ctx[0].vault_path.split("/").last() != ctx[0].vault_path ? ctx[0].vault_path : "");
- attr(main, "class", "nav-file svelte-wn85nz");
- },
- m(target, anchor) {
- insert(target, main, anchor);
- append2(main, div6);
- append2(div6, div0);
- append2(div0, t0);
- append2(div6, t1);
- append2(div6, div5);
- append2(div5, div3);
- if (if_block)
- if_block.m(div3, null);
- append2(div3, t2);
- append2(div3, div1);
- ctx[12](div1);
- append2(div3, t3);
- append2(div3, div2);
- ctx[13](div2);
- append2(div5, t4);
- append2(div5, div4);
- append2(div4, t5);
- if (!mounted) {
- dispose = [
- listen(div0, "click", ctx[7]),
- listen(div0, "auxclick", ctx[7]),
- listen(div1, "click", ctx[8]),
- listen(div2, "click", ctx[6]),
- listen(div6, "click", self2(ctx[7])),
- listen(div6, "auxclick", self2(ctx[7])),
- listen(main, "mouseover", ctx[4]),
- listen(main, "click", self2(ctx[7])),
- listen(main, "focus", ctx[10])
- ];
- mounted = true;
- }
- },
- p(ctx2, [dirty]) {
- var _a3;
- if (dirty & 1 && t0_value !== (t0_value = ((_a3 = ctx2[0].vault_path.split("/").last()) == null ? void 0 : _a3.replace(".md", "")) + ""))
- set_data(t0, t0_value);
- if (dirty & 3)
- show_if = ctx2[1].app.vault.getAbstractFileByPath(ctx2[0].vault_path);
- if (show_if) {
- if (if_block) {
- if_block.p(ctx2, dirty);
- } else {
- if_block = create_if_block(ctx2);
- if_block.c();
- if_block.m(div3, t2);
- }
- } else if (if_block) {
- if_block.d(1);
- if_block = null;
- }
- if (dirty & 1 && t5_value !== (t5_value = ctx2[0].working_dir + ""))
- set_data(t5, t5_value);
- if (dirty & 1 && div4_data_type_value !== (div4_data_type_value = ctx2[0].working_dir)) {
- attr(div4, "data-type", div4_data_type_value);
- }
- if (dirty & 8) {
- attr(div6, "aria-label-position", ctx2[3]);
- }
- if (dirty & 1 && div6_aria_label_value !== (div6_aria_label_value = ctx2[0].vault_path.split("/").last() != ctx2[0].vault_path ? ctx2[0].vault_path : "")) {
- attr(div6, "aria-label", div6_aria_label_value);
- }
- },
- i: noop,
- o: noop,
- d(detaching) {
- if (detaching)
- detach(main);
- if (if_block)
- if_block.d();
- ctx[12](null);
- ctx[13](null);
- mounted = false;
- run_all(dispose);
- }
- };
- }
- function instance($$self, $$props, $$invalidate) {
- let side;
- let { change } = $$props;
- let { view } = $$props;
- let { manager } = $$props;
- let buttons = [];
- window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian18.setIcon)(b, b.getAttr("data-icon"))), 0);
- function hover(event) {
- if (!change.path.startsWith(view.app.vault.configDir) || !change.path.startsWith(".")) {
- hoverPreview(event, view, change.vault_path.split("/").last().replace(".md", ""));
- }
- }
- function open(event) {
- var _a2;
- const file = view.app.vault.getAbstractFileByPath(change.vault_path);
- console.log(event);
- if (file instanceof import_obsidian18.TFile) {
- (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file);
- }
- }
- function stage() {
- manager.stage(change.path, false).finally(() => {
- dispatchEvent(new CustomEvent("git-refresh"));
- });
- }
- function showDiff(event) {
- var _a2;
- (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.setViewState({
- type: DIFF_VIEW_CONFIG.type,
- active: true,
- state: { file: change.path, staged: false }
- });
- }
- function discard() {
- const deleteFile = change.working_dir == "U";
- new DiscardModal(view.app, deleteFile, change.vault_path).myOpen().then((shouldDiscard) => {
- if (shouldDiscard === true) {
- if (deleteFile) {
- view.app.vault.adapter.remove(change.vault_path).finally(() => {
- dispatchEvent(new CustomEvent("git-refresh"));
- });
- } else {
- manager.discard(change.path).finally(() => {
- dispatchEvent(new CustomEvent("git-refresh"));
- });
- }
- }
- });
- }
- function focus_handler(event) {
- bubble.call(this, $$self, event);
- }
- function div_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[1] = $$value;
- $$invalidate(2, buttons);
- });
- }
- function div1_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[0] = $$value;
- $$invalidate(2, buttons);
- });
- }
- function div2_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[2] = $$value;
- $$invalidate(2, buttons);
- });
- }
- $$self.$$set = ($$props2) => {
- if ("change" in $$props2)
- $$invalidate(0, change = $$props2.change);
- if ("view" in $$props2)
- $$invalidate(1, view = $$props2.view);
- if ("manager" in $$props2)
- $$invalidate(9, manager = $$props2.manager);
- };
- $$self.$$.update = () => {
- if ($$self.$$.dirty & 2) {
- $:
- $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left");
- }
- };
- return [
- change,
- view,
- buttons,
- side,
- hover,
- open,
- stage,
- showDiff,
- discard,
- manager,
- focus_handler,
- div_binding,
- div1_binding,
- div2_binding
- ];
- }
- var FileComponent = class extends SvelteComponent {
- constructor(options) {
- super();
- init2(this, options, instance, create_fragment, safe_not_equal, { change: 0, view: 1, manager: 9 }, add_css);
- }
- };
- var fileComponent_default = FileComponent;
- // src/ui/sidebar/components/pulledFileComponent.svelte
- init_polyfill_buffer();
- var import_obsidian19 = __toModule(require("obsidian"));
- function add_css2(target) {
- append_styles(target, "svelte-sajhpp", "main.svelte-sajhpp .nav-file-title-content.svelte-sajhpp{display:flex;align-items:center}main.svelte-sajhpp .tools.svelte-sajhpp{display:flex;margin-left:auto}main.svelte-sajhpp .tools .type.svelte-sajhpp{padding-left:var(--size-2-1);display:flex;align-items:center;justify-content:center}main.svelte-sajhpp .tools .type[data-type=M].svelte-sajhpp{color:orange}main.svelte-sajhpp .tools .type[data-type=D].svelte-sajhpp{color:red}");
- }
- function create_fragment2(ctx) {
- var _a2;
- let main;
- let div2;
- let div0;
- let t0_value = ((_a2 = ctx[0].vault_path.split("/").last()) == null ? void 0 : _a2.replace(".md", "")) + "";
- let t0;
- let t1;
- let div1;
- let span;
- let t2_value = ctx[0].working_dir + "";
- let t2;
- let span_data_type_value;
- let div2_aria_label_value;
- let mounted;
- let dispose;
- return {
- c() {
- main = element("main");
- div2 = element("div");
- div0 = element("div");
- t0 = text(t0_value);
- t1 = space();
- div1 = element("div");
- span = element("span");
- t2 = text(t2_value);
- attr(div0, "class", "nav-file-title-content svelte-sajhpp");
- attr(span, "class", "type svelte-sajhpp");
- attr(span, "data-type", span_data_type_value = ctx[0].working_dir);
- attr(div1, "class", "tools svelte-sajhpp");
- attr(div2, "class", "nav-file-title");
- attr(div2, "aria-label-position", ctx[1]);
- attr(div2, "aria-label", div2_aria_label_value = ctx[0].vault_path.split("/").last() != ctx[0].vault_path ? ctx[0].vault_path : "");
- attr(main, "class", "nav-file svelte-sajhpp");
- },
- m(target, anchor) {
- insert(target, main, anchor);
- append2(main, div2);
- append2(div2, div0);
- append2(div0, t0);
- append2(div2, t1);
- append2(div2, div1);
- append2(div1, span);
- append2(span, t2);
- if (!mounted) {
- dispose = [
- listen(main, "mouseover", ctx[2]),
- listen(main, "click", ctx[3]),
- listen(main, "focus", ctx[5])
- ];
- mounted = true;
- }
- },
- p(ctx2, [dirty]) {
- var _a3;
- if (dirty & 1 && t0_value !== (t0_value = ((_a3 = ctx2[0].vault_path.split("/").last()) == null ? void 0 : _a3.replace(".md", "")) + ""))
- set_data(t0, t0_value);
- if (dirty & 1 && t2_value !== (t2_value = ctx2[0].working_dir + ""))
- set_data(t2, t2_value);
- if (dirty & 1 && span_data_type_value !== (span_data_type_value = ctx2[0].working_dir)) {
- attr(span, "data-type", span_data_type_value);
- }
- if (dirty & 2) {
- attr(div2, "aria-label-position", ctx2[1]);
- }
- if (dirty & 1 && div2_aria_label_value !== (div2_aria_label_value = ctx2[0].vault_path.split("/").last() != ctx2[0].vault_path ? ctx2[0].vault_path : "")) {
- attr(div2, "aria-label", div2_aria_label_value);
- }
- },
- i: noop,
- o: noop,
- d(detaching) {
- if (detaching)
- detach(main);
- mounted = false;
- run_all(dispose);
- }
- };
- }
- function instance2($$self, $$props, $$invalidate) {
- let side;
- let { change } = $$props;
- let { view } = $$props;
- function hover(event) {
- if (!change.path.startsWith(view.app.vault.configDir) || !change.path.startsWith(".")) {
- hoverPreview(event, view, change.vault_path.split("/").last().replace(".md", ""));
- }
- }
- function open(event) {
- var _a2;
- const file = view.app.vault.getAbstractFileByPath(change.vault_path);
- if (file instanceof import_obsidian19.TFile) {
- (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file);
- }
- }
- function focus_handler(event) {
- bubble.call(this, $$self, event);
- }
- $$self.$$set = ($$props2) => {
- if ("change" in $$props2)
- $$invalidate(0, change = $$props2.change);
- if ("view" in $$props2)
- $$invalidate(4, view = $$props2.view);
- };
- $$self.$$.update = () => {
- if ($$self.$$.dirty & 16) {
- $:
- $$invalidate(1, side = view.leaf.getRoot().side == "left" ? "right" : "left");
- }
- };
- return [change, side, hover, open, view, focus_handler];
- }
- var PulledFileComponent = class extends SvelteComponent {
- constructor(options) {
- super();
- init2(this, options, instance2, create_fragment2, safe_not_equal, { change: 0, view: 4 }, add_css2);
- }
- };
- var pulledFileComponent_default = PulledFileComponent;
- // src/ui/sidebar/components/stagedFileComponent.svelte
- init_polyfill_buffer();
- var import_obsidian20 = __toModule(require("obsidian"));
- function add_css3(target) {
- append_styles(target, "svelte-wn85nz", "main.svelte-wn85nz .nav-file-title-content.svelte-wn85nz.svelte-wn85nz{display:flex;align-items:center}main.svelte-wn85nz .tools.svelte-wn85nz.svelte-wn85nz{display:flex;margin-left:auto}main.svelte-wn85nz .tools .type.svelte-wn85nz.svelte-wn85nz{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}main.svelte-wn85nz .tools .type[data-type=M].svelte-wn85nz.svelte-wn85nz{color:orange}main.svelte-wn85nz .tools .type[data-type=D].svelte-wn85nz.svelte-wn85nz{color:red}main.svelte-wn85nz .tools .buttons.svelte-wn85nz.svelte-wn85nz{display:flex}main.svelte-wn85nz .tools .buttons.svelte-wn85nz>.svelte-wn85nz{padding:0 0;height:auto}");
- }
- function create_if_block2(ctx) {
- let div;
- let mounted;
- let dispose;
- return {
- c() {
- div = element("div");
- attr(div, "data-icon", "go-to-file");
- attr(div, "aria-label", "Open File");
- attr(div, "class", "clickable-icon svelte-wn85nz");
- },
- m(target, anchor) {
- insert(target, div, anchor);
- ctx[11](div);
- if (!mounted) {
- dispose = listen(div, "click", ctx[6]);
- mounted = true;
- }
- },
- p: noop,
- d(detaching) {
- if (detaching)
- detach(div);
- ctx[11](null);
- mounted = false;
- dispose();
- }
- };
- }
- function create_fragment3(ctx) {
- var _a2;
- let main;
- let div5;
- let div0;
- let t0_value = ((_a2 = ctx[3].split("/").last()) == null ? void 0 : _a2.replace(".md", "")) + "";
- let t0;
- let t1;
- let div4;
- let div2;
- let show_if = ctx[1].app.vault.getAbstractFileByPath(ctx[3]);
- let t2;
- let div1;
- let t3;
- let div3;
- let t4_value = ctx[0].index + "";
- let t4;
- let div3_data_type_value;
- let div5_aria_label_value;
- let mounted;
- let dispose;
- let if_block = show_if && create_if_block2(ctx);
- return {
- c() {
- main = element("main");
- div5 = element("div");
- div0 = element("div");
- t0 = text(t0_value);
- t1 = space();
- div4 = element("div");
- div2 = element("div");
- if (if_block)
- if_block.c();
- t2 = space();
- div1 = element("div");
- t3 = space();
- div3 = element("div");
- t4 = text(t4_value);
- attr(div0, "class", "nav-file-title-content svelte-wn85nz");
- attr(div1, "data-icon", "minus");
- attr(div1, "aria-label", "Unstage");
- attr(div1, "class", "clickable-icon svelte-wn85nz");
- attr(div2, "class", "buttons svelte-wn85nz");
- attr(div3, "class", "type svelte-wn85nz");
- attr(div3, "data-type", div3_data_type_value = ctx[0].index);
- attr(div4, "class", "tools svelte-wn85nz");
- attr(div5, "class", "nav-file-title");
- attr(div5, "aria-label-position", ctx[4]);
- attr(div5, "aria-label", div5_aria_label_value = ctx[3].split("/").last() != ctx[3] ? ctx[3] : "");
- attr(main, "class", "nav-file svelte-wn85nz");
- },
- m(target, anchor) {
- insert(target, main, anchor);
- append2(main, div5);
- append2(div5, div0);
- append2(div0, t0);
- append2(div5, t1);
- append2(div5, div4);
- append2(div4, div2);
- if (if_block)
- if_block.m(div2, null);
- append2(div2, t2);
- append2(div2, div1);
- ctx[12](div1);
- append2(div4, t3);
- append2(div4, div3);
- append2(div3, t4);
- if (!mounted) {
- dispose = [
- listen(div0, "click", ctx[7]),
- listen(div0, "auxclick", ctx[7]),
- listen(div1, "click", ctx[8]),
- listen(div5, "click", self2(ctx[7])),
- listen(main, "mouseover", ctx[5]),
- listen(main, "focus", ctx[10]),
- listen(main, "click", self2(ctx[7]))
- ];
- mounted = true;
- }
- },
- p(ctx2, [dirty]) {
- var _a3;
- if (dirty & 8 && t0_value !== (t0_value = ((_a3 = ctx2[3].split("/").last()) == null ? void 0 : _a3.replace(".md", "")) + ""))
- set_data(t0, t0_value);
- if (dirty & 10)
- show_if = ctx2[1].app.vault.getAbstractFileByPath(ctx2[3]);
- if (show_if) {
- if (if_block) {
- if_block.p(ctx2, dirty);
- } else {
- if_block = create_if_block2(ctx2);
- if_block.c();
- if_block.m(div2, t2);
- }
- } else if (if_block) {
- if_block.d(1);
- if_block = null;
- }
- if (dirty & 1 && t4_value !== (t4_value = ctx2[0].index + ""))
- set_data(t4, t4_value);
- if (dirty & 1 && div3_data_type_value !== (div3_data_type_value = ctx2[0].index)) {
- attr(div3, "data-type", div3_data_type_value);
- }
- if (dirty & 16) {
- attr(div5, "aria-label-position", ctx2[4]);
- }
- if (dirty & 8 && div5_aria_label_value !== (div5_aria_label_value = ctx2[3].split("/").last() != ctx2[3] ? ctx2[3] : "")) {
- attr(div5, "aria-label", div5_aria_label_value);
- }
- },
- i: noop,
- o: noop,
- d(detaching) {
- if (detaching)
- detach(main);
- if (if_block)
- if_block.d();
- ctx[12](null);
- mounted = false;
- run_all(dispose);
- }
- };
- }
- function instance3($$self, $$props, $$invalidate) {
- let formattedPath;
- let side;
- let { change } = $$props;
- let { view } = $$props;
- let { manager } = $$props;
- let buttons = [];
- window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian20.setIcon)(b, b.getAttr("data-icon"), 16)), 0);
- function hover(event) {
- if (!change.path.startsWith(view.app.vault.configDir) || !change.path.startsWith(".")) {
- hoverPreview(event, view, formattedPath.split("/").last().replace(".md", ""));
- }
- }
- function open(event) {
- var _a2;
- const file = view.app.vault.getAbstractFileByPath(change.vault_path);
- if (file instanceof import_obsidian20.TFile) {
- (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file);
- }
- }
- function showDiff(event) {
- var _a2;
- (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.setViewState({
- type: DIFF_VIEW_CONFIG.type,
- active: true,
- state: { file: change.path, staged: true }
- });
- }
- function unstage() {
- manager.unstage(change.path, false).finally(() => {
- dispatchEvent(new CustomEvent("git-refresh"));
- });
- }
- function focus_handler(event) {
- bubble.call(this, $$self, event);
- }
- function div_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[1] = $$value;
- $$invalidate(2, buttons);
- });
- }
- function div1_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[0] = $$value;
- $$invalidate(2, buttons);
- });
- }
- $$self.$$set = ($$props2) => {
- if ("change" in $$props2)
- $$invalidate(0, change = $$props2.change);
- if ("view" in $$props2)
- $$invalidate(1, view = $$props2.view);
- if ("manager" in $$props2)
- $$invalidate(9, manager = $$props2.manager);
- };
- $$self.$$.update = () => {
- if ($$self.$$.dirty & 1) {
- $:
- $$invalidate(3, formattedPath = change.vault_path);
- }
- if ($$self.$$.dirty & 2) {
- $:
- $$invalidate(4, side = view.leaf.getRoot().side == "left" ? "right" : "left");
- }
- };
- return [
- change,
- view,
- buttons,
- formattedPath,
- side,
- hover,
- open,
- showDiff,
- unstage,
- manager,
- focus_handler,
- div_binding,
- div1_binding
- ];
- }
- var StagedFileComponent = class extends SvelteComponent {
- constructor(options) {
- super();
- init2(this, options, instance3, create_fragment3, safe_not_equal, { change: 0, view: 1, manager: 9 }, add_css3);
- }
- };
- var stagedFileComponent_default = StagedFileComponent;
- // src/ui/sidebar/components/treeComponent.svelte
- init_polyfill_buffer();
- function add_css4(target) {
- append_styles(target, "svelte-148wteu", "main.svelte-148wteu .nav-folder-title-content.svelte-148wteu.svelte-148wteu{display:flex;align-items:center}main.svelte-148wteu .tools.svelte-148wteu.svelte-148wteu{display:flex;margin-left:auto}main.svelte-148wteu .tools .buttons.svelte-148wteu.svelte-148wteu{display:flex}main.svelte-148wteu .tools .buttons.svelte-148wteu>.svelte-148wteu{padding:0 0;height:auto}");
- }
- function get_each_context(ctx, list, i) {
- const child_ctx = ctx.slice();
- child_ctx[17] = list[i];
- return child_ctx;
- }
- function create_else_block(ctx) {
- let div7;
- let div6;
- let div0;
- let t0;
- let div1;
- let t1;
- let div2;
- let t2_value = ctx[17].title + "";
- let t2;
- let t3;
- let div5;
- let div4;
- let t4;
- let div3;
- let div6_aria_label_value;
- let t5;
- let t6;
- let current;
- let mounted;
- let dispose;
- function click_handler() {
- return ctx[11](ctx[17]);
- }
- function click_handler_1() {
- return ctx[12](ctx[17]);
- }
- function select_block_type_2(ctx2, dirty) {
- if (ctx2[3] == FileType.staged)
- return create_if_block_5;
- return create_else_block_1;
- }
- let current_block_type = select_block_type_2(ctx, -1);
- let if_block0 = current_block_type(ctx);
- function click_handler_5() {
- return ctx[16](ctx[17]);
- }
- let if_block1 = !ctx[5][ctx[17].title] && create_if_block_4(ctx);
- return {
- c() {
- div7 = element("div");
- div6 = element("div");
- div0 = element("div");
- t0 = space();
- div1 = element("div");
- div1.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon right-triangle"><path d="M3 8L12 17L21 8"></path></svg>`;
- t1 = space();
- div2 = element("div");
- t2 = text(t2_value);
- t3 = space();
- div5 = element("div");
- div4 = element("div");
- if_block0.c();
- t4 = space();
- div3 = element("div");
- t5 = space();
- if (if_block1)
- if_block1.c();
- t6 = space();
- attr(div0, "data-icon", "folder");
- set_style(div0, "padding-right", "5px");
- set_style(div0, "display", "flex");
- attr(div1, "class", "nav-folder-collapse-indicator collapse-icon");
- attr(div2, "class", "nav-folder-title-content svelte-148wteu");
- set_style(div3, "width", "11px");
- attr(div3, "class", "svelte-148wteu");
- attr(div4, "class", "buttons svelte-148wteu");
- attr(div5, "class", "tools svelte-148wteu");
- attr(div6, "class", "nav-folder-title");
- attr(div6, "aria-label-position", ctx[6]);
- attr(div6, "aria-label", div6_aria_label_value = ctx[17].vaultPath.split("/").last() != ctx[17].vaultPath ? ctx[17].vaultPath : "");
- attr(div7, "class", "nav-folder");
- toggle_class(div7, "is-collapsed", ctx[5][ctx[17].title]);
- },
- m(target, anchor) {
- insert(target, div7, anchor);
- append2(div7, div6);
- append2(div6, div0);
- append2(div6, t0);
- append2(div6, div1);
- append2(div6, t1);
- append2(div6, div2);
- append2(div2, t2);
- append2(div6, t3);
- append2(div6, div5);
- append2(div5, div4);
- if_block0.m(div4, null);
- append2(div4, t4);
- append2(div4, div3);
- append2(div7, t5);
- if (if_block1)
- if_block1.m(div7, null);
- append2(div7, t6);
- current = true;
- if (!mounted) {
- dispose = [
- listen(div1, "click", click_handler),
- listen(div2, "click", click_handler_1),
- listen(div6, "click", self2(click_handler_5))
- ];
- mounted = true;
- }
- },
- p(new_ctx, dirty) {
- ctx = new_ctx;
- if ((!current || dirty & 1) && t2_value !== (t2_value = ctx[17].title + ""))
- set_data(t2, t2_value);
- if (current_block_type === (current_block_type = select_block_type_2(ctx, dirty)) && if_block0) {
- if_block0.p(ctx, dirty);
- } else {
- if_block0.d(1);
- if_block0 = current_block_type(ctx);
- if (if_block0) {
- if_block0.c();
- if_block0.m(div4, t4);
- }
- }
- if (!current || dirty & 64) {
- attr(div6, "aria-label-position", ctx[6]);
- }
- if (!current || dirty & 1 && div6_aria_label_value !== (div6_aria_label_value = ctx[17].vaultPath.split("/").last() != ctx[17].vaultPath ? ctx[17].vaultPath : "")) {
- attr(div6, "aria-label", div6_aria_label_value);
- }
- if (!ctx[5][ctx[17].title]) {
- if (if_block1) {
- if_block1.p(ctx, dirty);
- if (dirty & 33) {
- transition_in(if_block1, 1);
- }
- } else {
- if_block1 = create_if_block_4(ctx);
- if_block1.c();
- transition_in(if_block1, 1);
- if_block1.m(div7, t6);
- }
- } else if (if_block1) {
- group_outros();
- transition_out(if_block1, 1, 1, () => {
- if_block1 = null;
- });
- check_outros();
- }
- if (!current || dirty & 33) {
- toggle_class(div7, "is-collapsed", ctx[5][ctx[17].title]);
- }
- },
- i(local) {
- if (current)
- return;
- transition_in(if_block1);
- current = true;
- },
- o(local) {
- transition_out(if_block1);
- current = false;
- },
- d(detaching) {
- if (detaching)
- detach(div7);
- if_block0.d();
- if (if_block1)
- if_block1.d();
- mounted = false;
- run_all(dispose);
- }
- };
- }
- function create_if_block3(ctx) {
- let div;
- let current_block_type_index;
- let if_block;
- let t;
- let current;
- const if_block_creators = [create_if_block_1, create_if_block_2, create_if_block_3];
- const if_blocks = [];
- function select_block_type_1(ctx2, dirty) {
- if (ctx2[3] == FileType.staged)
- return 0;
- if (ctx2[3] == FileType.changed)
- return 1;
- if (ctx2[3] == FileType.pulled)
- return 2;
- return -1;
- }
- if (~(current_block_type_index = select_block_type_1(ctx, -1))) {
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
- }
- return {
- c() {
- div = element("div");
- if (if_block)
- if_block.c();
- t = space();
- },
- m(target, anchor) {
- insert(target, div, anchor);
- if (~current_block_type_index) {
- if_blocks[current_block_type_index].m(div, null);
- }
- append2(div, t);
- current = true;
- },
- p(ctx2, dirty) {
- let previous_block_index = current_block_type_index;
- current_block_type_index = select_block_type_1(ctx2, dirty);
- if (current_block_type_index === previous_block_index) {
- if (~current_block_type_index) {
- if_blocks[current_block_type_index].p(ctx2, dirty);
- }
- } else {
- if (if_block) {
- group_outros();
- transition_out(if_blocks[previous_block_index], 1, 1, () => {
- if_blocks[previous_block_index] = null;
- });
- check_outros();
- }
- if (~current_block_type_index) {
- if_block = if_blocks[current_block_type_index];
- if (!if_block) {
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
- if_block.c();
- } else {
- if_block.p(ctx2, dirty);
- }
- transition_in(if_block, 1);
- if_block.m(div, t);
- } else {
- if_block = null;
- }
- }
- },
- i(local) {
- if (current)
- return;
- transition_in(if_block);
- current = true;
- },
- o(local) {
- transition_out(if_block);
- current = false;
- },
- d(detaching) {
- if (detaching)
- detach(div);
- if (~current_block_type_index) {
- if_blocks[current_block_type_index].d();
- }
- }
- };
- }
- function create_else_block_1(ctx) {
- let div0;
- let t;
- let div1;
- let mounted;
- let dispose;
- function click_handler_3() {
- return ctx[14](ctx[17]);
- }
- function click_handler_4() {
- return ctx[15](ctx[17]);
- }
- return {
- c() {
- div0 = element("div");
- div0.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-undo"><path d="M3 7v6h6"></path><path d="M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13"></path></svg>`;
- t = space();
- div1 = element("div");
- div1.innerHTML = `<svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-plus"><line x1="9" y1="4" x2="9" y2="14"></line><line x1="4" y1="9" x2="14" y2="9"></line></svg>`;
- attr(div0, "data-icon", "undo");
- attr(div0, "aria-label", "Discard");
- attr(div0, "class", "clickable-icon svelte-148wteu");
- attr(div1, "data-icon", "plus");
- attr(div1, "aria-label", "Stage");
- attr(div1, "class", "clickable-icon svelte-148wteu");
- },
- m(target, anchor) {
- insert(target, div0, anchor);
- insert(target, t, anchor);
- insert(target, div1, anchor);
- if (!mounted) {
- dispose = [
- listen(div0, "click", click_handler_3),
- listen(div1, "click", click_handler_4)
- ];
- mounted = true;
- }
- },
- p(new_ctx, dirty) {
- ctx = new_ctx;
- },
- d(detaching) {
- if (detaching)
- detach(div0);
- if (detaching)
- detach(t);
- if (detaching)
- detach(div1);
- mounted = false;
- run_all(dispose);
- }
- };
- }
- function create_if_block_5(ctx) {
- let div;
- let mounted;
- let dispose;
- function click_handler_2() {
- return ctx[13](ctx[17]);
- }
- return {
- c() {
- div = element("div");
- div.innerHTML = `<svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-minus"><line x1="4" y1="9" x2="14" y2="9"></line></svg>`;
- attr(div, "data-icon", "minus");
- attr(div, "aria-label", "Unstage");
- attr(div, "class", "clickable-icon svelte-148wteu");
- },
- m(target, anchor) {
- insert(target, div, anchor);
- if (!mounted) {
- dispose = listen(div, "click", click_handler_2);
- mounted = true;
- }
- },
- p(new_ctx, dirty) {
- ctx = new_ctx;
- },
- d(detaching) {
- if (detaching)
- detach(div);
- mounted = false;
- dispose();
- }
- };
- }
- function create_if_block_4(ctx) {
- let div;
- let treecomponent;
- let div_transition;
- let current;
- treecomponent = new TreeComponent({
- props: {
- hierarchy: ctx[17],
- plugin: ctx[1],
- view: ctx[2],
- fileType: ctx[3]
- }
- });
- return {
- c() {
- div = element("div");
- create_component(treecomponent.$$.fragment);
- attr(div, "class", "nav-folder-children");
- },
- m(target, anchor) {
- insert(target, div, anchor);
- mount_component(treecomponent, div, null);
- current = true;
- },
- p(ctx2, dirty) {
- const treecomponent_changes = {};
- if (dirty & 1)
- treecomponent_changes.hierarchy = ctx2[17];
- if (dirty & 2)
- treecomponent_changes.plugin = ctx2[1];
- if (dirty & 4)
- treecomponent_changes.view = ctx2[2];
- if (dirty & 8)
- treecomponent_changes.fileType = ctx2[3];
- treecomponent.$set(treecomponent_changes);
- },
- i(local) {
- if (current)
- return;
- transition_in(treecomponent.$$.fragment, local);
- if (local) {
- add_render_callback(() => {
- if (!div_transition)
- div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true);
- div_transition.run(1);
- });
- }
- current = true;
- },
- o(local) {
- transition_out(treecomponent.$$.fragment, local);
- if (local) {
- if (!div_transition)
- div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false);
- div_transition.run(0);
- }
- current = false;
- },
- d(detaching) {
- if (detaching)
- detach(div);
- destroy_component(treecomponent);
- if (detaching && div_transition)
- div_transition.end();
- }
- };
- }
- function create_if_block_3(ctx) {
- let pulledfilecomponent;
- let current;
- pulledfilecomponent = new pulledFileComponent_default({
- props: {
- change: ctx[17].statusResult,
- view: ctx[2]
- }
- });
- return {
- c() {
- create_component(pulledfilecomponent.$$.fragment);
- },
- m(target, anchor) {
- mount_component(pulledfilecomponent, target, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- const pulledfilecomponent_changes = {};
- if (dirty & 1)
- pulledfilecomponent_changes.change = ctx2[17].statusResult;
- if (dirty & 4)
- pulledfilecomponent_changes.view = ctx2[2];
- pulledfilecomponent.$set(pulledfilecomponent_changes);
- },
- i(local) {
- if (current)
- return;
- transition_in(pulledfilecomponent.$$.fragment, local);
- current = true;
- },
- o(local) {
- transition_out(pulledfilecomponent.$$.fragment, local);
- current = false;
- },
- d(detaching) {
- destroy_component(pulledfilecomponent, detaching);
- }
- };
- }
- function create_if_block_2(ctx) {
- let filecomponent;
- let current;
- filecomponent = new fileComponent_default({
- props: {
- change: ctx[17].statusResult,
- manager: ctx[1].gitManager,
- view: ctx[2]
- }
- });
- return {
- c() {
- create_component(filecomponent.$$.fragment);
- },
- m(target, anchor) {
- mount_component(filecomponent, target, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- const filecomponent_changes = {};
- if (dirty & 1)
- filecomponent_changes.change = ctx2[17].statusResult;
- if (dirty & 2)
- filecomponent_changes.manager = ctx2[1].gitManager;
- if (dirty & 4)
- filecomponent_changes.view = ctx2[2];
- filecomponent.$set(filecomponent_changes);
- },
- i(local) {
- if (current)
- return;
- transition_in(filecomponent.$$.fragment, local);
- current = true;
- },
- o(local) {
- transition_out(filecomponent.$$.fragment, local);
- current = false;
- },
- d(detaching) {
- destroy_component(filecomponent, detaching);
- }
- };
- }
- function create_if_block_1(ctx) {
- let stagedfilecomponent;
- let current;
- stagedfilecomponent = new stagedFileComponent_default({
- props: {
- change: ctx[17].statusResult,
- manager: ctx[1].gitManager,
- view: ctx[2]
- }
- });
- return {
- c() {
- create_component(stagedfilecomponent.$$.fragment);
- },
- m(target, anchor) {
- mount_component(stagedfilecomponent, target, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- const stagedfilecomponent_changes = {};
- if (dirty & 1)
- stagedfilecomponent_changes.change = ctx2[17].statusResult;
- if (dirty & 2)
- stagedfilecomponent_changes.manager = ctx2[1].gitManager;
- if (dirty & 4)
- stagedfilecomponent_changes.view = ctx2[2];
- stagedfilecomponent.$set(stagedfilecomponent_changes);
- },
- i(local) {
- if (current)
- return;
- transition_in(stagedfilecomponent.$$.fragment, local);
- current = true;
- },
- o(local) {
- transition_out(stagedfilecomponent.$$.fragment, local);
- current = false;
- },
- d(detaching) {
- destroy_component(stagedfilecomponent, detaching);
- }
- };
- }
- function create_each_block(ctx) {
- let current_block_type_index;
- let if_block;
- let if_block_anchor;
- let current;
- const if_block_creators = [create_if_block3, create_else_block];
- const if_blocks = [];
- function select_block_type(ctx2, dirty) {
- if (ctx2[17].statusResult)
- return 0;
- return 1;
- }
- current_block_type_index = select_block_type(ctx, -1);
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
- return {
- c() {
- if_block.c();
- if_block_anchor = empty();
- },
- m(target, anchor) {
- if_blocks[current_block_type_index].m(target, anchor);
- insert(target, if_block_anchor, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- let previous_block_index = current_block_type_index;
- current_block_type_index = select_block_type(ctx2, dirty);
- if (current_block_type_index === previous_block_index) {
- if_blocks[current_block_type_index].p(ctx2, dirty);
- } else {
- group_outros();
- transition_out(if_blocks[previous_block_index], 1, 1, () => {
- if_blocks[previous_block_index] = null;
- });
- check_outros();
- if_block = if_blocks[current_block_type_index];
- if (!if_block) {
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
- if_block.c();
- } else {
- if_block.p(ctx2, dirty);
- }
- transition_in(if_block, 1);
- if_block.m(if_block_anchor.parentNode, if_block_anchor);
- }
- },
- i(local) {
- if (current)
- return;
- transition_in(if_block);
- current = true;
- },
- o(local) {
- transition_out(if_block);
- current = false;
- },
- d(detaching) {
- if_blocks[current_block_type_index].d(detaching);
- if (detaching)
- detach(if_block_anchor);
- }
- };
- }
- function create_fragment4(ctx) {
- let main;
- let current;
- let each_value = ctx[0].children;
- let each_blocks = [];
- for (let i = 0; i < each_value.length; i += 1) {
- each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
- }
- const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
- each_blocks[i] = null;
- });
- return {
- c() {
- main = element("main");
- for (let i = 0; i < each_blocks.length; i += 1) {
- each_blocks[i].c();
- }
- attr(main, "class", "svelte-148wteu");
- toggle_class(main, "topLevel", ctx[4]);
- },
- m(target, anchor) {
- insert(target, main, anchor);
- for (let i = 0; i < each_blocks.length; i += 1) {
- each_blocks[i].m(main, null);
- }
- current = true;
- },
- p(ctx2, [dirty]) {
- if (dirty & 2031) {
- each_value = ctx2[0].children;
- let i;
- for (i = 0; i < each_value.length; i += 1) {
- const child_ctx = get_each_context(ctx2, each_value, i);
- if (each_blocks[i]) {
- each_blocks[i].p(child_ctx, dirty);
- transition_in(each_blocks[i], 1);
- } else {
- each_blocks[i] = create_each_block(child_ctx);
- each_blocks[i].c();
- transition_in(each_blocks[i], 1);
- each_blocks[i].m(main, null);
- }
- }
- group_outros();
- for (i = each_value.length; i < each_blocks.length; i += 1) {
- out(i);
- }
- check_outros();
- }
- if (!current || dirty & 16) {
- toggle_class(main, "topLevel", ctx2[4]);
- }
- },
- i(local) {
- if (current)
- return;
- for (let i = 0; i < each_value.length; i += 1) {
- transition_in(each_blocks[i]);
- }
- current = true;
- },
- o(local) {
- each_blocks = each_blocks.filter(Boolean);
- for (let i = 0; i < each_blocks.length; i += 1) {
- transition_out(each_blocks[i]);
- }
- current = false;
- },
- d(detaching) {
- if (detaching)
- detach(main);
- destroy_each(each_blocks, detaching);
- }
- };
- }
- function instance4($$self, $$props, $$invalidate) {
- let side;
- let { hierarchy } = $$props;
- let { plugin } = $$props;
- let { view } = $$props;
- let { fileType } = $$props;
- let { topLevel = false } = $$props;
- const closed = {};
- function stage(path2) {
- plugin.gitManager.stageAll({ dir: path2 }).finally(() => {
- dispatchEvent(new CustomEvent("git-refresh"));
- });
- }
- function unstage(path2) {
- plugin.gitManager.unstageAll({ dir: path2 }).finally(() => {
- dispatchEvent(new CustomEvent("git-refresh"));
- });
- }
- function discard(item) {
- new DiscardModal(view.app, false, item.vaultPath).myOpen().then((shouldDiscard) => {
- if (shouldDiscard === true) {
- plugin.gitManager.discardAll({
- dir: item.path,
- status: plugin.cachedStatus
- }).finally(() => {
- dispatchEvent(new CustomEvent("git-refresh"));
- });
- }
- });
- }
- function fold(item) {
- $$invalidate(5, closed[item.title] = !closed[item.title], closed);
- }
- const click_handler = (entity) => fold(entity);
- const click_handler_1 = (entity) => fold(entity);
- const click_handler_2 = (entity) => unstage(entity.path);
- const click_handler_3 = (entity) => discard(entity);
- const click_handler_4 = (entity) => stage(entity.path);
- const click_handler_5 = (entity) => fold(entity);
- $$self.$$set = ($$props2) => {
- if ("hierarchy" in $$props2)
- $$invalidate(0, hierarchy = $$props2.hierarchy);
- if ("plugin" in $$props2)
- $$invalidate(1, plugin = $$props2.plugin);
- if ("view" in $$props2)
- $$invalidate(2, view = $$props2.view);
- if ("fileType" in $$props2)
- $$invalidate(3, fileType = $$props2.fileType);
- if ("topLevel" in $$props2)
- $$invalidate(4, topLevel = $$props2.topLevel);
- };
- $$self.$$.update = () => {
- if ($$self.$$.dirty & 4) {
- $:
- $$invalidate(6, side = view.leaf.getRoot().side == "left" ? "right" : "left");
- }
- };
- return [
- hierarchy,
- plugin,
- view,
- fileType,
- topLevel,
- closed,
- side,
- stage,
- unstage,
- discard,
- fold,
- click_handler,
- click_handler_1,
- click_handler_2,
- click_handler_3,
- click_handler_4,
- click_handler_5
- ];
- }
- var TreeComponent = class extends SvelteComponent {
- constructor(options) {
- super();
- init2(this, options, instance4, create_fragment4, safe_not_equal, {
- hierarchy: 0,
- plugin: 1,
- view: 2,
- fileType: 3,
- topLevel: 4
- }, add_css4);
- }
- };
- var treeComponent_default = TreeComponent;
- // src/ui/sidebar/gitView.svelte
- function add_css5(target) {
- append_styles(target, "svelte-fnxzfa", `.commit-msg-input.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa{width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field)}.git-commit-msg.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa{position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto}main.svelte-fnxzfa .tools.svelte-fnxzfa.svelte-fnxzfa{display:flex;margin-left:auto}main.svelte-fnxzfa .tools .buttons.svelte-fnxzfa.svelte-fnxzfa{display:flex}main.svelte-fnxzfa .tools .buttons.svelte-fnxzfa>.svelte-fnxzfa{padding:0 0;height:auto}main.svelte-fnxzfa .tools .files-count.svelte-fnxzfa.svelte-fnxzfa{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}.git-commit-msg-clear-button.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa{position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out}.git-commit-msg-clear-button.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa:after{content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,<svg viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6 12C9.31371 12 12 9.31371 12 6C12 2.68629 9.31371 0 6 0C2.68629 0 0 2.68629 0 6C0 9.31371 2.68629 12 6 12ZM3.8705 3.09766L6.00003 5.22718L8.12955 3.09766L8.9024 3.8705L6.77287 6.00003L8.9024 8.12955L8.12955 8.9024L6.00003 6.77287L3.8705 8.9024L3.09766 8.12955L5.22718 6.00003L3.09766 3.8705L3.8705 3.09766Z' fill='currentColor'/></svg>");-webkit-mask-repeat:no-repeat}.tree-item-flair.svelte-fnxzfa.svelte-fnxzfa.svelte-fnxzfa{margin-left:auto;align-items:center}`);
- }
- function get_each_context2(ctx, list, i) {
- const child_ctx = ctx.slice();
- child_ctx[43] = list[i];
- return child_ctx;
- }
- function get_each_context_1(ctx, list, i) {
- const child_ctx = ctx.slice();
- child_ctx[43] = list[i];
- return child_ctx;
- }
- function get_each_context_2(ctx, list, i) {
- const child_ctx = ctx.slice();
- child_ctx[48] = list[i];
- return child_ctx;
- }
- function create_if_block_8(ctx) {
- let div;
- let div_aria_label_value;
- let mounted;
- let dispose;
- return {
- c() {
- div = element("div");
- attr(div, "class", "git-commit-msg-clear-button svelte-fnxzfa");
- attr(div, "aria-label", div_aria_label_value = "Clear");
- },
- m(target, anchor) {
- insert(target, div, anchor);
- if (!mounted) {
- dispose = listen(div, "click", ctx[31]);
- mounted = true;
- }
- },
- p: noop,
- d(detaching) {
- if (detaching)
- detach(div);
- mounted = false;
- dispose();
- }
- };
- }
- function create_if_block4(ctx) {
- let div18;
- let div17;
- let div7;
- let div6;
- let div0;
- let t0;
- let div1;
- let t2;
- let div5;
- let div3;
- let div2;
- let t3;
- let div4;
- let t4_value = ctx[6].staged.length + "";
- let t4;
- let t5;
- let t6;
- let div16;
- let div15;
- let div8;
- let t7;
- let div9;
- let t9;
- let div14;
- let div12;
- let div10;
- let t10;
- let div11;
- let t11;
- let div13;
- let t12_value = ctx[6].changed.length + "";
- let t12;
- let t13;
- let t14;
- let current;
- let mounted;
- let dispose;
- let if_block0 = ctx[13] && create_if_block_6(ctx);
- let if_block1 = ctx[12] && create_if_block_42(ctx);
- let if_block2 = ctx[7].length > 0 && create_if_block_12(ctx);
- return {
- c() {
- div18 = element("div");
- div17 = element("div");
- div7 = element("div");
- div6 = element("div");
- div0 = element("div");
- div0.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon right-triangle"><path d="M3 8L12 17L21 8"></path></svg>`;
- t0 = space();
- div1 = element("div");
- div1.textContent = "Staged Changes";
- t2 = space();
- div5 = element("div");
- div3 = element("div");
- div2 = element("div");
- div2.innerHTML = `<svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-minus"><line x1="4" y1="9" x2="14" y2="9"></line></svg>`;
- t3 = space();
- div4 = element("div");
- t4 = text(t4_value);
- t5 = space();
- if (if_block0)
- if_block0.c();
- t6 = space();
- div16 = element("div");
- div15 = element("div");
- div8 = element("div");
- div8.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon right-triangle"><path d="M3 8L12 17L21 8"></path></svg>`;
- t7 = space();
- div9 = element("div");
- div9.textContent = "Changes";
- t9 = space();
- div14 = element("div");
- div12 = element("div");
- div10 = element("div");
- div10.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-undo"><path d="M3 7v6h6"></path><path d="M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13"></path></svg>`;
- t10 = space();
- div11 = element("div");
- div11.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-plus"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>`;
- t11 = space();
- div13 = element("div");
- t12 = text(t12_value);
- t13 = space();
- if (if_block1)
- if_block1.c();
- t14 = space();
- if (if_block2)
- if_block2.c();
- attr(div0, "class", "nav-folder-collapse-indicator collapse-icon");
- attr(div1, "class", "nav-folder-title-content");
- attr(div2, "data-icon", "minus");
- attr(div2, "aria-label", "Unstage");
- attr(div2, "class", "clickable-icon svelte-fnxzfa");
- attr(div3, "class", "buttons svelte-fnxzfa");
- attr(div4, "class", "files-count svelte-fnxzfa");
- attr(div5, "class", "tools svelte-fnxzfa");
- attr(div6, "class", "nav-folder-title");
- attr(div7, "class", "staged nav-folder");
- toggle_class(div7, "is-collapsed", !ctx[13]);
- attr(div8, "class", "nav-folder-collapse-indicator collapse-icon");
- attr(div9, "class", "nav-folder-title-content");
- attr(div10, "data-icon", "undo");
- attr(div10, "aria-label", "Discard");
- attr(div10, "class", "clickable-icon svelte-fnxzfa");
- attr(div11, "data-icon", "plus");
- attr(div11, "aria-label", "Stage");
- attr(div11, "class", "clickable-icon svelte-fnxzfa");
- attr(div12, "class", "buttons svelte-fnxzfa");
- attr(div13, "class", "files-count svelte-fnxzfa");
- attr(div14, "class", "tools svelte-fnxzfa");
- attr(div15, "class", "nav-folder-title");
- attr(div16, "class", "changes nav-folder");
- toggle_class(div16, "is-collapsed", !ctx[12]);
- attr(div17, "class", "nav-folder-children");
- attr(div18, "class", "nav-folder mod-root");
- },
- m(target, anchor) {
- insert(target, div18, anchor);
- append2(div18, div17);
- append2(div17, div7);
- append2(div7, div6);
- append2(div6, div0);
- append2(div6, t0);
- append2(div6, div1);
- append2(div6, t2);
- append2(div6, div5);
- append2(div5, div3);
- append2(div3, div2);
- ctx[34](div2);
- append2(div5, t3);
- append2(div5, div4);
- append2(div4, t4);
- append2(div7, t5);
- if (if_block0)
- if_block0.m(div7, null);
- append2(div17, t6);
- append2(div17, div16);
- append2(div16, div15);
- append2(div15, div8);
- append2(div15, t7);
- append2(div15, div9);
- append2(div15, t9);
- append2(div15, div14);
- append2(div14, div12);
- append2(div12, div10);
- append2(div12, t10);
- append2(div12, div11);
- ctx[39](div11);
- append2(div14, t11);
- append2(div14, div13);
- append2(div13, t12);
- append2(div16, t13);
- if (if_block1)
- if_block1.m(div16, null);
- append2(div17, t14);
- if (if_block2)
- if_block2.m(div17, null);
- current = true;
- if (!mounted) {
- dispose = [
- listen(div0, "click", ctx[32]),
- listen(div1, "click", ctx[33]),
- listen(div2, "click", ctx[18]),
- listen(div6, "click", self2(ctx[35])),
- listen(div8, "click", ctx[36]),
- listen(div9, "click", ctx[37]),
- listen(div10, "click", ctx[38]),
- listen(div11, "click", ctx[17]),
- listen(div15, "click", self2(ctx[40]))
- ];
- mounted = true;
- }
- },
- p(ctx2, dirty) {
- if ((!current || dirty[0] & 64) && t4_value !== (t4_value = ctx2[6].staged.length + ""))
- set_data(t4, t4_value);
- if (ctx2[13]) {
- if (if_block0) {
- if_block0.p(ctx2, dirty);
- if (dirty[0] & 8192) {
- transition_in(if_block0, 1);
- }
- } else {
- if_block0 = create_if_block_6(ctx2);
- if_block0.c();
- transition_in(if_block0, 1);
- if_block0.m(div7, null);
- }
- } else if (if_block0) {
- group_outros();
- transition_out(if_block0, 1, 1, () => {
- if_block0 = null;
- });
- check_outros();
- }
- if (!current || dirty[0] & 8192) {
- toggle_class(div7, "is-collapsed", !ctx2[13]);
- }
- if ((!current || dirty[0] & 64) && t12_value !== (t12_value = ctx2[6].changed.length + ""))
- set_data(t12, t12_value);
- if (ctx2[12]) {
- if (if_block1) {
- if_block1.p(ctx2, dirty);
- if (dirty[0] & 4096) {
- transition_in(if_block1, 1);
- }
- } else {
- if_block1 = create_if_block_42(ctx2);
- if_block1.c();
- transition_in(if_block1, 1);
- if_block1.m(div16, null);
- }
- } else if (if_block1) {
- group_outros();
- transition_out(if_block1, 1, 1, () => {
- if_block1 = null;
- });
- check_outros();
- }
- if (!current || dirty[0] & 4096) {
- toggle_class(div16, "is-collapsed", !ctx2[12]);
- }
- if (ctx2[7].length > 0) {
- if (if_block2) {
- if_block2.p(ctx2, dirty);
- if (dirty[0] & 128) {
- transition_in(if_block2, 1);
- }
- } else {
- if_block2 = create_if_block_12(ctx2);
- if_block2.c();
- transition_in(if_block2, 1);
- if_block2.m(div17, null);
- }
- } else if (if_block2) {
- group_outros();
- transition_out(if_block2, 1, 1, () => {
- if_block2 = null;
- });
- check_outros();
- }
- },
- i(local) {
- if (current)
- return;
- transition_in(if_block0);
- transition_in(if_block1);
- transition_in(if_block2);
- current = true;
- },
- o(local) {
- transition_out(if_block0);
- transition_out(if_block1);
- transition_out(if_block2);
- current = false;
- },
- d(detaching) {
- if (detaching)
- detach(div18);
- ctx[34](null);
- if (if_block0)
- if_block0.d();
- ctx[39](null);
- if (if_block1)
- if_block1.d();
- if (if_block2)
- if_block2.d();
- mounted = false;
- run_all(dispose);
- }
- };
- }
- function create_if_block_6(ctx) {
- let div;
- let current_block_type_index;
- let if_block;
- let div_transition;
- let current;
- const if_block_creators = [create_if_block_7, create_else_block_2];
- const if_blocks = [];
- function select_block_type(ctx2, dirty) {
- if (ctx2[3])
- return 0;
- return 1;
- }
- current_block_type_index = select_block_type(ctx, [-1, -1]);
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
- return {
- c() {
- div = element("div");
- if_block.c();
- attr(div, "class", "nav-folder-children");
- },
- m(target, anchor) {
- insert(target, div, anchor);
- if_blocks[current_block_type_index].m(div, null);
- current = true;
- },
- p(ctx2, dirty) {
- let previous_block_index = current_block_type_index;
- current_block_type_index = select_block_type(ctx2, dirty);
- if (current_block_type_index === previous_block_index) {
- if_blocks[current_block_type_index].p(ctx2, dirty);
- } else {
- group_outros();
- transition_out(if_blocks[previous_block_index], 1, 1, () => {
- if_blocks[previous_block_index] = null;
- });
- check_outros();
- if_block = if_blocks[current_block_type_index];
- if (!if_block) {
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
- if_block.c();
- } else {
- if_block.p(ctx2, dirty);
- }
- transition_in(if_block, 1);
- if_block.m(div, null);
- }
- },
- i(local) {
- if (current)
- return;
- transition_in(if_block);
- if (local) {
- add_render_callback(() => {
- if (!div_transition)
- div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true);
- div_transition.run(1);
- });
- }
- current = true;
- },
- o(local) {
- transition_out(if_block);
- if (local) {
- if (!div_transition)
- div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false);
- div_transition.run(0);
- }
- current = false;
- },
- d(detaching) {
- if (detaching)
- detach(div);
- if_blocks[current_block_type_index].d();
- if (detaching && div_transition)
- div_transition.end();
- }
- };
- }
- function create_else_block_2(ctx) {
- let each_1_anchor;
- let current;
- let each_value_2 = ctx[6].staged;
- let each_blocks = [];
- for (let i = 0; i < each_value_2.length; i += 1) {
- each_blocks[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i));
- }
- const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
- each_blocks[i] = null;
- });
- return {
- c() {
- for (let i = 0; i < each_blocks.length; i += 1) {
- each_blocks[i].c();
- }
- each_1_anchor = empty();
- },
- m(target, anchor) {
- for (let i = 0; i < each_blocks.length; i += 1) {
- each_blocks[i].m(target, anchor);
- }
- insert(target, each_1_anchor, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- if (dirty[0] & 67) {
- each_value_2 = ctx2[6].staged;
- let i;
- for (i = 0; i < each_value_2.length; i += 1) {
- const child_ctx = get_each_context_2(ctx2, each_value_2, i);
- if (each_blocks[i]) {
- each_blocks[i].p(child_ctx, dirty);
- transition_in(each_blocks[i], 1);
- } else {
- each_blocks[i] = create_each_block_2(child_ctx);
- each_blocks[i].c();
- transition_in(each_blocks[i], 1);
- each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
- }
- }
- group_outros();
- for (i = each_value_2.length; i < each_blocks.length; i += 1) {
- out(i);
- }
- check_outros();
- }
- },
- i(local) {
- if (current)
- return;
- for (let i = 0; i < each_value_2.length; i += 1) {
- transition_in(each_blocks[i]);
- }
- current = true;
- },
- o(local) {
- each_blocks = each_blocks.filter(Boolean);
- for (let i = 0; i < each_blocks.length; i += 1) {
- transition_out(each_blocks[i]);
- }
- current = false;
- },
- d(detaching) {
- destroy_each(each_blocks, detaching);
- if (detaching)
- detach(each_1_anchor);
- }
- };
- }
- function create_if_block_7(ctx) {
- let treecomponent;
- let current;
- treecomponent = new treeComponent_default({
- props: {
- hierarchy: ctx[10],
- plugin: ctx[0],
- view: ctx[1],
- fileType: FileType.staged,
- topLevel: true
- }
- });
- return {
- c() {
- create_component(treecomponent.$$.fragment);
- },
- m(target, anchor) {
- mount_component(treecomponent, target, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- const treecomponent_changes = {};
- if (dirty[0] & 1024)
- treecomponent_changes.hierarchy = ctx2[10];
- if (dirty[0] & 1)
- treecomponent_changes.plugin = ctx2[0];
- if (dirty[0] & 2)
- treecomponent_changes.view = ctx2[1];
- treecomponent.$set(treecomponent_changes);
- },
- i(local) {
- if (current)
- return;
- transition_in(treecomponent.$$.fragment, local);
- current = true;
- },
- o(local) {
- transition_out(treecomponent.$$.fragment, local);
- current = false;
- },
- d(detaching) {
- destroy_component(treecomponent, detaching);
- }
- };
- }
- function create_each_block_2(ctx) {
- let stagedfilecomponent;
- let current;
- stagedfilecomponent = new stagedFileComponent_default({
- props: {
- change: ctx[48],
- view: ctx[1],
- manager: ctx[0].gitManager
- }
- });
- return {
- c() {
- create_component(stagedfilecomponent.$$.fragment);
- },
- m(target, anchor) {
- mount_component(stagedfilecomponent, target, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- const stagedfilecomponent_changes = {};
- if (dirty[0] & 64)
- stagedfilecomponent_changes.change = ctx2[48];
- if (dirty[0] & 2)
- stagedfilecomponent_changes.view = ctx2[1];
- if (dirty[0] & 1)
- stagedfilecomponent_changes.manager = ctx2[0].gitManager;
- stagedfilecomponent.$set(stagedfilecomponent_changes);
- },
- i(local) {
- if (current)
- return;
- transition_in(stagedfilecomponent.$$.fragment, local);
- current = true;
- },
- o(local) {
- transition_out(stagedfilecomponent.$$.fragment, local);
- current = false;
- },
- d(detaching) {
- destroy_component(stagedfilecomponent, detaching);
- }
- };
- }
- function create_if_block_42(ctx) {
- let div;
- let current_block_type_index;
- let if_block;
- let div_transition;
- let current;
- const if_block_creators = [create_if_block_52, create_else_block_12];
- const if_blocks = [];
- function select_block_type_1(ctx2, dirty) {
- if (ctx2[3])
- return 0;
- return 1;
- }
- current_block_type_index = select_block_type_1(ctx, [-1, -1]);
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
- return {
- c() {
- div = element("div");
- if_block.c();
- attr(div, "class", "nav-folder-children");
- },
- m(target, anchor) {
- insert(target, div, anchor);
- if_blocks[current_block_type_index].m(div, null);
- current = true;
- },
- p(ctx2, dirty) {
- let previous_block_index = current_block_type_index;
- current_block_type_index = select_block_type_1(ctx2, dirty);
- if (current_block_type_index === previous_block_index) {
- if_blocks[current_block_type_index].p(ctx2, dirty);
- } else {
- group_outros();
- transition_out(if_blocks[previous_block_index], 1, 1, () => {
- if_blocks[previous_block_index] = null;
- });
- check_outros();
- if_block = if_blocks[current_block_type_index];
- if (!if_block) {
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
- if_block.c();
- } else {
- if_block.p(ctx2, dirty);
- }
- transition_in(if_block, 1);
- if_block.m(div, null);
- }
- },
- i(local) {
- if (current)
- return;
- transition_in(if_block);
- if (local) {
- add_render_callback(() => {
- if (!div_transition)
- div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true);
- div_transition.run(1);
- });
- }
- current = true;
- },
- o(local) {
- transition_out(if_block);
- if (local) {
- if (!div_transition)
- div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false);
- div_transition.run(0);
- }
- current = false;
- },
- d(detaching) {
- if (detaching)
- detach(div);
- if_blocks[current_block_type_index].d();
- if (detaching && div_transition)
- div_transition.end();
- }
- };
- }
- function create_else_block_12(ctx) {
- let each_1_anchor;
- let current;
- let each_value_1 = ctx[6].changed;
- let each_blocks = [];
- for (let i = 0; i < each_value_1.length; i += 1) {
- each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
- }
- const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
- each_blocks[i] = null;
- });
- return {
- c() {
- for (let i = 0; i < each_blocks.length; i += 1) {
- each_blocks[i].c();
- }
- each_1_anchor = empty();
- },
- m(target, anchor) {
- for (let i = 0; i < each_blocks.length; i += 1) {
- each_blocks[i].m(target, anchor);
- }
- insert(target, each_1_anchor, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- if (dirty[0] & 67) {
- each_value_1 = ctx2[6].changed;
- let i;
- for (i = 0; i < each_value_1.length; i += 1) {
- const child_ctx = get_each_context_1(ctx2, each_value_1, i);
- if (each_blocks[i]) {
- each_blocks[i].p(child_ctx, dirty);
- transition_in(each_blocks[i], 1);
- } else {
- each_blocks[i] = create_each_block_1(child_ctx);
- each_blocks[i].c();
- transition_in(each_blocks[i], 1);
- each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
- }
- }
- group_outros();
- for (i = each_value_1.length; i < each_blocks.length; i += 1) {
- out(i);
- }
- check_outros();
- }
- },
- i(local) {
- if (current)
- return;
- for (let i = 0; i < each_value_1.length; i += 1) {
- transition_in(each_blocks[i]);
- }
- current = true;
- },
- o(local) {
- each_blocks = each_blocks.filter(Boolean);
- for (let i = 0; i < each_blocks.length; i += 1) {
- transition_out(each_blocks[i]);
- }
- current = false;
- },
- d(detaching) {
- destroy_each(each_blocks, detaching);
- if (detaching)
- detach(each_1_anchor);
- }
- };
- }
- function create_if_block_52(ctx) {
- let treecomponent;
- let current;
- treecomponent = new treeComponent_default({
- props: {
- hierarchy: ctx[9],
- plugin: ctx[0],
- view: ctx[1],
- fileType: FileType.changed,
- topLevel: true
- }
- });
- return {
- c() {
- create_component(treecomponent.$$.fragment);
- },
- m(target, anchor) {
- mount_component(treecomponent, target, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- const treecomponent_changes = {};
- if (dirty[0] & 512)
- treecomponent_changes.hierarchy = ctx2[9];
- if (dirty[0] & 1)
- treecomponent_changes.plugin = ctx2[0];
- if (dirty[0] & 2)
- treecomponent_changes.view = ctx2[1];
- treecomponent.$set(treecomponent_changes);
- },
- i(local) {
- if (current)
- return;
- transition_in(treecomponent.$$.fragment, local);
- current = true;
- },
- o(local) {
- transition_out(treecomponent.$$.fragment, local);
- current = false;
- },
- d(detaching) {
- destroy_component(treecomponent, detaching);
- }
- };
- }
- function create_each_block_1(ctx) {
- let filecomponent;
- let current;
- filecomponent = new fileComponent_default({
- props: {
- change: ctx[43],
- view: ctx[1],
- manager: ctx[0].gitManager
- }
- });
- filecomponent.$on("git-refresh", triggerRefresh);
- return {
- c() {
- create_component(filecomponent.$$.fragment);
- },
- m(target, anchor) {
- mount_component(filecomponent, target, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- const filecomponent_changes = {};
- if (dirty[0] & 64)
- filecomponent_changes.change = ctx2[43];
- if (dirty[0] & 2)
- filecomponent_changes.view = ctx2[1];
- if (dirty[0] & 1)
- filecomponent_changes.manager = ctx2[0].gitManager;
- filecomponent.$set(filecomponent_changes);
- },
- i(local) {
- if (current)
- return;
- transition_in(filecomponent.$$.fragment, local);
- current = true;
- },
- o(local) {
- transition_out(filecomponent.$$.fragment, local);
- current = false;
- },
- d(detaching) {
- destroy_component(filecomponent, detaching);
- }
- };
- }
- function create_if_block_12(ctx) {
- let div3;
- let div2;
- let div0;
- let t0;
- let div1;
- let t2;
- let span;
- let t3_value = ctx[7].length + "";
- let t3;
- let t4;
- let current;
- let mounted;
- let dispose;
- let if_block = ctx[14] && create_if_block_22(ctx);
- return {
- c() {
- div3 = element("div");
- div2 = element("div");
- div0 = element("div");
- div0.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon right-triangle"><path d="M3 8L12 17L21 8"></path></svg>`;
- t0 = space();
- div1 = element("div");
- div1.textContent = "Recently Pulled Files";
- t2 = space();
- span = element("span");
- t3 = text(t3_value);
- t4 = space();
- if (if_block)
- if_block.c();
- attr(div0, "class", "nav-folder-collapse-indicator collapse-icon");
- attr(div1, "class", "nav-folder-title-content");
- attr(span, "class", "tree-item-flair svelte-fnxzfa");
- attr(div2, "class", "nav-folder-title");
- attr(div3, "class", "pulled nav-folder");
- toggle_class(div3, "is-collapsed", !ctx[14]);
- },
- m(target, anchor) {
- insert(target, div3, anchor);
- append2(div3, div2);
- append2(div2, div0);
- append2(div2, t0);
- append2(div2, div1);
- append2(div2, t2);
- append2(div2, span);
- append2(span, t3);
- append2(div3, t4);
- if (if_block)
- if_block.m(div3, null);
- current = true;
- if (!mounted) {
- dispose = listen(div2, "click", ctx[41]);
- mounted = true;
- }
- },
- p(ctx2, dirty) {
- if ((!current || dirty[0] & 128) && t3_value !== (t3_value = ctx2[7].length + ""))
- set_data(t3, t3_value);
- if (ctx2[14]) {
- if (if_block) {
- if_block.p(ctx2, dirty);
- if (dirty[0] & 16384) {
- transition_in(if_block, 1);
- }
- } else {
- if_block = create_if_block_22(ctx2);
- if_block.c();
- transition_in(if_block, 1);
- if_block.m(div3, null);
- }
- } else if (if_block) {
- group_outros();
- transition_out(if_block, 1, 1, () => {
- if_block = null;
- });
- check_outros();
- }
- if (!current || dirty[0] & 16384) {
- toggle_class(div3, "is-collapsed", !ctx2[14]);
- }
- },
- i(local) {
- if (current)
- return;
- transition_in(if_block);
- current = true;
- },
- o(local) {
- transition_out(if_block);
- current = false;
- },
- d(detaching) {
- if (detaching)
- detach(div3);
- if (if_block)
- if_block.d();
- mounted = false;
- dispose();
- }
- };
- }
- function create_if_block_22(ctx) {
- let div;
- let current_block_type_index;
- let if_block;
- let div_transition;
- let current;
- const if_block_creators = [create_if_block_32, create_else_block2];
- const if_blocks = [];
- function select_block_type_2(ctx2, dirty) {
- if (ctx2[3])
- return 0;
- return 1;
- }
- current_block_type_index = select_block_type_2(ctx, [-1, -1]);
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
- return {
- c() {
- div = element("div");
- if_block.c();
- attr(div, "class", "nav-folder-children");
- },
- m(target, anchor) {
- insert(target, div, anchor);
- if_blocks[current_block_type_index].m(div, null);
- current = true;
- },
- p(ctx2, dirty) {
- let previous_block_index = current_block_type_index;
- current_block_type_index = select_block_type_2(ctx2, dirty);
- if (current_block_type_index === previous_block_index) {
- if_blocks[current_block_type_index].p(ctx2, dirty);
- } else {
- group_outros();
- transition_out(if_blocks[previous_block_index], 1, 1, () => {
- if_blocks[previous_block_index] = null;
- });
- check_outros();
- if_block = if_blocks[current_block_type_index];
- if (!if_block) {
- if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
- if_block.c();
- } else {
- if_block.p(ctx2, dirty);
- }
- transition_in(if_block, 1);
- if_block.m(div, null);
- }
- },
- i(local) {
- if (current)
- return;
- transition_in(if_block);
- if (local) {
- add_render_callback(() => {
- if (!div_transition)
- div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true);
- div_transition.run(1);
- });
- }
- current = true;
- },
- o(local) {
- transition_out(if_block);
- if (local) {
- if (!div_transition)
- div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false);
- div_transition.run(0);
- }
- current = false;
- },
- d(detaching) {
- if (detaching)
- detach(div);
- if_blocks[current_block_type_index].d();
- if (detaching && div_transition)
- div_transition.end();
- }
- };
- }
- function create_else_block2(ctx) {
- let each_1_anchor;
- let current;
- let each_value = ctx[7];
- let each_blocks = [];
- for (let i = 0; i < each_value.length; i += 1) {
- each_blocks[i] = create_each_block2(get_each_context2(ctx, each_value, i));
- }
- const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
- each_blocks[i] = null;
- });
- return {
- c() {
- for (let i = 0; i < each_blocks.length; i += 1) {
- each_blocks[i].c();
- }
- each_1_anchor = empty();
- },
- m(target, anchor) {
- for (let i = 0; i < each_blocks.length; i += 1) {
- each_blocks[i].m(target, anchor);
- }
- insert(target, each_1_anchor, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- if (dirty[0] & 130) {
- each_value = ctx2[7];
- let i;
- for (i = 0; i < each_value.length; i += 1) {
- const child_ctx = get_each_context2(ctx2, each_value, i);
- if (each_blocks[i]) {
- each_blocks[i].p(child_ctx, dirty);
- transition_in(each_blocks[i], 1);
- } else {
- each_blocks[i] = create_each_block2(child_ctx);
- each_blocks[i].c();
- transition_in(each_blocks[i], 1);
- each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
- }
- }
- group_outros();
- for (i = each_value.length; i < each_blocks.length; i += 1) {
- out(i);
- }
- check_outros();
- }
- },
- i(local) {
- if (current)
- return;
- for (let i = 0; i < each_value.length; i += 1) {
- transition_in(each_blocks[i]);
- }
- current = true;
- },
- o(local) {
- each_blocks = each_blocks.filter(Boolean);
- for (let i = 0; i < each_blocks.length; i += 1) {
- transition_out(each_blocks[i]);
- }
- current = false;
- },
- d(detaching) {
- destroy_each(each_blocks, detaching);
- if (detaching)
- detach(each_1_anchor);
- }
- };
- }
- function create_if_block_32(ctx) {
- let treecomponent;
- let current;
- treecomponent = new treeComponent_default({
- props: {
- hierarchy: ctx[11],
- plugin: ctx[0],
- view: ctx[1],
- fileType: FileType.pulled,
- topLevel: true
- }
- });
- return {
- c() {
- create_component(treecomponent.$$.fragment);
- },
- m(target, anchor) {
- mount_component(treecomponent, target, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- const treecomponent_changes = {};
- if (dirty[0] & 2048)
- treecomponent_changes.hierarchy = ctx2[11];
- if (dirty[0] & 1)
- treecomponent_changes.plugin = ctx2[0];
- if (dirty[0] & 2)
- treecomponent_changes.view = ctx2[1];
- treecomponent.$set(treecomponent_changes);
- },
- i(local) {
- if (current)
- return;
- transition_in(treecomponent.$$.fragment, local);
- current = true;
- },
- o(local) {
- transition_out(treecomponent.$$.fragment, local);
- current = false;
- },
- d(detaching) {
- destroy_component(treecomponent, detaching);
- }
- };
- }
- function create_each_block2(ctx) {
- let pulledfilecomponent;
- let current;
- pulledfilecomponent = new pulledFileComponent_default({
- props: {
- change: ctx[43],
- view: ctx[1]
- }
- });
- pulledfilecomponent.$on("git-refresh", triggerRefresh);
- return {
- c() {
- create_component(pulledfilecomponent.$$.fragment);
- },
- m(target, anchor) {
- mount_component(pulledfilecomponent, target, anchor);
- current = true;
- },
- p(ctx2, dirty) {
- const pulledfilecomponent_changes = {};
- if (dirty[0] & 128)
- pulledfilecomponent_changes.change = ctx2[43];
- if (dirty[0] & 2)
- pulledfilecomponent_changes.view = ctx2[1];
- pulledfilecomponent.$set(pulledfilecomponent_changes);
- },
- i(local) {
- if (current)
- return;
- transition_in(pulledfilecomponent.$$.fragment, local);
- current = true;
- },
- o(local) {
- transition_out(pulledfilecomponent.$$.fragment, local);
- current = false;
- },
- d(detaching) {
- destroy_component(pulledfilecomponent, detaching);
- }
- };
- }
- function create_fragment5(ctx) {
- let main;
- let div8;
- let div7;
- let div0;
- let t0;
- let div1;
- let t1;
- let div2;
- let t2;
- let div3;
- let t3;
- let div4;
- let t4;
- let div5;
- let t5;
- let div6;
- let t6;
- let div9;
- let textarea;
- let t7;
- let t8;
- let div10;
- let current;
- let mounted;
- let dispose;
- let if_block0 = ctx[2] && create_if_block_8(ctx);
- let if_block1 = ctx[6] && ctx[10] && ctx[9] && create_if_block4(ctx);
- return {
- c() {
- main = element("main");
- div8 = element("div");
- div7 = element("div");
- div0 = element("div");
- t0 = space();
- div1 = element("div");
- t1 = space();
- div2 = element("div");
- t2 = space();
- div3 = element("div");
- t3 = space();
- div4 = element("div");
- t4 = space();
- div5 = element("div");
- t5 = space();
- div6 = element("div");
- t6 = space();
- div9 = element("div");
- textarea = element("textarea");
- t7 = space();
- if (if_block0)
- if_block0.c();
- t8 = space();
- div10 = element("div");
- if (if_block1)
- if_block1.c();
- attr(div0, "id", "commit-btn");
- attr(div0, "data-icon", "check");
- attr(div0, "class", "clickable-icon nav-action-button");
- attr(div0, "aria-label", "Commit");
- attr(div1, "id", "stage-all");
- attr(div1, "class", "clickable-icon nav-action-button");
- attr(div1, "data-icon", "plus-circle");
- attr(div1, "aria-label", "Stage all");
- attr(div2, "id", "unstage-all");
- attr(div2, "class", "clickable-icon nav-action-button");
- attr(div2, "data-icon", "minus-circle");
- attr(div2, "aria-label", "Unstage all");
- attr(div3, "id", "push");
- attr(div3, "class", "clickable-icon nav-action-button");
- attr(div3, "data-icon", "upload");
- attr(div3, "aria-label", "Push");
- attr(div4, "id", "pull");
- attr(div4, "class", "clickable-icon nav-action-button");
- attr(div4, "data-icon", "download");
- attr(div4, "aria-label", "Pull");
- attr(div5, "id", "layoutChange");
- attr(div5, "class", "clickable-icon nav-action-button");
- attr(div5, "aria-label", "Change Layout");
- attr(div6, "id", "refresh");
- attr(div6, "class", "clickable-icon nav-action-button");
- attr(div6, "data-icon", "refresh-cw");
- attr(div6, "aria-label", "Refresh");
- set_style(div6, "margin", "1px");
- toggle_class(div6, "loading", ctx[5]);
- attr(div7, "class", "nav-buttons-container");
- attr(div8, "class", "nav-header");
- attr(textarea, "rows", ctx[15]);
- attr(textarea, "class", "commit-msg-input svelte-fnxzfa");
- attr(textarea, "type", "text");
- attr(textarea, "spellcheck", "true");
- attr(textarea, "placeholder", "Commit Message");
- attr(div9, "class", "git-commit-msg svelte-fnxzfa");
- attr(div10, "class", "nav-files-container");
- set_style(div10, "position", "relative");
- attr(main, "class", "svelte-fnxzfa");
- },
- m(target, anchor) {
- insert(target, main, anchor);
- append2(main, div8);
- append2(div8, div7);
- append2(div7, div0);
- ctx[22](div0);
- append2(div7, t0);
- append2(div7, div1);
- ctx[23](div1);
- append2(div7, t1);
- append2(div7, div2);
- ctx[24](div2);
- append2(div7, t2);
- append2(div7, div3);
- ctx[25](div3);
- append2(div7, t3);
- append2(div7, div4);
- ctx[26](div4);
- append2(div7, t4);
- append2(div7, div5);
- ctx[27](div5);
- append2(div7, t5);
- append2(div7, div6);
- ctx[29](div6);
- append2(main, t6);
- append2(main, div9);
- append2(div9, textarea);
- set_input_value(textarea, ctx[2]);
- append2(div9, t7);
- if (if_block0)
- if_block0.m(div9, null);
- append2(main, t8);
- append2(main, div10);
- if (if_block1)
- if_block1.m(div10, null);
- current = true;
- if (!mounted) {
- dispose = [
- listen(div0, "click", ctx[16]),
- listen(div1, "click", ctx[17]),
- listen(div2, "click", ctx[18]),
- listen(div3, "click", ctx[19]),
- listen(div4, "click", ctx[20]),
- listen(div5, "click", ctx[28]),
- listen(div6, "click", triggerRefresh),
- listen(textarea, "input", ctx[30])
- ];
- mounted = true;
- }
- },
- p(ctx2, dirty) {
- if (!current || dirty[0] & 32) {
- toggle_class(div6, "loading", ctx2[5]);
- }
- if (!current || dirty[0] & 32768) {
- attr(textarea, "rows", ctx2[15]);
- }
- if (dirty[0] & 4) {
- set_input_value(textarea, ctx2[2]);
- }
- if (ctx2[2]) {
- if (if_block0) {
- if_block0.p(ctx2, dirty);
- } else {
- if_block0 = create_if_block_8(ctx2);
- if_block0.c();
- if_block0.m(div9, null);
- }
- } else if (if_block0) {
- if_block0.d(1);
- if_block0 = null;
- }
- if (ctx2[6] && ctx2[10] && ctx2[9]) {
- if (if_block1) {
- if_block1.p(ctx2, dirty);
- if (dirty[0] & 1600) {
- transition_in(if_block1, 1);
- }
- } else {
- if_block1 = create_if_block4(ctx2);
- if_block1.c();
- transition_in(if_block1, 1);
- if_block1.m(div10, null);
- }
- } else if (if_block1) {
- group_outros();
- transition_out(if_block1, 1, 1, () => {
- if_block1 = null;
- });
- check_outros();
- }
- },
- i(local) {
- if (current)
- return;
- transition_in(if_block1);
- current = true;
- },
- o(local) {
- transition_out(if_block1);
- current = false;
- },
- d(detaching) {
- if (detaching)
- detach(main);
- ctx[22](null);
- ctx[23](null);
- ctx[24](null);
- ctx[25](null);
- ctx[26](null);
- ctx[27](null);
- ctx[29](null);
- if (if_block0)
- if_block0.d();
- if (if_block1)
- if_block1.d();
- mounted = false;
- run_all(dispose);
- }
- };
- }
- function triggerRefresh() {
- dispatchEvent(new CustomEvent("git-refresh"));
- }
- function instance5($$self, $$props, $$invalidate) {
- let rows;
- let { plugin } = $$props;
- let { view } = $$props;
- let loading;
- let status2;
- let lastPulledFiles = [];
- let commitMessage = plugin.settings.commitMessage;
- let buttons = [];
- let changeHierarchy;
- let stagedHierarchy;
- let lastPulledFilesHierarchy;
- let changesOpen = true;
- let stagedOpen = true;
- let lastPulledFilesOpen = true;
- let showTree = plugin.settings.treeStructure;
- let layoutBtn;
- addEventListener("git-view-refresh", refresh);
- plugin.app.workspace.onLayoutReady(() => {
- window.setTimeout(() => {
- buttons.forEach((btn) => (0, import_obsidian21.setIcon)(btn, btn.getAttr("data-icon"), 16));
- (0, import_obsidian21.setIcon)(layoutBtn, showTree ? "list" : "folder", 16);
- }, 0);
- });
- onDestroy(() => {
- removeEventListener("git-view-refresh", refresh);
- });
- async function commit2() {
- $$invalidate(5, loading = true);
- if (status2) {
- if (await plugin.hasTooBigFiles(status2.staged)) {
- plugin.setState(PluginState.idle);
- return false;
- }
- plugin.gitManager.commit(commitMessage).then(() => {
- if (commitMessage !== plugin.settings.commitMessage) {
- $$invalidate(2, commitMessage = "");
- }
- }).finally(triggerRefresh);
- }
- }
- async function refresh() {
- if (!plugin.gitReady) {
- $$invalidate(6, status2 = void 0);
- return;
- }
- $$invalidate(6, status2 = plugin.cachedStatus);
- if (plugin.lastPulledFiles && plugin.lastPulledFiles != lastPulledFiles) {
- $$invalidate(7, lastPulledFiles = plugin.lastPulledFiles);
- $$invalidate(11, lastPulledFilesHierarchy = {
- title: "",
- path: "",
- vaultPath: "",
- children: plugin.gitManager.getTreeStructure(lastPulledFiles)
- });
- }
- if (status2) {
- const sort = (a, b) => {
- return a.vault_path.split("/").last().localeCompare(b.vault_path.split("/").last());
- };
- status2.changed.sort(sort);
- status2.staged.sort(sort);
- if (status2.changed.length + status2.staged.length > 500) {
- $$invalidate(6, status2 = void 0);
- if (!plugin.loading) {
- plugin.displayError("Too many changes to display");
- }
- } else {
- $$invalidate(9, changeHierarchy = {
- title: "",
- path: "",
- vaultPath: "",
- children: plugin.gitManager.getTreeStructure(status2.changed)
- });
- $$invalidate(10, stagedHierarchy = {
- title: "",
- path: "",
- vaultPath: "",
- children: plugin.gitManager.getTreeStructure(status2.staged)
- });
- }
- } else {
- $$invalidate(9, changeHierarchy = void 0);
- $$invalidate(10, stagedHierarchy = void 0);
- }
- $$invalidate(5, loading = plugin.loading);
- }
- function stageAll() {
- $$invalidate(5, loading = true);
- plugin.gitManager.stageAll({ status: status2 }).finally(triggerRefresh);
- }
- function unstageAll() {
- $$invalidate(5, loading = true);
- plugin.gitManager.unstageAll({ status: status2 }).finally(triggerRefresh);
- }
- function push2() {
- $$invalidate(5, loading = true);
- plugin.push().finally(triggerRefresh);
- }
- function pull2() {
- $$invalidate(5, loading = true);
- plugin.pullChangesFromRemote().finally(triggerRefresh);
- }
- function discard() {
- new DiscardModal(view.app, false, plugin.gitManager.getVaultPath("/")).myOpen().then((shouldDiscard) => {
- if (shouldDiscard === true) {
- plugin.gitManager.discardAll({ status: plugin.cachedStatus }).finally(() => {
- dispatchEvent(new CustomEvent("git-refresh"));
- });
- }
- });
- }
- function div0_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[0] = $$value;
- $$invalidate(8, buttons);
- });
- }
- function div1_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[1] = $$value;
- $$invalidate(8, buttons);
- });
- }
- function div2_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[2] = $$value;
- $$invalidate(8, buttons);
- });
- }
- function div3_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[3] = $$value;
- $$invalidate(8, buttons);
- });
- }
- function div4_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[4] = $$value;
- $$invalidate(8, buttons);
- });
- }
- function div5_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- layoutBtn = $$value;
- $$invalidate(4, layoutBtn);
- });
- }
- const click_handler = () => {
- $$invalidate(3, showTree = !showTree);
- $$invalidate(0, plugin.settings.treeStructure = showTree, plugin);
- plugin.saveSettings();
- };
- function div6_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[6] = $$value;
- $$invalidate(8, buttons);
- });
- }
- function textarea_input_handler() {
- commitMessage = this.value;
- $$invalidate(2, commitMessage);
- }
- const click_handler_1 = () => $$invalidate(2, commitMessage = "");
- const click_handler_2 = () => $$invalidate(13, stagedOpen = !stagedOpen);
- const click_handler_3 = () => $$invalidate(13, stagedOpen = !stagedOpen);
- function div2_binding_1($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[8] = $$value;
- $$invalidate(8, buttons);
- });
- }
- const click_handler_4 = () => $$invalidate(13, stagedOpen = !stagedOpen);
- const click_handler_5 = () => $$invalidate(12, changesOpen = !changesOpen);
- const click_handler_6 = () => $$invalidate(12, changesOpen = !changesOpen);
- const click_handler_7 = () => discard();
- function div11_binding($$value) {
- binding_callbacks[$$value ? "unshift" : "push"](() => {
- buttons[9] = $$value;
- $$invalidate(8, buttons);
- });
- }
- const click_handler_8 = () => $$invalidate(12, changesOpen = !changesOpen);
- const click_handler_9 = () => $$invalidate(14, lastPulledFilesOpen = !lastPulledFilesOpen);
- $$self.$$set = ($$props2) => {
- if ("plugin" in $$props2)
- $$invalidate(0, plugin = $$props2.plugin);
- if ("view" in $$props2)
- $$invalidate(1, view = $$props2.view);
- };
- $$self.$$.update = () => {
- if ($$self.$$.dirty[0] & 24) {
- $: {
- if (layoutBtn) {
- layoutBtn.empty();
- (0, import_obsidian21.setIcon)(layoutBtn, showTree ? "list" : "folder", 16);
- }
- }
- }
- if ($$self.$$.dirty[0] & 4) {
- $:
- $$invalidate(15, rows = (commitMessage.match(/\n/g) || []).length + 1 || 1);
- }
- };
- return [
- plugin,
- view,
- commitMessage,
- showTree,
- layoutBtn,
- loading,
- status2,
- lastPulledFiles,
- buttons,
- changeHierarchy,
- stagedHierarchy,
- lastPulledFilesHierarchy,
- changesOpen,
- stagedOpen,
- lastPulledFilesOpen,
- rows,
- commit2,
- stageAll,
- unstageAll,
- push2,
- pull2,
- discard,
- div0_binding,
- div1_binding,
- div2_binding,
- div3_binding,
- div4_binding,
- div5_binding,
- click_handler,
- div6_binding,
- textarea_input_handler,
- click_handler_1,
- click_handler_2,
- click_handler_3,
- div2_binding_1,
- click_handler_4,
- click_handler_5,
- click_handler_6,
- click_handler_7,
- div11_binding,
- click_handler_8,
- click_handler_9
- ];
- }
- var GitView = class extends SvelteComponent {
- constructor(options) {
- super();
- init2(this, options, instance5, create_fragment5, safe_not_equal, { plugin: 0, view: 1 }, add_css5, [-1, -1]);
- }
- };
- var gitView_default = GitView;
- // src/ui/sidebar/sidebarView.ts
- var GitView2 = class extends import_obsidian22.ItemView {
- constructor(leaf, plugin) {
- super(leaf);
- this.plugin = plugin;
- this.hoverPopover = null;
- }
- getViewType() {
- return GIT_VIEW_CONFIG.type;
- }
- getDisplayText() {
- return GIT_VIEW_CONFIG.name;
- }
- getIcon() {
- return GIT_VIEW_CONFIG.icon;
- }
- onClose() {
- return super.onClose();
- }
- onOpen() {
- this._view = new gitView_default({
- target: this.contentEl,
- props: {
- plugin: this.plugin,
- view: this
- }
- });
- return super.onOpen();
- }
- };
- // src/ui/statusBar/branchStatusBar.ts
- init_polyfill_buffer();
- var BranchStatusBar = class {
- constructor(statusBarEl, plugin) {
- this.statusBarEl = statusBarEl;
- this.plugin = plugin;
- this.statusBarEl.addClass("mod-clickable");
- this.statusBarEl.onClickEvent((e) => {
- this.plugin.switchBranch();
- });
- }
- async display() {
- if (this.plugin.gitReady) {
- const branchInfo = await this.plugin.gitManager.branchInfo();
- if (branchInfo.current != void 0) {
- this.statusBarEl.setText(branchInfo.current);
- } else {
- this.statusBarEl.empty();
- }
- } else {
- this.statusBarEl.empty();
- }
- }
- };
- // src/main.ts
- var ObsidianGit = class extends import_obsidian23.Plugin {
- constructor() {
- super(...arguments);
- this.gitReady = false;
- this.promiseQueue = new PromiseQueue();
- this.conflictOutputFile = "conflict-files-obsidian-git.md";
- this.offlineMode = false;
- this.loading = false;
- }
- setState(state) {
- var _a2;
- this.state = state;
- (_a2 = this.statusBar) == null ? void 0 : _a2.display();
- }
- async updateCachedStatus() {
- this.cachedStatus = await this.gitManager.status();
- return this.cachedStatus;
- }
- async refresh() {
- const gitView = this.app.workspace.getLeavesOfType(GIT_VIEW_CONFIG.type);
- if (this.settings.changedFilesInStatusBar || gitView.length > 0) {
- this.loading = true;
- dispatchEvent(new CustomEvent("git-view-refresh"));
- await this.updateCachedStatus();
- this.loading = false;
- dispatchEvent(new CustomEvent("git-view-refresh"));
- }
- }
- async onload() {
- console.log("loading " + this.manifest.name + " plugin");
- this.localStorage = new LocalStorageSettings(this);
- this.localStorage.migrate();
- await this.loadSettings();
- this.migrateSettings();
- this.addSettingTab(new ObsidianGitSettingsTab(this.app, this));
- if (!this.localStorage.getPluginDisabled()) {
- this.loadPlugin();
- }
- }
- async loadPlugin() {
- addEventListener("git-refresh", this.refresh.bind(this));
- this.registerView(GIT_VIEW_CONFIG.type, (leaf) => {
- return new GitView2(leaf, this);
- });
- this.registerView(DIFF_VIEW_CONFIG.type, (leaf) => {
- return new DiffView(leaf, this);
- });
- this.app.workspace.registerHoverLinkSource(GIT_VIEW_CONFIG.type, {
- display: "Git View",
- defaultMod: true
- });
- this.setRefreshDebouncer();
- this.addCommand({
- id: "edit-gitignore",
- name: "Edit .gitignore",
- callback: async () => {
- const path2 = this.gitManager.getVaultPath(".gitignore");
- if (!await this.app.vault.adapter.exists(path2)) {
- this.app.vault.adapter.write(path2, "");
- }
- const content = await this.app.vault.adapter.read(path2);
- const modal = new IgnoreModal(this.app, content);
- const res = await modal.open();
- if (res !== void 0) {
- await this.app.vault.adapter.write(path2, res);
- this.refresh();
- }
- }
- });
- this.addCommand({
- id: "open-git-view",
- name: "Open source control view",
- callback: async () => {
- const leafs = this.app.workspace.getLeavesOfType(GIT_VIEW_CONFIG.type);
- let leaf;
- if (leafs.length === 0) {
- leaf = this.app.workspace.getRightLeaf(false);
- await leaf.setViewState({
- type: GIT_VIEW_CONFIG.type
- });
- } else {
- leaf = leafs.first();
- }
- this.app.workspace.revealLeaf(leaf);
- dispatchEvent(new CustomEvent("git-refresh"));
- }
- });
- this.addCommand({
- id: "open-diff-view",
- name: "Open diff view",
- checkCallback: (checking) => {
- var _a2;
- const file = this.app.workspace.getActiveFile();
- if (checking) {
- return file !== null;
- } else {
- (_a2 = getNewLeaf()) == null ? void 0 : _a2.setViewState({ type: DIFF_VIEW_CONFIG.type, state: { staged: false, file: file.path } });
- }
- }
- });
- this.addCommand({
- id: "view-file-on-github",
- name: "Open file on GitHub",
- editorCallback: (editor, { file }) => openLineInGitHub(editor, file, this.gitManager)
- });
- this.addCommand({
- id: "view-history-on-github",
- name: "Open file history on GitHub",
- editorCallback: (_, { file }) => openHistoryInGitHub(file, this.gitManager)
- });
- this.addCommand({
- id: "pull",
- name: "Pull",
- callback: () => this.promiseQueue.addTask(() => this.pullChangesFromRemote())
- });
- this.addCommand({
- id: "add-to-gitignore",
- name: "Add file to gitignore",
- checkCallback: (checking) => {
- const file = app.workspace.getActiveFile();
- if (checking) {
- return file !== null;
- } else {
- app.vault.adapter.append(this.gitManager.getVaultPath(".gitignore"), "\n" + this.gitManager.getPath(file.path, true)).then(() => {
- this.refresh();
- });
- }
- }
- });
- this.addCommand({
- id: "push",
- name: "Create backup",
- callback: () => this.promiseQueue.addTask(() => this.createBackup(false))
- });
- this.addCommand({
- id: "backup-and-close",
- name: "Create backup and close",
- callback: () => this.promiseQueue.addTask(async () => {
- await this.createBackup(false);
- window.close();
- })
- });
- this.addCommand({
- id: "commit-push-specified-message",
- name: "Create backup with specific message",
- callback: () => this.promiseQueue.addTask(() => this.createBackup(false, true))
- });
- this.addCommand({
- id: "commit",
- name: "Commit all changes",
- callback: () => this.promiseQueue.addTask(() => this.commit(false))
- });
- this.addCommand({
- id: "commit-specified-message",
- name: "Commit all changes with specific message",
- callback: () => this.promiseQueue.addTask(() => this.commit(false, true))
- });
- this.addCommand({
- id: "commit-staged",
- name: "Commit staged",
- callback: () => this.promiseQueue.addTask(() => this.commit(false, false, true))
- });
- this.addCommand({
- id: "commit-staged-specified-message",
- name: "Commit staged with specific message",
- callback: () => this.promiseQueue.addTask(() => this.commit(false, true, true))
- });
- this.addCommand({
- id: "push2",
- name: "Push",
- callback: () => this.promiseQueue.addTask(() => this.push())
- });
- this.addCommand({
- id: "stage-current-file",
- name: "Stage current file",
- checkCallback: (checking) => {
- const file = this.app.workspace.getActiveFile();
- if (checking) {
- return file !== null;
- } else {
- this.promiseQueue.addTask(() => this.stageFile(file));
- }
- }
- });
- this.addCommand({
- id: "unstage-current-file",
- name: "Unstage current file",
- checkCallback: (checking) => {
- const file = this.app.workspace.getActiveFile();
- if (checking) {
- return file !== null;
- } else {
- this.promiseQueue.addTask(() => this.unstageFile(file));
- }
- }
- });
- this.addCommand({
- id: "edit-remotes",
- name: "Edit remotes",
- callback: async () => this.editRemotes()
- });
- this.addCommand({
- id: "remove-remote",
- name: "Remove remote",
- callback: async () => this.removeRemote()
- });
- this.addCommand({
- id: "delete-repo",
- name: "CAUTION: Delete repository",
- callback: async () => {
- const repoExists = await this.app.vault.adapter.exists(`${this.settings.basePath}/.git`);
- if (repoExists) {
- const modal = new GeneralModal({ options: ["NO", "YES"], placeholder: "Do you really want to delete the repository (.git directory)? This action cannot be undone.", onlySelection: true });
- const shouldDelete = await modal.open() === "YES";
- if (shouldDelete) {
- await this.app.vault.adapter.rmdir(`${this.settings.basePath}/.git`, true);
- new import_obsidian23.Notice("Successfully deleted repository. Reloading plugin...");
- this.unloadPlugin();
- this.init();
- }
- } else {
- new import_obsidian23.Notice("No repository found");
- }
- }
- });
- this.addCommand({
- id: "init-repo",
- name: "Initialize a new repo",
- callback: async () => this.createNewRepo()
- });
- this.addCommand({
- id: "clone-repo",
- name: "Clone an existing remote repo",
- callback: async () => this.cloneNewRepo()
- });
- this.addCommand({
- id: "list-changed-files",
- name: "List changed files",
- callback: async () => {
- if (!await this.isAllInitialized())
- return;
- const status2 = await this.gitManager.status();
- this.setState(PluginState.idle);
- if (status2.changed.length + status2.staged.length > 500) {
- this.displayError("Too many changes to display");
- return;
- }
- new ChangedFilesModal(this, status2.changed).open();
- }
- });
- this.addCommand({
- id: "switch-branch",
- name: "Switch branch",
- callback: () => {
- this.switchBranch();
- }
- });
- this.addCommand({
- id: "create-branch",
- name: "Create new branch",
- callback: () => {
- this.createBranch();
- }
- });
- this.addCommand({
- id: "delete-branch",
- name: "Delete branch",
- callback: () => {
- this.deleteBranch();
- }
- });
- this.registerEvent(this.app.workspace.on("file-menu", (menu, file, source) => {
- this.handleFileMenu(menu, file, source);
- }));
- if (this.settings.showStatusBar) {
- const statusBarEl = this.addStatusBarItem();
- this.statusBar = new StatusBar(statusBarEl, this);
- this.registerInterval(window.setInterval(() => {
- var _a2;
- return (_a2 = this.statusBar) == null ? void 0 : _a2.display();
- }, 1e3));
- }
- if (import_obsidian23.Platform.isDesktop && this.settings.showBranchStatusBar) {
- const branchStatusBarEl = this.addStatusBarItem();
- this.branchBar = new BranchStatusBar(branchStatusBarEl, this);
- this.registerInterval(window.setInterval(() => {
- var _a2;
- return (_a2 = this.branchBar) == null ? void 0 : _a2.display();
- }, 6e4));
- }
- this.app.workspace.onLayoutReady(() => this.init());
- }
- setRefreshDebouncer() {
- var _a2;
- (_a2 = this.debRefresh) == null ? void 0 : _a2.cancel();
- this.debRefresh = (0, import_obsidian23.debounce)(() => {
- if (this.settings.refreshSourceControl) {
- this.refresh();
- }
- }, this.settings.refreshSourceControlTimer, true);
- }
- async showNotices() {
- const length = 1e4;
- if (this.manifest.id === "obsidian-git" && import_obsidian23.Platform.isDesktopApp && !this.settings.showedMobileNotice) {
- new import_obsidian23.Notice("Obsidian Git is now available on mobile! Please read the plugin's README for more information.", length);
- this.settings.showedMobileNotice = true;
- await this.saveSettings();
- }
- if (this.manifest.id === "obsidian-git-isomorphic") {
- new import_obsidian23.Notice("Obsidian Git Mobile is now deprecated. Please uninstall it and install Obsidian Git instead.", length);
- }
- }
- handleFileMenu(menu, file, source) {
- if (source !== "file-explorer-context-menu") {
- return;
- }
- if (!file) {
- return;
- }
- if (!this.gitReady)
- return;
- menu.addItem((item) => {
- item.setTitle(`Git: Stage`).setIcon("plus-circle").setSection("action").onClick((_) => {
- this.promiseQueue.addTask(async () => {
- if (file instanceof import_obsidian23.TFile) {
- await this.gitManager.stage(file.path, true);
- } else {
- await this.gitManager.stageAll({ dir: this.gitManager.getPath(file.path, true) });
- }
- this.displayMessage(`Staged ${file.path}`);
- });
- });
- });
- menu.addItem((item) => {
- item.setTitle(`Git: Unstage`).setIcon("minus-circle").setSection("action").onClick((_) => {
- this.promiseQueue.addTask(async () => {
- if (file instanceof import_obsidian23.TFile) {
- await this.gitManager.unstage(file.path, true);
- } else {
- await this.gitManager.unstageAll({ dir: this.gitManager.getPath(file.path, true) });
- }
- this.displayMessage(`Unstaged ${file.path}`);
- });
- });
- });
- }
- async migrateSettings() {
- if (this.settings.mergeOnPull != void 0) {
- this.settings.syncMethod = this.settings.mergeOnPull ? "merge" : "rebase";
- this.settings.mergeOnPull = void 0;
- await this.saveSettings();
- }
- if (this.settings.autoCommitMessage === void 0) {
- this.settings.autoCommitMessage = this.settings.commitMessage;
- await this.saveSettings();
- }
- if (this.settings.gitPath != void 0) {
- this.localStorage.setGitPath(this.settings.gitPath);
- this.settings.gitPath = void 0;
- await this.saveSettings();
- }
- if (this.settings.username != void 0) {
- this.localStorage.setPassword(this.settings.username);
- this.settings.username = void 0;
- await this.saveSettings();
- }
- }
- unloadPlugin() {
- this.gitReady = false;
- dispatchEvent(new CustomEvent("git-refresh"));
- this.clearAutoPull();
- this.clearAutoPush();
- this.clearAutoBackup();
- removeEventListener("git-refresh", this.refresh.bind(this));
- this.app.metadataCache.offref(this.modifyEvent);
- this.app.metadataCache.offref(this.deleteEvent);
- this.app.metadataCache.offref(this.createEvent);
- this.app.metadataCache.offref(this.renameEvent);
- this.debRefresh.cancel();
- }
- async onunload() {
- this.app.workspace.unregisterHoverLinkSource(GIT_VIEW_CONFIG.type);
- this.unloadPlugin();
- console.log("unloading " + this.manifest.name + " plugin");
- }
- async loadSettings() {
- let data = await this.loadData();
- if (data == void 0) {
- data = { showedMobileNotice: true };
- }
- this.settings = Object.assign({}, DEFAULT_SETTINGS, data);
- }
- async saveSettings() {
- await this.saveData(this.settings);
- }
- async saveLastAuto(date, mode) {
- if (mode === "backup") {
- this.localStorage.setLastAutoBackup(date.toString());
- } else if (mode === "pull") {
- this.localStorage.setLastAutoPull(date.toString());
- } else if (mode === "push") {
- this.localStorage.setLastAutoPush(date.toString());
- }
- }
- async loadLastAuto() {
- var _a2, _b, _c;
- return {
- "backup": new Date((_a2 = this.localStorage.getLastAutoBackup()) != null ? _a2 : ""),
- "pull": new Date((_b = this.localStorage.getLastAutoPull()) != null ? _b : ""),
- "push": new Date((_c = this.localStorage.getLastAutoPush()) != null ? _c : "")
- };
- }
- async init() {
- var _a2;
- this.showNotices();
- try {
- if (import_obsidian23.Platform.isDesktopApp) {
- this.gitManager = new SimpleGit(this);
- await this.gitManager.setGitInstance();
- } else {
- this.gitManager = new IsomorphicGit(this);
- }
- const result = await this.gitManager.checkRequirements();
- switch (result) {
- case "missing-git":
- this.displayError("Cannot run git command");
- break;
- case "missing-repo":
- new import_obsidian23.Notice("Can't find a valid git repository. Please create one via the given command or clone an existing repo.");
- break;
- case "valid":
- this.gitReady = true;
- this.setState(PluginState.idle);
- this.modifyEvent = this.app.vault.on("modify", () => {
- this.debRefresh();
- });
- this.deleteEvent = this.app.vault.on("delete", () => {
- this.debRefresh();
- });
- this.createEvent = this.app.vault.on("create", () => {
- this.debRefresh();
- });
- this.renameEvent = this.app.vault.on("rename", () => {
- this.debRefresh();
- });
- this.registerEvent(this.modifyEvent);
- this.registerEvent(this.deleteEvent);
- this.registerEvent(this.createEvent);
- this.registerEvent(this.renameEvent);
- (_a2 = this.branchBar) == null ? void 0 : _a2.display();
- dispatchEvent(new CustomEvent("git-refresh"));
- if (this.settings.autoPullOnBoot) {
- this.promiseQueue.addTask(() => this.pullChangesFromRemote());
- }
- const lastAutos = await this.loadLastAuto();
- if (this.settings.autoSaveInterval > 0) {
- const now2 = new Date();
- const diff2 = this.settings.autoSaveInterval - Math.round((now2.getTime() - lastAutos.backup.getTime()) / 1e3 / 60);
- this.startAutoBackup(diff2 <= 0 ? 0 : diff2);
- }
- if (this.settings.differentIntervalCommitAndPush && this.settings.autoPushInterval > 0) {
- const now2 = new Date();
- const diff2 = this.settings.autoPushInterval - Math.round((now2.getTime() - lastAutos.push.getTime()) / 1e3 / 60);
- this.startAutoPush(diff2 <= 0 ? 0 : diff2);
- }
- if (this.settings.autoPullInterval > 0) {
- const now2 = new Date();
- const diff2 = this.settings.autoPullInterval - Math.round((now2.getTime() - lastAutos.pull.getTime()) / 1e3 / 60);
- this.startAutoPull(diff2 <= 0 ? 0 : diff2);
- }
- break;
- default:
- console.log("Something weird happened. The 'checkRequirements' result is " + result);
- }
- } catch (error) {
- this.displayError(error);
- console.error(error);
- }
- }
- async createNewRepo() {
- await this.gitManager.init();
- new import_obsidian23.Notice("Initialized new repo");
- await this.init();
- }
- async cloneNewRepo() {
- const modal = new GeneralModal({ placeholder: "Enter remote URL" });
- const url = await modal.open();
- if (url) {
- const confirmOption = "Vault Root";
- let dir = await new GeneralModal({
- options: [confirmOption],
- placeholder: "Enter directory for clone. It needs to be empty or not existent.",
- allowEmpty: this.gitManager instanceof IsomorphicGit
- }).open();
- if (dir !== void 0) {
- if (dir === confirmOption) {
- dir = ".";
- }
- dir = (0, import_obsidian23.normalizePath)(dir);
- if (dir === "/") {
- dir = ".";
- }
- if (dir === ".") {
- const modal2 = new GeneralModal({ options: ["NO", "YES"], placeholder: `Does your remote repo contain a ${app.vault.configDir} directory at the root?`, onlySelection: true });
- const containsConflictDir = await modal2.open();
- if (containsConflictDir === void 0) {
- new import_obsidian23.Notice("Aborted clone");
- return;
- } else if (containsConflictDir === "YES") {
- const confirmOption2 = "DELETE ALL YOUR LOCAL CONFIG AND PLUGINS";
- const modal3 = new GeneralModal({ options: ["Abort clone", confirmOption2], placeholder: `To avoid conflicts, the local ${app.vault.configDir} directory needs to be deleted.`, onlySelection: true });
- const shouldDelete = await modal3.open() === confirmOption2;
- if (shouldDelete) {
- await this.app.vault.adapter.rmdir(app.vault.configDir, true);
- } else {
- new import_obsidian23.Notice("Aborted clone");
- return;
- }
- }
- }
- new import_obsidian23.Notice(`Cloning new repo into "${dir}"`);
- await this.gitManager.clone(url, dir);
- new import_obsidian23.Notice("Cloned new repo.");
- new import_obsidian23.Notice("Please restart Obsidian");
- if (dir && dir !== ".") {
- this.settings.basePath = dir;
- this.saveSettings();
- }
- }
- }
- }
- async isAllInitialized() {
- if (!this.gitReady) {
- await this.init();
- }
- return this.gitReady;
- }
- async pullChangesFromRemote() {
- if (!await this.isAllInitialized())
- return;
- const filesUpdated = await this.pull();
- if (!filesUpdated) {
- this.displayMessage("Everything is up-to-date");
- }
- if (this.gitManager instanceof SimpleGit) {
- const status2 = await this.gitManager.status();
- if (status2.conflicted.length > 0) {
- this.displayError(`You have ${status2.conflicted.length} conflict ${status2.conflicted.length > 1 ? "files" : "file"}`);
- this.handleConflict(status2.conflicted);
- }
- }
- dispatchEvent(new CustomEvent("git-refresh"));
- this.lastUpdate = Date.now();
- this.setState(PluginState.idle);
- }
- async createBackup(fromAutoBackup, requestCustomMessage = false) {
- if (!await this.isAllInitialized())
- return;
- if (this.settings.syncMethod == "reset" && this.settings.pullBeforePush) {
- await this.pull();
- }
- if (!await this.commit(fromAutoBackup, requestCustomMessage))
- return;
- if (!this.settings.disablePush) {
- if (await this.gitManager.canPush()) {
- if (this.settings.syncMethod != "reset" && this.settings.pullBeforePush) {
- await this.pull();
- }
- await this.push();
- } else {
- this.displayMessage("No changes to push");
- }
- }
- this.setState(PluginState.idle);
- }
- async commit(fromAutoBackup, requestCustomMessage = false, onlyStaged = false) {
- if (!await this.isAllInitialized())
- return false;
- const hadConflict = this.localStorage.getConflict() === "true";
- let changedFiles;
- let status2;
- let unstagedFiles;
- if (this.gitManager instanceof SimpleGit) {
- const file = this.app.vault.getAbstractFileByPath(this.conflictOutputFile);
- if (file != null)
- await this.app.vault.delete(file);
- status2 = await this.updateCachedStatus();
- if (fromAutoBackup && status2.conflicted.length > 0) {
- this.displayError(`Did not commit, because you have ${status2.conflicted.length} conflict ${status2.conflicted.length > 1 ? "files" : "file"}. Please resolve them and commit per command.`);
- this.handleConflict(status2.conflicted);
- return false;
- }
- changedFiles = [...status2.changed, ...status2.staged];
- } else if (fromAutoBackup && hadConflict) {
- this.setState(PluginState.conflicted);
- this.displayError(`Did not commit, because you have conflict files. Please resolve them and commit per command.`);
- return false;
- } else if (hadConflict) {
- const file = this.app.vault.getAbstractFileByPath(this.conflictOutputFile);
- if (file != null)
- await this.app.vault.delete(file);
- status2 = await this.updateCachedStatus();
- changedFiles = [...status2.changed, ...status2.staged];
- } else {
- if (onlyStaged) {
- changedFiles = await this.gitManager.getStagedFiles();
- } else {
- unstagedFiles = await this.gitManager.getUnstagedFiles();
- changedFiles = unstagedFiles.map(({ filepath }) => ({ vault_path: this.gitManager.getVaultPath(filepath) }));
- }
- }
- if (await this.hasTooBigFiles(changedFiles)) {
- this.setState(PluginState.idle);
- return false;
- }
- if (changedFiles.length !== 0 || hadConflict) {
- let commitMessage = fromAutoBackup ? this.settings.autoCommitMessage : this.settings.commitMessage;
- if (fromAutoBackup && this.settings.customMessageOnAutoBackup || requestCustomMessage) {
- if (!this.settings.disablePopups && fromAutoBackup) {
- new import_obsidian23.Notice("Auto backup: Please enter a custom commit message. Leave empty to abort");
- }
- const tempMessage = await new CustomMessageModal(this, true).open();
- if (tempMessage != void 0 && tempMessage != "" && tempMessage != "...") {
- commitMessage = tempMessage;
- } else {
- this.setState(PluginState.idle);
- return false;
- }
- }
- let committedFiles;
- if (onlyStaged) {
- committedFiles = await this.gitManager.commit(commitMessage);
- } else {
- committedFiles = await this.gitManager.commitAll({ message: commitMessage, status: status2, unstagedFiles });
- }
- let roughly = false;
- if (committedFiles === void 0) {
- roughly = true;
- committedFiles = changedFiles.length;
- }
- this.displayMessage(`Committed${roughly ? " approx." : ""} ${committedFiles} ${committedFiles > 1 ? "files" : "file"}`);
- } else {
- this.displayMessage("No changes to commit");
- }
- dispatchEvent(new CustomEvent("git-refresh"));
- this.setState(PluginState.idle);
- return true;
- }
- async hasTooBigFiles(files) {
- var _a2;
- const branchInfo = await this.gitManager.branchInfo();
- const remote = (_a2 = branchInfo.tracking) == null ? void 0 : _a2.split("/")[0];
- if (remote) {
- const remoteUrl = await this.gitManager.getRemoteUrl(remote);
- if (remoteUrl == null ? void 0 : remoteUrl.includes("github.com")) {
- const tooBigFiles = files.filter((f) => {
- const file = this.app.vault.getAbstractFileByPath(f.vault_path);
- if (file instanceof import_obsidian23.TFile) {
- return file.stat.size >= 1e8;
- }
- return false;
- });
- if (tooBigFiles.length > 0) {
- this.displayError(`Did not commit, because following files are too big: ${tooBigFiles.map((e) => e.vault_path)}. Please remove them.`);
- return true;
- }
- }
- }
- return false;
- }
- async push() {
- if (!await this.isAllInitialized())
- return false;
- if (!await this.remotesAreSet()) {
- return false;
- }
- const file = this.app.vault.getAbstractFileByPath(this.conflictOutputFile);
- const hadConflict = this.localStorage.getConflict() === "true";
- if (this.gitManager instanceof SimpleGit && file)
- await this.app.vault.delete(file);
- let status2;
- if (this.gitManager instanceof SimpleGit && (status2 = await this.updateCachedStatus()).conflicted.length > 0) {
- this.displayError(`Cannot push. You have ${status2.conflicted.length} conflict ${status2.conflicted.length > 1 ? "files" : "file"}`);
- this.handleConflict(status2.conflicted);
- return false;
- } else if (this.gitManager instanceof IsomorphicGit && hadConflict) {
- this.displayError(`Cannot push. You have conflict files`);
- this.setState(PluginState.conflicted);
- return false;
- }
- {
- console.log("Pushing....");
- const pushedFiles = await this.gitManager.push();
- console.log("Pushed!", pushedFiles);
- this.lastUpdate = Date.now();
- if (pushedFiles > 0) {
- this.displayMessage(`Pushed ${pushedFiles} ${pushedFiles > 1 ? "files" : "file"} to remote`);
- } else {
- this.displayMessage(`No changes to push`);
- }
- this.offlineMode = false;
- this.setState(PluginState.idle);
- return true;
- }
- }
- async pull() {
- if (!await this.remotesAreSet()) {
- return false;
- }
- const pulledFiles = await this.gitManager.pull() || [];
- this.offlineMode = false;
- if (pulledFiles.length > 0) {
- this.displayMessage(`Pulled ${pulledFiles.length} ${pulledFiles.length > 1 ? "files" : "file"} from remote`);
- this.lastPulledFiles = pulledFiles;
- }
- return pulledFiles.length != 0;
- }
- async stageFile(file) {
- if (!await this.isAllInitialized())
- return false;
- await this.gitManager.stage(file.path, true);
- this.displayMessage(`Staged ${file.path}`);
- dispatchEvent(new CustomEvent("git-refresh"));
- this.setState(PluginState.idle);
- return true;
- }
- async unstageFile(file) {
- if (!await this.isAllInitialized())
- return false;
- await this.gitManager.unstage(file.path, true);
- this.displayMessage(`Unstaged ${file.path}`);
- dispatchEvent(new CustomEvent("git-refresh"));
- this.setState(PluginState.idle);
- return true;
- }
- async switchBranch() {
- var _a2;
- if (!await this.isAllInitialized())
- return;
- const branchInfo = await this.gitManager.branchInfo();
- const selectedBranch = await new BranchModal(branchInfo.branches).open();
- if (selectedBranch != void 0) {
- await this.gitManager.checkout(selectedBranch);
- this.displayMessage(`Switched to ${selectedBranch}`);
- (_a2 = this.branchBar) == null ? void 0 : _a2.display();
- return selectedBranch;
- }
- }
- async createBranch() {
- var _a2;
- if (!await this.isAllInitialized())
- return;
- const newBranch = await new GeneralModal({ placeholder: "Create new branch" }).open();
- if (newBranch != void 0) {
- await this.gitManager.createBranch(newBranch);
- this.displayMessage(`Created new branch ${newBranch}`);
- (_a2 = this.branchBar) == null ? void 0 : _a2.display();
- return newBranch;
- }
- }
- async deleteBranch() {
- var _a2;
- if (!await this.isAllInitialized())
- return;
- const branchInfo = await this.gitManager.branchInfo();
- if (branchInfo.current)
- branchInfo.branches.remove(branchInfo.current);
- const branch2 = await new GeneralModal({ options: branchInfo.branches, placeholder: "Delete branch", onlySelection: true }).open();
- if (branch2 != void 0) {
- let force = false;
- if (!await this.gitManager.branchIsMerged(branch2)) {
- const forceAnswer = await new GeneralModal({ options: ["YES", "NO"], placeholder: "This branch isn't merged into HEAD. Force delete?", onlySelection: true }).open();
- if (forceAnswer !== "YES") {
- return;
- }
- force = forceAnswer === "YES";
- }
- await this.gitManager.deleteBranch(branch2, force);
- this.displayMessage(`Deleted branch ${branch2}`);
- (_a2 = this.branchBar) == null ? void 0 : _a2.display();
- return branch2;
- }
- }
- async remotesAreSet() {
- if (!(await this.gitManager.branchInfo()).tracking) {
- new import_obsidian23.Notice("No upstream branch is set. Please select one.");
- const remoteBranch = await this.selectRemoteBranch();
- if (remoteBranch == void 0) {
- this.displayError("Aborted. No upstream-branch is set!", 1e4);
- this.setState(PluginState.idle);
- return false;
- } else {
- await this.gitManager.updateUpstreamBranch(remoteBranch);
- return true;
- }
- }
- return true;
- }
- startAutoBackup(minutes) {
- const time = (minutes != null ? minutes : this.settings.autoSaveInterval) * 6e4;
- if (this.settings.autoBackupAfterFileChange) {
- if (minutes === 0) {
- this.doAutoBackup();
- } else {
- this.onFileModifyEventRef = this.app.vault.on("modify", () => this.autoBackupDebouncer());
- this.autoBackupDebouncer = (0, import_obsidian23.debounce)(() => this.doAutoBackup(), time, true);
- }
- } else {
- this.timeoutIDBackup = window.setTimeout(() => this.doAutoBackup(), time);
- }
- }
- doAutoBackup() {
- this.promiseQueue.addTask(() => {
- if (this.settings.differentIntervalCommitAndPush) {
- return this.commit(true);
- } else {
- return this.createBackup(true);
- }
- });
- this.saveLastAuto(new Date(), "backup");
- this.saveSettings();
- this.startAutoBackup();
- }
- startAutoPull(minutes) {
- this.timeoutIDPull = window.setTimeout(() => {
- this.promiseQueue.addTask(() => this.pullChangesFromRemote());
- this.saveLastAuto(new Date(), "pull");
- this.saveSettings();
- this.startAutoPull();
- }, (minutes != null ? minutes : this.settings.autoPullInterval) * 6e4);
- }
- startAutoPush(minutes) {
- this.timeoutIDPush = window.setTimeout(() => {
- this.promiseQueue.addTask(() => this.push());
- this.saveLastAuto(new Date(), "push");
- this.saveSettings();
- this.startAutoPush();
- }, (minutes != null ? minutes : this.settings.autoPushInterval) * 6e4);
- }
- clearAutoBackup() {
- var _a2;
- let wasActive = false;
- if (this.timeoutIDBackup) {
- window.clearTimeout(this.timeoutIDBackup);
- this.timeoutIDBackup = void 0;
- wasActive = true;
- }
- if (this.onFileModifyEventRef) {
- (_a2 = this.autoBackupDebouncer) == null ? void 0 : _a2.cancel();
- this.app.vault.offref(this.onFileModifyEventRef);
- this.onFileModifyEventRef = void 0;
- wasActive = true;
- }
- return wasActive;
- }
- clearAutoPull() {
- if (this.timeoutIDPull) {
- window.clearTimeout(this.timeoutIDPull);
- this.timeoutIDPull = void 0;
- return true;
- }
- return false;
- }
- clearAutoPush() {
- if (this.timeoutIDPush) {
- window.clearTimeout(this.timeoutIDPush);
- this.timeoutIDPush = void 0;
- return true;
- }
- return false;
- }
- async handleConflict(conflicted) {
- this.setState(PluginState.conflicted);
- this.localStorage.setConflict("true");
- let lines;
- if (conflicted !== void 0) {
- lines = [
- "# Conflict files",
- "Please resolve them and commit per command (This file will be deleted before the commit).",
- ...conflicted.map((e) => {
- const file = this.app.vault.getAbstractFileByPath(e);
- if (file instanceof import_obsidian23.TFile) {
- const link = this.app.metadataCache.fileToLinktext(file, "/");
- return `- [[${link}]]`;
- } else {
- return `- Not a file: ${e}`;
- }
- })
- ];
- }
- this.writeAndOpenFile(lines == null ? void 0 : lines.join("\n"));
- }
- async editRemotes() {
- if (!await this.isAllInitialized())
- return;
- const remotes = await this.gitManager.getRemotes();
- const nameModal = new GeneralModal({
- options: remotes,
- placeholder: "Select or create a new remote by typing its name and selecting it"
- });
- const remoteName = await nameModal.open();
- if (remoteName) {
- const oldUrl = await this.gitManager.getRemoteUrl(remoteName);
- const urlModal = new GeneralModal({ initialValue: oldUrl });
- const remoteURL = await urlModal.open();
- if (remoteURL) {
- await this.gitManager.setRemote(remoteName, remoteURL);
- return remoteName;
- }
- }
- }
- async selectRemoteBranch() {
- let remotes = await this.gitManager.getRemotes();
- let selectedRemote;
- if (remotes.length === 0) {
- selectedRemote = await this.editRemotes();
- if (selectedRemote == void 0) {
- remotes = await this.gitManager.getRemotes();
- }
- }
- const nameModal = new GeneralModal({ options: remotes, placeholder: "Select or create a new remote by typing its name and selecting it" });
- const remoteName = selectedRemote != null ? selectedRemote : await nameModal.open();
- if (remoteName) {
- this.displayMessage("Fetching remote branches");
- await this.gitManager.fetch(remoteName);
- const branches = await this.gitManager.getRemoteBranches(remoteName);
- const branchModal = new GeneralModal({ options: branches, placeholder: "Select or create a new remote branch by typing its name and selecting it" });
- return await branchModal.open();
- }
- }
- async removeRemote() {
- if (!await this.isAllInitialized())
- return;
- const remotes = await this.gitManager.getRemotes();
- const nameModal = new GeneralModal({ options: remotes, placeholder: "Select a remote" });
- const remoteName = await nameModal.open();
- if (remoteName) {
- this.gitManager.removeRemote(remoteName);
- }
- }
- async writeAndOpenFile(text2) {
- if (text2 !== void 0) {
- await this.app.vault.adapter.write(this.conflictOutputFile, text2);
- }
- let fileIsAlreadyOpened = false;
- this.app.workspace.iterateAllLeaves((leaf) => {
- if (leaf.getDisplayText() != "" && this.conflictOutputFile.startsWith(leaf.getDisplayText())) {
- fileIsAlreadyOpened = true;
- }
- });
- if (!fileIsAlreadyOpened) {
- this.app.workspace.openLinkText(this.conflictOutputFile, "/", true);
- }
- }
- displayMessage(message, timeout = 4 * 1e3) {
- var _a2;
- (_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout);
- if (!this.settings.disablePopups) {
- new import_obsidian23.Notice(message, 5 * 1e3);
- }
- console.log(`git obsidian message: ${message}`);
- }
- displayError(message, timeout = 10 * 1e3) {
- var _a2;
- if (message instanceof Errors.UserCanceledError) {
- new import_obsidian23.Notice("Aborted");
- return;
- }
- message = message.toString();
- new import_obsidian23.Notice(message, timeout);
- console.log(`git obsidian error: ${message}`);
- (_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout);
- }
- };
- /*!
- Copyright (c) 2016 Jed Watson.
- Licensed under the MIT License (MIT), see
- http://jedwatson.github.io/classnames
- */
- /*!
- * The buffer module from node.js, for the browser.
- *
- * @author Feross Aboukhadijeh <https://feross.org>
- * @license MIT
- */
- /*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */
- /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
- /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|