UNPKG

gnablib

Version:

A lean, zero dependency library to provide a useful base for your project.

2 lines 2.13 kB
/*! Copyright 2023-2025 the gnablib contributors MPL-1.1 */ import{sNum as t}from"../safe/safe.js";const e=4294967296,r=128;export const isLE=new Uint8Array(Uint16Array.of(1).buffer)[0]>0;const s={i16(t,e=0,r=1){do{const r=t[e];t[e]=t[e+1],t[e+1]=r,e+=2}while(--r>0)},i32(t,e=0,r=1){let s;do{s=t[e],t[e]=t[e+3],t[e+3]=s,s=t[e+1],t[e+1]=t[e+2],t[e+2]=s,e+=4}while(--r>0)},i64(t,e=0,r=1){let s;do{s=t[e],t[e]=t[e+7],t[e+7]=s,s=t[e+1],t[e+1]=t[e+6],t[e+6]=s,s=t[e+2],t[e+2]=t[e+5],t[e+5]=s,s=t[e+3],t[e+3]=t[e+4],t[e+4]=s,e+=8}while(--r>0)},i128(t,e=0,r=1){do{t.subarray(e,e+16).reverse(),e+=16}while(--r>0)},bytes(t,e,r=0){t.subarray(r,r+e).reverse()},set32(t,e,r,s,n,i){e<<=2,t[e++]=i,t[e++]=n,t[e++]=s,t[e]=r}},n={i16(t,e=0,r=1){},i32(t,e=0,r=1){},i64(t,e=0,r=1){},i128(t,e=0,r=1){},bytes(){},set32(t,e,r,s,n,i){e<<=2,t[e++]=r,t[e++]=s,t[e++]=n,t[e]=i}};function i(t,e,r){for(;t>0;)r[e++]=t,t>>>=8;return e}function a(t,e,r){for(;t<-1;)r[e++]=t,t>>=8;return e}function o(r){t("n",r).unsigned().throwNot();const s=new Uint8Array(7);if(0===r)return s.subarray(0,1);let n=0,a=r;return r>=e&&(s[n++]=a,a>>>=8,s[n++]=a,a>>>=8,s[n++]=a,a>>>=8,s[n++]=a,r=r/e|0),n=i(r,n,s),s.subarray(0,n)}function u(s){t("n",s).throwNot();const n=new Uint8Array(7);if(0===s)return n.subarray(0,1);let o=0,u=s;return s>=e?(n[o++]=u,u>>>=8,n[o++]=u,u>>>=8,n[o++]=u,u>>>=8,n[o++]=u,o=i(s=s/e|0,o,n),n[o-1]&r&&(n[o++]=0)):s>0?(o=i(s,o,n),n[o-1]&r&&(n[o++]=0)):s<-2147483649?(n[o++]=u,u>>>=8,n[o++]=u,u>>>=8,n[o++]=u,u>>>=8,n[o++]=u,o=a(s=Math.floor(s/e),o,n),(n[o-1]&r)!==r&&(n[o++]=255)):(o=a(s,o,n),(n[o-1]&r)!==r&&(n[o++]=255)),n.subarray(0,o)}const c={minBytes:t=>{let e=0;for(;e<t.length&&0==t[e];e++);return t.subarray(e)},uintMinBytes:o,intMinBytes:u},y={minBytes:t=>{let e=t.length-1;for(;e>0&&0==t[e];e--);return t.subarray(0,e)},uintMinBytes:t=>o(t).reverse(),intMinBytes:t=>u(t).reverse()};export let asLE;export let asBE;isLE?(asLE=Object.assign(Object.assign({},n),c),asBE=Object.assign(Object.assign({},s),y)):(asLE=Object.assign(Object.assign({},s),c),asBE=Object.assign(Object.assign({},n),y));export function asE(t){return t?asBE:asLE}