@dfinity/utils
Version:
A collection of utilities and constants for NNS/SNS projects.
3 lines (2 loc) • 13.4 kB
JavaScript
var T=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var J=Object.prototype.hasOwnProperty;var z=(e,t)=>{for(var r in t)T(e,r,{get:t[r],enumerable:!0})},G=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of $(t))!J.call(e,i)&&i!==r&&T(e,i,{get:()=>t[i],enumerable:!(n=q(t,i))||n.enumerable});return e};var Q=e=>G(T({},"__esModule",{value:!0}),e);var Dt={};z(Dt,{AgentManager:()=>S,Canister:()=>_,FromStringToTokenError:()=>N,ICPToken:()=>Z,InvalidPercentageError:()=>y,NullishError:()=>A,TokenAmount:()=>I,TokenAmountV2:()=>U,arrayBufferToUint8Array:()=>ct,arrayOfNumberToUint8Array:()=>xt,asNonNullish:()=>nt,asciiStringToByteArray:()=>ft,assertNonNullish:()=>x,assertPercentageNumber:()=>it,base64ToUint8Array:()=>gt,bigEndianCrc32:()=>ht,bigIntToUint8Array:()=>at,candidNumberArrayToBigInt:()=>ut,convertStringToE8s:()=>L,createAgent:()=>V,createServices:()=>rt,debounce:()=>Bt,decodeBase32:()=>pt,defaultAgent:()=>w,encodeBase32:()=>lt,fromDefinedNullable:()=>Ot,fromNullable:()=>C,fromNullishNullable:()=>Pt,hashObject:()=>Nt,hashText:()=>K,hexStringToUint8Array:()=>bt,isEmptyString:()=>tt,isNullish:()=>b,jsonReplacer:()=>D,jsonReviver:()=>Tt,nonNullish:()=>s,notEmptyString:()=>F,nowInBigIntNanoSeconds:()=>St,numberToUint8Array:()=>st,principalToSubAccount:()=>kt,queryAndUpdate:()=>et,secondsToDuration:()=>Ut,smallerVersion:()=>Rt,toBigIntNanoSeconds:()=>wt,toNullable:()=>Et,uint8ArrayToArrayOfNumber:()=>dt,uint8ArrayToBase64:()=>mt,uint8ArrayToBigInt:()=>ot,uint8ArrayToHexString:()=>E});module.exports=Q(Dt);var N=(n=>(n[n.FractionalMoreThan8Decimals=0]="FractionalMoreThan8Decimals",n[n.InvalidFormat=1]="InvalidFormat",n[n.FractionalTooManyDecimals=2]="FractionalTooManyDecimals",n))(N||{});var M=BigInt(1e8);var W=8,L=e=>{let t=e.includes("e")?Number(e).toLocaleString("en",{useGrouping:!1,maximumFractionDigits:20}):e;t=t.trim().replace(/[,']/g,"");let r=t.match(/\d*(\.\d*)?/);if(!r||r[0]!==t)return 1;let[n,i]=t.split("."),o=BigInt(0);if(n)try{o+=BigInt(n)*M}catch{return 1}if(i){if(i.length>8)return 0;try{o+=BigInt(i.padEnd(8,"0"))}catch{return 1}}return o},X=({amount:e,decimals:t})=>{e=e.trim().replace(/[,']/g,"");let r=e.match(/\d*(\.\d*)?/);if(!r||r[0]!==e)return 1;let[n,i]=e.split("."),o=0n,c=10n**BigInt(t);if(n)try{o+=BigInt(n)*c}catch{return 1}if(i){if(i.length>t)return 2;try{o+=BigInt(i.padEnd(t,"0"))}catch{return 1}}return o},Z={symbol:"ICP",name:"Internet Computer",decimals:8},I=class e{constructor(t,r){this.e8s=t;this.token=r;if(r.decimals!==8)throw new Error("Use TokenAmountV2 for number of decimals other than 8")}static fromE8s({amount:t,token:r}){return new e(t,r)}static fromString({amount:t,token:r}){if(r.decimals!==8)throw new Error("Use TokenAmountV2 for number of decimals other than 8");let n=L(t);return typeof n=="bigint"?new e(n,r):n}static fromNumber({amount:t,token:r}){let n=e.fromString({amount:t.toString(),token:r});if(n instanceof e)return n;throw n===0?new Error(`Number ${t} has more than 8 decimals`):new Error(`Invalid number ${t}`)}toE8s(){return this.e8s}},U=class e{constructor(t,r){this.ulps=t;this.token=r}static fromUlps({amount:t,token:r}){return new e(t,r)}static fromString({amount:t,token:r}){let n=X({amount:t,decimals:r.decimals});return typeof n=="bigint"?new e(n,r):n}static fromNumber({amount:t,token:r}){let n=e.fromString({amount:t.toFixed(Math.min(W,r.decimals)),token:r});if(n instanceof e)return n;throw n===2?new Error(`Number ${t} has more than ${r.decimals} decimals`):new Error(`Invalid number ${t}`)}toUlps(){return this.ulps}toE8s(){return this.token.decimals<8?this.ulps*10n**BigInt(8-this.token.decimals):this.token.decimals===8?this.ulps:this.ulps/10n**BigInt(this.token.decimals-8)}};var _=class{constructor(t,r,n){this.id=t;this.service=r;this.certifiedService=n;this.caller=({certified:t=!0})=>t?this.certifiedService:this.service}get canisterId(){return this.id}};var b=e=>e==null,s=e=>!b(e),F=e=>s(e)&&e!=="",tt=e=>!F(e);var et=async({request:e,onLoad:t,onQueryError:r,onUpdateError:n,strategy:i="query_and_update",identity:o,resolution:c="race"})=>{let a=!1,d=f=>e({certified:f,identity:o}).then(l=>{a||t({certified:f,response:l})}).catch(l=>{f||r==null||r({error:l,identity:o}),!a&&(b(n)||(console.error(l),f&&n({error:l,identity:o})))}).finally(()=>a=a||f),g=i==="query"?[d(!1)]:i==="update"?[d(!0)]:[d(!1),d(!0)];await(c==="all_settled"?Promise.allSettled(g):Promise.race(g))};var B=require("@dfinity/agent");var p=require("@dfinity/agent");var w=()=>p.HttpAgent.createSync({host:"https://icp-api.io",identity:new p.AnonymousIdentity}),V=async({identity:e,host:t,fetchRootKey:r=!1,verifyQuerySignatures:n=!1,retryTimes:i})=>await p.HttpAgent.create({identity:e,...s(t)&&{host:t},verifyQuerySignatures:n,...s(i)&&{retryTimes:i},shouldFetchRootKey:r}),S=class e{constructor(t){this.config=t;this.agents=void 0;this.getAgent=async({identity:t})=>{let r=t.getPrincipal().toText();if(b(this.agents)||b(this.agents[r])){let n=await V({identity:t,fetchRootKey:this.config.fetchRootKey,host:this.config.host,verifyQuerySignatures:!0});return this.agents={...this.agents??{},[r]:n},n}return this.agents[r]};this.clearAgents=()=>{this.agents=null}}static create(t){return new e(t)}};var rt=({options:{canisterId:e,serviceOverride:t,certifiedServiceOverride:r,agent:n,callTransform:i,queryTransform:o},idlFactory:c,certifiedIdlFactory:a})=>{let d=n??w(),g=t??B.Actor.createActor(c,{agent:d,canisterId:e,callTransform:i,queryTransform:o}),f=r??B.Actor.createActor(a,{agent:d,canisterId:e,callTransform:i,queryTransform:o});return{service:g,certifiedService:f,agent:d,canisterId:e}};var y=class extends Error{},A=class extends Error{},x=(e,t)=>{if(e==null)throw new A(t)},nt=(e,t)=>(x(e,t),e),it=e=>{if(e<0||e>100)throw new y(`${e} is not a valid percentage number.`)};var ot=e=>{let t=new DataView(e.buffer,e.byteOffset,e.byteLength);if(typeof t.getBigUint64=="function")return t.getBigUint64(0);{let r=BigInt(t.getUint32(0)),n=BigInt(t.getUint32(4));return(r<<BigInt(32))+n}},at=e=>{let t=new ArrayBuffer(8),r=new DataView(t);if(typeof r.setBigUint64=="function")r.setBigUint64(0,e);else{let n=Number(e>>BigInt(32)),i=Number(e&BigInt(4294967295));r.setUint32(0,n),r.setUint32(4,i)}return new Uint8Array(t)},st=e=>{let t=new DataView(new ArrayBuffer(8));for(let r=7;r>=0;--r)t.setUint8(r,e%256),e=e>>8;return new Uint8Array(t.buffer)},ct=e=>new Uint8Array(e),dt=e=>Array.from(e),xt=e=>new Uint8Array(e),ft=e=>Array.from(e).map(t=>t.charCodeAt(0)),bt=e=>{let t=e.match(/.{1,2}/g);return x(t,"Invalid hex string."),Uint8Array.from(t.map(r=>parseInt(r,16)))},E=e=>(e instanceof Uint8Array||(e=Uint8Array.from(e)),e.reduce((t,r)=>t+r.toString(16).padStart(2,"0"),"")),ut=e=>{let t=0n;for(let r=e.length-1;r>=0;r--)t=(t<<32n)+BigInt(e[r]);return t};var h="abcdefghijklmnopqrstuvwxyz234567",u=Object.create(null);for(let e=0;e<h.length;e++)u[h[e]]=e;u[0]=u.o;u[1]=u.i;var lt=e=>{let t=0,r=0,n="";function i(o){return t<0?r|=o>>-t:r=o<<t&248,t>3?(t-=8,1):(t<4&&(n+=h[r>>3],t+=5),0)}for(let o=0;o<e.length;)o+=i(e[o]);return n+(t<0?h[r>>3]:"")};function pt(e){let t=0,r=0,n=new Uint8Array(e.length*4/3|0),i=0;function o(c){let a=u[c.toLowerCase()];x(a,`Invalid character: ${JSON.stringify(c)}`),a<<=3,r|=a>>>t,t+=5,t>=8&&(n[i++]=r,t-=8,t>0?r=a<<5-t&255:r=0)}for(let c of e)o(c);return n.slice(0,i)}var mt=e=>btoa(String.fromCharCode(...new Uint8Array(e))),gt=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0));var yt=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]),At=e=>{let t=-1;for(let r=0;r<e.length;r++){let i=(e[r]^t)&255;t=yt[i]^t>>>8}return(t^-1)>>>0},ht=e=>{let t=new ArrayBuffer(4);return new DataView(t).setUint32(0,At(e),!1),new Uint8Array(t)};var R=require("@dfinity/principal");var O="__bigint__",P="__principal__",k="__uint8array__",D=(e,t)=>typeof t=="bigint"?{[O]:`${t}`}:s(t)&&t instanceof R.Principal?{[P]:t.toText()}:s(t)&&t instanceof Uint8Array?{[k]:Array.from(t)}:t,Tt=(e,t)=>{let r=n=>t[n];return s(t)&&typeof t=="object"&&O in t?BigInt(r(O)):s(t)&&typeof t=="object"&&P in t?R.Principal.fromText(r(P)):s(t)&&typeof t=="object"&&k in t?Uint8Array.from(r(k)):t};var Nt=async e=>{let t=JSON.stringify(e,D);return await K(t)},K=async e=>{let t=new TextEncoder().encode(e),r=await crypto.subtle.digest("SHA-256",t);return E(new Uint8Array(r))};var It={year:"year",year_plural:"years",month:"month",month_plural:"months",day:"day",day_plural:"days",hour:"hour",hour_plural:"hours",minute:"minute",minute_plural:"minutes",second:"second",second_plural:"seconds"},Ut=({seconds:e,i18n:t=It})=>{let r=e/BigInt(60),n=r/BigInt(60);r-=n*BigInt(60);let i=n/BigInt(24);n-=i*BigInt(24);let o=_t(i);return i-=Y(o),[m("year",o),m("day",i),m("hour",n),m("minute",r),...e>BigInt(0)&&e<BigInt(60)?[m("second",e)]:[]].filter(({amount:a})=>a>0).slice(0,2).map(a=>`${a.amount} ${a.amount===1?t[a.labelKey]:t[`${a.labelKey}_plural`]}`).join(", ")},_t=e=>{let t=e/BigInt(365);for(;Y(t)>e;)t--;return t},Y=e=>{let t=e/BigInt(4);return e*BigInt(365)+t},m=(e,t)=>({labelKey:e,amount:Number(t)}),j=1000000n,St=()=>BigInt(Date.now())*j,wt=e=>BigInt(e.getTime())*j;var Bt=(e,t)=>{let r;return(...n)=>{let i=()=>e(...n);r&&clearTimeout(r),r=setTimeout(i,t!==void 0&&t>0?t:300)}};var Et=e=>s(e)?[e]:[],C=e=>e==null?void 0:e[0],Ot=e=>{let t=C(e);return x(t),t},Pt=e=>C(e??[]);var kt=e=>{let t=e.toUint8Array(),r=new Uint8Array(32);return r[0]=t.length,r.set(t,1),r};var v=(e,t)=>t>e.length?[...e,...[...Array(t-e.length).keys()].map(()=>0)]:e,H=e=>{if(!Number.isNaN(Number(e)))return Number(e);let t=e.split("").reduce((r,n)=>Number.isNaN(Number(n))?r:r+n,"");return Number(t)},Rt=({minVersion:e,currentVersion:t})=>{let r=v(e.split(".").map(H),3).join(".");return v(t.split(".").map(H),3).join(".").localeCompare(r,void 0,{numeric:!0,sensitivity:"base"})<0};0&&(module.exports={AgentManager,Canister,FromStringToTokenError,ICPToken,InvalidPercentageError,NullishError,TokenAmount,TokenAmountV2,arrayBufferToUint8Array,arrayOfNumberToUint8Array,asNonNullish,asciiStringToByteArray,assertNonNullish,assertPercentageNumber,base64ToUint8Array,bigEndianCrc32,bigIntToUint8Array,candidNumberArrayToBigInt,convertStringToE8s,createAgent,createServices,debounce,decodeBase32,defaultAgent,encodeBase32,fromDefinedNullable,fromNullable,fromNullishNullable,hashObject,hashText,hexStringToUint8Array,isEmptyString,isNullish,jsonReplacer,jsonReviver,nonNullish,notEmptyString,nowInBigIntNanoSeconds,numberToUint8Array,principalToSubAccount,queryAndUpdate,secondsToDuration,smallerVersion,toBigIntNanoSeconds,toNullable,uint8ArrayToArrayOfNumber,uint8ArrayToBase64,uint8ArrayToBigInt,uint8ArrayToHexString});
//# sourceMappingURL=index.cjs.js.map
;