| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249 |
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /// <reference lib="deno.net" />
- /** Deno provides extra properties on `import.meta`. These are included here
- * to ensure that these are still available when using the Deno namespace in
- * conjunction with other type libs, like `dom`.
- *
- * @category Platform
- */
- declare interface ImportMeta {
- /** A string representation of the fully qualified module URL. When the
- * module is loaded locally, the value will be a file URL (e.g.
- * `file:///path/module.ts`).
- *
- * You can also parse the string as a URL to determine more information about
- * how the current module was loaded. For example to determine if a module was
- * local or not:
- *
- * ```ts
- * const url = new URL(import.meta.url);
- * if (url.protocol === "file:") {
- * console.log("this module was loaded locally");
- * }
- * ```
- */
- url: string;
- /** The absolute path of the current module.
- *
- * This property is only provided for local modules (ie. using `file://` URLs).
- *
- * Example:
- * ```
- * // Unix
- * console.log(import.meta.filename); // /home/alice/my_module.ts
- *
- * // Windows
- * console.log(import.meta.filename); // C:\alice\my_module.ts
- * ```
- */
- filename?: string;
- /** The absolute path of the directory containing the current module.
- *
- * This property is only provided for local modules (ie. using `file://` URLs).
- *
- * * Example:
- * ```
- * // Unix
- * console.log(import.meta.dirname); // /home/alice
- *
- * // Windows
- * console.log(import.meta.dirname); // C:\alice
- * ```
- */
- dirname?: string;
- /** A flag that indicates if the current module is the main module that was
- * called when starting the program under Deno.
- *
- * ```ts
- * if (import.meta.main) {
- * // this was loaded as the main module, maybe do some bootstrapping
- * }
- * ```
- */
- main: boolean;
- /** A function that returns resolved specifier as if it would be imported
- * using `import(specifier)`.
- *
- * ```ts
- * console.log(import.meta.resolve("./foo.js"));
- * // file:///dev/foo.js
- * ```
- */
- resolve(specifier: string): string;
- }
- /** Deno supports [User Timing Level 3](https://w3c.github.io/user-timing)
- * which is not widely supported yet in other runtimes.
- *
- * Check out the
- * [Performance API](https://developer.mozilla.org/en-US/docs/Web/API/Performance)
- * documentation on MDN for further information about how to use the API.
- *
- * @category Performance
- */
- declare interface Performance {
- /** Stores a timestamp with the associated name (a "mark"). */
- mark(markName: string, options?: PerformanceMarkOptions): PerformanceMark;
- /** Stores the `DOMHighResTimeStamp` duration between two marks along with the
- * associated name (a "measure"). */
- measure(
- measureName: string,
- options?: PerformanceMeasureOptions,
- ): PerformanceMeasure;
- }
- /**
- * Options which are used in conjunction with `performance.mark`. Check out the
- * MDN
- * [`performance.mark()`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/mark#markoptions)
- * documentation for more details.
- *
- * @category Performance
- */
- declare interface PerformanceMarkOptions {
- /** Metadata to be included in the mark. */
- // deno-lint-ignore no-explicit-any
- detail?: any;
- /** Timestamp to be used as the mark time. */
- startTime?: number;
- }
- /**
- * Options which are used in conjunction with `performance.measure`. Check out the
- * MDN
- * [`performance.mark()`](https://developer.mozilla.org/en-US/docs/Web/API/Performance/measure#measureoptions)
- * documentation for more details.
- *
- * @category Performance
- */
- declare interface PerformanceMeasureOptions {
- /** Metadata to be included in the measure. */
- // deno-lint-ignore no-explicit-any
- detail?: any;
- /** Timestamp to be used as the start time or string to be used as start
- * mark. */
- start?: string | number;
- /** Duration between the start and end times. */
- duration?: number;
- /** Timestamp to be used as the end time or string to be used as end mark. */
- end?: string | number;
- }
- /** The global namespace where Deno specific, non-standard APIs are located. */
- declare namespace Deno {
- /** A set of error constructors that are raised by Deno APIs.
- *
- * Can be used to provide more specific handling of failures within code
- * which is using Deno APIs. For example, handling attempting to open a file
- * which does not exist:
- *
- * ```ts
- * try {
- * const file = await Deno.open("./some/file.txt");
- * } catch (error) {
- * if (error instanceof Deno.errors.NotFound) {
- * console.error("the file was not found");
- * } else {
- * // otherwise re-throw
- * throw error;
- * }
- * }
- * ```
- *
- * @category Errors
- */
- export namespace errors {
- /**
- * Raised when the underlying operating system indicates that the file
- * was not found.
- *
- * @category Errors */
- export class NotFound extends Error {}
- /**
- * Raised when the underlying operating system indicates the current user
- * which the Deno process is running under does not have the appropriate
- * permissions to a file or resource, or the user _did not_ provide required
- * `--allow-*` flag.
- *
- * @category Errors */
- export class PermissionDenied extends Error {}
- /**
- * Raised when the underlying operating system reports that a connection to
- * a resource is refused.
- *
- * @category Errors */
- export class ConnectionRefused extends Error {}
- /**
- * Raised when the underlying operating system reports that a connection has
- * been reset. With network servers, it can be a _normal_ occurrence where a
- * client will abort a connection instead of properly shutting it down.
- *
- * @category Errors */
- export class ConnectionReset extends Error {}
- /**
- * Raised when the underlying operating system reports an `ECONNABORTED`
- * error.
- *
- * @category Errors */
- export class ConnectionAborted extends Error {}
- /**
- * Raised when the underlying operating system reports an `ENOTCONN` error.
- *
- * @category Errors */
- export class NotConnected extends Error {}
- /**
- * Raised when attempting to open a server listener on an address and port
- * that already has a listener.
- *
- * @category Errors */
- export class AddrInUse extends Error {}
- /**
- * Raised when the underlying operating system reports an `EADDRNOTAVAIL`
- * error.
- *
- * @category Errors */
- export class AddrNotAvailable extends Error {}
- /**
- * Raised when trying to write to a resource and a broken pipe error occurs.
- * This can happen when trying to write directly to `stdout` or `stderr`
- * and the operating system is unable to pipe the output for a reason
- * external to the Deno runtime.
- *
- * @category Errors */
- export class BrokenPipe extends Error {}
- /**
- * Raised when trying to create a resource, like a file, that already
- * exits.
- *
- * @category Errors */
- export class AlreadyExists extends Error {}
- /**
- * Raised when an operation to returns data that is invalid for the
- * operation being performed.
- *
- * @category Errors */
- export class InvalidData extends Error {}
- /**
- * Raised when the underlying operating system reports that an I/O operation
- * has timed out (`ETIMEDOUT`).
- *
- * @category Errors */
- export class TimedOut extends Error {}
- /**
- * Raised when the underlying operating system reports an `EINTR` error. In
- * many cases, this underlying IO error will be handled internally within
- * Deno, or result in an @{link BadResource} error instead.
- *
- * @category Errors */
- export class Interrupted extends Error {}
- /**
- * Raised when the underlying operating system would need to block to
- * complete but an asynchronous (non-blocking) API is used.
- *
- * @category Errors */
- export class WouldBlock extends Error {}
- /**
- * Raised when expecting to write to a IO buffer resulted in zero bytes
- * being written.
- *
- * @category Errors */
- export class WriteZero extends Error {}
- /**
- * Raised when attempting to read bytes from a resource, but the EOF was
- * unexpectedly encountered.
- *
- * @category Errors */
- export class UnexpectedEof extends Error {}
- /**
- * The underlying IO resource is invalid or closed, and so the operation
- * could not be performed.
- *
- * @category Errors */
- export class BadResource extends Error {}
- /**
- * Raised in situations where when attempting to load a dynamic import,
- * too many redirects were encountered.
- *
- * @category Errors */
- export class Http extends Error {}
- /**
- * Raised when the underlying IO resource is not available because it is
- * being awaited on in another block of code.
- *
- * @category Errors */
- export class Busy extends Error {}
- /**
- * Raised when the underlying Deno API is asked to perform a function that
- * is not currently supported.
- *
- * @category Errors */
- export class NotSupported extends Error {}
- /**
- * Raised when too many symbolic links were encountered when resolving the
- * filename.
- *
- * @category Errors */
- export class FilesystemLoop extends Error {}
- /**
- * Raised when trying to open, create or write to a directory.
- *
- * @category Errors */
- export class IsADirectory extends Error {}
- /**
- * Raised when performing a socket operation but the remote host is
- * not reachable.
- *
- * @category Errors */
- export class NetworkUnreachable extends Error {}
- /**
- * Raised when trying to perform an operation on a path that is not a
- * directory, when directory is required.
- *
- * @category Errors */
- export class NotADirectory extends Error {}
- }
- /** The current process ID of this instance of the Deno CLI.
- *
- * ```ts
- * console.log(Deno.pid);
- * ```
- *
- * @category Runtime
- */
- export const pid: number;
- /**
- * The process ID of parent process of this instance of the Deno CLI.
- *
- * ```ts
- * console.log(Deno.ppid);
- * ```
- *
- * @category Runtime
- */
- export const ppid: number;
- /** @category Runtime */
- export interface MemoryUsage {
- /** The number of bytes of the current Deno's process resident set size,
- * which is the amount of memory occupied in main memory (RAM). */
- rss: number;
- /** The total size of the heap for V8, in bytes. */
- heapTotal: number;
- /** The amount of the heap used for V8, in bytes. */
- heapUsed: number;
- /** Memory, in bytes, associated with JavaScript objects outside of the
- * JavaScript isolate. */
- external: number;
- }
- /**
- * Returns an object describing the memory usage of the Deno process and the
- * V8 subsystem measured in bytes.
- *
- * @category Runtime
- */
- export function memoryUsage(): MemoryUsage;
- /**
- * Get the `hostname` of the machine the Deno process is running on.
- *
- * ```ts
- * console.log(Deno.hostname());
- * ```
- *
- * Requires `allow-sys` permission.
- *
- * @tags allow-sys
- * @category Runtime
- */
- export function hostname(): string;
- /**
- * Returns an array containing the 1, 5, and 15 minute load averages. The
- * load average is a measure of CPU and IO utilization of the last one, five,
- * and 15 minute periods expressed as a fractional number. Zero means there
- * is no load. On Windows, the three values are always the same and represent
- * the current load, not the 1, 5 and 15 minute load averages.
- *
- * ```ts
- * console.log(Deno.loadavg()); // e.g. [ 0.71, 0.44, 0.44 ]
- * ```
- *
- * Requires `allow-sys` permission.
- *
- * On Windows there is no API available to retrieve this information and this method returns `[ 0, 0, 0 ]`.
- *
- * @tags allow-sys
- * @category Runtime
- */
- export function loadavg(): number[];
- /**
- * The information for a network interface returned from a call to
- * {@linkcode Deno.networkInterfaces}.
- *
- * @category Network
- */
- export interface NetworkInterfaceInfo {
- /** The network interface name. */
- name: string;
- /** The IP protocol version. */
- family: "IPv4" | "IPv6";
- /** The IP address bound to the interface. */
- address: string;
- /** The netmask applied to the interface. */
- netmask: string;
- /** The IPv6 scope id or `null`. */
- scopeid: number | null;
- /** The CIDR range. */
- cidr: string;
- /** The MAC address. */
- mac: string;
- }
- /**
- * Returns an array of the network interface information.
- *
- * ```ts
- * console.log(Deno.networkInterfaces());
- * ```
- *
- * Requires `allow-sys` permission.
- *
- * @tags allow-sys
- * @category Network
- */
- export function networkInterfaces(): NetworkInterfaceInfo[];
- /**
- * Displays the total amount of free and used physical and swap memory in the
- * system, as well as the buffers and caches used by the kernel.
- *
- * This is similar to the `free` command in Linux
- *
- * ```ts
- * console.log(Deno.systemMemoryInfo());
- * ```
- *
- * Requires `allow-sys` permission.
- *
- * @tags allow-sys
- * @category Runtime
- */
- export function systemMemoryInfo(): SystemMemoryInfo;
- /**
- * Information returned from a call to {@linkcode Deno.systemMemoryInfo}.
- *
- * @category Runtime
- */
- export interface SystemMemoryInfo {
- /** Total installed memory in bytes. */
- total: number;
- /** Unused memory in bytes. */
- free: number;
- /** Estimation of how much memory, in bytes, is available for starting new
- * applications, without swapping. Unlike the data provided by the cache or
- * free fields, this field takes into account page cache and also that not
- * all reclaimable memory will be reclaimed due to items being in use.
- */
- available: number;
- /** Memory used by kernel buffers. */
- buffers: number;
- /** Memory used by the page cache and slabs. */
- cached: number;
- /** Total swap memory. */
- swapTotal: number;
- /** Unused swap memory. */
- swapFree: number;
- }
- /** Reflects the `NO_COLOR` environment variable at program start.
- *
- * When the value is `true`, the Deno CLI will attempt to not send color codes
- * to `stderr` or `stdout` and other command line programs should also attempt
- * to respect this value.
- *
- * See: https://no-color.org/
- *
- * @category Runtime
- */
- export const noColor: boolean;
- /**
- * Returns the release version of the Operating System.
- *
- * ```ts
- * console.log(Deno.osRelease());
- * ```
- *
- * Requires `allow-sys` permission.
- * Under consideration to possibly move to Deno.build or Deno.versions and if
- * it should depend sys-info, which may not be desirable.
- *
- * @tags allow-sys
- * @category Runtime
- */
- export function osRelease(): string;
- /**
- * Returns the Operating System uptime in number of seconds.
- *
- * ```ts
- * console.log(Deno.osUptime());
- * ```
- *
- * Requires `allow-sys` permission.
- *
- * @tags allow-sys
- * @category Runtime
- */
- export function osUptime(): number;
- /**
- * Options which define the permissions within a test or worker context.
- *
- * `"inherit"` ensures that all permissions of the parent process will be
- * applied to the test context. `"none"` ensures the test context has no
- * permissions. A `PermissionOptionsObject` provides a more specific
- * set of permissions to the test context.
- *
- * @category Permissions */
- export type PermissionOptions =
- | "inherit"
- | "none"
- | PermissionOptionsObject;
- /**
- * A set of options which can define the permissions within a test or worker
- * context at a highly specific level.
- *
- * @category Permissions */
- export interface PermissionOptionsObject {
- /** Specifies if the `env` permission should be requested or revoked.
- * If set to `"inherit"`, the current `env` permission will be inherited.
- * If set to `true`, the global `env` permission will be requested.
- * If set to `false`, the global `env` permission will be revoked.
- *
- * @default {false}
- */
- env?: "inherit" | boolean | string[];
- /** Specifies if the `sys` permission should be requested or revoked.
- * If set to `"inherit"`, the current `sys` permission will be inherited.
- * If set to `true`, the global `sys` permission will be requested.
- * If set to `false`, the global `sys` permission will be revoked.
- *
- * @default {false}
- */
- sys?: "inherit" | boolean | string[];
- /** Specifies if the `hrtime` permission should be requested or revoked.
- * If set to `"inherit"`, the current `hrtime` permission will be inherited.
- * If set to `true`, the global `hrtime` permission will be requested.
- * If set to `false`, the global `hrtime` permission will be revoked.
- *
- * @default {false}
- */
- hrtime?: "inherit" | boolean;
- /** Specifies if the `net` permission should be requested or revoked.
- * if set to `"inherit"`, the current `net` permission will be inherited.
- * if set to `true`, the global `net` permission will be requested.
- * if set to `false`, the global `net` permission will be revoked.
- * if set to `string[]`, the `net` permission will be requested with the
- * specified host strings with the format `"<host>[:<port>]`.
- *
- * @default {false}
- *
- * Examples:
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.test({
- * name: "inherit",
- * permissions: {
- * net: "inherit",
- * },
- * async fn() {
- * const status = await Deno.permissions.query({ name: "net" })
- * assertEquals(status.state, "granted");
- * },
- * });
- * ```
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.test({
- * name: "true",
- * permissions: {
- * net: true,
- * },
- * async fn() {
- * const status = await Deno.permissions.query({ name: "net" });
- * assertEquals(status.state, "granted");
- * },
- * });
- * ```
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.test({
- * name: "false",
- * permissions: {
- * net: false,
- * },
- * async fn() {
- * const status = await Deno.permissions.query({ name: "net" });
- * assertEquals(status.state, "denied");
- * },
- * });
- * ```
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.test({
- * name: "localhost:8080",
- * permissions: {
- * net: ["localhost:8080"],
- * },
- * async fn() {
- * const status = await Deno.permissions.query({ name: "net", host: "localhost:8080" });
- * assertEquals(status.state, "granted");
- * },
- * });
- * ```
- */
- net?: "inherit" | boolean | string[];
- /** Specifies if the `ffi` permission should be requested or revoked.
- * If set to `"inherit"`, the current `ffi` permission will be inherited.
- * If set to `true`, the global `ffi` permission will be requested.
- * If set to `false`, the global `ffi` permission will be revoked.
- *
- * @default {false}
- */
- ffi?: "inherit" | boolean | Array<string | URL>;
- /** Specifies if the `read` permission should be requested or revoked.
- * If set to `"inherit"`, the current `read` permission will be inherited.
- * If set to `true`, the global `read` permission will be requested.
- * If set to `false`, the global `read` permission will be revoked.
- * If set to `Array<string | URL>`, the `read` permission will be requested with the
- * specified file paths.
- *
- * @default {false}
- */
- read?: "inherit" | boolean | Array<string | URL>;
- /** Specifies if the `run` permission should be requested or revoked.
- * If set to `"inherit"`, the current `run` permission will be inherited.
- * If set to `true`, the global `run` permission will be requested.
- * If set to `false`, the global `run` permission will be revoked.
- *
- * @default {false}
- */
- run?: "inherit" | boolean | Array<string | URL>;
- /** Specifies if the `write` permission should be requested or revoked.
- * If set to `"inherit"`, the current `write` permission will be inherited.
- * If set to `true`, the global `write` permission will be requested.
- * If set to `false`, the global `write` permission will be revoked.
- * If set to `Array<string | URL>`, the `write` permission will be requested with the
- * specified file paths.
- *
- * @default {false}
- */
- write?: "inherit" | boolean | Array<string | URL>;
- }
- /**
- * Context that is passed to a testing function, which can be used to either
- * gain information about the current test, or register additional test
- * steps within the current test.
- *
- * @category Testing */
- export interface TestContext {
- /** The current test name. */
- name: string;
- /** The string URL of the current test. */
- origin: string;
- /** If the current test is a step of another test, the parent test context
- * will be set here. */
- parent?: TestContext;
- /** Run a sub step of the parent test or step. Returns a promise
- * that resolves to a boolean signifying if the step completed successfully.
- *
- * The returned promise never rejects unless the arguments are invalid.
- *
- * If the test was ignored the promise returns `false`.
- *
- * ```ts
- * Deno.test({
- * name: "a parent test",
- * async fn(t) {
- * console.log("before the step");
- * await t.step({
- * name: "step 1",
- * fn(t) {
- * console.log("current step:", t.name);
- * }
- * });
- * console.log("after the step");
- * }
- * });
- * ```
- */
- step(definition: TestStepDefinition): Promise<boolean>;
- /** Run a sub step of the parent test or step. Returns a promise
- * that resolves to a boolean signifying if the step completed successfully.
- *
- * The returned promise never rejects unless the arguments are invalid.
- *
- * If the test was ignored the promise returns `false`.
- *
- * ```ts
- * Deno.test(
- * "a parent test",
- * async (t) => {
- * console.log("before the step");
- * await t.step(
- * "step 1",
- * (t) => {
- * console.log("current step:", t.name);
- * }
- * );
- * console.log("after the step");
- * }
- * );
- * ```
- */
- step(
- name: string,
- fn: (t: TestContext) => void | Promise<void>,
- ): Promise<boolean>;
- /** Run a sub step of the parent test or step. Returns a promise
- * that resolves to a boolean signifying if the step completed successfully.
- *
- * The returned promise never rejects unless the arguments are invalid.
- *
- * If the test was ignored the promise returns `false`.
- *
- * ```ts
- * Deno.test(async function aParentTest(t) {
- * console.log("before the step");
- * await t.step(function step1(t) {
- * console.log("current step:", t.name);
- * });
- * console.log("after the step");
- * });
- * ```
- */
- step(fn: (t: TestContext) => void | Promise<void>): Promise<boolean>;
- }
- /** @category Testing */
- export interface TestStepDefinition {
- /** The test function that will be tested when this step is executed. The
- * function can take an argument which will provide information about the
- * current step's context. */
- fn: (t: TestContext) => void | Promise<void>;
- /** The name of the step. */
- name: string;
- /** If truthy the current test step will be ignored.
- *
- * This is a quick way to skip over a step, but also can be used for
- * conditional logic, like determining if an environment feature is present.
- */
- ignore?: boolean;
- /** Check that the number of async completed operations after the test step
- * is the same as number of dispatched operations. This ensures that the
- * code tested does not start async operations which it then does
- * not await. This helps in preventing logic errors and memory leaks
- * in the application code.
- *
- * Defaults to the parent test or step's value. */
- sanitizeOps?: boolean;
- /** Ensure the test step does not "leak" resources - like open files or
- * network connections - by ensuring the open resources at the start of the
- * step match the open resources at the end of the step.
- *
- * Defaults to the parent test or step's value. */
- sanitizeResources?: boolean;
- /** Ensure the test step does not prematurely cause the process to exit,
- * for example via a call to {@linkcode Deno.exit}.
- *
- * Defaults to the parent test or step's value. */
- sanitizeExit?: boolean;
- }
- /** @category Testing */
- export interface TestDefinition {
- fn: (t: TestContext) => void | Promise<void>;
- /** The name of the test. */
- name: string;
- /** If truthy the current test step will be ignored.
- *
- * It is a quick way to skip over a step, but also can be used for
- * conditional logic, like determining if an environment feature is present.
- */
- ignore?: boolean;
- /** If at least one test has `only` set to `true`, only run tests that have
- * `only` set to `true` and fail the test suite. */
- only?: boolean;
- /** Check that the number of async completed operations after the test step
- * is the same as number of dispatched operations. This ensures that the
- * code tested does not start async operations which it then does
- * not await. This helps in preventing logic errors and memory leaks
- * in the application code.
- *
- * @default {true} */
- sanitizeOps?: boolean;
- /** Ensure the test step does not "leak" resources - like open files or
- * network connections - by ensuring the open resources at the start of the
- * test match the open resources at the end of the test.
- *
- * @default {true} */
- sanitizeResources?: boolean;
- /** Ensure the test case does not prematurely cause the process to exit,
- * for example via a call to {@linkcode Deno.exit}.
- *
- * @default {true} */
- sanitizeExit?: boolean;
- /** Specifies the permissions that should be used to run the test.
- *
- * Set this to "inherit" to keep the calling runtime permissions, set this
- * to "none" to revoke all permissions, or set a more specific set of
- * permissions using a {@linkcode PermissionOptionsObject}.
- *
- * @default {"inherit"} */
- permissions?: PermissionOptions;
- }
- /** Register a test which will be run when `deno test` is used on the command
- * line and the containing module looks like a test module.
- *
- * `fn` can be async if required.
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.test({
- * name: "example test",
- * fn() {
- * assertEquals("world", "world");
- * },
- * });
- *
- * Deno.test({
- * name: "example ignored test",
- * ignore: Deno.build.os === "windows",
- * fn() {
- * // This test is ignored only on Windows machines
- * },
- * });
- *
- * Deno.test({
- * name: "example async test",
- * async fn() {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * }
- * });
- * ```
- *
- * @category Testing
- */
- export const test: DenoTest;
- /**
- * @category Testing
- */
- export interface DenoTest {
- /** Register a test which will be run when `deno test` is used on the command
- * line and the containing module looks like a test module.
- *
- * `fn` can be async if required.
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.test({
- * name: "example test",
- * fn() {
- * assertEquals("world", "world");
- * },
- * });
- *
- * Deno.test({
- * name: "example ignored test",
- * ignore: Deno.build.os === "windows",
- * fn() {
- * // This test is ignored only on Windows machines
- * },
- * });
- *
- * Deno.test({
- * name: "example async test",
- * async fn() {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * }
- * });
- * ```
- *
- * @category Testing
- */
- (t: TestDefinition): void;
- /** Register a test which will be run when `deno test` is used on the command
- * line and the containing module looks like a test module.
- *
- * `fn` can be async if required.
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.test("My test description", () => {
- * assertEquals("hello", "hello");
- * });
- *
- * Deno.test("My async test description", async () => {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * });
- * ```
- *
- * @category Testing
- */
- (
- name: string,
- fn: (t: TestContext) => void | Promise<void>,
- ): void;
- /** Register a test which will be run when `deno test` is used on the command
- * line and the containing module looks like a test module.
- *
- * `fn` can be async if required. Declared function must have a name.
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.test(function myTestName() {
- * assertEquals("hello", "hello");
- * });
- *
- * Deno.test(async function myOtherTestName() {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * });
- * ```
- *
- * @category Testing
- */
- (fn: (t: TestContext) => void | Promise<void>): void;
- /** Register a test which will be run when `deno test` is used on the command
- * line and the containing module looks like a test module.
- *
- * `fn` can be async if required.
- *
- * ```ts
- * import { assert, fail, assertEquals } from "jsr:@std/assert";
- *
- * Deno.test("My test description", { permissions: { read: true } }, (): void => {
- * assertEquals("hello", "hello");
- * });
- *
- * Deno.test("My async test description", { permissions: { read: false } }, async (): Promise<void> => {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * });
- * ```
- *
- * @category Testing
- */
- (
- name: string,
- options: Omit<TestDefinition, "fn" | "name">,
- fn: (t: TestContext) => void | Promise<void>,
- ): void;
- /** Register a test which will be run when `deno test` is used on the command
- * line and the containing module looks like a test module.
- *
- * `fn` can be async if required.
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.test(
- * {
- * name: "My test description",
- * permissions: { read: true },
- * },
- * () => {
- * assertEquals("hello", "hello");
- * },
- * );
- *
- * Deno.test(
- * {
- * name: "My async test description",
- * permissions: { read: false },
- * },
- * async () => {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * },
- * );
- * ```
- *
- * @category Testing
- */
- (
- options: Omit<TestDefinition, "fn" | "name">,
- fn: (t: TestContext) => void | Promise<void>,
- ): void;
- /** Register a test which will be run when `deno test` is used on the command
- * line and the containing module looks like a test module.
- *
- * `fn` can be async if required. Declared function must have a name.
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.test(
- * { permissions: { read: true } },
- * function myTestName() {
- * assertEquals("hello", "hello");
- * },
- * );
- *
- * Deno.test(
- * { permissions: { read: false } },
- * async function myOtherTestName() {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * },
- * );
- * ```
- *
- * @category Testing
- */
- (
- options: Omit<TestDefinition, "fn">,
- fn: (t: TestContext) => void | Promise<void>,
- ): void;
- /** Shorthand property for ignoring a particular test case.
- *
- * @category Testing
- */
- ignore(t: Omit<TestDefinition, "ignore">): void;
- /** Shorthand property for ignoring a particular test case.
- *
- * @category Testing
- */
- ignore(
- name: string,
- fn: (t: TestContext) => void | Promise<void>,
- ): void;
- /** Shorthand property for ignoring a particular test case.
- *
- * @category Testing
- */
- ignore(fn: (t: TestContext) => void | Promise<void>): void;
- /** Shorthand property for ignoring a particular test case.
- *
- * @category Testing
- */
- ignore(
- name: string,
- options: Omit<TestDefinition, "fn" | "name" | "ignore">,
- fn: (t: TestContext) => void | Promise<void>,
- ): void;
- /** Shorthand property for ignoring a particular test case.
- *
- * @category Testing
- */
- ignore(
- options: Omit<TestDefinition, "fn" | "name" | "ignore">,
- fn: (t: TestContext) => void | Promise<void>,
- ): void;
- /** Shorthand property for ignoring a particular test case.
- *
- * @category Testing
- */
- ignore(
- options: Omit<TestDefinition, "fn" | "ignore">,
- fn: (t: TestContext) => void | Promise<void>,
- ): void;
- /** Shorthand property for focusing a particular test case.
- *
- * @category Testing
- */
- only(t: Omit<TestDefinition, "only">): void;
- /** Shorthand property for focusing a particular test case.
- *
- * @category Testing
- */
- only(
- name: string,
- fn: (t: TestContext) => void | Promise<void>,
- ): void;
- /** Shorthand property for focusing a particular test case.
- *
- * @category Testing
- */
- only(fn: (t: TestContext) => void | Promise<void>): void;
- /** Shorthand property for focusing a particular test case.
- *
- * @category Testing
- */
- only(
- name: string,
- options: Omit<TestDefinition, "fn" | "name" | "only">,
- fn: (t: TestContext) => void | Promise<void>,
- ): void;
- /** Shorthand property for focusing a particular test case.
- *
- * @category Testing
- */
- only(
- options: Omit<TestDefinition, "fn" | "name" | "only">,
- fn: (t: TestContext) => void | Promise<void>,
- ): void;
- /** Shorthand property for focusing a particular test case.
- *
- * @category Testing
- */
- only(
- options: Omit<TestDefinition, "fn" | "only">,
- fn: (t: TestContext) => void | Promise<void>,
- ): void;
- }
- /**
- * Context that is passed to a benchmarked function. The instance is shared
- * between iterations of the benchmark. Its methods can be used for example
- * to override of the measured portion of the function.
- *
- * @category Testing
- */
- export interface BenchContext {
- /** The current benchmark name. */
- name: string;
- /** The string URL of the current benchmark. */
- origin: string;
- /** Restarts the timer for the bench measurement. This should be called
- * after doing setup work which should not be measured.
- *
- * Warning: This method should not be used for benchmarks averaging less
- * than 10μs per iteration. In such cases it will be disabled but the call
- * will still have noticeable overhead, resulting in a warning.
- *
- * ```ts
- * Deno.bench("foo", async (t) => {
- * const data = await Deno.readFile("data.txt");
- * t.start();
- * // some operation on `data`...
- * });
- * ```
- */
- start(): void;
- /** End the timer early for the bench measurement. This should be called
- * before doing teardown work which should not be measured.
- *
- * Warning: This method should not be used for benchmarks averaging less
- * than 10μs per iteration. In such cases it will be disabled but the call
- * will still have noticeable overhead, resulting in a warning.
- *
- * ```ts
- * Deno.bench("foo", async (t) => {
- * using file = await Deno.open("data.txt");
- * t.start();
- * // some operation on `file`...
- * t.end();
- * });
- * ```
- */
- end(): void;
- }
- /**
- * The interface for defining a benchmark test using {@linkcode Deno.bench}.
- *
- * @category Testing
- */
- export interface BenchDefinition {
- /** The test function which will be benchmarked. */
- fn: (b: BenchContext) => void | Promise<void>;
- /** The name of the test, which will be used in displaying the results. */
- name: string;
- /** If truthy, the benchmark test will be ignored/skipped. */
- ignore?: boolean;
- /** Group name for the benchmark.
- *
- * Grouped benchmarks produce a group time summary, where the difference
- * in performance between each test of the group is compared. */
- group?: string;
- /** Benchmark should be used as the baseline for other benchmarks.
- *
- * If there are multiple baselines in a group, the first one is used as the
- * baseline. */
- baseline?: boolean;
- /** If at least one bench has `only` set to true, only run benches that have
- * `only` set to `true` and fail the bench suite. */
- only?: boolean;
- /** Ensure the bench case does not prematurely cause the process to exit,
- * for example via a call to {@linkcode Deno.exit}.
- *
- * @default {true} */
- sanitizeExit?: boolean;
- /** Specifies the permissions that should be used to run the bench.
- *
- * Set this to `"inherit"` to keep the calling thread's permissions.
- *
- * Set this to `"none"` to revoke all permissions.
- *
- * @default {"inherit"}
- */
- permissions?: PermissionOptions;
- }
- /**
- * Register a benchmark test which will be run when `deno bench` is used on
- * the command line and the containing module looks like a bench module.
- *
- * If the test function (`fn`) returns a promise or is async, the test runner
- * will await resolution to consider the test complete.
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.bench({
- * name: "example test",
- * fn() {
- * assertEquals("world", "world");
- * },
- * });
- *
- * Deno.bench({
- * name: "example ignored test",
- * ignore: Deno.build.os === "windows",
- * fn() {
- * // This test is ignored only on Windows machines
- * },
- * });
- *
- * Deno.bench({
- * name: "example async test",
- * async fn() {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * }
- * });
- * ```
- *
- * @category Testing
- */
- export function bench(b: BenchDefinition): void;
- /**
- * Register a benchmark test which will be run when `deno bench` is used on
- * the command line and the containing module looks like a bench module.
- *
- * If the test function (`fn`) returns a promise or is async, the test runner
- * will await resolution to consider the test complete.
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.bench("My test description", () => {
- * assertEquals("hello", "hello");
- * });
- *
- * Deno.bench("My async test description", async () => {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * });
- * ```
- *
- * @category Testing
- */
- export function bench(
- name: string,
- fn: (b: BenchContext) => void | Promise<void>,
- ): void;
- /**
- * Register a benchmark test which will be run when `deno bench` is used on
- * the command line and the containing module looks like a bench module.
- *
- * If the test function (`fn`) returns a promise or is async, the test runner
- * will await resolution to consider the test complete.
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.bench(function myTestName() {
- * assertEquals("hello", "hello");
- * });
- *
- * Deno.bench(async function myOtherTestName() {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * });
- * ```
- *
- * @category Testing
- */
- export function bench(fn: (b: BenchContext) => void | Promise<void>): void;
- /**
- * Register a benchmark test which will be run when `deno bench` is used on
- * the command line and the containing module looks like a bench module.
- *
- * If the test function (`fn`) returns a promise or is async, the test runner
- * will await resolution to consider the test complete.
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.bench(
- * "My test description",
- * { permissions: { read: true } },
- * () => {
- * assertEquals("hello", "hello");
- * }
- * );
- *
- * Deno.bench(
- * "My async test description",
- * { permissions: { read: false } },
- * async () => {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * }
- * );
- * ```
- *
- * @category Testing
- */
- export function bench(
- name: string,
- options: Omit<BenchDefinition, "fn" | "name">,
- fn: (b: BenchContext) => void | Promise<void>,
- ): void;
- /**
- * Register a benchmark test which will be run when `deno bench` is used on
- * the command line and the containing module looks like a bench module.
- *
- * If the test function (`fn`) returns a promise or is async, the test runner
- * will await resolution to consider the test complete.
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.bench(
- * { name: "My test description", permissions: { read: true } },
- * () => {
- * assertEquals("hello", "hello");
- * }
- * );
- *
- * Deno.bench(
- * { name: "My async test description", permissions: { read: false } },
- * async () => {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * }
- * );
- * ```
- *
- * @category Testing
- */
- export function bench(
- options: Omit<BenchDefinition, "fn">,
- fn: (b: BenchContext) => void | Promise<void>,
- ): void;
- /**
- * Register a benchmark test which will be run when `deno bench` is used on
- * the command line and the containing module looks like a bench module.
- *
- * If the test function (`fn`) returns a promise or is async, the test runner
- * will await resolution to consider the test complete.
- *
- * ```ts
- * import { assertEquals } from "jsr:@std/assert";
- *
- * Deno.bench(
- * { permissions: { read: true } },
- * function myTestName() {
- * assertEquals("hello", "hello");
- * }
- * );
- *
- * Deno.bench(
- * { permissions: { read: false } },
- * async function myOtherTestName() {
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello_world.txt");
- * assertEquals(decoder.decode(data), "Hello world");
- * }
- * );
- * ```
- *
- * @category Testing
- */
- export function bench(
- options: Omit<BenchDefinition, "fn" | "name">,
- fn: (b: BenchContext) => void | Promise<void>,
- ): void;
- /** Exit the Deno process with optional exit code.
- *
- * If no exit code is supplied then Deno will exit with return code of `0`.
- *
- * In worker contexts this is an alias to `self.close();`.
- *
- * ```ts
- * Deno.exit(5);
- * ```
- *
- * @category Runtime
- */
- export function exit(code?: number): never;
- /** The exit code for the Deno process.
- *
- * If no exit code has been supplied, then Deno will assume a return code of `0`.
- *
- * When setting an exit code value, a number or non-NaN string must be provided,
- * otherwise a TypeError will be thrown.
- *
- * ```ts
- * console.log(Deno.exitCode); //-> 0
- * Deno.exitCode = 1;
- * console.log(Deno.exitCode); //-> 1
- * ```
- *
- * @category Runtime
- */
- export var exitCode: number;
- /** An interface containing methods to interact with the process environment
- * variables.
- *
- * @tags allow-env
- * @category Runtime
- */
- export interface Env {
- /** Retrieve the value of an environment variable.
- *
- * Returns `undefined` if the supplied environment variable is not defined.
- *
- * ```ts
- * console.log(Deno.env.get("HOME")); // e.g. outputs "/home/alice"
- * console.log(Deno.env.get("MADE_UP_VAR")); // outputs "undefined"
- * ```
- *
- * Requires `allow-env` permission.
- *
- * @tags allow-env
- */
- get(key: string): string | undefined;
- /** Set the value of an environment variable.
- *
- * ```ts
- * Deno.env.set("SOME_VAR", "Value");
- * Deno.env.get("SOME_VAR"); // outputs "Value"
- * ```
- *
- * Requires `allow-env` permission.
- *
- * @tags allow-env
- */
- set(key: string, value: string): void;
- /** Delete the value of an environment variable.
- *
- * ```ts
- * Deno.env.set("SOME_VAR", "Value");
- * Deno.env.delete("SOME_VAR"); // outputs "undefined"
- * ```
- *
- * Requires `allow-env` permission.
- *
- * @tags allow-env
- */
- delete(key: string): void;
- /** Check whether an environment variable is present or not.
- *
- * ```ts
- * Deno.env.set("SOME_VAR", "Value");
- * Deno.env.has("SOME_VAR"); // outputs true
- * ```
- *
- * Requires `allow-env` permission.
- *
- * @tags allow-env
- */
- has(key: string): boolean;
- /** Returns a snapshot of the environment variables at invocation as a
- * simple object of keys and values.
- *
- * ```ts
- * Deno.env.set("TEST_VAR", "A");
- * const myEnv = Deno.env.toObject();
- * console.log(myEnv.SHELL);
- * Deno.env.set("TEST_VAR", "B");
- * console.log(myEnv.TEST_VAR); // outputs "A"
- * ```
- *
- * Requires `allow-env` permission.
- *
- * @tags allow-env
- */
- toObject(): { [index: string]: string };
- }
- /** An interface containing methods to interact with the process environment
- * variables.
- *
- * @tags allow-env
- * @category Runtime
- */
- export const env: Env;
- /**
- * Returns the path to the current deno executable.
- *
- * ```ts
- * console.log(Deno.execPath()); // e.g. "/home/alice/.local/bin/deno"
- * ```
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category Runtime
- */
- export function execPath(): string;
- /**
- * Change the current working directory to the specified path.
- *
- * ```ts
- * Deno.chdir("/home/userA");
- * Deno.chdir("../userB");
- * Deno.chdir("C:\\Program Files (x86)\\Java");
- * ```
- *
- * Throws {@linkcode Deno.errors.NotFound} if directory not found.
- *
- * Throws {@linkcode Deno.errors.PermissionDenied} if the user does not have
- * operating system file access rights.
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category Runtime
- */
- export function chdir(directory: string | URL): void;
- /**
- * Return a string representing the current working directory.
- *
- * If the current directory can be reached via multiple paths (due to symbolic
- * links), `cwd()` may return any one of them.
- *
- * ```ts
- * const currentWorkingDirectory = Deno.cwd();
- * ```
- *
- * Throws {@linkcode Deno.errors.NotFound} if directory not available.
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category Runtime
- */
- export function cwd(): string;
- /**
- * Creates `newpath` as a hard link to `oldpath`.
- *
- * ```ts
- * await Deno.link("old/name", "new/name");
- * ```
- *
- * Requires `allow-read` and `allow-write` permissions.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function link(oldpath: string, newpath: string): Promise<void>;
- /**
- * Synchronously creates `newpath` as a hard link to `oldpath`.
- *
- * ```ts
- * Deno.linkSync("old/name", "new/name");
- * ```
- *
- * Requires `allow-read` and `allow-write` permissions.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function linkSync(oldpath: string, newpath: string): void;
- /**
- * A enum which defines the seek mode for IO related APIs that support
- * seeking.
- *
- * @category I/O */
- export enum SeekMode {
- /* Seek from the start of the file/resource. */
- Start = 0,
- /* Seek from the current position within the file/resource. */
- Current = 1,
- /* Seek from the end of the current file/resource. */
- End = 2,
- }
- /**
- * An abstract interface which when implemented provides an interface to read
- * bytes into an array buffer asynchronously.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O */
- export interface Reader {
- /** Reads up to `p.byteLength` bytes into `p`. It resolves to the number of
- * bytes read (`0` < `n` <= `p.byteLength`) and rejects if any error
- * encountered. Even if `read()` resolves to `n` < `p.byteLength`, it may
- * use all of `p` as scratch space during the call. If some data is
- * available but not `p.byteLength` bytes, `read()` conventionally resolves
- * to what is available instead of waiting for more.
- *
- * When `read()` encounters end-of-file condition, it resolves to EOF
- * (`null`).
- *
- * When `read()` encounters an error, it rejects with an error.
- *
- * Callers should always process the `n` > `0` bytes returned before
- * considering the EOF (`null`). Doing so correctly handles I/O errors that
- * happen after reading some bytes and also both of the allowed EOF
- * behaviors.
- *
- * Implementations should not retain a reference to `p`.
- *
- * Use
- * {@linkcode https://jsr.io/@std/io/doc/iterate-reader/~/iterateReader | iterateReader}
- * to turn {@linkcode Reader} into an {@linkcode AsyncIterator}.
- */
- read(p: Uint8Array): Promise<number | null>;
- }
- /**
- * An abstract interface which when implemented provides an interface to read
- * bytes into an array buffer synchronously.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O */
- export interface ReaderSync {
- /** Reads up to `p.byteLength` bytes into `p`. It resolves to the number
- * of bytes read (`0` < `n` <= `p.byteLength`) and rejects if any error
- * encountered. Even if `readSync()` returns `n` < `p.byteLength`, it may use
- * all of `p` as scratch space during the call. If some data is available
- * but not `p.byteLength` bytes, `readSync()` conventionally returns what is
- * available instead of waiting for more.
- *
- * When `readSync()` encounters end-of-file condition, it returns EOF
- * (`null`).
- *
- * When `readSync()` encounters an error, it throws with an error.
- *
- * Callers should always process the `n` > `0` bytes returned before
- * considering the EOF (`null`). Doing so correctly handles I/O errors that
- * happen after reading some bytes and also both of the allowed EOF
- * behaviors.
- *
- * Implementations should not retain a reference to `p`.
- *
- * Use
- * {@linkcode https://jsr.io/@std/io/doc/iterate-reader/~/iterateReaderSync | iterateReaderSync}
- * to turn {@linkcode ReaderSync} into an {@linkcode Iterator}.
- */
- readSync(p: Uint8Array): number | null;
- }
- /**
- * An abstract interface which when implemented provides an interface to write
- * bytes from an array buffer to a file/resource asynchronously.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O */
- export interface Writer {
- /** Writes `p.byteLength` bytes from `p` to the underlying data stream. It
- * resolves to the number of bytes written from `p` (`0` <= `n` <=
- * `p.byteLength`) or reject with the error encountered that caused the
- * write to stop early. `write()` must reject with a non-null error if
- * would resolve to `n` < `p.byteLength`. `write()` must not modify the
- * slice data, even temporarily.
- *
- * This function is one of the lowest
- * level APIs and most users should not work with this directly, but rather
- * use {@linkcode https://jsr.io/@std/io/doc/write-all/~/writeAll | writeAll}
- * instead.
- *
- * Implementations should not retain a reference to `p`.
- */
- write(p: Uint8Array): Promise<number>;
- }
- /**
- * An abstract interface which when implemented provides an interface to write
- * bytes from an array buffer to a file/resource synchronously.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O */
- export interface WriterSync {
- /** Writes `p.byteLength` bytes from `p` to the underlying data
- * stream. It returns the number of bytes written from `p` (`0` <= `n`
- * <= `p.byteLength`) and any error encountered that caused the write to
- * stop early. `writeSync()` must throw a non-null error if it returns `n` <
- * `p.byteLength`. `writeSync()` must not modify the slice data, even
- * temporarily.
- *
- * Implementations should not retain a reference to `p`.
- */
- writeSync(p: Uint8Array): number;
- }
- /**
- * An abstract interface which when implemented provides an interface to close
- * files/resources that were previously opened.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O */
- export interface Closer {
- /** Closes the resource, "freeing" the backing file/resource. */
- close(): void;
- }
- /**
- * An abstract interface which when implemented provides an interface to seek
- * within an open file/resource asynchronously.
- *
- * @category I/O */
- export interface Seeker {
- /** Seek sets the offset for the next `read()` or `write()` to offset,
- * interpreted according to `whence`: `Start` means relative to the
- * start of the file, `Current` means relative to the current offset,
- * and `End` means relative to the end. Seek resolves to the new offset
- * relative to the start of the file.
- *
- * Seeking to an offset before the start of the file is an error. Seeking to
- * any positive offset is legal, but the behavior of subsequent I/O
- * operations on the underlying object is implementation-dependent.
- *
- * It resolves with the updated offset.
- */
- seek(offset: number | bigint, whence: SeekMode): Promise<number>;
- }
- /**
- * An abstract interface which when implemented provides an interface to seek
- * within an open file/resource synchronously.
- *
- * @category I/O */
- export interface SeekerSync {
- /** Seek sets the offset for the next `readSync()` or `writeSync()` to
- * offset, interpreted according to `whence`: `Start` means relative
- * to the start of the file, `Current` means relative to the current
- * offset, and `End` means relative to the end.
- *
- * Seeking to an offset before the start of the file is an error. Seeking to
- * any positive offset is legal, but the behavior of subsequent I/O
- * operations on the underlying object is implementation-dependent.
- *
- * It returns the updated offset.
- */
- seekSync(offset: number | bigint, whence: SeekMode): number;
- }
- /**
- * Copies from `src` to `dst` until either EOF (`null`) is read from `src` or
- * an error occurs. It resolves to the number of bytes copied or rejects with
- * the first error encountered while copying.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- *
- * @param src The source to copy from
- * @param dst The destination to copy to
- * @param options Can be used to tune size of the buffer. Default size is 32kB
- */
- export function copy(
- src: Reader,
- dst: Writer,
- options?: { bufSize?: number },
- ): Promise<number>;
- /**
- * Turns a Reader, `r`, into an async iterator.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function iter(
- r: Reader,
- options?: { bufSize?: number },
- ): AsyncIterableIterator<Uint8Array>;
- /**
- * Turns a ReaderSync, `r`, into an iterator.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function iterSync(
- r: ReaderSync,
- options?: {
- bufSize?: number;
- },
- ): IterableIterator<Uint8Array>;
- /** Open a file and resolve to an instance of {@linkcode Deno.FsFile}. The
- * file does not need to previously exist if using the `create` or `createNew`
- * open options. The caller may have the resulting file automatically closed
- * by the runtime once it's out of scope by declaring the file variable with
- * the `using` keyword.
- *
- * ```ts
- * using file = await Deno.open("/foo/bar.txt", { read: true, write: true });
- * // Do work with file
- * ```
- *
- * Alternatively, the caller may manually close the resource when finished with
- * it.
- *
- * ```ts
- * const file = await Deno.open("/foo/bar.txt", { read: true, write: true });
- * // Do work with file
- * file.close();
- * ```
- *
- * Requires `allow-read` and/or `allow-write` permissions depending on
- * options.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function open(
- path: string | URL,
- options?: OpenOptions,
- ): Promise<FsFile>;
- /** Synchronously open a file and return an instance of
- * {@linkcode Deno.FsFile}. The file does not need to previously exist if
- * using the `create` or `createNew` open options. The caller may have the
- * resulting file automatically closed by the runtime once it's out of scope
- * by declaring the file variable with the `using` keyword.
- *
- * ```ts
- * using file = Deno.openSync("/foo/bar.txt", { read: true, write: true });
- * // Do work with file
- * ```
- *
- * Alternatively, the caller may manually close the resource when finished with
- * it.
- *
- * ```ts
- * const file = Deno.openSync("/foo/bar.txt", { read: true, write: true });
- * // Do work with file
- * file.close();
- * ```
- *
- * Requires `allow-read` and/or `allow-write` permissions depending on
- * options.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function openSync(path: string | URL, options?: OpenOptions): FsFile;
- /** Creates a file if none exists or truncates an existing file and resolves to
- * an instance of {@linkcode Deno.FsFile}.
- *
- * ```ts
- * const file = await Deno.create("/foo/bar.txt");
- * ```
- *
- * Requires `allow-read` and `allow-write` permissions.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function create(path: string | URL): Promise<FsFile>;
- /** Creates a file if none exists or truncates an existing file and returns
- * an instance of {@linkcode Deno.FsFile}.
- *
- * ```ts
- * const file = Deno.createSync("/foo/bar.txt");
- * ```
- *
- * Requires `allow-read` and `allow-write` permissions.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function createSync(path: string | URL): FsFile;
- /** Read from a resource ID (`rid`) into an array buffer (`buffer`).
- *
- * Resolves to either the number of bytes read during the operation or EOF
- * (`null`) if there was nothing more to read.
- *
- * It is possible for a read to successfully return with `0` bytes. This does
- * not indicate EOF.
- *
- * This function is one of the lowest level APIs and most users should not
- * work with this directly, but rather use {@linkcode ReadableStream} and
- * {@linkcode https://jsr.io/@std/streams/doc/to-array-buffer/~/toArrayBuffer | toArrayBuffer}
- * instead.
- *
- * **It is not guaranteed that the full buffer will be read in a single call.**
- *
- * ```ts
- * // if "/foo/bar.txt" contains the text "hello world":
- * using file = await Deno.open("/foo/bar.txt");
- * const buf = new Uint8Array(100);
- * const numberOfBytesRead = await Deno.read(file.rid, buf); // 11 bytes
- * const text = new TextDecoder().decode(buf); // "hello world"
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function read(rid: number, buffer: Uint8Array): Promise<number | null>;
- /** Synchronously read from a resource ID (`rid`) into an array buffer
- * (`buffer`).
- *
- * Returns either the number of bytes read during the operation or EOF
- * (`null`) if there was nothing more to read.
- *
- * It is possible for a read to successfully return with `0` bytes. This does
- * not indicate EOF.
- *
- * This function is one of the lowest level APIs and most users should not
- * work with this directly, but rather use {@linkcode ReadableStream} and
- * {@linkcode https://jsr.io/@std/streams/doc/to-array-buffer/~/toArrayBuffer | toArrayBuffer}
- * instead.
- *
- * **It is not guaranteed that the full buffer will be read in a single
- * call.**
- *
- * ```ts
- * // if "/foo/bar.txt" contains the text "hello world":
- * using file = Deno.openSync("/foo/bar.txt");
- * const buf = new Uint8Array(100);
- * const numberOfBytesRead = Deno.readSync(file.rid, buf); // 11 bytes
- * const text = new TextDecoder().decode(buf); // "hello world"
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function readSync(rid: number, buffer: Uint8Array): number | null;
- /** Write to the resource ID (`rid`) the contents of the array buffer (`data`).
- *
- * Resolves to the number of bytes written. This function is one of the lowest
- * level APIs and most users should not work with this directly, but rather
- * use {@linkcode WritableStream}, {@linkcode ReadableStream.from} and
- * {@linkcode ReadableStream.pipeTo}.
- *
- * **It is not guaranteed that the full buffer will be written in a single
- * call.**
- *
- * ```ts
- * const encoder = new TextEncoder();
- * const data = encoder.encode("Hello world");
- * using file = await Deno.open("/foo/bar.txt", { write: true });
- * const bytesWritten = await Deno.write(file.rid, data); // 11
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function write(rid: number, data: Uint8Array): Promise<number>;
- /** Synchronously write to the resource ID (`rid`) the contents of the array
- * buffer (`data`).
- *
- * Returns the number of bytes written. This function is one of the lowest
- * level APIs and most users should not work with this directly, but rather
- * use {@linkcode WritableStream}, {@linkcode ReadableStream.from} and
- * {@linkcode ReadableStream.pipeTo}.
- *
- * **It is not guaranteed that the full buffer will be written in a single
- * call.**
- *
- * ```ts
- * const encoder = new TextEncoder();
- * const data = encoder.encode("Hello world");
- * using file = Deno.openSync("/foo/bar.txt", { write: true });
- * const bytesWritten = Deno.writeSync(file.rid, data); // 11
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function writeSync(rid: number, data: Uint8Array): number;
- /** Seek a resource ID (`rid`) to the given `offset` under mode given by `whence`.
- * The call resolves to the new position within the resource (bytes from the start).
- *
- * ```ts
- * // Given file.rid pointing to file with "Hello world", which is 11 bytes long:
- * using file = await Deno.open(
- * "hello.txt",
- * { read: true, write: true, truncate: true, create: true },
- * );
- * await file.write(new TextEncoder().encode("Hello world"));
- *
- * // advance cursor 6 bytes
- * const cursorPosition = await Deno.seek(file.rid, 6, Deno.SeekMode.Start);
- * console.log(cursorPosition); // 6
- * const buf = new Uint8Array(100);
- * await file.read(buf);
- * console.log(new TextDecoder().decode(buf)); // "world"
- * ```
- *
- * The seek modes work as follows:
- *
- * ```ts
- * // Given file.rid pointing to file with "Hello world", which is 11 bytes long:
- * using file = await Deno.open(
- * "hello.txt",
- * { read: true, write: true, truncate: true, create: true },
- * );
- * await file.write(new TextEncoder().encode("Hello world"));
- *
- * // Seek 6 bytes from the start of the file
- * console.log(await Deno.seek(file.rid, 6, Deno.SeekMode.Start)); // "6"
- * // Seek 2 more bytes from the current position
- * console.log(await Deno.seek(file.rid, 2, Deno.SeekMode.Current)); // "8"
- * // Seek backwards 2 bytes from the end of the file
- * console.log(await Deno.seek(file.rid, -2, Deno.SeekMode.End)); // "9" (i.e. 11-2)
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function seek(
- rid: number,
- offset: number | bigint,
- whence: SeekMode,
- ): Promise<number>;
- /** Synchronously seek a resource ID (`rid`) to the given `offset` under mode
- * given by `whence`. The new position within the resource (bytes from the
- * start) is returned.
- *
- * ```ts
- * using file = Deno.openSync(
- * "hello.txt",
- * { read: true, write: true, truncate: true, create: true },
- * );
- * file.writeSync(new TextEncoder().encode("Hello world"));
- *
- * // advance cursor 6 bytes
- * const cursorPosition = Deno.seekSync(file.rid, 6, Deno.SeekMode.Start);
- * console.log(cursorPosition); // 6
- * const buf = new Uint8Array(100);
- * file.readSync(buf);
- * console.log(new TextDecoder().decode(buf)); // "world"
- * ```
- *
- * The seek modes work as follows:
- *
- * ```ts
- * // Given file.rid pointing to file with "Hello world", which is 11 bytes long:
- * using file = Deno.openSync(
- * "hello.txt",
- * { read: true, write: true, truncate: true, create: true },
- * );
- * file.writeSync(new TextEncoder().encode("Hello world"));
- *
- * // Seek 6 bytes from the start of the file
- * console.log(Deno.seekSync(file.rid, 6, Deno.SeekMode.Start)); // "6"
- * // Seek 2 more bytes from the current position
- * console.log(Deno.seekSync(file.rid, 2, Deno.SeekMode.Current)); // "8"
- * // Seek backwards 2 bytes from the end of the file
- * console.log(Deno.seekSync(file.rid, -2, Deno.SeekMode.End)); // "9" (i.e. 11-2)
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function seekSync(
- rid: number,
- offset: number | bigint,
- whence: SeekMode,
- ): number;
- /**
- * Flushes any pending data and metadata operations of the given file stream
- * to disk.
- *
- * ```ts
- * const file = await Deno.open(
- * "my_file.txt",
- * { read: true, write: true, create: true },
- * );
- * await file.write(new TextEncoder().encode("Hello World"));
- * await file.truncate(1);
- * await Deno.fsync(file.rid);
- * console.log(await Deno.readTextFile("my_file.txt")); // H
- * ```
- *
- * @category File System
- */
- export function fsync(rid: number): Promise<void>;
- /**
- * Synchronously flushes any pending data and metadata operations of the given
- * file stream to disk.
- *
- * ```ts
- * const file = Deno.openSync(
- * "my_file.txt",
- * { read: true, write: true, create: true },
- * );
- * file.writeSync(new TextEncoder().encode("Hello World"));
- * file.truncateSync(1);
- * Deno.fsyncSync(file.rid);
- * console.log(Deno.readTextFileSync("my_file.txt")); // H
- * ```
- *
- * @category File System
- */
- export function fsyncSync(rid: number): void;
- /**
- * Flushes any pending data operations of the given file stream to disk.
- * ```ts
- * const file = await Deno.open(
- * "my_file.txt",
- * { read: true, write: true, create: true },
- * );
- * await file.write(new TextEncoder().encode("Hello World"));
- * await Deno.fdatasync(file.rid);
- * console.log(await Deno.readTextFile("my_file.txt")); // Hello World
- * ```
- *
- * @category File System
- */
- export function fdatasync(rid: number): Promise<void>;
- /**
- * Synchronously flushes any pending data operations of the given file stream
- * to disk.
- *
- * ```ts
- * const file = Deno.openSync(
- * "my_file.txt",
- * { read: true, write: true, create: true },
- * );
- * file.writeSync(new TextEncoder().encode("Hello World"));
- * Deno.fdatasyncSync(file.rid);
- * console.log(Deno.readTextFileSync("my_file.txt")); // Hello World
- * ```
- *
- * @category File System
- */
- export function fdatasyncSync(rid: number): void;
- /** Close the given resource ID (`rid`) which has been previously opened, such
- * as via opening or creating a file. Closing a file when you are finished
- * with it is important to avoid leaking resources.
- *
- * ```ts
- * const file = await Deno.open("my_file.txt");
- * // do work with "file" object
- * Deno.close(file.rid);
- * ```
- *
- * It is recommended to define the variable with the `using` keyword so the
- * runtime will automatically close the resource when it goes out of scope.
- * Doing so negates the need to manually close the resource.
- *
- * ```ts
- * using file = await Deno.open("my_file.txt");
- * // do work with "file" object
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function close(rid: number): void;
- /** The Deno abstraction for reading and writing files.
- *
- * This is the most straight forward way of handling files within Deno and is
- * recommended over using the discrete functions within the `Deno` namespace.
- *
- * ```ts
- * using file = await Deno.open("/foo/bar.txt", { read: true });
- * const fileInfo = await file.stat();
- * if (fileInfo.isFile) {
- * const buf = new Uint8Array(100);
- * const numberOfBytesRead = await file.read(buf); // 11 bytes
- * const text = new TextDecoder().decode(buf); // "hello world"
- * }
- * ```
- *
- * @category File System
- */
- export class FsFile
- implements
- Reader,
- ReaderSync,
- Writer,
- WriterSync,
- Seeker,
- SeekerSync,
- Closer,
- Disposable {
- /**
- * The resource ID associated with the file instance. The resource ID
- * should be considered an opaque reference to resource.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- readonly rid: number;
- /** A {@linkcode ReadableStream} instance representing to the byte contents
- * of the file. This makes it easy to interoperate with other web streams
- * based APIs.
- *
- * ```ts
- * using file = await Deno.open("my_file.txt", { read: true });
- * const decoder = new TextDecoder();
- * for await (const chunk of file.readable) {
- * console.log(decoder.decode(chunk));
- * }
- * ```
- */
- readonly readable: ReadableStream<Uint8Array>;
- /** A {@linkcode WritableStream} instance to write the contents of the
- * file. This makes it easy to interoperate with other web streams based
- * APIs.
- *
- * ```ts
- * const items = ["hello", "world"];
- * using file = await Deno.open("my_file.txt", { write: true });
- * const encoder = new TextEncoder();
- * const writer = file.writable.getWriter();
- * for (const item of items) {
- * await writer.write(encoder.encode(item));
- * }
- * ```
- */
- readonly writable: WritableStream<Uint8Array>;
- /**
- * The constructor which takes a resource ID. Generally `FsFile` should
- * not be constructed directly. Instead use {@linkcode Deno.open} or
- * {@linkcode Deno.openSync} to create a new instance of `FsFile`.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- constructor(rid: number);
- /** Write the contents of the array buffer (`p`) to the file.
- *
- * Resolves to the number of bytes written.
- *
- * **It is not guaranteed that the full buffer will be written in a single
- * call.**
- *
- * ```ts
- * const encoder = new TextEncoder();
- * const data = encoder.encode("Hello world");
- * using file = await Deno.open("/foo/bar.txt", { write: true });
- * const bytesWritten = await file.write(data); // 11
- * ```
- *
- * @category I/O
- */
- write(p: Uint8Array): Promise<number>;
- /** Synchronously write the contents of the array buffer (`p`) to the file.
- *
- * Returns the number of bytes written.
- *
- * **It is not guaranteed that the full buffer will be written in a single
- * call.**
- *
- * ```ts
- * const encoder = new TextEncoder();
- * const data = encoder.encode("Hello world");
- * using file = Deno.openSync("/foo/bar.txt", { write: true });
- * const bytesWritten = file.writeSync(data); // 11
- * ```
- */
- writeSync(p: Uint8Array): number;
- /** Truncates (or extends) the file to reach the specified `len`. If `len`
- * is not specified, then the entire file contents are truncated.
- *
- * ### Truncate the entire file
- *
- * ```ts
- * using file = await Deno.open("my_file.txt", { write: true });
- * await file.truncate();
- * ```
- *
- * ### Truncate part of the file
- *
- * ```ts
- * // if "my_file.txt" contains the text "hello world":
- * using file = await Deno.open("my_file.txt", { write: true });
- * await file.truncate(7);
- * const buf = new Uint8Array(100);
- * await file.read(buf);
- * const text = new TextDecoder().decode(buf); // "hello w"
- * ```
- */
- truncate(len?: number): Promise<void>;
- /** Synchronously truncates (or extends) the file to reach the specified
- * `len`. If `len` is not specified, then the entire file contents are
- * truncated.
- *
- * ### Truncate the entire file
- *
- * ```ts
- * using file = Deno.openSync("my_file.txt", { write: true });
- * file.truncateSync();
- * ```
- *
- * ### Truncate part of the file
- *
- * ```ts
- * // if "my_file.txt" contains the text "hello world":
- * using file = Deno.openSync("my_file.txt", { write: true });
- * file.truncateSync(7);
- * const buf = new Uint8Array(100);
- * file.readSync(buf);
- * const text = new TextDecoder().decode(buf); // "hello w"
- * ```
- */
- truncateSync(len?: number): void;
- /** Read the file into an array buffer (`p`).
- *
- * Resolves to either the number of bytes read during the operation or EOF
- * (`null`) if there was nothing more to read.
- *
- * It is possible for a read to successfully return with `0` bytes. This
- * does not indicate EOF.
- *
- * **It is not guaranteed that the full buffer will be read in a single
- * call.**
- *
- * ```ts
- * // if "/foo/bar.txt" contains the text "hello world":
- * using file = await Deno.open("/foo/bar.txt");
- * const buf = new Uint8Array(100);
- * const numberOfBytesRead = await file.read(buf); // 11 bytes
- * const text = new TextDecoder().decode(buf); // "hello world"
- * ```
- */
- read(p: Uint8Array): Promise<number | null>;
- /** Synchronously read from the file into an array buffer (`p`).
- *
- * Returns either the number of bytes read during the operation or EOF
- * (`null`) if there was nothing more to read.
- *
- * It is possible for a read to successfully return with `0` bytes. This
- * does not indicate EOF.
- *
- * **It is not guaranteed that the full buffer will be read in a single
- * call.**
- *
- * ```ts
- * // if "/foo/bar.txt" contains the text "hello world":
- * using file = Deno.openSync("/foo/bar.txt");
- * const buf = new Uint8Array(100);
- * const numberOfBytesRead = file.readSync(buf); // 11 bytes
- * const text = new TextDecoder().decode(buf); // "hello world"
- * ```
- */
- readSync(p: Uint8Array): number | null;
- /** Seek to the given `offset` under mode given by `whence`. The call
- * resolves to the new position within the resource (bytes from the start).
- *
- * ```ts
- * // Given file pointing to file with "Hello world", which is 11 bytes long:
- * using file = await Deno.open(
- * "hello.txt",
- * { read: true, write: true, truncate: true, create: true },
- * );
- * await file.write(new TextEncoder().encode("Hello world"));
- *
- * // advance cursor 6 bytes
- * const cursorPosition = await file.seek(6, Deno.SeekMode.Start);
- * console.log(cursorPosition); // 6
- * const buf = new Uint8Array(100);
- * await file.read(buf);
- * console.log(new TextDecoder().decode(buf)); // "world"
- * ```
- *
- * The seek modes work as follows:
- *
- * ```ts
- * // Given file.rid pointing to file with "Hello world", which is 11 bytes long:
- * const file = await Deno.open(
- * "hello.txt",
- * { read: true, write: true, truncate: true, create: true },
- * );
- * await file.write(new TextEncoder().encode("Hello world"));
- *
- * // Seek 6 bytes from the start of the file
- * console.log(await file.seek(6, Deno.SeekMode.Start)); // "6"
- * // Seek 2 more bytes from the current position
- * console.log(await file.seek(2, Deno.SeekMode.Current)); // "8"
- * // Seek backwards 2 bytes from the end of the file
- * console.log(await file.seek(-2, Deno.SeekMode.End)); // "9" (i.e. 11-2)
- * ```
- */
- seek(offset: number | bigint, whence: SeekMode): Promise<number>;
- /** Synchronously seek to the given `offset` under mode given by `whence`.
- * The new position within the resource (bytes from the start) is returned.
- *
- * ```ts
- * using file = Deno.openSync(
- * "hello.txt",
- * { read: true, write: true, truncate: true, create: true },
- * );
- * file.writeSync(new TextEncoder().encode("Hello world"));
- *
- * // advance cursor 6 bytes
- * const cursorPosition = file.seekSync(6, Deno.SeekMode.Start);
- * console.log(cursorPosition); // 6
- * const buf = new Uint8Array(100);
- * file.readSync(buf);
- * console.log(new TextDecoder().decode(buf)); // "world"
- * ```
- *
- * The seek modes work as follows:
- *
- * ```ts
- * // Given file.rid pointing to file with "Hello world", which is 11 bytes long:
- * using file = Deno.openSync(
- * "hello.txt",
- * { read: true, write: true, truncate: true, create: true },
- * );
- * file.writeSync(new TextEncoder().encode("Hello world"));
- *
- * // Seek 6 bytes from the start of the file
- * console.log(file.seekSync(6, Deno.SeekMode.Start)); // "6"
- * // Seek 2 more bytes from the current position
- * console.log(file.seekSync(2, Deno.SeekMode.Current)); // "8"
- * // Seek backwards 2 bytes from the end of the file
- * console.log(file.seekSync(-2, Deno.SeekMode.End)); // "9" (i.e. 11-2)
- * ```
- */
- seekSync(offset: number | bigint, whence: SeekMode): number;
- /** Resolves to a {@linkcode Deno.FileInfo} for the file.
- *
- * ```ts
- * import { assert } from "jsr:@std/assert";
- *
- * using file = await Deno.open("hello.txt");
- * const fileInfo = await file.stat();
- * assert(fileInfo.isFile);
- * ```
- */
- stat(): Promise<FileInfo>;
- /** Synchronously returns a {@linkcode Deno.FileInfo} for the file.
- *
- * ```ts
- * import { assert } from "jsr:@std/assert";
- *
- * using file = Deno.openSync("hello.txt")
- * const fileInfo = file.statSync();
- * assert(fileInfo.isFile);
- * ```
- */
- statSync(): FileInfo;
- /**
- * Flushes any pending data and metadata operations of the given file
- * stream to disk.
- *
- * ```ts
- * const file = await Deno.open(
- * "my_file.txt",
- * { read: true, write: true, create: true },
- * );
- * await file.write(new TextEncoder().encode("Hello World"));
- * await file.truncate(1);
- * await file.sync();
- * console.log(await Deno.readTextFile("my_file.txt")); // H
- * ```
- *
- * @category I/O
- */
- sync(): Promise<void>;
- /**
- * Synchronously flushes any pending data and metadata operations of the given
- * file stream to disk.
- *
- * ```ts
- * const file = Deno.openSync(
- * "my_file.txt",
- * { read: true, write: true, create: true },
- * );
- * file.writeSync(new TextEncoder().encode("Hello World"));
- * file.truncateSync(1);
- * file.syncSync();
- * console.log(Deno.readTextFileSync("my_file.txt")); // H
- * ```
- *
- * @category I/O
- */
- syncSync(): void;
- /**
- * Flushes any pending data operations of the given file stream to disk.
- * ```ts
- * using file = await Deno.open(
- * "my_file.txt",
- * { read: true, write: true, create: true },
- * );
- * await file.write(new TextEncoder().encode("Hello World"));
- * await file.syncData();
- * console.log(await Deno.readTextFile("my_file.txt")); // Hello World
- * ```
- *
- * @category I/O
- */
- syncData(): Promise<void>;
- /**
- * Synchronously flushes any pending data operations of the given file stream
- * to disk.
- *
- * ```ts
- * using file = Deno.openSync(
- * "my_file.txt",
- * { read: true, write: true, create: true },
- * );
- * file.writeSync(new TextEncoder().encode("Hello World"));
- * file.syncDataSync();
- * console.log(Deno.readTextFileSync("my_file.txt")); // Hello World
- * ```
- *
- * @category I/O
- */
- syncDataSync(): void;
- /**
- * Changes the access (`atime`) and modification (`mtime`) times of the
- * file stream resource. Given times are either in seconds (UNIX epoch
- * time) or as `Date` objects.
- *
- * ```ts
- * using file = await Deno.open("file.txt", { create: true, write: true });
- * await file.utime(1556495550, new Date());
- * ```
- *
- * @category File System
- */
- utime(atime: number | Date, mtime: number | Date): Promise<void>;
- /**
- * Synchronously changes the access (`atime`) and modification (`mtime`)
- * times of the file stream resource. Given times are either in seconds
- * (UNIX epoch time) or as `Date` objects.
- *
- * ```ts
- * using file = Deno.openSync("file.txt", { create: true, write: true });
- * file.utime(1556495550, new Date());
- * ```
- *
- * @category File System
- */
- utimeSync(atime: number | Date, mtime: number | Date): void;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Checks if the file resource is a TTY (terminal).
- *
- * ```ts
- * // This example is system and context specific
- * using file = await Deno.open("/dev/tty6");
- * file.isTerminal(); // true
- * ```
- */
- isTerminal(): boolean;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Set TTY to be under raw mode or not. In raw mode, characters are read and
- * returned as is, without being processed. All special processing of
- * characters by the terminal is disabled, including echoing input
- * characters. Reading from a TTY device in raw mode is faster than reading
- * from a TTY device in canonical mode.
- *
- * ```ts
- * using file = await Deno.open("/dev/tty6");
- * file.setRaw(true, { cbreak: true });
- * ```
- */
- setRaw(mode: boolean, options?: SetRawOptions): void;
- /**
- * Acquire an advisory file-system lock for the file.
- *
- * @param [exclusive=false]
- */
- lock(exclusive?: boolean): Promise<void>;
- /**
- * Synchronously acquire an advisory file-system lock synchronously for the file.
- *
- * @param [exclusive=false]
- */
- lockSync(exclusive?: boolean): void;
- /**
- * Release an advisory file-system lock for the file.
- */
- unlock(): Promise<void>;
- /**
- * Synchronously release an advisory file-system lock for the file.
- */
- unlockSync(): void;
- /** Close the file. Closing a file when you are finished with it is
- * important to avoid leaking resources.
- *
- * ```ts
- * using file = await Deno.open("my_file.txt");
- * // do work with "file" object
- * ```
- */
- close(): void;
- [Symbol.dispose](): void;
- }
- /**
- * The Deno abstraction for reading and writing files.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category File System
- */
- export const File: typeof FsFile;
- /** Gets the size of the console as columns/rows.
- *
- * ```ts
- * const { columns, rows } = Deno.consoleSize();
- * ```
- *
- * This returns the size of the console window as reported by the operating
- * system. It's not a reflection of how many characters will fit within the
- * console window, but can be used as part of that calculation.
- *
- * @category I/O
- */
- export function consoleSize(): {
- columns: number;
- rows: number;
- };
- /** @category I/O */
- export interface SetRawOptions {
- /**
- * The `cbreak` option can be used to indicate that characters that
- * correspond to a signal should still be generated. When disabling raw
- * mode, this option is ignored. This functionality currently only works on
- * Linux and Mac OS.
- */
- cbreak: boolean;
- }
- /** A reference to `stdin` which can be used to read directly from `stdin`.
- * It implements the Deno specific {@linkcode Reader}, {@linkcode ReaderSync},
- * and {@linkcode Closer} interfaces as well as provides a
- * {@linkcode ReadableStream} interface.
- *
- * ### Reading chunks from the readable stream
- *
- * ```ts
- * const decoder = new TextDecoder();
- * for await (const chunk of Deno.stdin.readable) {
- * const text = decoder.decode(chunk);
- * // do something with the text
- * }
- * ```
- *
- * @category I/O
- */
- export const stdin: Reader & ReaderSync & Closer & {
- /**
- * The resource ID assigned to `stdin`. This can be used with the discrete
- * I/O functions in the `Deno` namespace.
- *
- * @deprecated This will be soft-removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- readonly rid: number;
- /** A readable stream interface to `stdin`. */
- readonly readable: ReadableStream<Uint8Array>;
- /**
- * Set TTY to be under raw mode or not. In raw mode, characters are read and
- * returned as is, without being processed. All special processing of
- * characters by the terminal is disabled, including echoing input
- * characters. Reading from a TTY device in raw mode is faster than reading
- * from a TTY device in canonical mode.
- *
- * ```ts
- * Deno.stdin.setRaw(true, { cbreak: true });
- * ```
- *
- * @category I/O
- */
- setRaw(mode: boolean, options?: SetRawOptions): void;
- /**
- * Checks if `stdin` is a TTY (terminal).
- *
- * ```ts
- * // This example is system and context specific
- * Deno.stdin.isTerminal(); // true
- * ```
- *
- * @category I/O
- */
- isTerminal(): boolean;
- };
- /** A reference to `stdout` which can be used to write directly to `stdout`.
- * It implements the Deno specific {@linkcode Writer}, {@linkcode WriterSync},
- * and {@linkcode Closer} interfaces as well as provides a
- * {@linkcode WritableStream} interface.
- *
- * These are low level constructs, and the {@linkcode console} interface is a
- * more straight forward way to interact with `stdout` and `stderr`.
- *
- * @category I/O
- */
- export const stdout: Writer & WriterSync & Closer & {
- /**
- * The resource ID assigned to `stdout`. This can be used with the discrete
- * I/O functions in the `Deno` namespace.
- *
- * @deprecated This will be soft-removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- readonly rid: number;
- /** A writable stream interface to `stdout`. */
- readonly writable: WritableStream<Uint8Array>;
- /**
- * Checks if `stdout` is a TTY (terminal).
- *
- * ```ts
- * // This example is system and context specific
- * Deno.stdout.isTerminal(); // true
- * ```
- *
- * @category I/O
- */
- isTerminal(): boolean;
- };
- /** A reference to `stderr` which can be used to write directly to `stderr`.
- * It implements the Deno specific {@linkcode Writer}, {@linkcode WriterSync},
- * and {@linkcode Closer} interfaces as well as provides a
- * {@linkcode WritableStream} interface.
- *
- * These are low level constructs, and the {@linkcode console} interface is a
- * more straight forward way to interact with `stdout` and `stderr`.
- *
- * @category I/O
- */
- export const stderr: Writer & WriterSync & Closer & {
- /**
- * The resource ID assigned to `stderr`. This can be used with the discrete
- * I/O functions in the `Deno` namespace.
- *
- * @deprecated This will be soft-removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- readonly rid: number;
- /** A writable stream interface to `stderr`. */
- readonly writable: WritableStream<Uint8Array>;
- /**
- * Checks if `stderr` is a TTY (terminal).
- *
- * ```ts
- * // This example is system and context specific
- * Deno.stderr.isTerminal(); // true
- * ```
- *
- * @category I/O
- */
- isTerminal(): boolean;
- };
- /**
- * Options which can be set when doing {@linkcode Deno.open} and
- * {@linkcode Deno.openSync}.
- *
- * @category File System */
- export interface OpenOptions {
- /** Sets the option for read access. This option, when `true`, means that
- * the file should be read-able if opened.
- *
- * @default {true} */
- read?: boolean;
- /** Sets the option for write access. This option, when `true`, means that
- * the file should be write-able if opened. If the file already exists,
- * any write calls on it will overwrite its contents, by default without
- * truncating it.
- *
- * @default {false} */
- write?: boolean;
- /** Sets the option for the append mode. This option, when `true`, means
- * that writes will append to a file instead of overwriting previous
- * contents.
- *
- * Note that setting `{ write: true, append: true }` has the same effect as
- * setting only `{ append: true }`.
- *
- * @default {false} */
- append?: boolean;
- /** Sets the option for truncating a previous file. If a file is
- * successfully opened with this option set it will truncate the file to `0`
- * size if it already exists. The file must be opened with write access
- * for truncate to work.
- *
- * @default {false} */
- truncate?: boolean;
- /** Sets the option to allow creating a new file, if one doesn't already
- * exist at the specified path. Requires write or append access to be
- * used.
- *
- * @default {false} */
- create?: boolean;
- /** If set to `true`, no file, directory, or symlink is allowed to exist at
- * the target location. Requires write or append access to be used. When
- * createNew is set to `true`, create and truncate are ignored.
- *
- * @default {false} */
- createNew?: boolean;
- /** Permissions to use if creating the file (defaults to `0o666`, before
- * the process's umask).
- *
- * Ignored on Windows. */
- mode?: number;
- }
- /**
- * Options which can be set when using {@linkcode Deno.readFile} or
- * {@linkcode Deno.readFileSync}.
- *
- * @category File System */
- export interface ReadFileOptions {
- /**
- * An abort signal to allow cancellation of the file read operation.
- * If the signal becomes aborted the readFile operation will be stopped
- * and the promise returned will be rejected with an AbortError.
- */
- signal?: AbortSignal;
- }
- /**
- * Check if a given resource id (`rid`) is a TTY (a terminal).
- *
- * ```ts
- * // This example is system and context specific
- * const nonTTYRid = Deno.openSync("my_file.txt").rid;
- * const ttyRid = Deno.openSync("/dev/tty6").rid;
- * console.log(Deno.isatty(nonTTYRid)); // false
- * console.log(Deno.isatty(ttyRid)); // true
- * ```
- *
- * @deprecated This will be soft-removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function isatty(rid: number): boolean;
- /**
- * A variable-sized buffer of bytes with `read()` and `write()` methods.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export class Buffer implements Reader, ReaderSync, Writer, WriterSync {
- constructor(ab?: ArrayBuffer);
- /** Returns a slice holding the unread portion of the buffer.
- *
- * The slice is valid for use only until the next buffer modification (that
- * is, only until the next call to a method like `read()`, `write()`,
- * `reset()`, or `truncate()`). If `options.copy` is false the slice aliases the buffer content at
- * least until the next buffer modification, so immediate changes to the
- * slice will affect the result of future reads.
- * @param options Defaults to `{ copy: true }`
- */
- bytes(options?: { copy?: boolean }): Uint8Array;
- /** Returns whether the unread portion of the buffer is empty. */
- empty(): boolean;
- /** A read only number of bytes of the unread portion of the buffer. */
- readonly length: number;
- /** The read only capacity of the buffer's underlying byte slice, that is,
- * the total space allocated for the buffer's data. */
- readonly capacity: number;
- /** Discards all but the first `n` unread bytes from the buffer but
- * continues to use the same allocated storage. It throws if `n` is
- * negative or greater than the length of the buffer. */
- truncate(n: number): void;
- /** Resets the buffer to be empty, but it retains the underlying storage for
- * use by future writes. `.reset()` is the same as `.truncate(0)`. */
- reset(): void;
- /** Reads the next `p.length` bytes from the buffer or until the buffer is
- * drained. Returns the number of bytes read. If the buffer has no data to
- * return, the return is EOF (`null`). */
- readSync(p: Uint8Array): number | null;
- /** Reads the next `p.length` bytes from the buffer or until the buffer is
- * drained. Resolves to the number of bytes read. If the buffer has no
- * data to return, resolves to EOF (`null`).
- *
- * NOTE: This methods reads bytes synchronously; it's provided for
- * compatibility with `Reader` interfaces.
- */
- read(p: Uint8Array): Promise<number | null>;
- writeSync(p: Uint8Array): number;
- /** NOTE: This methods writes bytes synchronously; it's provided for
- * compatibility with `Writer` interface. */
- write(p: Uint8Array): Promise<number>;
- /** Grows the buffer's capacity, if necessary, to guarantee space for
- * another `n` bytes. After `.grow(n)`, at least `n` bytes can be written to
- * the buffer without another allocation. If `n` is negative, `.grow()` will
- * throw. If the buffer can't grow it will throw an error.
- *
- * Based on Go Lang's
- * [Buffer.Grow](https://golang.org/pkg/bytes/#Buffer.Grow). */
- grow(n: number): void;
- /** Reads data from `r` until EOF (`null`) and appends it to the buffer,
- * growing the buffer as needed. It resolves to the number of bytes read.
- * If the buffer becomes too large, `.readFrom()` will reject with an error.
- *
- * Based on Go Lang's
- * [Buffer.ReadFrom](https://golang.org/pkg/bytes/#Buffer.ReadFrom). */
- readFrom(r: Reader): Promise<number>;
- /** Reads data from `r` until EOF (`null`) and appends it to the buffer,
- * growing the buffer as needed. It returns the number of bytes read. If the
- * buffer becomes too large, `.readFromSync()` will throw an error.
- *
- * Based on Go Lang's
- * [Buffer.ReadFrom](https://golang.org/pkg/bytes/#Buffer.ReadFrom). */
- readFromSync(r: ReaderSync): number;
- }
- /**
- * Read Reader `r` until EOF (`null`) and resolve to the content as
- * Uint8Array`.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function readAll(r: Reader): Promise<Uint8Array>;
- /**
- * Synchronously reads Reader `r` until EOF (`null`) and returns the content
- * as `Uint8Array`.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function readAllSync(r: ReaderSync): Uint8Array;
- /**
- * Write all the content of the array buffer (`arr`) to the writer (`w`).
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function writeAll(w: Writer, arr: Uint8Array): Promise<void>;
- /**
- * Synchronously write all the content of the array buffer (`arr`) to the
- * writer (`w`).
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export function writeAllSync(w: WriterSync, arr: Uint8Array): void;
- /**
- * Options which can be set when using {@linkcode Deno.mkdir} and
- * {@linkcode Deno.mkdirSync}.
- *
- * @category File System */
- export interface MkdirOptions {
- /** If set to `true`, means that any intermediate directories will also be
- * created (as with the shell command `mkdir -p`).
- *
- * Intermediate directories are created with the same permissions.
- *
- * When recursive is set to `true`, succeeds silently (without changing any
- * permissions) if a directory already exists at the path, or if the path
- * is a symlink to an existing directory.
- *
- * @default {false} */
- recursive?: boolean;
- /** Permissions to use when creating the directory (defaults to `0o777`,
- * before the process's umask).
- *
- * Ignored on Windows. */
- mode?: number;
- }
- /** Creates a new directory with the specified path.
- *
- * ```ts
- * await Deno.mkdir("new_dir");
- * await Deno.mkdir("nested/directories", { recursive: true });
- * await Deno.mkdir("restricted_access_dir", { mode: 0o700 });
- * ```
- *
- * Defaults to throwing error if the directory already exists.
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- export function mkdir(
- path: string | URL,
- options?: MkdirOptions,
- ): Promise<void>;
- /** Synchronously creates a new directory with the specified path.
- *
- * ```ts
- * Deno.mkdirSync("new_dir");
- * Deno.mkdirSync("nested/directories", { recursive: true });
- * Deno.mkdirSync("restricted_access_dir", { mode: 0o700 });
- * ```
- *
- * Defaults to throwing error if the directory already exists.
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- export function mkdirSync(path: string | URL, options?: MkdirOptions): void;
- /**
- * Options which can be set when using {@linkcode Deno.makeTempDir},
- * {@linkcode Deno.makeTempDirSync}, {@linkcode Deno.makeTempFile}, and
- * {@linkcode Deno.makeTempFileSync}.
- *
- * @category File System */
- export interface MakeTempOptions {
- /** Directory where the temporary directory should be created (defaults to
- * the env variable `TMPDIR`, or the system's default, usually `/tmp`).
- *
- * Note that if the passed `dir` is relative, the path returned by
- * `makeTempFile()` and `makeTempDir()` will also be relative. Be mindful of
- * this when changing working directory. */
- dir?: string;
- /** String that should precede the random portion of the temporary
- * directory's name. */
- prefix?: string;
- /** String that should follow the random portion of the temporary
- * directory's name. */
- suffix?: string;
- }
- /** Creates a new temporary directory in the default directory for temporary
- * files, unless `dir` is specified. Other optional options include
- * prefixing and suffixing the directory name with `prefix` and `suffix`
- * respectively.
- *
- * This call resolves to the full path to the newly created directory.
- *
- * Multiple programs calling this function simultaneously will create different
- * directories. It is the caller's responsibility to remove the directory when
- * no longer needed.
- *
- * ```ts
- * const tempDirName0 = await Deno.makeTempDir(); // e.g. /tmp/2894ea76
- * const tempDirName1 = await Deno.makeTempDir({ prefix: 'my_temp' }); // e.g. /tmp/my_temp339c944d
- * ```
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- // TODO(ry) Doesn't check permissions.
- export function makeTempDir(options?: MakeTempOptions): Promise<string>;
- /** Synchronously creates a new temporary directory in the default directory
- * for temporary files, unless `dir` is specified. Other optional options
- * include prefixing and suffixing the directory name with `prefix` and
- * `suffix` respectively.
- *
- * The full path to the newly created directory is returned.
- *
- * Multiple programs calling this function simultaneously will create different
- * directories. It is the caller's responsibility to remove the directory when
- * no longer needed.
- *
- * ```ts
- * const tempDirName0 = Deno.makeTempDirSync(); // e.g. /tmp/2894ea76
- * const tempDirName1 = Deno.makeTempDirSync({ prefix: 'my_temp' }); // e.g. /tmp/my_temp339c944d
- * ```
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- // TODO(ry) Doesn't check permissions.
- export function makeTempDirSync(options?: MakeTempOptions): string;
- /** Creates a new temporary file in the default directory for temporary
- * files, unless `dir` is specified.
- *
- * Other options include prefixing and suffixing the directory name with
- * `prefix` and `suffix` respectively.
- *
- * This call resolves to the full path to the newly created file.
- *
- * Multiple programs calling this function simultaneously will create
- * different files. It is the caller's responsibility to remove the file when
- * no longer needed.
- *
- * ```ts
- * const tmpFileName0 = await Deno.makeTempFile(); // e.g. /tmp/419e0bf2
- * const tmpFileName1 = await Deno.makeTempFile({ prefix: 'my_temp' }); // e.g. /tmp/my_temp754d3098
- * ```
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- export function makeTempFile(options?: MakeTempOptions): Promise<string>;
- /** Synchronously creates a new temporary file in the default directory for
- * temporary files, unless `dir` is specified.
- *
- * Other options include prefixing and suffixing the directory name with
- * `prefix` and `suffix` respectively.
- *
- * The full path to the newly created file is returned.
- *
- * Multiple programs calling this function simultaneously will create
- * different files. It is the caller's responsibility to remove the file when
- * no longer needed.
- *
- * ```ts
- * const tempFileName0 = Deno.makeTempFileSync(); // e.g. /tmp/419e0bf2
- * const tempFileName1 = Deno.makeTempFileSync({ prefix: 'my_temp' }); // e.g. /tmp/my_temp754d3098
- * ```
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- export function makeTempFileSync(options?: MakeTempOptions): string;
- /** Changes the permission of a specific file/directory of specified path.
- * Ignores the process's umask.
- *
- * ```ts
- * await Deno.chmod("/path/to/file", 0o666);
- * ```
- *
- * The mode is a sequence of 3 octal numbers. The first/left-most number
- * specifies the permissions for the owner. The second number specifies the
- * permissions for the group. The last/right-most number specifies the
- * permissions for others. For example, with a mode of 0o764, the owner (7)
- * can read/write/execute, the group (6) can read/write and everyone else (4)
- * can read only.
- *
- * | Number | Description |
- * | ------ | ----------- |
- * | 7 | read, write, and execute |
- * | 6 | read and write |
- * | 5 | read and execute |
- * | 4 | read only |
- * | 3 | write and execute |
- * | 2 | write only |
- * | 1 | execute only |
- * | 0 | no permission |
- *
- * NOTE: This API currently throws on Windows
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- export function chmod(path: string | URL, mode: number): Promise<void>;
- /** Synchronously changes the permission of a specific file/directory of
- * specified path. Ignores the process's umask.
- *
- * ```ts
- * Deno.chmodSync("/path/to/file", 0o666);
- * ```
- *
- * For a full description, see {@linkcode Deno.chmod}.
- *
- * NOTE: This API currently throws on Windows
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- export function chmodSync(path: string | URL, mode: number): void;
- /** Change owner of a regular file or directory.
- *
- * This functionality is not available on Windows.
- *
- * ```ts
- * await Deno.chown("myFile.txt", 1000, 1002);
- * ```
- *
- * Requires `allow-write` permission.
- *
- * Throws Error (not implemented) if executed on Windows.
- *
- * @tags allow-write
- * @category File System
- *
- * @param path path to the file
- * @param uid user id (UID) of the new owner, or `null` for no change
- * @param gid group id (GID) of the new owner, or `null` for no change
- */
- export function chown(
- path: string | URL,
- uid: number | null,
- gid: number | null,
- ): Promise<void>;
- /** Synchronously change owner of a regular file or directory.
- *
- * This functionality is not available on Windows.
- *
- * ```ts
- * Deno.chownSync("myFile.txt", 1000, 1002);
- * ```
- *
- * Requires `allow-write` permission.
- *
- * Throws Error (not implemented) if executed on Windows.
- *
- * @tags allow-write
- * @category File System
- *
- * @param path path to the file
- * @param uid user id (UID) of the new owner, or `null` for no change
- * @param gid group id (GID) of the new owner, or `null` for no change
- */
- export function chownSync(
- path: string | URL,
- uid: number | null,
- gid: number | null,
- ): void;
- /**
- * Options which can be set when using {@linkcode Deno.remove} and
- * {@linkcode Deno.removeSync}.
- *
- * @category File System */
- export interface RemoveOptions {
- /** If set to `true`, path will be removed even if it's a non-empty directory.
- *
- * @default {false} */
- recursive?: boolean;
- }
- /** Removes the named file or directory.
- *
- * ```ts
- * await Deno.remove("/path/to/empty_dir/or/file");
- * await Deno.remove("/path/to/populated_dir/or/file", { recursive: true });
- * ```
- *
- * Throws error if permission denied, path not found, or path is a non-empty
- * directory and the `recursive` option isn't set to `true`.
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- export function remove(
- path: string | URL,
- options?: RemoveOptions,
- ): Promise<void>;
- /** Synchronously removes the named file or directory.
- *
- * ```ts
- * Deno.removeSync("/path/to/empty_dir/or/file");
- * Deno.removeSync("/path/to/populated_dir/or/file", { recursive: true });
- * ```
- *
- * Throws error if permission denied, path not found, or path is a non-empty
- * directory and the `recursive` option isn't set to `true`.
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- export function removeSync(path: string | URL, options?: RemoveOptions): void;
- /** Synchronously renames (moves) `oldpath` to `newpath`. Paths may be files or
- * directories. If `newpath` already exists and is not a directory,
- * `renameSync()` replaces it. OS-specific restrictions may apply when
- * `oldpath` and `newpath` are in different directories.
- *
- * ```ts
- * Deno.renameSync("old/path", "new/path");
- * ```
- *
- * On Unix-like OSes, this operation does not follow symlinks at either path.
- *
- * It varies between platforms when the operation throws errors, and if so what
- * they are. It's always an error to rename anything to a non-empty directory.
- *
- * Requires `allow-read` and `allow-write` permissions.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function renameSync(
- oldpath: string | URL,
- newpath: string | URL,
- ): void;
- /** Renames (moves) `oldpath` to `newpath`. Paths may be files or directories.
- * If `newpath` already exists and is not a directory, `rename()` replaces it.
- * OS-specific restrictions may apply when `oldpath` and `newpath` are in
- * different directories.
- *
- * ```ts
- * await Deno.rename("old/path", "new/path");
- * ```
- *
- * On Unix-like OSes, this operation does not follow symlinks at either path.
- *
- * It varies between platforms when the operation throws errors, and if so
- * what they are. It's always an error to rename anything to a non-empty
- * directory.
- *
- * Requires `allow-read` and `allow-write` permissions.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function rename(
- oldpath: string | URL,
- newpath: string | URL,
- ): Promise<void>;
- /** Asynchronously reads and returns the entire contents of a file as an UTF-8
- * decoded string. Reading a directory throws an error.
- *
- * ```ts
- * const data = await Deno.readTextFile("hello.txt");
- * console.log(data);
- * ```
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function readTextFile(
- path: string | URL,
- options?: ReadFileOptions,
- ): Promise<string>;
- /** Synchronously reads and returns the entire contents of a file as an UTF-8
- * decoded string. Reading a directory throws an error.
- *
- * ```ts
- * const data = Deno.readTextFileSync("hello.txt");
- * console.log(data);
- * ```
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function readTextFileSync(path: string | URL): string;
- /** Reads and resolves to the entire contents of a file as an array of bytes.
- * `TextDecoder` can be used to transform the bytes to string if required.
- * Reading a directory returns an empty data array.
- *
- * ```ts
- * const decoder = new TextDecoder("utf-8");
- * const data = await Deno.readFile("hello.txt");
- * console.log(decoder.decode(data));
- * ```
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function readFile(
- path: string | URL,
- options?: ReadFileOptions,
- ): Promise<Uint8Array>;
- /** Synchronously reads and returns the entire contents of a file as an array
- * of bytes. `TextDecoder` can be used to transform the bytes to string if
- * required. Reading a directory returns an empty data array.
- *
- * ```ts
- * const decoder = new TextDecoder("utf-8");
- * const data = Deno.readFileSync("hello.txt");
- * console.log(decoder.decode(data));
- * ```
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function readFileSync(path: string | URL): Uint8Array;
- /** Provides information about a file and is returned by
- * {@linkcode Deno.stat}, {@linkcode Deno.lstat}, {@linkcode Deno.statSync},
- * and {@linkcode Deno.lstatSync} or from calling `stat()` and `statSync()`
- * on an {@linkcode Deno.FsFile} instance.
- *
- * @category File System
- */
- export interface FileInfo {
- /** True if this is info for a regular file. Mutually exclusive to
- * `FileInfo.isDirectory` and `FileInfo.isSymlink`. */
- isFile: boolean;
- /** True if this is info for a regular directory. Mutually exclusive to
- * `FileInfo.isFile` and `FileInfo.isSymlink`. */
- isDirectory: boolean;
- /** True if this is info for a symlink. Mutually exclusive to
- * `FileInfo.isFile` and `FileInfo.isDirectory`. */
- isSymlink: boolean;
- /** The size of the file, in bytes. */
- size: number;
- /** The last modification time of the file. This corresponds to the `mtime`
- * field from `stat` on Linux/Mac OS and `ftLastWriteTime` on Windows. This
- * may not be available on all platforms. */
- mtime: Date | null;
- /** The last access time of the file. This corresponds to the `atime`
- * field from `stat` on Unix and `ftLastAccessTime` on Windows. This may not
- * be available on all platforms. */
- atime: Date | null;
- /** The creation time of the file. This corresponds to the `birthtime`
- * field from `stat` on Mac/BSD and `ftCreationTime` on Windows. This may
- * not be available on all platforms. */
- birthtime: Date | null;
- /** ID of the device containing the file. */
- dev: number;
- /** Inode number.
- *
- * _Linux/Mac OS only._ */
- ino: number | null;
- /** The underlying raw `st_mode` bits that contain the standard Unix
- * permissions for this file/directory.
- *
- * _Linux/Mac OS only._ */
- mode: number | null;
- /** Number of hard links pointing to this file.
- *
- * _Linux/Mac OS only._ */
- nlink: number | null;
- /** User ID of the owner of this file.
- *
- * _Linux/Mac OS only._ */
- uid: number | null;
- /** Group ID of the owner of this file.
- *
- * _Linux/Mac OS only._ */
- gid: number | null;
- /** Device ID of this file.
- *
- * _Linux/Mac OS only._ */
- rdev: number | null;
- /** Blocksize for filesystem I/O.
- *
- * _Linux/Mac OS only._ */
- blksize: number | null;
- /** Number of blocks allocated to the file, in 512-byte units.
- *
- * _Linux/Mac OS only._ */
- blocks: number | null;
- /** True if this is info for a block device.
- *
- * _Linux/Mac OS only._ */
- isBlockDevice: boolean | null;
- /** True if this is info for a char device.
- *
- * _Linux/Mac OS only._ */
- isCharDevice: boolean | null;
- /** True if this is info for a fifo.
- *
- * _Linux/Mac OS only._ */
- isFifo: boolean | null;
- /** True if this is info for a socket.
- *
- * _Linux/Mac OS only._ */
- isSocket: boolean | null;
- }
- /** Resolves to the absolute normalized path, with symbolic links resolved.
- *
- * ```ts
- * // e.g. given /home/alice/file.txt and current directory /home/alice
- * await Deno.symlink("file.txt", "symlink_file.txt");
- * const realPath = await Deno.realPath("./file.txt");
- * const realSymLinkPath = await Deno.realPath("./symlink_file.txt");
- * console.log(realPath); // outputs "/home/alice/file.txt"
- * console.log(realSymLinkPath); // outputs "/home/alice/file.txt"
- * ```
- *
- * Requires `allow-read` permission for the target path.
- *
- * Also requires `allow-read` permission for the `CWD` if the target path is
- * relative.
- *
- * @tags allow-read
- * @category File System
- */
- export function realPath(path: string | URL): Promise<string>;
- /** Synchronously returns absolute normalized path, with symbolic links
- * resolved.
- *
- * ```ts
- * // e.g. given /home/alice/file.txt and current directory /home/alice
- * Deno.symlinkSync("file.txt", "symlink_file.txt");
- * const realPath = Deno.realPathSync("./file.txt");
- * const realSymLinkPath = Deno.realPathSync("./symlink_file.txt");
- * console.log(realPath); // outputs "/home/alice/file.txt"
- * console.log(realSymLinkPath); // outputs "/home/alice/file.txt"
- * ```
- *
- * Requires `allow-read` permission for the target path.
- *
- * Also requires `allow-read` permission for the `CWD` if the target path is
- * relative.
- *
- * @tags allow-read
- * @category File System
- */
- export function realPathSync(path: string | URL): string;
- /**
- * Information about a directory entry returned from {@linkcode Deno.readDir}
- * and {@linkcode Deno.readDirSync}.
- *
- * @category File System */
- export interface DirEntry {
- /** The file name of the entry. It is just the entity name and does not
- * include the full path. */
- name: string;
- /** True if this is info for a regular file. Mutually exclusive to
- * `DirEntry.isDirectory` and `DirEntry.isSymlink`. */
- isFile: boolean;
- /** True if this is info for a regular directory. Mutually exclusive to
- * `DirEntry.isFile` and `DirEntry.isSymlink`. */
- isDirectory: boolean;
- /** True if this is info for a symlink. Mutually exclusive to
- * `DirEntry.isFile` and `DirEntry.isDirectory`. */
- isSymlink: boolean;
- }
- /** Reads the directory given by `path` and returns an async iterable of
- * {@linkcode Deno.DirEntry}. The order of entries is not guaranteed.
- *
- * ```ts
- * for await (const dirEntry of Deno.readDir("/")) {
- * console.log(dirEntry.name);
- * }
- * ```
- *
- * Throws error if `path` is not a directory.
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function readDir(path: string | URL): AsyncIterable<DirEntry>;
- /** Synchronously reads the directory given by `path` and returns an iterable
- * of {@linkcode Deno.DirEntry}. The order of entries is not guaranteed.
- *
- * ```ts
- * for (const dirEntry of Deno.readDirSync("/")) {
- * console.log(dirEntry.name);
- * }
- * ```
- *
- * Throws error if `path` is not a directory.
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function readDirSync(path: string | URL): Iterable<DirEntry>;
- /** Copies the contents and permissions of one file to another specified path,
- * by default creating a new file if needed, else overwriting. Fails if target
- * path is a directory or is unwritable.
- *
- * ```ts
- * await Deno.copyFile("from.txt", "to.txt");
- * ```
- *
- * Requires `allow-read` permission on `fromPath`.
- *
- * Requires `allow-write` permission on `toPath`.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function copyFile(
- fromPath: string | URL,
- toPath: string | URL,
- ): Promise<void>;
- /** Synchronously copies the contents and permissions of one file to another
- * specified path, by default creating a new file if needed, else overwriting.
- * Fails if target path is a directory or is unwritable.
- *
- * ```ts
- * Deno.copyFileSync("from.txt", "to.txt");
- * ```
- *
- * Requires `allow-read` permission on `fromPath`.
- *
- * Requires `allow-write` permission on `toPath`.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function copyFileSync(
- fromPath: string | URL,
- toPath: string | URL,
- ): void;
- /** Resolves to the full path destination of the named symbolic link.
- *
- * ```ts
- * await Deno.symlink("./test.txt", "./test_link.txt");
- * const target = await Deno.readLink("./test_link.txt"); // full path of ./test.txt
- * ```
- *
- * Throws TypeError if called with a hard link.
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function readLink(path: string | URL): Promise<string>;
- /** Synchronously returns the full path destination of the named symbolic
- * link.
- *
- * ```ts
- * Deno.symlinkSync("./test.txt", "./test_link.txt");
- * const target = Deno.readLinkSync("./test_link.txt"); // full path of ./test.txt
- * ```
- *
- * Throws TypeError if called with a hard link.
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function readLinkSync(path: string | URL): string;
- /** Resolves to a {@linkcode Deno.FileInfo} for the specified `path`. If
- * `path` is a symlink, information for the symlink will be returned instead
- * of what it points to.
- *
- * ```ts
- * import { assert } from "jsr:@std/assert";
- * const fileInfo = await Deno.lstat("hello.txt");
- * assert(fileInfo.isFile);
- * ```
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function lstat(path: string | URL): Promise<FileInfo>;
- /** Synchronously returns a {@linkcode Deno.FileInfo} for the specified
- * `path`. If `path` is a symlink, information for the symlink will be
- * returned instead of what it points to.
- *
- * ```ts
- * import { assert } from "jsr:@std/assert";
- * const fileInfo = Deno.lstatSync("hello.txt");
- * assert(fileInfo.isFile);
- * ```
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function lstatSync(path: string | URL): FileInfo;
- /** Resolves to a {@linkcode Deno.FileInfo} for the specified `path`. Will
- * always follow symlinks.
- *
- * ```ts
- * import { assert } from "jsr:@std/assert";
- * const fileInfo = await Deno.stat("hello.txt");
- * assert(fileInfo.isFile);
- * ```
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function stat(path: string | URL): Promise<FileInfo>;
- /** Synchronously returns a {@linkcode Deno.FileInfo} for the specified
- * `path`. Will always follow symlinks.
- *
- * ```ts
- * import { assert } from "jsr:@std/assert";
- * const fileInfo = Deno.statSync("hello.txt");
- * assert(fileInfo.isFile);
- * ```
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function statSync(path: string | URL): FileInfo;
- /** Options for writing to a file.
- *
- * @category File System
- */
- export interface WriteFileOptions {
- /** If set to `true`, will append to a file instead of overwriting previous
- * contents.
- *
- * @default {false} */
- append?: boolean;
- /** Sets the option to allow creating a new file, if one doesn't already
- * exist at the specified path.
- *
- * @default {true} */
- create?: boolean;
- /** If set to `true`, no file, directory, or symlink is allowed to exist at
- * the target location. When createNew is set to `true`, `create` is ignored.
- *
- * @default {false} */
- createNew?: boolean;
- /** Permissions always applied to file. */
- mode?: number;
- /** An abort signal to allow cancellation of the file write operation.
- *
- * If the signal becomes aborted the write file operation will be stopped
- * and the promise returned will be rejected with an {@linkcode AbortError}.
- */
- signal?: AbortSignal;
- }
- /** Write `data` to the given `path`, by default creating a new file if
- * needed, else overwriting.
- *
- * ```ts
- * const encoder = new TextEncoder();
- * const data = encoder.encode("Hello world\n");
- * await Deno.writeFile("hello1.txt", data); // overwrite "hello1.txt" or create it
- * await Deno.writeFile("hello2.txt", data, { create: false }); // only works if "hello2.txt" exists
- * await Deno.writeFile("hello3.txt", data, { mode: 0o777 }); // set permissions on new file
- * await Deno.writeFile("hello4.txt", data, { append: true }); // add data to the end of the file
- * ```
- *
- * Requires `allow-write` permission, and `allow-read` if `options.create` is
- * `false`.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function writeFile(
- path: string | URL,
- data: Uint8Array | ReadableStream<Uint8Array>,
- options?: WriteFileOptions,
- ): Promise<void>;
- /** Synchronously write `data` to the given `path`, by default creating a new
- * file if needed, else overwriting.
- *
- * ```ts
- * const encoder = new TextEncoder();
- * const data = encoder.encode("Hello world\n");
- * Deno.writeFileSync("hello1.txt", data); // overwrite "hello1.txt" or create it
- * Deno.writeFileSync("hello2.txt", data, { create: false }); // only works if "hello2.txt" exists
- * Deno.writeFileSync("hello3.txt", data, { mode: 0o777 }); // set permissions on new file
- * Deno.writeFileSync("hello4.txt", data, { append: true }); // add data to the end of the file
- * ```
- *
- * Requires `allow-write` permission, and `allow-read` if `options.create` is
- * `false`.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function writeFileSync(
- path: string | URL,
- data: Uint8Array,
- options?: WriteFileOptions,
- ): void;
- /** Write string `data` to the given `path`, by default creating a new file if
- * needed, else overwriting.
- *
- * ```ts
- * await Deno.writeTextFile("hello1.txt", "Hello world\n"); // overwrite "hello1.txt" or create it
- * ```
- *
- * Requires `allow-write` permission, and `allow-read` if `options.create` is
- * `false`.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function writeTextFile(
- path: string | URL,
- data: string | ReadableStream<string>,
- options?: WriteFileOptions,
- ): Promise<void>;
- /** Synchronously write string `data` to the given `path`, by default creating
- * a new file if needed, else overwriting.
- *
- * ```ts
- * Deno.writeTextFileSync("hello1.txt", "Hello world\n"); // overwrite "hello1.txt" or create it
- * ```
- *
- * Requires `allow-write` permission, and `allow-read` if `options.create` is
- * `false`.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function writeTextFileSync(
- path: string | URL,
- data: string,
- options?: WriteFileOptions,
- ): void;
- /** Truncates (or extends) the specified file, to reach the specified `len`.
- * If `len` is not specified then the entire file contents are truncated.
- *
- * ### Truncate the entire file
- * ```ts
- * await Deno.truncate("my_file.txt");
- * ```
- *
- * ### Truncate part of the file
- *
- * ```ts
- * const file = await Deno.makeTempFile();
- * await Deno.writeTextFile(file, "Hello World");
- * await Deno.truncate(file, 7);
- * const data = await Deno.readFile(file);
- * console.log(new TextDecoder().decode(data)); // "Hello W"
- * ```
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- export function truncate(name: string, len?: number): Promise<void>;
- /** Synchronously truncates (or extends) the specified file, to reach the
- * specified `len`. If `len` is not specified then the entire file contents
- * are truncated.
- *
- * ### Truncate the entire file
- *
- * ```ts
- * Deno.truncateSync("my_file.txt");
- * ```
- *
- * ### Truncate part of the file
- *
- * ```ts
- * const file = Deno.makeTempFileSync();
- * Deno.writeFileSync(file, new TextEncoder().encode("Hello World"));
- * Deno.truncateSync(file, 7);
- * const data = Deno.readFileSync(file);
- * console.log(new TextDecoder().decode(data));
- * ```
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- export function truncateSync(name: string, len?: number): void;
- /** @category Runtime
- *
- * @deprecated This will be removed in Deno 2.0.
- */
- export interface OpMetrics {
- opsDispatched: number;
- opsDispatchedSync: number;
- opsDispatchedAsync: number;
- opsDispatchedAsyncUnref: number;
- opsCompleted: number;
- opsCompletedSync: number;
- opsCompletedAsync: number;
- opsCompletedAsyncUnref: number;
- bytesSentControl: number;
- bytesSentData: number;
- bytesReceived: number;
- }
- /** @category Runtime
- *
- * @deprecated This will be removed in Deno 2.0.
- */
- export interface Metrics extends OpMetrics {
- ops: Record<string, OpMetrics>;
- }
- /** Receive metrics from the privileged side of Deno. This is primarily used
- * in the development of Deno. _Ops_, also called _bindings_, are the
- * go-between between Deno JavaScript sandbox and the rest of Deno.
- *
- * ```shell
- * > console.table(Deno.metrics())
- * ┌─────────────────────────┬────────┐
- * │ (index) │ Values │
- * ├─────────────────────────┼────────┤
- * │ opsDispatched │ 3 │
- * │ opsDispatchedSync │ 2 │
- * │ opsDispatchedAsync │ 1 │
- * │ opsDispatchedAsyncUnref │ 0 │
- * │ opsCompleted │ 3 │
- * │ opsCompletedSync │ 2 │
- * │ opsCompletedAsync │ 1 │
- * │ opsCompletedAsyncUnref │ 0 │
- * │ bytesSentControl │ 73 │
- * │ bytesSentData │ 0 │
- * │ bytesReceived │ 375 │
- * └─────────────────────────┴────────┘
- * ```
- *
- * @category Runtime
- *
- * @deprecated This will be removed in Deno 2.0.
- */
- export function metrics(): Metrics;
- /**
- * A map of open resources that Deno is tracking. The key is the resource ID
- * (_rid_) and the value is its representation.
- *
- * @deprecated This will be removed in Deno 2.0.
- *
- * @category Runtime */
- export interface ResourceMap {
- [rid: number]: unknown;
- }
- /** Returns a map of open resource IDs (_rid_) along with their string
- * representations. This is an internal API and as such resource
- * representation has `unknown` type; that means it can change any time and
- * should not be depended upon.
- *
- * ```ts
- * console.log(Deno.resources());
- * // { 0: "stdin", 1: "stdout", 2: "stderr" }
- * Deno.openSync('../test.file');
- * console.log(Deno.resources());
- * // { 0: "stdin", 1: "stdout", 2: "stderr", 3: "fsFile" }
- * ```
- *
- * @deprecated This will be removed in Deno 2.0.
- *
- * @category Runtime
- */
- export function resources(): ResourceMap;
- /**
- * Additional information for FsEvent objects with the "other" kind.
- *
- * - `"rescan"`: rescan notices indicate either a lapse in the events or a
- * change in the filesystem such that events received so far can no longer
- * be relied on to represent the state of the filesystem now. An
- * application that simply reacts to file changes may not care about this.
- * An application that keeps an in-memory representation of the filesystem
- * will need to care, and will need to refresh that representation directly
- * from the filesystem.
- *
- * @category File System
- */
- export type FsEventFlag = "rescan";
- /**
- * Represents a unique file system event yielded by a
- * {@linkcode Deno.FsWatcher}.
- *
- * @category File System */
- export interface FsEvent {
- /** The kind/type of the file system event. */
- kind: "any" | "access" | "create" | "modify" | "remove" | "other";
- /** An array of paths that are associated with the file system event. */
- paths: string[];
- /** Any additional flags associated with the event. */
- flag?: FsEventFlag;
- }
- /**
- * Returned by {@linkcode Deno.watchFs}. It is an async iterator yielding up
- * system events. To stop watching the file system by calling `.close()`
- * method.
- *
- * @category File System
- */
- export interface FsWatcher extends AsyncIterable<FsEvent>, Disposable {
- /**
- * The resource id.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- readonly rid: number;
- /** Stops watching the file system and closes the watcher resource. */
- close(): void;
- /**
- * Stops watching the file system and closes the watcher resource.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- return?(value?: any): Promise<IteratorResult<FsEvent>>;
- [Symbol.asyncIterator](): AsyncIterableIterator<FsEvent>;
- }
- /** Watch for file system events against one or more `paths`, which can be
- * files or directories. These paths must exist already. One user action (e.g.
- * `touch test.file`) can generate multiple file system events. Likewise,
- * one user action can result in multiple file paths in one event (e.g. `mv
- * old_name.txt new_name.txt`).
- *
- * The recursive option is `true` by default and, for directories, will watch
- * the specified directory and all sub directories.
- *
- * Note that the exact ordering of the events can vary between operating
- * systems.
- *
- * ```ts
- * const watcher = Deno.watchFs("/");
- * for await (const event of watcher) {
- * console.log(">>>> event", event);
- * // { kind: "create", paths: [ "/foo.txt" ] }
- * }
- * ```
- *
- * Call `watcher.close()` to stop watching.
- *
- * ```ts
- * const watcher = Deno.watchFs("/");
- *
- * setTimeout(() => {
- * watcher.close();
- * }, 5000);
- *
- * for await (const event of watcher) {
- * console.log(">>>> event", event);
- * }
- * ```
- *
- * Requires `allow-read` permission.
- *
- * @tags allow-read
- * @category File System
- */
- export function watchFs(
- paths: string | string[],
- options?: { recursive: boolean },
- ): FsWatcher;
- /**
- * Options which can be used with {@linkcode Deno.run}.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category Sub Process */
- export interface RunOptions {
- /** Arguments to pass.
- *
- * _Note_: the first element needs to be a path to the executable that is
- * being run. */
- cmd: readonly string[] | [string | URL, ...string[]];
- /** The current working directory that should be used when running the
- * sub-process. */
- cwd?: string;
- /** Any environment variables to be set when running the sub-process. */
- env?: Record<string, string>;
- /** By default subprocess inherits `stdout` of parent process. To change
- * this this option can be set to a resource ID (_rid_) of an open file,
- * `"inherit"`, `"piped"`, or `"null"`:
- *
- * - _number_: the resource ID of an open file/resource. This allows you to
- * write to a file.
- * - `"inherit"`: The default if unspecified. The subprocess inherits from the
- * parent.
- * - `"piped"`: A new pipe should be arranged to connect the parent and child
- * sub-process.
- * - `"null"`: This stream will be ignored. This is the equivalent of attaching
- * the stream to `/dev/null`.
- */
- stdout?: "inherit" | "piped" | "null" | number;
- /** By default subprocess inherits `stderr` of parent process. To change
- * this this option can be set to a resource ID (_rid_) of an open file,
- * `"inherit"`, `"piped"`, or `"null"`:
- *
- * - _number_: the resource ID of an open file/resource. This allows you to
- * write to a file.
- * - `"inherit"`: The default if unspecified. The subprocess inherits from the
- * parent.
- * - `"piped"`: A new pipe should be arranged to connect the parent and child
- * sub-process.
- * - `"null"`: This stream will be ignored. This is the equivalent of attaching
- * the stream to `/dev/null`.
- */
- stderr?: "inherit" | "piped" | "null" | number;
- /** By default subprocess inherits `stdin` of parent process. To change
- * this this option can be set to a resource ID (_rid_) of an open file,
- * `"inherit"`, `"piped"`, or `"null"`:
- *
- * - _number_: the resource ID of an open file/resource. This allows you to
- * read from a file.
- * - `"inherit"`: The default if unspecified. The subprocess inherits from the
- * parent.
- * - `"piped"`: A new pipe should be arranged to connect the parent and child
- * sub-process.
- * - `"null"`: This stream will be ignored. This is the equivalent of attaching
- * the stream to `/dev/null`.
- */
- stdin?: "inherit" | "piped" | "null" | number;
- }
- /**
- * The status resolved from the `.status()` method of a
- * {@linkcode Deno.Process} instance.
- *
- * If `success` is `true`, then `code` will be `0`, but if `success` is
- * `false`, the sub-process exit code will be set in `code`.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category Sub Process */
- export type ProcessStatus =
- | {
- success: true;
- code: 0;
- signal?: undefined;
- }
- | {
- success: false;
- code: number;
- signal?: number;
- };
- /**
- * Represents an instance of a sub process that is returned from
- * {@linkcode Deno.run} which can be used to manage the sub-process.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category Sub Process */
- export class Process<T extends RunOptions = RunOptions> {
- /** The resource ID of the sub-process. */
- readonly rid: number;
- /** The operating system's process ID for the sub-process. */
- readonly pid: number;
- /** A reference to the sub-processes `stdin`, which allows interacting with
- * the sub-process at a low level. */
- readonly stdin: T["stdin"] extends "piped" ? Writer & Closer & {
- writable: WritableStream<Uint8Array>;
- }
- : (Writer & Closer & { writable: WritableStream<Uint8Array> }) | null;
- /** A reference to the sub-processes `stdout`, which allows interacting with
- * the sub-process at a low level. */
- readonly stdout: T["stdout"] extends "piped" ? Reader & Closer & {
- readable: ReadableStream<Uint8Array>;
- }
- : (Reader & Closer & { readable: ReadableStream<Uint8Array> }) | null;
- /** A reference to the sub-processes `stderr`, which allows interacting with
- * the sub-process at a low level. */
- readonly stderr: T["stderr"] extends "piped" ? Reader & Closer & {
- readable: ReadableStream<Uint8Array>;
- }
- : (Reader & Closer & { readable: ReadableStream<Uint8Array> }) | null;
- /** Wait for the process to exit and return its exit status.
- *
- * Calling this function multiple times will return the same status.
- *
- * The `stdin` reference to the process will be closed before waiting to
- * avoid a deadlock.
- *
- * If `stdout` and/or `stderr` were set to `"piped"`, they must be closed
- * manually before the process can exit.
- *
- * To run process to completion and collect output from both `stdout` and
- * `stderr` use:
- *
- * ```ts
- * const p = Deno.run({ cmd: [ "echo", "hello world" ], stderr: 'piped', stdout: 'piped' });
- * const [status, stdout, stderr] = await Promise.all([
- * p.status(),
- * p.output(),
- * p.stderrOutput()
- * ]);
- * p.close();
- * ```
- */
- status(): Promise<ProcessStatus>;
- /** Buffer the stdout until EOF and return it as `Uint8Array`.
- *
- * You must set `stdout` to `"piped"` when creating the process.
- *
- * This calls `close()` on stdout after its done. */
- output(): Promise<Uint8Array>;
- /** Buffer the stderr until EOF and return it as `Uint8Array`.
- *
- * You must set `stderr` to `"piped"` when creating the process.
- *
- * This calls `close()` on stderr after its done. */
- stderrOutput(): Promise<Uint8Array>;
- /** Clean up resources associated with the sub-process instance. */
- close(): void;
- /** Send a signal to process.
- * Default signal is `"SIGTERM"`.
- *
- * ```ts
- * const p = Deno.run({ cmd: [ "sleep", "20" ]});
- * p.kill("SIGTERM");
- * p.close();
- * ```
- */
- kill(signo?: Signal): void;
- }
- /** Operating signals which can be listened for or sent to sub-processes. What
- * signals and what their standard behaviors are OS dependent.
- *
- * @category Runtime */
- export type Signal =
- | "SIGABRT"
- | "SIGALRM"
- | "SIGBREAK"
- | "SIGBUS"
- | "SIGCHLD"
- | "SIGCONT"
- | "SIGEMT"
- | "SIGFPE"
- | "SIGHUP"
- | "SIGILL"
- | "SIGINFO"
- | "SIGINT"
- | "SIGIO"
- | "SIGPOLL"
- | "SIGUNUSED"
- | "SIGKILL"
- | "SIGPIPE"
- | "SIGPROF"
- | "SIGPWR"
- | "SIGQUIT"
- | "SIGSEGV"
- | "SIGSTKFLT"
- | "SIGSTOP"
- | "SIGSYS"
- | "SIGTERM"
- | "SIGTRAP"
- | "SIGTSTP"
- | "SIGTTIN"
- | "SIGTTOU"
- | "SIGURG"
- | "SIGUSR1"
- | "SIGUSR2"
- | "SIGVTALRM"
- | "SIGWINCH"
- | "SIGXCPU"
- | "SIGXFSZ";
- /** Registers the given function as a listener of the given signal event.
- *
- * ```ts
- * Deno.addSignalListener(
- * "SIGTERM",
- * () => {
- * console.log("SIGTERM!")
- * }
- * );
- * ```
- *
- * _Note_: On Windows only `"SIGINT"` (CTRL+C) and `"SIGBREAK"` (CTRL+Break)
- * are supported.
- *
- * @category Runtime
- */
- export function addSignalListener(signal: Signal, handler: () => void): void;
- /** Removes the given signal listener that has been registered with
- * {@linkcode Deno.addSignalListener}.
- *
- * ```ts
- * const listener = () => {
- * console.log("SIGTERM!")
- * };
- * Deno.addSignalListener("SIGTERM", listener);
- * Deno.removeSignalListener("SIGTERM", listener);
- * ```
- *
- * _Note_: On Windows only `"SIGINT"` (CTRL+C) and `"SIGBREAK"` (CTRL+Break)
- * are supported.
- *
- * @category Runtime
- */
- export function removeSignalListener(
- signal: Signal,
- handler: () => void,
- ): void;
- /**
- * Spawns new subprocess. RunOptions must contain at a minimum the `opt.cmd`,
- * an array of program arguments, the first of which is the binary.
- *
- * ```ts
- * const p = Deno.run({
- * cmd: ["curl", "https://example.com"],
- * });
- * const status = await p.status();
- * ```
- *
- * Subprocess uses same working directory as parent process unless `opt.cwd`
- * is specified.
- *
- * Environmental variables from parent process can be cleared using `opt.clearEnv`.
- * Doesn't guarantee that only `opt.env` variables are present,
- * as the OS may set environmental variables for processes.
- *
- * Environmental variables for subprocess can be specified using `opt.env`
- * mapping.
- *
- * `opt.uid` sets the child process’s user ID. This translates to a setuid call
- * in the child process. Failure in the setuid call will cause the spawn to fail.
- *
- * `opt.gid` is similar to `opt.uid`, but sets the group ID of the child process.
- * This has the same semantics as the uid field.
- *
- * By default subprocess inherits stdio of parent process. To change
- * this this, `opt.stdin`, `opt.stdout`, and `opt.stderr` can be set
- * independently to a resource ID (_rid_) of an open file, `"inherit"`,
- * `"piped"`, or `"null"`:
- *
- * - _number_: the resource ID of an open file/resource. This allows you to
- * read or write to a file.
- * - `"inherit"`: The default if unspecified. The subprocess inherits from the
- * parent.
- * - `"piped"`: A new pipe should be arranged to connect the parent and child
- * sub-process.
- * - `"null"`: This stream will be ignored. This is the equivalent of attaching
- * the stream to `/dev/null`.
- *
- * Details of the spawned process are returned as an instance of
- * {@linkcode Deno.Process}.
- *
- * Requires `allow-run` permission.
- *
- * @deprecated This will be soft-removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @tags allow-run
- * @category Sub Process
- */
- export function run<T extends RunOptions = RunOptions>(opt: T): Process<T>;
- /** Create a child process.
- *
- * If any stdio options are not set to `"piped"`, accessing the corresponding
- * field on the `Command` or its `CommandOutput` will throw a `TypeError`.
- *
- * If `stdin` is set to `"piped"`, the `stdin` {@linkcode WritableStream}
- * needs to be closed manually.
- *
- * `Command` acts as a builder. Each call to {@linkcode Command.spawn} or
- * {@linkcode Command.output} will spawn a new subprocess.
- *
- * @example Spawn a subprocess and pipe the output to a file
- *
- * ```ts
- * const command = new Deno.Command(Deno.execPath(), {
- * args: [
- * "eval",
- * "console.log('Hello World')",
- * ],
- * stdin: "piped",
- * stdout: "piped",
- * });
- * const child = command.spawn();
- *
- * // open a file and pipe the subprocess output to it.
- * child.stdout.pipeTo(
- * Deno.openSync("output", { write: true, create: true }).writable,
- * );
- *
- * // manually close stdin
- * child.stdin.close();
- * const status = await child.status;
- * ```
- *
- * @example Spawn a subprocess and collect its output
- *
- * ```ts
- * const command = new Deno.Command(Deno.execPath(), {
- * args: [
- * "eval",
- * "console.log('hello'); console.error('world')",
- * ],
- * });
- * const { code, stdout, stderr } = await command.output();
- * console.assert(code === 0);
- * console.assert("hello\n" === new TextDecoder().decode(stdout));
- * console.assert("world\n" === new TextDecoder().decode(stderr));
- * ```
- *
- * @example Spawn a subprocess and collect its output synchronously
- *
- * ```ts
- * const command = new Deno.Command(Deno.execPath(), {
- * args: [
- * "eval",
- * "console.log('hello'); console.error('world')",
- * ],
- * });
- * const { code, stdout, stderr } = command.outputSync();
- * console.assert(code === 0);
- * console.assert("hello\n" === new TextDecoder().decode(stdout));
- * console.assert("world\n" === new TextDecoder().decode(stderr));
- * ```
- *
- * @tags allow-run
- * @category Sub Process
- */
- export class Command {
- constructor(command: string | URL, options?: CommandOptions);
- /**
- * Executes the {@linkcode Deno.Command}, waiting for it to finish and
- * collecting all of its output.
- *
- * Will throw an error if `stdin: "piped"` is set.
- *
- * If options `stdout` or `stderr` are not set to `"piped"`, accessing the
- * corresponding field on {@linkcode Deno.CommandOutput} will throw a `TypeError`.
- */
- output(): Promise<CommandOutput>;
- /**
- * Synchronously executes the {@linkcode Deno.Command}, waiting for it to
- * finish and collecting all of its output.
- *
- * Will throw an error if `stdin: "piped"` is set.
- *
- * If options `stdout` or `stderr` are not set to `"piped"`, accessing the
- * corresponding field on {@linkcode Deno.CommandOutput} will throw a `TypeError`.
- */
- outputSync(): CommandOutput;
- /**
- * Spawns a streamable subprocess, allowing to use the other methods.
- */
- spawn(): ChildProcess;
- }
- /**
- * The interface for handling a child process returned from
- * {@linkcode Deno.Command.spawn}.
- *
- * @category Sub Process
- */
- export class ChildProcess implements AsyncDisposable {
- get stdin(): WritableStream<Uint8Array>;
- get stdout(): ReadableStream<Uint8Array>;
- get stderr(): ReadableStream<Uint8Array>;
- readonly pid: number;
- /** Get the status of the child. */
- readonly status: Promise<CommandStatus>;
- /** Waits for the child to exit completely, returning all its output and
- * status. */
- output(): Promise<CommandOutput>;
- /** Kills the process with given {@linkcode Deno.Signal}.
- *
- * Defaults to `SIGTERM` if no signal is provided.
- *
- * @param [signo="SIGTERM"]
- */
- kill(signo?: Signal): void;
- /** Ensure that the status of the child process prevents the Deno process
- * from exiting. */
- ref(): void;
- /** Ensure that the status of the child process does not block the Deno
- * process from exiting. */
- unref(): void;
- [Symbol.asyncDispose](): Promise<void>;
- }
- /**
- * Options which can be set when calling {@linkcode Deno.Command}.
- *
- * @category Sub Process
- */
- export interface CommandOptions {
- /** Arguments to pass to the process. */
- args?: string[];
- /**
- * The working directory of the process.
- *
- * If not specified, the `cwd` of the parent process is used.
- */
- cwd?: string | URL;
- /**
- * Clear environmental variables from parent process.
- *
- * Doesn't guarantee that only `env` variables are present, as the OS may
- * set environmental variables for processes.
- *
- * @default {false}
- */
- clearEnv?: boolean;
- /** Environmental variables to pass to the subprocess. */
- env?: Record<string, string>;
- /**
- * Sets the child process’s user ID. This translates to a setuid call in the
- * child process. Failure in the set uid call will cause the spawn to fail.
- */
- uid?: number;
- /** Similar to `uid`, but sets the group ID of the child process. */
- gid?: number;
- /**
- * An {@linkcode AbortSignal} that allows closing the process using the
- * corresponding {@linkcode AbortController} by sending the process a
- * SIGTERM signal.
- *
- * Not supported in {@linkcode Deno.Command.outputSync}.
- */
- signal?: AbortSignal;
- /** How `stdin` of the spawned process should be handled.
- *
- * Defaults to `"inherit"` for `output` & `outputSync`,
- * and `"inherit"` for `spawn`. */
- stdin?: "piped" | "inherit" | "null";
- /** How `stdout` of the spawned process should be handled.
- *
- * Defaults to `"piped"` for `output` & `outputSync`,
- * and `"inherit"` for `spawn`. */
- stdout?: "piped" | "inherit" | "null";
- /** How `stderr` of the spawned process should be handled.
- *
- * Defaults to `"piped"` for `output` & `outputSync`,
- * and `"inherit"` for `spawn`. */
- stderr?: "piped" | "inherit" | "null";
- /** Skips quoting and escaping of the arguments on windows. This option
- * is ignored on non-windows platforms.
- *
- * @default {false} */
- windowsRawArguments?: boolean;
- }
- /**
- * @category Sub Process
- */
- export interface CommandStatus {
- /** If the child process exits with a 0 status code, `success` will be set
- * to `true`, otherwise `false`. */
- success: boolean;
- /** The exit code of the child process. */
- code: number;
- /** The signal associated with the child process. */
- signal: Signal | null;
- }
- /**
- * The interface returned from calling {@linkcode Deno.Command.output} or
- * {@linkcode Deno.Command.outputSync} which represents the result of spawning the
- * child process.
- *
- * @category Sub Process
- */
- export interface CommandOutput extends CommandStatus {
- /** The buffered output from the child process' `stdout`. */
- readonly stdout: Uint8Array;
- /** The buffered output from the child process' `stderr`. */
- readonly stderr: Uint8Array;
- }
- /** Option which can be specified when performing {@linkcode Deno.inspect}.
- *
- * @category I/O */
- export interface InspectOptions {
- /** Stylize output with ANSI colors.
- *
- * @default {false} */
- colors?: boolean;
- /** Try to fit more than one entry of a collection on the same line.
- *
- * @default {true} */
- compact?: boolean;
- /** Traversal depth for nested objects.
- *
- * @default {4} */
- depth?: number;
- /** The maximum length for an inspection to take up a single line.
- *
- * @default {80} */
- breakLength?: number;
- /** Whether or not to escape sequences.
- *
- * @default {true} */
- escapeSequences?: boolean;
- /** The maximum number of iterable entries to print.
- *
- * @default {100} */
- iterableLimit?: number;
- /** Show a Proxy's target and handler.
- *
- * @default {false} */
- showProxy?: boolean;
- /** Sort Object, Set and Map entries by key.
- *
- * @default {false} */
- sorted?: boolean;
- /** Add a trailing comma for multiline collections.
- *
- * @default {false} */
- trailingComma?: boolean;
- /** Evaluate the result of calling getters.
- *
- * @default {false} */
- getters?: boolean;
- /** Show an object's non-enumerable properties.
- *
- * @default {false} */
- showHidden?: boolean;
- /** The maximum length of a string before it is truncated with an
- * ellipsis. */
- strAbbreviateSize?: number;
- }
- /** Converts the input into a string that has the same format as printed by
- * `console.log()`.
- *
- * ```ts
- * const obj = {
- * a: 10,
- * b: "hello",
- * };
- * const objAsString = Deno.inspect(obj); // { a: 10, b: "hello" }
- * console.log(obj); // prints same value as objAsString, e.g. { a: 10, b: "hello" }
- * ```
- *
- * A custom inspect functions can be registered on objects, via the symbol
- * `Symbol.for("Deno.customInspect")`, to control and customize the output
- * of `inspect()` or when using `console` logging:
- *
- * ```ts
- * class A {
- * x = 10;
- * y = "hello";
- * [Symbol.for("Deno.customInspect")]() {
- * return `x=${this.x}, y=${this.y}`;
- * }
- * }
- *
- * const inStringFormat = Deno.inspect(new A()); // "x=10, y=hello"
- * console.log(inStringFormat); // prints "x=10, y=hello"
- * ```
- *
- * A depth can be specified by using the `depth` option:
- *
- * ```ts
- * Deno.inspect({a: {b: {c: {d: 'hello'}}}}, {depth: 2}); // { a: { b: [Object] } }
- * ```
- *
- * @category I/O
- */
- export function inspect(value: unknown, options?: InspectOptions): string;
- /** The name of a privileged feature which needs permission.
- *
- * @category Permissions
- */
- export type PermissionName =
- | "run"
- | "read"
- | "write"
- | "net"
- | "env"
- | "sys"
- | "ffi"
- | "hrtime";
- /** The current status of the permission:
- *
- * - `"granted"` - the permission has been granted.
- * - `"denied"` - the permission has been explicitly denied.
- * - `"prompt"` - the permission has not explicitly granted nor denied.
- *
- * @category Permissions
- */
- export type PermissionState =
- | "granted"
- | "denied"
- | "prompt";
- /** The permission descriptor for the `allow-run` and `deny-run` permissions, which controls
- * access to what sub-processes can be executed by Deno. The option `command`
- * allows scoping the permission to a specific executable.
- *
- * **Warning, in practice, `allow-run` is effectively the same as `allow-all`
- * in the sense that malicious code could execute any arbitrary code on the
- * host.**
- *
- * @category Permissions */
- export interface RunPermissionDescriptor {
- name: "run";
- /** An `allow-run` or `deny-run` permission can be scoped to a specific executable,
- * which would be relative to the start-up CWD of the Deno CLI. */
- command?: string | URL;
- }
- /** The permission descriptor for the `allow-read` and `deny-read` permissions, which controls
- * access to reading resources from the local host. The option `path` allows
- * scoping the permission to a specific path (and if the path is a directory
- * any sub paths).
- *
- * Permission granted under `allow-read` only allows runtime code to attempt
- * to read, the underlying operating system may apply additional permissions.
- *
- * @category Permissions */
- export interface ReadPermissionDescriptor {
- name: "read";
- /** An `allow-read` or `deny-read` permission can be scoped to a specific path (and if
- * the path is a directory, any sub paths). */
- path?: string | URL;
- }
- /** The permission descriptor for the `allow-write` and `deny-write` permissions, which
- * controls access to writing to resources from the local host. The option
- * `path` allow scoping the permission to a specific path (and if the path is
- * a directory any sub paths).
- *
- * Permission granted under `allow-write` only allows runtime code to attempt
- * to write, the underlying operating system may apply additional permissions.
- *
- * @category Permissions */
- export interface WritePermissionDescriptor {
- name: "write";
- /** An `allow-write` or `deny-write` permission can be scoped to a specific path (and if
- * the path is a directory, any sub paths). */
- path?: string | URL;
- }
- /** The permission descriptor for the `allow-net` and `deny-net` permissions, which controls
- * access to opening network ports and connecting to remote hosts via the
- * network. The option `host` allows scoping the permission for outbound
- * connection to a specific host and port.
- *
- * @category Permissions */
- export interface NetPermissionDescriptor {
- name: "net";
- /** Optional host string of the form `"<hostname>[:<port>]"`. Examples:
- *
- * "github.com"
- * "deno.land:8080"
- */
- host?: string;
- }
- /** The permission descriptor for the `allow-env` and `deny-env` permissions, which controls
- * access to being able to read and write to the process environment variables
- * as well as access other information about the environment. The option
- * `variable` allows scoping the permission to a specific environment
- * variable.
- *
- * @category Permissions */
- export interface EnvPermissionDescriptor {
- name: "env";
- /** Optional environment variable name (e.g. `PATH`). */
- variable?: string;
- }
- /** The permission descriptor for the `allow-sys` and `deny-sys` permissions, which controls
- * access to sensitive host system information, which malicious code might
- * attempt to exploit. The option `kind` allows scoping the permission to a
- * specific piece of information.
- *
- * @category Permissions */
- export interface SysPermissionDescriptor {
- name: "sys";
- /** The specific information to scope the permission to. */
- kind?:
- | "loadavg"
- | "hostname"
- | "systemMemoryInfo"
- | "networkInterfaces"
- | "osRelease"
- | "osUptime"
- | "uid"
- | "gid"
- | "username"
- | "cpus"
- | "homedir"
- | "statfs"
- | "getPriority"
- | "setPriority";
- }
- /** The permission descriptor for the `allow-ffi` and `deny-ffi` permissions, which controls
- * access to loading _foreign_ code and interfacing with it via the
- * [Foreign Function Interface API](https://deno.land/manual/runtime/ffi_api)
- * available in Deno. The option `path` allows scoping the permission to a
- * specific path on the host.
- *
- * @category Permissions */
- export interface FfiPermissionDescriptor {
- name: "ffi";
- /** Optional path on the local host to scope the permission to. */
- path?: string | URL;
- }
- /** The permission descriptor for the `allow-hrtime` and `deny-hrtime` permissions, which
- * controls if the runtime code has access to high resolution time. High
- * resolution time is considered sensitive information, because it can be used
- * by malicious code to gain information about the host that it might not
- * otherwise have access to.
- *
- * @category Permissions */
- export interface HrtimePermissionDescriptor {
- name: "hrtime";
- }
- /** Permission descriptors which define a permission and can be queried,
- * requested, or revoked.
- *
- * View the specifics of the individual descriptors for more information about
- * each permission kind.
- *
- * @category Permissions
- */
- export type PermissionDescriptor =
- | RunPermissionDescriptor
- | ReadPermissionDescriptor
- | WritePermissionDescriptor
- | NetPermissionDescriptor
- | EnvPermissionDescriptor
- | SysPermissionDescriptor
- | FfiPermissionDescriptor
- | HrtimePermissionDescriptor;
- /** The interface which defines what event types are supported by
- * {@linkcode PermissionStatus} instances.
- *
- * @category Permissions */
- export interface PermissionStatusEventMap {
- "change": Event;
- }
- /** An {@linkcode EventTarget} returned from the {@linkcode Deno.permissions}
- * API which can provide updates to any state changes of the permission.
- *
- * @category Permissions */
- export class PermissionStatus extends EventTarget {
- // deno-lint-ignore no-explicit-any
- onchange: ((this: PermissionStatus, ev: Event) => any) | null;
- readonly state: PermissionState;
- /**
- * Describes if permission is only granted partially, eg. an access
- * might be granted to "/foo" directory, but denied for "/foo/bar".
- * In such case this field will be set to `true` when querying for
- * read permissions of "/foo" directory.
- */
- readonly partial: boolean;
- addEventListener<K extends keyof PermissionStatusEventMap>(
- type: K,
- listener: (
- this: PermissionStatus,
- ev: PermissionStatusEventMap[K],
- ) => any,
- options?: boolean | AddEventListenerOptions,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | AddEventListenerOptions,
- ): void;
- removeEventListener<K extends keyof PermissionStatusEventMap>(
- type: K,
- listener: (
- this: PermissionStatus,
- ev: PermissionStatusEventMap[K],
- ) => any,
- options?: boolean | EventListenerOptions,
- ): void;
- removeEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | EventListenerOptions,
- ): void;
- }
- /**
- * Deno's permission management API.
- *
- * The class which provides the interface for the {@linkcode Deno.permissions}
- * global instance and is based on the web platform
- * [Permissions API](https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API),
- * though some proposed parts of the API which are useful in a server side
- * runtime context were removed or abandoned in the web platform specification
- * which is why it was chosen to locate it in the {@linkcode Deno} namespace
- * instead.
- *
- * By default, if the `stdin`/`stdout` is TTY for the Deno CLI (meaning it can
- * send and receive text), then the CLI will prompt the user to grant
- * permission when an un-granted permission is requested. This behavior can
- * be changed by using the `--no-prompt` command at startup. When prompting
- * the CLI will request the narrowest permission possible, potentially making
- * it annoying to the user. The permissions APIs allow the code author to
- * request a wider set of permissions at one time in order to provide a better
- * user experience.
- *
- * @category Permissions */
- export class Permissions {
- /** Resolves to the current status of a permission.
- *
- * Note, if the permission is already granted, `request()` will not prompt
- * the user again, therefore `query()` is only necessary if you are going
- * to react differently existing permissions without wanting to modify them
- * or prompt the user to modify them.
- *
- * ```ts
- * const status = await Deno.permissions.query({ name: "read", path: "/etc" });
- * console.log(status.state);
- * ```
- */
- query(desc: PermissionDescriptor): Promise<PermissionStatus>;
- /** Returns the current status of a permission.
- *
- * Note, if the permission is already granted, `request()` will not prompt
- * the user again, therefore `querySync()` is only necessary if you are going
- * to react differently existing permissions without wanting to modify them
- * or prompt the user to modify them.
- *
- * ```ts
- * const status = Deno.permissions.querySync({ name: "read", path: "/etc" });
- * console.log(status.state);
- * ```
- */
- querySync(desc: PermissionDescriptor): PermissionStatus;
- /** Revokes a permission, and resolves to the state of the permission.
- *
- * ```ts
- * import { assert } from "jsr:@std/assert";
- *
- * const status = await Deno.permissions.revoke({ name: "run" });
- * assert(status.state !== "granted")
- * ```
- */
- revoke(desc: PermissionDescriptor): Promise<PermissionStatus>;
- /** Revokes a permission, and returns the state of the permission.
- *
- * ```ts
- * import { assert } from "jsr:@std/assert";
- *
- * const status = Deno.permissions.revokeSync({ name: "run" });
- * assert(status.state !== "granted")
- * ```
- */
- revokeSync(desc: PermissionDescriptor): PermissionStatus;
- /** Requests the permission, and resolves to the state of the permission.
- *
- * If the permission is already granted, the user will not be prompted to
- * grant the permission again.
- *
- * ```ts
- * const status = await Deno.permissions.request({ name: "env" });
- * if (status.state === "granted") {
- * console.log("'env' permission is granted.");
- * } else {
- * console.log("'env' permission is denied.");
- * }
- * ```
- */
- request(desc: PermissionDescriptor): Promise<PermissionStatus>;
- /** Requests the permission, and returns the state of the permission.
- *
- * If the permission is already granted, the user will not be prompted to
- * grant the permission again.
- *
- * ```ts
- * const status = Deno.permissions.requestSync({ name: "env" });
- * if (status.state === "granted") {
- * console.log("'env' permission is granted.");
- * } else {
- * console.log("'env' permission is denied.");
- * }
- * ```
- */
- requestSync(desc: PermissionDescriptor): PermissionStatus;
- }
- /** Deno's permission management API.
- *
- * It is a singleton instance of the {@linkcode Permissions} object and is
- * based on the web platform
- * [Permissions API](https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API),
- * though some proposed parts of the API which are useful in a server side
- * runtime context were removed or abandoned in the web platform specification
- * which is why it was chosen to locate it in the {@linkcode Deno} namespace
- * instead.
- *
- * By default, if the `stdin`/`stdout` is TTY for the Deno CLI (meaning it can
- * send and receive text), then the CLI will prompt the user to grant
- * permission when an un-granted permission is requested. This behavior can
- * be changed by using the `--no-prompt` command at startup. When prompting
- * the CLI will request the narrowest permission possible, potentially making
- * it annoying to the user. The permissions APIs allow the code author to
- * request a wider set of permissions at one time in order to provide a better
- * user experience.
- *
- * Requesting already granted permissions will not prompt the user and will
- * return that the permission was granted.
- *
- * ### Querying
- *
- * ```ts
- * const status = await Deno.permissions.query({ name: "read", path: "/etc" });
- * console.log(status.state);
- * ```
- *
- * ```ts
- * const status = Deno.permissions.querySync({ name: "read", path: "/etc" });
- * console.log(status.state);
- * ```
- *
- * ### Revoking
- *
- * ```ts
- * import { assert } from "jsr:@std/assert";
- *
- * const status = await Deno.permissions.revoke({ name: "run" });
- * assert(status.state !== "granted")
- * ```
- *
- * ```ts
- * import { assert } from "jsr:@std/assert";
- *
- * const status = Deno.permissions.revokeSync({ name: "run" });
- * assert(status.state !== "granted")
- * ```
- *
- * ### Requesting
- *
- * ```ts
- * const status = await Deno.permissions.request({ name: "env" });
- * if (status.state === "granted") {
- * console.log("'env' permission is granted.");
- * } else {
- * console.log("'env' permission is denied.");
- * }
- * ```
- *
- * ```ts
- * const status = Deno.permissions.requestSync({ name: "env" });
- * if (status.state === "granted") {
- * console.log("'env' permission is granted.");
- * } else {
- * console.log("'env' permission is denied.");
- * }
- * ```
- *
- * @category Permissions
- */
- export const permissions: Permissions;
- /** Information related to the build of the current Deno runtime.
- *
- * Users are discouraged from code branching based on this information, as
- * assumptions about what is available in what build environment might change
- * over time. Developers should specifically sniff out the features they
- * intend to use.
- *
- * The intended use for the information is for logging and debugging purposes.
- *
- * @category Runtime
- */
- export const build: {
- /** The [LLVM](https://llvm.org/) target triple, which is the combination
- * of `${arch}-${vendor}-${os}` and represent the specific build target that
- * the current runtime was built for. */
- target: string;
- /** Instruction set architecture that the Deno CLI was built for. */
- arch: "x86_64" | "aarch64";
- /** The operating system that the Deno CLI was built for. `"darwin"` is
- * also known as OSX or MacOS. */
- os:
- | "darwin"
- | "linux"
- | "android"
- | "windows"
- | "freebsd"
- | "netbsd"
- | "aix"
- | "solaris"
- | "illumos";
- /** The computer vendor that the Deno CLI was built for. */
- vendor: string;
- /** Optional environment flags that were set for this build of Deno CLI. */
- env?: string;
- };
- /** Version information related to the current Deno CLI runtime environment.
- *
- * Users are discouraged from code branching based on this information, as
- * assumptions about what is available in what build environment might change
- * over time. Developers should specifically sniff out the features they
- * intend to use.
- *
- * The intended use for the information is for logging and debugging purposes.
- *
- * @category Runtime
- */
- export const version: {
- /** Deno CLI's version. For example: `"1.26.0"`. */
- deno: string;
- /** The V8 version used by Deno. For example: `"10.7.100.0"`.
- *
- * V8 is the underlying JavaScript runtime platform that Deno is built on
- * top of. */
- v8: string;
- /** The TypeScript version used by Deno. For example: `"4.8.3"`.
- *
- * A version of the TypeScript type checker and language server is built-in
- * to the Deno CLI. */
- typescript: string;
- };
- /** Returns the script arguments to the program.
- *
- * Give the following command line invocation of Deno:
- *
- * ```sh
- * deno run --allow-read https://examples.deno.land/command-line-arguments.ts Sushi
- * ```
- *
- * Then `Deno.args` will contain:
- *
- * ```ts
- * [ "Sushi" ]
- * ```
- *
- * If you are looking for a structured way to parse arguments, there is
- * [`parseArgs()`](https://jsr.io/@std/cli/doc/parse-args/~/parseArgs) from
- * the Deno Standard Library.
- *
- * @category Runtime
- */
- export const args: string[];
- /**
- * A symbol which can be used as a key for a custom method which will be
- * called when `Deno.inspect()` is called, or when the object is logged to
- * the console.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category I/O
- */
- export const customInspect: unique symbol;
- /** The URL of the entrypoint module entered from the command-line. It
- * requires read permission to the CWD.
- *
- * Also see {@linkcode ImportMeta} for other related information.
- *
- * @tags allow-read
- * @category Runtime
- */
- export const mainModule: string;
- /** Options that can be used with {@linkcode symlink} and
- * {@linkcode symlinkSync}.
- *
- * @category File System */
- export interface SymlinkOptions {
- /** Specify the symbolic link type as file, directory or NTFS junction. This
- * option only applies to Windows and is ignored on other operating systems. */
- type: "file" | "dir" | "junction";
- }
- /**
- * Creates `newpath` as a symbolic link to `oldpath`.
- *
- * The `options.type` parameter can be set to `"file"`, `"dir"` or `"junction"`.
- * This argument is only available on Windows and ignored on other platforms.
- *
- * ```ts
- * await Deno.symlink("old/name", "new/name");
- * ```
- *
- * Requires full `allow-read` and `allow-write` permissions.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function symlink(
- oldpath: string | URL,
- newpath: string | URL,
- options?: SymlinkOptions,
- ): Promise<void>;
- /**
- * Creates `newpath` as a symbolic link to `oldpath`.
- *
- * The `options.type` parameter can be set to `"file"`, `"dir"` or `"junction"`.
- * This argument is only available on Windows and ignored on other platforms.
- *
- * ```ts
- * Deno.symlinkSync("old/name", "new/name");
- * ```
- *
- * Requires full `allow-read` and `allow-write` permissions.
- *
- * @tags allow-read, allow-write
- * @category File System
- */
- export function symlinkSync(
- oldpath: string | URL,
- newpath: string | URL,
- options?: SymlinkOptions,
- ): void;
- /**
- * Truncates or extends the specified file stream, to reach the specified
- * `len`.
- *
- * If `len` is not specified then the entire file contents are truncated as if
- * `len` was set to `0`.
- *
- * If the file previously was larger than this new length, the extra data is
- * lost.
- *
- * If the file previously was shorter, it is extended, and the extended part
- * reads as null bytes ('\0').
- *
- * ### Truncate the entire file
- *
- * ```ts
- * const file = await Deno.open(
- * "my_file.txt",
- * { read: true, write: true, create: true }
- * );
- * await Deno.ftruncate(file.rid);
- * ```
- *
- * ### Truncate part of the file
- *
- * ```ts
- * const file = await Deno.open(
- * "my_file.txt",
- * { read: true, write: true, create: true }
- * );
- * await file.write(new TextEncoder().encode("Hello World"));
- * await Deno.ftruncate(file.rid, 7);
- * const data = new Uint8Array(32);
- * await Deno.read(file.rid, data);
- * console.log(new TextDecoder().decode(data)); // Hello W
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category File System
- */
- export function ftruncate(rid: number, len?: number): Promise<void>;
- /**
- * Synchronously truncates or extends the specified file stream, to reach the
- * specified `len`.
- *
- * If `len` is not specified then the entire file contents are truncated as if
- * `len` was set to `0`.
- *
- * If the file previously was larger than this new length, the extra data is
- * lost.
- *
- * If the file previously was shorter, it is extended, and the extended part
- * reads as null bytes ('\0').
- *
- * ### Truncate the entire file
- *
- * ```ts
- * const file = Deno.openSync(
- * "my_file.txt",
- * { read: true, write: true, truncate: true, create: true }
- * );
- * Deno.ftruncateSync(file.rid);
- * ```
- *
- * ### Truncate part of the file
- *
- * ```ts
- * const file = Deno.openSync(
- * "my_file.txt",
- * { read: true, write: true, create: true }
- * );
- * file.writeSync(new TextEncoder().encode("Hello World"));
- * Deno.ftruncateSync(file.rid, 7);
- * Deno.seekSync(file.rid, 0, Deno.SeekMode.Start);
- * const data = new Uint8Array(32);
- * Deno.readSync(file.rid, data);
- * console.log(new TextDecoder().decode(data)); // Hello W
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category File System
- */
- export function ftruncateSync(rid: number, len?: number): void;
- /**
- * Synchronously changes the access (`atime`) and modification (`mtime`) times
- * of a file stream resource referenced by `rid`. Given times are either in
- * seconds (UNIX epoch time) or as `Date` objects.
- *
- * ```ts
- * const file = Deno.openSync("file.txt", { create: true, write: true });
- * Deno.futimeSync(file.rid, 1556495550, new Date());
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category File System
- */
- export function futimeSync(
- rid: number,
- atime: number | Date,
- mtime: number | Date,
- ): void;
- /**
- * Changes the access (`atime`) and modification (`mtime`) times of a file
- * stream resource referenced by `rid`. Given times are either in seconds
- * (UNIX epoch time) or as `Date` objects.
- *
- * ```ts
- * const file = await Deno.open("file.txt", { create: true, write: true });
- * await Deno.futime(file.rid, 1556495550, new Date());
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category File System
- */
- export function futime(
- rid: number,
- atime: number | Date,
- mtime: number | Date,
- ): Promise<void>;
- /**
- * Returns a `Deno.FileInfo` for the given file stream.
- *
- * ```ts
- * import { assert } from "jsr:@std/assert";
- *
- * const file = await Deno.open("file.txt", { read: true });
- * const fileInfo = await Deno.fstat(file.rid);
- * assert(fileInfo.isFile);
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category File System
- */
- export function fstat(rid: number): Promise<FileInfo>;
- /**
- * Synchronously returns a {@linkcode Deno.FileInfo} for the given file
- * stream.
- *
- * ```ts
- * import { assert } from "jsr:@std/assert";
- *
- * const file = Deno.openSync("file.txt", { read: true });
- * const fileInfo = Deno.fstatSync(file.rid);
- * assert(fileInfo.isFile);
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category File System
- */
- export function fstatSync(rid: number): FileInfo;
- /**
- * Synchronously changes the access (`atime`) and modification (`mtime`) times
- * of a file system object referenced by `path`. Given times are either in
- * seconds (UNIX epoch time) or as `Date` objects.
- *
- * ```ts
- * Deno.utimeSync("myfile.txt", 1556495550, new Date());
- * ```
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- export function utimeSync(
- path: string | URL,
- atime: number | Date,
- mtime: number | Date,
- ): void;
- /**
- * Changes the access (`atime`) and modification (`mtime`) times of a file
- * system object referenced by `path`. Given times are either in seconds
- * (UNIX epoch time) or as `Date` objects.
- *
- * ```ts
- * await Deno.utime("myfile.txt", 1556495550, new Date());
- * ```
- *
- * Requires `allow-write` permission.
- *
- * @tags allow-write
- * @category File System
- */
- export function utime(
- path: string | URL,
- atime: number | Date,
- mtime: number | Date,
- ): Promise<void>;
- /** The event yielded from an {@linkcode HttpConn} which represents an HTTP
- * request from a remote client.
- *
- * @category HTTP Server
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- export interface RequestEvent {
- /** The request from the client in the form of the web platform
- * {@linkcode Request}. */
- readonly request: Request;
- /** The method to be used to respond to the event. The response needs to
- * either be an instance of {@linkcode Response} or a promise that resolves
- * with an instance of `Response`.
- *
- * When the response is successfully processed then the promise returned
- * will be resolved. If there are any issues with sending the response,
- * the promise will be rejected. */
- respondWith(r: Response | PromiseLike<Response>): Promise<void>;
- }
- /**
- * The async iterable that is returned from {@linkcode serveHttp} which
- * yields up {@linkcode RequestEvent} events, representing individual
- * requests on the HTTP server connection.
- *
- * @category HTTP Server
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- export interface HttpConn extends AsyncIterable<RequestEvent>, Disposable {
- /** The resource ID associated with this connection. Generally users do not
- * need to be aware of this identifier. */
- readonly rid: number;
- /** An alternative to the async iterable interface which provides promises
- * which resolve with either a {@linkcode RequestEvent} when there is
- * another request or `null` when the client has closed the connection. */
- nextRequest(): Promise<RequestEvent | null>;
- /** Initiate a server side closure of the connection, indicating to the
- * client that you refuse to accept any more requests on this connection.
- *
- * Typically the client closes the connection, which will result in the
- * async iterable terminating or the `nextRequest()` method returning
- * `null`. */
- close(): void;
- }
- /**
- * Provides an interface to handle HTTP request and responses over TCP or TLS
- * connections. The method returns an {@linkcode HttpConn} which yields up
- * {@linkcode RequestEvent} events, which utilize the web platform standard
- * {@linkcode Request} and {@linkcode Response} objects to handle the request.
- *
- * ```ts
- * const conn = Deno.listen({ port: 80 });
- * const httpConn = Deno.serveHttp(await conn.accept());
- * const e = await httpConn.nextRequest();
- * if (e) {
- * e.respondWith(new Response("Hello World"));
- * }
- * ```
- *
- * Alternatively, you can also use the async iterator approach:
- *
- * ```ts
- * async function handleHttp(conn: Deno.Conn) {
- * for await (const e of Deno.serveHttp(conn)) {
- * e.respondWith(new Response("Hello World"));
- * }
- * }
- *
- * for await (const conn of Deno.listen({ port: 80 })) {
- * handleHttp(conn);
- * }
- * ```
- *
- * If `httpConn.nextRequest()` encounters an error or returns `null` then the
- * underlying {@linkcode HttpConn} resource is closed automatically.
- *
- * Also see the experimental Flash HTTP server {@linkcode Deno.serve} which
- * provides a ground up rewrite of handling of HTTP requests and responses
- * within the Deno CLI.
- *
- * Note that this function *consumes* the given connection passed to it, thus
- * the original connection will be unusable after calling this. Additionally,
- * you need to ensure that the connection is not being used elsewhere when
- * calling this function in order for the connection to be consumed properly.
- *
- * For instance, if there is a `Promise` that is waiting for read operation on
- * the connection to complete, it is considered that the connection is being
- * used elsewhere. In such a case, this function will fail.
- *
- * @category HTTP Server
- * @deprecated This will be soft-removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- export function serveHttp(conn: Conn): HttpConn;
- /** The object that is returned from a {@linkcode Deno.upgradeWebSocket}
- * request.
- *
- * @category Web Sockets */
- export interface WebSocketUpgrade {
- /** The response object that represents the HTTP response to the client,
- * which should be used to the {@linkcode RequestEvent} `.respondWith()` for
- * the upgrade to be successful. */
- response: Response;
- /** The {@linkcode WebSocket} interface to communicate to the client via a
- * web socket. */
- socket: WebSocket;
- }
- /** Options which can be set when performing a
- * {@linkcode Deno.upgradeWebSocket} upgrade of a {@linkcode Request}
- *
- * @category Web Sockets */
- export interface UpgradeWebSocketOptions {
- /** Sets the `.protocol` property on the client side web socket to the
- * value provided here, which should be one of the strings specified in the
- * `protocols` parameter when requesting the web socket. This is intended
- * for clients and servers to specify sub-protocols to use to communicate to
- * each other. */
- protocol?: string;
- /** If the client does not respond to this frame with a
- * `pong` within the timeout specified, the connection is deemed
- * unhealthy and is closed. The `close` and `error` event will be emitted.
- *
- * The unit is seconds, with a default of 30.
- * Set to `0` to disable timeouts. */
- idleTimeout?: number;
- }
- /**
- * Upgrade an incoming HTTP request to a WebSocket.
- *
- * Given a {@linkcode Request}, returns a pair of {@linkcode WebSocket} and
- * {@linkcode Response} instances. The original request must be responded to
- * with the returned response for the websocket upgrade to be successful.
- *
- * ```ts
- * const conn = Deno.listen({ port: 80 });
- * const httpConn = Deno.serveHttp(await conn.accept());
- * const e = await httpConn.nextRequest();
- * if (e) {
- * const { socket, response } = Deno.upgradeWebSocket(e.request);
- * socket.onopen = () => {
- * socket.send("Hello World!");
- * };
- * socket.onmessage = (e) => {
- * console.log(e.data);
- * socket.close();
- * };
- * socket.onclose = () => console.log("WebSocket has been closed.");
- * socket.onerror = (e) => console.error("WebSocket error:", e);
- * e.respondWith(response);
- * }
- * ```
- *
- * If the request body is disturbed (read from) before the upgrade is
- * completed, upgrading fails.
- *
- * This operation does not yet consume the request or open the websocket. This
- * only happens once the returned response has been passed to `respondWith()`.
- *
- * @category Web Sockets
- */
- export function upgradeWebSocket(
- request: Request,
- options?: UpgradeWebSocketOptions,
- ): WebSocketUpgrade;
- /** Send a signal to process under given `pid`. The value and meaning of the
- * `signal` to the process is operating system and process dependant.
- * {@linkcode Signal} provides the most common signals. Default signal
- * is `"SIGTERM"`.
- *
- * The term `kill` is adopted from the UNIX-like command line command `kill`
- * which also signals processes.
- *
- * If `pid` is negative, the signal will be sent to the process group
- * identified by `pid`. An error will be thrown if a negative `pid` is used on
- * Windows.
- *
- * ```ts
- * const p = Deno.run({
- * cmd: ["sleep", "10000"]
- * });
- *
- * Deno.kill(p.pid, "SIGINT");
- * ```
- *
- * Requires `allow-run` permission.
- *
- * @tags allow-run
- * @category Sub Process
- */
- export function kill(pid: number, signo?: Signal): void;
- /** The type of the resource record to resolve via DNS using
- * {@linkcode Deno.resolveDns}.
- *
- * Only the listed types are supported currently.
- *
- * @category Network
- */
- export type RecordType =
- | "A"
- | "AAAA"
- | "ANAME"
- | "CAA"
- | "CNAME"
- | "MX"
- | "NAPTR"
- | "NS"
- | "PTR"
- | "SOA"
- | "SRV"
- | "TXT";
- /**
- * Options which can be set when using {@linkcode Deno.resolveDns}.
- *
- * @category Network */
- export interface ResolveDnsOptions {
- /** The name server to be used for lookups.
- *
- * If not specified, defaults to the system configuration. For example
- * `/etc/resolv.conf` on Unix-like systems. */
- nameServer?: {
- /** The IP address of the name server. */
- ipAddr: string;
- /** The port number the query will be sent to.
- *
- * @default {53} */
- port?: number;
- };
- /**
- * An abort signal to allow cancellation of the DNS resolution operation.
- * If the signal becomes aborted the resolveDns operation will be stopped
- * and the promise returned will be rejected with an AbortError.
- */
- signal?: AbortSignal;
- }
- /** If {@linkcode Deno.resolveDns} is called with `"CAA"` record type
- * specified, it will resolve with an array of objects with this interface.
- *
- * @category Network
- */
- export interface CAARecord {
- /** If `true`, indicates that the corresponding property tag **must** be
- * understood if the semantics of the CAA record are to be correctly
- * interpreted by an issuer.
- *
- * Issuers **must not** issue certificates for a domain if the relevant CAA
- * Resource Record set contains unknown property tags that have `critical`
- * set. */
- critical: boolean;
- /** An string that represents the identifier of the property represented by
- * the record. */
- tag: string;
- /** The value associated with the tag. */
- value: string;
- }
- /** If {@linkcode Deno.resolveDns} is called with `"MX"` record type
- * specified, it will return an array of objects with this interface.
- *
- * @category Network */
- export interface MXRecord {
- /** A priority value, which is a relative value compared to the other
- * preferences of MX records for the domain. */
- preference: number;
- /** The server that mail should be delivered to. */
- exchange: string;
- }
- /** If {@linkcode Deno.resolveDns} is called with `"NAPTR"` record type
- * specified, it will return an array of objects with this interface.
- *
- * @category Network */
- export interface NAPTRRecord {
- order: number;
- preference: number;
- flags: string;
- services: string;
- regexp: string;
- replacement: string;
- }
- /** If {@linkcode Deno.resolveDns} is called with `"SOA"` record type
- * specified, it will return an array of objects with this interface.
- *
- * @category Network */
- export interface SOARecord {
- mname: string;
- rname: string;
- serial: number;
- refresh: number;
- retry: number;
- expire: number;
- minimum: number;
- }
- /** If {@linkcode Deno.resolveDns} is called with `"SRV"` record type
- * specified, it will return an array of objects with this interface.
- *
- * @category Network
- */
- export interface SRVRecord {
- priority: number;
- weight: number;
- port: number;
- target: string;
- }
- /**
- * Performs DNS resolution against the given query, returning resolved
- * records.
- *
- * Fails in the cases such as:
- *
- * - the query is in invalid format.
- * - the options have an invalid parameter. For example `nameServer.port` is
- * beyond the range of 16-bit unsigned integer.
- * - the request timed out.
- *
- * ```ts
- * const a = await Deno.resolveDns("example.com", "A");
- *
- * const aaaa = await Deno.resolveDns("example.com", "AAAA", {
- * nameServer: { ipAddr: "8.8.8.8", port: 53 },
- * });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function resolveDns(
- query: string,
- recordType: "A" | "AAAA" | "ANAME" | "CNAME" | "NS" | "PTR",
- options?: ResolveDnsOptions,
- ): Promise<string[]>;
- /**
- * Performs DNS resolution against the given query, returning resolved
- * records.
- *
- * Fails in the cases such as:
- *
- * - the query is in invalid format.
- * - the options have an invalid parameter. For example `nameServer.port` is
- * beyond the range of 16-bit unsigned integer.
- * - the request timed out.
- *
- * ```ts
- * const a = await Deno.resolveDns("example.com", "A");
- *
- * const aaaa = await Deno.resolveDns("example.com", "AAAA", {
- * nameServer: { ipAddr: "8.8.8.8", port: 53 },
- * });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function resolveDns(
- query: string,
- recordType: "CAA",
- options?: ResolveDnsOptions,
- ): Promise<CAARecord[]>;
- /**
- * Performs DNS resolution against the given query, returning resolved
- * records.
- *
- * Fails in the cases such as:
- *
- * - the query is in invalid format.
- * - the options have an invalid parameter. For example `nameServer.port` is
- * beyond the range of 16-bit unsigned integer.
- * - the request timed out.
- *
- * ```ts
- * const a = await Deno.resolveDns("example.com", "A");
- *
- * const aaaa = await Deno.resolveDns("example.com", "AAAA", {
- * nameServer: { ipAddr: "8.8.8.8", port: 53 },
- * });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function resolveDns(
- query: string,
- recordType: "MX",
- options?: ResolveDnsOptions,
- ): Promise<MXRecord[]>;
- /**
- * Performs DNS resolution against the given query, returning resolved
- * records.
- *
- * Fails in the cases such as:
- *
- * - the query is in invalid format.
- * - the options have an invalid parameter. For example `nameServer.port` is
- * beyond the range of 16-bit unsigned integer.
- * - the request timed out.
- *
- * ```ts
- * const a = await Deno.resolveDns("example.com", "A");
- *
- * const aaaa = await Deno.resolveDns("example.com", "AAAA", {
- * nameServer: { ipAddr: "8.8.8.8", port: 53 },
- * });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function resolveDns(
- query: string,
- recordType: "NAPTR",
- options?: ResolveDnsOptions,
- ): Promise<NAPTRRecord[]>;
- /**
- * Performs DNS resolution against the given query, returning resolved
- * records.
- *
- * Fails in the cases such as:
- *
- * - the query is in invalid format.
- * - the options have an invalid parameter. For example `nameServer.port` is
- * beyond the range of 16-bit unsigned integer.
- * - the request timed out.
- *
- * ```ts
- * const a = await Deno.resolveDns("example.com", "A");
- *
- * const aaaa = await Deno.resolveDns("example.com", "AAAA", {
- * nameServer: { ipAddr: "8.8.8.8", port: 53 },
- * });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function resolveDns(
- query: string,
- recordType: "SOA",
- options?: ResolveDnsOptions,
- ): Promise<SOARecord[]>;
- /**
- * Performs DNS resolution against the given query, returning resolved
- * records.
- *
- * Fails in the cases such as:
- *
- * - the query is in invalid format.
- * - the options have an invalid parameter. For example `nameServer.port` is
- * beyond the range of 16-bit unsigned integer.
- * - the request timed out.
- *
- * ```ts
- * const a = await Deno.resolveDns("example.com", "A");
- *
- * const aaaa = await Deno.resolveDns("example.com", "AAAA", {
- * nameServer: { ipAddr: "8.8.8.8", port: 53 },
- * });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function resolveDns(
- query: string,
- recordType: "SRV",
- options?: ResolveDnsOptions,
- ): Promise<SRVRecord[]>;
- /**
- * Performs DNS resolution against the given query, returning resolved
- * records.
- *
- * Fails in the cases such as:
- *
- * - the query is in invalid format.
- * - the options have an invalid parameter. For example `nameServer.port` is
- * beyond the range of 16-bit unsigned integer.
- * - the request timed out.
- *
- * ```ts
- * const a = await Deno.resolveDns("example.com", "A");
- *
- * const aaaa = await Deno.resolveDns("example.com", "AAAA", {
- * nameServer: { ipAddr: "8.8.8.8", port: 53 },
- * });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function resolveDns(
- query: string,
- recordType: "TXT",
- options?: ResolveDnsOptions,
- ): Promise<string[][]>;
- /**
- * Performs DNS resolution against the given query, returning resolved
- * records.
- *
- * Fails in the cases such as:
- *
- * - the query is in invalid format.
- * - the options have an invalid parameter. For example `nameServer.port` is
- * beyond the range of 16-bit unsigned integer.
- * - the request timed out.
- *
- * ```ts
- * const a = await Deno.resolveDns("example.com", "A");
- *
- * const aaaa = await Deno.resolveDns("example.com", "AAAA", {
- * nameServer: { ipAddr: "8.8.8.8", port: 53 },
- * });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function resolveDns(
- query: string,
- recordType: RecordType,
- options?: ResolveDnsOptions,
- ): Promise<
- | string[]
- | CAARecord[]
- | MXRecord[]
- | NAPTRRecord[]
- | SOARecord[]
- | SRVRecord[]
- | string[][]
- >;
- /**
- * Make the timer of the given `id` block the event loop from finishing.
- *
- * @category Runtime
- */
- export function refTimer(id: number): void;
- /**
- * Make the timer of the given `id` not block the event loop from finishing.
- *
- * @category Runtime
- */
- export function unrefTimer(id: number): void;
- /**
- * Returns the user id of the process on POSIX platforms. Returns null on Windows.
- *
- * ```ts
- * console.log(Deno.uid());
- * ```
- *
- * Requires `allow-sys` permission.
- *
- * @tags allow-sys
- * @category Runtime
- */
- export function uid(): number | null;
- /**
- * Returns the group id of the process on POSIX platforms. Returns null on windows.
- *
- * ```ts
- * console.log(Deno.gid());
- * ```
- *
- * Requires `allow-sys` permission.
- *
- * @tags allow-sys
- * @category Runtime
- */
- export function gid(): number | null;
- /** Additional information for an HTTP request and its connection.
- *
- * @category HTTP Server
- */
- export interface ServeHandlerInfo {
- /** The remote address of the connection. */
- remoteAddr: Deno.NetAddr;
- }
- /** A handler for HTTP requests. Consumes a request and returns a response.
- *
- * If a handler throws, the server calling the handler will assume the impact
- * of the error is isolated to the individual request. It will catch the error
- * and if necessary will close the underlying connection.
- *
- * @category HTTP Server
- */
- export type ServeHandler = (
- request: Request,
- info: ServeHandlerInfo,
- ) => Response | Promise<Response>;
- /** Options which can be set when calling {@linkcode Deno.serve}.
- *
- * @category HTTP Server
- */
- export interface ServeOptions {
- /** The port to listen on.
- *
- * Set to `0` to listen on any available port.
- *
- * @default {8000} */
- port?: number;
- /** A literal IP address or host name that can be resolved to an IP address.
- *
- * __Note about `0.0.0.0`__ While listening `0.0.0.0` works on all platforms,
- * the browsers on Windows don't work with the address `0.0.0.0`.
- * You should show the message like `server running on localhost:8080` instead of
- * `server running on 0.0.0.0:8080` if your program supports Windows.
- *
- * @default {"0.0.0.0"} */
- hostname?: string;
- /** An {@linkcode AbortSignal} to close the server and all connections. */
- signal?: AbortSignal;
- /** Sets `SO_REUSEPORT` on POSIX systems. */
- reusePort?: boolean;
- /** The handler to invoke when route handlers throw an error. */
- onError?: (error: unknown) => Response | Promise<Response>;
- /** The callback which is called when the server starts listening. */
- onListen?: (localAddr: Deno.NetAddr) => void;
- }
- /** Additional options which are used when opening a TLS (HTTPS) server.
- *
- * @category HTTP Server
- */
- export interface ServeTlsOptions extends ServeOptions {
- /**
- * Server private key in PEM format. Use {@linkcode TlsCertifiedKeyOptions} instead.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- cert?: string;
- /**
- * Cert chain in PEM format. Use {@linkcode TlsCertifiedKeyOptions} instead.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- key?: string;
- }
- /**
- * @category HTTP Server
- */
- export interface ServeInit {
- /** The handler to invoke to process each incoming request. */
- handler: ServeHandler;
- }
- /**
- * @category HTTP Server
- */
- export interface ServeTlsInit {
- /** The handler to invoke to process each incoming request. */
- handler: ServeHandler;
- }
- /** @category HTTP Server */
- export interface ServeUnixOptions {
- /** The unix domain socket path to listen on. */
- path: string;
- /** An {@linkcode AbortSignal} to close the server and all connections. */
- signal?: AbortSignal;
- /** The handler to invoke when route handlers throw an error. */
- onError?: (error: unknown) => Response | Promise<Response>;
- /** The callback which is called when the server starts listening. */
- onListen?: (localAddr: Deno.UnixAddr) => void;
- }
- /** Information for a unix domain socket HTTP request.
- *
- * @category HTTP Server
- */
- export interface ServeUnixHandlerInfo {
- /** The remote address of the connection. */
- remoteAddr: Deno.UnixAddr;
- }
- /** A handler for unix domain socket HTTP requests. Consumes a request and returns a response.
- *
- * If a handler throws, the server calling the handler will assume the impact
- * of the error is isolated to the individual request. It will catch the error
- * and if necessary will close the underlying connection.
- *
- * @category HTTP Server
- */
- export type ServeUnixHandler = (
- request: Request,
- info: ServeUnixHandlerInfo,
- ) => Response | Promise<Response>;
- /**
- * @category HTTP Server
- */
- export interface ServeUnixInit {
- /** The handler to invoke to process each incoming request. */
- handler: ServeUnixHandler;
- }
- /** An instance of the server created using `Deno.serve()` API.
- *
- * @category HTTP Server
- */
- export interface HttpServer<A extends Deno.Addr = Deno.Addr>
- extends AsyncDisposable {
- /** A promise that resolves once server finishes - eg. when aborted using
- * the signal passed to {@linkcode ServeOptions.signal}.
- */
- finished: Promise<void>;
- /** The local address this server is listening on. */
- addr: A;
- /**
- * Make the server block the event loop from finishing.
- *
- * Note: the server blocks the event loop from finishing by default.
- * This method is only meaningful after `.unref()` is called.
- */
- ref(): void;
- /** Make the server not block the event loop from finishing. */
- unref(): void;
- /** Gracefully close the server. No more new connections will be accepted,
- * while pending requests will be allowed to finish.
- */
- shutdown(): Promise<void>;
- }
- /**
- * @category HTTP Server
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- export type Server = HttpServer;
- /** Serves HTTP requests with the given handler.
- *
- * The below example serves with the port `8000` on hostname `"127.0.0.1"`.
- *
- * ```ts
- * Deno.serve((_req) => new Response("Hello, world"));
- * ```
- *
- * @category HTTP Server
- */
- export function serve(handler: ServeHandler): HttpServer<Deno.NetAddr>;
- /** Serves HTTP requests with the given option bag and handler.
- *
- * You can specify the socket path with `path` option.
- *
- * ```ts
- * Deno.serve(
- * { path: "path/to/socket" },
- * (_req) => new Response("Hello, world")
- * );
- * ```
- *
- * You can stop the server with an {@linkcode AbortSignal}. The abort signal
- * needs to be passed as the `signal` option in the options bag. The server
- * aborts when the abort signal is aborted. To wait for the server to close,
- * await the promise returned from the `Deno.serve` API.
- *
- * ```ts
- * const ac = new AbortController();
- *
- * const server = Deno.serve(
- * { signal: ac.signal, path: "path/to/socket" },
- * (_req) => new Response("Hello, world")
- * );
- * server.finished.then(() => console.log("Server closed"));
- *
- * console.log("Closing server...");
- * ac.abort();
- * ```
- *
- * By default `Deno.serve` prints the message
- * `Listening on path/to/socket` on listening. If you like to
- * change this behavior, you can specify a custom `onListen` callback.
- *
- * ```ts
- * Deno.serve({
- * onListen({ path }) {
- * console.log(`Server started at ${path}`);
- * // ... more info specific to your server ..
- * },
- * path: "path/to/socket",
- * }, (_req) => new Response("Hello, world"));
- * ```
- *
- * @category HTTP Server
- */
- export function serve(
- options: ServeUnixOptions,
- handler: ServeUnixHandler,
- ): HttpServer<Deno.UnixAddr>;
- /** Serves HTTP requests with the given option bag and handler.
- *
- * You can specify an object with a port and hostname option, which is the
- * address to listen on. The default is port `8000` on hostname `"127.0.0.1"`.
- *
- * You can change the address to listen on using the `hostname` and `port`
- * options. The below example serves on port `3000` and hostname `"0.0.0.0"`.
- *
- * ```ts
- * Deno.serve(
- * { port: 3000, hostname: "0.0.0.0" },
- * (_req) => new Response("Hello, world")
- * );
- * ```
- *
- * You can stop the server with an {@linkcode AbortSignal}. The abort signal
- * needs to be passed as the `signal` option in the options bag. The server
- * aborts when the abort signal is aborted. To wait for the server to close,
- * await the promise returned from the `Deno.serve` API.
- *
- * ```ts
- * const ac = new AbortController();
- *
- * const server = Deno.serve(
- * { signal: ac.signal },
- * (_req) => new Response("Hello, world")
- * );
- * server.finished.then(() => console.log("Server closed"));
- *
- * console.log("Closing server...");
- * ac.abort();
- * ```
- *
- * By default `Deno.serve` prints the message
- * `Listening on http://<hostname>:<port>/` on listening. If you like to
- * change this behavior, you can specify a custom `onListen` callback.
- *
- * ```ts
- * Deno.serve({
- * onListen({ port, hostname }) {
- * console.log(`Server started at http://${hostname}:${port}`);
- * // ... more info specific to your server ..
- * },
- * }, (_req) => new Response("Hello, world"));
- * ```
- *
- * To enable TLS you must specify the `key` and `cert` options.
- *
- * ```ts
- * const cert = "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n";
- * const key = "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n";
- * Deno.serve({ cert, key }, (_req) => new Response("Hello, world"));
- * ```
- *
- * @category HTTP Server
- */
- export function serve(
- options: ServeOptions,
- handler: ServeHandler,
- ): HttpServer<Deno.NetAddr>;
- /** Serves HTTP requests with the given option bag and handler.
- *
- * You can specify an object with a port and hostname option, which is the
- * address to listen on. The default is port `8000` on hostname `"127.0.0.1"`.
- *
- * You can change the address to listen on using the `hostname` and `port`
- * options. The below example serves on port `3000` and hostname `"0.0.0.0"`.
- *
- * ```ts
- * Deno.serve(
- * { port: 3000, hostname: "0.0.0.0" },
- * (_req) => new Response("Hello, world")
- * );
- * ```
- *
- * You can stop the server with an {@linkcode AbortSignal}. The abort signal
- * needs to be passed as the `signal` option in the options bag. The server
- * aborts when the abort signal is aborted. To wait for the server to close,
- * await the promise returned from the `Deno.serve` API.
- *
- * ```ts
- * const ac = new AbortController();
- *
- * const server = Deno.serve(
- * { signal: ac.signal },
- * (_req) => new Response("Hello, world")
- * );
- * server.finished.then(() => console.log("Server closed"));
- *
- * console.log("Closing server...");
- * ac.abort();
- * ```
- *
- * By default `Deno.serve` prints the message
- * `Listening on http://<hostname>:<port>/` on listening. If you like to
- * change this behavior, you can specify a custom `onListen` callback.
- *
- * ```ts
- * Deno.serve({
- * onListen({ port, hostname }) {
- * console.log(`Server started at http://${hostname}:${port}`);
- * // ... more info specific to your server ..
- * },
- * }, (_req) => new Response("Hello, world"));
- * ```
- *
- * To enable TLS you must specify the `key` and `cert` options.
- *
- * ```ts
- * const cert = "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n";
- * const key = "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n";
- * Deno.serve({ cert, key }, (_req) => new Response("Hello, world"));
- * ```
- *
- * @category HTTP Server
- */
- export function serve(
- options:
- | ServeTlsOptions
- | (ServeTlsOptions & TlsCertifiedKeyOptions),
- handler: ServeHandler,
- ): HttpServer<Deno.NetAddr>;
- /** Serves HTTP requests with the given option bag.
- *
- * You can specify an object with the path option, which is the
- * unix domain socket to listen on.
- *
- * ```ts
- * const ac = new AbortController();
- *
- * const server = Deno.serve({
- * path: "path/to/socket",
- * handler: (_req) => new Response("Hello, world"),
- * signal: ac.signal,
- * onListen({ path }) {
- * console.log(`Server started at ${path}`);
- * },
- * });
- * server.finished.then(() => console.log("Server closed"));
- *
- * console.log("Closing server...");
- * ac.abort();
- * ```
- *
- * @category HTTP Server
- */
- export function serve(
- options: ServeUnixInit & ServeUnixOptions,
- ): HttpServer<Deno.UnixAddr>;
- /** Serves HTTP requests with the given option bag.
- *
- * You can specify an object with a port and hostname option, which is the
- * address to listen on. The default is port `8000` on hostname `"127.0.0.1"`.
- *
- * ```ts
- * const ac = new AbortController();
- *
- * const server = Deno.serve({
- * port: 3000,
- * hostname: "0.0.0.0",
- * handler: (_req) => new Response("Hello, world"),
- * signal: ac.signal,
- * onListen({ port, hostname }) {
- * console.log(`Server started at http://${hostname}:${port}`);
- * },
- * });
- * server.finished.then(() => console.log("Server closed"));
- *
- * console.log("Closing server...");
- * ac.abort();
- * ```
- *
- * @category HTTP Server
- */
- export function serve(
- options:
- & ServeInit
- & ServeOptions,
- ): HttpServer<Deno.NetAddr>;
- /** Serves HTTP requests with the given option bag.
- *
- * You can specify an object with a port and hostname option, which is the
- * address to listen on. The default is port `8000` on hostname `"127.0.0.1"`.
- *
- * ```ts
- * const ac = new AbortController();
- *
- * const server = Deno.serve({
- * port: 3000,
- * hostname: "0.0.0.0",
- * handler: (_req) => new Response("Hello, world"),
- * signal: ac.signal,
- * onListen({ port, hostname }) {
- * console.log(`Server started at http://${hostname}:${port}`);
- * },
- * });
- * server.finished.then(() => console.log("Server closed"));
- *
- * console.log("Closing server...");
- * ac.abort();
- * ```
- *
- * @category HTTP Server
- */
- export function serve(
- options:
- & ServeTlsInit
- & (
- | ServeTlsOptions
- | (ServeTlsOptions & TlsCertifiedKeyOptions)
- ),
- ): HttpServer<Deno.NetAddr>;
- }
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- // deno-lint-ignore-file no-explicit-any
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /** @category I/O */
- declare interface Console {
- assert(condition?: boolean, ...data: any[]): void;
- clear(): void;
- count(label?: string): void;
- countReset(label?: string): void;
- debug(...data: any[]): void;
- dir(item?: any, options?: any): void;
- dirxml(...data: any[]): void;
- error(...data: any[]): void;
- group(...data: any[]): void;
- groupCollapsed(...data: any[]): void;
- groupEnd(): void;
- info(...data: any[]): void;
- log(...data: any[]): void;
- table(tabularData?: any, properties?: string[]): void;
- time(label?: string): void;
- timeEnd(label?: string): void;
- timeLog(label?: string, ...data: any[]): void;
- trace(...data: any[]): void;
- warn(...data: any[]): void;
- /** This method is a noop, unless used in inspector */
- timeStamp(label?: string): void;
- /** This method is a noop, unless used in inspector */
- profile(label?: string): void;
- /** This method is a noop, unless used in inspector */
- profileEnd(label?: string): void;
- }
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- // deno-lint-ignore-file no-explicit-any no-var
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /** @category URL */
- declare interface URLSearchParams {
- /** Appends a specified key/value pair as a new search parameter.
- *
- * ```ts
- * let searchParams = new URLSearchParams();
- * searchParams.append('name', 'first');
- * searchParams.append('name', 'second');
- * ```
- */
- append(name: string, value: string): void;
- /** Deletes search parameters that match a name, and optional value,
- * from the list of all search parameters.
- *
- * ```ts
- * let searchParams = new URLSearchParams([['name', 'value']]);
- * searchParams.delete('name');
- * searchParams.delete('name', 'value');
- * ```
- */
- delete(name: string, value?: string): void;
- /** Returns all the values associated with a given search parameter
- * as an array.
- *
- * ```ts
- * searchParams.getAll('name');
- * ```
- */
- getAll(name: string): string[];
- /** Returns the first value associated to the given search parameter.
- *
- * ```ts
- * searchParams.get('name');
- * ```
- */
- get(name: string): string | null;
- /** Returns a boolean value indicating if a given parameter,
- * or parameter and value pair, exists.
- *
- * ```ts
- * searchParams.has('name');
- * searchParams.has('name', 'value');
- * ```
- */
- has(name: string, value?: string): boolean;
- /** Sets the value associated with a given search parameter to the
- * given value. If there were several matching values, this method
- * deletes the others. If the search parameter doesn't exist, this
- * method creates it.
- *
- * ```ts
- * searchParams.set('name', 'value');
- * ```
- */
- set(name: string, value: string): void;
- /** Sort all key/value pairs contained in this object in place and
- * return undefined. The sort order is according to Unicode code
- * points of the keys.
- *
- * ```ts
- * searchParams.sort();
- * ```
- */
- sort(): void;
- /** Calls a function for each element contained in this object in
- * place and return undefined. Optionally accepts an object to use
- * as this when executing callback as second argument.
- *
- * ```ts
- * const params = new URLSearchParams([["a", "b"], ["c", "d"]]);
- * params.forEach((value, key, parent) => {
- * console.log(value, key, parent);
- * });
- * ```
- */
- forEach(
- callbackfn: (value: string, key: string, parent: this) => void,
- thisArg?: any,
- ): void;
- /** Returns an iterator allowing to go through all keys contained
- * in this object.
- *
- * ```ts
- * const params = new URLSearchParams([["a", "b"], ["c", "d"]]);
- * for (const key of params.keys()) {
- * console.log(key);
- * }
- * ```
- */
- keys(): IterableIterator<string>;
- /** Returns an iterator allowing to go through all values contained
- * in this object.
- *
- * ```ts
- * const params = new URLSearchParams([["a", "b"], ["c", "d"]]);
- * for (const value of params.values()) {
- * console.log(value);
- * }
- * ```
- */
- values(): IterableIterator<string>;
- /** Returns an iterator allowing to go through all key/value
- * pairs contained in this object.
- *
- * ```ts
- * const params = new URLSearchParams([["a", "b"], ["c", "d"]]);
- * for (const [key, value] of params.entries()) {
- * console.log(key, value);
- * }
- * ```
- */
- entries(): IterableIterator<[string, string]>;
- /** Returns an iterator allowing to go through all key/value
- * pairs contained in this object.
- *
- * ```ts
- * const params = new URLSearchParams([["a", "b"], ["c", "d"]]);
- * for (const [key, value] of params) {
- * console.log(key, value);
- * }
- * ```
- */
- [Symbol.iterator](): IterableIterator<[string, string]>;
- /** Returns a query string suitable for use in a URL.
- *
- * ```ts
- * searchParams.toString();
- * ```
- */
- toString(): string;
- /** Contains the number of search parameters
- *
- * ```ts
- * searchParams.size
- * ```
- */
- size: number;
- }
- /** @category URL */
- declare var URLSearchParams: {
- readonly prototype: URLSearchParams;
- new (
- init?: Iterable<string[]> | Record<string, string> | string,
- ): URLSearchParams;
- };
- /** The URL interface represents an object providing static methods used for
- * creating object URLs.
- *
- * @category URL
- */
- declare interface URL {
- hash: string;
- host: string;
- hostname: string;
- href: string;
- toString(): string;
- readonly origin: string;
- password: string;
- pathname: string;
- port: string;
- protocol: string;
- search: string;
- readonly searchParams: URLSearchParams;
- username: string;
- toJSON(): string;
- }
- /** The URL interface represents an object providing static methods used for
- * creating object URLs.
- *
- * @category URL
- */
- declare var URL: {
- readonly prototype: URL;
- new (url: string | URL, base?: string | URL): URL;
- parse(url: string | URL, base?: string | URL): URL | null;
- canParse(url: string | URL, base?: string | URL): boolean;
- createObjectURL(blob: Blob): string;
- revokeObjectURL(url: string): void;
- };
- /** @category URL */
- declare interface URLPatternInit {
- protocol?: string;
- username?: string;
- password?: string;
- hostname?: string;
- port?: string;
- pathname?: string;
- search?: string;
- hash?: string;
- baseURL?: string;
- }
- /** @category URL */
- declare type URLPatternInput = string | URLPatternInit;
- /** @category URL */
- declare interface URLPatternComponentResult {
- input: string;
- groups: Record<string, string | undefined>;
- }
- /** `URLPatternResult` is the object returned from `URLPattern.exec`.
- *
- * @category URL
- */
- declare interface URLPatternResult {
- /** The inputs provided when matching. */
- inputs: [URLPatternInit] | [URLPatternInit, string];
- /** The matched result for the `protocol` matcher. */
- protocol: URLPatternComponentResult;
- /** The matched result for the `username` matcher. */
- username: URLPatternComponentResult;
- /** The matched result for the `password` matcher. */
- password: URLPatternComponentResult;
- /** The matched result for the `hostname` matcher. */
- hostname: URLPatternComponentResult;
- /** The matched result for the `port` matcher. */
- port: URLPatternComponentResult;
- /** The matched result for the `pathname` matcher. */
- pathname: URLPatternComponentResult;
- /** The matched result for the `search` matcher. */
- search: URLPatternComponentResult;
- /** The matched result for the `hash` matcher. */
- hash: URLPatternComponentResult;
- }
- /**
- * The URLPattern API provides a web platform primitive for matching URLs based
- * on a convenient pattern syntax.
- *
- * The syntax is based on path-to-regexp. Wildcards, named capture groups,
- * regular groups, and group modifiers are all supported.
- *
- * ```ts
- * // Specify the pattern as structured data.
- * const pattern = new URLPattern({ pathname: "/users/:user" });
- * const match = pattern.exec("https://blog.example.com/users/joe");
- * console.log(match.pathname.groups.user); // joe
- * ```
- *
- * ```ts
- * // Specify a fully qualified string pattern.
- * const pattern = new URLPattern("https://example.com/books/:id");
- * console.log(pattern.test("https://example.com/books/123")); // true
- * console.log(pattern.test("https://deno.land/books/123")); // false
- * ```
- *
- * ```ts
- * // Specify a relative string pattern with a base URL.
- * const pattern = new URLPattern("/article/:id", "https://blog.example.com");
- * console.log(pattern.test("https://blog.example.com/article")); // false
- * console.log(pattern.test("https://blog.example.com/article/123")); // true
- * ```
- *
- * @category URL
- */
- declare interface URLPattern {
- /**
- * Test if the given input matches the stored pattern.
- *
- * The input can either be provided as an absolute URL string with an optional base,
- * relative URL string with a required base, or as individual components
- * in the form of an `URLPatternInit` object.
- *
- * ```ts
- * const pattern = new URLPattern("https://example.com/books/:id");
- *
- * // Test an absolute url string.
- * console.log(pattern.test("https://example.com/books/123")); // true
- *
- * // Test a relative url with a base.
- * console.log(pattern.test("/books/123", "https://example.com")); // true
- *
- * // Test an object of url components.
- * console.log(pattern.test({ pathname: "/books/123" })); // true
- * ```
- */
- test(input: URLPatternInput, baseURL?: string): boolean;
- /**
- * Match the given input against the stored pattern.
- *
- * The input can either be provided as an absolute URL string with an optional base,
- * relative URL string with a required base, or as individual components
- * in the form of an `URLPatternInit` object.
- *
- * ```ts
- * const pattern = new URLPattern("https://example.com/books/:id");
- *
- * // Match an absolute url string.
- * let match = pattern.exec("https://example.com/books/123");
- * console.log(match.pathname.groups.id); // 123
- *
- * // Match a relative url with a base.
- * match = pattern.exec("/books/123", "https://example.com");
- * console.log(match.pathname.groups.id); // 123
- *
- * // Match an object of url components.
- * match = pattern.exec({ pathname: "/books/123" });
- * console.log(match.pathname.groups.id); // 123
- * ```
- */
- exec(input: URLPatternInput, baseURL?: string): URLPatternResult | null;
- /** The pattern string for the `protocol`. */
- readonly protocol: string;
- /** The pattern string for the `username`. */
- readonly username: string;
- /** The pattern string for the `password`. */
- readonly password: string;
- /** The pattern string for the `hostname`. */
- readonly hostname: string;
- /** The pattern string for the `port`. */
- readonly port: string;
- /** The pattern string for the `pathname`. */
- readonly pathname: string;
- /** The pattern string for the `search`. */
- readonly search: string;
- /** The pattern string for the `hash`. */
- readonly hash: string;
- }
- /**
- * The URLPattern API provides a web platform primitive for matching URLs based
- * on a convenient pattern syntax.
- *
- * The syntax is based on path-to-regexp. Wildcards, named capture groups,
- * regular groups, and group modifiers are all supported.
- *
- * ```ts
- * // Specify the pattern as structured data.
- * const pattern = new URLPattern({ pathname: "/users/:user" });
- * const match = pattern.exec("https://blog.example.com/users/joe");
- * console.log(match.pathname.groups.user); // joe
- * ```
- *
- * ```ts
- * // Specify a fully qualified string pattern.
- * const pattern = new URLPattern("https://example.com/books/:id");
- * console.log(pattern.test("https://example.com/books/123")); // true
- * console.log(pattern.test("https://deno.land/books/123")); // false
- * ```
- *
- * ```ts
- * // Specify a relative string pattern with a base URL.
- * const pattern = new URLPattern("/article/:id", "https://blog.example.com");
- * console.log(pattern.test("https://blog.example.com/article")); // false
- * console.log(pattern.test("https://blog.example.com/article/123")); // true
- * ```
- *
- * @category URL
- */
- declare var URLPattern: {
- readonly prototype: URLPattern;
- new (input: URLPatternInput, baseURL?: string): URLPattern;
- };
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- // deno-lint-ignore-file no-explicit-any no-var
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /** @category Platform */
- declare interface DOMException extends Error {
- readonly name: string;
- readonly message: string;
- readonly code: number;
- readonly INDEX_SIZE_ERR: 1;
- readonly DOMSTRING_SIZE_ERR: 2;
- readonly HIERARCHY_REQUEST_ERR: 3;
- readonly WRONG_DOCUMENT_ERR: 4;
- readonly INVALID_CHARACTER_ERR: 5;
- readonly NO_DATA_ALLOWED_ERR: 6;
- readonly NO_MODIFICATION_ALLOWED_ERR: 7;
- readonly NOT_FOUND_ERR: 8;
- readonly NOT_SUPPORTED_ERR: 9;
- readonly INUSE_ATTRIBUTE_ERR: 10;
- readonly INVALID_STATE_ERR: 11;
- readonly SYNTAX_ERR: 12;
- readonly INVALID_MODIFICATION_ERR: 13;
- readonly NAMESPACE_ERR: 14;
- readonly INVALID_ACCESS_ERR: 15;
- readonly VALIDATION_ERR: 16;
- readonly TYPE_MISMATCH_ERR: 17;
- readonly SECURITY_ERR: 18;
- readonly NETWORK_ERR: 19;
- readonly ABORT_ERR: 20;
- readonly URL_MISMATCH_ERR: 21;
- readonly QUOTA_EXCEEDED_ERR: 22;
- readonly TIMEOUT_ERR: 23;
- readonly INVALID_NODE_TYPE_ERR: 24;
- readonly DATA_CLONE_ERR: 25;
- }
- /** @category Platform */
- declare var DOMException: {
- readonly prototype: DOMException;
- new (message?: string, name?: string): DOMException;
- readonly INDEX_SIZE_ERR: 1;
- readonly DOMSTRING_SIZE_ERR: 2;
- readonly HIERARCHY_REQUEST_ERR: 3;
- readonly WRONG_DOCUMENT_ERR: 4;
- readonly INVALID_CHARACTER_ERR: 5;
- readonly NO_DATA_ALLOWED_ERR: 6;
- readonly NO_MODIFICATION_ALLOWED_ERR: 7;
- readonly NOT_FOUND_ERR: 8;
- readonly NOT_SUPPORTED_ERR: 9;
- readonly INUSE_ATTRIBUTE_ERR: 10;
- readonly INVALID_STATE_ERR: 11;
- readonly SYNTAX_ERR: 12;
- readonly INVALID_MODIFICATION_ERR: 13;
- readonly NAMESPACE_ERR: 14;
- readonly INVALID_ACCESS_ERR: 15;
- readonly VALIDATION_ERR: 16;
- readonly TYPE_MISMATCH_ERR: 17;
- readonly SECURITY_ERR: 18;
- readonly NETWORK_ERR: 19;
- readonly ABORT_ERR: 20;
- readonly URL_MISMATCH_ERR: 21;
- readonly QUOTA_EXCEEDED_ERR: 22;
- readonly TIMEOUT_ERR: 23;
- readonly INVALID_NODE_TYPE_ERR: 24;
- readonly DATA_CLONE_ERR: 25;
- };
- /** @category Events */
- declare interface EventInit {
- bubbles?: boolean;
- cancelable?: boolean;
- composed?: boolean;
- }
- /** An event which takes place in the DOM.
- *
- * @category Events
- */
- declare interface Event {
- /** Returns true or false depending on how event was initialized. True if
- * event goes through its target's ancestors in reverse tree order, and
- * false otherwise. */
- readonly bubbles: boolean;
- cancelBubble: boolean;
- /** Returns true or false depending on how event was initialized. Its return
- * value does not always carry meaning, but true can indicate that part of the
- * operation during which event was dispatched, can be canceled by invoking
- * the preventDefault() method. */
- readonly cancelable: boolean;
- /** Returns true or false depending on how event was initialized. True if
- * event invokes listeners past a ShadowRoot node that is the root of its
- * target, and false otherwise. */
- readonly composed: boolean;
- /** Returns the object whose event listener's callback is currently being
- * invoked. */
- readonly currentTarget: EventTarget | null;
- /** Returns true if preventDefault() was invoked successfully to indicate
- * cancellation, and false otherwise. */
- readonly defaultPrevented: boolean;
- /** Returns the event's phase, which is one of NONE, CAPTURING_PHASE,
- * AT_TARGET, and BUBBLING_PHASE. */
- readonly eventPhase: number;
- /** Returns true if event was dispatched by the user agent, and false
- * otherwise. */
- readonly isTrusted: boolean;
- /** Returns the object to which event is dispatched (its target). */
- readonly target: EventTarget | null;
- /** Returns the event's timestamp as the number of milliseconds measured
- * relative to the time origin. */
- readonly timeStamp: number;
- /** Returns the type of event, e.g. "click", "hashchange", or "submit". */
- readonly type: string;
- /** Returns the invocation target objects of event's path (objects on which
- * listeners will be invoked), except for any nodes in shadow trees of which
- * the shadow root's mode is "closed" that are not reachable from event's
- * currentTarget. */
- composedPath(): EventTarget[];
- /** If invoked when the cancelable attribute value is true, and while
- * executing a listener for the event with passive set to false, signals to
- * the operation that caused event to be dispatched that it needs to be
- * canceled. */
- preventDefault(): void;
- /** Invoking this method prevents event from reaching any registered event
- * listeners after the current one finishes running and, when dispatched in a
- * tree, also prevents event from reaching any other objects. */
- stopImmediatePropagation(): void;
- /** When dispatched in a tree, invoking this method prevents event from
- * reaching any objects other than the current object. */
- stopPropagation(): void;
- readonly AT_TARGET: number;
- readonly BUBBLING_PHASE: number;
- readonly CAPTURING_PHASE: number;
- readonly NONE: number;
- }
- /** An event which takes place in the DOM.
- *
- * @category Events
- */
- declare var Event: {
- readonly prototype: Event;
- new (type: string, eventInitDict?: EventInit): Event;
- readonly AT_TARGET: number;
- readonly BUBBLING_PHASE: number;
- readonly CAPTURING_PHASE: number;
- readonly NONE: number;
- };
- /**
- * EventTarget is a DOM interface implemented by objects that can receive events
- * and may have listeners for them.
- *
- * @category Events
- */
- declare interface EventTarget {
- /** Appends an event listener for events whose type attribute value is type.
- * The callback argument sets the callback that will be invoked when the event
- * is dispatched.
- *
- * The options argument sets listener-specific options. For compatibility this
- * can be a boolean, in which case the method behaves exactly as if the value
- * was specified as options's capture.
- *
- * When set to true, options's capture prevents callback from being invoked
- * when the event's eventPhase attribute value is BUBBLING_PHASE. When false
- * (or not present), callback will not be invoked when event's eventPhase
- * attribute value is CAPTURING_PHASE. Either way, callback will be invoked if
- * event's eventPhase attribute value is AT_TARGET.
- *
- * When set to true, options's passive indicates that the callback will not
- * cancel the event by invoking preventDefault(). This is used to enable
- * performance optimizations described in § 2.8 Observing event listeners.
- *
- * When set to true, options's once indicates that the callback will only be
- * invoked once after which the event listener will be removed.
- *
- * The event listener is appended to target's event listener list and is not
- * appended if it has the same type, callback, and capture. */
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject | null,
- options?: boolean | AddEventListenerOptions,
- ): void;
- /** Dispatches a synthetic event to event target and returns true if either
- * event's cancelable attribute value is false or its preventDefault() method
- * was not invoked, and false otherwise. */
- dispatchEvent(event: Event): boolean;
- /** Removes the event listener in target's event listener list with the same
- * type, callback, and options. */
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- }
- /**
- * EventTarget is a DOM interface implemented by objects that can receive events
- * and may have listeners for them.
- *
- * @category Events
- */
- declare var EventTarget: {
- readonly prototype: EventTarget;
- new (): EventTarget;
- };
- /** @category Events */
- declare interface EventListener {
- (evt: Event): void | Promise<void>;
- }
- /** @category Events */
- declare interface EventListenerObject {
- handleEvent(evt: Event): void | Promise<void>;
- }
- /** @category Events */
- declare type EventListenerOrEventListenerObject =
- | EventListener
- | EventListenerObject;
- /** @category Events */
- declare interface AddEventListenerOptions extends EventListenerOptions {
- once?: boolean;
- passive?: boolean;
- signal?: AbortSignal;
- }
- /** @category Events */
- declare interface EventListenerOptions {
- capture?: boolean;
- }
- /** @category Events */
- declare interface ProgressEventInit extends EventInit {
- lengthComputable?: boolean;
- loaded?: number;
- total?: number;
- }
- /** Events measuring progress of an underlying process, like an HTTP request
- * (for an XMLHttpRequest, or the loading of the underlying resource of an
- * <img>, <audio>, <video>, <style> or <link>).
- *
- * @category Events
- */
- declare interface ProgressEvent<T extends EventTarget = EventTarget>
- extends Event {
- readonly lengthComputable: boolean;
- readonly loaded: number;
- readonly target: T | null;
- readonly total: number;
- }
- /** Events measuring progress of an underlying process, like an HTTP request
- * (for an XMLHttpRequest, or the loading of the underlying resource of an
- * <img>, <audio>, <video>, <style> or <link>).
- *
- * @category Events
- */
- declare var ProgressEvent: {
- readonly prototype: ProgressEvent;
- new (type: string, eventInitDict?: ProgressEventInit): ProgressEvent;
- };
- /** Decodes a string of data which has been encoded using base-64 encoding.
- *
- * ```
- * console.log(atob("aGVsbG8gd29ybGQ=")); // outputs 'hello world'
- * ```
- *
- * @category Encoding
- */
- declare function atob(s: string): string;
- /** Creates a base-64 ASCII encoded string from the input string.
- *
- * ```
- * console.log(btoa("hello world")); // outputs "aGVsbG8gd29ybGQ="
- * ```
- *
- * @category Encoding
- */
- declare function btoa(s: string): string;
- /** @category Encoding */
- declare interface TextDecoderOptions {
- fatal?: boolean;
- ignoreBOM?: boolean;
- }
- /** @category Encoding */
- declare interface TextDecodeOptions {
- stream?: boolean;
- }
- /** @category Encoding */
- declare interface TextDecoder {
- /** Returns encoding's name, lowercased. */
- readonly encoding: string;
- /** Returns `true` if error mode is "fatal", and `false` otherwise. */
- readonly fatal: boolean;
- /** Returns `true` if ignore BOM flag is set, and `false` otherwise. */
- readonly ignoreBOM: boolean;
- /** Returns the result of running encoding's decoder. */
- decode(input?: BufferSource, options?: TextDecodeOptions): string;
- }
- /** @category Encoding */
- declare var TextDecoder: {
- readonly prototype: TextDecoder;
- new (label?: string, options?: TextDecoderOptions): TextDecoder;
- };
- /** @category Encoding */
- declare interface TextEncoderEncodeIntoResult {
- read: number;
- written: number;
- }
- /** @category Encoding */
- declare interface TextEncoder {
- /** Returns "utf-8". */
- readonly encoding: "utf-8";
- /** Returns the result of running UTF-8's encoder. */
- encode(input?: string): Uint8Array;
- encodeInto(input: string, dest: Uint8Array): TextEncoderEncodeIntoResult;
- }
- /** @category Encoding */
- declare var TextEncoder: {
- readonly prototype: TextEncoder;
- new (): TextEncoder;
- };
- /** @category Encoding */
- declare interface TextDecoderStream {
- /** Returns encoding's name, lowercased. */
- readonly encoding: string;
- /** Returns `true` if error mode is "fatal", and `false` otherwise. */
- readonly fatal: boolean;
- /** Returns `true` if ignore BOM flag is set, and `false` otherwise. */
- readonly ignoreBOM: boolean;
- readonly readable: ReadableStream<string>;
- readonly writable: WritableStream<BufferSource>;
- readonly [Symbol.toStringTag]: string;
- }
- /** @category Encoding */
- declare var TextDecoderStream: {
- readonly prototype: TextDecoderStream;
- new (label?: string, options?: TextDecoderOptions): TextDecoderStream;
- };
- /** @category Encoding */
- declare interface TextEncoderStream {
- /** Returns "utf-8". */
- readonly encoding: "utf-8";
- readonly readable: ReadableStream<Uint8Array>;
- readonly writable: WritableStream<string>;
- readonly [Symbol.toStringTag]: string;
- }
- /** @category Encoding */
- declare var TextEncoderStream: {
- readonly prototype: TextEncoderStream;
- new (): TextEncoderStream;
- };
- /** A controller object that allows you to abort one or more DOM requests as and
- * when desired.
- *
- * @category Platform
- */
- declare interface AbortController {
- /** Returns the AbortSignal object associated with this object. */
- readonly signal: AbortSignal;
- /** Invoking this method will set this object's AbortSignal's aborted flag and
- * signal to any observers that the associated activity is to be aborted. */
- abort(reason?: any): void;
- }
- /** A controller object that allows you to abort one or more DOM requests as and
- * when desired.
- *
- * @category Platform
- */
- declare var AbortController: {
- readonly prototype: AbortController;
- new (): AbortController;
- };
- /** @category Platform */
- declare interface AbortSignalEventMap {
- abort: Event;
- }
- /** A signal object that allows you to communicate with a DOM request (such as a
- * Fetch) and abort it if required via an AbortController object.
- *
- * @category Platform
- */
- declare interface AbortSignal extends EventTarget {
- /** Returns true if this AbortSignal's AbortController has signaled to abort,
- * and false otherwise. */
- readonly aborted: boolean;
- readonly reason: any;
- onabort: ((this: AbortSignal, ev: Event) => any) | null;
- addEventListener<K extends keyof AbortSignalEventMap>(
- type: K,
- listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any,
- options?: boolean | AddEventListenerOptions,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | AddEventListenerOptions,
- ): void;
- removeEventListener<K extends keyof AbortSignalEventMap>(
- type: K,
- listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any,
- options?: boolean | EventListenerOptions,
- ): void;
- removeEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | EventListenerOptions,
- ): void;
- /** Throws this AbortSignal's abort reason, if its AbortController has
- * signaled to abort; otherwise, does nothing. */
- throwIfAborted(): void;
- }
- /** @category Platform */
- declare var AbortSignal: {
- readonly prototype: AbortSignal;
- new (): never;
- abort(reason?: any): AbortSignal;
- any(signals: AbortSignal[]): AbortSignal;
- timeout(milliseconds: number): AbortSignal;
- };
- /** @category File */
- declare interface FileReaderEventMap {
- "abort": ProgressEvent<FileReader>;
- "error": ProgressEvent<FileReader>;
- "load": ProgressEvent<FileReader>;
- "loadend": ProgressEvent<FileReader>;
- "loadstart": ProgressEvent<FileReader>;
- "progress": ProgressEvent<FileReader>;
- }
- /** Lets web applications asynchronously read the contents of files (or raw data
- * buffers) stored on the user's computer, using File or Blob objects to specify
- * the file or data to read.
- *
- * @category File
- */
- declare interface FileReader extends EventTarget {
- readonly error: DOMException | null;
- onabort: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
- onerror: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
- onload: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
- onloadend: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
- onloadstart:
- | ((this: FileReader, ev: ProgressEvent<FileReader>) => any)
- | null;
- onprogress: ((this: FileReader, ev: ProgressEvent<FileReader>) => any) | null;
- readonly readyState: number;
- readonly result: string | ArrayBuffer | null;
- abort(): void;
- readAsArrayBuffer(blob: Blob): void;
- readAsBinaryString(blob: Blob): void;
- readAsDataURL(blob: Blob): void;
- readAsText(blob: Blob, encoding?: string): void;
- readonly DONE: number;
- readonly EMPTY: number;
- readonly LOADING: number;
- addEventListener<K extends keyof FileReaderEventMap>(
- type: K,
- listener: (this: FileReader, ev: FileReaderEventMap[K]) => any,
- options?: boolean | AddEventListenerOptions,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | AddEventListenerOptions,
- ): void;
- removeEventListener<K extends keyof FileReaderEventMap>(
- type: K,
- listener: (this: FileReader, ev: FileReaderEventMap[K]) => any,
- options?: boolean | EventListenerOptions,
- ): void;
- removeEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | EventListenerOptions,
- ): void;
- }
- /** @category File */
- declare var FileReader: {
- readonly prototype: FileReader;
- new (): FileReader;
- readonly DONE: number;
- readonly EMPTY: number;
- readonly LOADING: number;
- };
- /** @category File */
- declare type BlobPart = BufferSource | Blob | string;
- /** @category File */
- declare interface BlobPropertyBag {
- type?: string;
- endings?: "transparent" | "native";
- }
- /** A file-like object of immutable, raw data. Blobs represent data that isn't
- * necessarily in a JavaScript-native format. The File interface is based on
- * Blob, inheriting blob functionality and expanding it to support files on the
- * user's system.
- *
- * @category File
- */
- declare interface Blob {
- readonly size: number;
- readonly type: string;
- arrayBuffer(): Promise<ArrayBuffer>;
- bytes(): Promise<Uint8Array>;
- slice(start?: number, end?: number, contentType?: string): Blob;
- stream(): ReadableStream<Uint8Array>;
- text(): Promise<string>;
- }
- /** A file-like object of immutable, raw data. Blobs represent data that isn't
- * necessarily in a JavaScript-native format. The File interface is based on
- * Blob, inheriting blob functionality and expanding it to support files on the
- * user's system.
- *
- * @category File
- */
- declare var Blob: {
- readonly prototype: Blob;
- new (blobParts?: BlobPart[], options?: BlobPropertyBag): Blob;
- };
- /** @category File */
- declare interface FilePropertyBag extends BlobPropertyBag {
- lastModified?: number;
- }
- /** Provides information about files and allows JavaScript in a web page to
- * access their content.
- *
- * @category File
- */
- declare interface File extends Blob {
- readonly lastModified: number;
- readonly name: string;
- }
- /** Provides information about files and allows JavaScript in a web page to
- * access their content.
- *
- * @category File
- */
- declare var File: {
- readonly prototype: File;
- new (fileBits: BlobPart[], fileName: string, options?: FilePropertyBag): File;
- };
- /** @category Streams */
- declare interface ReadableStreamDefaultReadDoneResult {
- done: true;
- value?: undefined;
- }
- /** @category Streams */
- declare interface ReadableStreamDefaultReadValueResult<T> {
- done: false;
- value: T;
- }
- /** @category Streams */
- declare type ReadableStreamDefaultReadResult<T> =
- | ReadableStreamDefaultReadValueResult<T>
- | ReadableStreamDefaultReadDoneResult;
- /** @category Streams */
- declare interface ReadableStreamDefaultReader<R = any> {
- readonly closed: Promise<void>;
- cancel(reason?: any): Promise<void>;
- read(): Promise<ReadableStreamDefaultReadResult<R>>;
- releaseLock(): void;
- }
- /** @category Streams */
- declare var ReadableStreamDefaultReader: {
- readonly prototype: ReadableStreamDefaultReader;
- new <R>(stream: ReadableStream<R>): ReadableStreamDefaultReader<R>;
- };
- /** @category Streams */
- declare interface ReadableStreamBYOBReadDoneResult<V extends ArrayBufferView> {
- done: true;
- value?: V;
- }
- /** @category Streams */
- declare interface ReadableStreamBYOBReadValueResult<V extends ArrayBufferView> {
- done: false;
- value: V;
- }
- /** @category Streams */
- declare type ReadableStreamBYOBReadResult<V extends ArrayBufferView> =
- | ReadableStreamBYOBReadDoneResult<V>
- | ReadableStreamBYOBReadValueResult<V>;
- /** @category Streams */
- declare interface ReadableStreamBYOBReaderReadOptions {
- min?: number;
- }
- /** @category Streams */
- declare interface ReadableStreamBYOBReader {
- readonly closed: Promise<void>;
- cancel(reason?: any): Promise<void>;
- read<V extends ArrayBufferView>(
- view: V,
- options?: ReadableStreamBYOBReaderReadOptions,
- ): Promise<ReadableStreamBYOBReadResult<V>>;
- releaseLock(): void;
- }
- /** @category Streams */
- declare var ReadableStreamBYOBReader: {
- readonly prototype: ReadableStreamBYOBReader;
- new (stream: ReadableStream<Uint8Array>): ReadableStreamBYOBReader;
- };
- /** @category Streams */
- declare interface ReadableStreamBYOBRequest {
- readonly view: ArrayBufferView | null;
- respond(bytesWritten: number): void;
- respondWithNewView(view: ArrayBufferView): void;
- }
- /** @category Streams */
- declare var ReadableStreamBYOBRequest: {
- readonly prototype: ReadableStreamBYOBRequest;
- new (): never;
- };
- /** @category Streams */
- declare interface ReadableByteStreamControllerCallback {
- (controller: ReadableByteStreamController): void | PromiseLike<void>;
- }
- /** @category Streams */
- declare interface UnderlyingByteSource {
- autoAllocateChunkSize?: number;
- cancel?: ReadableStreamErrorCallback;
- pull?: ReadableByteStreamControllerCallback;
- start?: ReadableByteStreamControllerCallback;
- type: "bytes";
- }
- /** @category Streams */
- declare interface UnderlyingSink<W = any> {
- abort?: WritableStreamErrorCallback;
- close?: WritableStreamDefaultControllerCloseCallback;
- start?: WritableStreamDefaultControllerStartCallback;
- type?: undefined;
- write?: WritableStreamDefaultControllerWriteCallback<W>;
- }
- /** @category Streams */
- declare interface UnderlyingSource<R = any> {
- cancel?: ReadableStreamErrorCallback;
- pull?: ReadableStreamDefaultControllerCallback<R>;
- start?: ReadableStreamDefaultControllerCallback<R>;
- type?: undefined;
- }
- /** @category Streams */
- declare interface ReadableStreamErrorCallback {
- (reason: any): void | PromiseLike<void>;
- }
- /** @category Streams */
- declare interface ReadableStreamDefaultControllerCallback<R> {
- (controller: ReadableStreamDefaultController<R>): void | PromiseLike<void>;
- }
- /** @category Streams */
- declare interface ReadableStreamDefaultController<R = any> {
- readonly desiredSize: number | null;
- close(): void;
- enqueue(chunk: R): void;
- error(error?: any): void;
- }
- /** @category Streams */
- declare var ReadableStreamDefaultController: {
- readonly prototype: ReadableStreamDefaultController;
- new (): never;
- };
- /** @category Streams */
- declare interface ReadableByteStreamController {
- readonly byobRequest: ReadableStreamBYOBRequest | null;
- readonly desiredSize: number | null;
- close(): void;
- enqueue(chunk: ArrayBufferView): void;
- error(error?: any): void;
- }
- /** @category Streams */
- declare var ReadableByteStreamController: {
- readonly prototype: ReadableByteStreamController;
- new (): never;
- };
- /** @category Streams */
- declare interface PipeOptions {
- preventAbort?: boolean;
- preventCancel?: boolean;
- preventClose?: boolean;
- signal?: AbortSignal;
- }
- /** @category Streams */
- declare interface QueuingStrategySizeCallback<T = any> {
- (chunk: T): number;
- }
- /** @category Streams */
- declare interface QueuingStrategy<T = any> {
- highWaterMark?: number;
- size?: QueuingStrategySizeCallback<T>;
- }
- /** This Streams API interface provides a built-in byte length queuing strategy
- * that can be used when constructing streams.
- *
- * @category Streams
- */
- declare interface CountQueuingStrategy extends QueuingStrategy {
- highWaterMark: number;
- size(chunk: any): 1;
- }
- /** @category Streams */
- declare var CountQueuingStrategy: {
- readonly prototype: CountQueuingStrategy;
- new (options: { highWaterMark: number }): CountQueuingStrategy;
- };
- /** @category Streams */
- declare interface ByteLengthQueuingStrategy
- extends QueuingStrategy<ArrayBufferView> {
- highWaterMark: number;
- size(chunk: ArrayBufferView): number;
- }
- /** @category Streams */
- declare var ByteLengthQueuingStrategy: {
- readonly prototype: ByteLengthQueuingStrategy;
- new (options: { highWaterMark: number }): ByteLengthQueuingStrategy;
- };
- /** This Streams API interface represents a readable stream of byte data. The
- * Fetch API offers a concrete instance of a ReadableStream through the body
- * property of a Response object.
- *
- * @category Streams
- */
- declare interface ReadableStream<R = any> {
- readonly locked: boolean;
- cancel(reason?: any): Promise<void>;
- getReader(options: { mode: "byob" }): ReadableStreamBYOBReader;
- getReader(options?: { mode?: undefined }): ReadableStreamDefaultReader<R>;
- pipeThrough<T>(transform: {
- writable: WritableStream<R>;
- readable: ReadableStream<T>;
- }, options?: PipeOptions): ReadableStream<T>;
- pipeTo(dest: WritableStream<R>, options?: PipeOptions): Promise<void>;
- tee(): [ReadableStream<R>, ReadableStream<R>];
- values(options?: {
- preventCancel?: boolean;
- }): AsyncIterableIterator<R>;
- [Symbol.asyncIterator](options?: {
- preventCancel?: boolean;
- }): AsyncIterableIterator<R>;
- }
- /** @category Streams */
- declare var ReadableStream: {
- readonly prototype: ReadableStream;
- new (
- underlyingSource: UnderlyingByteSource,
- strategy?: { highWaterMark?: number; size?: undefined },
- ): ReadableStream<Uint8Array>;
- new <R = any>(
- underlyingSource?: UnderlyingSource<R>,
- strategy?: QueuingStrategy<R>,
- ): ReadableStream<R>;
- from<R>(
- asyncIterable: AsyncIterable<R> | Iterable<R | PromiseLike<R>>,
- ): ReadableStream<R>;
- };
- /** @category Streams */
- declare interface WritableStreamDefaultControllerCloseCallback {
- (): void | PromiseLike<void>;
- }
- /** @category Streams */
- declare interface WritableStreamDefaultControllerStartCallback {
- (controller: WritableStreamDefaultController): void | PromiseLike<void>;
- }
- /** @category Streams */
- declare interface WritableStreamDefaultControllerWriteCallback<W> {
- (chunk: W, controller: WritableStreamDefaultController):
- | void
- | PromiseLike<
- void
- >;
- }
- /** @category Streams */
- declare interface WritableStreamErrorCallback {
- (reason: any): void | PromiseLike<void>;
- }
- /** This Streams API interface provides a standard abstraction for writing
- * streaming data to a destination, known as a sink. This object comes with
- * built-in backpressure and queuing.
- *
- * @category Streams
- */
- declare interface WritableStream<W = any> {
- readonly locked: boolean;
- abort(reason?: any): Promise<void>;
- close(): Promise<void>;
- getWriter(): WritableStreamDefaultWriter<W>;
- }
- /** @category Streams */
- declare var WritableStream: {
- readonly prototype: WritableStream;
- new <W = any>(
- underlyingSink?: UnderlyingSink<W>,
- strategy?: QueuingStrategy<W>,
- ): WritableStream<W>;
- };
- /** This Streams API interface represents a controller allowing control of a
- * WritableStream's state. When constructing a WritableStream, the underlying
- * sink is given a corresponding WritableStreamDefaultController instance to
- * manipulate.
- *
- * @category Streams
- */
- declare interface WritableStreamDefaultController {
- signal: AbortSignal;
- error(error?: any): void;
- }
- /** @category Streams */
- declare var WritableStreamDefaultController: {
- readonly prototype: WritableStreamDefaultController;
- new (): never;
- };
- /** This Streams API interface is the object returned by
- * WritableStream.getWriter() and once created locks the < writer to the
- * WritableStream ensuring that no other streams can write to the underlying
- * sink.
- *
- * @category Streams
- */
- declare interface WritableStreamDefaultWriter<W = any> {
- readonly closed: Promise<void>;
- readonly desiredSize: number | null;
- readonly ready: Promise<void>;
- abort(reason?: any): Promise<void>;
- close(): Promise<void>;
- releaseLock(): void;
- write(chunk: W): Promise<void>;
- }
- /** @category Streams */
- declare var WritableStreamDefaultWriter: {
- readonly prototype: WritableStreamDefaultWriter;
- new <W>(stream: WritableStream<W>): WritableStreamDefaultWriter<W>;
- };
- /** @category Streams */
- declare interface TransformStream<I = any, O = any> {
- readonly readable: ReadableStream<O>;
- readonly writable: WritableStream<I>;
- }
- /** @category Streams */
- declare var TransformStream: {
- readonly prototype: TransformStream;
- new <I = any, O = any>(
- transformer?: Transformer<I, O>,
- writableStrategy?: QueuingStrategy<I>,
- readableStrategy?: QueuingStrategy<O>,
- ): TransformStream<I, O>;
- };
- /** @category Streams */
- declare interface TransformStreamDefaultController<O = any> {
- readonly desiredSize: number | null;
- enqueue(chunk: O): void;
- error(reason?: any): void;
- terminate(): void;
- }
- /** @category Streams */
- declare var TransformStreamDefaultController: {
- readonly prototype: TransformStreamDefaultController;
- new (): never;
- };
- /** @category Streams */
- declare interface Transformer<I = any, O = any> {
- flush?: TransformStreamDefaultControllerCallback<O>;
- readableType?: undefined;
- start?: TransformStreamDefaultControllerCallback<O>;
- transform?: TransformStreamDefaultControllerTransformCallback<I, O>;
- cancel?: (reason: any) => Promise<void>;
- writableType?: undefined;
- }
- /** @category Streams */
- declare interface TransformStreamDefaultControllerCallback<O> {
- (controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;
- }
- /** @category Streams */
- declare interface TransformStreamDefaultControllerTransformCallback<I, O> {
- (
- chunk: I,
- controller: TransformStreamDefaultController<O>,
- ): void | PromiseLike<void>;
- }
- /** @category Events */
- declare interface MessageEventInit<T = any> extends EventInit {
- data?: T;
- origin?: string;
- lastEventId?: string;
- }
- /** @category Events */
- declare interface MessageEvent<T = any> extends Event {
- /**
- * Returns the data of the message.
- */
- readonly data: T;
- /**
- * Returns the origin of the message, for server-sent events.
- */
- readonly origin: string;
- /**
- * Returns the last event ID string, for server-sent events.
- */
- readonly lastEventId: string;
- readonly source: null;
- /**
- * Returns transferred ports.
- */
- readonly ports: ReadonlyArray<MessagePort>;
- }
- /** @category Events */
- declare var MessageEvent: {
- readonly prototype: MessageEvent;
- new <T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>;
- };
- /** @category Events */
- declare type Transferable = ArrayBuffer | MessagePort;
- /**
- * This type has been renamed to StructuredSerializeOptions. Use that type for
- * new code.
- *
- * @deprecated use `StructuredSerializeOptions` instead.
- * @category Events
- */
- declare type PostMessageOptions = StructuredSerializeOptions;
- /** @category Platform */
- declare interface StructuredSerializeOptions {
- transfer?: Transferable[];
- }
- /** The MessageChannel interface of the Channel Messaging API allows us to
- * create a new message channel and send data through it via its two MessagePort
- * properties.
- *
- * @category Messaging
- */
- declare interface MessageChannel {
- readonly port1: MessagePort;
- readonly port2: MessagePort;
- }
- /** The MessageChannel interface of the Channel Messaging API allows us to
- * create a new message channel and send data through it via its two MessagePort
- * properties.
- *
- * @category Messaging
- */
- declare var MessageChannel: {
- readonly prototype: MessageChannel;
- new (): MessageChannel;
- };
- /** @category Messaging */
- declare interface MessagePortEventMap {
- "message": MessageEvent;
- "messageerror": MessageEvent;
- }
- /** The MessagePort interface of the Channel Messaging API represents one of the
- * two ports of a MessageChannel, allowing messages to be sent from one port and
- * listening out for them arriving at the other.
- *
- * @category Messaging
- */
- declare interface MessagePort extends EventTarget {
- onmessage: ((this: MessagePort, ev: MessageEvent) => any) | null;
- onmessageerror: ((this: MessagePort, ev: MessageEvent) => any) | null;
- /**
- * Disconnects the port, so that it is no longer active.
- */
- close(): void;
- /**
- * Posts a message through the channel. Objects listed in transfer are
- * transferred, not just cloned, meaning that they are no longer usable on the
- * sending side.
- *
- * Throws a "DataCloneError" DOMException if transfer contains duplicate
- * objects or port, or if message could not be cloned.
- */
- postMessage(message: any, transfer: Transferable[]): void;
- postMessage(message: any, options?: StructuredSerializeOptions): void;
- /**
- * Begins dispatching messages received on the port. This is implicitly called
- * when assigning a value to `this.onmessage`.
- */
- start(): void;
- addEventListener<K extends keyof MessagePortEventMap>(
- type: K,
- listener: (this: MessagePort, ev: MessagePortEventMap[K]) => any,
- options?: boolean | AddEventListenerOptions,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | AddEventListenerOptions,
- ): void;
- removeEventListener<K extends keyof MessagePortEventMap>(
- type: K,
- listener: (this: MessagePort, ev: MessagePortEventMap[K]) => any,
- options?: boolean | EventListenerOptions,
- ): void;
- removeEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | EventListenerOptions,
- ): void;
- }
- /** The MessagePort interface of the Channel Messaging API represents one of the
- * two ports of a MessageChannel, allowing messages to be sent from one port and
- * listening out for them arriving at the other.
- *
- * @category Messaging
- */
- declare var MessagePort: {
- readonly prototype: MessagePort;
- new (): never;
- };
- /**
- * Creates a deep copy of a given value using the structured clone algorithm.
- *
- * Unlike a shallow copy, a deep copy does not hold the same references as the
- * source object, meaning its properties can be changed without affecting the
- * source. For more details, see
- * [MDN](https://developer.mozilla.org/en-US/docs/Glossary/Deep_copy).
- *
- * Throws a `DataCloneError` if any part of the input value is not
- * serializable.
- *
- * @example
- * ```ts
- * const object = { x: 0, y: 1 };
- *
- * const deepCopy = structuredClone(object);
- * deepCopy.x = 1;
- * console.log(deepCopy.x, object.x); // 1 0
- *
- * const shallowCopy = object;
- * shallowCopy.x = 1;
- * // shallowCopy.x is pointing to the same location in memory as object.x
- * console.log(shallowCopy.x, object.x); // 1 1
- * ```
- *
- * @category Platform
- */
- declare function structuredClone<T = any>(
- value: T,
- options?: StructuredSerializeOptions,
- ): T;
- /**
- * An API for compressing a stream of data.
- *
- * @example
- * ```ts
- * await Deno.stdin.readable
- * .pipeThrough(new CompressionStream("gzip"))
- * .pipeTo(Deno.stdout.writable);
- * ```
- *
- * @category Streams
- */
- declare interface CompressionStream {
- readonly readable: ReadableStream<Uint8Array>;
- readonly writable: WritableStream<Uint8Array>;
- }
- /**
- * An API for compressing a stream of data.
- *
- * @example
- * ```ts
- * await Deno.stdin.readable
- * .pipeThrough(new CompressionStream("gzip"))
- * .pipeTo(Deno.stdout.writable);
- * ```
- *
- * @category Streams
- */
- declare var CompressionStream: {
- readonly prototype: CompressionStream;
- /**
- * Creates a new `CompressionStream` object which compresses a stream of
- * data.
- *
- * Throws a `TypeError` if the format passed to the constructor is not
- * supported.
- */
- new (format: string): CompressionStream;
- };
- /**
- * An API for decompressing a stream of data.
- *
- * @example
- * ```ts
- * const input = await Deno.open("./file.txt.gz");
- * const output = await Deno.create("./file.txt");
- *
- * await input.readable
- * .pipeThrough(new DecompressionStream("gzip"))
- * .pipeTo(output.writable);
- * ```
- *
- * @category Streams
- */
- declare interface DecompressionStream {
- readonly readable: ReadableStream<Uint8Array>;
- readonly writable: WritableStream<Uint8Array>;
- }
- /**
- * An API for decompressing a stream of data.
- *
- * @example
- * ```ts
- * const input = await Deno.open("./file.txt.gz");
- * const output = await Deno.create("./file.txt");
- *
- * await input.readable
- * .pipeThrough(new DecompressionStream("gzip"))
- * .pipeTo(output.writable);
- * ```
- *
- * @category Streams
- */
- declare var DecompressionStream: {
- readonly prototype: DecompressionStream;
- /**
- * Creates a new `DecompressionStream` object which decompresses a stream of
- * data.
- *
- * Throws a `TypeError` if the format passed to the constructor is not
- * supported.
- */
- new (format: string): DecompressionStream;
- };
- /** Dispatch an uncaught exception. Similar to a synchronous version of:
- * ```ts
- * setTimeout(() => { throw error; }, 0);
- * ```
- * The error can not be caught with a `try/catch` block. An error event will
- * be dispatched to the global scope. You can prevent the error from being
- * reported to the console with `Event.prototype.preventDefault()`:
- * ```ts
- * addEventListener("error", (event) => {
- * event.preventDefault();
- * });
- * reportError(new Error("foo")); // Will not be reported.
- * ```
- * In Deno, this error will terminate the process if not intercepted like above.
- *
- * @category Platform
- */
- declare function reportError(
- error: any,
- ): void;
- /** @category Platform */
- declare type PredefinedColorSpace = "srgb" | "display-p3";
- /** @category Platform */
- declare interface ImageDataSettings {
- readonly colorSpace?: PredefinedColorSpace;
- }
- /** @category Platform */
- declare interface ImageData {
- readonly colorSpace: PredefinedColorSpace;
- readonly data: Uint8ClampedArray;
- readonly height: number;
- readonly width: number;
- }
- /** @category Platform */
- declare var ImageData: {
- prototype: ImageData;
- new (sw: number, sh: number, settings?: ImageDataSettings): ImageData;
- new (
- data: Uint8ClampedArray,
- sw: number,
- sh?: number,
- settings?: ImageDataSettings,
- ): ImageData;
- };
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- // deno-lint-ignore-file no-explicit-any no-var
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /** @category Platform */
- declare interface DomIterable<K, V> {
- keys(): IterableIterator<K>;
- values(): IterableIterator<V>;
- entries(): IterableIterator<[K, V]>;
- [Symbol.iterator](): IterableIterator<[K, V]>;
- forEach(
- callback: (value: V, key: K, parent: this) => void,
- thisArg?: any,
- ): void;
- }
- /** @category Fetch */
- declare type FormDataEntryValue = File | string;
- /** Provides a way to easily construct a set of key/value pairs representing
- * form fields and their values, which can then be easily sent using the
- * XMLHttpRequest.send() method. It uses the same format a form would use if the
- * encoding type were set to "multipart/form-data".
- *
- * @category Fetch
- */
- declare interface FormData extends DomIterable<string, FormDataEntryValue> {
- append(name: string, value: string | Blob, fileName?: string): void;
- delete(name: string): void;
- get(name: string): FormDataEntryValue | null;
- getAll(name: string): FormDataEntryValue[];
- has(name: string): boolean;
- set(name: string, value: string | Blob, fileName?: string): void;
- }
- /** @category Fetch */
- declare var FormData: {
- readonly prototype: FormData;
- new (): FormData;
- };
- /** @category Fetch */
- declare interface Body {
- /** A simple getter used to expose a `ReadableStream` of the body contents. */
- readonly body: ReadableStream<Uint8Array> | null;
- /** Stores a `Boolean` that declares whether the body has been used in a
- * response yet.
- */
- readonly bodyUsed: boolean;
- /** Takes a `Response` stream and reads it to completion. It returns a promise
- * that resolves with an `ArrayBuffer`.
- */
- arrayBuffer(): Promise<ArrayBuffer>;
- /** Takes a `Response` stream and reads it to completion. It returns a promise
- * that resolves with a `Blob`.
- */
- blob(): Promise<Blob>;
- /** Takes a `Response` stream and reads it to completion. It returns a promise
- * that resolves with a `Uint8Array`.
- */
- bytes(): Promise<Uint8Array>;
- /** Takes a `Response` stream and reads it to completion. It returns a promise
- * that resolves with a `FormData` object.
- */
- formData(): Promise<FormData>;
- /** Takes a `Response` stream and reads it to completion. It returns a promise
- * that resolves with the result of parsing the body text as JSON.
- */
- json(): Promise<any>;
- /** Takes a `Response` stream and reads it to completion. It returns a promise
- * that resolves with a `USVString` (text).
- */
- text(): Promise<string>;
- }
- /** @category Fetch */
- declare type HeadersInit = Iterable<string[]> | Record<string, string>;
- /** This Fetch API interface allows you to perform various actions on HTTP
- * request and response headers. These actions include retrieving, setting,
- * adding to, and removing. A Headers object has an associated header list,
- * which is initially empty and consists of zero or more name and value pairs.
- * You can add to this using methods like append() (see Examples). In all
- * methods of this interface, header names are matched by case-insensitive byte
- * sequence.
- *
- * @category Fetch
- */
- declare interface Headers extends DomIterable<string, string> {
- /** Appends a new value onto an existing header inside a `Headers` object, or
- * adds the header if it does not already exist.
- */
- append(name: string, value: string): void;
- /** Deletes a header from a `Headers` object. */
- delete(name: string): void;
- /** Returns a `ByteString` sequence of all the values of a header within a
- * `Headers` object with a given name.
- */
- get(name: string): string | null;
- /** Returns a boolean stating whether a `Headers` object contains a certain
- * header.
- */
- has(name: string): boolean;
- /** Sets a new value for an existing header inside a Headers object, or adds
- * the header if it does not already exist.
- */
- set(name: string, value: string): void;
- /** Returns an array containing the values of all `Set-Cookie` headers
- * associated with a response.
- */
- getSetCookie(): string[];
- }
- /** This Fetch API interface allows you to perform various actions on HTTP
- * request and response headers. These actions include retrieving, setting,
- * adding to, and removing. A Headers object has an associated header list,
- * which is initially empty and consists of zero or more name and value pairs.
- * You can add to this using methods like append() (see Examples). In all
- * methods of this interface, header names are matched by case-insensitive byte
- * sequence.
- *
- * @category Fetch
- */
- declare var Headers: {
- readonly prototype: Headers;
- new (init?: HeadersInit): Headers;
- };
- /** @category Fetch */
- declare type RequestInfo = Request | string;
- /** @category Fetch */
- declare type RequestCache =
- | "default"
- | "force-cache"
- | "no-cache"
- | "no-store"
- | "only-if-cached"
- | "reload";
- /** @category Fetch */
- declare type RequestCredentials = "include" | "omit" | "same-origin";
- /** @category Fetch */
- declare type RequestMode = "cors" | "navigate" | "no-cors" | "same-origin";
- /** @category Fetch */
- declare type RequestRedirect = "error" | "follow" | "manual";
- /** @category Fetch */
- declare type ReferrerPolicy =
- | ""
- | "no-referrer"
- | "no-referrer-when-downgrade"
- | "origin"
- | "origin-when-cross-origin"
- | "same-origin"
- | "strict-origin"
- | "strict-origin-when-cross-origin"
- | "unsafe-url";
- /** @category Fetch */
- declare type BodyInit =
- | Blob
- | BufferSource
- | FormData
- | URLSearchParams
- | ReadableStream<Uint8Array>
- | string;
- /** @category Fetch */
- declare type RequestDestination =
- | ""
- | "audio"
- | "audioworklet"
- | "document"
- | "embed"
- | "font"
- | "image"
- | "manifest"
- | "object"
- | "paintworklet"
- | "report"
- | "script"
- | "sharedworker"
- | "style"
- | "track"
- | "video"
- | "worker"
- | "xslt";
- /** @category Fetch */
- declare interface RequestInit {
- /**
- * A BodyInit object or null to set request's body.
- */
- body?: BodyInit | null;
- /**
- * A string indicating how the request will interact with the browser's cache
- * to set request's cache.
- */
- cache?: RequestCache;
- /**
- * A string indicating whether credentials will be sent with the request
- * always, never, or only when sent to a same-origin URL. Sets request's
- * credentials.
- */
- credentials?: RequestCredentials;
- /**
- * A Headers object, an object literal, or an array of two-item arrays to set
- * request's headers.
- */
- headers?: HeadersInit;
- /**
- * A cryptographic hash of the resource to be fetched by request. Sets
- * request's integrity.
- */
- integrity?: string;
- /**
- * A boolean to set request's keepalive.
- */
- keepalive?: boolean;
- /**
- * A string to set request's method.
- */
- method?: string;
- /**
- * A string to indicate whether the request will use CORS, or will be
- * restricted to same-origin URLs. Sets request's mode.
- */
- mode?: RequestMode;
- /**
- * A string indicating whether request follows redirects, results in an error
- * upon encountering a redirect, or returns the redirect (in an opaque
- * fashion). Sets request's redirect.
- */
- redirect?: RequestRedirect;
- /**
- * A string whose value is a same-origin URL, "about:client", or the empty
- * string, to set request's referrer.
- */
- referrer?: string;
- /**
- * A referrer policy to set request's referrerPolicy.
- */
- referrerPolicy?: ReferrerPolicy;
- /**
- * An AbortSignal to set request's signal.
- */
- signal?: AbortSignal | null;
- /**
- * Can only be null. Used to disassociate request from any Window.
- */
- window?: any;
- }
- /** This Fetch API interface represents a resource request.
- *
- * @category Fetch
- */
- declare interface Request extends Body {
- /**
- * Returns the cache mode associated with request, which is a string
- * indicating how the request will interact with the browser's cache when
- * fetching.
- */
- readonly cache: RequestCache;
- /**
- * Returns the credentials mode associated with request, which is a string
- * indicating whether credentials will be sent with the request always, never,
- * or only when sent to a same-origin URL.
- */
- readonly credentials: RequestCredentials;
- /**
- * Returns the kind of resource requested by request, e.g., "document" or "script".
- */
- readonly destination: RequestDestination;
- /**
- * Returns a Headers object consisting of the headers associated with request.
- * Note that headers added in the network layer by the user agent will not be
- * accounted for in this object, e.g., the "Host" header.
- */
- readonly headers: Headers;
- /**
- * Returns request's subresource integrity metadata, which is a cryptographic
- * hash of the resource being fetched. Its value consists of multiple hashes
- * separated by whitespace. [SRI]
- */
- readonly integrity: string;
- /**
- * Returns a boolean indicating whether or not request is for a history
- * navigation (a.k.a. back-forward navigation).
- */
- readonly isHistoryNavigation: boolean;
- /**
- * Returns a boolean indicating whether or not request is for a reload
- * navigation.
- */
- readonly isReloadNavigation: boolean;
- /**
- * Returns a boolean indicating whether or not request can outlive the global
- * in which it was created.
- */
- readonly keepalive: boolean;
- /**
- * Returns request's HTTP method, which is "GET" by default.
- */
- readonly method: string;
- /**
- * Returns the mode associated with request, which is a string indicating
- * whether the request will use CORS, or will be restricted to same-origin
- * URLs.
- */
- readonly mode: RequestMode;
- /**
- * Returns the redirect mode associated with request, which is a string
- * indicating how redirects for the request will be handled during fetching. A
- * request will follow redirects by default.
- */
- readonly redirect: RequestRedirect;
- /**
- * Returns the referrer of request. Its value can be a same-origin URL if
- * explicitly set in init, the empty string to indicate no referrer, and
- * "about:client" when defaulting to the global's default. This is used during
- * fetching to determine the value of the `Referer` header of the request
- * being made.
- */
- readonly referrer: string;
- /**
- * Returns the referrer policy associated with request. This is used during
- * fetching to compute the value of the request's referrer.
- */
- readonly referrerPolicy: ReferrerPolicy;
- /**
- * Returns the signal associated with request, which is an AbortSignal object
- * indicating whether or not request has been aborted, and its abort event
- * handler.
- */
- readonly signal: AbortSignal;
- /**
- * Returns the URL of request as a string.
- */
- readonly url: string;
- clone(): Request;
- }
- /** This Fetch API interface represents a resource request.
- *
- * @category Fetch
- */
- declare var Request: {
- readonly prototype: Request;
- new (input: RequestInfo | URL, init?: RequestInit): Request;
- };
- /** @category Fetch */
- declare interface ResponseInit {
- headers?: HeadersInit;
- status?: number;
- statusText?: string;
- }
- /** @category Fetch */
- declare type ResponseType =
- | "basic"
- | "cors"
- | "default"
- | "error"
- | "opaque"
- | "opaqueredirect";
- /** This Fetch API interface represents the response to a request.
- *
- * @category Fetch
- */
- declare interface Response extends Body {
- readonly headers: Headers;
- readonly ok: boolean;
- readonly redirected: boolean;
- readonly status: number;
- readonly statusText: string;
- readonly type: ResponseType;
- readonly url: string;
- clone(): Response;
- }
- /** This Fetch API interface represents the response to a request.
- *
- * @category Fetch
- */
- declare var Response: {
- readonly prototype: Response;
- new (body?: BodyInit | null, init?: ResponseInit): Response;
- json(data: unknown, init?: ResponseInit): Response;
- error(): Response;
- redirect(url: string | URL, status?: number): Response;
- };
- /** Fetch a resource from the network. It returns a `Promise` that resolves to the
- * `Response` to that `Request`, whether it is successful or not.
- *
- * ```ts
- * const response = await fetch("http://my.json.host/data.json");
- * console.log(response.status); // e.g. 200
- * console.log(response.statusText); // e.g. "OK"
- * const jsonData = await response.json();
- * ```
- *
- * @tags allow-net, allow-read
- * @category Fetch
- */
- declare function fetch(
- input: URL | Request | string,
- init?: RequestInit,
- ): Promise<Response>;
- /**
- * @category Fetch
- */
- declare interface EventSourceInit {
- withCredentials?: boolean;
- }
- /**
- * @category Fetch
- */
- declare interface EventSourceEventMap {
- "error": Event;
- "message": MessageEvent;
- "open": Event;
- }
- /**
- * @category Fetch
- */
- declare interface EventSource extends EventTarget {
- onerror: ((this: EventSource, ev: Event) => any) | null;
- onmessage: ((this: EventSource, ev: MessageEvent) => any) | null;
- onopen: ((this: EventSource, ev: Event) => any) | null;
- /**
- * Returns the state of this EventSource object's connection. It can have the values described below.
- */
- readonly readyState: number;
- /**
- * Returns the URL providing the event stream.
- */
- readonly url: string;
- /**
- * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to "include", and false otherwise.
- */
- readonly withCredentials: boolean;
- /**
- * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED.
- */
- close(): void;
- readonly CONNECTING: 0;
- readonly OPEN: 1;
- readonly CLOSED: 2;
- addEventListener<K extends keyof EventSourceEventMap>(
- type: K,
- listener: (this: EventSource, ev: EventSourceEventMap[K]) => any,
- options?: boolean | AddEventListenerOptions,
- ): void;
- addEventListener(
- type: string,
- listener: (this: EventSource, event: MessageEvent) => any,
- options?: boolean | AddEventListenerOptions,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | AddEventListenerOptions,
- ): void;
- removeEventListener<K extends keyof EventSourceEventMap>(
- type: K,
- listener: (this: EventSource, ev: EventSourceEventMap[K]) => any,
- options?: boolean | EventListenerOptions,
- ): void;
- removeEventListener(
- type: string,
- listener: (this: EventSource, event: MessageEvent) => any,
- options?: boolean | EventListenerOptions,
- ): void;
- removeEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | EventListenerOptions,
- ): void;
- }
- /**
- * @category Fetch
- */
- declare var EventSource: {
- prototype: EventSource;
- new (url: string | URL, eventSourceInitDict?: EventSourceInit): EventSource;
- readonly CONNECTING: 0;
- readonly OPEN: 1;
- readonly CLOSED: 2;
- };
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- // deno-lint-ignore-file no-explicit-any no-empty-interface
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUObjectBase {
- label: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUObjectDescriptorBase {
- label?: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUSupportedLimits {
- maxTextureDimension1D?: number;
- maxTextureDimension2D?: number;
- maxTextureDimension3D?: number;
- maxTextureArrayLayers?: number;
- maxBindGroups?: number;
- maxBindingsPerBindGroup?: number;
- maxDynamicUniformBuffersPerPipelineLayout?: number;
- maxDynamicStorageBuffersPerPipelineLayout?: number;
- maxSampledTexturesPerShaderStage?: number;
- maxSamplersPerShaderStage?: number;
- maxStorageBuffersPerShaderStage?: number;
- maxStorageTexturesPerShaderStage?: number;
- maxUniformBuffersPerShaderStage?: number;
- maxUniformBufferBindingSize?: number;
- maxStorageBufferBindingSize?: number;
- minUniformBufferOffsetAlignment?: number;
- minStorageBufferOffsetAlignment?: number;
- maxVertexBuffers?: number;
- maxBufferSize?: number;
- maxVertexAttributes?: number;
- maxVertexBufferArrayStride?: number;
- maxInterStageShaderComponents?: number;
- maxColorAttachments?: number;
- maxColorAttachmentBytesPerSample?: number;
- maxComputeWorkgroupStorageSize?: number;
- maxComputeInvocationsPerWorkgroup?: number;
- maxComputeWorkgroupSizeX?: number;
- maxComputeWorkgroupSizeY?: number;
- maxComputeWorkgroupSizeZ?: number;
- maxComputeWorkgroupsPerDimension?: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUSupportedFeatures {
- forEach(
- callbackfn: (
- value: GPUFeatureName,
- value2: GPUFeatureName,
- set: Set<GPUFeatureName>,
- ) => void,
- thisArg?: any,
- ): void;
- has(value: GPUFeatureName): boolean;
- size: number;
- [Symbol.iterator](): IterableIterator<GPUFeatureName>;
- entries(): IterableIterator<[GPUFeatureName, GPUFeatureName]>;
- keys(): IterableIterator<GPUFeatureName>;
- values(): IterableIterator<GPUFeatureName>;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUAdapterInfo {
- readonly vendor: string;
- readonly architecture: string;
- readonly device: string;
- readonly description: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPU {
- requestAdapter(
- options?: GPURequestAdapterOptions,
- ): Promise<GPUAdapter | null>;
- getPreferredCanvasFormat(): GPUTextureFormat;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPURequestAdapterOptions {
- powerPreference?: GPUPowerPreference;
- forceFallbackAdapter?: boolean;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUPowerPreference = "low-power" | "high-performance";
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUAdapter {
- readonly features: GPUSupportedFeatures;
- readonly limits: GPUSupportedLimits;
- readonly isFallbackAdapter: boolean;
- requestDevice(descriptor?: GPUDeviceDescriptor): Promise<GPUDevice>;
- requestAdapterInfo(): Promise<GPUAdapterInfo>;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUDeviceDescriptor extends GPUObjectDescriptorBase {
- requiredFeatures?: GPUFeatureName[];
- requiredLimits?: Record<string, number>;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUFeatureName =
- | "depth-clip-control"
- | "depth32float-stencil8"
- | "pipeline-statistics-query"
- | "texture-compression-bc"
- | "texture-compression-etc2"
- | "texture-compression-astc"
- | "timestamp-query"
- | "indirect-first-instance"
- | "shader-f16"
- | "rg11b10ufloat-renderable"
- | "bgra8unorm-storage"
- | "float32-filterable"
- // extended from spec
- | "mappable-primary-buffers"
- | "sampled-texture-binding-array"
- | "sampled-texture-array-dynamic-indexing"
- | "sampled-texture-array-non-uniform-indexing"
- | "unsized-binding-array"
- | "multi-draw-indirect"
- | "multi-draw-indirect-count"
- | "push-constants"
- | "address-mode-clamp-to-border"
- | "texture-adapter-specific-format-features"
- | "shader-float64"
- | "vertex-attribute-64bit";
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUDevice extends EventTarget implements GPUObjectBase {
- label: string;
- readonly lost: Promise<GPUDeviceLostInfo>;
- pushErrorScope(filter: GPUErrorFilter): undefined;
- popErrorScope(): Promise<GPUError | null>;
- readonly features: GPUSupportedFeatures;
- readonly limits: GPUSupportedLimits;
- readonly queue: GPUQueue;
- destroy(): undefined;
- createBuffer(descriptor: GPUBufferDescriptor): GPUBuffer;
- createTexture(descriptor: GPUTextureDescriptor): GPUTexture;
- createSampler(descriptor?: GPUSamplerDescriptor): GPUSampler;
- createBindGroupLayout(
- descriptor: GPUBindGroupLayoutDescriptor,
- ): GPUBindGroupLayout;
- createPipelineLayout(
- descriptor: GPUPipelineLayoutDescriptor,
- ): GPUPipelineLayout;
- createBindGroup(descriptor: GPUBindGroupDescriptor): GPUBindGroup;
- createShaderModule(descriptor: GPUShaderModuleDescriptor): GPUShaderModule;
- createComputePipeline(
- descriptor: GPUComputePipelineDescriptor,
- ): GPUComputePipeline;
- createRenderPipeline(
- descriptor: GPURenderPipelineDescriptor,
- ): GPURenderPipeline;
- createComputePipelineAsync(
- descriptor: GPUComputePipelineDescriptor,
- ): Promise<GPUComputePipeline>;
- createRenderPipelineAsync(
- descriptor: GPURenderPipelineDescriptor,
- ): Promise<GPURenderPipeline>;
- createCommandEncoder(
- descriptor?: GPUCommandEncoderDescriptor,
- ): GPUCommandEncoder;
- createRenderBundleEncoder(
- descriptor: GPURenderBundleEncoderDescriptor,
- ): GPURenderBundleEncoder;
- createQuerySet(descriptor: GPUQuerySetDescriptor): GPUQuerySet;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUBuffer implements GPUObjectBase {
- label: string;
- readonly size: number;
- readonly usage: GPUFlagsConstant;
- readonly mapState: GPUBufferMapState;
- mapAsync(
- mode: GPUMapModeFlags,
- offset?: number,
- size?: number,
- ): Promise<undefined>;
- getMappedRange(offset?: number, size?: number): ArrayBuffer;
- unmap(): undefined;
- destroy(): undefined;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUBufferMapState = "unmapped" | "pending" | "mapped";
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUBufferDescriptor extends GPUObjectDescriptorBase {
- size: number;
- usage: GPUBufferUsageFlags;
- mappedAtCreation?: boolean;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUBufferUsageFlags = number;
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUFlagsConstant = number;
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUBufferUsage {
- static MAP_READ: 0x0001;
- static MAP_WRITE: 0x0002;
- static COPY_SRC: 0x0004;
- static COPY_DST: 0x0008;
- static INDEX: 0x0010;
- static VERTEX: 0x0020;
- static UNIFORM: 0x0040;
- static STORAGE: 0x0080;
- static INDIRECT: 0x0100;
- static QUERY_RESOLVE: 0x0200;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUMapModeFlags = number;
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUMapMode {
- static READ: 0x0001;
- static WRITE: 0x0002;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUTexture implements GPUObjectBase {
- label: string;
- createView(descriptor?: GPUTextureViewDescriptor): GPUTextureView;
- destroy(): undefined;
- readonly width: number;
- readonly height: number;
- readonly depthOrArrayLayers: number;
- readonly mipLevelCount: number;
- readonly sampleCount: number;
- readonly dimension: GPUTextureDimension;
- readonly format: GPUTextureFormat;
- readonly usage: GPUFlagsConstant;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUTextureDescriptor extends GPUObjectDescriptorBase {
- size: GPUExtent3D;
- mipLevelCount?: number;
- sampleCount?: number;
- dimension?: GPUTextureDimension;
- format: GPUTextureFormat;
- usage: GPUTextureUsageFlags;
- viewFormats?: GPUTextureFormat[];
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUTextureDimension = "1d" | "2d" | "3d";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUTextureUsageFlags = number;
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUTextureUsage {
- static COPY_SRC: 0x01;
- static COPY_DST: 0x02;
- static TEXTURE_BINDING: 0x04;
- static STORAGE_BINDING: 0x08;
- static RENDER_ATTACHMENT: 0x10;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUTextureView implements GPUObjectBase {
- label: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUTextureViewDescriptor extends GPUObjectDescriptorBase {
- format?: GPUTextureFormat;
- dimension?: GPUTextureViewDimension;
- aspect?: GPUTextureAspect;
- baseMipLevel?: number;
- mipLevelCount?: number;
- baseArrayLayer?: number;
- arrayLayerCount?: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUTextureViewDimension =
- | "1d"
- | "2d"
- | "2d-array"
- | "cube"
- | "cube-array"
- | "3d";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUTextureAspect = "all" | "stencil-only" | "depth-only";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUTextureFormat =
- | "r8unorm"
- | "r8snorm"
- | "r8uint"
- | "r8sint"
- | "r16uint"
- | "r16sint"
- | "r16float"
- | "rg8unorm"
- | "rg8snorm"
- | "rg8uint"
- | "rg8sint"
- | "r32uint"
- | "r32sint"
- | "r32float"
- | "rg16uint"
- | "rg16sint"
- | "rg16float"
- | "rgba8unorm"
- | "rgba8unorm-srgb"
- | "rgba8snorm"
- | "rgba8uint"
- | "rgba8sint"
- | "bgra8unorm"
- | "bgra8unorm-srgb"
- | "rgb9e5ufloat"
- | "rgb10a2uint"
- | "rgb10a2unorm"
- | "rg11b10ufloat"
- | "rg32uint"
- | "rg32sint"
- | "rg32float"
- | "rgba16uint"
- | "rgba16sint"
- | "rgba16float"
- | "rgba32uint"
- | "rgba32sint"
- | "rgba32float"
- | "stencil8"
- | "depth16unorm"
- | "depth24plus"
- | "depth24plus-stencil8"
- | "depth32float"
- | "depth32float-stencil8"
- | "bc1-rgba-unorm"
- | "bc1-rgba-unorm-srgb"
- | "bc2-rgba-unorm"
- | "bc2-rgba-unorm-srgb"
- | "bc3-rgba-unorm"
- | "bc3-rgba-unorm-srgb"
- | "bc4-r-unorm"
- | "bc4-r-snorm"
- | "bc5-rg-unorm"
- | "bc5-rg-snorm"
- | "bc6h-rgb-ufloat"
- | "bc6h-rgb-float"
- | "bc7-rgba-unorm"
- | "bc7-rgba-unorm-srgb"
- | "etc2-rgb8unorm"
- | "etc2-rgb8unorm-srgb"
- | "etc2-rgb8a1unorm"
- | "etc2-rgb8a1unorm-srgb"
- | "etc2-rgba8unorm"
- | "etc2-rgba8unorm-srgb"
- | "eac-r11unorm"
- | "eac-r11snorm"
- | "eac-rg11unorm"
- | "eac-rg11snorm"
- | "astc-4x4-unorm"
- | "astc-4x4-unorm-srgb"
- | "astc-5x4-unorm"
- | "astc-5x4-unorm-srgb"
- | "astc-5x5-unorm"
- | "astc-5x5-unorm-srgb"
- | "astc-6x5-unorm"
- | "astc-6x5-unorm-srgb"
- | "astc-6x6-unorm"
- | "astc-6x6-unorm-srgb"
- | "astc-8x5-unorm"
- | "astc-8x5-unorm-srgb"
- | "astc-8x6-unorm"
- | "astc-8x6-unorm-srgb"
- | "astc-8x8-unorm"
- | "astc-8x8-unorm-srgb"
- | "astc-10x5-unorm"
- | "astc-10x5-unorm-srgb"
- | "astc-10x6-unorm"
- | "astc-10x6-unorm-srgb"
- | "astc-10x8-unorm"
- | "astc-10x8-unorm-srgb"
- | "astc-10x10-unorm"
- | "astc-10x10-unorm-srgb"
- | "astc-12x10-unorm"
- | "astc-12x10-unorm-srgb"
- | "astc-12x12-unorm"
- | "astc-12x12-unorm-srgb";
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUSampler implements GPUObjectBase {
- label: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUSamplerDescriptor extends GPUObjectDescriptorBase {
- addressModeU?: GPUAddressMode;
- addressModeV?: GPUAddressMode;
- addressModeW?: GPUAddressMode;
- magFilter?: GPUFilterMode;
- minFilter?: GPUFilterMode;
- mipmapFilter?: GPUMipmapFilterMode;
- lodMinClamp?: number;
- lodMaxClamp?: number;
- compare?: GPUCompareFunction;
- maxAnisotropy?: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUAddressMode = "clamp-to-edge" | "repeat" | "mirror-repeat";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUFilterMode = "nearest" | "linear";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUMipmapFilterMode = "nearest" | "linear";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUCompareFunction =
- | "never"
- | "less"
- | "equal"
- | "less-equal"
- | "greater"
- | "not-equal"
- | "greater-equal"
- | "always";
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUBindGroupLayout implements GPUObjectBase {
- label: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUBindGroupLayoutDescriptor extends GPUObjectDescriptorBase {
- entries: GPUBindGroupLayoutEntry[];
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUBindGroupLayoutEntry {
- binding: number;
- visibility: GPUShaderStageFlags;
- buffer?: GPUBufferBindingLayout;
- sampler?: GPUSamplerBindingLayout;
- texture?: GPUTextureBindingLayout;
- storageTexture?: GPUStorageTextureBindingLayout;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUShaderStageFlags = number;
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUShaderStage {
- static VERTEX: 0x1;
- static FRAGMENT: 0x2;
- static COMPUTE: 0x4;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUBufferBindingLayout {
- type?: GPUBufferBindingType;
- hasDynamicOffset?: boolean;
- minBindingSize?: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUBufferBindingType = "uniform" | "storage" | "read-only-storage";
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUSamplerBindingLayout {
- type?: GPUSamplerBindingType;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUSamplerBindingType =
- | "filtering"
- | "non-filtering"
- | "comparison";
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUTextureBindingLayout {
- sampleType?: GPUTextureSampleType;
- viewDimension?: GPUTextureViewDimension;
- multisampled?: boolean;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUTextureSampleType =
- | "float"
- | "unfilterable-float"
- | "depth"
- | "sint"
- | "uint";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUStorageTextureAccess =
- | "write-only"
- | "read-only"
- | "read-write";
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUStorageTextureBindingLayout {
- access: GPUStorageTextureAccess;
- format: GPUTextureFormat;
- viewDimension?: GPUTextureViewDimension;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUBindGroup implements GPUObjectBase {
- label: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUBindGroupDescriptor extends GPUObjectDescriptorBase {
- layout: GPUBindGroupLayout;
- entries: GPUBindGroupEntry[];
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUBindingResource =
- | GPUSampler
- | GPUTextureView
- | GPUBufferBinding;
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUBindGroupEntry {
- binding: number;
- resource: GPUBindingResource;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUBufferBinding {
- buffer: GPUBuffer;
- offset?: number;
- size?: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUPipelineLayout implements GPUObjectBase {
- label: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUPipelineLayoutDescriptor extends GPUObjectDescriptorBase {
- bindGroupLayouts: GPUBindGroupLayout[];
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUCompilationMessageType = "error" | "warning" | "info";
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUCompilationMessage {
- readonly message: string;
- readonly type: GPUCompilationMessageType;
- readonly lineNum: number;
- readonly linePos: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUCompilationInfo {
- readonly messages: ReadonlyArray<GPUCompilationMessage>;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUPipelineError extends DOMException {
- constructor(message?: string, options?: GPUPipelineErrorInit);
- readonly reason: GPUPipelineErrorReason;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUPipelineErrorInit {
- reason: GPUPipelineErrorReason;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUPipelineErrorReason = "validation" | "internal";
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUShaderModule implements GPUObjectBase {
- label: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUShaderModuleDescriptor extends GPUObjectDescriptorBase {
- code: string;
- sourceMap?: any;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUAutoLayoutMode = "auto";
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUPipelineDescriptorBase extends GPUObjectDescriptorBase {
- layout: GPUPipelineLayout | GPUAutoLayoutMode;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUPipelineBase {
- getBindGroupLayout(index: number): GPUBindGroupLayout;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUProgrammableStage {
- module: GPUShaderModule;
- entryPoint?: string;
- constants?: Record<string, number>;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUComputePipeline implements GPUObjectBase, GPUPipelineBase {
- label: string;
- getBindGroupLayout(index: number): GPUBindGroupLayout;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUComputePipelineDescriptor
- extends GPUPipelineDescriptorBase {
- compute: GPUProgrammableStage;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPURenderPipeline implements GPUObjectBase, GPUPipelineBase {
- label: string;
- getBindGroupLayout(index: number): GPUBindGroupLayout;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPURenderPipelineDescriptor
- extends GPUPipelineDescriptorBase {
- vertex: GPUVertexState;
- primitive?: GPUPrimitiveState;
- depthStencil?: GPUDepthStencilState;
- multisample?: GPUMultisampleState;
- fragment?: GPUFragmentState;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUPrimitiveState {
- topology?: GPUPrimitiveTopology;
- stripIndexFormat?: GPUIndexFormat;
- frontFace?: GPUFrontFace;
- cullMode?: GPUCullMode;
- unclippedDepth?: boolean;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUPrimitiveTopology =
- | "point-list"
- | "line-list"
- | "line-strip"
- | "triangle-list"
- | "triangle-strip";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUFrontFace = "ccw" | "cw";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUCullMode = "none" | "front" | "back";
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUMultisampleState {
- count?: number;
- mask?: number;
- alphaToCoverageEnabled?: boolean;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUFragmentState extends GPUProgrammableStage {
- targets: (GPUColorTargetState | null)[];
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUColorTargetState {
- format: GPUTextureFormat;
- blend?: GPUBlendState;
- writeMask?: GPUColorWriteFlags;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUBlendState {
- color: GPUBlendComponent;
- alpha: GPUBlendComponent;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUColorWriteFlags = number;
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUColorWrite {
- static RED: 0x1;
- static GREEN: 0x2;
- static BLUE: 0x4;
- static ALPHA: 0x8;
- static ALL: 0xF;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUBlendComponent {
- operation?: GPUBlendOperation;
- srcFactor?: GPUBlendFactor;
- dstFactor?: GPUBlendFactor;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUBlendFactor =
- | "zero"
- | "one"
- | "src"
- | "one-minus-src"
- | "src-alpha"
- | "one-minus-src-alpha"
- | "dst"
- | "one-minus-dst"
- | "dst-alpha"
- | "one-minus-dst-alpha"
- | "src-alpha-saturated"
- | "constant"
- | "one-minus-constant";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUBlendOperation =
- | "add"
- | "subtract"
- | "reverse-subtract"
- | "min"
- | "max";
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUDepthStencilState {
- format: GPUTextureFormat;
- depthWriteEnabled: boolean;
- depthCompare: GPUCompareFunction;
- stencilFront?: GPUStencilFaceState;
- stencilBack?: GPUStencilFaceState;
- stencilReadMask?: number;
- stencilWriteMask?: number;
- depthBias?: number;
- depthBiasSlopeScale?: number;
- depthBiasClamp?: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUStencilFaceState {
- compare?: GPUCompareFunction;
- failOp?: GPUStencilOperation;
- depthFailOp?: GPUStencilOperation;
- passOp?: GPUStencilOperation;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUStencilOperation =
- | "keep"
- | "zero"
- | "replace"
- | "invert"
- | "increment-clamp"
- | "decrement-clamp"
- | "increment-wrap"
- | "decrement-wrap";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUIndexFormat = "uint16" | "uint32";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUVertexFormat =
- | "uint8x2"
- | "uint8x4"
- | "sint8x2"
- | "sint8x4"
- | "unorm8x2"
- | "unorm8x4"
- | "snorm8x2"
- | "snorm8x4"
- | "uint16x2"
- | "uint16x4"
- | "sint16x2"
- | "sint16x4"
- | "unorm16x2"
- | "unorm16x4"
- | "snorm16x2"
- | "snorm16x4"
- | "float16x2"
- | "float16x4"
- | "float32"
- | "float32x2"
- | "float32x3"
- | "float32x4"
- | "uint32"
- | "uint32x2"
- | "uint32x3"
- | "uint32x4"
- | "sint32"
- | "sint32x2"
- | "sint32x3"
- | "sint32x4"
- | "unorm10-10-10-2";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUVertexStepMode = "vertex" | "instance";
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUVertexState extends GPUProgrammableStage {
- buffers?: (GPUVertexBufferLayout | null)[];
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUVertexBufferLayout {
- arrayStride: number;
- stepMode?: GPUVertexStepMode;
- attributes: GPUVertexAttribute[];
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUVertexAttribute {
- format: GPUVertexFormat;
- offset: number;
- shaderLocation: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUImageDataLayout {
- offset?: number;
- bytesPerRow?: number;
- rowsPerImage?: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUCommandBuffer implements GPUObjectBase {
- label: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUCommandBufferDescriptor extends GPUObjectDescriptorBase {}
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUCommandEncoder implements GPUObjectBase {
- label: string;
- beginRenderPass(descriptor: GPURenderPassDescriptor): GPURenderPassEncoder;
- beginComputePass(
- descriptor?: GPUComputePassDescriptor,
- ): GPUComputePassEncoder;
- copyBufferToBuffer(
- source: GPUBuffer,
- sourceOffset: number,
- destination: GPUBuffer,
- destinationOffset: number,
- size: number,
- ): undefined;
- copyBufferToTexture(
- source: GPUImageCopyBuffer,
- destination: GPUImageCopyTexture,
- copySize: GPUExtent3D,
- ): undefined;
- copyTextureToBuffer(
- source: GPUImageCopyTexture,
- destination: GPUImageCopyBuffer,
- copySize: GPUExtent3D,
- ): undefined;
- copyTextureToTexture(
- source: GPUImageCopyTexture,
- destination: GPUImageCopyTexture,
- copySize: GPUExtent3D,
- ): undefined;
- clearBuffer(
- destination: GPUBuffer,
- destinationOffset?: number,
- size?: number,
- ): undefined;
- pushDebugGroup(groupLabel: string): undefined;
- popDebugGroup(): undefined;
- insertDebugMarker(markerLabel: string): undefined;
- writeTimestamp(querySet: GPUQuerySet, queryIndex: number): undefined;
- resolveQuerySet(
- querySet: GPUQuerySet,
- firstQuery: number,
- queryCount: number,
- destination: GPUBuffer,
- destinationOffset: number,
- ): undefined;
- finish(descriptor?: GPUCommandBufferDescriptor): GPUCommandBuffer;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUCommandEncoderDescriptor extends GPUObjectDescriptorBase {}
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUImageCopyBuffer extends GPUImageDataLayout {
- buffer: GPUBuffer;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUImageCopyTexture {
- texture: GPUTexture;
- mipLevel?: number;
- origin?: GPUOrigin3D;
- aspect?: GPUTextureAspect;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUProgrammablePassEncoder {
- setBindGroup(
- index: number,
- bindGroup: GPUBindGroup,
- dynamicOffsets?: number[],
- ): undefined;
- setBindGroup(
- index: number,
- bindGroup: GPUBindGroup,
- dynamicOffsetsData: Uint32Array,
- dynamicOffsetsDataStart: number,
- dynamicOffsetsDataLength: number,
- ): undefined;
- pushDebugGroup(groupLabel: string): undefined;
- popDebugGroup(): undefined;
- insertDebugMarker(markerLabel: string): undefined;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUComputePassEncoder
- implements GPUObjectBase, GPUProgrammablePassEncoder {
- label: string;
- setBindGroup(
- index: number,
- bindGroup: GPUBindGroup,
- dynamicOffsets?: number[],
- ): undefined;
- setBindGroup(
- index: number,
- bindGroup: GPUBindGroup,
- dynamicOffsetsData: Uint32Array,
- dynamicOffsetsDataStart: number,
- dynamicOffsetsDataLength: number,
- ): undefined;
- pushDebugGroup(groupLabel: string): undefined;
- popDebugGroup(): undefined;
- insertDebugMarker(markerLabel: string): undefined;
- setPipeline(pipeline: GPUComputePipeline): undefined;
- dispatchWorkgroups(x: number, y?: number, z?: number): undefined;
- dispatchWorkgroupsIndirect(
- indirectBuffer: GPUBuffer,
- indirectOffset: number,
- ): undefined;
- end(): undefined;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUComputePassTimestampWrites {
- querySet: GPUQuerySet;
- beginningOfPassWriteIndex?: number;
- endOfPassWriteIndex?: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUComputePassDescriptor extends GPUObjectDescriptorBase {
- timestampWrites?: GPUComputePassTimestampWrites;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPURenderEncoderBase {
- setPipeline(pipeline: GPURenderPipeline): undefined;
- setIndexBuffer(
- buffer: GPUBuffer,
- indexFormat: GPUIndexFormat,
- offset?: number,
- size?: number,
- ): undefined;
- setVertexBuffer(
- slot: number,
- buffer: GPUBuffer,
- offset?: number,
- size?: number,
- ): undefined;
- draw(
- vertexCount: number,
- instanceCount?: number,
- firstVertex?: number,
- firstInstance?: number,
- ): undefined;
- drawIndexed(
- indexCount: number,
- instanceCount?: number,
- firstIndex?: number,
- baseVertex?: number,
- firstInstance?: number,
- ): undefined;
- drawIndirect(indirectBuffer: GPUBuffer, indirectOffset: number): undefined;
- drawIndexedIndirect(
- indirectBuffer: GPUBuffer,
- indirectOffset: number,
- ): undefined;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPURenderPassEncoder
- implements GPUObjectBase, GPUProgrammablePassEncoder, GPURenderEncoderBase {
- label: string;
- setBindGroup(
- index: number,
- bindGroup: GPUBindGroup,
- dynamicOffsets?: number[],
- ): undefined;
- setBindGroup(
- index: number,
- bindGroup: GPUBindGroup,
- dynamicOffsetsData: Uint32Array,
- dynamicOffsetsDataStart: number,
- dynamicOffsetsDataLength: number,
- ): undefined;
- pushDebugGroup(groupLabel: string): undefined;
- popDebugGroup(): undefined;
- insertDebugMarker(markerLabel: string): undefined;
- setPipeline(pipeline: GPURenderPipeline): undefined;
- setIndexBuffer(
- buffer: GPUBuffer,
- indexFormat: GPUIndexFormat,
- offset?: number,
- size?: number,
- ): undefined;
- setVertexBuffer(
- slot: number,
- buffer: GPUBuffer,
- offset?: number,
- size?: number,
- ): undefined;
- draw(
- vertexCount: number,
- instanceCount?: number,
- firstVertex?: number,
- firstInstance?: number,
- ): undefined;
- drawIndexed(
- indexCount: number,
- instanceCount?: number,
- firstIndex?: number,
- baseVertex?: number,
- firstInstance?: number,
- ): undefined;
- drawIndirect(indirectBuffer: GPUBuffer, indirectOffset: number): undefined;
- drawIndexedIndirect(
- indirectBuffer: GPUBuffer,
- indirectOffset: number,
- ): undefined;
- setViewport(
- x: number,
- y: number,
- width: number,
- height: number,
- minDepth: number,
- maxDepth: number,
- ): undefined;
- setScissorRect(
- x: number,
- y: number,
- width: number,
- height: number,
- ): undefined;
- setBlendConstant(color: GPUColor): undefined;
- setStencilReference(reference: number): undefined;
- beginOcclusionQuery(queryIndex: number): undefined;
- endOcclusionQuery(): undefined;
- executeBundles(bundles: GPURenderBundle[]): undefined;
- end(): undefined;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPURenderPassTimestampWrites {
- querySet: GPUQuerySet;
- beginningOfPassWriteIndex?: number;
- endOfPassWriteIndex?: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPURenderPassDescriptor extends GPUObjectDescriptorBase {
- colorAttachments: (GPURenderPassColorAttachment | null)[];
- depthStencilAttachment?: GPURenderPassDepthStencilAttachment;
- occlusionQuerySet?: GPUQuerySet;
- timestampWrites?: GPURenderPassTimestampWrites;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPURenderPassColorAttachment {
- view: GPUTextureView;
- resolveTarget?: GPUTextureView;
- clearValue?: GPUColor;
- loadOp: GPULoadOp;
- storeOp: GPUStoreOp;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPURenderPassDepthStencilAttachment {
- view: GPUTextureView;
- depthClearValue?: number;
- depthLoadOp?: GPULoadOp;
- depthStoreOp?: GPUStoreOp;
- depthReadOnly?: boolean;
- stencilClearValue?: number;
- stencilLoadOp?: GPULoadOp;
- stencilStoreOp?: GPUStoreOp;
- stencilReadOnly?: boolean;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPULoadOp = "load" | "clear";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUStoreOp = "store" | "discard";
- /**
- * @category GPU
- * @experimental
- */
- declare class GPURenderBundle implements GPUObjectBase {
- label: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPURenderBundleDescriptor extends GPUObjectDescriptorBase {}
- /**
- * @category GPU
- * @experimental
- */
- declare class GPURenderBundleEncoder
- implements GPUObjectBase, GPUProgrammablePassEncoder, GPURenderEncoderBase {
- label: string;
- draw(
- vertexCount: number,
- instanceCount?: number,
- firstVertex?: number,
- firstInstance?: number,
- ): undefined;
- drawIndexed(
- indexCount: number,
- instanceCount?: number,
- firstIndex?: number,
- baseVertex?: number,
- firstInstance?: number,
- ): undefined;
- drawIndexedIndirect(
- indirectBuffer: GPUBuffer,
- indirectOffset: number,
- ): undefined;
- drawIndirect(indirectBuffer: GPUBuffer, indirectOffset: number): undefined;
- insertDebugMarker(markerLabel: string): undefined;
- popDebugGroup(): undefined;
- pushDebugGroup(groupLabel: string): undefined;
- setBindGroup(
- index: number,
- bindGroup: GPUBindGroup,
- dynamicOffsets?: number[],
- ): undefined;
- setBindGroup(
- index: number,
- bindGroup: GPUBindGroup,
- dynamicOffsetsData: Uint32Array,
- dynamicOffsetsDataStart: number,
- dynamicOffsetsDataLength: number,
- ): undefined;
- setIndexBuffer(
- buffer: GPUBuffer,
- indexFormat: GPUIndexFormat,
- offset?: number,
- size?: number,
- ): undefined;
- setPipeline(pipeline: GPURenderPipeline): undefined;
- setVertexBuffer(
- slot: number,
- buffer: GPUBuffer,
- offset?: number,
- size?: number,
- ): undefined;
- finish(descriptor?: GPURenderBundleDescriptor): GPURenderBundle;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPURenderPassLayout extends GPUObjectDescriptorBase {
- colorFormats: (GPUTextureFormat | null)[];
- depthStencilFormat?: GPUTextureFormat;
- sampleCount?: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPURenderBundleEncoderDescriptor extends GPURenderPassLayout {
- depthReadOnly?: boolean;
- stencilReadOnly?: boolean;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUQueue implements GPUObjectBase {
- label: string;
- submit(commandBuffers: GPUCommandBuffer[]): undefined;
- onSubmittedWorkDone(): Promise<undefined>;
- writeBuffer(
- buffer: GPUBuffer,
- bufferOffset: number,
- data: BufferSource,
- dataOffset?: number,
- size?: number,
- ): undefined;
- writeTexture(
- destination: GPUImageCopyTexture,
- data: BufferSource,
- dataLayout: GPUImageDataLayout,
- size: GPUExtent3D,
- ): undefined;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUQuerySet implements GPUObjectBase {
- label: string;
- destroy(): undefined;
- readonly type: GPUQueryType;
- readonly count: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUQuerySetDescriptor extends GPUObjectDescriptorBase {
- type: GPUQueryType;
- count: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUQueryType = "occlusion" | "timestamp";
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUDeviceLostReason = "destroyed";
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUDeviceLostInfo {
- readonly reason: GPUDeviceLostReason;
- readonly message: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUError {
- readonly message: string;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUOutOfMemoryError extends GPUError {
- constructor(message: string);
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUValidationError extends GPUError {
- constructor(message: string);
- }
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUInternalError extends GPUError {
- constructor(message: string);
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUErrorFilter = "out-of-memory" | "validation" | "internal";
- /**
- * @category GPU
- * @experimental
- */
- declare class GPUUncapturedErrorEvent extends Event {
- constructor(
- type: string,
- gpuUncapturedErrorEventInitDict: GPUUncapturedErrorEventInit,
- );
- readonly error: GPUError;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUUncapturedErrorEventInit extends EventInit {
- error: GPUError;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUColorDict {
- r: number;
- g: number;
- b: number;
- a: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUColor = number[] | GPUColorDict;
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUOrigin3DDict {
- x?: number;
- y?: number;
- z?: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUOrigin3D = number[] | GPUOrigin3DDict;
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUExtent3DDict {
- width: number;
- height?: number;
- depthOrArrayLayers?: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUExtent3D = number[] | GPUExtent3DDict;
- /**
- * @category GPU
- * @experimental
- */
- declare type GPUCanvasAlphaMode = "opaque" | "premultiplied";
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUCanvasConfiguration {
- device: GPUDevice;
- format: GPUTextureFormat;
- usage?: GPUTextureUsageFlags;
- viewFormats?: GPUTextureFormat[];
- colorSpace?: "srgb" | "display-p3";
- alphaMode?: GPUCanvasAlphaMode;
- width: number;
- height: number;
- }
- /**
- * @category GPU
- * @experimental
- */
- declare interface GPUCanvasContext {
- configure(configuration: GPUCanvasConfiguration): undefined;
- unconfigure(): undefined;
- getCurrentTexture(): GPUTexture;
- }
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- // deno-lint-ignore-file no-explicit-any no-var
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /** @category WebSockets */
- declare interface CloseEventInit extends EventInit {
- code?: number;
- reason?: string;
- wasClean?: boolean;
- }
- /** @category WebSockets */
- declare interface CloseEvent extends Event {
- /**
- * Returns the WebSocket connection close code provided by the server.
- */
- readonly code: number;
- /**
- * Returns the WebSocket connection close reason provided by the server.
- */
- readonly reason: string;
- /**
- * Returns true if the connection closed cleanly; false otherwise.
- */
- readonly wasClean: boolean;
- }
- /** @category WebSockets */
- declare var CloseEvent: {
- readonly prototype: CloseEvent;
- new (type: string, eventInitDict?: CloseEventInit): CloseEvent;
- };
- /** @category WebSockets */
- declare interface WebSocketEventMap {
- close: CloseEvent;
- error: Event;
- message: MessageEvent;
- open: Event;
- }
- /**
- * Provides the API for creating and managing a WebSocket connection to a
- * server, as well as for sending and receiving data on the connection.
- *
- * If you are looking to create a WebSocket server, please take a look at
- * `Deno.upgradeWebSocket()`.
- *
- * @tags allow-net
- * @category WebSockets
- */
- declare interface WebSocket extends EventTarget {
- /**
- * Returns a string that indicates how binary data from the WebSocket object is exposed to scripts:
- *
- * Can be set, to change how binary data is returned. The default is "blob".
- */
- binaryType: BinaryType;
- /**
- * Returns the number of bytes of application data (UTF-8 text and binary data) that have been queued using send() but not yet been transmitted to the network.
- *
- * If the WebSocket connection is closed, this attribute's value will only increase with each call to the send() method. (The number does not reset to zero once the connection closes.)
- */
- readonly bufferedAmount: number;
- /**
- * Returns the extensions selected by the server, if any.
- */
- readonly extensions: string;
- onclose: ((this: WebSocket, ev: CloseEvent) => any) | null;
- onerror: ((this: WebSocket, ev: Event | ErrorEvent) => any) | null;
- onmessage: ((this: WebSocket, ev: MessageEvent) => any) | null;
- onopen: ((this: WebSocket, ev: Event) => any) | null;
- /**
- * Returns the subprotocol selected by the server, if any. It can be used in conjunction with the array form of the constructor's second argument to perform subprotocol negotiation.
- */
- readonly protocol: string;
- /**
- * Returns the state of the WebSocket object's connection. It can have the values described below.
- */
- readonly readyState: number;
- /**
- * Returns the URL that was used to establish the WebSocket connection.
- */
- readonly url: string;
- /**
- * Closes the WebSocket connection, optionally using code as the WebSocket connection close code and reason as the WebSocket connection close reason.
- */
- close(code?: number, reason?: string): void;
- /**
- * Transmits data using the WebSocket connection. data can be a string, a Blob, an ArrayBuffer, or an ArrayBufferView.
- */
- send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
- readonly CLOSED: number;
- readonly CLOSING: number;
- readonly CONNECTING: number;
- readonly OPEN: number;
- addEventListener<K extends keyof WebSocketEventMap>(
- type: K,
- listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
- options?: boolean | AddEventListenerOptions,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | AddEventListenerOptions,
- ): void;
- removeEventListener<K extends keyof WebSocketEventMap>(
- type: K,
- listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
- options?: boolean | EventListenerOptions,
- ): void;
- removeEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | EventListenerOptions,
- ): void;
- }
- /** @category WebSockets */
- declare var WebSocket: {
- readonly prototype: WebSocket;
- new (url: string | URL, protocols?: string | string[]): WebSocket;
- readonly CLOSED: number;
- readonly CLOSING: number;
- readonly CONNECTING: number;
- readonly OPEN: number;
- };
- /** @category WebSockets */
- declare type BinaryType = "arraybuffer" | "blob";
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- // deno-lint-ignore-file no-explicit-any no-var
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /** This Web Storage API interface provides access to a particular domain's
- * session or local storage. It allows, for example, the addition, modification,
- * or deletion of stored data items.
- *
- * @category Storage
- */
- declare interface Storage {
- /**
- * Returns the number of key/value pairs currently present in the list associated with the object.
- */
- readonly length: number;
- /**
- * Empties the list associated with the object of all key/value pairs, if there are any.
- */
- clear(): void;
- /**
- * Returns the current value associated with the given key, or null if the given key does not exist in the list associated with the object.
- */
- getItem(key: string): string | null;
- /**
- * Returns the name of the nth key in the list, or null if n is greater than or equal to the number of key/value pairs in the object.
- */
- key(index: number): string | null;
- /**
- * Removes the key/value pair with the given key from the list associated with the object, if a key/value pair with the given key exists.
- */
- removeItem(key: string): void;
- /**
- * Sets the value of the pair identified by key to value, creating a new key/value pair if none existed for key previously.
- *
- * Throws a "QuotaExceededError" DOMException exception if the new value couldn't be set. (Setting could fail if, e.g., the user has disabled storage for the site, or if the quota has been exceeded.)
- */
- setItem(key: string, value: string): void;
- [name: string]: any;
- }
- /** @category Storage */
- declare var Storage: {
- readonly prototype: Storage;
- new (): never;
- };
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- // deno-lint-ignore-file no-var
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /** @category Canvas */
- declare type ColorSpaceConversion = "default" | "none";
- /** @category Canvas */
- declare type ImageOrientation = "flipY" | "from-image" | "none";
- /** @category Canvas */
- declare type PremultiplyAlpha = "default" | "none" | "premultiply";
- /** @category Canvas */
- declare type ResizeQuality = "high" | "low" | "medium" | "pixelated";
- /** @category Canvas */
- declare type ImageBitmapSource = Blob | ImageData;
- /** @category Canvas */
- declare interface ImageBitmapOptions {
- colorSpaceConversion?: ColorSpaceConversion;
- imageOrientation?: ImageOrientation;
- premultiplyAlpha?: PremultiplyAlpha;
- resizeHeight?: number;
- resizeQuality?: ResizeQuality;
- resizeWidth?: number;
- }
- /** @category Canvas */
- declare function createImageBitmap(
- image: ImageBitmapSource,
- options?: ImageBitmapOptions,
- ): Promise<ImageBitmap>;
- /** @category Canvas */
- declare function createImageBitmap(
- image: ImageBitmapSource,
- sx: number,
- sy: number,
- sw: number,
- sh: number,
- options?: ImageBitmapOptions,
- ): Promise<ImageBitmap>;
- /** @category Canvas */
- declare interface ImageBitmap {
- readonly height: number;
- readonly width: number;
- close(): void;
- }
- /** @category Canvas */
- declare var ImageBitmap: {
- prototype: ImageBitmap;
- new (): ImageBitmap;
- };
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- // deno-lint-ignore-file no-var
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /** @category Crypto */
- declare var crypto: Crypto;
- /** @category Crypto */
- declare interface Algorithm {
- name: string;
- }
- /** @category Crypto */
- declare interface KeyAlgorithm {
- name: string;
- }
- /** @category Crypto */
- declare type AlgorithmIdentifier = string | Algorithm;
- /** @category Crypto */
- declare type HashAlgorithmIdentifier = AlgorithmIdentifier;
- /** @category Crypto */
- declare type KeyType = "private" | "public" | "secret";
- /** @category Crypto */
- declare type KeyUsage =
- | "decrypt"
- | "deriveBits"
- | "deriveKey"
- | "encrypt"
- | "sign"
- | "unwrapKey"
- | "verify"
- | "wrapKey";
- /** @category Crypto */
- declare type KeyFormat = "jwk" | "pkcs8" | "raw" | "spki";
- /** @category Crypto */
- declare type NamedCurve = string;
- /** @category Crypto */
- declare interface RsaOtherPrimesInfo {
- d?: string;
- r?: string;
- t?: string;
- }
- /** @category Crypto */
- declare interface JsonWebKey {
- alg?: string;
- crv?: string;
- d?: string;
- dp?: string;
- dq?: string;
- e?: string;
- ext?: boolean;
- k?: string;
- key_ops?: string[];
- kty?: string;
- n?: string;
- oth?: RsaOtherPrimesInfo[];
- p?: string;
- q?: string;
- qi?: string;
- use?: string;
- x?: string;
- y?: string;
- }
- /** @category Crypto */
- declare interface AesCbcParams extends Algorithm {
- iv: BufferSource;
- }
- /** @category Crypto */
- declare interface AesGcmParams extends Algorithm {
- iv: BufferSource;
- additionalData?: BufferSource;
- tagLength?: number;
- }
- /** @category Crypto */
- declare interface AesCtrParams extends Algorithm {
- counter: BufferSource;
- length: number;
- }
- /** @category Crypto */
- declare interface HmacKeyGenParams extends Algorithm {
- hash: HashAlgorithmIdentifier;
- length?: number;
- }
- /** @category Crypto */
- declare interface EcKeyGenParams extends Algorithm {
- namedCurve: NamedCurve;
- }
- /** @category Crypto */
- declare interface EcKeyImportParams extends Algorithm {
- namedCurve: NamedCurve;
- }
- /** @category Crypto */
- declare interface EcdsaParams extends Algorithm {
- hash: HashAlgorithmIdentifier;
- }
- /** @category Crypto */
- declare interface RsaHashedImportParams extends Algorithm {
- hash: HashAlgorithmIdentifier;
- }
- /** @category Crypto */
- declare interface RsaHashedKeyGenParams extends RsaKeyGenParams {
- hash: HashAlgorithmIdentifier;
- }
- /** @category Crypto */
- declare interface RsaKeyGenParams extends Algorithm {
- modulusLength: number;
- publicExponent: Uint8Array;
- }
- /** @category Crypto */
- declare interface RsaPssParams extends Algorithm {
- saltLength: number;
- }
- /** @category Crypto */
- declare interface RsaOaepParams extends Algorithm {
- label?: Uint8Array;
- }
- /** @category Crypto */
- declare interface HmacImportParams extends Algorithm {
- hash: HashAlgorithmIdentifier;
- length?: number;
- }
- /** @category Crypto */
- declare interface EcKeyAlgorithm extends KeyAlgorithm {
- namedCurve: NamedCurve;
- }
- /** @category Crypto */
- declare interface HmacKeyAlgorithm extends KeyAlgorithm {
- hash: KeyAlgorithm;
- length: number;
- }
- /** @category Crypto */
- declare interface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm {
- hash: KeyAlgorithm;
- }
- /** @category Crypto */
- declare interface RsaKeyAlgorithm extends KeyAlgorithm {
- modulusLength: number;
- publicExponent: Uint8Array;
- }
- /** @category Crypto */
- declare interface HkdfParams extends Algorithm {
- hash: HashAlgorithmIdentifier;
- info: BufferSource;
- salt: BufferSource;
- }
- /** @category Crypto */
- declare interface Pbkdf2Params extends Algorithm {
- hash: HashAlgorithmIdentifier;
- iterations: number;
- salt: BufferSource;
- }
- /** @category Crypto */
- declare interface AesDerivedKeyParams extends Algorithm {
- length: number;
- }
- /** @category Crypto */
- declare interface EcdhKeyDeriveParams extends Algorithm {
- public: CryptoKey;
- }
- /** @category Crypto */
- declare interface AesKeyGenParams extends Algorithm {
- length: number;
- }
- /** @category Crypto */
- declare interface AesKeyAlgorithm extends KeyAlgorithm {
- length: number;
- }
- /** The CryptoKey dictionary of the Web Crypto API represents a cryptographic
- * key.
- *
- * @category Crypto
- */
- declare interface CryptoKey {
- readonly algorithm: KeyAlgorithm;
- readonly extractable: boolean;
- readonly type: KeyType;
- readonly usages: KeyUsage[];
- }
- /** @category Crypto */
- declare var CryptoKey: {
- readonly prototype: CryptoKey;
- new (): never;
- };
- /** The CryptoKeyPair dictionary of the Web Crypto API represents a key pair for
- * an asymmetric cryptography algorithm, also known as a public-key algorithm.
- *
- * @category Crypto
- */
- declare interface CryptoKeyPair {
- privateKey: CryptoKey;
- publicKey: CryptoKey;
- }
- /** @category Crypto */
- declare var CryptoKeyPair: {
- readonly prototype: CryptoKeyPair;
- new (): never;
- };
- /** This Web Crypto API interface provides a number of low-level cryptographic
- * functions. It is accessed via the Crypto.subtle properties available in a
- * window context (via Window.crypto).
- *
- * @category Crypto
- */
- declare interface SubtleCrypto {
- generateKey(
- algorithm: RsaHashedKeyGenParams | EcKeyGenParams,
- extractable: boolean,
- keyUsages: KeyUsage[],
- ): Promise<CryptoKeyPair>;
- generateKey(
- algorithm: AesKeyGenParams | HmacKeyGenParams,
- extractable: boolean,
- keyUsages: KeyUsage[],
- ): Promise<CryptoKey>;
- generateKey(
- algorithm: AlgorithmIdentifier,
- extractable: boolean,
- keyUsages: KeyUsage[],
- ): Promise<CryptoKeyPair | CryptoKey>;
- importKey(
- format: "jwk",
- keyData: JsonWebKey,
- algorithm:
- | AlgorithmIdentifier
- | HmacImportParams
- | RsaHashedImportParams
- | EcKeyImportParams,
- extractable: boolean,
- keyUsages: KeyUsage[],
- ): Promise<CryptoKey>;
- importKey(
- format: Exclude<KeyFormat, "jwk">,
- keyData: BufferSource,
- algorithm:
- | AlgorithmIdentifier
- | HmacImportParams
- | RsaHashedImportParams
- | EcKeyImportParams,
- extractable: boolean,
- keyUsages: KeyUsage[],
- ): Promise<CryptoKey>;
- exportKey(format: "jwk", key: CryptoKey): Promise<JsonWebKey>;
- exportKey(
- format: Exclude<KeyFormat, "jwk">,
- key: CryptoKey,
- ): Promise<ArrayBuffer>;
- sign(
- algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams,
- key: CryptoKey,
- data: BufferSource,
- ): Promise<ArrayBuffer>;
- verify(
- algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams,
- key: CryptoKey,
- signature: BufferSource,
- data: BufferSource,
- ): Promise<boolean>;
- digest(
- algorithm: AlgorithmIdentifier,
- data: BufferSource,
- ): Promise<ArrayBuffer>;
- encrypt(
- algorithm:
- | AlgorithmIdentifier
- | RsaOaepParams
- | AesCbcParams
- | AesGcmParams
- | AesCtrParams,
- key: CryptoKey,
- data: BufferSource,
- ): Promise<ArrayBuffer>;
- decrypt(
- algorithm:
- | AlgorithmIdentifier
- | RsaOaepParams
- | AesCbcParams
- | AesGcmParams
- | AesCtrParams,
- key: CryptoKey,
- data: BufferSource,
- ): Promise<ArrayBuffer>;
- deriveBits(
- algorithm:
- | AlgorithmIdentifier
- | HkdfParams
- | Pbkdf2Params
- | EcdhKeyDeriveParams,
- baseKey: CryptoKey,
- length: number,
- ): Promise<ArrayBuffer>;
- deriveKey(
- algorithm:
- | AlgorithmIdentifier
- | HkdfParams
- | Pbkdf2Params
- | EcdhKeyDeriveParams,
- baseKey: CryptoKey,
- derivedKeyType:
- | AlgorithmIdentifier
- | AesDerivedKeyParams
- | HmacImportParams
- | HkdfParams
- | Pbkdf2Params,
- extractable: boolean,
- keyUsages: KeyUsage[],
- ): Promise<CryptoKey>;
- wrapKey(
- format: KeyFormat,
- key: CryptoKey,
- wrappingKey: CryptoKey,
- wrapAlgorithm:
- | AlgorithmIdentifier
- | RsaOaepParams
- | AesCbcParams
- | AesCtrParams,
- ): Promise<ArrayBuffer>;
- unwrapKey(
- format: KeyFormat,
- wrappedKey: BufferSource,
- unwrappingKey: CryptoKey,
- unwrapAlgorithm:
- | AlgorithmIdentifier
- | RsaOaepParams
- | AesCbcParams
- | AesCtrParams,
- unwrappedKeyAlgorithm:
- | AlgorithmIdentifier
- | HmacImportParams
- | RsaHashedImportParams
- | EcKeyImportParams,
- extractable: boolean,
- keyUsages: KeyUsage[],
- ): Promise<CryptoKey>;
- }
- /** @category Crypto */
- declare var SubtleCrypto: {
- readonly prototype: SubtleCrypto;
- new (): never;
- };
- /** @category Crypto */
- declare interface Crypto {
- readonly subtle: SubtleCrypto;
- getRandomValues<
- T extends
- | Int8Array
- | Int16Array
- | Int32Array
- | Uint8Array
- | Uint16Array
- | Uint32Array
- | Uint8ClampedArray
- | BigInt64Array
- | BigUint64Array,
- >(
- array: T,
- ): T;
- randomUUID(): `${string}-${string}-${string}-${string}-${string}`;
- }
- /** @category Crypto */
- declare var Crypto: {
- readonly prototype: Crypto;
- new (): never;
- };
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- // deno-lint-ignore-file no-explicit-any no-var
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /**
- * @category Messaging
- * @experimental
- */
- declare interface BroadcastChannelEventMap {
- "message": MessageEvent;
- "messageerror": MessageEvent;
- }
- /**
- * @category Messaging
- * @experimental
- */
- declare interface BroadcastChannel extends EventTarget {
- /**
- * Returns the channel name (as passed to the constructor).
- */
- readonly name: string;
- onmessage: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;
- onmessageerror: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;
- /**
- * Closes the BroadcastChannel object, opening it up to garbage collection.
- */
- close(): void;
- /**
- * Sends the given message to other BroadcastChannel objects set up for
- * this channel. Messages can be structured objects, e.g. nested objects
- * and arrays.
- */
- postMessage(message: any): void;
- addEventListener<K extends keyof BroadcastChannelEventMap>(
- type: K,
- listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any,
- options?: boolean | AddEventListenerOptions,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | AddEventListenerOptions,
- ): void;
- removeEventListener<K extends keyof BroadcastChannelEventMap>(
- type: K,
- listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any,
- options?: boolean | EventListenerOptions,
- ): void;
- removeEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | EventListenerOptions,
- ): void;
- }
- /**
- * @category Messaging
- * @experimental
- */
- declare var BroadcastChannel: {
- readonly prototype: BroadcastChannel;
- new (name: string): BroadcastChannel;
- };
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /// <reference lib="esnext.disposable" />
- declare namespace Deno {
- /** @category Network */
- export interface NetAddr {
- transport: "tcp" | "udp";
- hostname: string;
- port: number;
- }
- /** @category Network */
- export interface UnixAddr {
- transport: "unix" | "unixpacket";
- path: string;
- }
- /** @category Network */
- export type Addr = NetAddr | UnixAddr;
- /** A generic network listener for stream-oriented protocols.
- *
- * @category Network
- */
- export interface Listener<T extends Conn = Conn, A extends Addr = Addr>
- extends AsyncIterable<T>, Disposable {
- /** Waits for and resolves to the next connection to the `Listener`. */
- accept(): Promise<T>;
- /** Close closes the listener. Any pending accept promises will be rejected
- * with errors. */
- close(): void;
- /** Return the address of the `Listener`. */
- readonly addr: A;
- /**
- * Return the rid of the `Listener`.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- readonly rid: number;
- [Symbol.asyncIterator](): AsyncIterableIterator<T>;
- /**
- * Make the listener block the event loop from finishing.
- *
- * Note: the listener blocks the event loop from finishing by default.
- * This method is only meaningful after `.unref()` is called.
- */
- ref(): void;
- /** Make the listener not block the event loop from finishing. */
- unref(): void;
- }
- /** Specialized listener that accepts TLS connections.
- *
- * @category Network
- */
- export type TlsListener = Listener<TlsConn, NetAddr>;
- /** Specialized listener that accepts TCP connections.
- *
- * @category Network
- */
- export type TcpListener = Listener<TcpConn, NetAddr>;
- /** Specialized listener that accepts Unix connections.
- *
- * @category Network
- */
- export type UnixListener = Listener<UnixConn, UnixAddr>;
- /** @category Network */
- export interface Conn<A extends Addr = Addr>
- extends Reader, Writer, Closer, Disposable {
- /** The local address of the connection. */
- readonly localAddr: A;
- /** The remote address of the connection. */
- readonly remoteAddr: A;
- /**
- * The resource ID of the connection.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- readonly rid: number;
- /** Shuts down (`shutdown(2)`) the write side of the connection. Most
- * callers should just use `close()`. */
- closeWrite(): Promise<void>;
- /** Make the connection block the event loop from finishing.
- *
- * Note: the connection blocks the event loop from finishing by default.
- * This method is only meaningful after `.unref()` is called.
- */
- ref(): void;
- /** Make the connection not block the event loop from finishing. */
- unref(): void;
- readonly readable: ReadableStream<Uint8Array>;
- readonly writable: WritableStream<Uint8Array>;
- }
- /** @category Network */
- export interface TlsHandshakeInfo {
- /**
- * Contains the ALPN protocol selected during negotiation with the server.
- * If no ALPN protocol selected, returns `null`.
- */
- alpnProtocol: string | null;
- }
- /** @category Network */
- export interface TlsConn extends Conn<NetAddr> {
- /** Runs the client or server handshake protocol to completion if that has
- * not happened yet. Calling this method is optional; the TLS handshake
- * will be completed automatically as soon as data is sent or received. */
- handshake(): Promise<TlsHandshakeInfo>;
- /**
- * The resource ID of the connection.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- readonly rid: number;
- }
- /** @category Network */
- export interface ListenOptions {
- /** The port to listen on.
- *
- * Set to `0` to listen on any available port.
- */
- port: number;
- /** A literal IP address or host name that can be resolved to an IP address.
- *
- * __Note about `0.0.0.0`__ While listening `0.0.0.0` works on all platforms,
- * the browsers on Windows don't work with the address `0.0.0.0`.
- * You should show the message like `server running on localhost:8080` instead of
- * `server running on 0.0.0.0:8080` if your program supports Windows.
- *
- * @default {"0.0.0.0"} */
- hostname?: string;
- }
- /** @category Network */
- export interface TcpListenOptions extends ListenOptions {
- }
- /** Listen announces on the local transport address.
- *
- * ```ts
- * const listener1 = Deno.listen({ port: 80 })
- * const listener2 = Deno.listen({ hostname: "192.0.2.1", port: 80 })
- * const listener3 = Deno.listen({ hostname: "[2001:db8::1]", port: 80 });
- * const listener4 = Deno.listen({ hostname: "golang.org", port: 80, transport: "tcp" });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function listen(
- options: TcpListenOptions & { transport?: "tcp" },
- ): TcpListener;
- /** Options which can be set when opening a Unix listener via
- * {@linkcode Deno.listen} or {@linkcode Deno.listenDatagram}.
- *
- * @category Network
- */
- export interface UnixListenOptions {
- /** A path to the Unix Socket. */
- path: string;
- }
- /** Listen announces on the local transport address.
- *
- * ```ts
- * const listener = Deno.listen({ path: "/foo/bar.sock", transport: "unix" })
- * ```
- *
- * Requires `allow-read` and `allow-write` permission.
- *
- * @tags allow-read, allow-write
- * @category Network
- */
- // deno-lint-ignore adjacent-overload-signatures
- export function listen(
- options: UnixListenOptions & { transport: "unix" },
- ): UnixListener;
- /** Provides TLS certified keys, ie: a key that has been certified by a trusted certificate authority.
- * A certified key generally consists of a private key and certificate part.
- *
- * @category Network
- */
- export type TlsCertifiedKeyOptions =
- | TlsCertifiedKeyPem
- | TlsCertifiedKeyFromFile
- | TlsCertifiedKeyConnectTls;
- /**
- * Provides certified key material from strings. The key material is provided in
- * `PEM`-format (Privacy Enhanced Mail, https://www.rfc-editor.org/rfc/rfc1422) which can be identified by having
- * `-----BEGIN-----` and `-----END-----` markers at the beginning and end of the strings. This type of key is not compatible
- * with `DER`-format keys which are binary.
- *
- * Deno supports RSA, EC, and PKCS8-format keys.
- *
- * ```ts
- * const key = {
- * key: "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
- * cert: "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----\n" }
- * };
- * ```
- *
- * @category Network
- */
- export interface TlsCertifiedKeyPem {
- /** The format of this key material, which must be PEM. */
- keyFormat?: "pem";
- /** Private key in `PEM` format. RSA, EC, and PKCS8-format keys are supported. */
- key: string;
- /** Certificate chain in `PEM` format. */
- cert: string;
- }
- /**
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category Network
- */
- export interface TlsCertifiedKeyFromFile {
- /** Path to a file containing a PEM formatted CA certificate. Requires
- * `--allow-read`.
- *
- * @tags allow-read
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- certFile: string;
- /** Path to a file containing a private key file. Requires `--allow-read`.
- *
- * @tags allow-read
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- keyFile: string;
- }
- /**
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category Network
- */
- export interface TlsCertifiedKeyConnectTls {
- /**
- * Certificate chain in `PEM` format.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- certChain: string;
- /**
- * Private key in `PEM` format. RSA, EC, and PKCS8-format keys are supported.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- privateKey: string;
- }
- /** @category Network */
- export interface ListenTlsOptions extends TcpListenOptions {
- transport?: "tcp";
- /** Application-Layer Protocol Negotiation (ALPN) protocols to announce to
- * the client. If not specified, no ALPN extension will be included in the
- * TLS handshake.
- */
- alpnProtocols?: string[];
- }
- /** Listen announces on the local transport address over TLS (transport layer
- * security).
- *
- * ```ts
- * using listener = Deno.listenTls({
- * port: 443,
- * cert: Deno.readTextFileSync("./server.crt"),
- * key: Deno.readTextFileSync("./server.key"),
- * });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function listenTls(
- options: ListenTlsOptions & TlsCertifiedKeyOptions,
- ): TlsListener;
- /** @category Network */
- export interface ConnectOptions {
- /** The port to connect to. */
- port: number;
- /** A literal IP address or host name that can be resolved to an IP address.
- * If not specified,
- *
- * @default {"127.0.0.1"} */
- hostname?: string;
- transport?: "tcp";
- }
- /**
- * Connects to the hostname (default is "127.0.0.1") and port on the named
- * transport (default is "tcp"), and resolves to the connection (`Conn`).
- *
- * ```ts
- * const conn1 = await Deno.connect({ port: 80 });
- * const conn2 = await Deno.connect({ hostname: "192.0.2.1", port: 80 });
- * const conn3 = await Deno.connect({ hostname: "[2001:db8::1]", port: 80 });
- * const conn4 = await Deno.connect({ hostname: "golang.org", port: 80, transport: "tcp" });
- * ```
- *
- * Requires `allow-net` permission for "tcp".
- *
- * @tags allow-net
- * @category Network
- */
- export function connect(options: ConnectOptions): Promise<TcpConn>;
- /** @category Network */
- export interface TcpConn extends Conn<NetAddr> {
- /**
- * Enable/disable the use of Nagle's algorithm.
- *
- * @param [noDelay=true]
- */
- setNoDelay(noDelay?: boolean): void;
- /** Enable/disable keep-alive functionality. */
- setKeepAlive(keepAlive?: boolean): void;
- /**
- * The resource ID of the connection.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- readonly rid: number;
- }
- /** @category Network */
- export interface UnixConnectOptions {
- transport: "unix";
- path: string;
- }
- /** @category Network */
- export interface UnixConn extends Conn<UnixAddr> {
- /**
- * The resource ID of the connection.
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- readonly rid: number;
- }
- /** Connects to the hostname (default is "127.0.0.1") and port on the named
- * transport (default is "tcp"), and resolves to the connection (`Conn`).
- *
- * ```ts
- * const conn1 = await Deno.connect({ port: 80 });
- * const conn2 = await Deno.connect({ hostname: "192.0.2.1", port: 80 });
- * const conn3 = await Deno.connect({ hostname: "[2001:db8::1]", port: 80 });
- * const conn4 = await Deno.connect({ hostname: "golang.org", port: 80, transport: "tcp" });
- * const conn5 = await Deno.connect({ path: "/foo/bar.sock", transport: "unix" });
- * ```
- *
- * Requires `allow-net` permission for "tcp" and `allow-read` for "unix".
- *
- * @tags allow-net, allow-read
- * @category Network
- */
- // deno-lint-ignore adjacent-overload-signatures
- export function connect(options: UnixConnectOptions): Promise<UnixConn>;
- /** @category Network */
- export interface ConnectTlsOptions {
- /** The port to connect to. */
- port: number;
- /** A literal IP address or host name that can be resolved to an IP address.
- *
- * @default {"127.0.0.1"} */
- hostname?: string;
- /** Path to a file containing a PEM formatted list of root certificates that will
- * be used in addition to the default root certificates to verify the peer's certificate. Requires
- * `--allow-read`.
- *
- * @tags allow-read
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- */
- certFile?: string;
- /** A list of root certificates that will be used in addition to the
- * default root certificates to verify the peer's certificate.
- *
- * Must be in PEM format. */
- caCerts?: string[];
- /** Application-Layer Protocol Negotiation (ALPN) protocols supported by
- * the client. If not specified, no ALPN extension will be included in the
- * TLS handshake.
- */
- alpnProtocols?: string[];
- }
- /** Establishes a secure connection over TLS (transport layer security) using
- * an optional cert file, hostname (default is "127.0.0.1") and port. The
- * cert file is optional and if not included Mozilla's root certificates will
- * be used (see also https://github.com/ctz/webpki-roots for specifics)
- *
- * ```ts
- * const caCert = await Deno.readTextFile("./certs/my_custom_root_CA.pem");
- * const conn1 = await Deno.connectTls({ port: 80 });
- * const conn2 = await Deno.connectTls({ caCerts: [caCert], hostname: "192.0.2.1", port: 80 });
- * const conn3 = await Deno.connectTls({ hostname: "[2001:db8::1]", port: 80 });
- * const conn4 = await Deno.connectTls({ caCerts: [caCert], hostname: "golang.org", port: 80});
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function connectTls(options: ConnectTlsOptions): Promise<TlsConn>;
- /** Establishes a secure connection over TLS (transport layer security) using
- * an optional cert file, client certificate, hostname (default is "127.0.0.1") and
- * port. The cert file is optional and if not included Mozilla's root certificates will
- * be used (see also https://github.com/ctz/webpki-roots for specifics)
- *
- * ```ts
- * const caCert = await Deno.readTextFile("./certs/my_custom_root_CA.pem");
- * const key = "----BEGIN PRIVATE KEY----...";
- * const cert = "----BEGIN CERTIFICATE----...";
- * const conn1 = await Deno.connectTls({ port: 80, key, cert });
- * const conn2 = await Deno.connectTls({ caCerts: [caCert], hostname: "192.0.2.1", port: 80, key, cert });
- * const conn3 = await Deno.connectTls({ hostname: "[2001:db8::1]", port: 80, key, cert });
- * const conn4 = await Deno.connectTls({ caCerts: [caCert], hostname: "golang.org", port: 80, key, cert });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function connectTls(
- options: ConnectTlsOptions & TlsCertifiedKeyOptions,
- ): Promise<TlsConn>;
- /** @category Network */
- export interface StartTlsOptions {
- /** A literal IP address or host name that can be resolved to an IP address.
- *
- * @default {"127.0.0.1"} */
- hostname?: string;
- /** A list of root certificates that will be used in addition to the
- * default root certificates to verify the peer's certificate.
- *
- * Must be in PEM format. */
- caCerts?: string[];
- /** Application-Layer Protocol Negotiation (ALPN) protocols to announce to
- * the client. If not specified, no ALPN extension will be included in the
- * TLS handshake.
- */
- alpnProtocols?: string[];
- }
- /** Start TLS handshake from an existing connection using an optional list of
- * CA certificates, and hostname (default is "127.0.0.1"). Specifying CA certs
- * is optional. By default the configured root certificates are used. Using
- * this function requires that the other end of the connection is prepared for
- * a TLS handshake.
- *
- * Note that this function *consumes* the TCP connection passed to it, thus the
- * original TCP connection will be unusable after calling this. Additionally,
- * you need to ensure that the TCP connection is not being used elsewhere when
- * calling this function in order for the TCP connection to be consumed properly.
- * For instance, if there is a `Promise` that is waiting for read operation on
- * the TCP connection to complete, it is considered that the TCP connection is
- * being used elsewhere. In such a case, this function will fail.
- *
- * ```ts
- * const conn = await Deno.connect({ port: 80, hostname: "127.0.0.1" });
- * const caCert = await Deno.readTextFile("./certs/my_custom_root_CA.pem");
- * // `conn` becomes unusable after calling `Deno.startTls`
- * const tlsConn = await Deno.startTls(conn, { caCerts: [caCert], hostname: "localhost" });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- */
- export function startTls(
- conn: TcpConn,
- options?: StartTlsOptions,
- ): Promise<TlsConn>;
- /** Shutdown socket send operations.
- *
- * Matches behavior of POSIX shutdown(3).
- *
- * ```ts
- * const listener = Deno.listen({ port: 80 });
- * const conn = await listener.accept();
- * Deno.shutdown(conn.rid);
- * ```
- *
- * @deprecated This will be removed in Deno 2.0. See the
- * {@link https://docs.deno.com/runtime/manual/advanced/migrate_deprecations | Deno 1.x to 2.x Migration Guide}
- * for migration instructions.
- *
- * @category Network
- */
- export function shutdown(rid: number): Promise<void>;
- }
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- // Documentation partially adapted from [MDN](https://developer.mozilla.org/),
- // by Mozilla Contributors, which is licensed under CC-BY-SA 2.5.
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /// <reference lib="deno.console" />
- /// <reference lib="deno.url" />
- /// <reference lib="deno.web" />
- /// <reference lib="deno.webgpu" />
- /// <reference lib="deno.canvas" />
- /// <reference lib="deno.fetch" />
- /// <reference lib="deno.websocket" />
- /// <reference lib="deno.crypto" />
- /** @category WASM */
- declare namespace WebAssembly {
- /**
- * The `WebAssembly.CompileError` object indicates an error during WebAssembly decoding or validation.
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError)
- *
- * @category WASM
- */
- export class CompileError extends Error {
- /** Creates a new `WebAssembly.CompileError` object. */
- constructor(message?: string, options?: ErrorOptions);
- }
- /**
- * A `WebAssembly.Global` object represents a global variable instance, accessible from
- * both JavaScript and importable/exportable across one or more `WebAssembly.Module`
- * instances. This allows dynamic linking of multiple modules.
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global)
- *
- * @category WASM
- */
- export class Global {
- /** Creates a new `Global` object. */
- constructor(descriptor: GlobalDescriptor, v?: any);
- /**
- * The value contained inside the global variable — this can be used to directly set
- * and get the global's value.
- */
- value: any;
- /** Old-style method that returns the value contained inside the global variable. */
- valueOf(): any;
- }
- /**
- * A `WebAssembly.Instance` object is a stateful, executable instance of a `WebAssembly.Module`.
- * Instance objects contain all the Exported WebAssembly functions that allow calling into
- * WebAssembly code from JavaScript.
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance)
- *
- * @category WASM
- */
- export class Instance {
- /** Creates a new Instance object. */
- constructor(module: Module, importObject?: Imports);
- /**
- * Returns an object containing as its members all the functions exported from the
- * WebAssembly module instance, to allow them to be accessed and used by JavaScript.
- * Read-only.
- */
- readonly exports: Exports;
- }
- /**
- * The `WebAssembly.LinkError` object indicates an error during module instantiation
- * (besides traps from the start function).
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError)
- *
- * @category WASM
- */
- export class LinkError extends Error {
- /** Creates a new WebAssembly.LinkError object. */
- constructor(message?: string, options?: ErrorOptions);
- }
- /**
- * The `WebAssembly.Memory` object is a resizable `ArrayBuffer` or `SharedArrayBuffer` that
- * holds the raw bytes of memory accessed by a WebAssembly Instance.
- *
- * A memory created by JavaScript or in WebAssembly code will be accessible and mutable
- * from both JavaScript and WebAssembly.
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory)
- *
- * @category WASM
- */
- export class Memory {
- /** Creates a new `Memory` object. */
- constructor(descriptor: MemoryDescriptor);
- /** An accessor property that returns the buffer contained in the memory. */
- readonly buffer: ArrayBuffer | SharedArrayBuffer;
- /**
- * Increases the size of the memory instance by a specified number of WebAssembly
- * pages (each one is 64KB in size).
- */
- grow(delta: number): number;
- }
- /**
- * A `WebAssembly.Module` object contains stateless WebAssembly code that has already been compiled
- * by the browser — this can be efficiently shared with Workers, and instantiated multiple times.
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module)
- *
- * @category WASM
- */
- export class Module {
- /** Creates a new `Module` object. */
- constructor(bytes: BufferSource);
- /**
- * Given a `Module` and string, returns a copy of the contents of all custom sections in the
- * module with the given string name.
- */
- static customSections(
- moduleObject: Module,
- sectionName: string,
- ): ArrayBuffer[];
- /** Given a `Module`, returns an array containing descriptions of all the declared exports. */
- static exports(moduleObject: Module): ModuleExportDescriptor[];
- /** Given a `Module`, returns an array containing descriptions of all the declared imports. */
- static imports(moduleObject: Module): ModuleImportDescriptor[];
- }
- /**
- * The `WebAssembly.RuntimeError` object is the error type that is thrown whenever WebAssembly
- * specifies a trap.
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError)
- *
- * @category WASM
- */
- export class RuntimeError extends Error {
- /** Creates a new `WebAssembly.RuntimeError` object. */
- constructor(message?: string, options?: ErrorOptions);
- }
- /**
- * The `WebAssembly.Table()` object is a JavaScript wrapper object — an array-like structure
- * representing a WebAssembly Table, which stores function references. A table created by
- * JavaScript or in WebAssembly code will be accessible and mutable from both JavaScript
- * and WebAssembly.
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table)
- *
- * @category WASM
- */
- export class Table {
- /** Creates a new `Table` object. */
- constructor(descriptor: TableDescriptor);
- /** Returns the length of the table, i.e. the number of elements. */
- readonly length: number;
- /** Accessor function — gets the element stored at a given index. */
- get(index: number): Function | null;
- /** Increases the size of the `Table` instance by a specified number of elements. */
- grow(delta: number): number;
- /** Sets an element stored at a given index to a given value. */
- set(index: number, value: Function | null): void;
- }
- /** The `GlobalDescriptor` describes the options you can pass to
- * `new WebAssembly.Global()`.
- *
- * @category WASM
- */
- export interface GlobalDescriptor {
- mutable?: boolean;
- value: ValueType;
- }
- /** The `MemoryDescriptor` describes the options you can pass to
- * `new WebAssembly.Memory()`.
- *
- * @category WASM
- */
- export interface MemoryDescriptor {
- initial: number;
- maximum?: number;
- shared?: boolean;
- }
- /** A `ModuleExportDescriptor` is the description of a declared export in a
- * `WebAssembly.Module`.
- *
- * @category WASM
- */
- export interface ModuleExportDescriptor {
- kind: ImportExportKind;
- name: string;
- }
- /** A `ModuleImportDescriptor` is the description of a declared import in a
- * `WebAssembly.Module`.
- *
- * @category WASM
- */
- export interface ModuleImportDescriptor {
- kind: ImportExportKind;
- module: string;
- name: string;
- }
- /** The `TableDescriptor` describes the options you can pass to
- * `new WebAssembly.Table()`.
- *
- * @category WASM
- */
- export interface TableDescriptor {
- element: TableKind;
- initial: number;
- maximum?: number;
- }
- /** The value returned from `WebAssembly.instantiate`.
- *
- * @category WASM
- */
- export interface WebAssemblyInstantiatedSource {
- /* A `WebAssembly.Instance` object that contains all the exported WebAssembly functions. */
- instance: Instance;
- /**
- * A `WebAssembly.Module` object representing the compiled WebAssembly module.
- * This `Module` can be instantiated again, or shared via postMessage().
- */
- module: Module;
- }
- /** @category WASM */
- export type ImportExportKind = "function" | "global" | "memory" | "table";
- /** @category WASM */
- export type TableKind = "anyfunc";
- /** @category WASM */
- export type ValueType = "f32" | "f64" | "i32" | "i64";
- /** @category WASM */
- export type ExportValue = Function | Global | Memory | Table;
- /** @category WASM */
- export type Exports = Record<string, ExportValue>;
- /** @category WASM */
- export type ImportValue = ExportValue | number;
- /** @category WASM */
- export type ModuleImports = Record<string, ImportValue>;
- /** @category WASM */
- export type Imports = Record<string, ModuleImports>;
- /**
- * The `WebAssembly.compile()` function compiles WebAssembly binary code into a
- * `WebAssembly.Module` object. This function is useful if it is necessary to compile
- * a module before it can be instantiated (otherwise, the `WebAssembly.instantiate()`
- * function should be used).
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile)
- *
- * @category WASM
- */
- export function compile(bytes: BufferSource): Promise<Module>;
- /**
- * The `WebAssembly.compileStreaming()` function compiles a `WebAssembly.Module`
- * directly from a streamed underlying source. This function is useful if it is
- * necessary to a compile a module before it can be instantiated (otherwise, the
- * `WebAssembly.instantiateStreaming()` function should be used).
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming)
- *
- * @category WASM
- */
- export function compileStreaming(
- source: Response | Promise<Response>,
- ): Promise<Module>;
- /**
- * The WebAssembly.instantiate() function allows you to compile and instantiate
- * WebAssembly code.
- *
- * This overload takes the WebAssembly binary code, in the form of a typed
- * array or ArrayBuffer, and performs both compilation and instantiation in one step.
- * The returned Promise resolves to both a compiled WebAssembly.Module and its first
- * WebAssembly.Instance.
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate)
- *
- * @category WASM
- */
- export function instantiate(
- bytes: BufferSource,
- importObject?: Imports,
- ): Promise<WebAssemblyInstantiatedSource>;
- /**
- * The WebAssembly.instantiate() function allows you to compile and instantiate
- * WebAssembly code.
- *
- * This overload takes an already-compiled WebAssembly.Module and returns
- * a Promise that resolves to an Instance of that Module. This overload is useful
- * if the Module has already been compiled.
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate)
- *
- * @category WASM
- */
- export function instantiate(
- moduleObject: Module,
- importObject?: Imports,
- ): Promise<Instance>;
- /**
- * The `WebAssembly.instantiateStreaming()` function compiles and instantiates a
- * WebAssembly module directly from a streamed underlying source. This is the most
- * efficient, optimized way to load wasm code.
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming)
- *
- * @category WASM
- */
- export function instantiateStreaming(
- response: Response | PromiseLike<Response>,
- importObject?: Imports,
- ): Promise<WebAssemblyInstantiatedSource>;
- /**
- * The `WebAssembly.validate()` function validates a given typed array of
- * WebAssembly binary code, returning whether the bytes form a valid wasm
- * module (`true`) or not (`false`).
- *
- * [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/validate)
- *
- * @category WASM
- */
- export function validate(bytes: BufferSource): boolean;
- }
- /** Sets a timer which executes a function once after the delay (in milliseconds) elapses. Returns
- * an id which may be used to cancel the timeout.
- *
- * ```ts
- * setTimeout(() => { console.log('hello'); }, 500);
- * ```
- *
- * @category Platform
- */
- declare function setTimeout(
- /** callback function to execute when timer expires */
- cb: (...args: any[]) => void,
- /** delay in ms */
- delay?: number,
- /** arguments passed to callback function */
- ...args: any[]
- ): number;
- /** Repeatedly calls a function , with a fixed time delay between each call.
- *
- * ```ts
- * // Outputs 'hello' to the console every 500ms
- * setInterval(() => { console.log('hello'); }, 500);
- * ```
- *
- * @category Platform
- */
- declare function setInterval(
- /** callback function to execute when timer expires */
- cb: (...args: any[]) => void,
- /** delay in ms */
- delay?: number,
- /** arguments passed to callback function */
- ...args: any[]
- ): number;
- /** Cancels a timed, repeating action which was previously started by a call
- * to `setInterval()`
- *
- * ```ts
- * const id = setInterval(() => {console.log('hello');}, 500);
- * // ...
- * clearInterval(id);
- * ```
- *
- * @category Platform
- */
- declare function clearInterval(id?: number): void;
- /** Cancels a scheduled action initiated by `setTimeout()`
- *
- * ```ts
- * const id = setTimeout(() => {console.log('hello');}, 500);
- * // ...
- * clearTimeout(id);
- * ```
- *
- * @category Platform
- */
- declare function clearTimeout(id?: number): void;
- /** @category Platform */
- declare interface VoidFunction {
- (): void;
- }
- /** A microtask is a short function which is executed after the function or
- * module which created it exits and only if the JavaScript execution stack is
- * empty, but before returning control to the event loop being used to drive the
- * script's execution environment. This event loop may be either the main event
- * loop or the event loop driving a web worker.
- *
- * ```ts
- * queueMicrotask(() => { console.log('This event loop stack is complete'); });
- * ```
- *
- * @category Platform
- */
- declare function queueMicrotask(func: VoidFunction): void;
- /** Dispatches an event in the global scope, synchronously invoking any
- * registered event listeners for this event in the appropriate order. Returns
- * false if event is cancelable and at least one of the event handlers which
- * handled this event called Event.preventDefault(). Otherwise it returns true.
- *
- * ```ts
- * dispatchEvent(new Event('unload'));
- * ```
- *
- * @category Events
- */
- declare function dispatchEvent(event: Event): boolean;
- /** @category Platform */
- declare interface DOMStringList {
- /** Returns the number of strings in strings. */
- readonly length: number;
- /** Returns true if strings contains string, and false otherwise. */
- contains(string: string): boolean;
- /** Returns the string with index index from strings. */
- item(index: number): string | null;
- [index: number]: string;
- }
- /** @category Platform */
- declare type BufferSource = ArrayBufferView | ArrayBuffer;
- /** @category I/O */
- declare var console: Console;
- /** @category Events */
- declare interface ErrorEventInit extends EventInit {
- message?: string;
- filename?: string;
- lineno?: number;
- colno?: number;
- error?: any;
- }
- /** @category Events */
- declare interface ErrorEvent extends Event {
- readonly message: string;
- readonly filename: string;
- readonly lineno: number;
- readonly colno: number;
- readonly error: any;
- }
- /** @category Events */
- declare var ErrorEvent: {
- readonly prototype: ErrorEvent;
- new (type: string, eventInitDict?: ErrorEventInit): ErrorEvent;
- };
- /** @category Events */
- declare interface PromiseRejectionEventInit extends EventInit {
- promise: Promise<any>;
- reason?: any;
- }
- /** @category Events */
- declare interface PromiseRejectionEvent extends Event {
- readonly promise: Promise<any>;
- readonly reason: any;
- }
- /** @category Events */
- declare var PromiseRejectionEvent: {
- readonly prototype: PromiseRejectionEvent;
- new (
- type: string,
- eventInitDict?: PromiseRejectionEventInit,
- ): PromiseRejectionEvent;
- };
- /** @category Workers */
- declare interface AbstractWorkerEventMap {
- "error": ErrorEvent;
- }
- /** @category Workers */
- declare interface WorkerEventMap extends AbstractWorkerEventMap {
- "message": MessageEvent;
- "messageerror": MessageEvent;
- }
- /** @category Workers */
- declare interface WorkerOptions {
- type?: "classic" | "module";
- name?: string;
- }
- /** @category Workers */
- declare interface Worker extends EventTarget {
- onerror: (this: Worker, e: ErrorEvent) => any | null;
- onmessage: (this: Worker, e: MessageEvent) => any | null;
- onmessageerror: (this: Worker, e: MessageEvent) => any | null;
- postMessage(message: any, transfer: Transferable[]): void;
- postMessage(message: any, options?: StructuredSerializeOptions): void;
- addEventListener<K extends keyof WorkerEventMap>(
- type: K,
- listener: (this: Worker, ev: WorkerEventMap[K]) => any,
- options?: boolean | AddEventListenerOptions,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | AddEventListenerOptions,
- ): void;
- removeEventListener<K extends keyof WorkerEventMap>(
- type: K,
- listener: (this: Worker, ev: WorkerEventMap[K]) => any,
- options?: boolean | EventListenerOptions,
- ): void;
- removeEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | EventListenerOptions,
- ): void;
- terminate(): void;
- }
- /** @category Workers */
- declare var Worker: {
- readonly prototype: Worker;
- new (specifier: string | URL, options?: WorkerOptions): Worker;
- };
- /** @category Performance */
- declare type PerformanceEntryList = PerformanceEntry[];
- /** @category Performance */
- declare interface Performance extends EventTarget {
- /** Returns a timestamp representing the start of the performance measurement. */
- readonly timeOrigin: number;
- /** Removes the stored timestamp with the associated name. */
- clearMarks(markName?: string): void;
- /** Removes stored timestamp with the associated name. */
- clearMeasures(measureName?: string): void;
- getEntries(): PerformanceEntryList;
- getEntriesByName(name: string, type?: string): PerformanceEntryList;
- getEntriesByType(type: string): PerformanceEntryList;
- /** Stores a timestamp with the associated name (a "mark"). */
- mark(markName: string, options?: PerformanceMarkOptions): PerformanceMark;
- /** Stores the `DOMHighResTimeStamp` duration between two marks along with the
- * associated name (a "measure"). */
- measure(
- measureName: string,
- options?: PerformanceMeasureOptions,
- ): PerformanceMeasure;
- /** Stores the `DOMHighResTimeStamp` duration between two marks along with the
- * associated name (a "measure"). */
- measure(
- measureName: string,
- startMark?: string,
- endMark?: string,
- ): PerformanceMeasure;
- /** Returns a current time from Deno's start in milliseconds.
- *
- * Use the permission flag `--allow-hrtime` to return a precise value.
- *
- * ```ts
- * const t = performance.now();
- * console.log(`${t} ms since start!`);
- * ```
- *
- * @tags allow-hrtime
- */
- now(): number;
- /** Returns a JSON representation of the performance object. */
- toJSON(): any;
- }
- /** @category Performance */
- declare var Performance: {
- readonly prototype: Performance;
- new (): never;
- };
- /** @category Performance */
- declare var performance: Performance;
- /** @category Performance */
- declare interface PerformanceMarkOptions {
- /** Metadata to be included in the mark. */
- detail?: any;
- /** Timestamp to be used as the mark time. */
- startTime?: number;
- }
- /** @category Performance */
- declare interface PerformanceMeasureOptions {
- /** Metadata to be included in the measure. */
- detail?: any;
- /** Timestamp to be used as the start time or string to be used as start
- * mark. */
- start?: string | number;
- /** Duration between the start and end times. */
- duration?: number;
- /** Timestamp to be used as the end time or string to be used as end mark. */
- end?: string | number;
- }
- /** Encapsulates a single performance metric that is part of the performance
- * timeline. A performance entry can be directly created by making a performance
- * mark or measure (for example by calling the `.mark()` method) at an explicit
- * point in an application.
- *
- * @category Performance
- */
- declare interface PerformanceEntry {
- readonly duration: number;
- readonly entryType: string;
- readonly name: string;
- readonly startTime: number;
- toJSON(): any;
- }
- /** Encapsulates a single performance metric that is part of the performance
- * timeline. A performance entry can be directly created by making a performance
- * mark or measure (for example by calling the `.mark()` method) at an explicit
- * point in an application.
- *
- * @category Performance
- */
- declare var PerformanceEntry: {
- readonly prototype: PerformanceEntry;
- new (): never;
- };
- /** `PerformanceMark` is an abstract interface for `PerformanceEntry` objects
- * with an entryType of `"mark"`. Entries of this type are created by calling
- * `performance.mark()` to add a named `DOMHighResTimeStamp` (the mark) to the
- * performance timeline.
- *
- * @category Performance
- */
- declare interface PerformanceMark extends PerformanceEntry {
- readonly detail: any;
- readonly entryType: "mark";
- }
- /** `PerformanceMark` is an abstract interface for `PerformanceEntry` objects
- * with an entryType of `"mark"`. Entries of this type are created by calling
- * `performance.mark()` to add a named `DOMHighResTimeStamp` (the mark) to the
- * performance timeline.
- *
- * @category Performance
- */
- declare var PerformanceMark: {
- readonly prototype: PerformanceMark;
- new (name: string, options?: PerformanceMarkOptions): PerformanceMark;
- };
- /** `PerformanceMeasure` is an abstract interface for `PerformanceEntry` objects
- * with an entryType of `"measure"`. Entries of this type are created by calling
- * `performance.measure()` to add a named `DOMHighResTimeStamp` (the measure)
- * between two marks to the performance timeline.
- *
- * @category Performance
- */
- declare interface PerformanceMeasure extends PerformanceEntry {
- readonly detail: any;
- readonly entryType: "measure";
- }
- /** `PerformanceMeasure` is an abstract interface for `PerformanceEntry` objects
- * with an entryType of `"measure"`. Entries of this type are created by calling
- * `performance.measure()` to add a named `DOMHighResTimeStamp` (the measure)
- * between two marks to the performance timeline.
- *
- * @category Performance
- */
- declare var PerformanceMeasure: {
- readonly prototype: PerformanceMeasure;
- new (): never;
- };
- /** @category Events */
- declare interface CustomEventInit<T = any> extends EventInit {
- detail?: T;
- }
- /** @category Events */
- declare interface CustomEvent<T = any> extends Event {
- /** Returns any custom data event was created with. Typically used for
- * synthetic events. */
- readonly detail: T;
- }
- /** @category Events */
- declare var CustomEvent: {
- readonly prototype: CustomEvent;
- new <T>(typeArg: string, eventInitDict?: CustomEventInit<T>): CustomEvent<T>;
- };
- /** @category Platform */
- declare interface ErrorConstructor {
- /** See https://v8.dev/docs/stack-trace-api#stack-trace-collection-for-custom-exceptions. */
- captureStackTrace(error: Object, constructor?: Function): void;
- // TODO(nayeemrmn): Support `Error.prepareStackTrace()`. We currently use this
- // internally in a way that makes it unavailable for users.
- }
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- // deno-lint-ignore-file no-var
- /// <reference no-default-lib="true" />
- /// <reference lib="esnext" />
- /** @category Cache */
- declare var caches: CacheStorage;
- /** @category Cache */
- declare interface CacheStorage {
- /** Open a cache storage for the provided name. */
- open(cacheName: string): Promise<Cache>;
- /** Check if cache already exists for the provided name. */
- has(cacheName: string): Promise<boolean>;
- /** Delete cache storage for the provided name. */
- delete(cacheName: string): Promise<boolean>;
- }
- /** @category Cache */
- declare interface Cache {
- /**
- * Put the provided request/response into the cache.
- *
- * How is the API different from browsers?
- * 1. You cannot match cache objects using by relative paths.
- * 2. You cannot pass options like `ignoreVary`, `ignoreMethod`, `ignoreSearch`.
- */
- put(request: RequestInfo | URL, response: Response): Promise<void>;
- /**
- * Return cache object matching the provided request.
- *
- * How is the API different from browsers?
- * 1. You cannot match cache objects using by relative paths.
- * 2. You cannot pass options like `ignoreVary`, `ignoreMethod`, `ignoreSearch`.
- */
- match(
- request: RequestInfo | URL,
- options?: CacheQueryOptions,
- ): Promise<Response | undefined>;
- /**
- * Delete cache object matching the provided request.
- *
- * How is the API different from browsers?
- * 1. You cannot delete cache objects using by relative paths.
- * 2. You cannot pass options like `ignoreVary`, `ignoreMethod`, `ignoreSearch`.
- */
- delete(
- request: RequestInfo | URL,
- options?: CacheQueryOptions,
- ): Promise<boolean>;
- }
- /** @category Cache */
- declare var Cache: {
- readonly prototype: Cache;
- new (): never;
- };
- /** @category Cache */
- declare var CacheStorage: {
- readonly prototype: CacheStorage;
- new (): never;
- };
- /** @category Cache */
- declare interface CacheQueryOptions {
- ignoreMethod?: boolean;
- ignoreSearch?: boolean;
- ignoreVary?: boolean;
- }
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- /// <reference no-default-lib="true" />
- /// <reference lib="deno.ns" />
- /// <reference lib="deno.shared_globals" />
- /// <reference lib="deno.webstorage" />
- /// <reference lib="esnext" />
- /// <reference lib="deno.cache" />
- /** @category Platform */
- declare interface WindowEventMap {
- "error": ErrorEvent;
- "unhandledrejection": PromiseRejectionEvent;
- "rejectionhandled": PromiseRejectionEvent;
- }
- /** @category Platform */
- declare interface Window extends EventTarget {
- readonly window: Window & typeof globalThis;
- readonly self: Window & typeof globalThis;
- onerror: ((this: Window, ev: ErrorEvent) => any) | null;
- onload: ((this: Window, ev: Event) => any) | null;
- onbeforeunload: ((this: Window, ev: Event) => any) | null;
- onunload: ((this: Window, ev: Event) => any) | null;
- onunhandledrejection:
- | ((this: Window, ev: PromiseRejectionEvent) => any)
- | null;
- onrejectionhandled:
- | ((this: Window, ev: PromiseRejectionEvent) => any)
- | null;
- close: () => void;
- readonly closed: boolean;
- alert: (message?: string) => void;
- confirm: (message?: string) => boolean;
- prompt: (message?: string, defaultValue?: string) => string | null;
- Deno: typeof Deno;
- Navigator: typeof Navigator;
- navigator: Navigator;
- Location: typeof Location;
- location: Location;
- localStorage: Storage;
- sessionStorage: Storage;
- caches: CacheStorage;
- name: string;
- addEventListener<K extends keyof WindowEventMap>(
- type: K,
- listener: (
- this: Window,
- ev: WindowEventMap[K],
- ) => any,
- options?: boolean | AddEventListenerOptions,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | AddEventListenerOptions,
- ): void;
- removeEventListener<K extends keyof WindowEventMap>(
- type: K,
- listener: (
- this: Window,
- ev: WindowEventMap[K],
- ) => any,
- options?: boolean | EventListenerOptions,
- ): void;
- removeEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | EventListenerOptions,
- ): void;
- }
- /** @category Platform */
- declare var Window: {
- readonly prototype: Window;
- new (): never;
- };
- /** @category Platform */
- declare var window: Window & typeof globalThis;
- /** @category Platform */
- declare var self: Window & typeof globalThis;
- /** @category Platform */
- declare var closed: boolean;
- /** @category Platform */
- declare function close(): void;
- /** @category Events */
- declare var onerror: ((this: Window, ev: ErrorEvent) => any) | null;
- /** @category Events */
- declare var onload: ((this: Window, ev: Event) => any) | null;
- /** @category Events */
- declare var onbeforeunload: ((this: Window, ev: Event) => any) | null;
- /** @category Events */
- declare var onunload: ((this: Window, ev: Event) => any) | null;
- /** @category Events */
- declare var onunhandledrejection:
- | ((this: Window, ev: PromiseRejectionEvent) => any)
- | null;
- /** @category Storage */
- declare var localStorage: Storage;
- /** @category Storage */
- declare var sessionStorage: Storage;
- /** @category Cache */
- declare var caches: CacheStorage;
- /** @category Platform */
- declare interface Navigator {
- readonly gpu: GPU;
- readonly hardwareConcurrency: number;
- readonly userAgent: string;
- readonly language: string;
- readonly languages: string[];
- }
- /** @category Platform */
- declare var Navigator: {
- readonly prototype: Navigator;
- new (): never;
- };
- /** @category Platform */
- declare var navigator: Navigator;
- /**
- * Shows the given message and waits for the enter key pressed.
- *
- * If the stdin is not interactive, it does nothing.
- *
- * @category Platform
- *
- * @param message
- */
- declare function alert(message?: string): void;
- /**
- * Shows the given message and waits for the answer. Returns the user's answer as boolean.
- *
- * Only `y` and `Y` are considered as true.
- *
- * If the stdin is not interactive, it returns false.
- *
- * @category Platform
- *
- * @param message
- */
- declare function confirm(message?: string): boolean;
- /**
- * Shows the given message and waits for the user's input. Returns the user's input as string.
- *
- * If the default value is given and the user inputs the empty string, then it returns the given
- * default value.
- *
- * If the default value is not given and the user inputs the empty string, it returns the empty
- * string.
- *
- * If the stdin is not interactive, it returns null.
- *
- * @category Platform
- *
- * @param message
- * @param defaultValue
- */
- declare function prompt(message?: string, defaultValue?: string): string | null;
- /** Registers an event listener in the global scope, which will be called
- * synchronously whenever the event `type` is dispatched.
- *
- * ```ts
- * addEventListener('unload', () => { console.log('All finished!'); });
- * ...
- * dispatchEvent(new Event('unload'));
- * ```
- *
- * @category Events
- */
- declare function addEventListener<
- K extends keyof WindowEventMap,
- >(
- type: K,
- listener: (this: Window, ev: WindowEventMap[K]) => any,
- options?: boolean | AddEventListenerOptions,
- ): void;
- /** @category Events */
- declare function addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | AddEventListenerOptions,
- ): void;
- /** Remove a previously registered event listener from the global scope
- *
- * ```ts
- * const listener = () => { console.log('hello'); };
- * addEventListener('load', listener);
- * removeEventListener('load', listener);
- * ```
- *
- * @category Events
- */
- declare function removeEventListener<
- K extends keyof WindowEventMap,
- >(
- type: K,
- listener: (this: Window, ev: WindowEventMap[K]) => any,
- options?: boolean | EventListenerOptions,
- ): void;
- /** @category Events */
- declare function removeEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- options?: boolean | EventListenerOptions,
- ): void;
- // TODO(nayeemrmn): Move this to `extensions/web` where its implementation is.
- // The types there must first be split into window, worker and global types.
- /** The location (URL) of the object it is linked to. Changes done on it are
- * reflected on the object it relates to. Accessible via
- * `globalThis.location`.
- *
- * @category Platform
- */
- declare interface Location {
- /** Returns a DOMStringList object listing the origins of the ancestor
- * browsing contexts, from the parent browsing context to the top-level
- * browsing context.
- *
- * Always empty in Deno. */
- readonly ancestorOrigins: DOMStringList;
- /** Returns the Location object's URL's fragment (includes leading "#" if
- * non-empty).
- *
- * Cannot be set in Deno. */
- hash: string;
- /** Returns the Location object's URL's host and port (if different from the
- * default port for the scheme).
- *
- * Cannot be set in Deno. */
- host: string;
- /** Returns the Location object's URL's host.
- *
- * Cannot be set in Deno. */
- hostname: string;
- /** Returns the Location object's URL.
- *
- * Cannot be set in Deno. */
- href: string;
- toString(): string;
- /** Returns the Location object's URL's origin. */
- readonly origin: string;
- /** Returns the Location object's URL's path.
- *
- * Cannot be set in Deno. */
- pathname: string;
- /** Returns the Location object's URL's port.
- *
- * Cannot be set in Deno. */
- port: string;
- /** Returns the Location object's URL's scheme.
- *
- * Cannot be set in Deno. */
- protocol: string;
- /** Returns the Location object's URL's query (includes leading "?" if
- * non-empty).
- *
- * Cannot be set in Deno. */
- search: string;
- /** Navigates to the given URL.
- *
- * Cannot be set in Deno. */
- assign(url: string): void;
- /** Reloads the current page.
- *
- * Disabled in Deno. */
- reload(): void;
- /** @deprecated */
- reload(forcedReload: boolean): void;
- /** Removes the current page from the session history and navigates to the
- * given URL.
- *
- * Disabled in Deno. */
- replace(url: string): void;
- }
- // TODO(nayeemrmn): Move this to `extensions/web` where its implementation is.
- // The types there must first be split into window, worker and global types.
- /** The location (URL) of the object it is linked to. Changes done on it are
- * reflected on the object it relates to. Accessible via
- * `globalThis.location`.
- *
- * @category Platform
- */
- declare var Location: {
- readonly prototype: Location;
- new (): never;
- };
- // TODO(nayeemrmn): Move this to `extensions/web` where its implementation is.
- // The types there must first be split into window, worker and global types.
- /** @category Platform */
- declare var location: Location;
- /** @category Platform */
- declare var name: string;
- // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
- /// <reference no-default-lib="true" />
- /// <reference lib="deno.ns" />
- /// <reference lib="deno.broadcast_channel" />
- /// <reference lib="deno.webgpu" />
- /// <reference lib="esnext" />
- /// <reference lib="es2022.intl" />
- declare namespace Deno {
- export {}; // stop default export type behavior
- /** Information for a HTTP request.
- *
- * @category HTTP Server
- * @experimental
- */
- export interface ServeHandlerInfo {
- /** The remote address of the connection. */
- remoteAddr: Deno.NetAddr;
- /** The completion promise */
- completed: Promise<void>;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Retrieve the process umask. If `mask` is provided, sets the process umask.
- * This call always returns what the umask was before the call.
- *
- * ```ts
- * console.log(Deno.umask()); // e.g. 18 (0o022)
- * const prevUmaskValue = Deno.umask(0o077); // e.g. 18 (0o022)
- * console.log(Deno.umask()); // e.g. 63 (0o077)
- * ```
- *
- * This API is under consideration to determine if permissions are required to
- * call it.
- *
- * *Note*: This API is not implemented on Windows
- *
- * @category File System
- * @experimental
- */
- export function umask(mask?: number): number;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * All plain number types for interfacing with foreign functions.
- *
- * @category FFI
- * @experimental
- */
- export type NativeNumberType =
- | "u8"
- | "i8"
- | "u16"
- | "i16"
- | "u32"
- | "i32"
- | "f32"
- | "f64";
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * All BigInt number types for interfacing with foreign functions.
- *
- * @category FFI
- * @experimental
- */
- export type NativeBigIntType =
- | "u64"
- | "i64"
- | "usize"
- | "isize";
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * The native boolean type for interfacing to foreign functions.
- *
- * @category FFI
- * @experimental
- */
- export type NativeBooleanType = "bool";
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * The native pointer type for interfacing to foreign functions.
- *
- * @category FFI
- * @experimental
- */
- export type NativePointerType = "pointer";
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * The native buffer type for interfacing to foreign functions.
- *
- * @category FFI
- * @experimental
- */
- export type NativeBufferType = "buffer";
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * The native function type for interfacing with foreign functions.
- *
- * @category FFI
- * @experimental
- */
- export type NativeFunctionType = "function";
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * The native void type for interfacing with foreign functions.
- *
- * @category FFI
- * @experimental
- */
- export type NativeVoidType = "void";
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * The native struct type for interfacing with foreign functions.
- *
- * @category FFI
- * @experimental
- */
- export type NativeStructType = { readonly struct: readonly NativeType[] };
- /**
- * @category FFI
- * @experimental
- */
- export const brand: unique symbol;
- /**
- * @category FFI
- * @experimental
- */
- export type NativeU8Enum<T extends number> = "u8" & { [brand]: T };
- /**
- * @category FFI
- * @experimental
- */
- export type NativeI8Enum<T extends number> = "i8" & { [brand]: T };
- /**
- * @category FFI
- * @experimental
- */
- export type NativeU16Enum<T extends number> = "u16" & { [brand]: T };
- /**
- * @category FFI
- * @experimental
- */
- export type NativeI16Enum<T extends number> = "i16" & { [brand]: T };
- /**
- * @category FFI
- * @experimental
- */
- export type NativeU32Enum<T extends number> = "u32" & { [brand]: T };
- /**
- * @category FFI
- * @experimental
- */
- export type NativeI32Enum<T extends number> = "i32" & { [brand]: T };
- /**
- * @category FFI
- * @experimental
- */
- export type NativeTypedPointer<T extends PointerObject> = "pointer" & {
- [brand]: T;
- };
- /**
- * @category FFI
- * @experimental
- */
- export type NativeTypedFunction<T extends UnsafeCallbackDefinition> =
- & "function"
- & {
- [brand]: T;
- };
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * All supported types for interfacing with foreign functions.
- *
- * @category FFI
- * @experimental
- */
- export type NativeType =
- | NativeNumberType
- | NativeBigIntType
- | NativeBooleanType
- | NativePointerType
- | NativeBufferType
- | NativeFunctionType
- | NativeStructType;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @category FFI
- * @experimental
- */
- export type NativeResultType = NativeType | NativeVoidType;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Type conversion for foreign symbol parameters and unsafe callback return
- * types.
- *
- * @category FFI
- * @experimental
- */
- export type ToNativeType<T extends NativeType = NativeType> = T extends
- NativeStructType ? BufferSource
- : T extends NativeNumberType ? T extends NativeU8Enum<infer U> ? U
- : T extends NativeI8Enum<infer U> ? U
- : T extends NativeU16Enum<infer U> ? U
- : T extends NativeI16Enum<infer U> ? U
- : T extends NativeU32Enum<infer U> ? U
- : T extends NativeI32Enum<infer U> ? U
- : number
- : T extends NativeBigIntType ? bigint
- : T extends NativeBooleanType ? boolean
- : T extends NativePointerType
- ? T extends NativeTypedPointer<infer U> ? U | null : PointerValue
- : T extends NativeFunctionType
- ? T extends NativeTypedFunction<infer U> ? PointerValue<U> | null
- : PointerValue
- : T extends NativeBufferType ? BufferSource | null
- : never;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Type conversion for unsafe callback return types.
- *
- * @category FFI
- * @experimental
- */
- export type ToNativeResultType<
- T extends NativeResultType = NativeResultType,
- > = T extends NativeStructType ? BufferSource
- : T extends NativeNumberType ? T extends NativeU8Enum<infer U> ? U
- : T extends NativeI8Enum<infer U> ? U
- : T extends NativeU16Enum<infer U> ? U
- : T extends NativeI16Enum<infer U> ? U
- : T extends NativeU32Enum<infer U> ? U
- : T extends NativeI32Enum<infer U> ? U
- : number
- : T extends NativeBigIntType ? bigint
- : T extends NativeBooleanType ? boolean
- : T extends NativePointerType
- ? T extends NativeTypedPointer<infer U> ? U | null : PointerValue
- : T extends NativeFunctionType
- ? T extends NativeTypedFunction<infer U> ? PointerObject<U> | null
- : PointerValue
- : T extends NativeBufferType ? BufferSource | null
- : T extends NativeVoidType ? void
- : never;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A utility type for conversion of parameter types of foreign functions.
- *
- * @category FFI
- * @experimental
- */
- export type ToNativeParameterTypes<T extends readonly NativeType[]> =
- //
- [(T[number])[]] extends [T] ? ToNativeType<T[number]>[]
- : [readonly (T[number])[]] extends [T]
- ? readonly ToNativeType<T[number]>[]
- : T extends readonly [...NativeType[]] ? {
- [K in keyof T]: ToNativeType<T[K]>;
- }
- : never;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Type conversion for foreign symbol return types and unsafe callback
- * parameters.
- *
- * @category FFI
- * @experimental
- */
- export type FromNativeType<T extends NativeType = NativeType> = T extends
- NativeStructType ? Uint8Array
- : T extends NativeNumberType ? T extends NativeU8Enum<infer U> ? U
- : T extends NativeI8Enum<infer U> ? U
- : T extends NativeU16Enum<infer U> ? U
- : T extends NativeI16Enum<infer U> ? U
- : T extends NativeU32Enum<infer U> ? U
- : T extends NativeI32Enum<infer U> ? U
- : number
- : T extends NativeBigIntType ? bigint
- : T extends NativeBooleanType ? boolean
- : T extends NativePointerType
- ? T extends NativeTypedPointer<infer U> ? U | null : PointerValue
- : T extends NativeBufferType ? PointerValue
- : T extends NativeFunctionType
- ? T extends NativeTypedFunction<infer U> ? PointerObject<U> | null
- : PointerValue
- : never;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Type conversion for foreign symbol return types.
- *
- * @category FFI
- * @experimental
- */
- export type FromNativeResultType<
- T extends NativeResultType = NativeResultType,
- > = T extends NativeStructType ? Uint8Array
- : T extends NativeNumberType ? T extends NativeU8Enum<infer U> ? U
- : T extends NativeI8Enum<infer U> ? U
- : T extends NativeU16Enum<infer U> ? U
- : T extends NativeI16Enum<infer U> ? U
- : T extends NativeU32Enum<infer U> ? U
- : T extends NativeI32Enum<infer U> ? U
- : number
- : T extends NativeBigIntType ? bigint
- : T extends NativeBooleanType ? boolean
- : T extends NativePointerType
- ? T extends NativeTypedPointer<infer U> ? U | null : PointerValue
- : T extends NativeBufferType ? PointerValue
- : T extends NativeFunctionType
- ? T extends NativeTypedFunction<infer U> ? PointerObject<U> | null
- : PointerValue
- : T extends NativeVoidType ? void
- : never;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @category FFI
- * @experimental
- */
- export type FromNativeParameterTypes<
- T extends readonly NativeType[],
- > =
- //
- [(T[number])[]] extends [T] ? FromNativeType<T[number]>[]
- : [readonly (T[number])[]] extends [T]
- ? readonly FromNativeType<T[number]>[]
- : T extends readonly [...NativeType[]] ? {
- [K in keyof T]: FromNativeType<T[K]>;
- }
- : never;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * The interface for a foreign function as defined by its parameter and result
- * types.
- *
- * @category FFI
- * @experimental
- */
- export interface ForeignFunction<
- Parameters extends readonly NativeType[] = readonly NativeType[],
- Result extends NativeResultType = NativeResultType,
- NonBlocking extends boolean = boolean,
- > {
- /** Name of the symbol.
- *
- * Defaults to the key name in symbols object. */
- name?: string;
- /** The parameters of the foreign function. */
- parameters: Parameters;
- /** The result (return value) of the foreign function. */
- result: Result;
- /** When `true`, function calls will run on a dedicated blocking thread and
- * will return a `Promise` resolving to the `result`. */
- nonblocking?: NonBlocking;
- /** When `true`, dlopen will not fail if the symbol is not found.
- * Instead, the symbol will be set to `null`.
- *
- * @default {false} */
- optional?: boolean;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @category FFI
- * @experimental
- */
- export interface ForeignStatic<Type extends NativeType = NativeType> {
- /** Name of the symbol, defaults to the key name in symbols object. */
- name?: string;
- /** The type of the foreign static value. */
- type: Type;
- /** When `true`, dlopen will not fail if the symbol is not found.
- * Instead, the symbol will be set to `null`.
- *
- * @default {false} */
- optional?: boolean;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A foreign library interface descriptor.
- *
- * @category FFI
- * @experimental
- */
- export interface ForeignLibraryInterface {
- [name: string]: ForeignFunction | ForeignStatic;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A utility type that infers a foreign symbol.
- *
- * @category FFI
- * @experimental
- */
- export type StaticForeignSymbol<T extends ForeignFunction | ForeignStatic> =
- T extends ForeignFunction ? FromForeignFunction<T>
- : T extends ForeignStatic ? FromNativeType<T["type"]>
- : never;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @category FFI
- * @experimental
- */
- export type FromForeignFunction<T extends ForeignFunction> =
- T["parameters"] extends readonly [] ? () => StaticForeignSymbolReturnType<T>
- : (
- ...args: ToNativeParameterTypes<T["parameters"]>
- ) => StaticForeignSymbolReturnType<T>;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @category FFI
- * @experimental
- */
- export type StaticForeignSymbolReturnType<T extends ForeignFunction> =
- ConditionalAsync<T["nonblocking"], FromNativeResultType<T["result"]>>;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @category FFI
- * @experimental
- */
- export type ConditionalAsync<IsAsync extends boolean | undefined, T> =
- IsAsync extends true ? Promise<T> : T;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A utility type that infers a foreign library interface.
- *
- * @category FFI
- * @experimental
- */
- export type StaticForeignLibraryInterface<T extends ForeignLibraryInterface> =
- {
- [K in keyof T]: T[K]["optional"] extends true
- ? StaticForeignSymbol<T[K]> | null
- : StaticForeignSymbol<T[K]>;
- };
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A non-null pointer, represented as an object
- * at runtime. The object's prototype is `null`
- * and cannot be changed. The object cannot be
- * assigned to either and is thus entirely read-only.
- *
- * To interact with memory through a pointer use the
- * {@linkcode UnsafePointerView} class. To create a
- * pointer from an address or the get the address of
- * a pointer use the static methods of the
- * {@linkcode UnsafePointer} class.
- *
- * @category FFI
- * @experimental
- */
- export type PointerObject<T = unknown> = { [brand]: T };
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Pointers are represented either with a {@linkcode PointerObject}
- * object or a `null` if the pointer is null.
- *
- * @category FFI
- * @experimental
- */
- export type PointerValue<T = unknown> = null | PointerObject<T>;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A collection of static functions for interacting with pointer objects.
- *
- * @category FFI
- * @experimental
- */
- export class UnsafePointer {
- /** Create a pointer from a numeric value. This one is <i>really</i> dangerous! */
- static create<T = unknown>(value: bigint): PointerValue<T>;
- /** Returns `true` if the two pointers point to the same address. */
- static equals<T = unknown>(a: PointerValue<T>, b: PointerValue<T>): boolean;
- /** Return the direct memory pointer to the typed array in memory. */
- static of<T = unknown>(
- value: Deno.UnsafeCallback | BufferSource,
- ): PointerValue<T>;
- /** Return a new pointer offset from the original by `offset` bytes. */
- static offset<T = unknown>(
- value: PointerObject,
- offset: number,
- ): PointerValue<T>;
- /** Get the numeric value of a pointer */
- static value(value: PointerValue): bigint;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * An unsafe pointer view to a memory location as specified by the `pointer`
- * value. The `UnsafePointerView` API follows the standard built in interface
- * {@linkcode DataView} for accessing the underlying types at an memory
- * location (numbers, strings and raw bytes).
- *
- * @category FFI
- * @experimental
- */
- export class UnsafePointerView {
- constructor(pointer: PointerObject);
- pointer: PointerObject;
- /** Gets a boolean at the specified byte offset from the pointer. */
- getBool(offset?: number): boolean;
- /** Gets an unsigned 8-bit integer at the specified byte offset from the
- * pointer. */
- getUint8(offset?: number): number;
- /** Gets a signed 8-bit integer at the specified byte offset from the
- * pointer. */
- getInt8(offset?: number): number;
- /** Gets an unsigned 16-bit integer at the specified byte offset from the
- * pointer. */
- getUint16(offset?: number): number;
- /** Gets a signed 16-bit integer at the specified byte offset from the
- * pointer. */
- getInt16(offset?: number): number;
- /** Gets an unsigned 32-bit integer at the specified byte offset from the
- * pointer. */
- getUint32(offset?: number): number;
- /** Gets a signed 32-bit integer at the specified byte offset from the
- * pointer. */
- getInt32(offset?: number): number;
- /** Gets an unsigned 64-bit integer at the specified byte offset from the
- * pointer. */
- getBigUint64(offset?: number): bigint;
- /** Gets a signed 64-bit integer at the specified byte offset from the
- * pointer. */
- getBigInt64(offset?: number): bigint;
- /** Gets a signed 32-bit float at the specified byte offset from the
- * pointer. */
- getFloat32(offset?: number): number;
- /** Gets a signed 64-bit float at the specified byte offset from the
- * pointer. */
- getFloat64(offset?: number): number;
- /** Gets a pointer at the specified byte offset from the pointer */
- getPointer<T = unknown>(offset?: number): PointerValue<T>;
- /** Gets a C string (`null` terminated string) at the specified byte offset
- * from the pointer. */
- getCString(offset?: number): string;
- /** Gets a C string (`null` terminated string) at the specified byte offset
- * from the specified pointer. */
- static getCString(
- pointer: PointerObject,
- offset?: number,
- ): string;
- /** Gets an `ArrayBuffer` of length `byteLength` at the specified byte
- * offset from the pointer. */
- getArrayBuffer(byteLength: number, offset?: number): ArrayBuffer;
- /** Gets an `ArrayBuffer` of length `byteLength` at the specified byte
- * offset from the specified pointer. */
- static getArrayBuffer(
- pointer: PointerObject,
- byteLength: number,
- offset?: number,
- ): ArrayBuffer;
- /** Copies the memory of the pointer into a typed array.
- *
- * Length is determined from the typed array's `byteLength`.
- *
- * Also takes optional byte offset from the pointer. */
- copyInto(destination: BufferSource, offset?: number): void;
- /** Copies the memory of the specified pointer into a typed array.
- *
- * Length is determined from the typed array's `byteLength`.
- *
- * Also takes optional byte offset from the pointer. */
- static copyInto(
- pointer: PointerObject,
- destination: BufferSource,
- offset?: number,
- ): void;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * An unsafe pointer to a function, for calling functions that are not present
- * as symbols.
- *
- * @category FFI
- * @experimental
- */
- export class UnsafeFnPointer<const Fn extends ForeignFunction> {
- /** The pointer to the function. */
- pointer: PointerObject<Fn>;
- /** The definition of the function. */
- definition: Fn;
- constructor(pointer: PointerObject<NoInfer<Fn>>, definition: Fn);
- /** @deprecated Properly type {@linkcode pointer} using {@linkcode NativeTypedFunction} or {@linkcode UnsafeCallbackDefinition} types. */
- constructor(pointer: PointerObject, definition: Fn);
- /** Call the foreign function. */
- call: FromForeignFunction<Fn>;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Definition of a unsafe callback function.
- *
- * @category FFI
- * @experimental
- */
- export interface UnsafeCallbackDefinition<
- Parameters extends readonly NativeType[] = readonly NativeType[],
- Result extends NativeResultType = NativeResultType,
- > {
- /** The parameters of the callbacks. */
- parameters: Parameters;
- /** The current result of the callback. */
- result: Result;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * An unsafe callback function.
- *
- * @category FFI
- * @experimental
- */
- export type UnsafeCallbackFunction<
- Parameters extends readonly NativeType[] = readonly NativeType[],
- Result extends NativeResultType = NativeResultType,
- > = Parameters extends readonly [] ? () => ToNativeResultType<Result> : (
- ...args: FromNativeParameterTypes<Parameters>
- ) => ToNativeResultType<Result>;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * An unsafe function pointer for passing JavaScript functions as C function
- * pointers to foreign function calls.
- *
- * The function pointer remains valid until the `close()` method is called.
- *
- * All `UnsafeCallback` are always thread safe in that they can be called from
- * foreign threads without crashing. However, they do not wake up the Deno event
- * loop by default.
- *
- * If a callback is to be called from foreign threads, use the `threadSafe()`
- * static constructor or explicitly call `ref()` to have the callback wake up
- * the Deno event loop when called from foreign threads. This also stops
- * Deno's process from exiting while the callback still exists and is not
- * unref'ed.
- *
- * Use `deref()` to then allow Deno's process to exit. Calling `deref()` on
- * a ref'ed callback does not stop it from waking up the Deno event loop when
- * called from foreign threads.
- *
- * @category FFI
- * @experimental
- */
- export class UnsafeCallback<
- const Definition extends UnsafeCallbackDefinition =
- UnsafeCallbackDefinition,
- > {
- constructor(
- definition: Definition,
- callback: UnsafeCallbackFunction<
- Definition["parameters"],
- Definition["result"]
- >,
- );
- /** The pointer to the unsafe callback. */
- readonly pointer: PointerObject<Definition>;
- /** The definition of the unsafe callback. */
- readonly definition: Definition;
- /** The callback function. */
- readonly callback: UnsafeCallbackFunction<
- Definition["parameters"],
- Definition["result"]
- >;
- /**
- * Creates an {@linkcode UnsafeCallback} and calls `ref()` once to allow it to
- * wake up the Deno event loop when called from foreign threads.
- *
- * This also stops Deno's process from exiting while the callback still
- * exists and is not unref'ed.
- */
- static threadSafe<
- Definition extends UnsafeCallbackDefinition = UnsafeCallbackDefinition,
- >(
- definition: Definition,
- callback: UnsafeCallbackFunction<
- Definition["parameters"],
- Definition["result"]
- >,
- ): UnsafeCallback<Definition>;
- /**
- * Increments the callback's reference counting and returns the new
- * reference count.
- *
- * After `ref()` has been called, the callback always wakes up the
- * Deno event loop when called from foreign threads.
- *
- * If the callback's reference count is non-zero, it keeps Deno's
- * process from exiting.
- */
- ref(): number;
- /**
- * Decrements the callback's reference counting and returns the new
- * reference count.
- *
- * Calling `unref()` does not stop a callback from waking up the Deno
- * event loop when called from foreign threads.
- *
- * If the callback's reference counter is zero, it no longer keeps
- * Deno's process from exiting.
- */
- unref(): number;
- /**
- * Removes the C function pointer associated with this instance.
- *
- * Continuing to use the instance or the C function pointer after closing
- * the `UnsafeCallback` will lead to errors and crashes.
- *
- * Calling this method sets the callback's reference counting to zero,
- * stops the callback from waking up the Deno event loop when called from
- * foreign threads and no longer keeps Deno's process from exiting.
- */
- close(): void;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A dynamic library resource. Use {@linkcode Deno.dlopen} to load a dynamic
- * library and return this interface.
- *
- * @category FFI
- * @experimental
- */
- export interface DynamicLibrary<S extends ForeignLibraryInterface> {
- /** All of the registered library along with functions for calling them. */
- symbols: StaticForeignLibraryInterface<S>;
- /** Removes the pointers associated with the library symbols.
- *
- * Continuing to use symbols that are part of the library will lead to
- * errors and crashes.
- *
- * Calling this method will also immediately set any references to zero and
- * will no longer keep Deno's process from exiting.
- */
- close(): void;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Opens an external dynamic library and registers symbols, making foreign
- * functions available to be called.
- *
- * Requires `allow-ffi` permission. Loading foreign dynamic libraries can in
- * theory bypass all of the sandbox permissions. While it is a separate
- * permission users should acknowledge in practice that is effectively the
- * same as running with the `allow-all` permission.
- *
- * @example Given a C library which exports a foreign function named `add()`
- *
- * ```ts
- * // Determine library extension based on
- * // your OS.
- * let libSuffix = "";
- * switch (Deno.build.os) {
- * case "windows":
- * libSuffix = "dll";
- * break;
- * case "darwin":
- * libSuffix = "dylib";
- * break;
- * default:
- * libSuffix = "so";
- * break;
- * }
- *
- * const libName = `./libadd.${libSuffix}`;
- * // Open library and define exported symbols
- * const dylib = Deno.dlopen(
- * libName,
- * {
- * "add": { parameters: ["isize", "isize"], result: "isize" },
- * } as const,
- * );
- *
- * // Call the symbol `add`
- * const result = dylib.symbols.add(35n, 34n); // 69n
- *
- * console.log(`Result from external addition of 35 and 34: ${result}`);
- * ```
- *
- * @tags allow-ffi
- * @category FFI
- * @experimental
- */
- export function dlopen<const S extends ForeignLibraryInterface>(
- filename: string | URL,
- symbols: S,
- ): DynamicLibrary<S>;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Creates a presentable WebGPU surface from given window and
- * display handles.
- *
- * The parameters correspond to the table below:
- *
- * | system | winHandle | displayHandle |
- * | ----------------- | ------------- | --------------- |
- * | "cocoa" (macOS) | `NSView*` | - |
- * | "win32" (Windows) | `HWND` | `HINSTANCE` |
- * | "x11" (Linux) | Xlib `Window` | Xlib `Display*` |
- * | "wayland" (Linux) | `wl_surface*` | `wl_display*` |
- *
- * @category GPU
- * @experimental
- */
- export class UnsafeWindowSurface {
- constructor(
- system: "cocoa" | "win32" | "x11" | "wayland",
- windowHandle: Deno.PointerValue<unknown>,
- displayHandle: Deno.PointerValue<unknown>,
- );
- getContext(context: "webgpu"): GPUCanvasContext;
- present(): void;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * These are unstable options which can be used with {@linkcode Deno.run}.
- *
- * @category Sub Process
- * @experimental
- */
- export interface UnstableRunOptions extends RunOptions {
- /** If `true`, clears the environment variables before executing the
- * sub-process.
- *
- * @default {false} */
- clearEnv?: boolean;
- /** For POSIX systems, sets the group ID for the sub process. */
- gid?: number;
- /** For POSIX systems, sets the user ID for the sub process. */
- uid?: number;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Spawns new subprocess. RunOptions must contain at a minimum the `opt.cmd`,
- * an array of program arguments, the first of which is the binary.
- *
- * ```ts
- * const p = Deno.run({
- * cmd: ["curl", "https://example.com"],
- * });
- * const status = await p.status();
- * ```
- *
- * Subprocess uses same working directory as parent process unless `opt.cwd`
- * is specified.
- *
- * Environmental variables from parent process can be cleared using `opt.clearEnv`.
- * Doesn't guarantee that only `opt.env` variables are present,
- * as the OS may set environmental variables for processes.
- *
- * Environmental variables for subprocess can be specified using `opt.env`
- * mapping.
- *
- * `opt.uid` sets the child process’s user ID. This translates to a setuid call
- * in the child process. Failure in the setuid call will cause the spawn to fail.
- *
- * `opt.gid` is similar to `opt.uid`, but sets the group ID of the child process.
- * This has the same semantics as the uid field.
- *
- * By default subprocess inherits stdio of parent process. To change
- * this this, `opt.stdin`, `opt.stdout`, and `opt.stderr` can be set
- * independently to a resource ID (_rid_) of an open file, `"inherit"`,
- * `"piped"`, or `"null"`:
- *
- * - _number_: the resource ID of an open file/resource. This allows you to
- * read or write to a file.
- * - `"inherit"`: The default if unspecified. The subprocess inherits from the
- * parent.
- * - `"piped"`: A new pipe should be arranged to connect the parent and child
- * sub-process.
- * - `"null"`: This stream will be ignored. This is the equivalent of attaching
- * the stream to `/dev/null`.
- *
- * Details of the spawned process are returned as an instance of
- * {@linkcode Deno.Process}.
- *
- * Requires `allow-run` permission.
- *
- * @tags allow-run
- * @category Sub Process
- * @experimental
- */
- export function run<T extends UnstableRunOptions = UnstableRunOptions>(
- opt: T,
- ): Process<T>;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A custom `HttpClient` for use with {@linkcode fetch} function. This is
- * designed to allow custom certificates or proxies to be used with `fetch()`.
- *
- * @example ```ts
- * const caCert = await Deno.readTextFile("./ca.pem");
- * const client = Deno.createHttpClient({ caCerts: [ caCert ] });
- * const req = await fetch("https://myserver.com", { client });
- * ```
- *
- * @category Fetch
- * @experimental
- */
- export interface HttpClient extends Disposable {
- /** Close the HTTP client. */
- close(): void;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * The options used when creating a {@linkcode Deno.HttpClient}.
- *
- * @category Fetch
- * @experimental
- */
- export interface CreateHttpClientOptions {
- /** A list of root certificates that will be used in addition to the
- * default root certificates to verify the peer's certificate.
- *
- * Must be in PEM format. */
- caCerts?: string[];
- /** A HTTP proxy to use for new connections. */
- proxy?: Proxy;
- /** Sets the maximum numer of idle connections per host allowed in the pool. */
- poolMaxIdlePerHost?: number;
- /** Set an optional timeout for idle sockets being kept-alive.
- * Set to false to disable the timeout. */
- poolIdleTimeout?: number | false;
- /**
- * Whether HTTP/1.1 is allowed or not.
- *
- * @default {true}
- */
- http1?: boolean;
- /** Whether HTTP/2 is allowed or not.
- *
- * @default {true}
- */
- http2?: boolean;
- /** Whether setting the host header is allowed or not.
- *
- * @default {false}
- */
- allowHost?: boolean;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * The definition of a proxy when specifying
- * {@linkcode Deno.CreateHttpClientOptions}.
- *
- * @category Fetch
- * @experimental
- */
- export interface Proxy {
- /** The string URL of the proxy server to use. */
- url: string;
- /** The basic auth credentials to be used against the proxy server. */
- basicAuth?: BasicAuth;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Basic authentication credentials to be used with a {@linkcode Deno.Proxy}
- * server when specifying {@linkcode Deno.CreateHttpClientOptions}.
- *
- * @category Fetch
- * @experimental
- */
- export interface BasicAuth {
- /** The username to be used against the proxy server. */
- username: string;
- /** The password to be used against the proxy server. */
- password: string;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Create a custom HttpClient to use with {@linkcode fetch}. This is an
- * extension of the web platform Fetch API which allows Deno to use custom
- * TLS certificates and connect via a proxy while using `fetch()`.
- *
- * @example ```ts
- * const caCert = await Deno.readTextFile("./ca.pem");
- * const client = Deno.createHttpClient({ caCerts: [ caCert ] });
- * const response = await fetch("https://myserver.com", { client });
- * ```
- *
- * @example ```ts
- * const client = Deno.createHttpClient({
- * proxy: { url: "http://myproxy.com:8080" }
- * });
- * const response = await fetch("https://myserver.com", { client });
- * ```
- *
- * @category Fetch
- * @experimental
- */
- export function createHttpClient(
- options: CreateHttpClientOptions,
- ): HttpClient;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Create a custom HttpClient to use with {@linkcode fetch}. This is an
- * extension of the web platform Fetch API which allows Deno to use custom
- * TLS certificates and connect via a proxy while using `fetch()`.
- *
- * @example ```ts
- * const caCert = await Deno.readTextFile("./ca.pem");
- * // Load a client key and certificate that we'll use to connect
- * const key = await Deno.readTextFile("./key.key");
- * const cert = await Deno.readTextFile("./cert.crt");
- * const client = Deno.createHttpClient({ caCerts: [ caCert ], key, cert });
- * const response = await fetch("https://myserver.com", { client });
- * ```
- *
- * @category Fetch
- * @experimental
- */
- export function createHttpClient(
- options: CreateHttpClientOptions & TlsCertifiedKeyOptions,
- ): HttpClient;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Represents membership of a IPv4 multicast group.
- *
- * @category Network
- * @experimental
- */
- export interface MulticastV4Membership {
- /** Leaves the multicast group. */
- leave: () => Promise<void>;
- /** Sets the multicast loopback option. If enabled, multicast packets will be looped back to the local socket. */
- setLoopback: (loopback: boolean) => Promise<void>;
- /** Sets the time-to-live of outgoing multicast packets for this socket. */
- setTTL: (ttl: number) => Promise<void>;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Represents membership of a IPv6 multicast group.
- *
- * @category Network
- * @experimental
- */
- export interface MulticastV6Membership {
- /** Leaves the multicast group. */
- leave: () => Promise<void>;
- /** Sets the multicast loopback option. If enabled, multicast packets will be looped back to the local socket. */
- setLoopback: (loopback: boolean) => Promise<void>;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A generic transport listener for message-oriented protocols.
- *
- * @category Network
- * @experimental
- */
- export interface DatagramConn extends AsyncIterable<[Uint8Array, Addr]> {
- /** Joins an IPv4 multicast group. */
- joinMulticastV4(
- address: string,
- networkInterface: string,
- ): Promise<MulticastV4Membership>;
- /** Joins an IPv6 multicast group. */
- joinMulticastV6(
- address: string,
- networkInterface: number,
- ): Promise<MulticastV6Membership>;
- /** Waits for and resolves to the next message to the instance.
- *
- * Messages are received in the format of a tuple containing the data array
- * and the address information.
- */
- receive(p?: Uint8Array): Promise<[Uint8Array, Addr]>;
- /** Sends a message to the target via the connection. The method resolves
- * with the number of bytes sent. */
- send(p: Uint8Array, addr: Addr): Promise<number>;
- /** Close closes the socket. Any pending message promises will be rejected
- * with errors. */
- close(): void;
- /** Return the address of the instance. */
- readonly addr: Addr;
- [Symbol.asyncIterator](): AsyncIterableIterator<[Uint8Array, Addr]>;
- }
- /**
- * @category Network
- * @experimental
- */
- export interface TcpListenOptions extends ListenOptions {
- /** When `true` the SO_REUSEPORT flag will be set on the listener. This
- * allows multiple processes to listen on the same address and port.
- *
- * On Linux this will cause the kernel to distribute incoming connections
- * across the different processes that are listening on the same address and
- * port.
- *
- * This flag is only supported on Linux. It is silently ignored on other
- * platforms.
- *
- * @default {false} */
- reusePort?: boolean;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Unstable options which can be set when opening a datagram listener via
- * {@linkcode Deno.listenDatagram}.
- *
- * @category Network
- * @experimental
- */
- export interface UdpListenOptions extends ListenOptions {
- /** When `true` the specified address will be reused, even if another
- * process has already bound a socket on it. This effectively steals the
- * socket from the listener.
- *
- * @default {false} */
- reuseAddress?: boolean;
- /** When `true`, sent multicast packets will be looped back to the local socket.
- *
- * @default {false} */
- loopback?: boolean;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Listen announces on the local transport address.
- *
- * ```ts
- * const listener1 = Deno.listenDatagram({
- * port: 80,
- * transport: "udp"
- * });
- * const listener2 = Deno.listenDatagram({
- * hostname: "golang.org",
- * port: 80,
- * transport: "udp"
- * });
- * ```
- *
- * Requires `allow-net` permission.
- *
- * @tags allow-net
- * @category Network
- * @experimental
- */
- export function listenDatagram(
- options: UdpListenOptions & { transport: "udp" },
- ): DatagramConn;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Listen announces on the local transport address.
- *
- * ```ts
- * const listener = Deno.listenDatagram({
- * path: "/foo/bar.sock",
- * transport: "unixpacket"
- * });
- * ```
- *
- * Requires `allow-read` and `allow-write` permission.
- *
- * @tags allow-read, allow-write
- * @category Network
- * @experimental
- */
- export function listenDatagram(
- options: UnixListenOptions & { transport: "unixpacket" },
- ): DatagramConn;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Acquire an advisory file-system lock for the provided file.
- *
- * @param [exclusive=false]
- * @category File System
- * @experimental
- */
- export function flock(rid: number, exclusive?: boolean): Promise<void>;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Acquire an advisory file-system lock synchronously for the provided file.
- *
- * @param [exclusive=false]
- * @category File System
- * @experimental
- */
- export function flockSync(rid: number, exclusive?: boolean): void;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Release an advisory file-system lock for the provided file.
- *
- * @category File System
- * @experimental
- */
- export function funlock(rid: number): Promise<void>;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Release an advisory file-system lock for the provided file synchronously.
- *
- * @category File System
- * @experimental
- */
- export function funlockSync(rid: number): void;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Open a new {@linkcode Deno.Kv} connection to persist data.
- *
- * When a path is provided, the database will be persisted to disk at that
- * path. Read and write access to the file is required.
- *
- * When no path is provided, the database will be opened in a default path for
- * the current script. This location is persistent across script runs and is
- * keyed on the origin storage key (the same key that is used to determine
- * `localStorage` persistence). More information about the origin storage key
- * can be found in the Deno Manual.
- *
- * @tags allow-read, allow-write
- * @category Cloud
- * @experimental
- */
- export function openKv(path?: string): Promise<Deno.Kv>;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * CronScheduleExpression is used as the type of `minute`, `hour`,
- * `dayOfMonth`, `month`, and `dayOfWeek` in {@linkcode CronSchedule}.
- * @category Cloud
- * @experimental
- */
- export type CronScheduleExpression = number | { exact: number | number[] } | {
- start?: number;
- end?: number;
- every?: number;
- };
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * CronSchedule is the interface used for JSON format
- * cron `schedule`.
- * @category Cloud
- * @experimental
- */
- export interface CronSchedule {
- minute?: CronScheduleExpression;
- hour?: CronScheduleExpression;
- dayOfMonth?: CronScheduleExpression;
- month?: CronScheduleExpression;
- dayOfWeek?: CronScheduleExpression;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Create a cron job that will periodically execute the provided handler
- * callback based on the specified schedule.
- *
- * ```ts
- * Deno.cron("sample cron", "20 * * * *", () => {
- * console.log("cron job executed");
- * });
- * ```
- *
- * ```ts
- * Deno.cron("sample cron", { hour: { every: 6 } }, () => {
- * console.log("cron job executed");
- * });
- * ```
- *
- * `schedule` can be a string in the Unix cron format or in JSON format
- * as specified by interface {@linkcode CronSchedule}, where time is specified
- * using UTC time zone.
- *
- * @category Cloud
- * @experimental
- */
- export function cron(
- name: string,
- schedule: string | CronSchedule,
- handler: () => Promise<void> | void,
- ): Promise<void>;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Create a cron job that will periodically execute the provided handler
- * callback based on the specified schedule.
- *
- * ```ts
- * Deno.cron("sample cron", "20 * * * *", {
- * backoffSchedule: [10, 20]
- * }, () => {
- * console.log("cron job executed");
- * });
- * ```
- *
- * `schedule` can be a string in the Unix cron format or in JSON format
- * as specified by interface {@linkcode CronSchedule}, where time is specified
- * using UTC time zone.
- *
- * `backoffSchedule` option can be used to specify the retry policy for failed
- * executions. Each element in the array represents the number of milliseconds
- * to wait before retrying the execution. For example, `[1000, 5000, 10000]`
- * means that a failed execution will be retried at most 3 times, with 1
- * second, 5 seconds, and 10 seconds delay between each retry.
- *
- * @category Cloud
- * @experimental
- */
- export function cron(
- name: string,
- schedule: string | CronSchedule,
- options: { backoffSchedule?: number[]; signal?: AbortSignal },
- handler: () => Promise<void> | void,
- ): Promise<void>;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A key to be persisted in a {@linkcode Deno.Kv}. A key is a sequence
- * of {@linkcode Deno.KvKeyPart}s.
- *
- * Keys are ordered lexicographically by their parts. The first part is the
- * most significant, and the last part is the least significant. The order of
- * the parts is determined by both the type and the value of the part. The
- * relative significance of the types can be found in documentation for the
- * {@linkcode Deno.KvKeyPart} type.
- *
- * Keys have a maximum size of 2048 bytes serialized. If the size of the key
- * exceeds this limit, an error will be thrown on the operation that this key
- * was passed to.
- *
- * @category Cloud
- * @experimental
- */
- export type KvKey = readonly KvKeyPart[];
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A single part of a {@linkcode Deno.KvKey}. Parts are ordered
- * lexicographically, first by their type, and within a given type by their
- * value.
- *
- * The ordering of types is as follows:
- *
- * 1. `Uint8Array`
- * 2. `string`
- * 3. `number`
- * 4. `bigint`
- * 5. `boolean`
- *
- * Within a given type, the ordering is as follows:
- *
- * - `Uint8Array` is ordered by the byte ordering of the array
- * - `string` is ordered by the byte ordering of the UTF-8 encoding of the
- * string
- * - `number` is ordered following this pattern: `-NaN`
- * < `-Infinity` < `-100.0` < `-1.0` < -`0.5` < `-0.0` < `0.0` < `0.5`
- * < `1.0` < `100.0` < `Infinity` < `NaN`
- * - `bigint` is ordered by mathematical ordering, with the largest negative
- * number being the least first value, and the largest positive number
- * being the last value
- * - `boolean` is ordered by `false` < `true`
- *
- * This means that the part `1.0` (a number) is ordered before the part `2.0`
- * (also a number), but is greater than the part `0n` (a bigint), because
- * `1.0` is a number and `0n` is a bigint, and type ordering has precedence
- * over the ordering of values within a type.
- *
- * @category Cloud
- * @experimental
- */
- export type KvKeyPart =
- | Uint8Array
- | string
- | number
- | bigint
- | boolean
- | symbol;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Consistency level of a KV operation.
- *
- * - `strong` - This operation must be strongly-consistent.
- * - `eventual` - Eventually-consistent behavior is allowed.
- *
- * @category Cloud
- * @experimental
- */
- export type KvConsistencyLevel = "strong" | "eventual";
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A selector that selects the range of data returned by a list operation on a
- * {@linkcode Deno.Kv}.
- *
- * The selector can either be a prefix selector or a range selector. A prefix
- * selector selects all keys that start with the given prefix (optionally
- * starting at a given key). A range selector selects all keys that are
- * lexicographically between the given start and end keys.
- *
- * @category Cloud
- * @experimental
- */
- export type KvListSelector =
- | { prefix: KvKey }
- | { prefix: KvKey; start: KvKey }
- | { prefix: KvKey; end: KvKey }
- | { start: KvKey; end: KvKey };
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A mutation to a key in a {@linkcode Deno.Kv}. A mutation is a
- * combination of a key, a value, and a type. The type determines how the
- * mutation is applied to the key.
- *
- * - `set` - Sets the value of the key to the given value, overwriting any
- * existing value. Optionally an `expireIn` option can be specified to
- * set a time-to-live (TTL) for the key. The TTL is specified in
- * milliseconds, and the key will be deleted from the database at earliest
- * after the specified number of milliseconds have elapsed. Once the
- * specified duration has passed, the key may still be visible for some
- * additional time. If the `expireIn` option is not specified, the key will
- * not expire.
- * - `delete` - Deletes the key from the database. The mutation is a no-op if
- * the key does not exist.
- * - `sum` - Adds the given value to the existing value of the key. Both the
- * value specified in the mutation, and any existing value must be of type
- * `Deno.KvU64`. If the key does not exist, the value is set to the given
- * value (summed with 0). If the result of the sum overflows an unsigned
- * 64-bit integer, the result is wrapped around.
- * - `max` - Sets the value of the key to the maximum of the existing value
- * and the given value. Both the value specified in the mutation, and any
- * existing value must be of type `Deno.KvU64`. If the key does not exist,
- * the value is set to the given value.
- * - `min` - Sets the value of the key to the minimum of the existing value
- * and the given value. Both the value specified in the mutation, and any
- * existing value must be of type `Deno.KvU64`. If the key does not exist,
- * the value is set to the given value.
- *
- * @category Cloud
- * @experimental
- */
- export type KvMutation =
- & { key: KvKey }
- & (
- | { type: "set"; value: unknown; expireIn?: number }
- | { type: "delete" }
- | { type: "sum"; value: KvU64 }
- | { type: "max"; value: KvU64 }
- | { type: "min"; value: KvU64 }
- );
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * An iterator over a range of data entries in a {@linkcode Deno.Kv}.
- *
- * The cursor getter returns the cursor that can be used to resume the
- * iteration from the current position in the future.
- *
- * @category Cloud
- * @experimental
- */
- export class KvListIterator<T> implements AsyncIterableIterator<KvEntry<T>> {
- /**
- * Returns the cursor of the current position in the iteration. This cursor
- * can be used to resume the iteration from the current position in the
- * future by passing it to the `cursor` option of the `list` method.
- */
- get cursor(): string;
- next(): Promise<IteratorResult<KvEntry<T>, undefined>>;
- [Symbol.asyncIterator](): AsyncIterableIterator<KvEntry<T>>;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A versioned pair of key and value in a {@linkcode Deno.Kv}.
- *
- * The `versionstamp` is a string that represents the current version of the
- * key-value pair. It can be used to perform atomic operations on the KV store
- * by passing it to the `check` method of a {@linkcode Deno.AtomicOperation}.
- *
- * @category Cloud
- * @experimental
- */
- export type KvEntry<T> = { key: KvKey; value: T; versionstamp: string };
- /**
- * **UNSTABLE**: New API, yet to be vetted.
- *
- * An optional versioned pair of key and value in a {@linkcode Deno.Kv}.
- *
- * This is the same as a {@linkcode KvEntry}, but the `value` and `versionstamp`
- * fields may be `null` if no value exists for the given key in the KV store.
- *
- * @category Cloud
- * @experimental
- */
- export type KvEntryMaybe<T> = KvEntry<T> | {
- key: KvKey;
- value: null;
- versionstamp: null;
- };
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Options for listing key-value pairs in a {@linkcode Deno.Kv}.
- *
- * @category Cloud
- * @experimental
- */
- export interface KvListOptions {
- /**
- * The maximum number of key-value pairs to return. If not specified, all
- * matching key-value pairs will be returned.
- */
- limit?: number;
- /**
- * The cursor to resume the iteration from. If not specified, the iteration
- * will start from the beginning.
- */
- cursor?: string;
- /**
- * Whether to reverse the order of the returned key-value pairs. If not
- * specified, the order will be ascending from the start of the range as per
- * the lexicographical ordering of the keys. If `true`, the order will be
- * descending from the end of the range.
- *
- * The default value is `false`.
- */
- reverse?: boolean;
- /**
- * The consistency level of the list operation. The default consistency
- * level is "strong". Some use cases can benefit from using a weaker
- * consistency level. For more information on consistency levels, see the
- * documentation for {@linkcode Deno.KvConsistencyLevel}.
- *
- * List operations are performed in batches (in sizes specified by the
- * `batchSize` option). The consistency level of the list operation is
- * applied to each batch individually. This means that while each batch is
- * guaranteed to be consistent within itself, the entire list operation may
- * not be consistent across batches because a mutation may be applied to a
- * key-value pair between batches, in a batch that has already been returned
- * by the list operation.
- */
- consistency?: KvConsistencyLevel;
- /**
- * The size of the batches in which the list operation is performed. Larger
- * or smaller batch sizes may positively or negatively affect the
- * performance of a list operation depending on the specific use case and
- * iteration behavior. Slow iterating queries may benefit from using a
- * smaller batch size for increased overall consistency, while fast
- * iterating queries may benefit from using a larger batch size for better
- * performance.
- *
- * The default batch size is equal to the `limit` option, or 100 if this is
- * unset. The maximum value for this option is 500. Larger values will be
- * clamped.
- */
- batchSize?: number;
- }
- /**
- * @category Cloud
- * @experimental
- */
- export interface KvCommitResult {
- ok: true;
- /** The versionstamp of the value committed to KV. */
- versionstamp: string;
- }
- /**
- * @category Cloud
- * @experimental
- */
- export interface KvCommitError {
- ok: false;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A check to perform as part of a {@linkcode Deno.AtomicOperation}. The check
- * will fail if the versionstamp for the key-value pair in the KV store does
- * not match the given versionstamp. A check with a `null` versionstamp checks
- * that the key-value pair does not currently exist in the KV store.
- *
- * @category Cloud
- * @experimental
- */
- export interface AtomicCheck {
- key: KvKey;
- versionstamp: string | null;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * An operation on a {@linkcode Deno.Kv} that can be performed
- * atomically. Atomic operations do not auto-commit, and must be committed
- * explicitly by calling the `commit` method.
- *
- * Atomic operations can be used to perform multiple mutations on the KV store
- * in a single atomic transaction. They can also be used to perform
- * conditional mutations by specifying one or more
- * {@linkcode Deno.AtomicCheck}s that ensure that a mutation is only performed
- * if the key-value pair in the KV has a specific versionstamp. If any of the
- * checks fail, the entire operation will fail and no mutations will be made.
- *
- * The ordering of mutations is guaranteed to be the same as the ordering of
- * the mutations specified in the operation. Checks are performed before any
- * mutations are performed. The ordering of checks is unobservable.
- *
- * Atomic operations can be used to implement optimistic locking, where a
- * mutation is only performed if the key-value pair in the KV store has not
- * been modified since the last read. This can be done by specifying a check
- * that ensures that the versionstamp of the key-value pair matches the
- * versionstamp that was read. If the check fails, the mutation will not be
- * performed and the operation will fail. One can then retry the read-modify-
- * write operation in a loop until it succeeds.
- *
- * The `commit` method of an atomic operation returns a value indicating
- * whether checks passed and mutations were performed. If the operation failed
- * because of a failed check, the return value will be a
- * {@linkcode Deno.KvCommitError} with an `ok: false` property. If the
- * operation failed for any other reason (storage error, invalid value, etc.),
- * an exception will be thrown. If the operation succeeded, the return value
- * will be a {@linkcode Deno.KvCommitResult} object with a `ok: true` property
- * and the versionstamp of the value committed to KV.
- *
- * @category Cloud
- * @experimental
- */
- export class AtomicOperation {
- /**
- * Add to the operation a check that ensures that the versionstamp of the
- * key-value pair in the KV store matches the given versionstamp. If the
- * check fails, the entire operation will fail and no mutations will be
- * performed during the commit.
- */
- check(...checks: AtomicCheck[]): this;
- /**
- * Add to the operation a mutation that performs the specified mutation on
- * the specified key if all checks pass during the commit. The types and
- * semantics of all available mutations are described in the documentation
- * for {@linkcode Deno.KvMutation}.
- */
- mutate(...mutations: KvMutation[]): this;
- /**
- * Shortcut for creating a `sum` mutation. This method wraps `n` in a
- * {@linkcode Deno.KvU64}, so the value of `n` must be in the range
- * `[0, 2^64-1]`.
- */
- sum(key: KvKey, n: bigint): this;
- /**
- * Shortcut for creating a `min` mutation. This method wraps `n` in a
- * {@linkcode Deno.KvU64}, so the value of `n` must be in the range
- * `[0, 2^64-1]`.
- */
- min(key: KvKey, n: bigint): this;
- /**
- * Shortcut for creating a `max` mutation. This method wraps `n` in a
- * {@linkcode Deno.KvU64}, so the value of `n` must be in the range
- * `[0, 2^64-1]`.
- */
- max(key: KvKey, n: bigint): this;
- /**
- * Add to the operation a mutation that sets the value of the specified key
- * to the specified value if all checks pass during the commit.
- *
- * Optionally an `expireIn` option can be specified to set a time-to-live
- * (TTL) for the key. The TTL is specified in milliseconds, and the key will
- * be deleted from the database at earliest after the specified number of
- * milliseconds have elapsed. Once the specified duration has passed, the
- * key may still be visible for some additional time. If the `expireIn`
- * option is not specified, the key will not expire.
- */
- set(key: KvKey, value: unknown, options?: { expireIn?: number }): this;
- /**
- * Add to the operation a mutation that deletes the specified key if all
- * checks pass during the commit.
- */
- delete(key: KvKey): this;
- /**
- * Add to the operation a mutation that enqueues a value into the queue
- * if all checks pass during the commit.
- */
- enqueue(
- value: unknown,
- options?: {
- delay?: number;
- keysIfUndelivered?: Deno.KvKey[];
- backoffSchedule?: number[];
- },
- ): this;
- /**
- * Commit the operation to the KV store. Returns a value indicating whether
- * checks passed and mutations were performed. If the operation failed
- * because of a failed check, the return value will be a {@linkcode
- * Deno.KvCommitError} with an `ok: false` property. If the operation failed
- * for any other reason (storage error, invalid value, etc.), an exception
- * will be thrown. If the operation succeeded, the return value will be a
- * {@linkcode Deno.KvCommitResult} object with a `ok: true` property and the
- * versionstamp of the value committed to KV.
- *
- * If the commit returns `ok: false`, one may create a new atomic operation
- * with updated checks and mutations and attempt to commit it again. See the
- * note on optimistic locking in the documentation for
- * {@linkcode Deno.AtomicOperation}.
- */
- commit(): Promise<KvCommitResult | KvCommitError>;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * A key-value database that can be used to store and retrieve data.
- *
- * Data is stored as key-value pairs, where the key is a {@linkcode Deno.KvKey}
- * and the value is an arbitrary structured-serializable JavaScript value.
- * Keys are ordered lexicographically as described in the documentation for
- * {@linkcode Deno.KvKey}. Keys are unique within a database, and the last
- * value set for a given key is the one that is returned when reading the
- * key. Keys can be deleted from the database, in which case they will no
- * longer be returned when reading keys.
- *
- * Values can be any structured-serializable JavaScript value (objects,
- * arrays, strings, numbers, etc.). The special value {@linkcode Deno.KvU64}
- * can be used to store 64-bit unsigned integers in the database. This special
- * value can not be nested within other objects or arrays. In addition to the
- * regular database mutation operations, the unsigned 64-bit integer value
- * also supports `sum`, `max`, and `min` mutations.
- *
- * Keys are versioned on write by assigning the key an ever-increasing
- * "versionstamp". The versionstamp represents the version of a key-value pair
- * in the database at some point in time, and can be used to perform
- * transactional operations on the database without requiring any locking.
- * This is enabled by atomic operations, which can have conditions that ensure
- * that the operation only succeeds if the versionstamp of the key-value pair
- * matches an expected versionstamp.
- *
- * Keys have a maximum length of 2048 bytes after serialization. Values have a
- * maximum length of 64 KiB after serialization. Serialization of both keys
- * and values is somewhat opaque, but one can usually assume that the
- * serialization of any value is about the same length as the resulting string
- * of a JSON serialization of that same value. If theses limits are exceeded,
- * an exception will be thrown.
- *
- * @category Cloud
- * @experimental
- */
- export class Kv implements Disposable {
- /**
- * Retrieve the value and versionstamp for the given key from the database
- * in the form of a {@linkcode Deno.KvEntryMaybe}. If no value exists for
- * the key, the returned entry will have a `null` value and versionstamp.
- *
- * ```ts
- * const db = await Deno.openKv();
- * const result = await db.get(["foo"]);
- * result.key; // ["foo"]
- * result.value; // "bar"
- * result.versionstamp; // "00000000000000010000"
- * ```
- *
- * The `consistency` option can be used to specify the consistency level
- * for the read operation. The default consistency level is "strong". Some
- * use cases can benefit from using a weaker consistency level. For more
- * information on consistency levels, see the documentation for
- * {@linkcode Deno.KvConsistencyLevel}.
- */
- get<T = unknown>(
- key: KvKey,
- options?: { consistency?: KvConsistencyLevel },
- ): Promise<KvEntryMaybe<T>>;
- /**
- * Retrieve multiple values and versionstamps from the database in the form
- * of an array of {@linkcode Deno.KvEntryMaybe} objects. The returned array
- * will have the same length as the `keys` array, and the entries will be in
- * the same order as the keys. If no value exists for a given key, the
- * returned entry will have a `null` value and versionstamp.
- *
- * ```ts
- * const db = await Deno.openKv();
- * const result = await db.getMany([["foo"], ["baz"]]);
- * result[0].key; // ["foo"]
- * result[0].value; // "bar"
- * result[0].versionstamp; // "00000000000000010000"
- * result[1].key; // ["baz"]
- * result[1].value; // null
- * result[1].versionstamp; // null
- * ```
- *
- * The `consistency` option can be used to specify the consistency level
- * for the read operation. The default consistency level is "strong". Some
- * use cases can benefit from using a weaker consistency level. For more
- * information on consistency levels, see the documentation for
- * {@linkcode Deno.KvConsistencyLevel}.
- */
- getMany<T extends readonly unknown[]>(
- keys: readonly [...{ [K in keyof T]: KvKey }],
- options?: { consistency?: KvConsistencyLevel },
- ): Promise<{ [K in keyof T]: KvEntryMaybe<T[K]> }>;
- /**
- * Set the value for the given key in the database. If a value already
- * exists for the key, it will be overwritten.
- *
- * ```ts
- * const db = await Deno.openKv();
- * await db.set(["foo"], "bar");
- * ```
- *
- * Optionally an `expireIn` option can be specified to set a time-to-live
- * (TTL) for the key. The TTL is specified in milliseconds, and the key will
- * be deleted from the database at earliest after the specified number of
- * milliseconds have elapsed. Once the specified duration has passed, the
- * key may still be visible for some additional time. If the `expireIn`
- * option is not specified, the key will not expire.
- */
- set(
- key: KvKey,
- value: unknown,
- options?: { expireIn?: number },
- ): Promise<KvCommitResult>;
- /**
- * Delete the value for the given key from the database. If no value exists
- * for the key, this operation is a no-op.
- *
- * ```ts
- * const db = await Deno.openKv();
- * await db.delete(["foo"]);
- * ```
- */
- delete(key: KvKey): Promise<void>;
- /**
- * Retrieve a list of keys in the database. The returned list is an
- * {@linkcode Deno.KvListIterator} which can be used to iterate over the
- * entries in the database.
- *
- * Each list operation must specify a selector which is used to specify the
- * range of keys to return. The selector can either be a prefix selector, or
- * a range selector:
- *
- * - A prefix selector selects all keys that start with the given prefix of
- * key parts. For example, the selector `["users"]` will select all keys
- * that start with the prefix `["users"]`, such as `["users", "alice"]`
- * and `["users", "bob"]`. Note that you can not partially match a key
- * part, so the selector `["users", "a"]` will not match the key
- * `["users", "alice"]`. A prefix selector may specify a `start` key that
- * is used to skip over keys that are lexicographically less than the
- * start key.
- * - A range selector selects all keys that are lexicographically between
- * the given start and end keys (including the start, and excluding the
- * end). For example, the selector `["users", "a"], ["users", "n"]` will
- * select all keys that start with the prefix `["users"]` and have a
- * second key part that is lexicographically between `a` and `n`, such as
- * `["users", "alice"]`, `["users", "bob"]`, and `["users", "mike"]`, but
- * not `["users", "noa"]` or `["users", "zoe"]`.
- *
- * ```ts
- * const db = await Deno.openKv();
- * const entries = db.list({ prefix: ["users"] });
- * for await (const entry of entries) {
- * entry.key; // ["users", "alice"]
- * entry.value; // { name: "Alice" }
- * entry.versionstamp; // "00000000000000010000"
- * }
- * ```
- *
- * The `options` argument can be used to specify additional options for the
- * list operation. See the documentation for {@linkcode Deno.KvListOptions}
- * for more information.
- */
- list<T = unknown>(
- selector: KvListSelector,
- options?: KvListOptions,
- ): KvListIterator<T>;
- /**
- * Add a value into the database queue to be delivered to the queue
- * listener via {@linkcode Deno.Kv.listenQueue}.
- *
- * ```ts
- * const db = await Deno.openKv();
- * await db.enqueue("bar");
- * ```
- *
- * The `delay` option can be used to specify the delay (in milliseconds)
- * of the value delivery. The default delay is 0, which means immediate
- * delivery.
- *
- * ```ts
- * const db = await Deno.openKv();
- * await db.enqueue("bar", { delay: 60000 });
- * ```
- *
- * The `keysIfUndelivered` option can be used to specify the keys to
- * be set if the value is not successfully delivered to the queue
- * listener after several attempts. The values are set to the value of
- * the queued message.
- *
- * The `backoffSchedule` option can be used to specify the retry policy for
- * failed message delivery. Each element in the array represents the number of
- * milliseconds to wait before retrying the delivery. For example,
- * `[1000, 5000, 10000]` means that a failed delivery will be retried
- * at most 3 times, with 1 second, 5 seconds, and 10 seconds delay
- * between each retry.
- *
- * ```ts
- * const db = await Deno.openKv();
- * await db.enqueue("bar", {
- * keysIfUndelivered: [["foo", "bar"]],
- * backoffSchedule: [1000, 5000, 10000],
- * });
- * ```
- */
- enqueue(
- value: unknown,
- options?: {
- delay?: number;
- keysIfUndelivered?: Deno.KvKey[];
- backoffSchedule?: number[];
- },
- ): Promise<KvCommitResult>;
- /**
- * Listen for queue values to be delivered from the database queue, which
- * were enqueued with {@linkcode Deno.Kv.enqueue}. The provided handler
- * callback is invoked on every dequeued value. A failed callback
- * invocation is automatically retried multiple times until it succeeds
- * or until the maximum number of retries is reached.
- *
- * ```ts
- * const db = await Deno.openKv();
- * db.listenQueue(async (msg: unknown) => {
- * await db.set(["foo"], msg);
- * });
- * ```
- */
- // deno-lint-ignore no-explicit-any
- listenQueue(handler: (value: any) => Promise<void> | void): Promise<void>;
- /**
- * Create a new {@linkcode Deno.AtomicOperation} object which can be used to
- * perform an atomic transaction on the database. This does not perform any
- * operations on the database - the atomic transaction must be committed
- * explicitly using the {@linkcode Deno.AtomicOperation.commit} method once
- * all checks and mutations have been added to the operation.
- */
- atomic(): AtomicOperation;
- /**
- * Watch for changes to the given keys in the database. The returned stream
- * is a {@linkcode ReadableStream} that emits a new value whenever any of
- * the watched keys change their versionstamp. The emitted value is an array
- * of {@linkcode Deno.KvEntryMaybe} objects, with the same length and order
- * as the `keys` array. If no value exists for a given key, the returned
- * entry will have a `null` value and versionstamp.
- *
- * The returned stream does not return every single intermediate state of
- * the watched keys, but rather only keeps you up to date with the latest
- * state of the keys. This means that if a key is modified multiple times
- * quickly, you may not receive a notification for every single change, but
- * rather only the latest state of the key.
- *
- * ```ts
- * const db = await Deno.openKv();
- *
- * const stream = db.watch([["foo"], ["bar"]]);
- * for await (const entries of stream) {
- * entries[0].key; // ["foo"]
- * entries[0].value; // "bar"
- * entries[0].versionstamp; // "00000000000000010000"
- * entries[1].key; // ["bar"]
- * entries[1].value; // null
- * entries[1].versionstamp; // null
- * }
- * ```
- *
- * The `options` argument can be used to specify additional options for the
- * watch operation. The `raw` option can be used to specify whether a new
- * value should be emitted whenever a mutation occurs on any of the watched
- * keys (even if the value of the key does not change, such as deleting a
- * deleted key), or only when entries have observably changed in some way.
- * When `raw: true` is used, it is possible for the stream to occasionally
- * emit values even if no mutations have occurred on any of the watched
- * keys. The default value for this option is `false`.
- */
- watch<T extends readonly unknown[]>(
- keys: readonly [...{ [K in keyof T]: KvKey }],
- options?: { raw?: boolean },
- ): ReadableStream<{ [K in keyof T]: KvEntryMaybe<T[K]> }>;
- /**
- * Close the database connection. This will prevent any further operations
- * from being performed on the database, and interrupt any in-flight
- * operations immediately.
- */
- close(): void;
- /**
- * Get a symbol that represents the versionstamp of the current atomic
- * operation. This symbol can be used as the last part of a key in
- * `.set()`, both directly on the `Kv` object and on an `AtomicOperation`
- * object created from this `Kv` instance.
- */
- commitVersionstamp(): symbol;
- [Symbol.dispose](): void;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Wrapper type for 64-bit unsigned integers for use as values in a
- * {@linkcode Deno.Kv}.
- *
- * @category Cloud
- * @experimental
- */
- export class KvU64 {
- /** Create a new `KvU64` instance from the given bigint value. If the value
- * is signed or greater than 64-bits, an error will be thrown. */
- constructor(value: bigint);
- /** The value of this unsigned 64-bit integer, represented as a bigint. */
- readonly value: bigint;
- }
- /**
- * A namespace containing runtime APIs available in Jupyter notebooks.
- *
- * When accessed outside of Jupyter notebook context an error will be thrown.
- *
- * @category Jupyter
- * @experimental
- */
- export namespace jupyter {
- /**
- * @category Jupyter
- * @experimental
- */
- export interface DisplayOptions {
- raw?: boolean;
- update?: boolean;
- display_id?: string;
- }
- /**
- * @category Jupyter
- * @experimental
- */
- export type VegaObject = {
- $schema: string;
- [key: string]: unknown;
- };
- /**
- * A collection of supported media types and data for Jupyter frontends.
- *
- * @category Jupyter
- * @experimental
- */
- export type MediaBundle = {
- "text/plain"?: string;
- "text/html"?: string;
- "image/svg+xml"?: string;
- "text/markdown"?: string;
- "application/javascript"?: string;
- // Images (per Jupyter spec) must be base64 encoded. We could _allow_
- // accepting Uint8Array or ArrayBuffer within `display` calls, however we still
- // must encode them for jupyter.
- "image/png"?: string; // WISH: Uint8Array | ArrayBuffer
- "image/jpeg"?: string; // WISH: Uint8Array | ArrayBuffer
- "image/gif"?: string; // WISH: Uint8Array | ArrayBuffer
- "application/pdf"?: string; // WISH: Uint8Array | ArrayBuffer
- // NOTE: all JSON types must be objects at the top level (no arrays, strings, or other primitives)
- "application/json"?: object;
- "application/geo+json"?: object;
- "application/vdom.v1+json"?: object;
- "application/vnd.plotly.v1+json"?: object;
- "application/vnd.vega.v5+json"?: VegaObject;
- "application/vnd.vegalite.v4+json"?: VegaObject;
- "application/vnd.vegalite.v5+json"?: VegaObject;
- // Must support a catch all for custom media types / mimetypes
- [key: string]: string | object | undefined;
- };
- /**
- * @category Jupyter
- * @experimental
- */
- export const $display: unique symbol;
- /**
- * @category Jupyter
- * @experimental
- */
- export type Displayable = {
- [$display]: () => MediaBundle | Promise<MediaBundle>;
- };
- /**
- * Display function for Jupyter Deno Kernel.
- * Mimics the behavior of IPython's `display(obj, raw=True)` function to allow
- * asynchronous displaying of objects in Jupyter.
- *
- * @param obj - The object to be displayed
- * @param options - Display options with a default { raw: true }
- * @category Jupyter
- * @experimental
- */
- export function display(obj: unknown, options?: DisplayOptions): void;
- /**
- * Show Markdown in Jupyter frontends with a tagged template function.
- *
- * Takes a template string and returns a displayable object for Jupyter frontends.
- *
- * @example
- * Create a Markdown view.
- *
- * ```typescript
- * const { md } = Deno.jupyter;
- * md`# Notebooks in TypeScript via Deno 
- *
- * * TypeScript ${Deno.version.typescript}
- * * V8 ${Deno.version.v8}
- * * Deno ${Deno.version.deno}
- *
- * Interactive compute with Jupyter _built into Deno_!
- * `
- * ```
- *
- * @category Jupyter
- * @experimental
- */
- export function md(
- strings: TemplateStringsArray,
- ...values: unknown[]
- ): Displayable;
- /**
- * Show HTML in Jupyter frontends with a tagged template function.
- *
- * Takes a template string and returns a displayable object for Jupyter frontends.
- *
- * @example
- * Create an HTML view.
- * ```typescript
- * const { html } = Deno.jupyter;
- * html`<h1>Hello, world!</h1>`
- * ```
- *
- * @category Jupyter
- * @experimental
- */
- export function html(
- strings: TemplateStringsArray,
- ...values: unknown[]
- ): Displayable;
- /**
- * SVG Tagged Template Function.
- *
- * Takes a template string and returns a displayable object for Jupyter frontends.
- *
- * Example usage:
- *
- * svg`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
- * <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
- * </svg>`
- *
- * @category Jupyter
- * @experimental
- */
- export function svg(
- strings: TemplateStringsArray,
- ...values: unknown[]
- ): Displayable;
- /**
- * Format an object for displaying in Deno
- *
- * @param obj - The object to be displayed
- * @returns MediaBundle
- *
- * @category Jupyter
- * @experimental
- */
- export function format(obj: unknown): MediaBundle;
- /**
- * Broadcast a message on IO pub channel.
- *
- * ```
- * await Deno.jupyter.broadcast("display_data", {
- * data: { "text/html": "<b>Processing.</b>" },
- * metadata: {},
- * transient: { display_id: "progress" }
- * });
- *
- * await new Promise((resolve) => setTimeout(resolve, 500));
- *
- * await Deno.jupyter.broadcast("update_display_data", {
- * data: { "text/html": "<b>Processing..</b>" },
- * metadata: {},
- * transient: { display_id: "progress" }
- * });
- * ```
- *
- * @category Jupyter
- * @experimental
- */
- export function broadcast(
- msgType: string,
- content: Record<string, unknown>,
- extra?: {
- metadata?: Record<string, unknown>;
- buffers?: Uint8Array[];
- },
- ): Promise<void>;
- }
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * The [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
- * which also supports setting a {@linkcode Deno.HttpClient} which provides a
- * way to connect via proxies and use custom TLS certificates.
- *
- * @tags allow-net, allow-read
- * @category Fetch
- * @experimental
- */
- declare function fetch(
- input: Request | URL | string,
- init?: RequestInit & { client: Deno.HttpClient },
- ): Promise<Response>;
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @category Workers
- * @experimental
- */
- declare interface WorkerOptions {
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * Configure permissions options to change the level of access the worker will
- * have. By default it will have no permissions. Note that the permissions
- * of a worker can't be extended beyond its parent's permissions reach.
- *
- * - `"inherit"` will take the permissions of the thread the worker is created
- * in.
- * - `"none"` will use the default behavior and have no permission
- * - A list of routes can be provided that are relative to the file the worker
- * is created in to limit the access of the worker (read/write permissions
- * only)
- *
- * Example:
- *
- * ```ts
- * // mod.ts
- * const worker = new Worker(
- * new URL("deno_worker.ts", import.meta.url).href, {
- * type: "module",
- * deno: {
- * permissions: {
- * read: true,
- * },
- * },
- * }
- * );
- * ```
- */
- deno?: {
- /** Set to `"none"` to disable all the permissions in the worker. */
- permissions?: Deno.PermissionOptions;
- };
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @category WebSockets
- * @experimental
- */
- declare interface WebSocketStreamOptions {
- protocols?: string[];
- signal?: AbortSignal;
- headers?: HeadersInit;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @category WebSockets
- * @experimental
- */
- declare interface WebSocketConnection {
- readable: ReadableStream<string | Uint8Array>;
- writable: WritableStream<string | Uint8Array>;
- extensions: string;
- protocol: string;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @category WebSockets
- * @experimental
- */
- declare interface WebSocketCloseInfo {
- code?: number;
- reason?: string;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @tags allow-net
- * @category WebSockets
- * @experimental
- */
- declare interface WebSocketStream {
- url: string;
- opened: Promise<WebSocketConnection>;
- closed: Promise<WebSocketCloseInfo>;
- close(closeInfo?: WebSocketCloseInfo): void;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @tags allow-net
- * @category WebSockets
- * @experimental
- */
- declare var WebSocketStream: {
- readonly prototype: WebSocketStream;
- new (url: string, options?: WebSocketStreamOptions): WebSocketStream;
- };
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @tags allow-net
- * @category WebSockets
- * @experimental
- */
- declare interface WebSocketError extends DOMException {
- readonly closeCode: number;
- readonly reason: string;
- }
- /** **UNSTABLE**: New API, yet to be vetted.
- *
- * @tags allow-net
- * @category WebSockets
- * @experimental
- */
- declare var WebSocketError: {
- readonly prototype: WebSocketError;
- new (message?: string, init?: WebSocketCloseInfo): WebSocketError;
- };
- // Adapted from `tc39/proposal-temporal`: https://github.com/tc39/proposal-temporal/blob/main/polyfill/index.d.ts
- /**
- * [Specification](https://tc39.es/proposal-temporal/docs/index.html)
- *
- * @category Temporal
- * @experimental
- */
- declare namespace Temporal {
- /**
- * @category Temporal
- * @experimental
- */
- export type ComparisonResult = -1 | 0 | 1;
- /**
- * @category Temporal
- * @experimental
- */
- export type RoundingMode =
- | "ceil"
- | "floor"
- | "expand"
- | "trunc"
- | "halfCeil"
- | "halfFloor"
- | "halfExpand"
- | "halfTrunc"
- | "halfEven";
- /**
- * Options for assigning fields using `with()` or entire objects with
- * `from()`.
- *
- * @category Temporal
- * @experimental
- */
- export type AssignmentOptions = {
- /**
- * How to deal with out-of-range values
- *
- * - In `'constrain'` mode, out-of-range values are clamped to the nearest
- * in-range value.
- * - In `'reject'` mode, out-of-range values will cause the function to
- * throw a RangeError.
- *
- * The default is `'constrain'`.
- */
- overflow?: "constrain" | "reject";
- };
- /**
- * Options for assigning fields using `Duration.prototype.with()` or entire
- * objects with `Duration.from()`, and for arithmetic with
- * `Duration.prototype.add()` and `Duration.prototype.subtract()`.
- *
- * @category Temporal
- * @experimental
- */
- export type DurationOptions = {
- /**
- * How to deal with out-of-range values
- *
- * - In `'constrain'` mode, out-of-range values are clamped to the nearest
- * in-range value.
- * - In `'balance'` mode, out-of-range values are resolved by balancing them
- * with the next highest unit.
- *
- * The default is `'constrain'`.
- */
- overflow?: "constrain" | "balance";
- };
- /**
- * Options for conversions of `Temporal.PlainDateTime` to `Temporal.Instant`
- *
- * @category Temporal
- * @experimental
- */
- export type ToInstantOptions = {
- /**
- * Controls handling of invalid or ambiguous times caused by time zone
- * offset changes like Daylight Saving time (DST) transitions.
- *
- * This option is only relevant if a `DateTime` value does not exist in the
- * destination time zone (e.g. near "Spring Forward" DST transitions), or
- * exists more than once (e.g. near "Fall Back" DST transitions).
- *
- * In case of ambiguous or nonexistent times, this option controls what
- * exact time to return:
- * - `'compatible'`: Equivalent to `'earlier'` for backward transitions like
- * the start of DST in the Spring, and `'later'` for forward transitions
- * like the end of DST in the Fall. This matches the behavior of legacy
- * `Date`, of libraries like moment.js, Luxon, or date-fns, and of
- * cross-platform standards like [RFC 5545
- * (iCalendar)](https://tools.ietf.org/html/rfc5545).
- * - `'earlier'`: The earlier time of two possible times
- * - `'later'`: The later of two possible times
- * - `'reject'`: Throw a RangeError instead
- *
- * The default is `'compatible'`.
- */
- disambiguation?: "compatible" | "earlier" | "later" | "reject";
- };
- /**
- * @category Temporal
- * @experimental
- */
- export type OffsetDisambiguationOptions = {
- /**
- * Time zone definitions can change. If an application stores data about
- * events in the future, then stored data about future events may become
- * ambiguous, for example if a country permanently abolishes DST. The
- * `offset` option controls this unusual case.
- *
- * - `'use'` always uses the offset (if it's provided) to calculate the
- * instant. This ensures that the result will match the instant that was
- * originally stored, even if local clock time is different.
- * - `'prefer'` uses the offset if it's valid for the date/time in this time
- * zone, but if it's not valid then the time zone will be used as a
- * fallback to calculate the instant.
- * - `'ignore'` will disregard any provided offset. Instead, the time zone
- * and date/time value are used to calculate the instant. This will keep
- * local clock time unchanged but may result in a different real-world
- * instant.
- * - `'reject'` acts like `'prefer'`, except it will throw a RangeError if
- * the offset is not valid for the given time zone identifier and
- * date/time value.
- *
- * If the ISO string ends in 'Z' then this option is ignored because there
- * is no possibility of ambiguity.
- *
- * If a time zone offset is not present in the input, then this option is
- * ignored because the time zone will always be used to calculate the
- * offset.
- *
- * If the offset is not used, and if the date/time and time zone don't
- * uniquely identify a single instant, then the `disambiguation` option will
- * be used to choose the correct instant. However, if the offset is used
- * then the `disambiguation` option will be ignored.
- */
- offset?: "use" | "prefer" | "ignore" | "reject";
- };
- /**
- * @category Temporal
- * @experimental
- */
- export type ZonedDateTimeAssignmentOptions = Partial<
- AssignmentOptions & ToInstantOptions & OffsetDisambiguationOptions
- >;
- /**
- * Options for arithmetic operations like `add()` and `subtract()`
- *
- * @category Temporal
- * @experimental
- */
- export type ArithmeticOptions = {
- /**
- * Controls handling of out-of-range arithmetic results.
- *
- * If a result is out of range, then `'constrain'` will clamp the result to
- * the allowed range, while `'reject'` will throw a RangeError.
- *
- * The default is `'constrain'`.
- */
- overflow?: "constrain" | "reject";
- };
- /**
- * @category Temporal
- * @experimental
- */
- export type DateUnit = "year" | "month" | "week" | "day";
- /**
- * @category Temporal
- * @experimental
- */
- export type TimeUnit =
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond";
- /**
- * @category Temporal
- * @experimental
- */
- export type DateTimeUnit = DateUnit | TimeUnit;
- /**
- * When the name of a unit is provided to a Temporal API as a string, it is
- * usually singular, e.g. 'day' or 'hour'. But plural unit names like 'days'
- * or 'hours' are aso accepted too.
- *
- * @category Temporal
- * @experimental
- */
- export type PluralUnit<T extends DateTimeUnit> = {
- year: "years";
- month: "months";
- week: "weeks";
- day: "days";
- hour: "hours";
- minute: "minutes";
- second: "seconds";
- millisecond: "milliseconds";
- microsecond: "microseconds";
- nanosecond: "nanoseconds";
- }[T];
- /**
- * @category Temporal
- * @experimental
- */
- export type LargestUnit<T extends DateTimeUnit> = "auto" | T | PluralUnit<T>;
- /**
- * @category Temporal
- * @experimental
- */
- export type SmallestUnit<T extends DateTimeUnit> = T | PluralUnit<T>;
- /**
- * @category Temporal
- * @experimental
- */
- export type TotalUnit<T extends DateTimeUnit> = T | PluralUnit<T>;
- /**
- * Options for outputting precision in toString() on types with seconds
- *
- * @category Temporal
- * @experimental
- */
- export type ToStringPrecisionOptions = {
- fractionalSecondDigits?: "auto" | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
- smallestUnit?: SmallestUnit<
- "minute" | "second" | "millisecond" | "microsecond" | "nanosecond"
- >;
- /**
- * Controls how rounding is performed:
- * - `halfExpand`: Round to the nearest of the values allowed by
- * `roundingIncrement` and `smallestUnit`. When there is a tie, round up.
- * This mode is the default.
- * - `ceil`: Always round up, towards the end of time.
- * - `trunc`: Always round down, towards the beginning of time.
- * - `floor`: Also round down, towards the beginning of time. This mode acts
- * the same as `trunc`, but it's included for consistency with
- * `Temporal.Duration.round()` where negative values are allowed and
- * `trunc` rounds towards zero, unlike `floor` which rounds towards
- * negative infinity which is usually unexpected. For this reason, `trunc`
- * is recommended for most use cases.
- */
- roundingMode?: RoundingMode;
- };
- /**
- * @category Temporal
- * @experimental
- */
- export type ShowCalendarOption = {
- calendarName?: "auto" | "always" | "never" | "critical";
- };
- /**
- * @category Temporal
- * @experimental
- */
- export type CalendarTypeToStringOptions = Partial<
- ToStringPrecisionOptions & ShowCalendarOption
- >;
- /**
- * @category Temporal
- * @experimental
- */
- export type ZonedDateTimeToStringOptions = Partial<
- CalendarTypeToStringOptions & {
- timeZoneName?: "auto" | "never" | "critical";
- offset?: "auto" | "never";
- }
- >;
- /**
- * @category Temporal
- * @experimental
- */
- export type InstantToStringOptions = Partial<
- ToStringPrecisionOptions & {
- timeZone: TimeZoneLike;
- }
- >;
- /**
- * Options to control the result of `until()` and `since()` methods in
- * `Temporal` types.
- *
- * @category Temporal
- * @experimental
- */
- export interface DifferenceOptions<T extends DateTimeUnit> {
- /**
- * The unit to round to. For example, to round to the nearest minute, use
- * `smallestUnit: 'minute'`. This property is optional for `until()` and
- * `since()`, because those methods default behavior is not to round.
- * However, the same property is required for `round()`.
- */
- smallestUnit?: SmallestUnit<T>;
- /**
- * The largest unit to allow in the resulting `Temporal.Duration` object.
- *
- * Larger units will be "balanced" into smaller units. For example, if
- * `largestUnit` is `'minute'` then a two-hour duration will be output as a
- * 120-minute duration.
- *
- * Valid values may include `'year'`, `'month'`, `'week'`, `'day'`,
- * `'hour'`, `'minute'`, `'second'`, `'millisecond'`, `'microsecond'`,
- * `'nanosecond'` and `'auto'`, although some types may throw an exception
- * if a value is used that would produce an invalid result. For example,
- * `hours` is not accepted by `Temporal.PlainDate.prototype.since()`.
- *
- * The default is always `'auto'`, though the meaning of this depends on the
- * type being used.
- */
- largestUnit?: LargestUnit<T>;
- /**
- * Allows rounding to an integer number of units. For example, to round to
- * increments of a half hour, use `{ smallestUnit: 'minute',
- * roundingIncrement: 30 }`.
- */
- roundingIncrement?: number;
- /**
- * Controls how rounding is performed:
- * - `halfExpand`: Round to the nearest of the values allowed by
- * `roundingIncrement` and `smallestUnit`. When there is a tie, round away
- * from zero like `ceil` for positive durations and like `floor` for
- * negative durations.
- * - `ceil`: Always round up, towards the end of time.
- * - `trunc`: Always round down, towards the beginning of time. This mode is
- * the default.
- * - `floor`: Also round down, towards the beginning of time. This mode acts
- * the same as `trunc`, but it's included for consistency with
- * `Temporal.Duration.round()` where negative values are allowed and
- * `trunc` rounds towards zero, unlike `floor` which rounds towards
- * negative infinity which is usually unexpected. For this reason, `trunc`
- * is recommended for most use cases.
- */
- roundingMode?: RoundingMode;
- }
- /**
- * `round` methods take one required parameter. If a string is provided, the
- * resulting `Temporal.Duration` object will be rounded to that unit. If an
- * object is provided, its `smallestUnit` property is required while other
- * properties are optional. A string is treated the same as an object whose
- * `smallestUnit` property value is that string.
- *
- * @category Temporal
- * @experimental
- */
- export type RoundTo<T extends DateTimeUnit> =
- | SmallestUnit<T>
- | {
- /**
- * The unit to round to. For example, to round to the nearest minute,
- * use `smallestUnit: 'minute'`. This option is required. Note that the
- * same-named property is optional when passed to `until` or `since`
- * methods, because those methods do no rounding by default.
- */
- smallestUnit: SmallestUnit<T>;
- /**
- * Allows rounding to an integer number of units. For example, to round to
- * increments of a half hour, use `{ smallestUnit: 'minute',
- * roundingIncrement: 30 }`.
- */
- roundingIncrement?: number;
- /**
- * Controls how rounding is performed:
- * - `halfExpand`: Round to the nearest of the values allowed by
- * `roundingIncrement` and `smallestUnit`. When there is a tie, round up.
- * This mode is the default.
- * - `ceil`: Always round up, towards the end of time.
- * - `trunc`: Always round down, towards the beginning of time.
- * - `floor`: Also round down, towards the beginning of time. This mode acts
- * the same as `trunc`, but it's included for consistency with
- * `Temporal.Duration.round()` where negative values are allowed and
- * `trunc` rounds towards zero, unlike `floor` which rounds towards
- * negative infinity which is usually unexpected. For this reason, `trunc`
- * is recommended for most use cases.
- */
- roundingMode?: RoundingMode;
- };
- /**
- * The `round` method of the `Temporal.Duration` accepts one required
- * parameter. If a string is provided, the resulting `Temporal.Duration`
- * object will be rounded to that unit. If an object is provided, the
- * `smallestUnit` and/or `largestUnit` property is required, while other
- * properties are optional. A string parameter is treated the same as an
- * object whose `smallestUnit` property value is that string.
- *
- * @category Temporal
- * @experimental
- */
- export type DurationRoundTo =
- | SmallestUnit<DateTimeUnit>
- | (
- & (
- | {
- /**
- * The unit to round to. For example, to round to the nearest
- * minute, use `smallestUnit: 'minute'`. This property is normally
- * required, but is optional if `largestUnit` is provided and not
- * undefined.
- */
- smallestUnit: SmallestUnit<DateTimeUnit>;
- /**
- * The largest unit to allow in the resulting `Temporal.Duration`
- * object.
- *
- * Larger units will be "balanced" into smaller units. For example,
- * if `largestUnit` is `'minute'` then a two-hour duration will be
- * output as a 120-minute duration.
- *
- * Valid values include `'year'`, `'month'`, `'week'`, `'day'`,
- * `'hour'`, `'minute'`, `'second'`, `'millisecond'`,
- * `'microsecond'`, `'nanosecond'` and `'auto'`.
- *
- * The default is `'auto'`, which means "the largest nonzero unit in
- * the input duration". This default prevents expanding durations to
- * larger units unless the caller opts into this behavior.
- *
- * If `smallestUnit` is larger, then `smallestUnit` will be used as
- * `largestUnit`, superseding a caller-supplied or default value.
- */
- largestUnit?: LargestUnit<DateTimeUnit>;
- }
- | {
- /**
- * The unit to round to. For example, to round to the nearest
- * minute, use `smallestUnit: 'minute'`. This property is normally
- * required, but is optional if `largestUnit` is provided and not
- * undefined.
- */
- smallestUnit?: SmallestUnit<DateTimeUnit>;
- /**
- * The largest unit to allow in the resulting `Temporal.Duration`
- * object.
- *
- * Larger units will be "balanced" into smaller units. For example,
- * if `largestUnit` is `'minute'` then a two-hour duration will be
- * output as a 120-minute duration.
- *
- * Valid values include `'year'`, `'month'`, `'week'`, `'day'`,
- * `'hour'`, `'minute'`, `'second'`, `'millisecond'`,
- * `'microsecond'`, `'nanosecond'` and `'auto'`.
- *
- * The default is `'auto'`, which means "the largest nonzero unit in
- * the input duration". This default prevents expanding durations to
- * larger units unless the caller opts into this behavior.
- *
- * If `smallestUnit` is larger, then `smallestUnit` will be used as
- * `largestUnit`, superseding a caller-supplied or default value.
- */
- largestUnit: LargestUnit<DateTimeUnit>;
- }
- )
- & {
- /**
- * Allows rounding to an integer number of units. For example, to round
- * to increments of a half hour, use `{ smallestUnit: 'minute',
- * roundingIncrement: 30 }`.
- */
- roundingIncrement?: number;
- /**
- * Controls how rounding is performed:
- * - `halfExpand`: Round to the nearest of the values allowed by
- * `roundingIncrement` and `smallestUnit`. When there is a tie, round
- * away from zero like `ceil` for positive durations and like `floor`
- * for negative durations. This mode is the default.
- * - `ceil`: Always round towards positive infinity. For negative
- * durations this option will decrease the absolute value of the
- * duration which may be unexpected. To round away from zero, use
- * `ceil` for positive durations and `floor` for negative durations.
- * - `trunc`: Always round down towards zero.
- * - `floor`: Always round towards negative infinity. This mode acts the
- * same as `trunc` for positive durations but for negative durations
- * it will increase the absolute value of the result which may be
- * unexpected. For this reason, `trunc` is recommended for most "round
- * down" use cases.
- */
- roundingMode?: RoundingMode;
- /**
- * The starting point to use for rounding and conversions when
- * variable-length units (years, months, weeks depending on the
- * calendar) are involved. This option is required if any of the
- * following are true:
- * - `unit` is `'week'` or larger units
- * - `this` has a nonzero value for `weeks` or larger units
- *
- * This value must be either a `Temporal.PlainDateTime`, a
- * `Temporal.ZonedDateTime`, or a string or object value that can be
- * passed to `from()` of those types. Examples:
- * - `'2020-01'01T00:00-08:00[America/Los_Angeles]'`
- * - `'2020-01'01'`
- * - `Temporal.PlainDate.from('2020-01-01')`
- *
- * `Temporal.ZonedDateTime` will be tried first because it's more
- * specific, with `Temporal.PlainDateTime` as a fallback.
- *
- * If the value resolves to a `Temporal.ZonedDateTime`, then operation
- * will adjust for DST and other time zone transitions. Otherwise
- * (including if this option is omitted), then the operation will ignore
- * time zone transitions and all days will be assumed to be 24 hours
- * long.
- */
- relativeTo?:
- | Temporal.PlainDateTime
- | Temporal.ZonedDateTime
- | PlainDateTimeLike
- | ZonedDateTimeLike
- | string;
- }
- );
- /**
- * Options to control behavior of `Duration.prototype.total()`
- *
- * @category Temporal
- * @experimental
- */
- export type DurationTotalOf =
- | TotalUnit<DateTimeUnit>
- | {
- /**
- * The unit to convert the duration to. This option is required.
- */
- unit: TotalUnit<DateTimeUnit>;
- /**
- * The starting point to use when variable-length units (years, months,
- * weeks depending on the calendar) are involved. This option is required if
- * any of the following are true:
- * - `unit` is `'week'` or larger units
- * - `this` has a nonzero value for `weeks` or larger units
- *
- * This value must be either a `Temporal.PlainDateTime`, a
- * `Temporal.ZonedDateTime`, or a string or object value that can be passed
- * to `from()` of those types. Examples:
- * - `'2020-01'01T00:00-08:00[America/Los_Angeles]'`
- * - `'2020-01'01'`
- * - `Temporal.PlainDate.from('2020-01-01')`
- *
- * `Temporal.ZonedDateTime` will be tried first because it's more
- * specific, with `Temporal.PlainDateTime` as a fallback.
- *
- * If the value resolves to a `Temporal.ZonedDateTime`, then operation will
- * adjust for DST and other time zone transitions. Otherwise (including if
- * this option is omitted), then the operation will ignore time zone
- * transitions and all days will be assumed to be 24 hours long.
- */
- relativeTo?:
- | Temporal.ZonedDateTime
- | Temporal.PlainDateTime
- | ZonedDateTimeLike
- | PlainDateTimeLike
- | string;
- };
- /**
- * Options to control behavior of `Duration.compare()`, `Duration.add()`, and
- * `Duration.subtract()`
- *
- * @category Temporal
- * @experimental
- */
- export interface DurationArithmeticOptions {
- /**
- * The starting point to use when variable-length units (years, months,
- * weeks depending on the calendar) are involved. This option is required if
- * either of the durations has a nonzero value for `weeks` or larger units.
- *
- * This value must be either a `Temporal.PlainDateTime`, a
- * `Temporal.ZonedDateTime`, or a string or object value that can be passed
- * to `from()` of those types. Examples:
- * - `'2020-01'01T00:00-08:00[America/Los_Angeles]'`
- * - `'2020-01'01'`
- * - `Temporal.PlainDate.from('2020-01-01')`
- *
- * `Temporal.ZonedDateTime` will be tried first because it's more
- * specific, with `Temporal.PlainDateTime` as a fallback.
- *
- * If the value resolves to a `Temporal.ZonedDateTime`, then operation will
- * adjust for DST and other time zone transitions. Otherwise (including if
- * this option is omitted), then the operation will ignore time zone
- * transitions and all days will be assumed to be 24 hours long.
- */
- relativeTo?:
- | Temporal.ZonedDateTime
- | Temporal.PlainDateTime
- | ZonedDateTimeLike
- | PlainDateTimeLike
- | string;
- }
- /**
- * @category Temporal
- * @experimental
- */
- export type DurationLike = {
- years?: number;
- months?: number;
- weeks?: number;
- days?: number;
- hours?: number;
- minutes?: number;
- seconds?: number;
- milliseconds?: number;
- microseconds?: number;
- nanoseconds?: number;
- };
- /**
- * A `Temporal.Duration` represents an immutable duration of time which can be
- * used in date/time arithmetic.
- *
- * See https://tc39.es/proposal-temporal/docs/duration.html for more details.
- *
- * @category Temporal
- * @experimental
- */
- export class Duration {
- static from(
- item: Temporal.Duration | DurationLike | string,
- ): Temporal.Duration;
- static compare(
- one: Temporal.Duration | DurationLike | string,
- two: Temporal.Duration | DurationLike | string,
- options?: DurationArithmeticOptions,
- ): ComparisonResult;
- constructor(
- years?: number,
- months?: number,
- weeks?: number,
- days?: number,
- hours?: number,
- minutes?: number,
- seconds?: number,
- milliseconds?: number,
- microseconds?: number,
- nanoseconds?: number,
- );
- readonly sign: -1 | 0 | 1;
- readonly blank: boolean;
- readonly years: number;
- readonly months: number;
- readonly weeks: number;
- readonly days: number;
- readonly hours: number;
- readonly minutes: number;
- readonly seconds: number;
- readonly milliseconds: number;
- readonly microseconds: number;
- readonly nanoseconds: number;
- negated(): Temporal.Duration;
- abs(): Temporal.Duration;
- with(durationLike: DurationLike): Temporal.Duration;
- add(
- other: Temporal.Duration | DurationLike | string,
- options?: DurationArithmeticOptions,
- ): Temporal.Duration;
- subtract(
- other: Temporal.Duration | DurationLike | string,
- options?: DurationArithmeticOptions,
- ): Temporal.Duration;
- round(roundTo: DurationRoundTo): Temporal.Duration;
- total(totalOf: DurationTotalOf): number;
- toLocaleString(
- locales?: string | string[],
- options?: Intl.DateTimeFormatOptions,
- ): string;
- toJSON(): string;
- toString(options?: ToStringPrecisionOptions): string;
- valueOf(): never;
- readonly [Symbol.toStringTag]: "Temporal.Duration";
- }
- /**
- * A `Temporal.Instant` is an exact point in time, with a precision in
- * nanoseconds. No time zone or calendar information is present. Therefore,
- * `Temporal.Instant` has no concept of days, months, or even hours.
- *
- * For convenience of interoperability, it internally uses nanoseconds since
- * the {@link https://en.wikipedia.org/wiki/Unix_time|Unix epoch} (midnight
- * UTC on January 1, 1970). However, a `Temporal.Instant` can be created from
- * any of several expressions that refer to a single point in time, including
- * an {@link https://en.wikipedia.org/wiki/ISO_8601|ISO 8601 string} with a
- * time zone offset such as '2020-01-23T17:04:36.491865121-08:00'.
- *
- * See https://tc39.es/proposal-temporal/docs/instant.html for more details.
- *
- * @category Temporal
- * @experimental
- */
- export class Instant {
- static fromEpochSeconds(epochSeconds: number): Temporal.Instant;
- static fromEpochMilliseconds(epochMilliseconds: number): Temporal.Instant;
- static fromEpochMicroseconds(epochMicroseconds: bigint): Temporal.Instant;
- static fromEpochNanoseconds(epochNanoseconds: bigint): Temporal.Instant;
- static from(item: Temporal.Instant | string): Temporal.Instant;
- static compare(
- one: Temporal.Instant | string,
- two: Temporal.Instant | string,
- ): ComparisonResult;
- constructor(epochNanoseconds: bigint);
- readonly epochSeconds: number;
- readonly epochMilliseconds: number;
- readonly epochMicroseconds: bigint;
- readonly epochNanoseconds: bigint;
- equals(other: Temporal.Instant | string): boolean;
- add(
- durationLike:
- | Omit<
- Temporal.Duration | DurationLike,
- "years" | "months" | "weeks" | "days"
- >
- | string,
- ): Temporal.Instant;
- subtract(
- durationLike:
- | Omit<
- Temporal.Duration | DurationLike,
- "years" | "months" | "weeks" | "days"
- >
- | string,
- ): Temporal.Instant;
- until(
- other: Temporal.Instant | string,
- options?: DifferenceOptions<
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond"
- >,
- ): Temporal.Duration;
- since(
- other: Temporal.Instant | string,
- options?: DifferenceOptions<
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond"
- >,
- ): Temporal.Duration;
- round(
- roundTo: RoundTo<
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond"
- >,
- ): Temporal.Instant;
- toZonedDateTime(
- calendarAndTimeZone: { timeZone: TimeZoneLike; calendar: CalendarLike },
- ): Temporal.ZonedDateTime;
- toZonedDateTimeISO(tzLike: TimeZoneLike): Temporal.ZonedDateTime;
- toLocaleString(
- locales?: string | string[],
- options?: Intl.DateTimeFormatOptions,
- ): string;
- toJSON(): string;
- toString(options?: InstantToStringOptions): string;
- valueOf(): never;
- readonly [Symbol.toStringTag]: "Temporal.Instant";
- }
- /**
- * @category Temporal
- * @experimental
- */
- export type YearOrEraAndEraYear = { era: string; eraYear: number } | {
- year: number;
- };
- /**
- * @category Temporal
- * @experimental
- */
- export type MonthCodeOrMonthAndYear =
- | (YearOrEraAndEraYear & { month: number })
- | {
- monthCode: string;
- };
- /**
- * @category Temporal
- * @experimental
- */
- export type MonthOrMonthCode = { month: number } | { monthCode: string };
- /**
- * @category Temporal
- * @experimental
- */
- export interface CalendarProtocol {
- id: string;
- year(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | PlainDateLike
- | string,
- ): number;
- month(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | Temporal.PlainMonthDay
- | PlainDateLike
- | string,
- ): number;
- monthCode(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | Temporal.PlainMonthDay
- | PlainDateLike
- | string,
- ): string;
- day(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainMonthDay
- | PlainDateLike
- | string,
- ): number;
- era(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): string | undefined;
- eraYear(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): number | undefined;
- dayOfWeek(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): number;
- dayOfYear(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): number;
- weekOfYear(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): number;
- yearOfWeek(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): number;
- daysInWeek(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): number;
- daysInMonth(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | PlainDateLike
- | string,
- ): number;
- daysInYear(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | PlainDateLike
- | string,
- ): number;
- monthsInYear(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | PlainDateLike
- | string,
- ): number;
- inLeapYear(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | PlainDateLike
- | string,
- ): boolean;
- dateFromFields(
- fields: YearOrEraAndEraYear & MonthOrMonthCode & { day: number },
- options?: AssignmentOptions,
- ): Temporal.PlainDate;
- yearMonthFromFields(
- fields: YearOrEraAndEraYear & MonthOrMonthCode,
- options?: AssignmentOptions,
- ): Temporal.PlainYearMonth;
- monthDayFromFields(
- fields: MonthCodeOrMonthAndYear & { day: number },
- options?: AssignmentOptions,
- ): Temporal.PlainMonthDay;
- dateAdd(
- date: Temporal.PlainDate | PlainDateLike | string,
- duration: Temporal.Duration | DurationLike | string,
- options?: ArithmeticOptions,
- ): Temporal.PlainDate;
- dateUntil(
- one: Temporal.PlainDate | PlainDateLike | string,
- two: Temporal.PlainDate | PlainDateLike | string,
- options?: DifferenceOptions<"year" | "month" | "week" | "day">,
- ): Temporal.Duration;
- fields(fields: Iterable<string>): Iterable<string>;
- mergeFields(
- fields: Record<string, unknown>,
- additionalFields: Record<string, unknown>,
- ): Record<string, unknown>;
- toString?(): string;
- toJSON?(): string;
- }
- /**
- * Any of these types can be passed to Temporal methods instead of a Temporal.Calendar.
- *
- * @category Temporal
- * @experimental
- */
- export type CalendarLike =
- | string
- | CalendarProtocol
- | ZonedDateTime
- | PlainDateTime
- | PlainDate
- | PlainYearMonth
- | PlainMonthDay;
- /**
- * A `Temporal.Calendar` is a representation of a calendar system. It includes
- * information about how many days are in each year, how many months are in
- * each year, how many days are in each month, and how to do arithmetic in
- * that calendar system.
- *
- * See https://tc39.es/proposal-temporal/docs/calendar.html for more details.
- *
- * @category Temporal
- * @experimental
- */
- export class Calendar implements CalendarProtocol {
- static from(item: CalendarLike): Temporal.Calendar | CalendarProtocol;
- constructor(calendarIdentifier: string);
- readonly id: string;
- year(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | PlainDateLike
- | string,
- ): number;
- month(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | Temporal.PlainMonthDay
- | PlainDateLike
- | string,
- ): number;
- monthCode(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | Temporal.PlainMonthDay
- | PlainDateLike
- | string,
- ): string;
- day(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainMonthDay
- | PlainDateLike
- | string,
- ): number;
- era(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): string | undefined;
- eraYear(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): number | undefined;
- dayOfWeek(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): number;
- dayOfYear(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): number;
- weekOfYear(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): number;
- yearOfWeek(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): number;
- daysInWeek(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | PlainDateLike
- | string,
- ): number;
- daysInMonth(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | PlainDateLike
- | string,
- ): number;
- daysInYear(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | PlainDateLike
- | string,
- ): number;
- monthsInYear(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | PlainDateLike
- | string,
- ): number;
- inLeapYear(
- date:
- | Temporal.PlainDate
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | PlainDateLike
- | string,
- ): boolean;
- dateFromFields(
- fields: YearOrEraAndEraYear & MonthOrMonthCode & { day: number },
- options?: AssignmentOptions,
- ): Temporal.PlainDate;
- yearMonthFromFields(
- fields: YearOrEraAndEraYear & MonthOrMonthCode,
- options?: AssignmentOptions,
- ): Temporal.PlainYearMonth;
- monthDayFromFields(
- fields: MonthCodeOrMonthAndYear & { day: number },
- options?: AssignmentOptions,
- ): Temporal.PlainMonthDay;
- dateAdd(
- date: Temporal.PlainDate | PlainDateLike | string,
- duration: Temporal.Duration | DurationLike | string,
- options?: ArithmeticOptions,
- ): Temporal.PlainDate;
- dateUntil(
- one: Temporal.PlainDate | PlainDateLike | string,
- two: Temporal.PlainDate | PlainDateLike | string,
- options?: DifferenceOptions<"year" | "month" | "week" | "day">,
- ): Temporal.Duration;
- fields(fields: Iterable<string>): string[];
- mergeFields(
- fields: Record<string, unknown>,
- additionalFields: Record<string, unknown>,
- ): Record<string, unknown>;
- toString(): string;
- toJSON(): string;
- readonly [Symbol.toStringTag]: "Temporal.Calendar";
- }
- /**
- * @category Temporal
- * @experimental
- */
- export type PlainDateLike = {
- era?: string | undefined;
- eraYear?: number | undefined;
- year?: number;
- month?: number;
- monthCode?: string;
- day?: number;
- calendar?: CalendarLike;
- };
- /**
- * @category Temporal
- * @experimental
- */
- export type PlainDateISOFields = {
- isoYear: number;
- isoMonth: number;
- isoDay: number;
- calendar: string | CalendarProtocol;
- };
- /**
- * A `Temporal.PlainDate` represents a calendar date. "Calendar date" refers to the
- * concept of a date as expressed in everyday usage, independent of any time
- * zone. For example, it could be used to represent an event on a calendar
- * which happens during the whole day no matter which time zone it's happening
- * in.
- *
- * See https://tc39.es/proposal-temporal/docs/date.html for more details.
- *
- * @category Temporal
- * @experimental
- */
- export class PlainDate {
- static from(
- item: Temporal.PlainDate | PlainDateLike | string,
- options?: AssignmentOptions,
- ): Temporal.PlainDate;
- static compare(
- one: Temporal.PlainDate | PlainDateLike | string,
- two: Temporal.PlainDate | PlainDateLike | string,
- ): ComparisonResult;
- constructor(
- isoYear: number,
- isoMonth: number,
- isoDay: number,
- calendar?: CalendarLike,
- );
- readonly era: string | undefined;
- readonly eraYear: number | undefined;
- readonly year: number;
- readonly month: number;
- readonly monthCode: string;
- readonly day: number;
- readonly calendarId: string;
- getCalendar(): CalendarProtocol;
- readonly dayOfWeek: number;
- readonly dayOfYear: number;
- readonly weekOfYear: number;
- readonly yearOfWeek: number;
- readonly daysInWeek: number;
- readonly daysInYear: number;
- readonly daysInMonth: number;
- readonly monthsInYear: number;
- readonly inLeapYear: boolean;
- equals(other: Temporal.PlainDate | PlainDateLike | string): boolean;
- with(
- dateLike: PlainDateLike,
- options?: AssignmentOptions,
- ): Temporal.PlainDate;
- withCalendar(calendar: CalendarLike): Temporal.PlainDate;
- add(
- durationLike: Temporal.Duration | DurationLike | string,
- options?: ArithmeticOptions,
- ): Temporal.PlainDate;
- subtract(
- durationLike: Temporal.Duration | DurationLike | string,
- options?: ArithmeticOptions,
- ): Temporal.PlainDate;
- until(
- other: Temporal.PlainDate | PlainDateLike | string,
- options?: DifferenceOptions<"year" | "month" | "week" | "day">,
- ): Temporal.Duration;
- since(
- other: Temporal.PlainDate | PlainDateLike | string,
- options?: DifferenceOptions<"year" | "month" | "week" | "day">,
- ): Temporal.Duration;
- toPlainDateTime(
- temporalTime?: Temporal.PlainTime | PlainTimeLike | string,
- ): Temporal.PlainDateTime;
- toZonedDateTime(
- timeZoneAndTime:
- | TimeZoneProtocol
- | string
- | {
- timeZone: TimeZoneLike;
- plainTime?: Temporal.PlainTime | PlainTimeLike | string;
- },
- ): Temporal.ZonedDateTime;
- toPlainYearMonth(): Temporal.PlainYearMonth;
- toPlainMonthDay(): Temporal.PlainMonthDay;
- getISOFields(): PlainDateISOFields;
- toLocaleString(
- locales?: string | string[],
- options?: Intl.DateTimeFormatOptions,
- ): string;
- toJSON(): string;
- toString(options?: ShowCalendarOption): string;
- valueOf(): never;
- readonly [Symbol.toStringTag]: "Temporal.PlainDate";
- }
- /**
- * @category Temporal
- * @experimental
- */
- export type PlainDateTimeLike = {
- era?: string | undefined;
- eraYear?: number | undefined;
- year?: number;
- month?: number;
- monthCode?: string;
- day?: number;
- hour?: number;
- minute?: number;
- second?: number;
- millisecond?: number;
- microsecond?: number;
- nanosecond?: number;
- calendar?: CalendarLike;
- };
- /**
- * @category Temporal
- * @experimental
- */
- export type PlainDateTimeISOFields = {
- isoYear: number;
- isoMonth: number;
- isoDay: number;
- isoHour: number;
- isoMinute: number;
- isoSecond: number;
- isoMillisecond: number;
- isoMicrosecond: number;
- isoNanosecond: number;
- calendar: string | CalendarProtocol;
- };
- /**
- * A `Temporal.PlainDateTime` represents a calendar date and wall-clock time, with
- * a precision in nanoseconds, and without any time zone. Of the Temporal
- * classes carrying human-readable time information, it is the most general
- * and complete one. `Temporal.PlainDate`, `Temporal.PlainTime`, `Temporal.PlainYearMonth`,
- * and `Temporal.PlainMonthDay` all carry less information and should be used when
- * complete information is not required.
- *
- * See https://tc39.es/proposal-temporal/docs/datetime.html for more details.
- *
- * @category Temporal
- * @experimental
- */
- export class PlainDateTime {
- static from(
- item: Temporal.PlainDateTime | PlainDateTimeLike | string,
- options?: AssignmentOptions,
- ): Temporal.PlainDateTime;
- static compare(
- one: Temporal.PlainDateTime | PlainDateTimeLike | string,
- two: Temporal.PlainDateTime | PlainDateTimeLike | string,
- ): ComparisonResult;
- constructor(
- isoYear: number,
- isoMonth: number,
- isoDay: number,
- hour?: number,
- minute?: number,
- second?: number,
- millisecond?: number,
- microsecond?: number,
- nanosecond?: number,
- calendar?: CalendarLike,
- );
- readonly era: string | undefined;
- readonly eraYear: number | undefined;
- readonly year: number;
- readonly month: number;
- readonly monthCode: string;
- readonly day: number;
- readonly hour: number;
- readonly minute: number;
- readonly second: number;
- readonly millisecond: number;
- readonly microsecond: number;
- readonly nanosecond: number;
- readonly calendarId: string;
- getCalendar(): CalendarProtocol;
- readonly dayOfWeek: number;
- readonly dayOfYear: number;
- readonly weekOfYear: number;
- readonly yearOfWeek: number;
- readonly daysInWeek: number;
- readonly daysInYear: number;
- readonly daysInMonth: number;
- readonly monthsInYear: number;
- readonly inLeapYear: boolean;
- equals(other: Temporal.PlainDateTime | PlainDateTimeLike | string): boolean;
- with(
- dateTimeLike: PlainDateTimeLike,
- options?: AssignmentOptions,
- ): Temporal.PlainDateTime;
- withPlainTime(
- timeLike?: Temporal.PlainTime | PlainTimeLike | string,
- ): Temporal.PlainDateTime;
- withPlainDate(
- dateLike: Temporal.PlainDate | PlainDateLike | string,
- ): Temporal.PlainDateTime;
- withCalendar(calendar: CalendarLike): Temporal.PlainDateTime;
- add(
- durationLike: Temporal.Duration | DurationLike | string,
- options?: ArithmeticOptions,
- ): Temporal.PlainDateTime;
- subtract(
- durationLike: Temporal.Duration | DurationLike | string,
- options?: ArithmeticOptions,
- ): Temporal.PlainDateTime;
- until(
- other: Temporal.PlainDateTime | PlainDateTimeLike | string,
- options?: DifferenceOptions<
- | "year"
- | "month"
- | "week"
- | "day"
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond"
- >,
- ): Temporal.Duration;
- since(
- other: Temporal.PlainDateTime | PlainDateTimeLike | string,
- options?: DifferenceOptions<
- | "year"
- | "month"
- | "week"
- | "day"
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond"
- >,
- ): Temporal.Duration;
- round(
- roundTo: RoundTo<
- | "day"
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond"
- >,
- ): Temporal.PlainDateTime;
- toZonedDateTime(
- tzLike: TimeZoneLike,
- options?: ToInstantOptions,
- ): Temporal.ZonedDateTime;
- toPlainDate(): Temporal.PlainDate;
- toPlainYearMonth(): Temporal.PlainYearMonth;
- toPlainMonthDay(): Temporal.PlainMonthDay;
- toPlainTime(): Temporal.PlainTime;
- getISOFields(): PlainDateTimeISOFields;
- toLocaleString(
- locales?: string | string[],
- options?: Intl.DateTimeFormatOptions,
- ): string;
- toJSON(): string;
- toString(options?: CalendarTypeToStringOptions): string;
- valueOf(): never;
- readonly [Symbol.toStringTag]: "Temporal.PlainDateTime";
- }
- /**
- * @category Temporal
- * @experimental
- */
- export type PlainMonthDayLike = {
- era?: string | undefined;
- eraYear?: number | undefined;
- year?: number;
- month?: number;
- monthCode?: string;
- day?: number;
- calendar?: CalendarLike;
- };
- /**
- * A `Temporal.PlainMonthDay` represents a particular day on the calendar, but
- * without a year. For example, it could be used to represent a yearly
- * recurring event, like "Bastille Day is on the 14th of July."
- *
- * See https://tc39.es/proposal-temporal/docs/monthday.html for more details.
- *
- * @category Temporal
- * @experimental
- */
- export class PlainMonthDay {
- static from(
- item: Temporal.PlainMonthDay | PlainMonthDayLike | string,
- options?: AssignmentOptions,
- ): Temporal.PlainMonthDay;
- constructor(
- isoMonth: number,
- isoDay: number,
- calendar?: CalendarLike,
- referenceISOYear?: number,
- );
- readonly monthCode: string;
- readonly day: number;
- readonly calendarId: string;
- getCalendar(): CalendarProtocol;
- equals(other: Temporal.PlainMonthDay | PlainMonthDayLike | string): boolean;
- with(
- monthDayLike: PlainMonthDayLike,
- options?: AssignmentOptions,
- ): Temporal.PlainMonthDay;
- toPlainDate(year: { year: number }): Temporal.PlainDate;
- getISOFields(): PlainDateISOFields;
- toLocaleString(
- locales?: string | string[],
- options?: Intl.DateTimeFormatOptions,
- ): string;
- toJSON(): string;
- toString(options?: ShowCalendarOption): string;
- valueOf(): never;
- readonly [Symbol.toStringTag]: "Temporal.PlainMonthDay";
- }
- /**
- * @category Temporal
- * @experimental
- */
- export type PlainTimeLike = {
- hour?: number;
- minute?: number;
- second?: number;
- millisecond?: number;
- microsecond?: number;
- nanosecond?: number;
- };
- /**
- * @category Temporal
- * @experimental
- */
- export type PlainTimeISOFields = {
- isoHour: number;
- isoMinute: number;
- isoSecond: number;
- isoMillisecond: number;
- isoMicrosecond: number;
- isoNanosecond: number;
- };
- /**
- * A `Temporal.PlainTime` represents a wall-clock time, with a precision in
- * nanoseconds, and without any time zone. "Wall-clock time" refers to the
- * concept of a time as expressed in everyday usage — the time that you read
- * off the clock on the wall. For example, it could be used to represent an
- * event that happens daily at a certain time, no matter what time zone.
- *
- * `Temporal.PlainTime` refers to a time with no associated calendar date; if you
- * need to refer to a specific time on a specific day, use
- * `Temporal.PlainDateTime`. A `Temporal.PlainTime` can be converted into a
- * `Temporal.PlainDateTime` by combining it with a `Temporal.PlainDate` using the
- * `toPlainDateTime()` method.
- *
- * See https://tc39.es/proposal-temporal/docs/time.html for more details.
- *
- * @category Temporal
- * @experimental
- */
- export class PlainTime {
- static from(
- item: Temporal.PlainTime | PlainTimeLike | string,
- options?: AssignmentOptions,
- ): Temporal.PlainTime;
- static compare(
- one: Temporal.PlainTime | PlainTimeLike | string,
- two: Temporal.PlainTime | PlainTimeLike | string,
- ): ComparisonResult;
- constructor(
- hour?: number,
- minute?: number,
- second?: number,
- millisecond?: number,
- microsecond?: number,
- nanosecond?: number,
- );
- readonly hour: number;
- readonly minute: number;
- readonly second: number;
- readonly millisecond: number;
- readonly microsecond: number;
- readonly nanosecond: number;
- equals(other: Temporal.PlainTime | PlainTimeLike | string): boolean;
- with(
- timeLike: Temporal.PlainTime | PlainTimeLike,
- options?: AssignmentOptions,
- ): Temporal.PlainTime;
- add(
- durationLike: Temporal.Duration | DurationLike | string,
- options?: ArithmeticOptions,
- ): Temporal.PlainTime;
- subtract(
- durationLike: Temporal.Duration | DurationLike | string,
- options?: ArithmeticOptions,
- ): Temporal.PlainTime;
- until(
- other: Temporal.PlainTime | PlainTimeLike | string,
- options?: DifferenceOptions<
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond"
- >,
- ): Temporal.Duration;
- since(
- other: Temporal.PlainTime | PlainTimeLike | string,
- options?: DifferenceOptions<
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond"
- >,
- ): Temporal.Duration;
- round(
- roundTo: RoundTo<
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond"
- >,
- ): Temporal.PlainTime;
- toPlainDateTime(
- temporalDate: Temporal.PlainDate | PlainDateLike | string,
- ): Temporal.PlainDateTime;
- toZonedDateTime(timeZoneAndDate: {
- timeZone: TimeZoneLike;
- plainDate: Temporal.PlainDate | PlainDateLike | string;
- }): Temporal.ZonedDateTime;
- getISOFields(): PlainTimeISOFields;
- toLocaleString(
- locales?: string | string[],
- options?: Intl.DateTimeFormatOptions,
- ): string;
- toJSON(): string;
- toString(options?: ToStringPrecisionOptions): string;
- valueOf(): never;
- readonly [Symbol.toStringTag]: "Temporal.PlainTime";
- }
- /**
- * A plain object implementing the protocol for a custom time zone.
- *
- * @category Temporal
- * @experimental
- */
- export interface TimeZoneProtocol {
- id: string;
- getOffsetNanosecondsFor(instant: Temporal.Instant | string): number;
- getOffsetStringFor?(instant: Temporal.Instant | string): string;
- getPlainDateTimeFor?(
- instant: Temporal.Instant | string,
- calendar?: CalendarLike,
- ): Temporal.PlainDateTime;
- getInstantFor?(
- dateTime: Temporal.PlainDateTime | PlainDateTimeLike | string,
- options?: ToInstantOptions,
- ): Temporal.Instant;
- getNextTransition?(
- startingPoint: Temporal.Instant | string,
- ): Temporal.Instant | null;
- getPreviousTransition?(
- startingPoint: Temporal.Instant | string,
- ): Temporal.Instant | null;
- getPossibleInstantsFor(
- dateTime: Temporal.PlainDateTime | PlainDateTimeLike | string,
- ): Temporal.Instant[];
- toString?(): string;
- toJSON?(): string;
- }
- /**
- * Any of these types can be passed to Temporal methods instead of a Temporal.TimeZone.
- *
- * @category Temporal
- * @experimental
- */
- export type TimeZoneLike = string | TimeZoneProtocol | ZonedDateTime;
- /**
- * A `Temporal.TimeZone` is a representation of a time zone: either an
- * {@link https://www.iana.org/time-zones|IANA time zone}, including
- * information about the time zone such as the offset between the local time
- * and UTC at a particular time, and daylight saving time (DST) changes; or
- * simply a particular UTC offset with no DST.
- *
- * `Temporal.ZonedDateTime` is the only Temporal type to contain a time zone.
- * Other types, like `Temporal.Instant` and `Temporal.PlainDateTime`, do not
- * contain any time zone information, and a `Temporal.TimeZone` object is
- * required to convert between them.
- *
- * See https://tc39.es/proposal-temporal/docs/timezone.html for more details.
- *
- * @category Temporal
- * @experimental
- */
- export class TimeZone implements TimeZoneProtocol {
- static from(timeZone: TimeZoneLike): Temporal.TimeZone | TimeZoneProtocol;
- constructor(timeZoneIdentifier: string);
- readonly id: string;
- equals(timeZone: TimeZoneLike): boolean;
- getOffsetNanosecondsFor(instant: Temporal.Instant | string): number;
- getOffsetStringFor(instant: Temporal.Instant | string): string;
- getPlainDateTimeFor(
- instant: Temporal.Instant | string,
- calendar?: CalendarLike,
- ): Temporal.PlainDateTime;
- getInstantFor(
- dateTime: Temporal.PlainDateTime | PlainDateTimeLike | string,
- options?: ToInstantOptions,
- ): Temporal.Instant;
- getNextTransition(
- startingPoint: Temporal.Instant | string,
- ): Temporal.Instant | null;
- getPreviousTransition(
- startingPoint: Temporal.Instant | string,
- ): Temporal.Instant | null;
- getPossibleInstantsFor(
- dateTime: Temporal.PlainDateTime | PlainDateTimeLike | string,
- ): Temporal.Instant[];
- toString(): string;
- toJSON(): string;
- readonly [Symbol.toStringTag]: "Temporal.TimeZone";
- }
- /**
- * @category Temporal
- * @experimental
- */
- export type PlainYearMonthLike = {
- era?: string | undefined;
- eraYear?: number | undefined;
- year?: number;
- month?: number;
- monthCode?: string;
- calendar?: CalendarLike;
- };
- /**
- * A `Temporal.PlainYearMonth` represents a particular month on the calendar. For
- * example, it could be used to represent a particular instance of a monthly
- * recurring event, like "the June 2019 meeting".
- *
- * See https://tc39.es/proposal-temporal/docs/yearmonth.html for more details.
- *
- * @category Temporal
- * @experimental
- */
- export class PlainYearMonth {
- static from(
- item: Temporal.PlainYearMonth | PlainYearMonthLike | string,
- options?: AssignmentOptions,
- ): Temporal.PlainYearMonth;
- static compare(
- one: Temporal.PlainYearMonth | PlainYearMonthLike | string,
- two: Temporal.PlainYearMonth | PlainYearMonthLike | string,
- ): ComparisonResult;
- constructor(
- isoYear: number,
- isoMonth: number,
- calendar?: CalendarLike,
- referenceISODay?: number,
- );
- readonly era: string | undefined;
- readonly eraYear: number | undefined;
- readonly year: number;
- readonly month: number;
- readonly monthCode: string;
- readonly calendarId: string;
- getCalendar(): CalendarProtocol;
- readonly daysInMonth: number;
- readonly daysInYear: number;
- readonly monthsInYear: number;
- readonly inLeapYear: boolean;
- equals(
- other: Temporal.PlainYearMonth | PlainYearMonthLike | string,
- ): boolean;
- with(
- yearMonthLike: PlainYearMonthLike,
- options?: AssignmentOptions,
- ): Temporal.PlainYearMonth;
- add(
- durationLike: Temporal.Duration | DurationLike | string,
- options?: ArithmeticOptions,
- ): Temporal.PlainYearMonth;
- subtract(
- durationLike: Temporal.Duration | DurationLike | string,
- options?: ArithmeticOptions,
- ): Temporal.PlainYearMonth;
- until(
- other: Temporal.PlainYearMonth | PlainYearMonthLike | string,
- options?: DifferenceOptions<"year" | "month">,
- ): Temporal.Duration;
- since(
- other: Temporal.PlainYearMonth | PlainYearMonthLike | string,
- options?: DifferenceOptions<"year" | "month">,
- ): Temporal.Duration;
- toPlainDate(day: { day: number }): Temporal.PlainDate;
- getISOFields(): PlainDateISOFields;
- toLocaleString(
- locales?: string | string[],
- options?: Intl.DateTimeFormatOptions,
- ): string;
- toJSON(): string;
- toString(options?: ShowCalendarOption): string;
- valueOf(): never;
- readonly [Symbol.toStringTag]: "Temporal.PlainYearMonth";
- }
- /**
- * @category Temporal
- * @experimental
- */
- export type ZonedDateTimeLike = {
- era?: string | undefined;
- eraYear?: number | undefined;
- year?: number;
- month?: number;
- monthCode?: string;
- day?: number;
- hour?: number;
- minute?: number;
- second?: number;
- millisecond?: number;
- microsecond?: number;
- nanosecond?: number;
- offset?: string;
- timeZone?: TimeZoneLike;
- calendar?: CalendarLike;
- };
- /**
- * @category Temporal
- * @experimental
- */
- export type ZonedDateTimeISOFields = {
- isoYear: number;
- isoMonth: number;
- isoDay: number;
- isoHour: number;
- isoMinute: number;
- isoSecond: number;
- isoMillisecond: number;
- isoMicrosecond: number;
- isoNanosecond: number;
- offset: string;
- timeZone: string | TimeZoneProtocol;
- calendar: string | CalendarProtocol;
- };
- /**
- * @category Temporal
- * @experimental
- */
- export class ZonedDateTime {
- static from(
- item: Temporal.ZonedDateTime | ZonedDateTimeLike | string,
- options?: ZonedDateTimeAssignmentOptions,
- ): ZonedDateTime;
- static compare(
- one: Temporal.ZonedDateTime | ZonedDateTimeLike | string,
- two: Temporal.ZonedDateTime | ZonedDateTimeLike | string,
- ): ComparisonResult;
- constructor(
- epochNanoseconds: bigint,
- timeZone: TimeZoneLike,
- calendar?: CalendarLike,
- );
- readonly era: string | undefined;
- readonly eraYear: number | undefined;
- readonly year: number;
- readonly month: number;
- readonly monthCode: string;
- readonly day: number;
- readonly hour: number;
- readonly minute: number;
- readonly second: number;
- readonly millisecond: number;
- readonly microsecond: number;
- readonly nanosecond: number;
- readonly timeZoneId: string;
- getTimeZone(): TimeZoneProtocol;
- readonly calendarId: string;
- getCalendar(): CalendarProtocol;
- readonly dayOfWeek: number;
- readonly dayOfYear: number;
- readonly weekOfYear: number;
- readonly yearOfWeek: number;
- readonly hoursInDay: number;
- readonly daysInWeek: number;
- readonly daysInMonth: number;
- readonly daysInYear: number;
- readonly monthsInYear: number;
- readonly inLeapYear: boolean;
- readonly offsetNanoseconds: number;
- readonly offset: string;
- readonly epochSeconds: number;
- readonly epochMilliseconds: number;
- readonly epochMicroseconds: bigint;
- readonly epochNanoseconds: bigint;
- equals(other: Temporal.ZonedDateTime | ZonedDateTimeLike | string): boolean;
- with(
- zonedDateTimeLike: ZonedDateTimeLike,
- options?: ZonedDateTimeAssignmentOptions,
- ): Temporal.ZonedDateTime;
- withPlainTime(
- timeLike?: Temporal.PlainTime | PlainTimeLike | string,
- ): Temporal.ZonedDateTime;
- withPlainDate(
- dateLike: Temporal.PlainDate | PlainDateLike | string,
- ): Temporal.ZonedDateTime;
- withCalendar(calendar: CalendarLike): Temporal.ZonedDateTime;
- withTimeZone(timeZone: TimeZoneLike): Temporal.ZonedDateTime;
- add(
- durationLike: Temporal.Duration | DurationLike | string,
- options?: ArithmeticOptions,
- ): Temporal.ZonedDateTime;
- subtract(
- durationLike: Temporal.Duration | DurationLike | string,
- options?: ArithmeticOptions,
- ): Temporal.ZonedDateTime;
- until(
- other: Temporal.ZonedDateTime | ZonedDateTimeLike | string,
- options?: Temporal.DifferenceOptions<
- | "year"
- | "month"
- | "week"
- | "day"
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond"
- >,
- ): Temporal.Duration;
- since(
- other: Temporal.ZonedDateTime | ZonedDateTimeLike | string,
- options?: Temporal.DifferenceOptions<
- | "year"
- | "month"
- | "week"
- | "day"
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond"
- >,
- ): Temporal.Duration;
- round(
- roundTo: RoundTo<
- | "day"
- | "hour"
- | "minute"
- | "second"
- | "millisecond"
- | "microsecond"
- | "nanosecond"
- >,
- ): Temporal.ZonedDateTime;
- startOfDay(): Temporal.ZonedDateTime;
- toInstant(): Temporal.Instant;
- toPlainDateTime(): Temporal.PlainDateTime;
- toPlainDate(): Temporal.PlainDate;
- toPlainYearMonth(): Temporal.PlainYearMonth;
- toPlainMonthDay(): Temporal.PlainMonthDay;
- toPlainTime(): Temporal.PlainTime;
- getISOFields(): ZonedDateTimeISOFields;
- toLocaleString(
- locales?: string | string[],
- options?: Intl.DateTimeFormatOptions,
- ): string;
- toJSON(): string;
- toString(options?: ZonedDateTimeToStringOptions): string;
- valueOf(): never;
- readonly [Symbol.toStringTag]: "Temporal.ZonedDateTime";
- }
- /**
- * The `Temporal.Now` object has several methods which give information about
- * the current date, time, and time zone.
- *
- * See https://tc39.es/proposal-temporal/docs/now.html for more details.
- *
- * @category Temporal
- * @experimental
- */
- export const Now: {
- /**
- * Get the exact system date and time as a `Temporal.Instant`.
- *
- * This method gets the current exact system time, without regard to
- * calendar or time zone. This is a good way to get a timestamp for an
- * event, for example. It works like the old-style JavaScript `Date.now()`,
- * but with nanosecond precision instead of milliseconds.
- *
- * Note that a `Temporal.Instant` doesn't know about time zones. For the
- * exact time in a specific time zone, use `Temporal.Now.zonedDateTimeISO`
- * or `Temporal.Now.zonedDateTime`.
- */
- instant: () => Temporal.Instant;
- /**
- * Get the current calendar date and clock time in a specific calendar and
- * time zone.
- *
- * The `calendar` parameter is required. When using the ISO 8601 calendar or
- * if you don't understand the need for or implications of a calendar, then
- * a more ergonomic alternative to this method is
- * `Temporal.Now.zonedDateTimeISO()`.
- *
- * @param {CalendarLike} [calendar] - calendar identifier, or
- * a `Temporal.Calendar` instance, or an object implementing the calendar
- * protocol.
- * @param {TimeZoneLike} [tzLike] -
- * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone identifier}
- * string (e.g. `'Europe/London'`), `Temporal.TimeZone` instance, or an
- * object implementing the time zone protocol. If omitted, the environment's
- * current time zone will be used.
- */
- zonedDateTime: (
- calendar: CalendarLike,
- tzLike?: TimeZoneLike,
- ) => Temporal.ZonedDateTime;
- /**
- * Get the current calendar date and clock time in a specific time zone,
- * using the ISO 8601 calendar.
- *
- * @param {TimeZoneLike} [tzLike] -
- * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone identifier}
- * string (e.g. `'Europe/London'`), `Temporal.TimeZone` instance, or an
- * object implementing the time zone protocol. If omitted, the environment's
- * current time zone will be used.
- */
- zonedDateTimeISO: (tzLike?: TimeZoneLike) => Temporal.ZonedDateTime;
- /**
- * Get the current calendar date and clock time in a specific calendar and
- * time zone.
- *
- * The calendar is required. When using the ISO 8601 calendar or if you
- * don't understand the need for or implications of a calendar, then a more
- * ergonomic alternative to this method is `Temporal.Now.plainDateTimeISO`.
- *
- * Note that the `Temporal.PlainDateTime` type does not persist the time zone,
- * but retaining the time zone is required for most time-zone-related use
- * cases. Therefore, it's usually recommended to use
- * `Temporal.Now.zonedDateTimeISO` or `Temporal.Now.zonedDateTime` instead
- * of this function.
- *
- * @param {CalendarLike} [calendar] - calendar identifier, or
- * a `Temporal.Calendar` instance, or an object implementing the calendar
- * protocol.
- * @param {TimeZoneLike} [tzLike] -
- * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone identifier}
- * string (e.g. `'Europe/London'`), `Temporal.TimeZone` instance, or an
- * object implementing the time zone protocol. If omitted,
- * the environment's current time zone will be used.
- */
- plainDateTime: (
- calendar: CalendarLike,
- tzLike?: TimeZoneLike,
- ) => Temporal.PlainDateTime;
- /**
- * Get the current date and clock time in a specific time zone, using the
- * ISO 8601 calendar.
- *
- * Note that the `Temporal.PlainDateTime` type does not persist the time zone,
- * but retaining the time zone is required for most time-zone-related use
- * cases. Therefore, it's usually recommended to use
- * `Temporal.Now.zonedDateTimeISO` instead of this function.
- *
- * @param {TimeZoneLike} [tzLike] -
- * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone identifier}
- * string (e.g. `'Europe/London'`), `Temporal.TimeZone` instance, or an
- * object implementing the time zone protocol. If omitted, the environment's
- * current time zone will be used.
- */
- plainDateTimeISO: (tzLike?: TimeZoneLike) => Temporal.PlainDateTime;
- /**
- * Get the current calendar date in a specific calendar and time zone.
- *
- * The calendar is required. When using the ISO 8601 calendar or if you
- * don't understand the need for or implications of a calendar, then a more
- * ergonomic alternative to this method is `Temporal.Now.plainDateISO`.
- *
- * @param {CalendarLike} [calendar] - calendar identifier, or
- * a `Temporal.Calendar` instance, or an object implementing the calendar
- * protocol.
- * @param {TimeZoneLike} [tzLike] -
- * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone identifier}
- * string (e.g. `'Europe/London'`), `Temporal.TimeZone` instance, or an
- * object implementing the time zone protocol. If omitted,
- * the environment's current time zone will be used.
- */
- plainDate: (
- calendar: CalendarLike,
- tzLike?: TimeZoneLike,
- ) => Temporal.PlainDate;
- /**
- * Get the current date in a specific time zone, using the ISO 8601
- * calendar.
- *
- * @param {TimeZoneLike} [tzLike] -
- * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone identifier}
- * string (e.g. `'Europe/London'`), `Temporal.TimeZone` instance, or an
- * object implementing the time zone protocol. If omitted, the environment's
- * current time zone will be used.
- */
- plainDateISO: (tzLike?: TimeZoneLike) => Temporal.PlainDate;
- /**
- * Get the current clock time in a specific time zone, using the ISO 8601 calendar.
- *
- * @param {TimeZoneLike} [tzLike] -
- * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone identifier}
- * string (e.g. `'Europe/London'`), `Temporal.TimeZone` instance, or an
- * object implementing the time zone protocol. If omitted, the environment's
- * current time zone will be used.
- */
- plainTimeISO: (tzLike?: TimeZoneLike) => Temporal.PlainTime;
- /**
- * Get the identifier of the environment's current time zone.
- *
- * This method gets the identifier of the current system time zone. This
- * will usually be a named
- * {@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones|IANA time zone}.
- */
- timeZoneId: () => string;
- readonly [Symbol.toStringTag]: "Temporal.Now";
- };
- }
- /**
- * @category Temporal
- * @experimental
- */
- declare interface Date {
- toTemporalInstant(): Temporal.Instant;
- }
- /**
- * @category Intl
- * @experimental
- */
- declare namespace Intl {
- /**
- * @category Intl
- * @experimental
- */
- export type Formattable =
- | Date
- | Temporal.Instant
- | Temporal.ZonedDateTime
- | Temporal.PlainDate
- | Temporal.PlainTime
- | Temporal.PlainDateTime
- | Temporal.PlainYearMonth
- | Temporal.PlainMonthDay;
- /**
- * @category Intl
- * @experimental
- */
- export interface DateTimeFormatRangePart {
- source: "shared" | "startRange" | "endRange";
- }
- /**
- * @category Intl
- * @experimental
- */
- export interface DateTimeFormat {
- /**
- * Format a date into a string according to the locale and formatting
- * options of this `Intl.DateTimeFormat` object.
- *
- * @param date The date to format.
- */
- format(date?: Formattable | number): string;
- /**
- * Allow locale-aware formatting of strings produced by
- * `Intl.DateTimeFormat` formatters.
- *
- * @param date The date to format.
- */
- formatToParts(
- date?: Formattable | number,
- ): globalThis.Intl.DateTimeFormatPart[];
- /**
- * Format a date range in the most concise way based on the locale and
- * options provided when instantiating this `Intl.DateTimeFormat` object.
- *
- * @param startDate The start date of the range to format.
- * @param endDate The start date of the range to format. Must be the same
- * type as `startRange`.
- */
- formatRange<T extends Formattable>(startDate: T, endDate: T): string;
- formatRange(startDate: Date | number, endDate: Date | number): string;
- /**
- * Allow locale-aware formatting of tokens representing each part of the
- * formatted date range produced by `Intl.DateTimeFormat` formatters.
- *
- * @param startDate The start date of the range to format.
- * @param endDate The start date of the range to format. Must be the same
- * type as `startRange`.
- */
- formatRangeToParts<T extends Formattable>(
- startDate: T,
- endDate: T,
- ): DateTimeFormatRangePart[];
- formatRangeToParts(
- startDate: Date | number,
- endDate: Date | number,
- ): DateTimeFormatRangePart[];
- }
- /**
- * @category Intl
- * @experimental
- */
- export interface DateTimeFormatOptions {
- // TODO: remove the props below after TS lib declarations are updated
- dayPeriod?: "narrow" | "short" | "long";
- dateStyle?: "full" | "long" | "medium" | "short";
- timeStyle?: "full" | "long" | "medium" | "short";
- }
- }
- /**
- * A typed array of 16-bit float values. The contents are initialized to 0. If the requested number
- * of bytes could not be allocated an exception is raised.
- *
- * @category Platform
- * @experimental
- */
- declare interface Float16Array {
- /**
- * The size in bytes of each element in the array.
- */
- readonly BYTES_PER_ELEMENT: number;
- /**
- * The ArrayBuffer instance referenced by the array.
- */
- readonly buffer: ArrayBufferLike;
- /**
- * The length in bytes of the array.
- */
- readonly byteLength: number;
- /**
- * The offset in bytes of the array.
- */
- readonly byteOffset: number;
- /**
- * Returns the this object after copying a section of the array identified by start and end
- * to the same array starting at position target
- * @param target If target is negative, it is treated as length+target where length is the
- * length of the array.
- * @param start If start is negative, it is treated as length+start. If end is negative, it
- * is treated as length+end.
- * @param end If not specified, length of the this object is used as its default value.
- */
- copyWithin(target: number, start: number, end?: number): this;
- /**
- * Determines whether all the members of an array satisfy the specified test.
- * @param predicate A function that accepts up to three arguments. The every method calls
- * the predicate function for each element in the array until the predicate returns a value
- * which is coercible to the Boolean value false, or until the end of the array.
- * @param thisArg An object to which the this keyword can refer in the predicate function.
- * If thisArg is omitted, undefined is used as the this value.
- */
- every(
- predicate: (value: number, index: number, array: Float16Array) => unknown,
- thisArg?: any,
- ): boolean;
- /**
- * Changes all array elements from `start` to `end` index to a static `value` and returns the modified array
- * @param value value to fill array section with
- * @param start index to start filling the array at. If start is negative, it is treated as
- * length+start where length is the length of the array.
- * @param end index to stop filling the array at. If end is negative, it is treated as
- * length+end.
- */
- fill(value: number, start?: number, end?: number): this;
- /**
- * Returns the elements of an array that meet the condition specified in a callback function.
- * @param predicate A function that accepts up to three arguments. The filter method calls
- * the predicate function one time for each element in the array.
- * @param thisArg An object to which the this keyword can refer in the predicate function.
- * If thisArg is omitted, undefined is used as the this value.
- */
- filter(
- predicate: (value: number, index: number, array: Float16Array) => any,
- thisArg?: any,
- ): Float16Array;
- /**
- * Returns the value of the first element in the array where predicate is true, and undefined
- * otherwise.
- * @param predicate find calls predicate once for each element of the array, in ascending
- * order, until it finds one where predicate returns true. If such an element is found, find
- * immediately returns that element value. Otherwise, find returns undefined.
- * @param thisArg If provided, it will be used as the this value for each invocation of
- * predicate. If it is not provided, undefined is used instead.
- */
- find(
- predicate: (value: number, index: number, obj: Float16Array) => boolean,
- thisArg?: any,
- ): number | undefined;
- /**
- * Returns the index of the first element in the array where predicate is true, and -1
- * otherwise.
- * @param predicate find calls predicate once for each element of the array, in ascending
- * order, until it finds one where predicate returns true. If such an element is found,
- * findIndex immediately returns that element index. Otherwise, findIndex returns -1.
- * @param thisArg If provided, it will be used as the this value for each invocation of
- * predicate. If it is not provided, undefined is used instead.
- */
- findIndex(
- predicate: (value: number, index: number, obj: Float16Array) => boolean,
- thisArg?: any,
- ): number;
- /**
- * Performs the specified action for each element in an array.
- * @param callbackfn A function that accepts up to three arguments. forEach calls the
- * callbackfn function one time for each element in the array.
- * @param thisArg An object to which the this keyword can refer in the callbackfn function.
- * If thisArg is omitted, undefined is used as the this value.
- */
- forEach(
- callbackfn: (value: number, index: number, array: Float16Array) => void,
- thisArg?: any,
- ): void;
- /**
- * Returns the index of the first occurrence of a value in an array.
- * @param searchElement The value to locate in the array.
- * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
- * search starts at index 0.
- */
- indexOf(searchElement: number, fromIndex?: number): number;
- /**
- * Adds all the elements of an array separated by the specified separator string.
- * @param separator A string used to separate one element of an array from the next in the
- * resulting String. If omitted, the array elements are separated with a comma.
- */
- join(separator?: string): string;
- /**
- * Returns the index of the last occurrence of a value in an array.
- * @param searchElement The value to locate in the array.
- * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the
- * search starts at index 0.
- */
- lastIndexOf(searchElement: number, fromIndex?: number): number;
- /**
- * The length of the array.
- */
- readonly length: number;
- /**
- * Calls a defined callback function on each element of an array, and returns an array that
- * contains the results.
- * @param callbackfn A function that accepts up to three arguments. The map method calls the
- * callbackfn function one time for each element in the array.
- * @param thisArg An object to which the this keyword can refer in the callbackfn function.
- * If thisArg is omitted, undefined is used as the this value.
- */
- map(
- callbackfn: (value: number, index: number, array: Float16Array) => number,
- thisArg?: any,
- ): Float16Array;
- /**
- * Calls the specified callback function for all the elements in an array. The return value of
- * the callback function is the accumulated result, and is provided as an argument in the next
- * call to the callback function.
- * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
- * callbackfn function one time for each element in the array.
- * @param initialValue If initialValue is specified, it is used as the initial value to start
- * the accumulation. The first call to the callbackfn function provides this value as an argument
- * instead of an array value.
- */
- reduce(
- callbackfn: (
- previousValue: number,
- currentValue: number,
- currentIndex: number,
- array: Float16Array,
- ) => number,
- ): number;
- reduce(
- callbackfn: (
- previousValue: number,
- currentValue: number,
- currentIndex: number,
- array: Float16Array,
- ) => number,
- initialValue: number,
- ): number;
- /**
- * Calls the specified callback function for all the elements in an array. The return value of
- * the callback function is the accumulated result, and is provided as an argument in the next
- * call to the callback function.
- * @param callbackfn A function that accepts up to four arguments. The reduce method calls the
- * callbackfn function one time for each element in the array.
- * @param initialValue If initialValue is specified, it is used as the initial value to start
- * the accumulation. The first call to the callbackfn function provides this value as an argument
- * instead of an array value.
- */
- reduce<U>(
- callbackfn: (
- previousValue: U,
- currentValue: number,
- currentIndex: number,
- array: Float16Array,
- ) => U,
- initialValue: U,
- ): U;
- /**
- * Calls the specified callback function for all the elements in an array, in descending order.
- * The return value of the callback function is the accumulated result, and is provided as an
- * argument in the next call to the callback function.
- * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
- * the callbackfn function one time for each element in the array.
- * @param initialValue If initialValue is specified, it is used as the initial value to start
- * the accumulation. The first call to the callbackfn function provides this value as an
- * argument instead of an array value.
- */
- reduceRight(
- callbackfn: (
- previousValue: number,
- currentValue: number,
- currentIndex: number,
- array: Float16Array,
- ) => number,
- ): number;
- reduceRight(
- callbackfn: (
- previousValue: number,
- currentValue: number,
- currentIndex: number,
- array: Float16Array,
- ) => number,
- initialValue: number,
- ): number;
- /**
- * Calls the specified callback function for all the elements in an array, in descending order.
- * The return value of the callback function is the accumulated result, and is provided as an
- * argument in the next call to the callback function.
- * @param callbackfn A function that accepts up to four arguments. The reduceRight method calls
- * the callbackfn function one time for each element in the array.
- * @param initialValue If initialValue is specified, it is used as the initial value to start
- * the accumulation. The first call to the callbackfn function provides this value as an argument
- * instead of an array value.
- */
- reduceRight<U>(
- callbackfn: (
- previousValue: U,
- currentValue: number,
- currentIndex: number,
- array: Float16Array,
- ) => U,
- initialValue: U,
- ): U;
- /**
- * Reverses the elements in an Array.
- */
- reverse(): Float16Array;
- /**
- * Sets a value or an array of values.
- * @param array A typed or untyped array of values to set.
- * @param offset The index in the current array at which the values are to be written.
- */
- set(array: ArrayLike<number>, offset?: number): void;
- /**
- * Returns a section of an array.
- * @param start The beginning of the specified portion of the array.
- * @param end The end of the specified portion of the array. This is exclusive of the element at the index 'end'.
- */
- slice(start?: number, end?: number): Float16Array;
- /**
- * Determines whether the specified callback function returns true for any element of an array.
- * @param predicate A function that accepts up to three arguments. The some method calls
- * the predicate function for each element in the array until the predicate returns a value
- * which is coercible to the Boolean value true, or until the end of the array.
- * @param thisArg An object to which the this keyword can refer in the predicate function.
- * If thisArg is omitted, undefined is used as the this value.
- */
- some(
- predicate: (value: number, index: number, array: Float16Array) => unknown,
- thisArg?: any,
- ): boolean;
- /**
- * Sorts an array.
- * @param compareFn Function used to determine the order of the elements. It is expected to return
- * a negative value if first argument is less than second argument, zero if they're equal and a positive
- * value otherwise. If omitted, the elements are sorted in ascending order.
- * ```ts
- * [11,2,22,1].sort((a, b) => a - b)
- * ```
- */
- sort(compareFn?: (a: number, b: number) => number): this;
- /**
- * Gets a new Float16Array view of the ArrayBuffer store for this array, referencing the elements
- * at begin, inclusive, up to end, exclusive.
- * @param begin The index of the beginning of the array.
- * @param end The index of the end of the array.
- */
- subarray(begin?: number, end?: number): Float16Array;
- /**
- * Converts a number to a string by using the current locale.
- */
- toLocaleString(): string;
- /**
- * Returns a string representation of an array.
- */
- toString(): string;
- /** Returns the primitive value of the specified object. */
- valueOf(): Float16Array;
- [index: number]: number;
- }
- /**
- * @category Platform
- * @experimental
- */
- declare interface Float16ArrayConstructor {
- readonly prototype: Float16Array;
- new (length: number): Float16Array;
- new (array: ArrayLike<number> | ArrayBufferLike): Float16Array;
- new (
- buffer: ArrayBufferLike,
- byteOffset?: number,
- length?: number,
- ): Float16Array;
- /**
- * The size in bytes of each element in the array.
- */
- readonly BYTES_PER_ELEMENT: number;
- /**
- * Returns a new array from a set of elements.
- * @param items A set of elements to include in the new array object.
- */
- of(...items: number[]): Float16Array;
- /**
- * Creates an array from an array-like or iterable object.
- * @param arrayLike An array-like or iterable object to convert to an array.
- */
- from(arrayLike: ArrayLike<number>): Float16Array;
- /**
- * Creates an array from an array-like or iterable object.
- * @param arrayLike An array-like or iterable object to convert to an array.
- * @param mapfn A mapping function to call on every element of the array.
- * @param thisArg Value of 'this' used to invoke the mapfn.
- */
- from<T>(
- arrayLike: ArrayLike<T>,
- mapfn: (v: T, k: number) => number,
- thisArg?: any,
- ): Float16Array;
- }
- /**
- * @category Platform
- * @experimental
- */
- declare var Float16Array: Float16ArrayConstructor;
- /**
- * @category Platform
- * @experimental
- */
- declare interface Float16 {
- [Symbol.iterator](): IterableIterator<number>;
- /**
- * Returns an array of key, value pairs for every entry in the array
- */
- entries(): IterableIterator<[number, number]>;
- /**
- * Returns an list of keys in the array
- */
- keys(): IterableIterator<number>;
- /**
- * Returns an list of values in the array
- */
- values(): IterableIterator<number>;
- }
- /**
- * @category Platform
- * @experimental
- */
- declare interface Float16Constructor {
- new (elements: Iterable<number>): Float16;
- /**
- * Creates an array from an array-like or iterable object.
- * @param arrayLike An array-like or iterable object to convert to an array.
- * @param mapfn A mapping function to call on every element of the array.
- * @param thisArg Value of 'this' used to invoke the mapfn.
- */
- from(
- arrayLike: Iterable<number>,
- mapfn?: (v: number, k: number) => number,
- thisArg?: any,
- ): Float16;
- }
- /**
- * @category Platform
- * @experimental
- */
- declare interface Float16Array {
- readonly [Symbol.toStringTag]: "Float16Array";
- }
- /**
- * @category Platform
- * @experimental
- */
- declare interface Float16Array {
- /**
- * Determines whether an array includes a certain element, returning true or false as appropriate.
- * @param searchElement The element to search for.
- * @param fromIndex The position in this array at which to begin searching for searchElement.
- */
- includes(searchElement: number, fromIndex?: number): boolean;
- }
- /**
- * @category Platform
- * @experimental
- */
- declare interface Float16ArrayConstructor {
- new (): Float16Array;
- }
- /**
- * @category Platform
- * @experimental
- */
- declare interface Float16Array {
- /**
- * Returns the item located at the specified index.
- * @param index The zero-based index of the desired code unit. A negative index will count back from the last item.
- */
- at(index: number): number | undefined;
- }
- /**
- * @category Platform
- * @experimental
- */
- declare interface Float16Array {
- /**
- * Returns the value of the last element in the array where predicate is true, and undefined
- * otherwise.
- * @param predicate findLast calls predicate once for each element of the array, in descending
- * order, until it finds one where predicate returns true. If such an element is found, findLast
- * immediately returns that element value. Otherwise, findLast returns undefined.
- * @param thisArg If provided, it will be used as the this value for each invocation of
- * predicate. If it is not provided, undefined is used instead.
- */
- findLast<S extends number>(
- predicate: (
- value: number,
- index: number,
- array: Float16Array,
- ) => value is S,
- thisArg?: any,
- ): S | undefined;
- findLast(
- predicate: (
- value: number,
- index: number,
- array: Float16Array,
- ) => unknown,
- thisArg?: any,
- ): number | undefined;
- /**
- * Returns the index of the last element in the array where predicate is true, and -1
- * otherwise.
- * @param predicate findLastIndex calls predicate once for each element of the array, in descending
- * order, until it finds one where predicate returns true. If such an element is found,
- * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.
- * @param thisArg If provided, it will be used as the this value for each invocation of
- * predicate. If it is not provided, undefined is used instead.
- */
- findLastIndex(
- predicate: (
- value: number,
- index: number,
- array: Float16Array,
- ) => unknown,
- thisArg?: any,
- ): number;
- /**
- * Copies the array and returns the copy with the elements in reverse order.
- */
- toReversed(): Float16Array;
- /**
- * Copies and sorts the array.
- * @param compareFn Function used to determine the order of the elements. It is expected to return
- * a negative value if the first argument is less than the second argument, zero if they're equal, and a positive
- * value otherwise. If omitted, the elements are sorted in ascending order.
- * ```ts
- * const myNums = Float16Array.from([11.25, 2, -22.5, 1]);
- * myNums.toSorted((a, b) => a - b) // Float16Array(4) [-22.5, 1, 2, 11.5]
- * ```
- */
- toSorted(compareFn?: (a: number, b: number) => number): Float16Array;
- /**
- * Copies the array and inserts the given number at the provided index.
- * @param index The index of the value to overwrite. If the index is
- * negative, then it replaces from the end of the array.
- * @param value The value to insert into the copied array.
- * @returns A copy of the original array with the inserted value.
- */
- with(index: number, value: number): Float16Array;
- }
- /**
- * @category Platform
- * @experimental
- */
- declare interface DataView {
- /**
- * Gets the Float16 value at the specified byte offset from the start of the view. There is
- * no alignment constraint; multi-byte values may be fetched from any offset.
- * @param byteOffset The place in the buffer at which the value should be retrieved.
- * @param littleEndian If false or undefined, a big-endian value should be read.
- */
- getFloat16(byteOffset: number, littleEndian?: boolean): number;
- /**
- * Stores an Float16 value at the specified byte offset from the start of the view.
- * @param byteOffset The place in the buffer at which the value should be set.
- * @param value The value to set.
- * @param littleEndian If false or undefined, a big-endian value should be written.
- */
- setFloat16(byteOffset: number, value: number, littleEndian?: boolean): void;
- }
|