Comparing version 0.7.0 to 1.0.0
@@ -0,1 +1,16 @@ | ||
<a name="1.0.0"></a> | ||
# [1.0.0](https://github.com/multiformats/js-multibase/compare/v0.7.0...v1.0.0) (2020-06-09) | ||
### Features | ||
* more encoding, errors, spec tests ([#55](https://github.com/multiformats/js-multibase/issues/55)) ([613363b](https://github.com/multiformats/js-multibase/commit/613363b)), closes [#49](https://github.com/multiformats/js-multibase/issues/49) [#38](https://github.com/multiformats/js-multibase/issues/38) [#46](https://github.com/multiformats/js-multibase/issues/46) [#53](https://github.com/multiformats/js-multibase/issues/53) [#26](https://github.com/multiformats/js-multibase/issues/26) | ||
### BREAKING CHANGES | ||
* `names` and `codes` export the full object that maps names/codes to base instances instead of just the keys | ||
<a name="0.7.0"></a> | ||
@@ -2,0 +17,0 @@ # [0.7.0](https://github.com/multiformats/js-multibase/compare/v0.6.1...v0.7.0) (2020-03-16) |
/*! For license information please see index.min.js.LICENSE.txt */ | ||
!function(t,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.Multibase=r():t.Multibase=r()}(window,(function(){return function(t){var r={};function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}return e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:n})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,r){if(1&r&&(t=e(t)),8&r)return t;if(4&r&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(e.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&r&&"string"!=typeof t)for(var o in t)e.d(n,o,function(r){return t[r]}.bind(null,o));return n},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},e.p="",e(e.s=1)}([function(t,r,e){"use strict";(function(t){var n=e(4),o=e(5),i=e(6);function f(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function u(t,r){if(f()<r)throw new RangeError("Invalid typed array length");return s.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(r)).__proto__=s.prototype:(null===t&&(t=new s(r)),t.length=r),t}function s(t,r,e){if(!(s.TYPED_ARRAY_SUPPORT||this instanceof s))return new s(t,r,e);if("number"==typeof t){if("string"==typeof r)throw new Error("If encoding is specified then the first argument must be a string");return c(this,t)}return a(this,t,r,e)}function a(t,r,e,n){if("number"==typeof r)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&r instanceof ArrayBuffer?function(t,r,e,n){if(r.byteLength,e<0||r.byteLength<e)throw new RangeError("'offset' is out of bounds");if(r.byteLength<e+(n||0))throw new RangeError("'length' is out of bounds");r=void 0===e&&void 0===n?new Uint8Array(r):void 0===n?new Uint8Array(r,e):new Uint8Array(r,e,n);s.TYPED_ARRAY_SUPPORT?(t=r).__proto__=s.prototype:t=l(t,r);return t}(t,r,e,n):"string"==typeof r?function(t,r,e){"string"==typeof e&&""!==e||(e="utf8");if(!s.isEncoding(e))throw new TypeError('"encoding" must be a valid string encoding');var n=0|g(r,e),o=(t=u(t,n)).write(r,e);o!==n&&(t=t.slice(0,o));return t}(t,r,e):function(t,r){if(s.isBuffer(r)){var e=0|p(r.length);return 0===(t=u(t,e)).length||r.copy(t,0,0,e),t}if(r){if("undefined"!=typeof ArrayBuffer&&r.buffer instanceof ArrayBuffer||"length"in r)return"number"!=typeof r.length||(n=r.length)!=n?u(t,0):l(t,r);if("Buffer"===r.type&&i(r.data))return l(t,r.data)}var n;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,r)}function h(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function c(t,r){if(h(r),t=u(t,r<0?0:0|p(r)),!s.TYPED_ARRAY_SUPPORT)for(var e=0;e<r;++e)t[e]=0;return t}function l(t,r){var e=r.length<0?0:0|p(r.length);t=u(t,e);for(var n=0;n<e;n+=1)t[n]=255&r[n];return t}function p(t){if(t>=f())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+f().toString(16)+" bytes");return 0|t}function g(t,r){if(s.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var e=t.length;if(0===e)return 0;for(var n=!1;;)switch(r){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return N(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return z(t).length;default:if(n)return N(t).length;r=(""+r).toLowerCase(),n=!0}}function y(t,r,e){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(r>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return S(this,r,e);case"utf8":case"utf-8":return T(this,r,e);case"ascii":return P(this,r,e);case"latin1":case"binary":return U(this,r,e);case"base64":return B(this,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,r,e);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function d(t,r,e){var n=t[r];t[r]=t[e],t[e]=n}function w(t,r,e,n,o){if(0===t.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=o?0:t.length-1),e<0&&(e=t.length+e),e>=t.length){if(o)return-1;e=t.length-1}else if(e<0){if(!o)return-1;e=0}if("string"==typeof r&&(r=s.from(r,n)),s.isBuffer(r))return 0===r.length?-1:b(t,r,e,n,o);if("number"==typeof r)return r&=255,s.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,r,e):Uint8Array.prototype.lastIndexOf.call(t,r,e):b(t,[r],e,n,o);throw new TypeError("val must be string, number or Buffer")}function b(t,r,e,n,o){var i,f=1,u=t.length,s=r.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||r.length<2)return-1;f=2,u/=2,s/=2,e/=2}function a(t,r){return 1===f?t[r]:t.readUInt16BE(r*f)}if(o){var h=-1;for(i=e;i<u;i++)if(a(t,i)===a(r,-1===h?0:i-h)){if(-1===h&&(h=i),i-h+1===s)return h*f}else-1!==h&&(i-=i-h),h=-1}else for(e+s>u&&(e=u-s),i=e;i>=0;i--){for(var c=!0,l=0;l<s;l++)if(a(t,i+l)!==a(r,l)){c=!1;break}if(c)return i}return-1}function v(t,r,e,n){e=Number(e)||0;var o=t.length-e;n?(n=Number(n))>o&&(n=o):n=o;var i=r.length;if(i%2!=0)throw new TypeError("Invalid hex string");n>i/2&&(n=i/2);for(var f=0;f<n;++f){var u=parseInt(r.substr(2*f,2),16);if(isNaN(u))return f;t[e+f]=u}return f}function m(t,r,e,n){return F(N(r,t.length-e),t,e,n)}function E(t,r,e,n){return F(function(t){for(var r=[],e=0;e<t.length;++e)r.push(255&t.charCodeAt(e));return r}(r),t,e,n)}function A(t,r,e,n){return E(t,r,e,n)}function _(t,r,e,n){return F(z(r),t,e,n)}function R(t,r,e,n){return F(function(t,r){for(var e,n,o,i=[],f=0;f<t.length&&!((r-=2)<0);++f)e=t.charCodeAt(f),n=e>>8,o=e%256,i.push(o),i.push(n);return i}(r,t.length-e),t,e,n)}function B(t,r,e){return 0===r&&e===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(r,e))}function T(t,r,e){e=Math.min(t.length,e);for(var n=[],o=r;o<e;){var i,f,u,s,a=t[o],h=null,c=a>239?4:a>223?3:a>191?2:1;if(o+c<=e)switch(c){case 1:a<128&&(h=a);break;case 2:128==(192&(i=t[o+1]))&&(s=(31&a)<<6|63&i)>127&&(h=s);break;case 3:i=t[o+1],f=t[o+2],128==(192&i)&&128==(192&f)&&(s=(15&a)<<12|(63&i)<<6|63&f)>2047&&(s<55296||s>57343)&&(h=s);break;case 4:i=t[o+1],f=t[o+2],u=t[o+3],128==(192&i)&&128==(192&f)&&128==(192&u)&&(s=(15&a)<<18|(63&i)<<12|(63&f)<<6|63&u)>65535&&s<1114112&&(h=s)}null===h?(h=65533,c=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),o+=c}return function(t){var r=t.length;if(r<=4096)return String.fromCharCode.apply(String,t);var e="",n=0;for(;n<r;)e+=String.fromCharCode.apply(String,t.slice(n,n+=4096));return e}(n)}r.Buffer=s,r.SlowBuffer=function(t){+t!=t&&(t=0);return s.alloc(+t)},r.INSPECT_MAX_BYTES=50,s.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(r){return!1}}(),r.kMaxLength=f(),s.poolSize=8192,s._augment=function(t){return t.__proto__=s.prototype,t},s.from=function(t,r,e){return a(null,t,r,e)},s.TYPED_ARRAY_SUPPORT&&(s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0})),s.alloc=function(t,r,e){return function(t,r,e,n){return h(r),r<=0?u(t,r):void 0!==e?"string"==typeof n?u(t,r).fill(e,n):u(t,r).fill(e):u(t,r)}(null,t,r,e)},s.allocUnsafe=function(t){return c(null,t)},s.allocUnsafeSlow=function(t){return c(null,t)},s.isBuffer=function(t){return!(null==t||!t._isBuffer)},s.compare=function(t,r){if(!s.isBuffer(t)||!s.isBuffer(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var e=t.length,n=r.length,o=0,i=Math.min(e,n);o<i;++o)if(t[o]!==r[o]){e=t[o],n=r[o];break}return e<n?-1:n<e?1:0},s.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(t,r){if(!i(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return s.alloc(0);var e;if(void 0===r)for(r=0,e=0;e<t.length;++e)r+=t[e].length;var n=s.allocUnsafe(r),o=0;for(e=0;e<t.length;++e){var f=t[e];if(!s.isBuffer(f))throw new TypeError('"list" argument must be an Array of Buffers');f.copy(n,o),o+=f.length}return n},s.byteLength=g,s.prototype._isBuffer=!0,s.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var r=0;r<t;r+=2)d(this,r,r+1);return this},s.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var r=0;r<t;r+=4)d(this,r,r+3),d(this,r+1,r+2);return this},s.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var r=0;r<t;r+=8)d(this,r,r+7),d(this,r+1,r+6),d(this,r+2,r+5),d(this,r+3,r+4);return this},s.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?T(this,0,t):y.apply(this,arguments)},s.prototype.equals=function(t){if(!s.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===s.compare(this,t)},s.prototype.inspect=function(){var t="",e=r.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,e).match(/.{2}/g).join(" "),this.length>e&&(t+=" ... ")),"<Buffer "+t+">"},s.prototype.compare=function(t,r,e,n,o){if(!s.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===r&&(r=0),void 0===e&&(e=t?t.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),r<0||e>t.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&r>=e)return 0;if(n>=o)return-1;if(r>=e)return 1;if(this===t)return 0;for(var i=(o>>>=0)-(n>>>=0),f=(e>>>=0)-(r>>>=0),u=Math.min(i,f),a=this.slice(n,o),h=t.slice(r,e),c=0;c<u;++c)if(a[c]!==h[c]){i=a[c],f=h[c];break}return i<f?-1:f<i?1:0},s.prototype.includes=function(t,r,e){return-1!==this.indexOf(t,r,e)},s.prototype.indexOf=function(t,r,e){return w(this,t,r,e,!0)},s.prototype.lastIndexOf=function(t,r,e){return w(this,t,r,e,!1)},s.prototype.write=function(t,r,e,n){if(void 0===r)n="utf8",e=this.length,r=0;else if(void 0===e&&"string"==typeof r)n=r,e=this.length,r=0;else{if(!isFinite(r))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");r|=0,isFinite(e)?(e|=0,void 0===n&&(n="utf8")):(n=e,e=void 0)}var o=this.length-r;if((void 0===e||e>o)&&(e=o),t.length>0&&(e<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return v(this,t,r,e);case"utf8":case"utf-8":return m(this,t,r,e);case"ascii":return E(this,t,r,e);case"latin1":case"binary":return A(this,t,r,e);case"base64":return _(this,t,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,r,e);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function P(t,r,e){var n="";e=Math.min(t.length,e);for(var o=r;o<e;++o)n+=String.fromCharCode(127&t[o]);return n}function U(t,r,e){var n="";e=Math.min(t.length,e);for(var o=r;o<e;++o)n+=String.fromCharCode(t[o]);return n}function S(t,r,e){var n=t.length;(!r||r<0)&&(r=0),(!e||e<0||e>n)&&(e=n);for(var o="",i=r;i<e;++i)o+=k(t[i]);return o}function x(t,r,e){for(var n=t.slice(r,e),o="",i=0;i<n.length;i+=2)o+=String.fromCharCode(n[i]+256*n[i+1]);return o}function O(t,r,e){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+r>e)throw new RangeError("Trying to access beyond buffer length")}function Y(t,r,e,n,o,i){if(!s.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>o||r<i)throw new RangeError('"value" argument is out of bounds');if(e+n>t.length)throw new RangeError("Index out of range")}function I(t,r,e,n){r<0&&(r=65535+r+1);for(var o=0,i=Math.min(t.length-e,2);o<i;++o)t[e+o]=(r&255<<8*(n?o:1-o))>>>8*(n?o:1-o)}function M(t,r,e,n){r<0&&(r=4294967295+r+1);for(var o=0,i=Math.min(t.length-e,4);o<i;++o)t[e+o]=r>>>8*(n?o:3-o)&255}function C(t,r,e,n,o,i){if(e+n>t.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function L(t,r,e,n,i){return i||C(t,0,e,4),o.write(t,r,e,n,23,4),e+4}function j(t,r,e,n,i){return i||C(t,0,e,8),o.write(t,r,e,n,52,8),e+8}s.prototype.slice=function(t,r){var e,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(r=void 0===r?n:~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),r<t&&(r=t),s.TYPED_ARRAY_SUPPORT)(e=this.subarray(t,r)).__proto__=s.prototype;else{var o=r-t;e=new s(o,void 0);for(var i=0;i<o;++i)e[i]=this[i+t]}return e},s.prototype.readUIntLE=function(t,r,e){t|=0,r|=0,e||O(t,r,this.length);for(var n=this[t],o=1,i=0;++i<r&&(o*=256);)n+=this[t+i]*o;return n},s.prototype.readUIntBE=function(t,r,e){t|=0,r|=0,e||O(t,r,this.length);for(var n=this[t+--r],o=1;r>0&&(o*=256);)n+=this[t+--r]*o;return n},s.prototype.readUInt8=function(t,r){return r||O(t,1,this.length),this[t]},s.prototype.readUInt16LE=function(t,r){return r||O(t,2,this.length),this[t]|this[t+1]<<8},s.prototype.readUInt16BE=function(t,r){return r||O(t,2,this.length),this[t]<<8|this[t+1]},s.prototype.readUInt32LE=function(t,r){return r||O(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},s.prototype.readUInt32BE=function(t,r){return r||O(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},s.prototype.readIntLE=function(t,r,e){t|=0,r|=0,e||O(t,r,this.length);for(var n=this[t],o=1,i=0;++i<r&&(o*=256);)n+=this[t+i]*o;return n>=(o*=128)&&(n-=Math.pow(2,8*r)),n},s.prototype.readIntBE=function(t,r,e){t|=0,r|=0,e||O(t,r,this.length);for(var n=r,o=1,i=this[t+--n];n>0&&(o*=256);)i+=this[t+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*r)),i},s.prototype.readInt8=function(t,r){return r||O(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},s.prototype.readInt16LE=function(t,r){r||O(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},s.prototype.readInt16BE=function(t,r){r||O(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},s.prototype.readInt32LE=function(t,r){return r||O(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},s.prototype.readInt32BE=function(t,r){return r||O(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},s.prototype.readFloatLE=function(t,r){return r||O(t,4,this.length),o.read(this,t,!0,23,4)},s.prototype.readFloatBE=function(t,r){return r||O(t,4,this.length),o.read(this,t,!1,23,4)},s.prototype.readDoubleLE=function(t,r){return r||O(t,8,this.length),o.read(this,t,!0,52,8)},s.prototype.readDoubleBE=function(t,r){return r||O(t,8,this.length),o.read(this,t,!1,52,8)},s.prototype.writeUIntLE=function(t,r,e,n){(t=+t,r|=0,e|=0,n)||Y(this,t,r,e,Math.pow(2,8*e)-1,0);var o=1,i=0;for(this[r]=255&t;++i<e&&(o*=256);)this[r+i]=t/o&255;return r+e},s.prototype.writeUIntBE=function(t,r,e,n){(t=+t,r|=0,e|=0,n)||Y(this,t,r,e,Math.pow(2,8*e)-1,0);var o=e-1,i=1;for(this[r+o]=255&t;--o>=0&&(i*=256);)this[r+o]=t/i&255;return r+e},s.prototype.writeUInt8=function(t,r,e){return t=+t,r|=0,e||Y(this,t,r,1,255,0),s.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=255&t,r+1},s.prototype.writeUInt16LE=function(t,r,e){return t=+t,r|=0,e||Y(this,t,r,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):I(this,t,r,!0),r+2},s.prototype.writeUInt16BE=function(t,r,e){return t=+t,r|=0,e||Y(this,t,r,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):I(this,t,r,!1),r+2},s.prototype.writeUInt32LE=function(t,r,e){return t=+t,r|=0,e||Y(this,t,r,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=255&t):M(this,t,r,!0),r+4},s.prototype.writeUInt32BE=function(t,r,e){return t=+t,r|=0,e||Y(this,t,r,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):M(this,t,r,!1),r+4},s.prototype.writeIntLE=function(t,r,e,n){if(t=+t,r|=0,!n){var o=Math.pow(2,8*e-1);Y(this,t,r,e,o-1,-o)}var i=0,f=1,u=0;for(this[r]=255&t;++i<e&&(f*=256);)t<0&&0===u&&0!==this[r+i-1]&&(u=1),this[r+i]=(t/f>>0)-u&255;return r+e},s.prototype.writeIntBE=function(t,r,e,n){if(t=+t,r|=0,!n){var o=Math.pow(2,8*e-1);Y(this,t,r,e,o-1,-o)}var i=e-1,f=1,u=0;for(this[r+i]=255&t;--i>=0&&(f*=256);)t<0&&0===u&&0!==this[r+i+1]&&(u=1),this[r+i]=(t/f>>0)-u&255;return r+e},s.prototype.writeInt8=function(t,r,e){return t=+t,r|=0,e||Y(this,t,r,1,127,-128),s.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=255&t,r+1},s.prototype.writeInt16LE=function(t,r,e){return t=+t,r|=0,e||Y(this,t,r,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):I(this,t,r,!0),r+2},s.prototype.writeInt16BE=function(t,r,e){return t=+t,r|=0,e||Y(this,t,r,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):I(this,t,r,!1),r+2},s.prototype.writeInt32LE=function(t,r,e){return t=+t,r|=0,e||Y(this,t,r,4,2147483647,-2147483648),s.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):M(this,t,r,!0),r+4},s.prototype.writeInt32BE=function(t,r,e){return t=+t,r|=0,e||Y(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),s.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):M(this,t,r,!1),r+4},s.prototype.writeFloatLE=function(t,r,e){return L(this,t,r,!0,e)},s.prototype.writeFloatBE=function(t,r,e){return L(this,t,r,!1,e)},s.prototype.writeDoubleLE=function(t,r,e){return j(this,t,r,!0,e)},s.prototype.writeDoubleBE=function(t,r,e){return j(this,t,r,!1,e)},s.prototype.copy=function(t,r,e,n){if(e||(e=0),n||0===n||(n=this.length),r>=t.length&&(r=t.length),r||(r=0),n>0&&n<e&&(n=e),n===e)return 0;if(0===t.length||0===this.length)return 0;if(r<0)throw new RangeError("targetStart out of bounds");if(e<0||e>=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-r<n-e&&(n=t.length-r+e);var o,i=n-e;if(this===t&&e<r&&r<n)for(o=i-1;o>=0;--o)t[o+r]=this[o+e];else if(i<1e3||!s.TYPED_ARRAY_SUPPORT)for(o=0;o<i;++o)t[o+r]=this[o+e];else Uint8Array.prototype.set.call(t,this.subarray(e,e+i),r);return i},s.prototype.fill=function(t,r,e,n){if("string"==typeof t){if("string"==typeof r?(n=r,r=0,e=this.length):"string"==typeof e&&(n=e,e=this.length),1===t.length){var o=t.charCodeAt(0);o<256&&(t=o)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!s.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof t&&(t&=255);if(r<0||this.length<r||this.length<e)throw new RangeError("Out of range index");if(e<=r)return this;var i;if(r>>>=0,e=void 0===e?this.length:e>>>0,t||(t=0),"number"==typeof t)for(i=r;i<e;++i)this[i]=t;else{var f=s.isBuffer(t)?t:N(new s(t,n).toString()),u=f.length;for(i=0;i<e-r;++i)this[i+r]=f[i%u]}return this};var D=/[^+\/0-9A-Za-z-_]/g;function k(t){return t<16?"0"+t.toString(16):t.toString(16)}function N(t,r){var e;r=r||1/0;for(var n=t.length,o=null,i=[],f=0;f<n;++f){if((e=t.charCodeAt(f))>55295&&e<57344){if(!o){if(e>56319){(r-=3)>-1&&i.push(239,191,189);continue}if(f+1===n){(r-=3)>-1&&i.push(239,191,189);continue}o=e;continue}if(e<56320){(r-=3)>-1&&i.push(239,191,189),o=e;continue}e=65536+(o-55296<<10|e-56320)}else o&&(r-=3)>-1&&i.push(239,191,189);if(o=null,e<128){if((r-=1)<0)break;i.push(e)}else if(e<2048){if((r-=2)<0)break;i.push(e>>6|192,63&e|128)}else if(e<65536){if((r-=3)<0)break;i.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((r-=4)<0)break;i.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return i}function z(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(D,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function F(t,r,e,n){for(var o=0;o<n&&!(o+e>=r.length||o>=t.length);++o)r[o+e]=t[o];return o}}).call(this,e(3))},function(t,r,e){t.exports=e(2)},function(t,r,e){"use strict";const{Buffer:n}=e(0),o=e(7);function i(t,r){if(!r)throw new Error("requires an encoded buffer");const e=f(t),o=n.from(e.code);return function(t,r){f(t).decode(r.toString())}(e.name,r),n.concat([o,r])}function f(t){let r;if(o.names[t])r=o.names[t];else{if(!o.codes[t])throw new Error("Unsupported encoding");r=o.codes[t]}if(!r.isImplemented())throw new Error("Base "+t+" is not implemented yet");return r}(r=t.exports=i).encode=function(t,r){const e=f(t);return i(e.name,n.from(e.encode(r)))},r.decode=function(t){n.isBuffer(t)&&(t=t.toString());const r=t.substring(0,1);"string"==typeof(t=t.substring(1,t.length))&&(t=n.from(t));const e=f(r);return n.from(e.decode(t.toString()))},r.isEncoded=function(t){n.isBuffer(t)&&(t=t.toString());if("[object String]"!==Object.prototype.toString.call(t))return!1;const r=t.substring(0,1);try{return f(r).name}catch(e){return!1}},r.names=Object.freeze(Object.keys(o.names)),r.codes=Object.freeze(Object.keys(o.codes))},function(t,r,e){"use strict";var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(o){"object"==typeof window&&(n=window)}t.exports=n},function(t,r,e){"use strict";r.byteLength=function(t){var r=a(t),e=r[0],n=r[1];return 3*(e+n)/4-n},r.toByteArray=function(t){var r,e,n=a(t),f=n[0],u=n[1],s=new i(function(t,r,e){return 3*(r+e)/4-e}(0,f,u)),h=0,c=u>0?f-4:f;for(e=0;e<c;e+=4)r=o[t.charCodeAt(e)]<<18|o[t.charCodeAt(e+1)]<<12|o[t.charCodeAt(e+2)]<<6|o[t.charCodeAt(e+3)],s[h++]=r>>16&255,s[h++]=r>>8&255,s[h++]=255&r;2===u&&(r=o[t.charCodeAt(e)]<<2|o[t.charCodeAt(e+1)]>>4,s[h++]=255&r);1===u&&(r=o[t.charCodeAt(e)]<<10|o[t.charCodeAt(e+1)]<<4|o[t.charCodeAt(e+2)]>>2,s[h++]=r>>8&255,s[h++]=255&r);return s},r.fromByteArray=function(t){for(var r,e=t.length,o=e%3,i=[],f=0,u=e-o;f<u;f+=16383)i.push(h(t,f,f+16383>u?u:f+16383));1===o?(r=t[e-1],i.push(n[r>>2]+n[r<<4&63]+"==")):2===o&&(r=(t[e-2]<<8)+t[e-1],i.push(n[r>>10]+n[r>>4&63]+n[r<<2&63]+"="));return i.join("")};for(var n=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=0,s=f.length;u<s;++u)n[u]=f[u],o[f.charCodeAt(u)]=u;function a(t){var r=t.length;if(r%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var e=t.indexOf("=");return-1===e&&(e=r),[e,e===r?0:4-e%4]}function h(t,r,e){for(var o,i,f=[],u=r;u<e;u+=3)o=(t[u]<<16&16711680)+(t[u+1]<<8&65280)+(255&t[u+2]),f.push(n[(i=o)>>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return f.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(t,r,e){"use strict";r.read=function(t,r,e,n,o){var i,f,u=8*o-n-1,s=(1<<u)-1,a=s>>1,h=-7,c=e?o-1:0,l=e?-1:1,p=t[r+c];for(c+=l,i=p&(1<<-h)-1,p>>=-h,h+=u;h>0;i=256*i+t[r+c],c+=l,h-=8);for(f=i&(1<<-h)-1,i>>=-h,h+=n;h>0;f=256*f+t[r+c],c+=l,h-=8);if(0===i)i=1-a;else{if(i===s)return f?NaN:1/0*(p?-1:1);f+=Math.pow(2,n),i-=a}return(p?-1:1)*f*Math.pow(2,i-n)},r.write=function(t,r,e,n,o,i){var f,u,s,a=8*i-o-1,h=(1<<a)-1,c=h>>1,l=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:i-1,g=n?1:-1,y=r<0||0===r&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(u=isNaN(r)?1:0,f=h):(f=Math.floor(Math.log(r)/Math.LN2),r*(s=Math.pow(2,-f))<1&&(f--,s*=2),(r+=f+c>=1?l/s:l*Math.pow(2,1-c))*s>=2&&(f++,s/=2),f+c>=h?(u=0,f=h):f+c>=1?(u=(r*s-1)*Math.pow(2,o),f+=c):(u=r*Math.pow(2,c-1)*Math.pow(2,o),f=0));o>=8;t[e+p]=255&u,p+=g,u/=256,o-=8);for(f=f<<o|u,a+=o;a>0;t[e+p]=255&f,p+=g,f/=256,a-=8);t[e+p-g]|=128*y}},function(t,r,e){"use strict";var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,r,e){"use strict";const n=e(8),o=e(9),i=e(11),f=e(12),u=e(13),s=[["base1","1","","1"],["base2","0",o,"01"],["base8","7",o,"01234567"],["base10","9",o,"0123456789"],["base16","f",i,"0123456789abcdef"],["base32","b",f,"abcdefghijklmnopqrstuvwxyz234567"],["base32pad","c",f,"abcdefghijklmnopqrstuvwxyz234567="],["base32hex","v",f,"0123456789abcdefghijklmnopqrstuv"],["base32hexpad","t",f,"0123456789abcdefghijklmnopqrstuv="],["base32z","h",f,"ybndrfg8ejkmcpqxot1uwisza345h769"],["base58flickr","Z",o,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base58btc","z",o,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base64","m",u,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",u,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",u,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",u,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],a=s.reduce((t,r)=>(t[r[0]]=new n(r[0],r[1],r[2],r[3]),t),{}),h=s.reduce((t,r)=>(t[r[1]]=a[r[0]],t),{});t.exports={names:a,codes:h}},function(t,r,e){"use strict";t.exports=class{constructor(t,r,e,n){this.name=t,this.code=r,this.alphabet=n,e&&n&&(this.engine=e(n))}encode(t){return this.engine.encode(t)}decode(t){return this.engine.decode(t)}isImplemented(){return this.engine}}},function(t,r,e){"use strict";var n=e(10).Buffer;t.exports=function(t){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),e=0;e<r.length;e++)r[e]=255;for(var o=0;o<t.length;o++){var i=t.charAt(o),f=i.charCodeAt(0);if(255!==r[f])throw new TypeError(i+" is ambiguous");r[f]=o}var u=t.length,s=t.charAt(0),a=Math.log(u)/Math.log(256),h=Math.log(256)/Math.log(u);function c(t){if("string"!=typeof t)throw new TypeError("Expected String");if(0===t.length)return n.alloc(0);var e=0;if(" "!==t[e]){for(var o=0,i=0;t[e]===s;)o++,e++;for(var f=(t.length-e)*a+1>>>0,h=new Uint8Array(f);t[e];){var c=r[t.charCodeAt(e)];if(255===c)return;for(var l=0,p=f-1;(0!==c||l<i)&&-1!==p;p--,l++)c+=u*h[p]>>>0,h[p]=c%256>>>0,c=c/256>>>0;if(0!==c)throw new Error("Non-zero carry");i=l,e++}if(" "!==t[e]){for(var g=f-i;g!==f&&0===h[g];)g++;var y=n.allocUnsafe(o+(f-g));y.fill(0,0,o);for(var d=o;g!==f;)y[d++]=h[g++];return y}}}return{encode:function(r){if((Array.isArray(r)||r instanceof Uint8Array)&&(r=n.from(r)),!n.isBuffer(r))throw new TypeError("Expected Buffer");if(0===r.length)return"";for(var e=0,o=0,i=0,f=r.length;i!==f&&0===r[i];)i++,e++;for(var a=(f-i)*h+1>>>0,c=new Uint8Array(a);i!==f;){for(var l=r[i],p=0,g=a-1;(0!==l||p<o)&&-1!==g;g--,p++)l+=256*c[g]>>>0,c[g]=l%u>>>0,l=l/u>>>0;if(0!==l)throw new Error("Non-zero carry");o=p,i++}for(var y=a-o;y!==a&&0===c[y];)y++;for(var d=s.repeat(e);y<a;++y)d+=t.charAt(c[y]);return d},decodeUnsafe:c,decode:function(t){var r=c(t);if(r)return r;throw new Error("Non-base"+u+" character")}}}},function(t,r,e){"use strict";var n=e(0),o=n.Buffer;function i(t,r){for(var e in t)r[e]=t[e]}function f(t,r,e){return o(t,r,e)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?t.exports=n:(i(n,r),r.Buffer=f),f.prototype=Object.create(o.prototype),i(o,f),f.from=function(t,r,e){if("number"==typeof t)throw new TypeError("Argument must not be a number");return o(t,r,e)},f.alloc=function(t,r,e){if("number"!=typeof t)throw new TypeError("Argument must be a number");var n=o(t);return void 0!==r?"string"==typeof e?n.fill(r,e):n.fill(r):n.fill(0),n},f.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return o(t)},f.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n.SlowBuffer(t)}},function(t,r,e){"use strict";const{Buffer:n}=e(0);t.exports=function(t){return{encode:t=>"string"==typeof t?n.from(t).toString("hex"):t.toString("hex"),decode(r){for(const e of r)if(t.indexOf(e)<0)throw new Error("invalid base16 character");return n.from(r,"hex")}}}},function(t,r,e){"use strict";function n(t,r){const e=t.byteLength,n=new Uint8Array(t),o=r.indexOf("=")===r.length-1;o&&(r=r.substring(0,r.length-1));let i=0,f=0,u="";for(let s=0;s<e;s++)for(f=f<<8|n[s],i+=8;i>=5;)u+=r[f>>>i-5&31],i-=5;if(i>0&&(u+=r[f<<5-i&31]),o)for(;u.length%8!=0;)u+="=";return u}t.exports=function(t){return{encode:r=>n("string"==typeof r?Uint8Array.from(r):r,t),decode(r){for(const e of r)if(t.indexOf(e)<0)throw new Error("invalid base32 character");return function(t,r){const e=(t=t.replace(new RegExp("=","g"),"")).length;let n=0,o=0,i=0;const f=new Uint8Array(5*e/8|0);for(let u=0;u<e;u++)o=o<<5|r.indexOf(t[u]),n+=5,n>=8&&(f[i++]=o>>>n-8&255,n-=8);return f.buffer}(r,t)}}}},function(t,r,e){"use strict";const{Buffer:n}=e(0);t.exports=function(t){const r=t.indexOf("=")>-1,e=t.indexOf("-")>-1&&t.indexOf("_")>-1;return{encode(t){let o="";o="string"==typeof t?n.from(t).toString("base64"):t.toString("base64"),e&&(o=o.replace(/\+/g,"-").replace(/\//g,"_"));const i=o.indexOf("=");return i>0&&!r&&(o=o.substring(0,i)),o},decode(r){for(const e of r)if(t.indexOf(e)<0)throw new Error("invalid base64 character");return n.from(r,"base64")}}}}])})); | ||
//# sourceMappingURL=index.min.js.map | ||
!function(t,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.Multibase=r():t.Multibase=r()}(window,(function(){return function(t){var r={};function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}return e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:n})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,r){if(1&r&&(t=e(t)),8&r)return t;if(4&r&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(e.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&r&&"string"!=typeof t)for(var o in t)e.d(n,o,function(r){return t[r]}.bind(null,o));return n},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},e.p="",e(e.s=1)}([function(t,r,e){"use strict";(function(t){var n=e(4),o=e(5),i=e(6);function f(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function u(t,r){if(f()<r)throw new RangeError("Invalid typed array length");return s.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(r)).__proto__=s.prototype:(null===t&&(t=new s(r)),t.length=r),t}function s(t,r,e){if(!(s.TYPED_ARRAY_SUPPORT||this instanceof s))return new s(t,r,e);if("number"==typeof t){if("string"==typeof r)throw new Error("If encoding is specified then the first argument must be a string");return c(this,t)}return a(this,t,r,e)}function a(t,r,e,n){if("number"==typeof r)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&r instanceof ArrayBuffer?function(t,r,e,n){if(r.byteLength,e<0||r.byteLength<e)throw new RangeError("'offset' is out of bounds");if(r.byteLength<e+(n||0))throw new RangeError("'length' is out of bounds");r=void 0===e&&void 0===n?new Uint8Array(r):void 0===n?new Uint8Array(r,e):new Uint8Array(r,e,n);s.TYPED_ARRAY_SUPPORT?(t=r).__proto__=s.prototype:t=l(t,r);return t}(t,r,e,n):"string"==typeof r?function(t,r,e){"string"==typeof e&&""!==e||(e="utf8");if(!s.isEncoding(e))throw new TypeError('"encoding" must be a valid string encoding');var n=0|g(r,e),o=(t=u(t,n)).write(r,e);o!==n&&(t=t.slice(0,o));return t}(t,r,e):function(t,r){if(s.isBuffer(r)){var e=0|p(r.length);return 0===(t=u(t,e)).length||r.copy(t,0,0,e),t}if(r){if("undefined"!=typeof ArrayBuffer&&r.buffer instanceof ArrayBuffer||"length"in r)return"number"!=typeof r.length||(n=r.length)!=n?u(t,0):l(t,r);if("Buffer"===r.type&&i(r.data))return l(t,r.data)}var n;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,r)}function h(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function c(t,r){if(h(r),t=u(t,r<0?0:0|p(r)),!s.TYPED_ARRAY_SUPPORT)for(var e=0;e<r;++e)t[e]=0;return t}function l(t,r){var e=r.length<0?0:0|p(r.length);t=u(t,e);for(var n=0;n<e;n+=1)t[n]=255&r[n];return t}function p(t){if(t>=f())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+f().toString(16)+" bytes");return 0|t}function g(t,r){if(s.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var e=t.length;if(0===e)return 0;for(var n=!1;;)switch(r){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return N(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return z(t).length;default:if(n)return N(t).length;r=(""+r).toLowerCase(),n=!0}}function y(t,r,e){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(r>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return S(this,r,e);case"utf8":case"utf-8":return T(this,r,e);case"ascii":return P(this,r,e);case"latin1":case"binary":return U(this,r,e);case"base64":return _(this,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,r,e);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function d(t,r,e){var n=t[r];t[r]=t[e],t[e]=n}function w(t,r,e,n,o){if(0===t.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=o?0:t.length-1),e<0&&(e=t.length+e),e>=t.length){if(o)return-1;e=t.length-1}else if(e<0){if(!o)return-1;e=0}if("string"==typeof r&&(r=s.from(r,n)),s.isBuffer(r))return 0===r.length?-1:b(t,r,e,n,o);if("number"==typeof r)return r&=255,s.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,r,e):Uint8Array.prototype.lastIndexOf.call(t,r,e):b(t,[r],e,n,o);throw new TypeError("val must be string, number or Buffer")}function b(t,r,e,n,o){var i,f=1,u=t.length,s=r.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||r.length<2)return-1;f=2,u/=2,s/=2,e/=2}function a(t,r){return 1===f?t[r]:t.readUInt16BE(r*f)}if(o){var h=-1;for(i=e;i<u;i++)if(a(t,i)===a(r,-1===h?0:i-h)){if(-1===h&&(h=i),i-h+1===s)return h*f}else-1!==h&&(i-=i-h),h=-1}else for(e+s>u&&(e=u-s),i=e;i>=0;i--){for(var c=!0,l=0;l<s;l++)if(a(t,i+l)!==a(r,l)){c=!1;break}if(c)return i}return-1}function v(t,r,e,n){e=Number(e)||0;var o=t.length-e;n?(n=Number(n))>o&&(n=o):n=o;var i=r.length;if(i%2!=0)throw new TypeError("Invalid hex string");n>i/2&&(n=i/2);for(var f=0;f<n;++f){var u=parseInt(r.substr(2*f,2),16);if(isNaN(u))return f;t[e+f]=u}return f}function m(t,r,e,n){return F(N(r,t.length-e),t,e,n)}function E(t,r,e,n){return F(function(t){for(var r=[],e=0;e<t.length;++e)r.push(255&t.charCodeAt(e));return r}(r),t,e,n)}function A(t,r,e,n){return E(t,r,e,n)}function R(t,r,e,n){return F(z(r),t,e,n)}function B(t,r,e,n){return F(function(t,r){for(var e,n,o,i=[],f=0;f<t.length&&!((r-=2)<0);++f)e=t.charCodeAt(f),n=e>>8,o=e%256,i.push(o),i.push(n);return i}(r,t.length-e),t,e,n)}function _(t,r,e){return 0===r&&e===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(r,e))}function T(t,r,e){e=Math.min(t.length,e);for(var n=[],o=r;o<e;){var i,f,u,s,a=t[o],h=null,c=a>239?4:a>223?3:a>191?2:1;if(o+c<=e)switch(c){case 1:a<128&&(h=a);break;case 2:128==(192&(i=t[o+1]))&&(s=(31&a)<<6|63&i)>127&&(h=s);break;case 3:i=t[o+1],f=t[o+2],128==(192&i)&&128==(192&f)&&(s=(15&a)<<12|(63&i)<<6|63&f)>2047&&(s<55296||s>57343)&&(h=s);break;case 4:i=t[o+1],f=t[o+2],u=t[o+3],128==(192&i)&&128==(192&f)&&128==(192&u)&&(s=(15&a)<<18|(63&i)<<12|(63&f)<<6|63&u)>65535&&s<1114112&&(h=s)}null===h?(h=65533,c=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),o+=c}return function(t){var r=t.length;if(r<=4096)return String.fromCharCode.apply(String,t);var e="",n=0;for(;n<r;)e+=String.fromCharCode.apply(String,t.slice(n,n+=4096));return e}(n)}r.Buffer=s,r.SlowBuffer=function(t){+t!=t&&(t=0);return s.alloc(+t)},r.INSPECT_MAX_BYTES=50,s.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(r){return!1}}(),r.kMaxLength=f(),s.poolSize=8192,s._augment=function(t){return t.__proto__=s.prototype,t},s.from=function(t,r,e){return a(null,t,r,e)},s.TYPED_ARRAY_SUPPORT&&(s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0})),s.alloc=function(t,r,e){return function(t,r,e,n){return h(r),r<=0?u(t,r):void 0!==e?"string"==typeof n?u(t,r).fill(e,n):u(t,r).fill(e):u(t,r)}(null,t,r,e)},s.allocUnsafe=function(t){return c(null,t)},s.allocUnsafeSlow=function(t){return c(null,t)},s.isBuffer=function(t){return!(null==t||!t._isBuffer)},s.compare=function(t,r){if(!s.isBuffer(t)||!s.isBuffer(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var e=t.length,n=r.length,o=0,i=Math.min(e,n);o<i;++o)if(t[o]!==r[o]){e=t[o],n=r[o];break}return e<n?-1:n<e?1:0},s.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(t,r){if(!i(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return s.alloc(0);var e;if(void 0===r)for(r=0,e=0;e<t.length;++e)r+=t[e].length;var n=s.allocUnsafe(r),o=0;for(e=0;e<t.length;++e){var f=t[e];if(!s.isBuffer(f))throw new TypeError('"list" argument must be an Array of Buffers');f.copy(n,o),o+=f.length}return n},s.byteLength=g,s.prototype._isBuffer=!0,s.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var r=0;r<t;r+=2)d(this,r,r+1);return this},s.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var r=0;r<t;r+=4)d(this,r,r+3),d(this,r+1,r+2);return this},s.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var r=0;r<t;r+=8)d(this,r,r+7),d(this,r+1,r+6),d(this,r+2,r+5),d(this,r+3,r+4);return this},s.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?T(this,0,t):y.apply(this,arguments)},s.prototype.equals=function(t){if(!s.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===s.compare(this,t)},s.prototype.inspect=function(){var t="",e=r.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,e).match(/.{2}/g).join(" "),this.length>e&&(t+=" ... ")),"<Buffer "+t+">"},s.prototype.compare=function(t,r,e,n,o){if(!s.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===r&&(r=0),void 0===e&&(e=t?t.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),r<0||e>t.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&r>=e)return 0;if(n>=o)return-1;if(r>=e)return 1;if(this===t)return 0;for(var i=(o>>>=0)-(n>>>=0),f=(e>>>=0)-(r>>>=0),u=Math.min(i,f),a=this.slice(n,o),h=t.slice(r,e),c=0;c<u;++c)if(a[c]!==h[c]){i=a[c],f=h[c];break}return i<f?-1:f<i?1:0},s.prototype.includes=function(t,r,e){return-1!==this.indexOf(t,r,e)},s.prototype.indexOf=function(t,r,e){return w(this,t,r,e,!0)},s.prototype.lastIndexOf=function(t,r,e){return w(this,t,r,e,!1)},s.prototype.write=function(t,r,e,n){if(void 0===r)n="utf8",e=this.length,r=0;else if(void 0===e&&"string"==typeof r)n=r,e=this.length,r=0;else{if(!isFinite(r))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");r|=0,isFinite(e)?(e|=0,void 0===n&&(n="utf8")):(n=e,e=void 0)}var o=this.length-r;if((void 0===e||e>o)&&(e=o),t.length>0&&(e<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return v(this,t,r,e);case"utf8":case"utf-8":return m(this,t,r,e);case"ascii":return E(this,t,r,e);case"latin1":case"binary":return A(this,t,r,e);case"base64":return R(this,t,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,t,r,e);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function P(t,r,e){var n="";e=Math.min(t.length,e);for(var o=r;o<e;++o)n+=String.fromCharCode(127&t[o]);return n}function U(t,r,e){var n="";e=Math.min(t.length,e);for(var o=r;o<e;++o)n+=String.fromCharCode(t[o]);return n}function S(t,r,e){var n=t.length;(!r||r<0)&&(r=0),(!e||e<0||e>n)&&(e=n);for(var o="",i=r;i<e;++i)o+=k(t[i]);return o}function x(t,r,e){for(var n=t.slice(r,e),o="",i=0;i<n.length;i+=2)o+=String.fromCharCode(n[i]+256*n[i+1]);return o}function Y(t,r,e){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+r>e)throw new RangeError("Trying to access beyond buffer length")}function M(t,r,e,n,o,i){if(!s.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>o||r<i)throw new RangeError('"value" argument is out of bounds');if(e+n>t.length)throw new RangeError("Index out of range")}function O(t,r,e,n){r<0&&(r=65535+r+1);for(var o=0,i=Math.min(t.length-e,2);o<i;++o)t[e+o]=(r&255<<8*(n?o:1-o))>>>8*(n?o:1-o)}function I(t,r,e,n){r<0&&(r=4294967295+r+1);for(var o=0,i=Math.min(t.length-e,4);o<i;++o)t[e+o]=r>>>8*(n?o:3-o)&255}function C(t,r,e,n,o,i){if(e+n>t.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function L(t,r,e,n,i){return i||C(t,0,e,4),o.write(t,r,e,n,23,4),e+4}function D(t,r,e,n,i){return i||C(t,0,e,8),o.write(t,r,e,n,52,8),e+8}s.prototype.slice=function(t,r){var e,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(r=void 0===r?n:~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),r<t&&(r=t),s.TYPED_ARRAY_SUPPORT)(e=this.subarray(t,r)).__proto__=s.prototype;else{var o=r-t;e=new s(o,void 0);for(var i=0;i<o;++i)e[i]=this[i+t]}return e},s.prototype.readUIntLE=function(t,r,e){t|=0,r|=0,e||Y(t,r,this.length);for(var n=this[t],o=1,i=0;++i<r&&(o*=256);)n+=this[t+i]*o;return n},s.prototype.readUIntBE=function(t,r,e){t|=0,r|=0,e||Y(t,r,this.length);for(var n=this[t+--r],o=1;r>0&&(o*=256);)n+=this[t+--r]*o;return n},s.prototype.readUInt8=function(t,r){return r||Y(t,1,this.length),this[t]},s.prototype.readUInt16LE=function(t,r){return r||Y(t,2,this.length),this[t]|this[t+1]<<8},s.prototype.readUInt16BE=function(t,r){return r||Y(t,2,this.length),this[t]<<8|this[t+1]},s.prototype.readUInt32LE=function(t,r){return r||Y(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},s.prototype.readUInt32BE=function(t,r){return r||Y(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},s.prototype.readIntLE=function(t,r,e){t|=0,r|=0,e||Y(t,r,this.length);for(var n=this[t],o=1,i=0;++i<r&&(o*=256);)n+=this[t+i]*o;return n>=(o*=128)&&(n-=Math.pow(2,8*r)),n},s.prototype.readIntBE=function(t,r,e){t|=0,r|=0,e||Y(t,r,this.length);for(var n=r,o=1,i=this[t+--n];n>0&&(o*=256);)i+=this[t+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*r)),i},s.prototype.readInt8=function(t,r){return r||Y(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},s.prototype.readInt16LE=function(t,r){r||Y(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},s.prototype.readInt16BE=function(t,r){r||Y(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},s.prototype.readInt32LE=function(t,r){return r||Y(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},s.prototype.readInt32BE=function(t,r){return r||Y(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},s.prototype.readFloatLE=function(t,r){return r||Y(t,4,this.length),o.read(this,t,!0,23,4)},s.prototype.readFloatBE=function(t,r){return r||Y(t,4,this.length),o.read(this,t,!1,23,4)},s.prototype.readDoubleLE=function(t,r){return r||Y(t,8,this.length),o.read(this,t,!0,52,8)},s.prototype.readDoubleBE=function(t,r){return r||Y(t,8,this.length),o.read(this,t,!1,52,8)},s.prototype.writeUIntLE=function(t,r,e,n){(t=+t,r|=0,e|=0,n)||M(this,t,r,e,Math.pow(2,8*e)-1,0);var o=1,i=0;for(this[r]=255&t;++i<e&&(o*=256);)this[r+i]=t/o&255;return r+e},s.prototype.writeUIntBE=function(t,r,e,n){(t=+t,r|=0,e|=0,n)||M(this,t,r,e,Math.pow(2,8*e)-1,0);var o=e-1,i=1;for(this[r+o]=255&t;--o>=0&&(i*=256);)this[r+o]=t/i&255;return r+e},s.prototype.writeUInt8=function(t,r,e){return t=+t,r|=0,e||M(this,t,r,1,255,0),s.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=255&t,r+1},s.prototype.writeUInt16LE=function(t,r,e){return t=+t,r|=0,e||M(this,t,r,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):O(this,t,r,!0),r+2},s.prototype.writeUInt16BE=function(t,r,e){return t=+t,r|=0,e||M(this,t,r,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):O(this,t,r,!1),r+2},s.prototype.writeUInt32LE=function(t,r,e){return t=+t,r|=0,e||M(this,t,r,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=255&t):I(this,t,r,!0),r+4},s.prototype.writeUInt32BE=function(t,r,e){return t=+t,r|=0,e||M(this,t,r,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):I(this,t,r,!1),r+4},s.prototype.writeIntLE=function(t,r,e,n){if(t=+t,r|=0,!n){var o=Math.pow(2,8*e-1);M(this,t,r,e,o-1,-o)}var i=0,f=1,u=0;for(this[r]=255&t;++i<e&&(f*=256);)t<0&&0===u&&0!==this[r+i-1]&&(u=1),this[r+i]=(t/f>>0)-u&255;return r+e},s.prototype.writeIntBE=function(t,r,e,n){if(t=+t,r|=0,!n){var o=Math.pow(2,8*e-1);M(this,t,r,e,o-1,-o)}var i=e-1,f=1,u=0;for(this[r+i]=255&t;--i>=0&&(f*=256);)t<0&&0===u&&0!==this[r+i+1]&&(u=1),this[r+i]=(t/f>>0)-u&255;return r+e},s.prototype.writeInt8=function(t,r,e){return t=+t,r|=0,e||M(this,t,r,1,127,-128),s.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=255&t,r+1},s.prototype.writeInt16LE=function(t,r,e){return t=+t,r|=0,e||M(this,t,r,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):O(this,t,r,!0),r+2},s.prototype.writeInt16BE=function(t,r,e){return t=+t,r|=0,e||M(this,t,r,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):O(this,t,r,!1),r+2},s.prototype.writeInt32LE=function(t,r,e){return t=+t,r|=0,e||M(this,t,r,4,2147483647,-2147483648),s.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):I(this,t,r,!0),r+4},s.prototype.writeInt32BE=function(t,r,e){return t=+t,r|=0,e||M(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),s.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):I(this,t,r,!1),r+4},s.prototype.writeFloatLE=function(t,r,e){return L(this,t,r,!0,e)},s.prototype.writeFloatBE=function(t,r,e){return L(this,t,r,!1,e)},s.prototype.writeDoubleLE=function(t,r,e){return D(this,t,r,!0,e)},s.prototype.writeDoubleBE=function(t,r,e){return D(this,t,r,!1,e)},s.prototype.copy=function(t,r,e,n){if(e||(e=0),n||0===n||(n=this.length),r>=t.length&&(r=t.length),r||(r=0),n>0&&n<e&&(n=e),n===e)return 0;if(0===t.length||0===this.length)return 0;if(r<0)throw new RangeError("targetStart out of bounds");if(e<0||e>=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-r<n-e&&(n=t.length-r+e);var o,i=n-e;if(this===t&&e<r&&r<n)for(o=i-1;o>=0;--o)t[o+r]=this[o+e];else if(i<1e3||!s.TYPED_ARRAY_SUPPORT)for(o=0;o<i;++o)t[o+r]=this[o+e];else Uint8Array.prototype.set.call(t,this.subarray(e,e+i),r);return i},s.prototype.fill=function(t,r,e,n){if("string"==typeof t){if("string"==typeof r?(n=r,r=0,e=this.length):"string"==typeof e&&(n=e,e=this.length),1===t.length){var o=t.charCodeAt(0);o<256&&(t=o)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!s.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof t&&(t&=255);if(r<0||this.length<r||this.length<e)throw new RangeError("Out of range index");if(e<=r)return this;var i;if(r>>>=0,e=void 0===e?this.length:e>>>0,t||(t=0),"number"==typeof t)for(i=r;i<e;++i)this[i]=t;else{var f=s.isBuffer(t)?t:N(new s(t,n).toString()),u=f.length;for(i=0;i<e-r;++i)this[i+r]=f[i%u]}return this};var j=/[^+\/0-9A-Za-z-_]/g;function k(t){return t<16?"0"+t.toString(16):t.toString(16)}function N(t,r){var e;r=r||1/0;for(var n=t.length,o=null,i=[],f=0;f<n;++f){if((e=t.charCodeAt(f))>55295&&e<57344){if(!o){if(e>56319){(r-=3)>-1&&i.push(239,191,189);continue}if(f+1===n){(r-=3)>-1&&i.push(239,191,189);continue}o=e;continue}if(e<56320){(r-=3)>-1&&i.push(239,191,189),o=e;continue}e=65536+(o-55296<<10|e-56320)}else o&&(r-=3)>-1&&i.push(239,191,189);if(o=null,e<128){if((r-=1)<0)break;i.push(e)}else if(e<2048){if((r-=2)<0)break;i.push(e>>6|192,63&e|128)}else if(e<65536){if((r-=3)<0)break;i.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((r-=4)<0)break;i.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return i}function z(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(j,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function F(t,r,e,n){for(var o=0;o<n&&!(o+e>=r.length||o>=t.length);++o)r[o+e]=t[o];return o}}).call(this,e(3))},function(t,r,e){t.exports=e(2)},function(t,r,e){"use strict";const{Buffer:n}=e(0),o=e(7);function i(t){if(o.names[t])return o.names[t];if(o.codes[t])return o.codes[t];throw new Error("Unsupported encoding: ".concat(t))}(r=t.exports=function(t,r){if(!r)throw new Error("requires an encoded buffer");const e=i(t);return function(t,r){i(t).decode(r.toString())}(e.name,r),n.concat([e.codeBuf,r])}).encode=function(t,r){const e=i(t);return n.concat([e.codeBuf,n.from(e.encode(r))])},r.decode=function(t){n.isBuffer(t)&&(t=t.toString());const r=t[0];["f","F","v","V","t","T","b","B","c","C","h","k","K"].includes(r)&&(t=t.toLowerCase());const e=i(t[0]);return n.from(e.decode(t.substring(1)))},r.isEncoded=function(t){if(n.isBuffer(t)&&(t=t.toString()),"[object String]"!==Object.prototype.toString.call(t))return!1;try{return i(t[0]).name}catch(r){return!1}},r.encoding=i,r.encodingFromData=function(t){return n.isBuffer(t)&&(t=t.toString()),i(t[0])},r.names=Object.freeze(o.names),r.codes=Object.freeze(o.codes)},function(t,r,e){"use strict";var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(o){"object"==typeof window&&(n=window)}t.exports=n},function(t,r,e){"use strict";r.byteLength=function(t){var r=a(t),e=r[0],n=r[1];return 3*(e+n)/4-n},r.toByteArray=function(t){var r,e,n=a(t),f=n[0],u=n[1],s=new i(function(t,r,e){return 3*(r+e)/4-e}(0,f,u)),h=0,c=u>0?f-4:f;for(e=0;e<c;e+=4)r=o[t.charCodeAt(e)]<<18|o[t.charCodeAt(e+1)]<<12|o[t.charCodeAt(e+2)]<<6|o[t.charCodeAt(e+3)],s[h++]=r>>16&255,s[h++]=r>>8&255,s[h++]=255&r;2===u&&(r=o[t.charCodeAt(e)]<<2|o[t.charCodeAt(e+1)]>>4,s[h++]=255&r);1===u&&(r=o[t.charCodeAt(e)]<<10|o[t.charCodeAt(e+1)]<<4|o[t.charCodeAt(e+2)]>>2,s[h++]=r>>8&255,s[h++]=255&r);return s},r.fromByteArray=function(t){for(var r,e=t.length,o=e%3,i=[],f=0,u=e-o;f<u;f+=16383)i.push(h(t,f,f+16383>u?u:f+16383));1===o?(r=t[e-1],i.push(n[r>>2]+n[r<<4&63]+"==")):2===o&&(r=(t[e-2]<<8)+t[e-1],i.push(n[r>>10]+n[r>>4&63]+n[r<<2&63]+"="));return i.join("")};for(var n=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=0,s=f.length;u<s;++u)n[u]=f[u],o[f.charCodeAt(u)]=u;function a(t){var r=t.length;if(r%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var e=t.indexOf("=");return-1===e&&(e=r),[e,e===r?0:4-e%4]}function h(t,r,e){for(var o,i,f=[],u=r;u<e;u+=3)o=(t[u]<<16&16711680)+(t[u+1]<<8&65280)+(255&t[u+2]),f.push(n[(i=o)>>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return f.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(t,r,e){"use strict";r.read=function(t,r,e,n,o){var i,f,u=8*o-n-1,s=(1<<u)-1,a=s>>1,h=-7,c=e?o-1:0,l=e?-1:1,p=t[r+c];for(c+=l,i=p&(1<<-h)-1,p>>=-h,h+=u;h>0;i=256*i+t[r+c],c+=l,h-=8);for(f=i&(1<<-h)-1,i>>=-h,h+=n;h>0;f=256*f+t[r+c],c+=l,h-=8);if(0===i)i=1-a;else{if(i===s)return f?NaN:1/0*(p?-1:1);f+=Math.pow(2,n),i-=a}return(p?-1:1)*f*Math.pow(2,i-n)},r.write=function(t,r,e,n,o,i){var f,u,s,a=8*i-o-1,h=(1<<a)-1,c=h>>1,l=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:i-1,g=n?1:-1,y=r<0||0===r&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(u=isNaN(r)?1:0,f=h):(f=Math.floor(Math.log(r)/Math.LN2),r*(s=Math.pow(2,-f))<1&&(f--,s*=2),(r+=f+c>=1?l/s:l*Math.pow(2,1-c))*s>=2&&(f++,s/=2),f+c>=h?(u=0,f=h):f+c>=1?(u=(r*s-1)*Math.pow(2,o),f+=c):(u=r*Math.pow(2,c-1)*Math.pow(2,o),f=0));o>=8;t[e+p]=255&u,p+=g,u/=256,o-=8);for(f=f<<o|u,a+=o;a>0;t[e+p]=255&f,p+=g,f/=256,a-=8);t[e+p-g]|=128*y}},function(t,r,e){"use strict";var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,r,e){"use strict";(function(r){const n=e(8),o=e(9),i=e(11),f=[["identity","\0",()=>({encode:t=>r.from(t).toString(),decode:t=>r.from(t)}),""],["base2","0",i(1),"01"],["base8","7",i(3),"01234567"],["base10","9",o,"0123456789"],["base16","f",i(4),"0123456789abcdef"],["base16upper","F",i(4),"0123456789ABCDEF"],["base32hex","v",i(5),"0123456789abcdefghijklmnopqrstuv"],["base32hexupper","V",i(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV"],["base32hexpad","t",i(5),"0123456789abcdefghijklmnopqrstuv="],["base32hexpadupper","T",i(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV="],["base32","b",i(5),"abcdefghijklmnopqrstuvwxyz234567"],["base32upper","B",i(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"],["base32pad","c",i(5),"abcdefghijklmnopqrstuvwxyz234567="],["base32padupper","C",i(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567="],["base32z","h",i(5),"ybndrfg8ejkmcpqxot1uwisza345h769"],["base36","k",o,"0123456789abcdefghijklmnopqrstuvwxyz"],["base36upper","K",o,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"],["base58btc","z",o,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base58flickr","Z",o,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base64","m",i(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",i(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",i(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",i(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],u=f.reduce((t,r)=>(t[r[0]]=new n(r[0],r[1],r[2],r[3]),t),{}),s=f.reduce((t,r)=>(t[r[1]]=u[r[0]],t),{});t.exports={names:u,codes:s}}).call(this,e(0).Buffer)},function(t,r,e){"use strict";(function(r){t.exports=class{constructor(t,e,n,o){this.name=t,this.code=e,this.codeBuf=r.from(this.code),this.alphabet=o,this.engine=n(o)}encode(t){return this.engine.encode(t)}decode(t){for(const r of t)if(this.alphabet&&this.alphabet.indexOf(r)<0)throw new Error("invalid character '".concat(r,"' in '").concat(t,"'"));return this.engine.decode(t)}}}).call(this,e(0).Buffer)},function(t,r,e){"use strict";var n=e(10).Buffer;t.exports=function(t){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),e=0;e<r.length;e++)r[e]=255;for(var o=0;o<t.length;o++){var i=t.charAt(o),f=i.charCodeAt(0);if(255!==r[f])throw new TypeError(i+" is ambiguous");r[f]=o}var u=t.length,s=t.charAt(0),a=Math.log(u)/Math.log(256),h=Math.log(256)/Math.log(u);function c(t){if("string"!=typeof t)throw new TypeError("Expected String");if(0===t.length)return n.alloc(0);var e=0;if(" "!==t[e]){for(var o=0,i=0;t[e]===s;)o++,e++;for(var f=(t.length-e)*a+1>>>0,h=new Uint8Array(f);t[e];){var c=r[t.charCodeAt(e)];if(255===c)return;for(var l=0,p=f-1;(0!==c||l<i)&&-1!==p;p--,l++)c+=u*h[p]>>>0,h[p]=c%256>>>0,c=c/256>>>0;if(0!==c)throw new Error("Non-zero carry");i=l,e++}if(" "!==t[e]){for(var g=f-i;g!==f&&0===h[g];)g++;var y=n.allocUnsafe(o+(f-g));y.fill(0,0,o);for(var d=o;g!==f;)y[d++]=h[g++];return y}}}return{encode:function(r){if((Array.isArray(r)||r instanceof Uint8Array)&&(r=n.from(r)),!n.isBuffer(r))throw new TypeError("Expected Buffer");if(0===r.length)return"";for(var e=0,o=0,i=0,f=r.length;i!==f&&0===r[i];)i++,e++;for(var a=(f-i)*h+1>>>0,c=new Uint8Array(a);i!==f;){for(var l=r[i],p=0,g=a-1;(0!==l||p<o)&&-1!==g;g--,p++)l+=256*c[g]>>>0,c[g]=l%u>>>0,l=l/u>>>0;if(0!==l)throw new Error("Non-zero carry");o=p,i++}for(var y=a-o;y!==a&&0===c[y];)y++;for(var d=s.repeat(e);y<a;++y)d+=t.charAt(c[y]);return d},decodeUnsafe:c,decode:function(t){var r=c(t);if(r)return r;throw new Error("Non-base"+u+" character")}}}},function(t,r,e){"use strict";var n=e(0),o=n.Buffer;function i(t,r){for(var e in t)r[e]=t[e]}function f(t,r,e){return o(t,r,e)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?t.exports=n:(i(n,r),r.Buffer=f),f.prototype=Object.create(o.prototype),i(o,f),f.from=function(t,r,e){if("number"==typeof t)throw new TypeError("Argument must not be a number");return o(t,r,e)},f.alloc=function(t,r,e){if("number"!=typeof t)throw new TypeError("Argument must be a number");var n=o(t);return void 0!==r?"string"==typeof e?n.fill(r,e):n.fill(r):n.fill(0),n},f.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return o(t)},f.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n.SlowBuffer(t)}},function(t,r,e){"use strict";t.exports=t=>r=>({encode:e=>((t,r,e)=>{const n="="===r[r.length-1],o=(1<<e)-1;let i="",f=0,u=0;for(let s=0;s<t.length;++s)for(u=u<<8|t[s],f+=8;f>e;)f-=e,i+=r[o&u>>f];if(f&&(i+=r[o&u<<e-f]),n)for(;i.length*e&7;)i+="=";return i})(e,r,t),decode:e=>((t,r,e)=>{const n={};for(let a=0;a<r.length;++a)n[r[a]]=a;let o=t.length;for(;"="===t[o-1];)--o;const i=new Uint8Array(o*e/8|0);let f=0,u=0,s=0;for(let a=0;a<o;++a){const r=n[t[a]];if(void 0===r)throw new SyntaxError("Invalid character "+t[a]);u=u<<e|r,f+=e,f>=8&&(f-=8,i[s++]=255&u>>f)}if(f>=e||255&u<<8-f)throw new SyntaxError("Unexpected end of data");return i})(e,r,t)})}])})); |
@@ -7,1 +7,3 @@ /*! | ||
*/ | ||
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */ |
{ | ||
"name": "multibase", | ||
"version": "0.7.0", | ||
"version": "1.0.0", | ||
"description": "JavaScript implementation of the multibase specification", | ||
"leadMaintainer": "Oli Evans <oli@tableflip.io>", | ||
"keywords": [ | ||
"IPFS", | ||
"multiformats", | ||
"multibase", | ||
"encode", | ||
"decode", | ||
"formats" | ||
], | ||
"homepage": "https://github.com/multiformats/js-multibase#readme", | ||
"bugs": "https://github.com/multiformats/js-multibase/issues", | ||
"license": "MIT", | ||
"leadMaintainer": "Hugo Dias <hugomrdias@gmail.com>", | ||
"files": [ | ||
"src", | ||
"dist" | ||
], | ||
"main": "src/index.js", | ||
"repository": "github:multiformats/js-multibase", | ||
"scripts": { | ||
@@ -20,20 +36,9 @@ "lint": "aegir lint", | ||
}, | ||
"files": [ | ||
"src", | ||
"dist" | ||
], | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/multiformats/js-multibase.git" | ||
"dependencies": { | ||
"base-x": "^3.0.8", | ||
"buffer": "^5.5.0" | ||
}, | ||
"keywords": [ | ||
"IPFS", | ||
"multiformats", | ||
"multibase", | ||
"encode", | ||
"decode", | ||
"formats" | ||
], | ||
"devDependencies": { | ||
"aegir": "^21.3.0", | ||
"aegir": "^22.0.0", | ||
"benchmark": "^2.1.4", | ||
"chai": "^4.1.2", | ||
@@ -43,24 +48,23 @@ "dirty-chai": "^2.0.1", | ||
}, | ||
"dependencies": { | ||
"base-x": "^3.0.8", | ||
"buffer": "^5.5.0" | ||
"engines": { | ||
"node": ">=10.0.0", | ||
"npm": ">=6.0.0" | ||
}, | ||
"license": "MIT", | ||
"bugs": { | ||
"url": "https://github.com/multiformats/js-multibase/issues" | ||
"eslintConfig": { | ||
"extends": "./node_modules/aegir/src/config/eslintrc.js" | ||
}, | ||
"homepage": "https://github.com/multiformats/js-multibase#readme", | ||
"contributors": [ | ||
"David Dias <daviddias.p@gmail.com>", | ||
"Hugo Dias <hugomrdias@gmail.com>", | ||
"Oli Evans <oli@tableflip.io>", | ||
"Hugo Dias <hugomrdias@gmail.com>", | ||
"Friedel Ziegelmayer <dignifiedquire@gmail.com>", | ||
"Alan Shaw <alan.shaw@protocol.ai>", | ||
"victorbjelkholm <victorbjelkholm@gmail.com>", | ||
"ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ <victorbjelkholm@gmail.com>", | ||
"Carson Farmer <carson.farmer@gmail.com>", | ||
"Bora M. Alper <boramalper@gmail.com>", | ||
"Richard Littauer <richard.littauer@gmail.com>", | ||
"achingbrain <alex@achingbrain.net>", | ||
"theobat <theophile.batoz@gmail.com>", | ||
"Bora M. Alper <boramalper@gmail.com>", | ||
"Henrique Dias <hacdias@gmail.com>", | ||
"Richard Littauer <richard.littauer@gmail.com>" | ||
"Henrique Dias <hacdias@gmail.com>" | ||
] | ||
} |
116
README.md
@@ -15,3 +15,3 @@ js-multibase | ||
[Oli Evans](https://github.com/olizilla) | ||
[Hugo Dias](https://github.com/hugomrdias) | ||
@@ -21,6 +21,4 @@ ## Table of Contents | ||
- [Install](#install) | ||
- [In Node.js through npm](#in-nodejs-through-npm) | ||
- [Browser: Browserify, Webpack, other bundlers](#browser-browserify-webpack-other-bundlers) | ||
- [NPM](#npm) | ||
- [In the Browser through `<script>` tag](#in-the-browser-through-script-tag) | ||
- [Gotchas](#gotchas) | ||
- [Usage](#usage) | ||
@@ -42,17 +40,14 @@ - [Example](#example) | ||
### In Node.js through npm | ||
### NPM | ||
```bash | ||
> npm install --save multibase | ||
```sh | ||
$ npm install --save multibase | ||
``` | ||
### Browser: Browserify, Webpack, other bundlers | ||
The type definitions for this package are available on http://definitelytyped.org/. To install just use: | ||
The code published to npm that gets loaded on require is in fact an ES5 transpiled version with the right shims added. This means that you can require it and use with your favourite bundler without having to adjust asset management process. | ||
```js | ||
const multibase = require('multibase') | ||
```sh | ||
$ npm install -D @types/multibase | ||
``` | ||
### In the Browser through `<script>` tag | ||
@@ -64,4 +59,2 @@ | ||
<script src="https://unpkg.com/multibase/dist/index.min.js"></script> | ||
<!-- OR --> | ||
<script src="https://unpkg.com/multibase/dist/index.js"></script> | ||
``` | ||
@@ -87,3 +80,3 @@ | ||
### `multibase` - Prefixes an encoded buffer with its multibase code | ||
#### `multibase` - Prefixes an encoded buffer with its multibase code | ||
@@ -94,3 +87,3 @@ ``` | ||
### `multibase.encode` - Encodes a buffer into one of the supported encodings, prefixing it with the multibase code | ||
#### `multibase.encode` - Encodes a buffer into one of the supported encodings, prefixing it with the multibase code | ||
@@ -101,3 +94,3 @@ ```JavaScript | ||
### `multibase.decode` - Decodes a buffer or string | ||
#### `multibase.decode` - Decodes a buffer or string | ||
@@ -108,3 +101,3 @@ ```JavaScript | ||
### `multibase.isEncoded` - Checks if buffer or string is encoded | ||
#### `multibase.isEncoded` - Checks if buffer or string is encoded | ||
@@ -116,83 +109,26 @@ ```JavaScript | ||
### `multibase.names` | ||
#### `multibase.encoding` - Get the encoding by name or code | ||
A frozen `Array` of supported base encoding names. | ||
```JavaScript | ||
const value = multibase.encoding(nameOrCode) | ||
// value is an instance of the corresponding `Base` | ||
``` | ||
### `multibase.codes` | ||
#### `multibase.encodingFromData` - Get the encoding from data either a `string` or `Buffer` | ||
A frozen `Array` of supported base encoding codes. | ||
### Supported Encodings, see [`src/constants.js`](/src/constants.js) | ||
## Architecture and Encoding/Decoding | ||
Multibase package defines all the supported bases and the location of their implementation in the constants.js file. A base is a class with a name, a code, an implementation and an alphabet. | ||
```js | ||
class Base { | ||
constructor (name, code, implementation, alphabet) { | ||
//... | ||
} | ||
// ... | ||
} | ||
```JavaScript | ||
const value = multibase.encodingFromData(data) | ||
// value is an instance of the corresponding `Base` | ||
``` | ||
The ```implementation``` is an object where the encoding/decoding functions are implemented. It must take one argument, (the alphabet) following the [base-x module](https://github.com/cryptocoinjs/base-x) architecture. | ||
The ```alphabet``` is the **ordered** set of defined symbols for a given base. | ||
#### `multibase.names` | ||
The idea behind this is that several bases may have implementations from different locations/modules so it's useful to have an object (and a summary) of all of them in one location (hence the constants.js). | ||
A frozen `Object` of supported base encoding names mapped to the corresponding `Base` instance. | ||
All the supported bases are currently using the npm [base-x](https://github.com/cryptocoinjs/base-x) module as their implementation. It is using bitwise maipulation to go from one base to another, so this module does not support padding at the moment. | ||
#### `multibase.codes` | ||
## Adding additional bases | ||
A frozen `Object` of supported base encoding codes mapped to the corresponding `Base` instance. | ||
If the base you are looking for is not supported yet in js-multibase and you know a good encoding/decoding algorithm, you can add support for this base easily by editing the constants.js file | ||
(**you'll need to create an issue about that beforehand since a code and a canonical name have to be defined**): | ||
### Supported Encodings, see [`src/constants.js`](/src/constants.js) | ||
```js | ||
const baseX = require('base-x') | ||
//const newPackage = require('your-package-name') | ||
const constants = [ | ||
['base2', '0', baseX, '01'], | ||
['base8', '7', baseX, '01234567'], | ||
// ... [ 'your-base-name', 'code-to-be-defined', newPackage, 'alphabet'] | ||
] | ||
``` | ||
The required package defines the implementation of the encoding/decoding process. **It must comply by these rules** : | ||
- `encode` and `decode` functions with to-be-encoded buffer as the only expected argument | ||
- the require call use the `alphabet` given as an argument for the encoding/decoding process | ||
*If no package is specified , it means the base is not implemented yet* | ||
Adding a new base requires the tests to be updated. Test files to be updated are : | ||
- constants.spec.js | ||
```js | ||
describe('constants', () => { | ||
it('constants indexed by name', () => { | ||
const names = constants.names | ||
expect(Object.keys(names).length).to.equal(constants-count) // currently 12 | ||
}) | ||
it('constants indexed by code', () => { | ||
const codes = constants.codes | ||
expect(Object.keys(codes).length).to.equal(constants-count) | ||
}) | ||
}) | ||
``` | ||
- multibase.spec.js | ||
- if the base is implemented | ||
```js | ||
const supportedBases = [ | ||
['base2', 'yes mani !', '01111001011001010111001100100000011011010110000101101110011010010010000000100001'], | ||
['base8', 'yes mani !', '7171312714403326055632220041'], | ||
['base10', 'yes mani !', '9573277761329450583662625'], | ||
// ... ['your-base-name', 'what you want', 'expected output'] | ||
``` | ||
- if the base is not implemented yet | ||
```js | ||
const supportedBases = [ | ||
// ... ['your-base-name'] | ||
``` | ||
## Contribute | ||
@@ -199,0 +135,0 @@ |
@@ -7,21 +7,21 @@ 'use strict' | ||
this.code = code | ||
this.codeBuf = Buffer.from(this.code) | ||
this.alphabet = alphabet | ||
if (implementation && alphabet) { | ||
this.engine = implementation(alphabet) | ||
} | ||
this.engine = implementation(alphabet) | ||
} | ||
encode (stringOrBuffer) { | ||
return this.engine.encode(stringOrBuffer) | ||
encode (buf) { | ||
return this.engine.encode(buf) | ||
} | ||
decode (stringOrBuffer) { | ||
return this.engine.decode(stringOrBuffer) | ||
decode (string) { | ||
for (const char of string) { | ||
if (this.alphabet && this.alphabet.indexOf(char) < 0) { | ||
throw new Error(`invalid character '${char}' in '${string}'`) | ||
} | ||
} | ||
return this.engine.decode(string) | ||
} | ||
isImplemented () { | ||
return this.engine | ||
} | ||
} | ||
module.exports = Base |
@@ -5,24 +5,36 @@ 'use strict' | ||
const baseX = require('base-x') | ||
const base16 = require('./base16') | ||
const base32 = require('./base32') | ||
const base64 = require('./base64') | ||
const rfc4648 = require('./rfc4648') | ||
const identity = () => { | ||
return { | ||
encode: (data) => Buffer.from(data).toString(), | ||
decode: (string) => Buffer.from(string) | ||
} | ||
} | ||
// name, code, implementation, alphabet | ||
const constants = [ | ||
['base1', '1', '', '1'], | ||
['base2', '0', baseX, '01'], | ||
['base8', '7', baseX, '01234567'], | ||
['identity', '\x00', identity, ''], | ||
['base2', '0', rfc4648(1), '01'], | ||
['base8', '7', rfc4648(3), '01234567'], | ||
['base10', '9', baseX, '0123456789'], | ||
['base16', 'f', base16, '0123456789abcdef'], | ||
['base32', 'b', base32, 'abcdefghijklmnopqrstuvwxyz234567'], | ||
['base32pad', 'c', base32, 'abcdefghijklmnopqrstuvwxyz234567='], | ||
['base32hex', 'v', base32, '0123456789abcdefghijklmnopqrstuv'], | ||
['base32hexpad', 't', base32, '0123456789abcdefghijklmnopqrstuv='], | ||
['base32z', 'h', base32, 'ybndrfg8ejkmcpqxot1uwisza345h769'], | ||
['base16', 'f', rfc4648(4), '0123456789abcdef'], | ||
['base16upper', 'F', rfc4648(4), '0123456789ABCDEF'], | ||
['base32hex', 'v', rfc4648(5), '0123456789abcdefghijklmnopqrstuv'], | ||
['base32hexupper', 'V', rfc4648(5), '0123456789ABCDEFGHIJKLMNOPQRSTUV'], | ||
['base32hexpad', 't', rfc4648(5), '0123456789abcdefghijklmnopqrstuv='], | ||
['base32hexpadupper', 'T', rfc4648(5), '0123456789ABCDEFGHIJKLMNOPQRSTUV='], | ||
['base32', 'b', rfc4648(5), 'abcdefghijklmnopqrstuvwxyz234567'], | ||
['base32upper', 'B', rfc4648(5), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'], | ||
['base32pad', 'c', rfc4648(5), 'abcdefghijklmnopqrstuvwxyz234567='], | ||
['base32padupper', 'C', rfc4648(5), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567='], | ||
['base32z', 'h', rfc4648(5), 'ybndrfg8ejkmcpqxot1uwisza345h769'], | ||
['base36', 'k', baseX, '0123456789abcdefghijklmnopqrstuvwxyz'], | ||
['base36upper', 'K', baseX, '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'], | ||
['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'], | ||
['base58flickr', 'Z', baseX, '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'], | ||
['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'], | ||
['base64', 'm', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'], | ||
['base64pad', 'M', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='], | ||
['base64url', 'u', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'], | ||
['base64urlpad', 'U', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_='] | ||
['base64', 'm', rfc4648(6), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'], | ||
['base64pad', 'M', rfc4648(6), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='], | ||
['base64url', 'u', rfc4648(6), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'], | ||
['base64urlpad', 'U', rfc4648(6), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_='] | ||
] | ||
@@ -41,4 +53,4 @@ | ||
module.exports = { | ||
names: names, | ||
codes: codes | ||
names, | ||
codes | ||
} |
116
src/index.js
/** | ||
* Implementation of the [multibase](https://github.com/multiformats/multibase) specification. | ||
* | ||
* @module Multibase | ||
@@ -10,8 +11,3 @@ */ | ||
exports = module.exports = multibase | ||
exports.encode = encode | ||
exports.decode = decode | ||
exports.isEncoded = isEncoded | ||
exports.names = Object.freeze(Object.keys(constants.names)) | ||
exports.codes = Object.freeze(Object.keys(constants.codes)) | ||
/** @typedef {import("./base")} Base */ | ||
@@ -23,4 +19,4 @@ /** | ||
* @param {Buffer} buf - The data to be prefixed with multibase. | ||
* @memberof Multibase | ||
* @returns {Buffer} | ||
* @throws {Error} Will throw if the encoding is not supported | ||
*/ | ||
@@ -31,8 +27,5 @@ function multibase (nameOrCode, buf) { | ||
} | ||
const base = getBase(nameOrCode) | ||
const codeBuf = Buffer.from(base.code) | ||
const name = base.name | ||
validEncode(name, buf) | ||
return Buffer.concat([codeBuf, buf]) | ||
const enc = encoding(nameOrCode) | ||
validEncode(enc.name, buf) | ||
return Buffer.concat([enc.codeBuf, buf]) | ||
} | ||
@@ -46,9 +39,9 @@ | ||
* @returns {Buffer} | ||
* @memberof Multibase | ||
* @throws {Error} Will throw if the encoding is not supported | ||
* | ||
*/ | ||
function encode (nameOrCode, buf) { | ||
const base = getBase(nameOrCode) | ||
const name = base.name | ||
const enc = encoding(nameOrCode) | ||
return multibase(name, Buffer.from(base.encode(buf))) | ||
return Buffer.concat([enc.codeBuf, Buffer.from(enc.encode(buf))]) | ||
} | ||
@@ -60,21 +53,19 @@ | ||
* | ||
* @param {Buffer|string} bufOrString | ||
* @param {Buffer|string} data | ||
* @returns {Buffer} | ||
* @memberof Multibase | ||
* @throws {Error} Will throw if the encoding is not supported | ||
* | ||
*/ | ||
function decode (bufOrString) { | ||
if (Buffer.isBuffer(bufOrString)) { | ||
bufOrString = bufOrString.toString() | ||
function decode (data) { | ||
if (Buffer.isBuffer(data)) { | ||
data = data.toString() | ||
} | ||
const prefix = data[0] | ||
const code = bufOrString.substring(0, 1) | ||
bufOrString = bufOrString.substring(1, bufOrString.length) | ||
if (typeof bufOrString === 'string') { | ||
bufOrString = Buffer.from(bufOrString) | ||
// Make all encodings case-insensitive except the ones that include upper and lower chars in the alphabet | ||
if (['f', 'F', 'v', 'V', 't', 'T', 'b', 'B', 'c', 'C', 'h', 'k', 'K'].includes(prefix)) { | ||
data = data.toLowerCase() | ||
} | ||
const base = getBase(code) | ||
return Buffer.from(base.decode(bufOrString.toString())) | ||
const enc = encoding(data[0]) | ||
return Buffer.from(enc.decode(data.substring(1))) | ||
} | ||
@@ -85,20 +76,18 @@ | ||
* | ||
* @param {Buffer|string} bufOrString | ||
* @param {Buffer|string} data | ||
* @returns {boolean} | ||
* @memberof Multibase | ||
*/ | ||
function isEncoded (bufOrString) { | ||
if (Buffer.isBuffer(bufOrString)) { | ||
bufOrString = bufOrString.toString() | ||
function isEncoded (data) { | ||
if (Buffer.isBuffer(data)) { | ||
data = data.toString() | ||
} | ||
// Ensure bufOrString is a string | ||
if (Object.prototype.toString.call(bufOrString) !== '[object String]') { | ||
if (Object.prototype.toString.call(data) !== '[object String]') { | ||
return false | ||
} | ||
const code = bufOrString.substring(0, 1) | ||
try { | ||
const base = getBase(code) | ||
return base.name | ||
const enc = encoding(data[0]) | ||
return enc.name | ||
} catch (err) { | ||
@@ -110,28 +99,53 @@ return false | ||
/** | ||
* Validate encoded data | ||
* | ||
* @param {string} name | ||
* @param {Buffer} buf | ||
* @private | ||
* @returns {undefined} | ||
* @throws {Error} Will throw if the encoding is not supported | ||
*/ | ||
function validEncode (name, buf) { | ||
const base = getBase(name) | ||
base.decode(buf.toString()) | ||
const enc = encoding(name) | ||
enc.decode(buf.toString()) | ||
} | ||
function getBase (nameOrCode) { | ||
let base | ||
/** | ||
* Get the encoding by name or code | ||
* | ||
* @param {string} nameOrCode | ||
* @returns {Base} | ||
* @throws {Error} Will throw if the encoding is not supported | ||
*/ | ||
function encoding (nameOrCode) { | ||
if (constants.names[nameOrCode]) { | ||
base = constants.names[nameOrCode] | ||
return constants.names[nameOrCode] | ||
} else if (constants.codes[nameOrCode]) { | ||
base = constants.codes[nameOrCode] | ||
return constants.codes[nameOrCode] | ||
} else { | ||
throw new Error('Unsupported encoding') | ||
throw new Error(`Unsupported encoding: ${nameOrCode}`) | ||
} | ||
} | ||
if (!base.isImplemented()) { | ||
throw new Error('Base ' + nameOrCode + ' is not implemented yet') | ||
/** | ||
* Get encoding from data | ||
* | ||
* @param {string|Buffer} data | ||
* @returns {Base} | ||
* @throws {Error} Will throw if the encoding is not supported | ||
*/ | ||
function encodingFromData (data) { | ||
if (Buffer.isBuffer(data)) { | ||
data = data.toString() | ||
} | ||
return base | ||
return encoding(data[0]) | ||
} | ||
exports = module.exports = multibase | ||
exports.encode = encode | ||
exports.decode = decode | ||
exports.isEncoded = isEncoded | ||
exports.encoding = encoding | ||
exports.encodingFromData = encodingFromData | ||
exports.names = Object.freeze(constants.names) | ||
exports.codes = Object.freeze(constants.codes) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
0
49649
5
10
277
1
136
1
1