binary-utility-functions
Version:
This library provides a handy set of utility functions for manipulating binary values- such as those ascertained from a Buffer, or a TCP stream. These functions can be split into two categories: 1) Type validity checking 2) Type conversion
4 lines (2 loc) • 3.99 kB
JavaScript
var l=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var n=(r,e)=>l(r,"name",{value:e,configurable:!0});var k=(r,e)=>{for(var t in e)l(r,t,{get:e[t],enumerable:!0});},$=(r,e,t,u)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of y(e))!D.call(r,s)&&s!==t&&l(r,s,{get:()=>e[s],enumerable:!(u=T(e,s))||u.enumerable});return r};var O=r=>$(l({},"__esModule",{value:!0}),r);var A={};k(A,{bits:()=>q,convert:()=>j,validate:()=>U});module.exports=O(A);function i(r){return !!(Number.isInteger(r)&&r<=15&&r>=0)}n(i,"is_valid_nibble");function o(r){return !!(Number.isInteger(r)&&r<=255&&r>=0)}n(o,"is_valid_u8");function _(r){return !!(Number.isInteger(r)&&r<=65535&&r>=0)}n(_,"is_valid_u16");function a(r){return !!(Number.isInteger(r)&&r<=4294967295&&r>=0)}n(a,"is_valid_u32");function m(r,e){if(!i(r)||!i(e))throw new Error("util::two_nibble_to_one_byte::is_valid_nibble::false");return r<<4|e}n(m,"two_nibble_to_one_u8");function f(r){if(!o(r))throw new Error("util::one_u8_to_two_nibbles::is_valid_u8::false");return [r>>4,r&15]}n(f,"one_u8_to_two_nibbles");function d(r,e){if(!o(r)||!o(e))throw new Error("util::two_u8_to_one_u16::is_valid_u8::false");return r<<8|e}n(d,"two_u8_to_one_u16");function w(r,e,t){if(!o(r)||!o(e)||!o(t))throw new Error("util::three_u8_to_u32::is_valid_u8::false");return r<<16|e<<8|t}n(w,"three_u8_to_one_u32");function p(r,e,t,u){if(!o(r)||!o(e)||!o(t)||!o(u))throw new Error("util::four_u8_to_one_u32::is_valid_u8::false");return r<<24|e<<16|t<<8|u}n(p,"four_u8_to_one_u32");function x(r){if(!_(r))throw new Error("util::one_u16_to_two_u8::is_valid_u16::false");return [r>>8,r&255]}n(x,"one_u16_to_two_u8");function h(r,e){if(!_(r)||!_(e))throw new Error("util::two_u16_to_one_u32::is_valid_u16::false");return (r<<16|e)>>>0}n(h,"two_u16_to_one_u32");function v(r){if(!a(r))throw new Error("util::one_u32_to_two_u16::is_valid_u32::false");return [r>>>16,r&65535]}n(v,"one_u32_to_two_u16");function c(r){if(!a(r))throw new Error("util::one_u32_to_three_u8::is_valid_u32::false");return [r>>>24,r>>>16&255,r>>>8&255,r&255]}n(c,"one_u32_to_four_u8");var F={nx2_u8x1:m,u8x1_nx2:f,u8x2_u16x1:d,u8x3_u32x1:w,u8x4_u32x1:p,u16x1_u8x2:x,u16x2_u32x1:h,u32x1_u16x2:v,u32x1_u8x4:c};var b=class{constructor(e){this.lower_bound=0;this.higher_bound=7;this.valid_handler=e=>!1;switch(e){case"nibble":this.higher_bound=3,this.valid_handler=i;break;case"u8":this.higher_bound=7,this.valid_handler=o;break;case"u16":this.higher_bound=15,this.valid_handler=_;break;case"u32":this.higher_bound=31,this.valid_handler=a;break;default:throw new Error(`util::DataType::Type::${e} Unrecognized`)}this.type_name=e;}validate(e,t){for(let u of arguments)if(isNaN(u)||typeof u!="number")throw new Error(`util::DataType::${this.type_name}_bit_set::validate::InvalidParameter`);return !(!this.valid_handler(e)||t<this.lower_bound||t>this.higher_bound)}is_bit_set(e,t){if(!this.validate(e,t))throw new Error(`util::DataType::${this.type_name}_bit_set::ParamOutOfBounds`);return (e>>t&1)!=0}};n(b,"DataType");function E(r,e){for(let t of arguments)if(isNaN(t)||typeof t!="number")throw new Error("util::DataType::nibble_bit_set::InvalidParameters");return new b("nibble").is_bit_set(r,e)}n(E,"nibble_bit_set");function N(r,e){for(let t of arguments)if(isNaN(t)||typeof t!="number")throw new Error("util::DataType::u8_bit_set::InvalidParameters");return new b("u8").is_bit_set(r,e)}n(N,"u8_bit_set");function g(r,e){for(let t of arguments)if(isNaN(t)||typeof t!="number")throw new Error("util::DataType::u16_bit_set::InvalidParameters");return new b("u16").is_bit_set(r,e)}n(g,"u16_bit_set");function I(r,e){for(let t of arguments)if(isNaN(t)||typeof t!="number")throw new Error("util::DataType::u32_bit_set::InvalidParameters");return new b("u32").is_bit_set(r,e)}n(I,"u32_bit_set");var P={is_bit_set:{nibble:E,u8:N,u16:g,u32:I}};var U={nibble:i,u8:o,u16:_,u32:a},j={...F},q={...P};
;