UNPKG

@dfinity/utils

Version:

A collection of utilities and constants for NNS/SNS projects.

3 lines (2 loc) • 13.2 kB
"use strict";var T=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var $=(e,t)=>{for(var r in t)T(e,r,{get:t[r],enumerable:!0})},j=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of q(t))!H.call(e,i)&&i!==r&&T(e,i,{get:()=>t[i],enumerable:!(n=v(t,i))||n.enumerable});return e};var J=e=>j(T({},"__esModule",{value:!0}),e);var Pt={};$(Pt,{AgentManager:()=>S,Canister:()=>_,FromStringToTokenError:()=>N,ICPToken:()=>Q,InvalidPercentageError:()=>y,NullishError:()=>A,TokenAmount:()=>I,TokenAmountV2:()=>U,arrayBufferToUint8Array:()=>ot,arrayOfNumberToUint8Array:()=>ct,asNonNullish:()=>tt,asciiStringToByteArray:()=>st,assertNonNullish:()=>x,assertPercentageNumber:()=>et,base64ToUint8Array:()=>pt,bigEndianCrc32:()=>yt,bigIntToUint8Array:()=>nt,candidNumberArrayToBigInt:()=>ft,convertStringToE8s:()=>C,createAgent:()=>L,createServices:()=>Z,debounce:()=>Ut,decodeBase32:()=>ut,defaultAgent:()=>w,encodeBase32:()=>bt,fromDefinedNullable:()=>St,fromNullable:()=>E,fromNullishNullable:()=>wt,hexStringToUint8Array:()=>dt,isEmptyString:()=>W,isNullish:()=>b,jsonReplacer:()=>Bt,jsonReviver:()=>Et,nonNullish:()=>c,notEmptyString:()=>M,nowInBigIntNanoSeconds:()=>Nt,numberToUint8Array:()=>it,principalToSubAccount:()=>kt,queryAndUpdate:()=>X,secondsToDuration:()=>ht,smallerVersion:()=>Ot,toBigIntNanoSeconds:()=>It,toNullable:()=>_t,uint8ArrayToArrayOfNumber:()=>at,uint8ArrayToBase64:()=>lt,uint8ArrayToBigInt:()=>rt,uint8ArrayToHexString:()=>xt});module.exports=J(Pt);var N=(n=>(n[n.FractionalMoreThan8Decimals=0]="FractionalMoreThan8Decimals",n[n.InvalidFormat=1]="InvalidFormat",n[n.FractionalTooManyDecimals=2]="FractionalTooManyDecimals",n))(N||{});var D=BigInt(1e8);var z=8,C=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)*D}catch{return 1}if(i){if(i.length>8)return 0;try{o+=BigInt(i.padEnd(8,"0"))}catch{return 1}}return o},G=({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,s=10n**BigInt(t);if(n)try{o+=BigInt(n)*s}catch{return 1}if(i){if(i.length>t)return 2;try{o+=BigInt(i.padEnd(t,"0"))}catch{return 1}}return o},Q={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=C(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=G({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(z,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,c=e=>!b(e),M=e=>c(e)&&e!=="",W=e=>!M(e);var X=async({request:e,onLoad:t,onQueryError:r,onUpdateError:n,strategy:i="query_and_update",identity:o,resolution:s="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(s==="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}),L=async({identity:e,host:t,fetchRootKey:r=!1,verifyQuerySignatures:n=!1,retryTimes:i})=>await p.HttpAgent.create({identity:e,...c(t)&&{host:t},verifyQuerySignatures:n,...c(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 L({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 Z=({options:{canisterId:e,serviceOverride:t,certifiedServiceOverride:r,agent:n,callTransform:i,queryTransform:o},idlFactory:s,certifiedIdlFactory:a})=>{let d=n??w(),g=t??B.Actor.createActor(s,{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)},tt=(e,t)=>(x(e,t),e),et=e=>{if(e<0||e>100)throw new y(`${e} is not a valid percentage number.`)};var rt=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}},nt=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)},it=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)},ot=e=>new Uint8Array(e),at=e=>Array.from(e),ct=e=>new Uint8Array(e),st=e=>Array.from(e).map(t=>t.charCodeAt(0)),dt=e=>{let t=e.match(/.{1,2}/g);return x(t,"Invalid hex string."),Uint8Array.from(t.map(r=>parseInt(r,16)))},xt=e=>(e instanceof Uint8Array||(e=Uint8Array.from(e)),e.reduce((t,r)=>t+r.toString(16).padStart(2,"0"),"")),ft=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 bt=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 ut(e){let t=0,r=0,n=new Uint8Array(e.length*4/3|0),i=0;function o(s){let a=u[s.toLowerCase()];x(a,`Invalid character: ${JSON.stringify(s)}`),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 s of e)o(s);return n.slice(0,i)}var lt=e=>btoa(String.fromCharCode(...new Uint8Array(e))),pt=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0));var mt=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]),gt=e=>{let t=-1;for(let r=0;r<e.length;r++){let i=(e[r]^t)&255;t=mt[i]^t>>>8}return(t^-1)>>>0},yt=e=>{let t=new ArrayBuffer(4);return new DataView(t).setUint32(0,gt(e),!1),new Uint8Array(t)};var At={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"},ht=({seconds:e,i18n:t=At})=>{let r=e/BigInt(60),n=r/BigInt(60);r-=n*BigInt(60);let i=n/BigInt(24);n-=i*BigInt(24);let o=Tt(i);return i-=F(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(", ")},Tt=e=>{let t=e/BigInt(365);for(;F(t)>e;)t--;return t},F=e=>{let t=e/BigInt(4);return e*BigInt(365)+t},m=(e,t)=>({labelKey:e,amount:Number(t)}),V=1000000n,Nt=()=>BigInt(Date.now())*V,It=e=>BigInt(e.getTime())*V;var Ut=(e,t)=>{let r;return(...n)=>{let i=()=>e(...n);r&&clearTimeout(r),r=setTimeout(i,t!==void 0&&t>0?t:300)}};var _t=e=>c(e)?[e]:[],E=e=>e==null?void 0:e[0],St=e=>{let t=E(e);return x(t),t},wt=e=>E(e??[]);var R=require("@dfinity/principal");var k="__bigint__",O="__principal__",P="__uint8array__",Bt=(e,t)=>typeof t=="bigint"?{[k]:`${t}`}:c(t)&&t instanceof R.Principal?{[O]:t.toText()}:c(t)&&t instanceof Uint8Array?{[P]:Array.from(t)}:t,Et=(e,t)=>{let r=n=>t[n];return c(t)&&typeof t=="object"&&k in t?BigInt(r(k)):c(t)&&typeof t=="object"&&O in t?R.Principal.fromText(r(O)):c(t)&&typeof t=="object"&&P in t?Uint8Array.from(r(P)):t};var kt=e=>{let t=e.toUint8Array(),r=new Uint8Array(32);return r[0]=t.length,r.set(t,1),r};var K=(e,t)=>t>e.length?[...e,...[...Array(t-e.length).keys()].map(()=>0)]:e,Y=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)},Ot=({minVersion:e,currentVersion:t})=>{let r=K(e.split(".").map(Y),3).join(".");return K(t.split(".").map(Y),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,hexStringToUint8Array,isEmptyString,isNullish,jsonReplacer,jsonReviver,nonNullish,notEmptyString,nowInBigIntNanoSeconds,numberToUint8Array,principalToSubAccount,queryAndUpdate,secondsToDuration,smallerVersion,toBigIntNanoSeconds,toNullable,uint8ArrayToArrayOfNumber,uint8ArrayToBase64,uint8ArrayToBigInt,uint8ArrayToHexString}); //# sourceMappingURL=index.cjs.js.map