Socket
Socket
Sign inDemoInstall

tatami-ng

Package Overview
Dependencies
Maintainers
0
Versions
45
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tatami-ng - npm Package Compare versions

Comparing version 0.4.15 to 0.4.16

6

dist/browser/index.js

@@ -1,2 +0,2 @@

var I1=Object.defineProperty;var c=(w,L)=>{for(var N in L)I1(w,N,{get:L[N],enumerable:!0,configurable:!0,set:(E)=>L[N]=()=>E})};var P1=(w,L)=>()=>(w&&(L=w(w=0)),L);var p=((w)=>typeof require!=="undefined"?require:typeof Proxy!=="undefined"?new Proxy(w,{get:(L,N)=>(typeof require!=="undefined"?require:L)[N]}):w)(function(w){if(typeof require!=="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+w+'" is not supported')});var R={};c(R,{uptime:()=>{{return G1}},type:()=>{{return A1}},totalmem:()=>{{return B1}},tmpdir:()=>{{return b1}},release:()=>{{return y1}},platform:()=>{{return h1}},networkInterfaces:()=>{{return i1}},loadavg:()=>{{return z1}},hostname:()=>{{return R1}},homedir:()=>{{return k1}},getNetworkInterfaces:()=>{{return r1}},freemem:()=>{{return j1}},endianness:()=>{{return D1}},default:()=>{{return x1}},cpus:()=>{{return F1}},arch:()=>{{return g1}},EOL:()=>{{return l1}}});var Z1,n,T1,f1,u1,C1,_1,q1,v1,d1,t,x1,D1,R1,z1,G1,j1,B1,F1,A1,y1,g1,h1,b1,l1,k1,i1,r1;var z=P1(()=>{Z1=Object.create,n=Object.defineProperty,T1=Object.getOwnPropertyDescriptor,f1=Object.getOwnPropertyNames,u1=Object.getPrototypeOf,C1=Object.prototype.hasOwnProperty,_1=(w,L)=>()=>(L||w((L={exports:{}}).exports,L),L.exports),q1=(w,L,N,E)=>{if(L&&typeof L=="object"||typeof L=="function")for(let M of f1(L))!C1.call(w,M)&&M!==N&&n(w,M,{get:()=>L[M],enumerable:!(E=T1(L,M))||E.enumerable});return w},v1=(w,L,N)=>(N=w!=null?Z1(u1(w)):{},q1(L||!w||!w.__esModule?n(N,"default",{value:w,enumerable:!0}):N,w)),d1=_1((w)=>{w.endianness=function(){return"LE"},w.hostname=function(){return typeof location<"u"?location.hostname:""},w.loadavg=function(){return[]},w.uptime=function(){return 0},w.freemem=function(){return Number.MAX_VALUE},w.totalmem=function(){return Number.MAX_VALUE},w.cpus=function(){return[]},w.type=function(){return"Browser"},w.release=function(){return typeof navigator<"u"?navigator.appVersion:""},w.networkInterfaces=w.getNetworkInterfaces=function(){return{}},w.arch=function(){return"javascript"},w.platform=function(){return"browser"},w.tmpdir=w.tmpDir=function(){return"/tmp"},w.EOL=`
var I1=Object.defineProperty;var c=(w,L)=>{for(var N in L)I1(w,N,{get:L[N],enumerable:!0,configurable:!0,set:(E)=>L[N]=()=>E})};var P1=(w,L)=>()=>(w&&(L=w(w=0)),L);var p=((w)=>typeof require!=="undefined"?require:typeof Proxy!=="undefined"?new Proxy(w,{get:(L,N)=>(typeof require!=="undefined"?require:L)[N]}):w)(function(w){if(typeof require!=="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+w+'" is not supported')});var R={};c(R,{uptime:()=>G1,type:()=>A1,totalmem:()=>B1,tmpdir:()=>b1,release:()=>y1,platform:()=>h1,networkInterfaces:()=>i1,loadavg:()=>z1,hostname:()=>R1,homedir:()=>k1,getNetworkInterfaces:()=>r1,freemem:()=>j1,endianness:()=>D1,default:()=>x1,cpus:()=>F1,arch:()=>g1,EOL:()=>l1});var Z1,n,T1,f1,u1,C1,_1,q1,v1,d1,t,x1,D1,R1,z1,G1,j1,B1,F1,A1,y1,g1,h1,b1,l1,k1,i1,r1;var z=P1(()=>{Z1=Object.create,n=Object.defineProperty,T1=Object.getOwnPropertyDescriptor,f1=Object.getOwnPropertyNames,u1=Object.getPrototypeOf,C1=Object.prototype.hasOwnProperty,_1=(w,L)=>()=>(L||w((L={exports:{}}).exports,L),L.exports),q1=(w,L,N,E)=>{if(L&&typeof L=="object"||typeof L=="function")for(let M of f1(L))!C1.call(w,M)&&M!==N&&n(w,M,{get:()=>L[M],enumerable:!(E=T1(L,M))||E.enumerable});return w},v1=(w,L,N)=>(N=w!=null?Z1(u1(w)):{},q1(L||!w||!w.__esModule?n(N,"default",{value:w,enumerable:!0}):N,w)),d1=_1((w)=>{w.endianness=function(){return"LE"},w.hostname=function(){return typeof location<"u"?location.hostname:""},w.loadavg=function(){return[]},w.uptime=function(){return 0},w.freemem=function(){return Number.MAX_VALUE},w.totalmem=function(){return Number.MAX_VALUE},w.cpus=function(){return[]},w.type=function(){return"Browser"},w.release=function(){return typeof navigator<"u"?navigator.appVersion:""},w.networkInterfaces=w.getNetworkInterfaces=function(){return{}},w.arch=function(){return"javascript"},w.platform=function(){return"browser"},w.tmpdir=w.tmpDir=function(){return"/tmp"},w.EOL=`
`,w.homedir=function(){return"/"}}),t=v1(d1()),x1=t.default,{endianness:D1,hostname:R1,loadavg:z1,uptime:G1,freemem:j1,totalmem:B1,cpus:F1,type:A1,release:y1,arch:g1,platform:h1,tmpdir:b1,EOL:l1,homedir:k1,networkInterfaces:i1,getNetworkInterfaces:r1}=t.default});var T={bun:"bun",deno:"deno",node:"node",workerd:"workerd",browser:"browser"},I=()=>{},f="$tatami-ng_group",u={1:12.706204736432102,2:4.3026527299112765,3:3.182446305284264,4:2.7764451051977996,5:2.57058183661474,6:2.446911848791681,7:2.3646242510102997,8:2.306004135033371,9:2.262157162740992,10:2.2281388519649385,11:2.200985160082949,12:2.178812829663418,13:2.160368656461013,14:2.1447866879169277,15:2.131449545559323,16:2.1199052992210112,17:2.109815577833181,18:2.10092204024096,19:2.0930240544082634,20:2.085963447265837,21:2.0796138447276626,22:2.073873067904015,23:2.068657610419041,24:2.063898561628021,25:2.0595385527532946,26:2.0555294386428713,27:2.0518305164802837,28:2.048407141795244,29:2.0452296421327034,30:2.042272456301238,31:2.0395134463964077,32:2.0369333434601016,33:2.0345152974493383,34:2.0322445093177186,35:2.030107928250343,36:2.0280940009804507,37:2.0261924630291097,38:2.0243941645751367,39:2.0226909117347285,40:2.021075382995338,41:2.019540963982894,42:2.0180816970958815,43:2.0166921941428138,44:2.0153675699129416,45:2.0141033848332928,46:2.012895595294589,47:2.011740510475755,48:2.010634754696446,49:2.0095752344892093,50:2.0085591097152062,51:2.0075837681558824,52:2.0066468031022118,53:2.00574599353695,54:2.0048792865665233,55:2.0040447818101814,56:2.003240717496698,57:2.002465458054599,58:2.0017174830120927,59:2.0009953770482105,60:2.000297821058262,61:1.9996235841149783,62:1.9989715162223116,63:1.998340541772196,64:1.9977296536259739,65:1.9971379077520126,66:1.9965644183594748,67:1.996008353475506,68:1.9954689309194023,69:1.994945414632814,70:1.9944371113297732,71:1.9939433674345044,72:1.9934635662785831,73:1.9929971255321668,74:1.9925434948468204,75:1.9921021536898658,76:1.9916726093523491,77:1.9912543951146042,78:1.9908470685550523,79:1.9904502099893606,80:1.9900634210283845,81:1.9896863232444832,82:1.989318556936819,83:1.9889597799871794,84:1.9886096667986737,85:1.988267907310378,86:1.9879342060816723,87:1.9876082814405773,88:1.987289864690939,89:1.9869786993737681,90:1.9866745405784685,91:1.9863771543000652,92:1.9860863168388938,93:1.985801814239503,94:1.9855234417658303,95:1.9852510034099267,96:1.9849843114317696,97:1.9847231859278835,98:1.9844674544266925,99:1.9842169515086832,100:1.983971518449634,101:1.9837310028852815,102:1.9834952584959407,103:1.9832641447097104,104:1.9830375264229902,105:1.9828152737371547,106:1.9825972617102912,107:1.9823833701230178,108:1.9821734832574516,109:1.9819674896884745,110:1.9817652820865104,111:1.981566757031071,112:1.9813718148344008,113:1.9811803593745805,114:1.9809922979375068,115:1.9808075410672004,116:1.980626002423938,117:1.9804475986497296,118:1.9802722492407063,119:1.9800998764260065,120:1.979930405052777,121:1.9797637624769306,122:1.9795998784593314,123:1.97943868506709,124:1.979280116579683,125:1.9791241093996175,126:1.9789706019673938,127:1.978819534680521,128:1.9786708498163625,129:1.9785244914586055,130:1.9783804054271532,131:1.9782385392112587,132:1.9780988419057237,133:1.977961264150002,134:1.9778257580700531,135:1.9776922772228045,136:1.9775607765430836,137:1.977431212292894,138:1.9773035420129166,139:1.9771777244761224,140:1.9770537196433886,141:1.9769314886210223,142:1.97681099362009,143:1.9766921979174685,144:1.9765750658185368,145:1.9764595626214163,146:1.9763456545827007,147:1.9762333088845883,148:1.9761224936033637,149:1.9760131776791554,150:1.9759053308869141,151:1.9757989238085507,152:1.975693927806187,153:1.9755903149964589,154:1.9754880582258323,155:1.9753871310468787,156:1.9752875076954728,157:1.9751891630688665,158:1.9750920727046015,159:1.9749962127602256,160:1.9749015599937723,161:1.9748080917449764,162:1.9747157859171882,163:1.9746246209599583,164:1.9745345758522659,165:1.9744456300863593,166:1.9743577636521858,167:1.9742709570223849,168:1.974185191137821,169:1.9741004473936339,170:1.9740167076257829,171:1.9739339540980692,172:1.9738521694896138,173:1.9737713368827694,174:1.9736914397514562,175:1.9736124619498976,176:1.9735343877017435,177:1.9734572015895646,178:1.9733808885447033,179:1.9733054338374667,180:1.973230823067649,181:1.9731570421553692,182:1.9730840773322162,183:1.9730119151326795,184:1.9729405423858692,185:1.9728699462074992,186:1.9728001139921352,187:1.9727310334056907,188:1.9726626923781656,189:1.9725950790966158,190:1.9725281819983451,191:1.972461989764315,192:1.9723964913127596,193:1.9723316757930012,194:1.9722675325794565,195:1.972204051265833,196:1.9721412216594971,197:1.9720790337760221,198:1.972017477833896,199:1.9719565442493954,200:1.9718962236316093,201:1.9718365067776158,202:1.971777384667801,203:1.971718848461318,204:1.9716608894916787,205:1.971603499262479,206:1.9715466694432433,207:1.9714903918653972,208:1.9714346585183509,209:1.9713794615456992,210:1.9713247932415296,211:1.9712706460468354,212:1.9712170125460335,213:1.9711638854635767,214:1.971111257660664,215:1.9710591221320446,216:1.9710074720029072,217:1.97095630052586,218:1.9709056010779908,219:1.9708553671580111,220:1.9708055923834753,221:1.970756270488079,222:1.9707073953190282,223:1.9706589608344816,224:1.9706109611010594,225:1.9705633902914228,226:1.9705162426819125,227:1.9704695126502556,228:1.9704231946733297,229:1.9703772833249869,230:1.9703317732739336,231:1.9702866592816697,232:1.9702419362004757,233:1.9701975989714555,234:1.9701536426226303,235:1.9701100622670775,236:1.9700668531011214,237:1.9700240104025675,238:1.9699815295289818,239:1.969939405916016,240:1.9698976350757686,241:1.9698562125951948,242:1.9698151341345516,243:1.9697743954258797,244:1.9697339922715287,245:1.9696939205427133,246:1.9696541761781068,247:1.9696147551824699,248:1.9695756536253115,249:1.9695368676395828,250:1.9694983934204007,251:1.9694602272238055,252:1.9694223653655467,253:1.969384804219895,254:1.9693475402184863,255:1.9693105698491933,256:1.9692738896550193,257:1.9692374962330224,258:1.9692013862332616,259:1.9691655563577715,260:1.9691300033595551,261:1.9690947240416052,262:1.9690597152559448,263:1.9690249739026924,264:1.9689904969291443,265:1.968956281328883,266:1.9689223241409022,267:1.9688886224487527,268:1.9688551733797075,269:1.968821974103945,270:1.9687890218337525,271:1.968756313822743,272:1.968723847365097,273:1.9686916197948103,274:1.9686596284849691,275:1.9686278708470335,276:1.9685963443301415,277:1.968565046420423,278:1.9685339746403347,279:1.9685031265480044,280:1.9684724997365923,281:1.968442091833664,282:1.968411900500579,283:1.9683819234318907,284:1.9683521583547587,285:1.9683226030283762,286:1.9682932552434063,287:1.968264112821431,288:1.9682351736144144,289:1.9682064355041722,290:1.968177896401857,291:1.968149554247451,292:1.9681214070092705,293:1.9680934526834821,294:1.9680656892936232,295:1.968038114890141,296:1.9680107275499321,297:1.9679835253758984,298:1.967956506496507,299:1.9679296690653623,300:1.9679030112607847,301:1.9678765312853979,302:1.967850227365727,303:1.9678240977517998,304:1.967798140716761,305:1.9677723545564905,306:1.967746737589231,307:1.9677212881552217,308:1.967696004616341,309:1.967670885355754,310:1.9676459287775685,311:1.9676211333064957,312:1.9675964973875213,313:1.967572019485578,314:1.967547698085227,315:1.9675235316903468,316:1.9674995188238256,317:1.9674756580272583,318:1.9674519478606556,319:1.96742838690215,320:1.9674049737477135,321:1.9673817070108799,322:1.9673585853224684,323:1.9673356073303163,324:1.9673127716990173,325:1.9672900771096589,326:1.9672675222595717,327:1.9672451058620788,328:1.9672228266462515,329:1.9672006833566689,330:1.9671786747531816,331:1.9671567996106818,332:1.967135056718874,333:1.9671134448820529,334:1.9670919629188843,335:1.9670706096621893,336:1.967049383958733,337:1.9670282846690177,338:1.9670073106670771,339:1.9669864608402783,340:1.966965734089124,341:1.9669451293270586,342:1.9669246454802793,343:1.9669042814875488,344:1.9668840363000124,345:1.966863908881019,346:1.9668438982059417,347:1.966824003262006,348:1.9668042230481186,349:1.9667845565746986,350:1.9667650028635129,351:1.9667455609475144,352:1.9667262298706825,353:1.966707008687866,354:1.9666878964646288,355:1.9666688922770996,356:1.9666499952118222,357:1.9666312043656085,358:1.9666125188453965,359:1.9665939377681074,360:1.9665754602605063,361:1.9665570854590666,362:1.9665388125098342,363:1.966520640568296,364:1.9665025687992495,365:1.966484596376675,366:1.9664667224836099,367:1.9664489463120245,368:1.9664312670626998,369:1.9664136839451096,370:1.9663961961773,371:1.966378802985776,372:1.9663615036053859,373:1.9663442972792093,374:1.9663271832584475,375:1.9663101608023135,376:1.966293229177927,377:1.9662763876602067,378:1.96625963553177,379:1.9662429720828285,380:1.9662263966110878,381:1.9662099084216513,382:1.9661935068269203,383:1.9661771911465,384:1.9661609607071053,385:1.9661448148424667,386:1.9661287528932416,387:1.9661127742069229,388:1.9660968781377508,389:1.966081064046626,390:1.966065331301024,391:1.966049679274911,392:1.9660341073486605,393:1.9660186149089722,394:1.9660032013487905,395:1.9659878660672256,396:1.9659726084694753,397:1.9659574279667498,398:1.965942323976193,399:1.9659272959208094,400:1.9659123432293915,401:1.9658974653364458,402:1.9658826616821223,403:1.965867931712145,404:1.9658532748777406,405:1.9658386906355727,406:1.9658241784476738,407:1.965809737781378,408:1.9657953681092573,409:1.9657810689090576,410:1.9657668396636336,411:1.965752679860889,412:1.9657385889937122,413:1.9657245665599175,414:1.9657106120621863,415:1.9656967250080057,416:1.9656829049096134,417:1.9656691512839384,418:1.965655463652545,419:1.9656418415415793,420:1.9656282844817121,421:1.9656147920080864,422:1.9656013636602634,423:1.9655879989821707,424:1.9655746975220507,425:1.9655614588324102,426:1.965548282469968,427:1.9655351679956077,428:1.9655221149743287,429:1.9655091229751978,430:1.9654961915712998,431:1.9654833203396942,432:1.9654705088613673,433:1.9654577567211857,434:1.965445063507854,435:1.965432428813868,436:1.9654198522354724,437:1.9654073333726187,438:1.9653948718289207,439:1.9653824672116142,440:1.9653701191315152,441:1.9653578272029781,442:1.9653455910438589,443:1.9653334102754718,444:1.9653212845225516,445:1.9653092134132164,446:1.9652971965789277,447:1.9652852336544535,448:1.9652733242778317,449:1.9652614680903338,450:1.9652496647364275,451:1.9652379138637432,452:1.9652262151230366,453:1.9652145681681563,454:1.9652029726560083,455:1.9651914282465226,456:1.9651799346026202,457:1.9651684913901803,458:1.9651570982780076,459:1.9651457549378,460:1.9651344610441186,461:1.9651232162743548,462:1.9651120203087005,463:1.9651008728301178,464:1.9650897735243085,465:1.9650787220796855,466:1.9650677181873428,467:1.965056761541027,468:1.965045851837109,469:1.965034988774555,470:1.965024172054902,471:1.9650134013822251,472:1.9650026764631154,473:1.9649919970066518,474:1.9649813627243728,475:1.964970773330254,476:1.9649602285406784,477:1.9649497280744153,478:1.9649392716525922,479:1.964928858998672,480:1.9649184898384262,481:1.9649081638999137,482:1.9648978809134563,483:1.9648876406116125,484:1.9648774427291587,485:1.9648672870030628,486:1.9648571731724636,487:1.9648471009786466,488:1.9648370701650248,489:1.9648270804771135,490:1.9648171316625118,491:1.964807223470879,492:1.9647973556539153,493:1.9647875279653397,494:1.9647777401608706,495:1.9647679919982053,496:1.9647582832369994,497:1.9647486136388483,498:1.9647389829672652,499:1.9647293909876653,500:1.9647198374673442,501:1.9647103221754598,502:1.964700844883014,503:1.9646914053628335,504:1.9646820033895525,505:1.964672638739595,506:1.9646633111911553,507:1.9646540205241838,508:1.9646447665203655,509:1.964635548963106,510:1.9646263676375137,511:1.9646172223303833,512:1.9646081128301776,513:1.9645990389270147,514:1.9645900004126484,515:1.9645809970804544,516:1.9645720287254127,517:1.9645630951440949,518:1.964554196134645,519:1.9645453314967691,520:1.9645365010317148,521:1.9645277045422602,522:1.9645189418326983,523:1.964510212708822,524:1.964501516977911,525:1.964492854448715,526:1.9644842249314425,527:1.9644756282377454,528:1.9644670641807058,529:1.964458532574823,530:1.9644500332359982,531:1.9644415659815229,532:1.9644331306300662,533:1.9644247270016604,534:1.964416354917689,535:1.9644080142008735,536:1.9643997046752626,537:1.9643914261662165,538:1.9643831785003991,539:1.9643749615057613,540:1.9643667750115323,541:1.964358618848207,542:1.9643504928475335,543:1.964342396842502,544:1.9643343306673333,545:1.9643262941574684,546:1.9643182871495555,547:1.9643103094814403,548:1.964302360992155,549:1.9642944415219068,550:1.9642865509120675,551:1.9642786890051633,552:1.964270855644863,553:1.9642630506759702,554:1.9642552739444101,555:1.9642475252972216,556:1.9642398045825453,557:1.9642321116496164,558:1.9642244463487513,559:1.9642168085313412,560:1.9642091980498402,561:1.9642016147577568,562:1.964194058509645,563:1.9641865291610932,564:1.9641790265687171,565:1.964171550590149,566:1.9641641010840303,567:1.9641566779100006,568:1.9641492809286911,569:1.964141910001714,570:1.964134564991655,571:1.9641272457620647,572:1.9641199521774493,573:1.964112684103263,574:1.9641054414058998,575:1.9640982239526847,576:1.964091031611867,577:1.9640838642526093,578:1.964076721744983,579:1.9640696039599586,580:1.9640625107693983,581:1.9640554420460483,582:1.9640483976635308,583:1.9640413774963374,584:1.964034381419821,585:1.9640274093101877,586:1.9640204610444916,587:1.9640135365006257,588:1.9640066355573154,589:1.9639997580941106,590:1.963992903991381,591:1.9639860731303063,592:1.9639792653928712,593:1.9639724806618581,594:1.9639657188208401,595:1.9639589797541745,596:1.963952263346997,597:1.963945569485213,598:1.963938898055494,599:1.9639322489452695,600:1.96392562204272,601:1.9639190172367733,602:1.963912434417095,603:1.963905873474085,604:1.9638993342988706,605:1.9638928167832999,606:1.9638863208199362,607:1.9638798463020526,608:1.9638733931236256,609:1.9638669611793291,610:1.9638605503645292,611:1.9638541605752786,612:1.9638477917083106,613:1.963841443661033,614:1.9638351163315244,615:1.9638288096185263,616:1.9638225234214404,617:1.9638162576403206,618:1.96381001217587,619:1.9638037869294331,620:1.9637975818029945,621:1.9637913966991682,622:1.9637852315211985,623:1.9637790861729507,624:1.963772960558908,625:1.9637668545841658,626:1.9637607681544267,627:1.963754701175997,628:1.96374865355578,629:1.9637426252012729,630:1.9637366160205605,631:1.9637306259223126,632:1.9637246548157765,633:1.9637187026107747,634:1.9637127692177012,635:1.9637068545475131,636:1.9637009585117295,637:1.9636950810224274,638:1.9636892219922344,639:1.9636833813343266,640:1.963677558962424,641:1.9636717547907854,642:1.9636659687342057,643:1.96366020070801,644:1.9636544506280507,645:1.9636487184107032,646:1.9636430039728607,647:1.963637307231933,648:1.9636316281058388,649:1.9636259665130043,650:1.9636203223723585,651:1.9636146956033296,652:1.9636090861258415,653:1.9636034938603082,654:1.963597918727633,655:1.9635923606492014,656:1.9635868195468806,657:1.9635812953430134,658:1.9635757879604159,659:1.9635702973223736,660:1.9635648233526377,661:1.9635593659754214,662:1.9635539251153973,663:1.9635485006976923,664:1.9635430926478856,665:1.9635377008920054,666:1.9635323253565247,667:1.9635269659683576,668:1.9635216226548569,669:1.963516295343811,670:1.9635109839634397,671:1.9635056884423918,672:1.9635004087097414,673:1.9634951446949849,674:1.9634898963280374,675:1.9634846635392311,676:1.9634794462593101,677:1.9634742444194289,678:1.9634690579511493,679:1.9634638867864362,680:1.9634587308576554,681:1.9634535900975714,682:1.9634484644393435,683:1.9634433538165224,684:1.963438258163049,685:1.96343317741325,686:1.963428111501836,687:1.9634230603638985,688:1.9634180239349066,689:1.9634130021507055,690:1.9634079949475116,691:1.9634030022619122,692:1.9633980240308617,693:1.9633930601916791,694:1.963388110682045,695:1.9633831754399986,696:1.963378254403937,697:1.9633733475126116,698:1.9633684547051236,699:1.9633635759209254,700:1.9633587110998145,701:1.9633538601819331,702:1.9633490231077657,703:1.9633441998181338,704:1.9633393902541987,705:1.9633345943574538,706:1.9633298120697256,707:1.96332504333317,708:1.9633202880902698,709:1.9633155462838343,710:1.963310817856994,711:1.9633061027532,712:1.9633014009162226,713:1.9632967122901475,714:1.9632920368193745,715:1.963287374448614,716:1.9632827251228866,717:1.9632780887875207,718:1.9632734653881478,719:1.963268854870705,720:1.963264257181428,721:1.9632596722668525,722:1.9632551000738105,723:1.9632505405494287,724:1.963245993641126,725:1.963241459296613,726:1.9632369374638876,727:1.963232428091235,728:1.9632279311272245,729:1.963223446520709,730:1.9632189742208208,731:1.963214514176972,732:1.9632100663388516,733:1.9632056306564227,734:1.9632012070799227,735:1.9631967955598593,736:1.9631923960470097,737:1.9631880084924196,738:1.9631836328473993,739:1.9631792690635235,740:1.9631749170926298,741:1.9631705768868148,742:1.9631662483984351,743:1.9631619315801037,744:1.9631576263846882,745:1.9631533327653103,746:1.9631490506753435,747:1.963144780068411,748:1.963140520898385,749:1.9631362731193833,750:1.9631320366857699,751:1.9631278115521522,752:1.9631235976733785,753:1.9631193950045382,754:1.963115203500959,755:1.963111023118206,756:1.9631068538120793,757:1.963102695538613,758:1.963098548254074,759:1.963094411914959,760:1.963090286477995,761:1.9630861719001376,762:1.9630820681385661,763:1.963077975150687,764:1.963073892894129,765:1.9630698213267435,766:1.9630657604066017,767:1.9630617100919938,768:1.9630576703414275,769:1.9630536411136277,770:1.9630496223675324,771:1.963045614062295,772:1.963041616157278,773:1.9630376286120574,774:1.9630336513864166,775:1.9630296844403485,776:1.9630257277340504,777:1.9630217812279265,778:1.9630178448825841,779:1.963013918658834,780:1.9630100025176869,781:1.9630060964203544,782:1.9630022003282468,783:1.9629983142029712,784:1.9629944380063318,785:1.962990571700327,786:1.9629867152471494,787:1.9629828686091835,788:1.9629790317490055,789:1.962975204629381,790:1.9629713872132657,791:1.9629675794638015,792:1.962963781344317,793:1.9629599928183272,794:1.9629562138495296,795:1.9629524444018054,796:1.9629486844392179,797:1.9629449339260105,798:1.9629411928266058,799:1.962937461105606,800:1.9629337387277892,801:1.9629300256581104,802:1.9629263218616995,803:1.9629226273038602,804:1.9629189419500692,805:1.9629152657659752,806:1.9629115987173975,807:1.9629079407703247,808:1.9629042918909145,809:1.9629006520454917,810:1.9628970212005485,811:1.9628933993227415,812:1.9628897863788926,813:1.9628861823359869,814:1.962882587161172,815:1.9628790008217571,816:1.9628754232852115,817:1.9628718545191641,818:1.9628682944914029,819:1.9628647431698727,820:1.9628612005226753,821:1.9628576665180681,822:1.9628541411244633,823:1.9628506243104265,824:1.962847116044676,825:1.962843616296083,826:1.9628401250336684,827:1.9628366422266041,828:1.9628331678442101,829:1.962829701855956,830:1.9628262442314577,831:1.9628227949404782,832:1.9628193539529253,833:1.962815921238852,834:1.9628124967684557,835:1.962809080512076,836:1.9628056724401943,837:1.962802272523434,838:1.9627988807325591,839:1.9627954970384724,840:1.9627921214122162,841:1.96278875382497,842:1.9627853942480507,843:1.9627820426529121,844:1.9627786990111424,845:1.9627753632944653,846:1.962772035474738,847:1.962768715523951,848:1.962765403414227,849:1.9627620991178198,850:1.9627588026071152,851:1.9627555138546275,852:1.9627522328330012,853:1.962748959515009,854:1.962745693873551,855:1.9627424358816548,856:1.9627391855124732,857:1.9627359427392859,858:1.9627327075354966,859:1.9627294798746329,860:1.9627262597303463,861:1.9627230470764099,862:1.962719841886719,863:1.962716644135291,864:1.9627134537962623,865:1.9627102708438906,866:1.9627070952525512,867:1.9627039269967388,868:1.9627007660510651,869:1.9626976123902597,870:1.9626944659891674,871:1.9626913268227497,872:1.9626881948660826,873:1.9626850700943568,874:1.9626819524828756,875:1.9626788420070573,876:1.962675738642431,877:1.9626726423646375,878:1.9626695531494305,879:1.962666470972672,880:1.9626633958103352,881:1.9626603276385024,882:1.962657266433364,883:1.962654212171219,884:1.962651164828473,885:1.962648124381639,886:1.962645090807336,887:1.9626420640822897,888:1.9626390441833281,889:1.9626360310873863,890:1.9626330247715016,891:1.962630025212815,892:1.962627032388571,893:1.9626240462761142,894:1.9626210668528927,895:1.9626180940964544,896:1.9626151279844477,897:1.9626121684946207,898:1.9626092156048216,899:1.9626062692929966,900:1.9626033295371899,901:1.9626003963155434,902:1.9625974696062964,903:1.9625945493877848,904:1.9625916356384394,905:1.9625887283367882,906:1.9625858274614525,907:1.962582932991149,908:1.9625800449046875,909:1.9625771631809725,910:1.962574287799,911:1.9625714187378587,912:1.9625685559767294,913:1.9625656994948841,914:1.9625628492716856,915:1.9625600052865868,916:1.9625571675191313,917:1.9625543359489512,918:1.9625515105557676,919:1.9625486913193901,920:1.9625458782197165,921:1.9625430712367309,922:1.962540270350506,923:1.9625374755412,924:1.962534686789057,925:1.962531904074407,926:1.9625291273776646,927:1.96252635667933,928:1.9625235919599864,929:1.962520833200302,930:1.9625180803810265,931:1.962515333482994,932:1.9625125924871198,933:1.9625098573744026,934:1.9625071281259212,935:1.962504404722836,936:1.9625016871463874,937:1.9624989753778976,938:1.9624962693987664,939:1.9624935691904748,940:1.9624908747345817,941:1.9624881860127243,942:1.9624855030066184,943:1.9624828256980582,944:1.962480154068913,945:1.962477488101131,946:1.962474827776736,947:1.9624721730778274,948:1.962469523986581,949:1.9624668804852476,950:1.9624642425561525,951:1.962461610181696,952:1.9624589833443515,953:1.9624563620266673,954:1.9624537462112641,955:1.9624511358808356,956:1.9624485310181483,957:1.9624459316060407,958:1.9624433376274224,959:1.9624407490652758,960:1.9624381659026522,961:1.9624355881226763,962:1.962433015708541,963:1.9624304486435091,964:1.9624278869109137,965:1.9624253304941575,966:1.9624227793767104,967:1.9624202335421121,968:1.9624176929739703,969:1.9624151576559599,970:1.962412627571823,971:1.9624101027053702,972:1.9624075830404768,973:1.9624050685610865,974:1.962402559251207,975:1.9624000550949139,976:1.9623975560763454,977:1.962395062179708,978:1.9623925733892695,979:1.9623900896893647,980:1.9623876110643914,981:1.9623851374988106,982:1.9623826689771475,983:1.96238020548399,984:1.9623777470039887,985:1.962375293521857,986:1.9623728450223694,987:1.9623704014903631,988:1.9623679629107367,989:1.9623655292684494,990:1.9623631005485223,991:1.9623606767360353,992:1.9623582578161303,993:1.9623558437740083,994:1.9623534345949294,995:1.9623510302642144,996:1.9623486307672415,997:1.9623462360894495,998:1.962343846216334,999:1.962341461133449,1000:1.9623390808264078,1001:1.9623367052808791,1002:1.9623343344825908,1003:1.962331968417326,1004:1.9623296070709262,1005:1.9623272504292881,1006:1.9623248984783654,1007:1.9623225512041673,1008:1.9623202085927578,1009:1.9623178706302578,1010:1.9623155373028418,1011:1.9623132085967403,1012:1.962310884498237,1013:1.962308564993671,1014:1.962306250069434,1015:1.9623039397119733,1016:1.9623016339077874,1017:1.9622993326434304,1018:1.962297035905507,1019:1.9622947436806755,1020:1.9622924559556474,1021:1.962290172717185,1022:1.9622878939521027,1023:1.9622856196472673,1024:1.962283349789597,infinity:1.96},m=128,_=1e9,q=128,D={bmf:"bmf"};var H1=!!globalThis.Bun||!!globalThis.process?.versions?.bun,J1=!!globalThis.Deno,K1=globalThis.process?.release?.name==="node",Q1=globalThis.navigator?.userAgent==="Cloudflare-Workers",Y1=!!globalThis.navigator,P=(()=>{if(H1)return T.bun;if(J1)return T.deno;if(K1)return T.node;if(Q1)return T.workerd;if(Y1)return T.browser;return"unknown"})();var g=(()=>{return{unknown:()=>()=>Math.round(1e6*performance.now()),browser:()=>{try{return $.agent.monotonicNow(),()=>Math.round(1e6*$.agent.monotonicNow())}catch{}return()=>Math.round(1e6*performance.now())},node:()=>()=>Number(process.hrtime.bigint()),deno:()=>()=>Math.round(1e6*performance.now()),bun:()=>Bun.nanoseconds}[P]()})();async function N1(w,L=I,N=I,E={}){if(![Function,U].includes(w.constructor))throw new TypeError(`expected function, got ${w.constructor.name}`);if(![Function,U].includes(L.constructor))throw new TypeError(`expected function, got ${L.constructor.name}`);if(![Function,U].includes(N.constructor))throw new TypeError(`expected function, got ${N.constructor.name}`);if(Object.prototype.toString.call(E).slice(8,-1)!=="Object")throw new TypeError(`expected object, got ${E.constructor.name}`);E=j({async:U===w.constructor,time:_,samples:q,warmup:!0},E);const M=U===L.constructor,S=U===N.constructor,V=new(!E.async?Function:U)("$fn","$before","$after","$now",`

@@ -29,3 +29,3 @@ ${!E.warmup?"":`

return samples;
`),W=!E.async?V(w,L,N,g):await V(w,L,N,g);return c1(W)}var U=(async()=>{}).constructor,a=(()=>{return{unknown:()=>"",browser:()=>"",node:()=>process.version,deno:()=>Deno.version.deno,bun:()=>process.versions.bun}[P]()})(),e=(()=>{return{unknown:()=>"unknown",browser:()=>"unknown",node:()=>`${process.arch}-${process.platform}`,deno:()=>Deno.build.target,bun:()=>`${process.arch}-${process.platform}`}[P]()})(),o=await(async()=>{return await{unknown:()=>"unknown",browser:()=>"unknown",node:async()=>(await Promise.resolve().then(() => (z(),R)))?.cpus?.()?.[0]?.model,deno:async()=>(await Promise.resolve().then(() => (z(),R)))?.cpus?.()?.[0]?.model,bun:async()=>(await Promise.resolve().then(() => (z(),R)))?.cpus?.()?.[0]?.model}[P]()})(),s=(()=>{return{unknown:()=>!1,browser:()=>!0,node:()=>!!process.env.NO_COLOR,deno:()=>Deno.noColor,bun:()=>!!process.env.NO_COLOR}[P]()})(),w1=await(async()=>{return await{unknown:()=>()=>{},browser:()=>()=>{},node:async()=>(await import("node:fs")).writeFileSync,deno:()=>Deno.writeTextFileSync,bun:async()=>(await import("node:fs")).writeFileSync}[P]()})(),$1=(w)=>{return w.benchmarks.map(({name:L,stats:N})=>{return{[L]:{latency:{value:N?.avg,lower_value:N?.min,upper_value:N?.max},throughput:{value:N?.iter}}}}).reduce((L,N)=>Object.assign(L,N),{})},h=(w,L={})=>{if(![Function,U].includes(w.constructor))throw new TypeError(`expected function, got ${w.constructor.name}`);if(Object.prototype.toString.call(L).slice(8,-1)!=="Object")throw new TypeError(`expected object, got ${L.constructor.name}`);if(L.before!=null&&![Function,U].includes(L.before.constructor))throw new TypeError(`expected function as 'before' option, got ${L.before.constructor.name}`);if(L.after!=null&&![Function,U].includes(L.after.constructor))throw new TypeError(`expected function as 'after' option, got ${L.after.constructor.name}`)},L1=(w,L)=>{w.samples=L.samples??w.samples,w.time=L.time??w.time,w.warmup=L.warmup??w.warmup},j=(w,L)=>{const N=structuredClone(w);for(let E in L)if(Object.prototype.toString.call(w[E]).slice(8,-1)==="Object")if(Object.prototype.toString.call(w[E]).slice(8,-1)==="Object")N[E]=j(w[E],L[E]);else N[E]=L[E];else N[E]=L[E];return N},H=(w)=>{if(typeof w!=="number")throw new TypeError(`expected number, got ${w.constructor.name}`);if(w===0||Number.isNaN(w))throw new RangeError(`Invalid dividend: ${w}`);return w},G=(w,L)=>{const N=(w.length-1)*L,E=Math.floor(N);if(w[E+1]!=null)return w[E]+(N-E)*(w[E+1]-w[E]);return w[E]},c1=(w)=>{if(!Array.isArray(w))throw new TypeError(`expected array, got ${w.constructor.name}`);if(Array.isArray(w)&&w.length===0)throw new Error("expected non-empty array, got empty array");w.sort((Y,C)=>Y-C);const L=w.reduce((Y,C)=>Y+C,0),N=L/w.length,E=w.reduce((Y,C)=>Y+(C-N)**2,0)/H(w.length-1),M=Math.sqrt(E),S=M/Math.sqrt(w.length),V=u[(w.length-1||1).toString()]||u.infinity,J=S*V/H(N)*100;return{samples:w.length,min:w[0],max:w[w.length-1],p50:G(w,0.5),p75:G(w,0.75),p99:G(w,0.99),p995:G(w,0.995),avg:N,iter:1e9*w.length/H(L),vr:E,sd:M,rmoe:J,ss:w.length>=m}};var p1=()=>{let w;try{w=console.log}catch{w=print}if(typeof w!=="function")throw new TypeError(`logger is not a function: ${typeof w}`);return w},E1=p1();var y={};c(y,{yellow:()=>{{return F}},white:()=>{{return Lw}},underline:()=>{{return a1}},strikethrough:()=>{{return s1}},reset:()=>{{return m1}},red:()=>{{return B}},magenta:()=>{{return b}},italic:()=>{{return t1}},inverse:()=>{{return e1}},hidden:()=>{{return o1}},green:()=>{{return $w}},gray:()=>{{return X}},dim:()=>{{return n1}},cyan:()=>{{return d}},bold:()=>{{return v}},blue:()=>{{return A}},black:()=>{{return ww}},bgYellow:()=>{{return Sw}},bgWhite:()=>{{return Xw}},bgRed:()=>{{return Ew}},bgMagenta:()=>{{return Vw}},bgGreen:()=>{{return Mw}},bgCyan:()=>{{return Uw}},bgBlue:()=>{{return Ow}},bgBlack:()=>{{return Nw}}});var O=function(w,L){const N=new RegExp(`\\x1b\\[${L}m`,"g"),E=`\x1B[${w}m`,M=`\x1B[${L}m`;return(S,V)=>{if(!S||V==null)return V;return V=V.toString(),`${E}${V.includes(M)?V.replace(N,M+E):V}${M}`}},m1=O(0,0),v=O(1,22),n1=O(2,22),t1=O(3,23),a1=O(4,24),e1=O(7,27),o1=O(8,28),s1=O(9,29),ww=O(30,39),B=O(31,39),$w=O(32,39),F=O(33,39),A=O(34,39),b=O(35,39),d=O(36,39),Lw=O(37,39),X=O(90,39),Nw=O(40,49),Ew=O(41,49),Mw=O(42,49),Sw=O(43,49),Ow=O(44,49),Vw=O(45,49),Uw=O(46,49),Xw=O(47,49);function K(w){if(w<1)return`${Number((w*1000).toFixed(0)).toString()} ps`;if(w<100)return`${Number(w.toFixed(2)).toString()} ns`;if(w<1000)return`${Number(w.toFixed(0)).toString()} ns`;if(w<1e5)return`${Number(w.toFixed(0)).toLocaleString("en-us").replace(",","'")} ns`;if(w<1e6)return`${Number((w/1000).toFixed(0)).toString()} \xB5s`;if(w<1e8)return`${Number((w/1000).toFixed(0)).toLocaleString("en-us").replace(",","'")} \xB5s`;if(w<1e9)return`${Number((w/1e6).toFixed(0)).toString()} ms`;if(w<100000000000)return`${Number((w/1e6).toFixed(0)).toLocaleString("en-us").replace(",","'")} ms`;if(w<1000000000000)return`${Number((w/1e9).toFixed(0)).toString()} s`;if(w<3600000000000)return`${Number((w/60000000000).toFixed(0)).toString()} m`;return`${Number((w/3600000000000).toFixed(2)).toLocaleString("en-us",{notation:"compact"})} h`}function M1(w){return`${Number(w.toFixed(1)).toLocaleString("en-us").replaceAll(",","'")}`}function l(w){return`${Number(w.toFixed(2)).toLocaleString("en-us").replaceAll(",","'")} %`}function k(w){return`${Number(w.toFixed(2)).toLocaleString("en-us").replaceAll(",","'")}`}function S1(w){let L=9;for(let N of w)if(L<N.length)L=N.length;return 2+L}function i({size:w,avg:L=!0,iter:N=!0,rmoe:E=!0,min_max:M=!0,percentiles:S=!0}){return`${"-".repeat(w+14*L+14*N+14*E+24*M)}${!S?"":` ${"-".repeat(39)}`}`}function O1(w,L,{size:N,colors:E=!0}){return`${w.padEnd(N," ")}${B(E,"error")}: ${L.message}${L.stack?`\n${X(E,L.stack)}`:""}`}function V1({colors:w=!0}={}){return X(w,`
`),W=!E.async?V(w,L,N,g):await V(w,L,N,g);return c1(W)}var U=(async()=>{}).constructor,a=(()=>{return{unknown:()=>"",browser:()=>"",node:()=>process.version,deno:()=>Deno.version.deno,bun:()=>process.versions.bun}[P]()})(),e=(()=>{return{unknown:()=>"unknown",browser:()=>"unknown",node:()=>`${process.arch}-${process.platform}`,deno:()=>Deno.build.target,bun:()=>`${process.arch}-${process.platform}`}[P]()})(),o=await(async()=>{return await{unknown:()=>"unknown",browser:()=>"unknown",node:async()=>(await Promise.resolve().then(() => (z(),R)))?.cpus?.()?.[0]?.model,deno:async()=>(await Promise.resolve().then(() => (z(),R)))?.cpus?.()?.[0]?.model,bun:async()=>(await Promise.resolve().then(() => (z(),R)))?.cpus?.()?.[0]?.model}[P]()})(),s=(()=>{return{unknown:()=>!1,browser:()=>!0,node:()=>!!process.env.NO_COLOR,deno:()=>Deno.noColor,bun:()=>!!process.env.NO_COLOR}[P]()})(),w1=await(async()=>{return await{unknown:()=>()=>{},browser:()=>()=>{},node:async()=>(await import("node:fs")).writeFileSync,deno:()=>Deno.writeTextFileSync,bun:async()=>(await import("node:fs")).writeFileSync}[P]()})(),$1=(w)=>{return w.benchmarks.map(({name:L,stats:N})=>{return{[L]:{latency:{value:N?.avg,lower_value:N?.min,upper_value:N?.max},throughput:{value:N?.iter}}}}).reduce((L,N)=>Object.assign(L,N),{})},h=(w,L={})=>{if(![Function,U].includes(w.constructor))throw new TypeError(`expected function, got ${w.constructor.name}`);if(Object.prototype.toString.call(L).slice(8,-1)!=="Object")throw new TypeError(`expected object, got ${L.constructor.name}`);if(L.before!=null&&![Function,U].includes(L.before.constructor))throw new TypeError(`expected function as 'before' option, got ${L.before.constructor.name}`);if(L.after!=null&&![Function,U].includes(L.after.constructor))throw new TypeError(`expected function as 'after' option, got ${L.after.constructor.name}`)},L1=(w,L)=>{w.samples=L.samples??w.samples,w.time=L.time??w.time,w.warmup=L.warmup??w.warmup},j=(w,L)=>{const N=structuredClone(w);for(let E in L)if(Object.prototype.toString.call(w[E]).slice(8,-1)==="Object")if(Object.prototype.toString.call(w[E]).slice(8,-1)==="Object")N[E]=j(w[E],L[E]);else N[E]=L[E];else N[E]=L[E];return N},H=(w)=>{if(typeof w!=="number")throw new TypeError(`expected number, got ${w.constructor.name}`);if(w===0||Number.isNaN(w))throw new RangeError(`Invalid dividend: ${w}`);return w},G=(w,L)=>{const N=(w.length-1)*L,E=Math.floor(N);if(w[E+1]!=null)return w[E]+(N-E)*(w[E+1]-w[E]);return w[E]},c1=(w)=>{if(!Array.isArray(w))throw new TypeError(`expected array, got ${w.constructor.name}`);if(Array.isArray(w)&&w.length===0)throw new Error("expected non-empty array, got empty array");w.sort((Y,C)=>Y-C);const L=w.reduce((Y,C)=>Y+C,0),N=L/w.length,E=w.reduce((Y,C)=>Y+(C-N)**2,0)/H(w.length-1),M=Math.sqrt(E),S=M/Math.sqrt(w.length),V=u[(w.length-1||1).toString()]||u.infinity,J=S*V/H(N)*100;return{samples:w.length,min:w[0],max:w[w.length-1],p50:G(w,0.5),p75:G(w,0.75),p99:G(w,0.99),p995:G(w,0.995),avg:N,iter:1e9*w.length/H(L),vr:E,sd:M,rmoe:J,ss:w.length>=m}};var p1=()=>{let w;try{w=console.log}catch{w=print}if(typeof w!=="function")throw new TypeError(`logger is not a function: ${typeof w}`);return w},E1=p1();var y={};c(y,{yellow:()=>F,white:()=>Lw,underline:()=>a1,strikethrough:()=>s1,reset:()=>m1,red:()=>B,magenta:()=>b,italic:()=>t1,inverse:()=>e1,hidden:()=>o1,green:()=>$w,gray:()=>X,dim:()=>n1,cyan:()=>d,bold:()=>v,blue:()=>A,black:()=>ww,bgYellow:()=>Sw,bgWhite:()=>Xw,bgRed:()=>Ew,bgMagenta:()=>Vw,bgGreen:()=>Mw,bgCyan:()=>Uw,bgBlue:()=>Ow,bgBlack:()=>Nw});var O=function(w,L){const N=new RegExp(`\\x1b\\[${L}m`,"g"),E=`\x1B[${w}m`,M=`\x1B[${L}m`;return(S,V)=>{if(!S||V==null)return V;return V=V.toString(),`${E}${V.includes(M)?V.replace(N,M+E):V}${M}`}},m1=O(0,0),v=O(1,22),n1=O(2,22),t1=O(3,23),a1=O(4,24),e1=O(7,27),o1=O(8,28),s1=O(9,29),ww=O(30,39),B=O(31,39),$w=O(32,39),F=O(33,39),A=O(34,39),b=O(35,39),d=O(36,39),Lw=O(37,39),X=O(90,39),Nw=O(40,49),Ew=O(41,49),Mw=O(42,49),Sw=O(43,49),Ow=O(44,49),Vw=O(45,49),Uw=O(46,49),Xw=O(47,49);function K(w){if(w<1)return`${Number((w*1000).toFixed(0)).toString()} ps`;if(w<100)return`${Number(w.toFixed(2)).toString()} ns`;if(w<1000)return`${Number(w.toFixed(0)).toString()} ns`;if(w<1e5)return`${Number(w.toFixed(0)).toLocaleString("en-us").replace(",","'")} ns`;if(w<1e6)return`${Number((w/1000).toFixed(0)).toString()} \xB5s`;if(w<1e8)return`${Number((w/1000).toFixed(0)).toLocaleString("en-us").replace(",","'")} \xB5s`;if(w<1e9)return`${Number((w/1e6).toFixed(0)).toString()} ms`;if(w<100000000000)return`${Number((w/1e6).toFixed(0)).toLocaleString("en-us").replace(",","'")} ms`;if(w<1000000000000)return`${Number((w/1e9).toFixed(0)).toString()} s`;if(w<3600000000000)return`${Number((w/60000000000).toFixed(0)).toString()} m`;return`${Number((w/3600000000000).toFixed(2)).toLocaleString("en-us",{notation:"compact"})} h`}function M1(w){return`${Number(w.toFixed(1)).toLocaleString("en-us").replaceAll(",","'")}`}function l(w){return`${Number(w.toFixed(2)).toLocaleString("en-us").replaceAll(",","'")} %`}function k(w){return`${Number(w.toFixed(2)).toLocaleString("en-us").replaceAll(",","'")}`}function S1(w){let L=9;for(let N of w)if(L<N.length)L=N.length;return 2+L}function i({size:w,avg:L=!0,iter:N=!0,rmoe:E=!0,min_max:M=!0,percentiles:S=!0}){return`${"-".repeat(w+14*L+14*N+14*E+24*M)}${!S?"":` ${"-".repeat(39)}`}`}function O1(w,L,{size:N,colors:E=!0}){return`${w.padEnd(N," ")}${B(E,"error")}: ${L.message}${L.stack?`\n${X(E,L.stack)}`:""}`}function V1({colors:w=!0}={}){return X(w,`
1 ps = 1 picosecond = 1e-12s

@@ -37,2 +37,2 @@ 1 ns = 1 nanosecond = 1'000ps = 1e-9s

//# debugId=0BC9F3BBA91ABC6164756e2164756e21
//# debugId=0F18D3A64D65D46E64756E2164756E21

@@ -6,4 +6,4 @@ {

"license": "MIT",
"version": "0.4.15",
"packageManager": "bun@1.1.13",
"version": "0.4.16",
"packageManager": "bun@1.1.18",
"types": "./src/index.d.ts",

@@ -48,16 +48,12 @@ "main": "./src/index.js",

"test:deno": "deno run -A tests/test.js && deno run -A tests/test.ts",
"test:bun": "bun run tests/test.js && bun run tests/test.ts",
"release": "release-it"
"test:bun": "bun run tests/test.js && bun run tests/test.ts"
},
"devDependencies": {
"@biomejs/biome": "^1.8.1",
"@biomejs/biome": "^1.8.3",
"@commitlint/cli": "^19.3.0",
"@commitlint/config-conventional": "^19.2.2",
"@release-it/bumper": "^6.0.1",
"@release-it/keep-a-changelog": "^5.0.0",
"@types/bun": "^1.1.4",
"@types/bun": "^1.1.6",
"husky": "^9.0.11",
"lint-staged": "^15.2.7",
"prettier": "^3.3.2",
"release-it": "^17.3.0"
"prettier": "^3.3.2"
},

@@ -64,0 +60,0 @@ "peerDependencies": {

@@ -9,3 +9,2 @@ <h1 align=center>tatami-ng</h1>

[![Npm Version](https://badgen.net/npm/v/tatami-ng?icon=npm)](https://www.npmjs.com/package/tatami-ng)
[![Npm Weekly Downloads](https://badgen.net/npm/dw/tatami-ng?icon=npm)](https://www.npmjs.com/package/tatami-ng)
[![JSR Version](https://jsr.io/badges/@poolifier/tatami-ng)](https://jsr.io/@poolifier/tatami-ng)

@@ -15,4 +14,2 @@ [![CI Workflow](https://github.com/poolifier/tatami-ng/actions/workflows/ci.yml/badge.svg)](https://github.com/poolifier/tatami-ng/actions/workflows/ci.yml)

<!-- [![No Dependencies](<https://badgen.net/static/dependencies/no dependencies/green>)](<https://badgen.net/static/dependencies/no dependencies/green>) -->
</div>

@@ -73,2 +70,4 @@

<!-- x-release-please-start-version -->
```js

@@ -78,6 +77,8 @@ <script type="module">

...
} from 'https://cdn.jsdelivr.net/npm/tatami-ng@0.4.15/dist/browser/index.js'
} from 'https://cdn.jsdelivr.net/npm/tatami-ng@0.4.16/dist/browser/index.js'
</script>
```
<!-- x-release-please-end -->
## Example

@@ -84,0 +85,0 @@

@@ -7,3 +7,3 @@ import {

tatamiNgGroup,
} from './constants.js';
} from './constants.js'
import {

@@ -21,11 +21,11 @@ os,

writeFileSync,
} from './lib.js';
import { logger } from './logger.js';
import * as clr from './reporter/clr.js';
import * as table from './reporter/table.js';
import { runtime } from './runtime.js';
} from './lib.js'
import { logger } from './logger.js'
import * as clr from './reporter/clr.js'
import * as table from './reporter/table.js'
import { runtime } from './runtime.js'
let groupName = null;
const groups = new Map();
const benchmarks = [];
let groupName = null
const groups = new Map()
const benchmarks = []

@@ -55,19 +55,19 @@ /**

throw new TypeError(
`expected string, object or function, got ${name.constructor.name}`,
);
`expected string, object or function, got ${name.constructor.name}`
)
if ([Function, AsyncFunction].includes(name.constructor)) {
// biome-ignore lint/style/noParameterAssign: <explanation>
cb = name;
cb = name
}
if (![Function, AsyncFunction].includes(cb.constructor))
throw new TypeError(`expected function, got ${cb.constructor.name}`);
throw new TypeError(`expected function, got ${cb.constructor.name}`)
if (Object.prototype.toString.call(name).slice(8, -1) === 'Object') {
if (name.name != null && 'string' !== typeof name.name)
throw new TypeError(
`expected string as 'name' option, got ${name.name.constructor.name}`,
);
`expected string as 'name' option, got ${name.name.constructor.name}`
)
if (name.summary != null && 'boolean' !== typeof name.summary)
throw new TypeError(
`expected boolean as 'summary' option, got ${name.summary.constructor.name}`,
);
`expected boolean as 'summary' option, got ${name.summary.constructor.name}`
)
if (

@@ -78,4 +78,4 @@ name.before != null &&

throw new TypeError(
`expected function as 'before' option, got ${name.before.constructor.name}`,
);
`expected function as 'before' option, got ${name.before.constructor.name}`
)
if (

@@ -86,4 +86,4 @@ name.after != null &&

throw new TypeError(
`expected function as 'after' option, got ${name.after.constructor.name}`,
);
`expected function as 'after' option, got ${name.after.constructor.name}`
)
}

@@ -93,3 +93,3 @@

('string' === typeof name ? name.trim() : name.name?.trim()) ||
`${tatamiNgGroup}${groups.size + 1}`;
`${tatamiNgGroup}${groups.size + 1}`
if (!groups.has(groupName))

@@ -100,10 +100,10 @@ groups.set(groupName, {

after: name.after ?? emptyFunction,
});
})
if (AsyncFunction === cb.constructor) {
cb().then(() => {
groupName = null;
});
groupName = null
})
} else {
cb();
groupName = null;
cb()
groupName = null
}

@@ -124,9 +124,9 @@ }

// biome-ignore lint/style/noParameterAssign: <explanation>
fn = name;
fn = name
// biome-ignore lint/style/noParameterAssign: <explanation>
name = fn.name;
name = fn.name
}
checkBenchmarkArgs(fn, opts);
checkBenchmarkArgs(fn, opts)
// biome-ignore lint/style/noParameterAssign: <explanation>
name = name.trim();
name = name.trim()

@@ -144,3 +144,3 @@ benchmarks.push({

async: AsyncFunction === fn.constructor,
});
})
}

@@ -161,9 +161,9 @@

// biome-ignore lint/style/noParameterAssign: <explanation>
fn = name;
fn = name
// biome-ignore lint/style/noParameterAssign: <explanation>
name = fn.name;
name = fn.name
}
checkBenchmarkArgs(fn, opts);
checkBenchmarkArgs(fn, opts)
// biome-ignore lint/style/noParameterAssign: <explanation>
name = name.trim();
name = name.trim()

@@ -181,3 +181,3 @@ benchmarks.push({

async: AsyncFunction === fn.constructor,
});
})
}

@@ -203,11 +203,11 @@

export function clear() {
groups.clear();
benchmarks.length = 0;
groups.clear()
benchmarks.length = 0
}
const executeBenchmarks = async (benchmarks, log, opts = {}) => {
let once = false;
let once = false
for (const benchmark of benchmarks) {
once = true;
overrideBenchmarkDefaults(benchmark, opts);
once = true
overrideBenchmarkDefaults(benchmark, opts)
try {

@@ -223,14 +223,14 @@ benchmark.stats = await measure(

warmup: benchmark.warmup,
},
);
}
)
if (!opts.json)
log(table.benchmark(benchmark.name, benchmark.stats, opts));
log(table.benchmark(benchmark.name, benchmark.stats, opts))
} catch (err) {
benchmark.error = err;
benchmark.error = err
if (!opts.json)
log(table.benchmarkError(benchmark.name, benchmark.error, opts));
log(table.benchmarkError(benchmark.name, benchmark.error, opts))
}
}
return once;
};
return once
}

@@ -258,15 +258,15 @@ /**

if (Object.prototype.toString.call(opts).slice(8, -1) !== 'Object')
throw new TypeError(`expected object, got ${opts.constructor.name}`);
throw new TypeError(`expected object, got ${opts.constructor.name}`)
if (opts.samples != null && 'number' !== typeof opts.samples)
throw new TypeError(
`expected number as 'samples' option, got ${opts.samples.constructor.name}`,
);
`expected number as 'samples' option, got ${opts.samples.constructor.name}`
)
if (opts.time != null && 'number' !== typeof opts.time)
throw new TypeError(
`expected number as 'time' option, got ${opts.time.constructor.name}`,
);
`expected number as 'time' option, got ${opts.time.constructor.name}`
)
if (opts.warmup != null && 'boolean' !== typeof opts.warmup)
throw new TypeError(
`expected boolean as 'warmup' option, got ${opts.warmup.constructor.name}`,
);
`expected boolean as 'warmup' option, got ${opts.warmup.constructor.name}`
)
if (

@@ -279,4 +279,4 @@ opts.json != null &&

throw new TypeError(
`expected number or boolean or string as 'json' option, got ${opts.json.constructor.name}`,
);
`expected number or boolean or string as 'json' option, got ${opts.json.constructor.name}`
)
if (

@@ -288,11 +288,11 @@ 'string' === typeof opts.json &&

`expected one of ${Object.values(jsonOutputFormat).join(
', ',
)} as 'json' option, got ${opts.json}`,
);
', '
)} as 'json' option, got ${opts.json}`
)
if (opts.file != null && 'string' !== typeof opts.file)
throw new TypeError(
`expected string as 'file' option, got ${opts.file.constructor.name}`,
);
`expected string as 'file' option, got ${opts.file.constructor.name}`
)
if ('string' === typeof opts.file && opts.file.trim().length === 0)
throw new TypeError(`expected non-empty string as 'file' option`);
throw new TypeError(`expected non-empty string as 'file' option`)
// biome-ignore lint/style/noParameterAssign: <explanation>

@@ -305,6 +305,6 @@ opts = mergeDeepRight(

},
opts,
);
opts
)
const log = opts.silent === true ? emptyFunction : logger;
const log = opts.silent === true ? emptyFunction : logger

@@ -315,24 +315,24 @@ const report = {

runtime: `${runtime} ${version} (${os})`,
};
}
if (!opts.json && benchmarks.length > 0) {
log(clr.gray(opts.colors, `cpu: ${report.cpu}`));
log(clr.gray(opts.colors, `runtime: ${report.runtime}`));
log(clr.gray(opts.colors, `cpu: ${report.cpu}`))
log(clr.gray(opts.colors, `runtime: ${report.runtime}`))
log('');
log(table.header(opts));
log(table.br(opts));
log('')
log(table.header(opts))
log(table.br(opts))
}
let noGroupBenchmarks = benchmarks.filter(
benchmark => benchmark.group == null,
);
let once = await executeBenchmarks(noGroupBenchmarks, log, opts);
benchmark => benchmark.group == null
)
let once = await executeBenchmarks(noGroupBenchmarks, log, opts)
noGroupBenchmarks = noGroupBenchmarks.filter(
noGroupBenchmark => noGroupBenchmark.error == null,
);
noGroupBenchmark => noGroupBenchmark.error == null
)
if (!opts.json && noGroupBenchmarks.length > 1) {
log('');
log(table.summary(noGroupBenchmarks, opts));
log('')
log(table.summary(noGroupBenchmarks, opts))
}

@@ -342,25 +342,25 @@

if (!opts.json) {
if (once) log('');
if (!group.startsWith(tatamiNgGroup)) log(`• ${group}`);
if (once) log('')
if (!group.startsWith(tatamiNgGroup)) log(`• ${group}`)
if (once || !group.startsWith(tatamiNgGroup))
log(clr.gray(opts.colors, table.br(opts)));
log(clr.gray(opts.colors, table.br(opts)))
}
let groupBenchmarks = benchmarks.filter(
benchmark => benchmark.group === group,
);
benchmark => benchmark.group === group
)
AsyncFunction === groupOpts.before.constructor
? await groupOpts.before()
: groupOpts.before();
: groupOpts.before()
once = await executeBenchmarks(groupBenchmarks, log, opts);
once = await executeBenchmarks(groupBenchmarks, log, opts)
AsyncFunction === groupOpts.after.constructor
? await groupOpts.after()
: groupOpts.after();
: groupOpts.after()
groupBenchmarks = groupBenchmarks.filter(
groupBenchmark => groupBenchmark.error == null,
);
groupBenchmark => groupBenchmark.error == null
)
if (

@@ -371,14 +371,14 @@ groupOpts.summary === true &&

) {
log('');
log(table.summary(groupBenchmarks, opts));
log('')
log(table.summary(groupBenchmarks, opts))
}
}
if (!opts.json && opts.units) log(table.units(opts));
if (!opts.json && opts.units) log(table.units(opts))
if (opts.json) {
let jsonReport;
let jsonReport
switch (opts.json) {
case jsonOutputFormat.bmf:
jsonReport = JSON.stringify(convertReportToBmf(report));
break;
jsonReport = JSON.stringify(convertReportToBmf(report))
break
default:

@@ -388,10 +388,10 @@ jsonReport = JSON.stringify(

undefined,
'number' !== typeof opts.json ? 0 : opts.json,
);
'number' !== typeof opts.json ? 0 : opts.json
)
}
log(jsonReport);
if (opts.file) writeFileSync(opts.file, jsonReport);
log(jsonReport)
if (opts.file) writeFileSync(opts.file, jsonReport)
}
return JSON.parse(JSON.stringify(report));
return JSON.parse(JSON.stringify(report))
}

@@ -7,7 +7,7 @@ export const runtimes = {

browser: 'browser',
};
}
export const emptyFunction = () => {};
export const emptyFunction = () => {}
export const tatamiNgGroup = '$tatami-ng_group';
export const tatamiNgGroup = '$tatami-ng_group'

@@ -1043,14 +1043,14 @@ /**

infinity: 1.96,
};
}
// Student two-tailed t-distribution has no minimum samples size.
// But for 95% confidence level and 80% statistical power on samples with unknown previous standard deviation, 128 samples are recommended.
export const minimumSamples = 128;
export const minimumSamples = 128
export const defaultTime = 1e9; // ns
export const defaultTime = 1e9 // ns
export const defaultSamples = minimumSamples;
export const defaultSamples = minimumSamples
export const jsonOutputFormat = {
bmf: 'bmf',
};
}

@@ -1,12 +0,12 @@

export function group(cb: () => void | Promise<void>): void;
export function group(name: string, cb: () => void | Promise<void>): void;
export function group(cb: () => void | Promise<void>): void
export function group(name: string, cb: () => void | Promise<void>): void
export function group(
options: {
name?: string;
summary?: boolean;
before?: () => void | Promise<void>;
after?: () => void | Promise<void>;
name?: string
summary?: boolean
before?: () => void | Promise<void>
after?: () => void | Promise<void>
},
cb: () => void | Promise<void>,
): void;
cb: () => void | Promise<void>
): void

@@ -16,6 +16,6 @@ export function bench(

options?: {
before?: () => void | Promise<void>;
after?: () => void | Promise<void>;
},
): void;
before?: () => void | Promise<void>
after?: () => void | Promise<void>
}
): void
export function bench(

@@ -25,6 +25,6 @@ name: string,

options?: {
before?: () => void | Promise<void>;
after?: () => void | Promise<void>;
},
): void;
before?: () => void | Promise<void>
after?: () => void | Promise<void>
}
): void

@@ -34,6 +34,6 @@ export function baseline(

options?: {
before?: () => void | Promise<void>;
after?: () => void | Promise<void>;
},
): void;
before?: () => void | Promise<void>
after?: () => void | Promise<void>
}
): void
export function baseline(

@@ -43,56 +43,56 @@ name: string,

options?: {
before?: () => void | Promise<void>;
after?: () => void | Promise<void>;
},
): void;
before?: () => void | Promise<void>
after?: () => void | Promise<void>
}
): void
export function clear(): void;
export function clear(): void
export function run(options?: {
silent?: boolean;
colors?: boolean;
samples?: number;
time?: number;
warmup?: boolean;
avg?: boolean;
iter?: boolean;
min_max?: boolean;
rmoe?: boolean;
percentiles?: boolean;
json?: number | boolean | 'bmf';
file?: string;
units?: boolean;
}): Promise<Report>;
silent?: boolean
colors?: boolean
samples?: number
time?: number
warmup?: boolean
avg?: boolean
iter?: boolean
min_max?: boolean
rmoe?: boolean
percentiles?: boolean
json?: number | boolean | 'bmf'
file?: string
units?: boolean
}): Promise<Report>
export interface Report {
cpu: string;
runtime: string;
cpu: string
runtime: string
benchmarks: {
name: string;
samples: number;
time: number;
warmup: boolean;
async: boolean;
baseline: boolean;
group: string | null;
name: string
samples: number
time: number
warmup: boolean
async: boolean
baseline: boolean
group: string | null
error?: Error;
error?: Error
stats?: {
samples: number;
min: number;
max: number;
p50: number;
p75: number;
p99: number;
p995: number;
avg: number;
iter: number;
vr: number;
sd: number;
rmoe: number;
ss: boolean;
};
}[];
samples: number
min: number
max: number
p50: number
p75: number
p99: number
p995: number
avg: number
iter: number
vr: number
sd: number
rmoe: number
ss: boolean
}
}[]
}

@@ -1,1 +0,1 @@

export { group, bench, baseline, clear, run } from './benchmark.js';
export { group, bench, baseline, clear, run } from './benchmark.js'

@@ -7,7 +7,7 @@ import {

tTable,
} from './constants.js';
import { runtime } from './runtime.js';
import { now } from './time.js';
} from './constants.js'
import { runtime } from './runtime.js'
import { now } from './time.js'
export const AsyncFunction = (async () => {}).constructor;
export const AsyncFunction = (async () => {}).constructor

@@ -21,4 +21,4 @@ export const version = (() => {

bun: () => process.versions.bun,
}[runtime]();
})();
}[runtime]()
})()

@@ -32,4 +32,4 @@ export const os = (() => {

bun: () => `${process.arch}-${process.platform}`,
}[runtime]();
})();
}[runtime]()
})()

@@ -43,4 +43,4 @@ export const cpu = await (async () => {

bun: async () => (await import('node:os'))?.cpus?.()?.[0]?.model,
}[runtime]();
})();
}[runtime]()
})()

@@ -54,4 +54,4 @@ export const noColor = (() => {

bun: () => !!process.env.NO_COLOR,
}[runtime]();
})();
}[runtime]()
})()

@@ -65,4 +65,4 @@ export const writeFileSync = await (async () => {

bun: async () => (await import('node:fs')).writeFileSync,
}[runtime]();
})();
}[runtime]()
})()

@@ -83,12 +83,12 @@ export const convertReportToBmf = report => {

},
};
}
})
.reduce((obj, item) => Object.assign(obj, item), {});
};
.reduce((obj, item) => Object.assign(obj, item), {})
}
export const checkBenchmarkArgs = (fn, opts = {}) => {
if (![Function, AsyncFunction].includes(fn.constructor))
throw new TypeError(`expected function, got ${fn.constructor.name}`);
throw new TypeError(`expected function, got ${fn.constructor.name}`)
if (Object.prototype.toString.call(opts).slice(8, -1) !== 'Object')
throw new TypeError(`expected object, got ${opts.constructor.name}`);
throw new TypeError(`expected object, got ${opts.constructor.name}`)
if (

@@ -99,4 +99,4 @@ opts.before != null &&

throw new TypeError(
`expected function as 'before' option, got ${opts.before.constructor.name}`,
);
`expected function as 'before' option, got ${opts.before.constructor.name}`
)
if (

@@ -107,14 +107,14 @@ opts.after != null &&

throw new TypeError(
`expected function as 'after' option, got ${opts.after.constructor.name}`,
);
};
`expected function as 'after' option, got ${opts.after.constructor.name}`
)
}
export const overrideBenchmarkDefaults = (benchmark, opts) => {
benchmark.samples = opts.samples ?? benchmark.samples;
benchmark.time = opts.time ?? benchmark.time;
benchmark.warmup = opts.warmup ?? benchmark.warmup;
};
benchmark.samples = opts.samples ?? benchmark.samples
benchmark.time = opts.time ?? benchmark.time
benchmark.warmup = opts.warmup ?? benchmark.warmup
}
export const mergeDeepRight = (target, source) => {
const targetClone = structuredClone(target);
const targetClone = structuredClone(target)

@@ -126,21 +126,20 @@ for (const key in source) {

) {
targetClone[key] = mergeDeepRight(target[key], source[key]);
targetClone[key] = mergeDeepRight(target[key], source[key])
} else {
targetClone[key] = source[key];
targetClone[key] = source[key]
}
} else {
targetClone[key] = source[key];
targetClone[key] = source[key]
}
}
return targetClone;
};
return targetClone
}
export const checkDividend = n => {
if ('number' !== typeof n)
throw new TypeError(`expected number, got ${n.constructor.name}`);
if (n === 0 || Number.isNaN(n))
throw new RangeError(`Invalid dividend: ${n}`);
return n;
};
throw new TypeError(`expected number, got ${n.constructor.name}`)
if (n === 0 || Number.isNaN(n)) throw new RangeError(`Invalid dividend: ${n}`)
return n
}

@@ -151,12 +150,12 @@ export async function measure(

after = emptyFunction,
opts = {},
opts = {}
) {
if (![Function, AsyncFunction].includes(fn.constructor))
throw new TypeError(`expected function, got ${fn.constructor.name}`);
throw new TypeError(`expected function, got ${fn.constructor.name}`)
if (![Function, AsyncFunction].includes(before.constructor))
throw new TypeError(`expected function, got ${before.constructor.name}`);
throw new TypeError(`expected function, got ${before.constructor.name}`)
if (![Function, AsyncFunction].includes(after.constructor))
throw new TypeError(`expected function, got ${after.constructor.name}`);
throw new TypeError(`expected function, got ${after.constructor.name}`)
if (Object.prototype.toString.call(opts).slice(8, -1) !== 'Object')
throw new TypeError(`expected object, got ${opts.constructor.name}`);
throw new TypeError(`expected object, got ${opts.constructor.name}`)

@@ -171,7 +170,7 @@ // biome-ignore lint/style/noParameterAssign: <explanation>

},
opts,
);
opts
)
const asyncBefore = AsyncFunction === before.constructor;
const asyncAfter = AsyncFunction === after.constructor;
const asyncBefore = AsyncFunction === before.constructor
const asyncAfter = AsyncFunction === after.constructor

@@ -214,15 +213,15 @@ const benchmark = new (!opts.async ? Function : AsyncFunction)(

return samples;
`,
);
`
)
const samples = !opts.async
? benchmark(fn, before, after, now)
: await benchmark(fn, before, after, now);
: await benchmark(fn, before, after, now)
return buildStats(samples);
return buildStats(samples)
}
const quantile = (arr, q) => {
const base = (arr.length - 1) * q;
const baseIndex = Math.floor(base);
const base = (arr.length - 1) * q
const baseIndex = Math.floor(base)
if (arr[baseIndex + 1] != null) {

@@ -232,26 +231,26 @@ return (

(base - baseIndex) * (arr[baseIndex + 1] - arr[baseIndex])
);
)
}
return arr[baseIndex];
};
return arr[baseIndex]
}
const buildStats = samples => {
if (!Array.isArray(samples))
throw new TypeError(`expected array, got ${samples.constructor.name}`);
throw new TypeError(`expected array, got ${samples.constructor.name}`)
if (Array.isArray(samples) && samples.length === 0)
throw new Error('expected non-empty array, got empty array');
throw new Error('expected non-empty array, got empty array')
samples.sort((a, b) => a - b);
samples.sort((a, b) => a - b)
const time = samples.reduce((a, b) => a + b, 0);
const avg = time / samples.length;
const time = samples.reduce((a, b) => a + b, 0)
const avg = time / samples.length
const vr =
samples.reduce((a, b) => a + (b - avg) ** 2, 0) /
checkDividend(samples.length - 1);
const sd = Math.sqrt(vr);
const sem = sd / Math.sqrt(samples.length);
checkDividend(samples.length - 1)
const sd = Math.sqrt(vr)
const sem = sd / Math.sqrt(samples.length)
const critical =
tTable[(samples.length - 1 || 1).toString()] || tTable.infinity;
const moe = sem * critical;
const rmoe = (moe / checkDividend(avg)) * 100;
tTable[(samples.length - 1 || 1).toString()] || tTable.infinity
const moe = sem * critical
const rmoe = (moe / checkDividend(avg)) * 100

@@ -272,3 +271,3 @@ return {

ss: samples.length >= minimumSamples,
};
};
}
}

@@ -5,13 +5,13 @@ /**

const buildLogger = () => {
let logger;
let logger
try {
logger = console.log;
logger = console.log
} catch {
logger = print;
logger = print
}
if ('function' !== typeof logger)
throw new TypeError(`logger is not a function: ${typeof logger}`);
return logger;
};
throw new TypeError(`logger is not a function: ${typeof logger}`)
return logger
}
export const logger = buildLogger();
export const logger = buildLogger()

@@ -26,45 +26,45 @@ // https://github.com/lukeed/kleur/blob/master/colors.mjs

function init(x, y) {
const rgx = new RegExp(`\\x1b\\[${y}m`, 'g');
const open = `\x1b[${x}m`;
const close = `\x1b[${y}m`;
const rgx = new RegExp(`\\x1b\\[${y}m`, 'g')
const open = `\x1b[${x}m`
const close = `\x1b[${y}m`
return (e, txt) => {
if (!e || txt == null) return txt;
if (!e || txt == null) return txt
// biome-ignore lint/style/noParameterAssign: <explanation>
txt = txt.toString();
txt = txt.toString()
return `${open}${
txt.includes(close) ? txt.replace(rgx, close + open) : txt
}${close}`;
};
}${close}`
}
}
// modifiers
export const reset = init(0, 0);
export const bold = init(1, 22);
export const dim = init(2, 22);
export const italic = init(3, 23);
export const underline = init(4, 24);
export const inverse = init(7, 27);
export const hidden = init(8, 28);
export const strikethrough = init(9, 29);
export const reset = init(0, 0)
export const bold = init(1, 22)
export const dim = init(2, 22)
export const italic = init(3, 23)
export const underline = init(4, 24)
export const inverse = init(7, 27)
export const hidden = init(8, 28)
export const strikethrough = init(9, 29)
// colors
export const black = init(30, 39);
export const red = init(31, 39);
export const green = init(32, 39);
export const yellow = init(33, 39);
export const blue = init(34, 39);
export const magenta = init(35, 39);
export const cyan = init(36, 39);
export const white = init(37, 39);
export const gray = init(90, 39);
export const black = init(30, 39)
export const red = init(31, 39)
export const green = init(32, 39)
export const yellow = init(33, 39)
export const blue = init(34, 39)
export const magenta = init(35, 39)
export const cyan = init(36, 39)
export const white = init(37, 39)
export const gray = init(90, 39)
// background colors
export const bgBlack = init(40, 49);
export const bgRed = init(41, 49);
export const bgGreen = init(42, 49);
export const bgYellow = init(43, 49);
export const bgBlue = init(44, 49);
export const bgMagenta = init(45, 49);
export const bgCyan = init(46, 49);
export const bgWhite = init(47, 49);
export const bgBlack = init(40, 49)
export const bgRed = init(41, 49)
export const bgGreen = init(42, 49)
export const bgYellow = init(43, 49)
export const bgBlue = init(44, 49)
export const bgMagenta = init(45, 49)
export const bgCyan = init(46, 49)
export const bgWhite = init(47, 49)

@@ -1,30 +0,30 @@

const locale = 'en-us';
const locale = 'en-us'
export function duration(time) {
if (time < 1) return `${Number((time * 1e3).toFixed(0)).toString()} ps`;
if (time < 1) return `${Number((time * 1e3).toFixed(0)).toString()} ps`
if (time < 1e2) return `${Number(time.toFixed(2)).toString()} ns`;
if (time < 1e3) return `${Number(time.toFixed(0)).toString()} ns`;
if (time < 1e2) return `${Number(time.toFixed(2)).toString()} ns`
if (time < 1e3) return `${Number(time.toFixed(0)).toString()} ns`
if (time < 1e5)
return `${Number(time.toFixed(0))
.toLocaleString(locale)
.replace(',', "'")} ns`;
.replace(',', "'")} ns`
if (time < 1e6) return `${Number((time / 1e3).toFixed(0)).toString()} µs`;
if (time < 1e6) return `${Number((time / 1e3).toFixed(0)).toString()} µs`
if (time < 1e8)
return `${Number((time / 1e3).toFixed(0))
.toLocaleString(locale)
.replace(',', "'")} µs`;
.replace(',', "'")} µs`
if (time < 1e9) return `${Number((time / 1e6).toFixed(0)).toString()} ms`;
if (time < 1e9) return `${Number((time / 1e6).toFixed(0)).toString()} ms`
if (time < 1e11)
return `${Number((time / 1e6).toFixed(0))
.toLocaleString(locale)
.replace(',', "'")} ms`;
.replace(',', "'")} ms`
if (time < 1e12) return `${Number((time / 1e9).toFixed(0)).toString()} s`;
if (time < 36e11) return `${Number((time / 60e9).toFixed(0)).toString()} m`;
if (time < 1e12) return `${Number((time / 1e9).toFixed(0)).toString()} s`
if (time < 36e11) return `${Number((time / 60e9).toFixed(0)).toString()} m`
return `${Number((time / 36e11).toFixed(2)).toLocaleString(locale, {
notation: 'compact',
})} h`;
})} h`
}

@@ -35,3 +35,3 @@

.toLocaleString(locale)
.replaceAll(',', "'")}`;
.replaceAll(',', "'")}`
}

@@ -42,3 +42,3 @@

.toLocaleString(locale)
.replaceAll(',', "'")} %`;
.replaceAll(',', "'")} %`
}

@@ -49,3 +49,3 @@

.toLocaleString(locale)
.replaceAll(',', "'")}`;
.replaceAll(',', "'")}`
}

@@ -1,11 +0,11 @@

import { tTable, tatamiNgGroup } from '../constants.js';
import { checkDividend } from '../lib.js';
import * as clr from './clr.js';
import { duration, errorMargin, iterPerSecond, speedRatio } from './fmt.js';
import { tTable, tatamiNgGroup } from '../constants.js'
import { checkDividend } from '../lib.js'
import * as clr from './clr.js'
import { duration, errorMargin, iterPerSecond, speedRatio } from './fmt.js'
export function size(names) {
let size = 9;
for (const name of names) if (size < name.length) size = name.length;
let size = 9
for (const name of names) if (size < name.length) size = name.length
return 2 + size;
return 2 + size
}

@@ -22,4 +22,4 @@

return `${'-'.repeat(
size + 14 * avg + 14 * iter + 14 * rmoe + 24 * min_max,
)}${!percentiles ? '' : ` ${'-'.repeat(9 + 10 + 10 + 10)}`}`;
size + 14 * avg + 14 * iter + 14 * rmoe + 24 * min_max
)}${!percentiles ? '' : ` ${'-'.repeat(9 + 10 + 10 + 10)}`}`
}

@@ -30,3 +30,3 @@

error.message
}${error.stack ? `\n${clr.gray(colors, error.stack)}` : ''}`;
}${error.stack ? `\n${clr.gray(colors, error.stack)}` : ''}`
}

@@ -42,4 +42,4 @@

1 ms = 1 millisecond = 1'000μs = 1'000'000ns = 1e-9ps = 1e-3s
`,
);
`
)
}

@@ -64,5 +64,5 @@

9,
' ',
' '
)} ${'p995'.padStart(9, ' ')}`
}`;
}`
}

@@ -81,3 +81,3 @@

percentiles = true,
},
}
) {

@@ -89,3 +89,3 @@ return `${name.padEnd(size, ' ')}${

14 + 10 * colors,
' ',
' '
)

@@ -97,3 +97,3 @@ }${

14 + 10 * colors,
' ',
' '
)

@@ -105,3 +105,3 @@ }${

14 + 10 * colors,
' ',
' '
)

@@ -113,3 +113,3 @@ }${

colors,
duration(stats.max),
duration(stats.max)
)})`.padStart(24 + 2 * 10 * colors, ' ')

@@ -128,3 +128,3 @@ }${

.padStart(9 + 10 * colors, ' ')}`
}${!stats.ss ? ` ${clr.red(colors, '!')}` : ''}`;
}${!stats.ss ? ` ${clr.red(colors, '!')}` : ''}`
}

@@ -139,12 +139,12 @@

if (benchmarks.some(benchmark => benchmark.error != null)) {
throw new Error('Cannot summarize benchmarks with error');
throw new Error('Cannot summarize benchmarks with error')
}
if (benchmarks.length < 2) {
throw new Error('Cannot summarize less than two benchmarks');
throw new Error('Cannot summarize less than two benchmarks')
}
benchmarks.sort(
(benchmarkA, benchmarkB) => benchmarkA.stats.avg - benchmarkB.stats.avg,
);
(benchmarkA, benchmarkB) => benchmarkA.stats.avg - benchmarkB.stats.avg
)
const baseline =
benchmarks.find(benchmark => benchmark.baseline) ?? benchmarks[0];
benchmarks.find(benchmark => benchmark.baseline) ?? benchmarks[0]

@@ -158,3 +158,3 @@ return `${`${clr.bold(colors, 'summary')}${

.map(benchmark => {
const ratio = benchmark.stats.avg / checkDividend(baseline.stats.avg);
const ratio = benchmark.stats.avg / checkDividend(baseline.stats.avg)
// https://en.wikipedia.org/wiki/Propagation_of_uncertainty#Example_formulae

@@ -165,23 +165,23 @@ const ratioSd =

(baseline.stats.sd / checkDividend(baseline.stats.avg)) ** 2 +
(benchmark.stats.sd / checkDividend(benchmark.stats.avg)) ** 2,
);
(benchmark.stats.sd / checkDividend(benchmark.stats.avg)) ** 2
)
const ratioSem =
ratioSd /
checkDividend(
Math.sqrt(baseline.stats.samples + benchmark.stats.samples),
);
Math.sqrt(baseline.stats.samples + benchmark.stats.samples)
)
const critical =
tTable[
(baseline.stats.samples + benchmark.stats.samples - 1 || 1).toString()
] || tTable.infinity;
const ratioMoe = ratioSem * critical;
const ratioRmoe = (ratioMoe / checkDividend(ratio)) * 100;
] || tTable.infinity
const ratioMoe = ratioSem * critical
const ratioRmoe = (ratioMoe / checkDividend(ratio)) * 100
return `\n ${clr[1 > ratio ? 'red' : 'green'](
colors,
1 > ratio ? speedRatio(1 / checkDividend(ratio)) : speedRatio(ratio),
1 > ratio ? speedRatio(1 / checkDividend(ratio)) : speedRatio(ratio)
)} ± ${clr.blue(colors, errorMargin(ratioRmoe))} times ${
1 > ratio ? 'slower' : 'faster'
} than ${clr.bold(colors, clr.cyan(colors, benchmark.name))}`;
} than ${clr.bold(colors, clr.cyan(colors, benchmark.name))}`
})
.join('')}`;
.join('')}`
}

@@ -1,17 +0,17 @@

import { runtimes } from './constants.js';
import { runtimes } from './constants.js'
const isBun = !!globalThis.Bun || !!globalThis.process?.versions?.bun;
const isDeno = !!globalThis.Deno;
const isNode = globalThis.process?.release?.name === 'node';
const isWorkerd = globalThis.navigator?.userAgent === 'Cloudflare-Workers';
const isBrowser = !!globalThis.navigator;
const isBun = !!globalThis.Bun || !!globalThis.process?.versions?.bun
const isDeno = !!globalThis.Deno
const isNode = globalThis.process?.release?.name === 'node'
const isWorkerd = globalThis.navigator?.userAgent === 'Cloudflare-Workers'
const isBrowser = !!globalThis.navigator
export const runtime = (() => {
if (isBun) return runtimes.bun;
if (isDeno) return runtimes.deno;
if (isNode) return runtimes.node;
if (isWorkerd) return runtimes.workerd;
if (isBrowser) return runtimes.browser;
if (isBun) return runtimes.bun
if (isDeno) return runtimes.deno
if (isNode) return runtimes.node
if (isWorkerd) return runtimes.workerd
if (isBrowser) return runtimes.browser
return 'unknown';
})();
return 'unknown'
})()

@@ -1,2 +0,2 @@

import { runtime } from './runtime.js';
import { runtime } from './runtime.js'

@@ -8,8 +8,8 @@ export const now = (() => {

try {
$.agent.monotonicNow();
$.agent.monotonicNow()
return () => Math.round(1e6 * $.agent.monotonicNow());
return () => Math.round(1e6 * $.agent.monotonicNow())
} catch {}
return () => Math.round(1e6 * performance.now());
return () => Math.round(1e6 * performance.now())
},

@@ -19,3 +19,3 @@ node: () => () => Number(process.hrtime.bigint()),

bun: () => Bun.nanoseconds,
}[runtime]();
})();
}[runtime]()
})()

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc