@inner-dj/server 0.2.8 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- var otplib=(()=>{var U=Object.defineProperty,L=Object.getOwnPropertyDescriptor,H=Object.getOwnPropertyNames,P=Object.prototype.hasOwnProperty,X={},e=(((e,t)=>{for(var r in t)U(e,r,{get:t[r],enumerable:!0})})(X,{AlgorithmError:()=>J,AlgorithmUnsupportedError:()=>K,HMACError:()=>s,HOTP:()=>Pe,NobleCryptoPlugin:()=>Mt,OTP:()=>Pt,ScureBase32Plugin:()=>nt,TOTP:()=>Fe,createGuardrails:()=>x,generate:()=>Dt,generateSecret:()=>function(e){var{crypto:e=Rt,base32:t=it,length:r=20}=e||{};return n({crypto:e,base32:t,length:r})},generateSync:()=>Ut,generateURI:()=>Nt,stringToBytes:()=>_e,verify:()=>Lt,verifySync:()=>Ht,wrapResult:()=>function(t){return(...e)=>{try{return Be(t(...e))}catch(e){return Ne(e)}}},wrapResultAsync:()=>function(t){return async(...e)=>{try{return Be(await t(...e))}catch(e){return Ne(e)}}}}),class extends Error{constructor(e,t){super(e,t),this.name="OTPError"}}),t=class extends e{constructor(e){super(e),this.name="SecretError"}},$=class extends t{constructor(e,t){super(`Secret must be at least ${e} bytes (${8*e} bits), got ${t} bytes`),this.name="SecretTooShortError"}},G=class extends t{constructor(e,t){super(`Secret must not exceed ${e} bytes, got ${t} bytes`),this.name="SecretTooLongError"}},t=class extends e{constructor(e){super(e),this.name="CounterError"}},j=class extends t{constructor(){super("Counter must be non-negative"),this.name="CounterNegativeError"}},F=class extends t{constructor(){super("Counter exceeds maximum safe integer value"),this.name="CounterOverflowError"}},Y=class extends t{constructor(){super("Counter must be a finite integer"),this.name="CounterNotIntegerError"}},t=class extends e{constructor(e){super(e),this.name="TimeError"}},W=class extends t{constructor(){super("Time must be non-negative"),this.name="TimeNegativeError"}},q=class extends t{constructor(){super("Time must be a finite number"),this.name="TimeNotFiniteError"}},t=class extends e{constructor(e){super(e),this.name="PeriodError"}},z=class extends t{constructor(e){super(`Period must be at least ${e} second(s)`),this.name="PeriodTooSmallError"}},V=class extends t{constructor(e){super(`Period must not exceed ${e} seconds`),this.name="PeriodTooLargeError"}},J=class extends e{constructor(e){super(e),this.name="AlgorithmError"}},K=class extends J{constructor(e,t={}){var{supported:t,plugin:r}=t;super("Unsupported hash algorithm."+(t?" Expected one of: "+(t.join(", ")||"(none)"):"")+(r?` [plugin: ${r}]`:"")),this.name="AlgorithmUnsupportedError"}},t=class extends e{constructor(e){super(e),this.name="TokenError"}},Q=class extends t{constructor(e,t){super(`Token must be ${e} digits, got `+t),this.name="TokenLengthError"}},Z=class extends t{constructor(){super("Token must contain only digits"),this.name="TokenFormatError"}},t=class extends e{constructor(e,t){super(e,t),this.name="CryptoError"}},s=class extends t{constructor(e,t){super("HMAC computation failed: "+e,t),this.name="HMACError"}},ee=class extends t{constructor(e,t){super("Random byte generation failed: "+e,t),this.name="RandomBytesError"}},te=class extends e{constructor(e){super(e),this.name="CounterToleranceError"}},re=class extends te{constructor(e,t){super(`Counter tolerance validation failed: total checks (${t}) exceeds MAX_WINDOW (${e})`),this.name="CounterToleranceTooLargeError"}},oe=class extends te{constructor(){super("Counter tolerance cannot contain negative values"),this.name="CounterToleranceNegativeError"}},se=class extends e{constructor(e){super(e),this.name="EpochToleranceError"}},ne=class extends se{constructor(){super("Epoch tolerance cannot contain negative values"),this.name="EpochToleranceNegativeError"}},ie=class extends se{constructor(e,t){super(`Epoch tolerance must not exceed ${e} seconds, got ${t}. Large tolerances can cause performance issues.`),this.name="EpochToleranceTooLargeError"}},t=class extends e{constructor(e){super(e),this.name="PluginError"}},ae=class extends t{constructor(){super("Crypto plugin is required."),this.name="CryptoPluginMissingError"}},ce=class extends t{constructor(){super("Base32 plugin is required."),this.name="Base32PluginMissingError"}},o=class extends e{constructor(e){super(e),this.name="ConfigurationError"}},he=class extends o{constructor(){super("Secret is required. Use generateSecret() to create one, or provide via { secret: 'YOUR_BASE32_SECRET' }"),this.name="SecretMissingError"}},ue=class extends o{constructor(){super("Label is required for URI generation. Example: { label: 'user@example.com' }"),this.name="LabelMissingError"}},le=class extends o{constructor(){super("Issuer is required for URI generation. Example: { issuer: 'MyApp' }"),this.name="IssuerMissingError"}},de=class extends o{constructor(){super("Class API requires secret to be a Base32 string, not Uint8Array. Use generateSecret() or provide a Base32-encoded string."),this.name="SecretTypeError"}},t=class extends e{constructor(e){super(e),this.name="AfterTimeStepError"}},pe=class extends t{constructor(){super("afterTimeStep must be >= 0"),this.name="AfterTimeStepNegativeError"}},fe=class extends t{constructor(){super("Invalid afterTimeStep: non-integer value"),this.name="AfterTimeStepNotIntegerError"}},ge=class extends t{constructor(){super("Invalid afterTimeStep: cannot be greater than current time step plus window"),this.name="AfterTimeStepRangeExceededError"}},be=new TextEncoder,ye=(new TextDecoder,20),me=30,e=Number.MAX_SAFE_INTEGER,Ee=Symbol("otplib.guardrails.override");function r(e,t,r){if("number"!=typeof t||!Number.isSafeInteger(t))throw new o(`Guardrail '${e}' must be a safe integer`);if(t<r)throw new o(`Guardrail '${e}' must be >= `+r)}var w=Object.freeze({MIN_SECRET_BYTES:16,MAX_SECRET_BYTES:64,MIN_PERIOD:1,MAX_PERIOD:3600,MAX_COUNTER:e,MAX_WINDOW:99,[Ee]:!1});function x(e){if(!e)return w;void 0!==e.MIN_SECRET_BYTES&&r("MIN_SECRET_BYTES",e.MIN_SECRET_BYTES,1),void 0!==e.MAX_SECRET_BYTES&&r("MAX_SECRET_BYTES",e.MAX_SECRET_BYTES,1),void 0!==e.MIN_PERIOD&&r("MIN_PERIOD",e.MIN_PERIOD,1),void 0!==e.MAX_PERIOD&&r("MAX_PERIOD",e.MAX_PERIOD,1),void 0!==e.MAX_COUNTER&&r("MAX_COUNTER",e.MAX_COUNTER,0),void 0!==e.MAX_WINDOW&&r("MAX_WINDOW",e.MAX_WINDOW,1);e={...w,...e};if(e.MAX_SECRET_BYTES<e.MIN_SECRET_BYTES)throw new o("Guardrail 'MIN_SECRET_BYTES' must be <= 'MAX_SECRET_BYTES'");if(e.MAX_PERIOD<e.MIN_PERIOD)throw new o("Guardrail 'MIN_PERIOD' must be <= 'MAX_PERIOD'");return Object.freeze({...e,[Ee]:!0})}var t={sha1:["sha1","sha-1","sha_1"],sha256:["sha256","sha-256","sha_256"],sha512:["sha512","sha-512","sha_512"]},we=Object.freeze(Object.keys(t)),xe=new Map(Object.entries(t).flatMap(([t,e])=>e.map(e=>[e,t])));function v(e,t={}){let{supported:r,plugin:o}=t,s=void 0===r?we:we.filter(e=>r.includes(e));if("string"==typeof e){t=xe.get(e.toLowerCase());if(void 0!==t&&s.includes(t))return t}throw new K(e,{supported:s,plugin:o})}function T(e,t=w){if(e.length<t.MIN_SECRET_BYTES)throw new $(t.MIN_SECRET_BYTES,e.length);if(t.MAX_SECRET_BYTES<e.length)throw new G(t.MAX_SECRET_BYTES,e.length)}function ve(e,t=w){if("number"==typeof e){if(!Number.isFinite(e)||!Number.isInteger(e))throw new Y;if(!Number.isSafeInteger(e))throw new F}e="bigint"==typeof e?e:BigInt(e);if(e<0n)throw new j;if(e>BigInt(t.MAX_COUNTER))throw new F}function Te(e){if(!Number.isFinite(e))throw new q;if(e<0)throw new W}function Ae(e,t=w){if(!Number.isInteger(e)||e<t.MIN_PERIOD)throw new z(t.MIN_PERIOD);if(e>t.MAX_PERIOD)throw new V(t.MAX_PERIOD)}function Se(e,t){if(e.length!==t)throw new Q(t,e.length);if(!/^\d+$/.test(e))throw new Z}function Ie(e){var t=15&e[e.length-1];return(127&e[t])<<24|e[1+t]<<16|e[2+t]<<8|e[3+t]}function Ce(e,t){return(e%10**t).toString().padStart(t,"0")}function _e(e){return"string"==typeof e?be.encode(e):e}function A(e,t){return"string"==typeof e?(i(t),t.decode(e)):e}function n(e){var{crypto:e,base32:t,length:r=ye}=e,e=(S(e),i(t),e.randomBytes(r));return t.encode(e,{padding:!1})}function ke(e=0){return Array.isArray(e)?e:[0,e]}function S(e){if(!e)throw new ae}function i(e){if(!e)throw new ce}function I(e){if(!e)throw new he}function Me(e){if(!e)throw new ue}function Re(e){if(!e)throw new le}function Oe(e){if("string"!=typeof e)throw new de}function Be(e){return{ok:!0,value:e}}function Ne(e){return{ok:!1,error:e}}var De=class{constructor(e){this.crypto=e}get plugin(){return this.crypto}normalize(e){return v(e,{supported:this.crypto.algorithms,plugin:this.crypto.name})}async hmac(t,e,r){t=this.normalize(t);try{return await this.crypto.hmac(t,e,r)}catch(e){t=e instanceof Error?e.message:String(e);throw new s(t,{cause:e})}}hmacSync(t,e,r){t=this.normalize(t);try{var o=this.crypto.hmac(t,e,r);if("function"!=typeof o.then)return o;Promise.resolve(o).catch(()=>{})}catch(e){t=e instanceof Error?e.message:String(e);throw new s(t,{cause:e})}throw new s("Crypto plugin does not support synchronous HMAC operations")}randomBytes(t){try{return this.crypto.randomBytes(t)}catch(e){t=e instanceof Error?e.message:String(e);throw new ee(t,{cause:e})}}};function Ue(e){var t,{type:e,label:r,params:o}=e,r=`otpauth://${e}/${r.split(":").map(e=>encodeURIComponent(e)).join(":")}?`,s=[];return o.secret&&s.push("secret="+encodeURIComponent(o.secret)),o.issuer&&s.push("issuer="+encodeURIComponent(o.issuer)),o.algorithm&&"sha1"!==(t=v(o.algorithm))&&s.push("algorithm="+t.toUpperCase()),o.digits&&6!==o.digits&&s.push("digits="+o.digits),"hotp"===e&&void 0!==o.counter&&s.push("counter="+o.counter),"totp"===e&&void 0!==o.period&&30!==o.period&&s.push("period="+o.period),r+=s.join("&")}function Le(e){var{issuer:e,label:t,secret:r,algorithm:o="sha1",digits:s=6,period:n=30}=e;return Ue({type:"totp",label:e?e+":"+t:t,params:{secret:r,issuer:e,algorithm:o,digits:s,period:n}})}function He(e){var{issuer:e,label:t,secret:r,counter:o=0,algorithm:s="sha1",digits:n=6}=e;return Ue({type:"hotp",label:e?e+":"+t:t,params:{secret:r,issuer:e,algorithm:s,digits:n,counter:o}})}var Pe=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=x(e.guardrails)}generateSecret(){var{crypto:e,base32:t}=this.options;return S(e),i(t),n({crypto:e,base32:t})}async generate(e,t){var r={...this.options,...t},{secret:o,crypto:s,base32:n,algorithm:i="sha1",digits:a=6}=r,t=(I(o),S(s),t?.guardrails??this.guardrails);return h({secret:o,counter:e,algorithm:i,digits:a,crypto:s,base32:n,guardrails:t,hooks:r.hooks})}async verify(e,t){var r={...this.options,...t},{secret:o,crypto:s,base32:n,algorithm:i="sha1",digits:a=6,counterTolerance:c=0}=r,t=(I(o),S(s),t?.guardrails??this.guardrails);return je({secret:o,token:e.token,counter:e.counter,algorithm:i,digits:a,counterTolerance:c,crypto:s,base32:n,guardrails:t,hooks:r.hooks})}toURI(e=0){var{issuer:t,label:r,secret:o,algorithm:s="sha1",digits:n=6}=this.options;return I(o),Me(r),Re(t),Oe(o),He({issuer:t,label:r,secret:o,algorithm:s,digits:n,counter:e})}};function Xe(e){var{secret:e,counter:t,algorithm:r="sha1",digits:o=6,crypto:s,base32:n,guardrails:i,hooks:a}=e,e=(I(e),S(s),A(e,n)),n=(T(e,i),ve(t,i),v(r,{supported:s.algorithms,plugin:s.name})),i=new De(s);return r="bigint"==typeof(r=t)?r:BigInt(r),s=new ArrayBuffer(8),new DataView(s).setBigUint64(0,r,!1),{ctx:i,algorithm:n,digits:o,secretBytes:e,counterBytes:new Uint8Array(s),hooks:a}}async function h(e){var{ctx:e,algorithm:t,digits:r,secretBytes:o,counterBytes:s,hooks:n}=Xe(e),e=await e.hmac(t,o,s),t=n?.truncateDigest?n.truncateDigest(e):Ie(e);return n?.encodeToken?n.encodeToken(t,r):Ce(t,r)}function $e(e){var{ctx:e,algorithm:t,digits:r,secretBytes:o,counterBytes:s,hooks:n}=Xe(e),e=e.hmacSync(t,o,s),t=n?.truncateDigest?n.truncateDigest(e):Ie(e);return n?.encodeToken?n.encodeToken(t,r):Ce(t,r)}function Ge(e){let{secret:t,counter:r,token:o,algorithm:s="sha1",digits:n=6,crypto:i,base32:a,counterTolerance:c=0,guardrails:h=x(),hooks:u}=e,l=(I(t),S(i),A(t,a)),d=(T(l,h),ve(r,h),v(s,{supported:i.algorithms,plugin:i.name}));u?.validateToken?u.validateToken(o,n):Se(o,n);var[e,p=w]=[c,h],[e,f]=ke(e);if(!Number.isSafeInteger(e)||!Number.isSafeInteger(f))throw new te("Counter tolerance values must be safe integers");if(e<0||f<0)throw new oe;if((e=e+f+1)>p.MAX_WINDOW)throw new re(p.MAX_WINDOW,e);var f="bigint"==typeof r?Number(r):r,[p,e]=ke(c);return{token:o,counterNum:f,past:p,future:e,totalChecks:p+e+1,crypto:i,getGenerateOptions:e=>({secret:l,counter:e,algorithm:d,digits:n,crypto:i,guardrails:h,hooks:u})}}async function je(e){var{token:t,counterNum:r,past:o,totalChecks:s,crypto:n,getGenerateOptions:i}=Ge(e);for(let e=Math.max(0,o-r);e<s;e++){var a=e-o,c=await h(i(r+a));if(n.constantTimeEqual(c,t))return{valid:!0,delta:0|a}}return{valid:!1}}var Fe=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=x(e.guardrails)}generateSecret(){var{crypto:e,base32:t}=this.options;return S(e),i(t),n({crypto:e,base32:t})}async generate(e){var t={...this.options,...e},{secret:r,crypto:o,base32:s,algorithm:n="sha1",digits:i=6,period:a=30,epoch:c,t0:h=0}=t,e=(I(r),S(o),e?.guardrails??this.guardrails);return We({secret:r,algorithm:n,digits:i,period:a,epoch:c??Math.floor(Date.now()/1e3),t0:h,crypto:o,base32:s,guardrails:e,hooks:t.hooks})}async verify(e,t){var r={...this.options,...t},{secret:o,crypto:s,base32:n,algorithm:i="sha1",digits:a=6,period:c=30,epoch:h,t0:u=0,epochTolerance:l=0,afterTimeStep:d}=r,t=(I(o),S(s),t?.guardrails??this.guardrails);return Je({secret:o,token:e,algorithm:i,digits:a,period:c,epoch:h??Math.floor(Date.now()/1e3),t0:u,epochTolerance:l,afterTimeStep:d,crypto:s,base32:n,guardrails:t,hooks:r.hooks})}toURI(e){var{issuer:t,label:r,secret:o,algorithm:s="sha1",digits:n=6,period:i=30}=this.options,r=e?.label??r,t=e?.issuer??t,e=e?.secret??o;return I(e),Me(r),Re(t),Oe(e),Le({issuer:t,label:r,secret:e,algorithm:s,digits:n,period:i})}};function Ye(e){var{secret:e,epoch:t=Math.floor(Date.now()/1e3),t0:r=0,period:o=30,algorithm:s="sha1",digits:n=6,crypto:i,base32:a,guardrails:c=x(),hooks:h}=e,e=(I(e),S(i),A(e,a)),a=(T(e,c),Te(t),Ae(o,c),v(s,{supported:i.algorithms,plugin:i.name}));return{secret:e,counter:Math.floor((t-r)/o),algorithm:a,digits:n,crypto:i,guardrails:c,hooks:h}}async function We(e){return h(Ye(e))}function qe(e){return $e(Ye(e))}function ze(e,t){return void 0!==t&&e<=t}function Ve(e){let{secret:t,token:r,epoch:o=Math.floor(Date.now()/1e3),t0:s=0,period:n=30,algorithm:i="sha1",digits:a=6,crypto:c,base32:h,epochTolerance:u=0,afterTimeStep:l,guardrails:d=x(),hooks:p}=e,f=(I(t),S(c),A(t,h)),g=(T(f,d),Te(o),Ae(n,d),v(i,{supported:c.algorithms,plugin:c.name}));p?.validateToken?p.validateToken(r,a):Se(r,a);var[e,b=me,y=w]=[u,n,d],[e,m]=Array.isArray(e)?e:[e,e];if(!Number.isSafeInteger(e)||!Number.isSafeInteger(m))throw new se("Epoch tolerance values must be safe integers");if(e<0||m<0)throw new ne;if((y=(y.MAX_WINDOW-1)*b)<(b=e+m))throw new ie(y,b);var e=Math.floor((o-s)/n),[y,b]=([m=0]=[u],Array.isArray(m)?m:[m,m]),m=Math.max(0,Math.floor((o-y-s)/n)),y=Math.floor((o+b-s)/n),b=l,E=y;if(void 0!==b){if(b<0)throw new pe;if(!Number.isSafeInteger(b))throw new fe;if(E<b)throw new ge}return{token:r,crypto:c,minCounter:m,maxCounter:y,currentCounter:e,t0:s,period:n,afterTimeStep:l,getGenerateOptions:e=>({secret:f,epoch:e*n+s,t0:s,period:n,algorithm:g,digits:a,crypto:c,guardrails:d,hooks:p})}}async function Je(t){var{token:r,crypto:o,minCounter:t,maxCounter:s,currentCounter:n,t0:i,period:a,afterTimeStep:c,getGenerateOptions:h}=Ve(t);for(let e=t;e<=s;e++)if(!ze(e,c)){var u=await We(h(e));if(o.constantTimeEqual(u,r))return{valid:!0,delta:e-n,epoch:e*a+i,timeStep:e}}return{valid:!1}}function Ke(e,t){return Array.isArray(t)&&(0===t.length||(e?t.every(e=>"string"==typeof e):t.every(e=>Number.isSafeInteger(e))))}function a(e,t){if("string"!=typeof t)throw new TypeError(e+": string expected")}function Qe(e){if("number"!=typeof e)throw new TypeError("number expected, got "+typeof e);if(!Number.isSafeInteger(e))throw new RangeError("invalid integer: "+e)}function Ze(e){if(!Array.isArray(e))throw new TypeError("array expected")}function c(e,t){if(!Ke(!0,t))throw new TypeError(e+": array of strings expected")}var et=(e,t)=>0===t?e:et(t,e%t),u=(e,t)=>e+(t-et(e,t)),tt=(()=>{var t=[];for(let e=0;e<40;e++)t.push(2**e);return t})();function rt(e,t,r,o){if(Ze(e),t<=0||32<t)throw new RangeError("convertRadix2: wrong from="+t);if(r<=0||32<r)throw new RangeError("convertRadix2: wrong to="+r);if(32<u(t,r))throw new Error(`convertRadix2: carry overflow from=${t} to=${r} carryBits=`+u(t,r));let s=0,n=0,i=tt[t],a=tt[r]-1,c=[];for(var h of e){if(Qe(h),h>=i)throw new Error(`convertRadix2: invalid data word=${h} from=`+t);if(s=s<<t|h,32<n+t)throw new Error(`convertRadix2: carry overflow pos=${n} from=`+t);for(n+=t;n>=r;n-=r)c.push((s>>n-r&a)>>>0);h=tt[n];if(void 0===h)throw new Error("invalid carry");s&=h-1}if(s=s<<r-n&a,!o&&n>=t)throw new Error("Excess padding");if(!o&&0<s)throw new Error("Non-zero padding: "+s);return o&&0<n&&c.push(s>>>0),c}var ot,l,d,st=Object.freeze((e=[((r,o=!1)=>{if(Qe(r),r<=0||32<r)throw new RangeError("radix2: bits should be in (0..32]");if(32<u(8,r)||32<u(r,8))throw new RangeError("radix2: carry overflow");return{encode:e=>{var t;if((t=e)instanceof Uint8Array||ArrayBuffer.isView(t)&&"Uint8Array"===t.constructor.name&&"BYTES_PER_ELEMENT"in t&&1===t.BYTES_PER_ELEMENT)return rt(Array.from(e),8,r,!o);throw new TypeError("radix2.encode input should be Uint8Array")},decode:e=>{var t="radix2.decode";if(Ke(!1,e))return Uint8Array.from(rt(e,r,8,o));throw new TypeError(t+": array of numbers expected")}}})(5),(r=>{let t="string"==typeof r?r.split(""):r,o=t.length,s=(c("alphabet",t),new Map(t.map((e,t)=>[e,t])));return{encode:e=>(Ze(e),e.map(e=>{if(!Number.isSafeInteger(e)||e<0||e>=o)throw new Error(`alphabet.encode: digit index outside alphabet "${e}". Allowed: `+r);return t[e]})),decode:e=>(Ze(e),e.map(e=>{a("alphabet.decode",e);var t=s.get(e);if(void 0===t)throw new Error(`Unknown letter: "${e}". Allowed: `+r);return t}))}})("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),(d="=",Qe(l=5),a("padding",d),{encode(e){for(c("padding.encode",e);e.length*l%8;)e.push(d);return e},decode(e){c("padding.decode",e);let t=e.length;if(t*l%8)throw new Error("padding: invalid, string should have whole number of bytes");for(;0<t&&e[t-1]===d;t--)if((t-1)*l%8==0)throw new Error("padding: invalid, string has too much padding");return e.slice(0,t)}}),(a("join",ot=""),{encode:e=>(c("join.decode",e),e.join(ot)),decode:e=>(a("join.decode",e),e.split(ot))})],t=e=>e,C=(t,r)=>e=>t(r(e)),{encode:e.map(e=>e.encode).reduceRight(C,t),decode:e.map(e=>e.decode).reduce(C,t)})),nt=class{name="scure";encode(e,t={}){var{padding:t=!1}=t,e=st.encode(e);return t?e:e.replace(/=+$/,"")}decode(e){try{var t=e.toUpperCase(),r=t.padEnd(8*Math.ceil(t.length/8),"=");return st.decode(r)}catch(e){throw new Error("Invalid Base32 string: "+e.message)}}},it=Object.freeze(new nt);function at(e,t=""){if("number"!=typeof e)throw new TypeError((t&&`"${t}" `)+"expected number, got "+typeof e);if(!Number.isSafeInteger(e)||e<0)throw new RangeError((t&&`"${t}" `)+"expected integer >= 0, got "+e)}function ct(e,t,r=""){var o=(o=e)instanceof Uint8Array||ArrayBuffer.isView(o)&&"Uint8Array"===o.constructor.name&&"BYTES_PER_ELEMENT"in o&&1===o.BYTES_PER_ELEMENT,s=e?.length,n=void 0!==t;if(!o||n&&s!==t)throw r=(r&&`"${r}" `)+"expected Uint8Array"+(n?" of length "+t:"")+", got "+(o?"length="+s:"type="+typeof e),new(o?RangeError:TypeError)(r)}function p(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function ht(e,t){ct(e,void 0,"digestInto() output");t=t.outputLen;if(e.length<t)throw new RangeError('"digestInto() output" expected to be of length >='+t)}function f(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function ut(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function g(e,t){return e<<32-t|e>>>t}function lt(e,t){return e<<t|e>>>32-t>>>0}function dt(r,e={}){var t=(e,t)=>r(t).update(e).digest(),o=r(void 0);return t.outputLen=o.outputLen,t.blockLen=o.blockLen,t.canXOF=o.canXOF,t.create=e=>r(e),Object.assign(t,e),Object.freeze(t)}var e=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])}),pt=class{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,t){var r=e;if("function"!=typeof r||"function"!=typeof r.create)throw new TypeError("Hash must wrapped by utils.createHasher");if(at(r.outputLen),at(r.blockLen),r.outputLen<1)throw new Error('"outputLen" must be >= 1');if(r.blockLen<1)throw new Error('"blockLen" must be >= 1');if(ct(t,void 0,"key"),this.iHash=e.create(),"function"!=typeof this.iHash.update)throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;var r=this.blockLen,o=new Uint8Array(r);o.set(t.length>r?e.create().update(t).digest():t);for(let e=0;e<o.length;e++)o[e]^=54;this.iHash.update(o),this.oHash=e.create();for(let e=0;e<o.length;e++)o[e]^=106;this.oHash.update(o),f(o)}update(e){return p(this),this.iHash.update(e),this}digestInto(e){p(this),ht(e,this),this.finished=!0;e=e.subarray(0,this.outputLen);this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){var e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){var{oHash:t,iHash:r,finished:o,destroyed:s,blockLen:n,outputLen:i}=this;return(e||=Object.create(Object.getPrototypeOf(this),{})).finished=o,e.destroyed=s,e.blockLen=n,e.outputLen=i,e.oHash=t._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ft=((C=(e,t,r)=>new pt(e,t).update(r).digest()).create=(e,t)=>new pt(e,t),C);function gt(e,t,r){return e&t^~e&r}function bt(e,t,r){return e&t^e&r^t&r}var t=class{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,r,o){this.blockLen=e,this.outputLen=t,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=ut(this.buffer)}update(t){p(this),ct(t);var{view:r,buffer:o,blockLen:s}=this,n=t.length;for(let e=0;e<n;){var i=Math.min(s-this.pos,n-e);if(i===s)for(var a=ut(t);s<=n-e;e+=s)this.process(a,e);else o.set(t.subarray(e,e+i),this.pos),this.pos+=i,e+=i,this.pos===s&&(this.process(r,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(e){p(this),ht(e,this),this.finished=!0;let{buffer:t,view:r,blockLen:o,isLE:s}=this,n=this.pos;t[n++]=128,f(this.buffer.subarray(n)),this.padOffset>o-n&&(this.process(r,0),n=0);for(let e=n;e<o;e++)t[e]=0;r.setBigUint64(o-8,BigInt(8*this.length),s),this.process(r,0);var i=ut(e),e=this.outputLen;if(e%4)throw new Error("_sha2: outputLen must be aligned to 32bit");var a=e/4,c=this.get();if(a>c.length)throw new Error("_sha2: outputLen bigger than state");for(let e=0;e<a;e++)i.setUint32(4*e,c[e],s)}digest(){var{buffer:e,outputLen:t}=this,e=(this.digestInto(e),e.slice(0,t));return this.destroy(),e}_cloneInto(e){(e||=new this.constructor).set(...this.get());var{blockLen:t,buffer:r,length:o,finished:s,destroyed:n,pos:i}=this;return e.destroyed=n,e.finished=s,e.length=o,e.pos=i,o%t&&e.buffer.set(r),e}clone(){return this._cloneInto()}},b=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),y=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),m=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),E=new Uint32Array(80),yt=class extends t{A=0|m[0];B=0|m[1];C=0|m[2];D=0|m[3];E=0|m[4];constructor(){super(64,20,8,!1)}get(){var{A:e,B:t,C:r,D:o,E:s}=this;return[e,t,r,o,s]}set(e,t,r,o,s){this.A=0|e,this.B=0|t,this.C=0|r,this.D=0|o,this.E=0|s}process(t,r){for(let e=0;e<16;e++,r+=4)E[e]=t.getUint32(r,!1);for(let e=16;e<80;e++)E[e]=lt(E[e-3]^E[e-8]^E[e-14]^E[e-16],1);let{A:o,B:s,C:n,D:i,E:a}=this;for(let r=0;r<80;r++){let e,t;t=r<20?(e=gt(s,n,i),1518500249):r<40?(e=s^n^i,1859775393):r<60?(e=bt(s,n,i),2400959708):(e=s^n^i,3395469782);var c=lt(o,5)+e+a+t+E[r]|0;a=i,i=n,n=lt(s,30),s=o,o=c}o=o+this.A|0,s=s+this.B|0,n=n+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(o,s,n,i,a)}roundClean(){f(E)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0),f(this.buffer)}},C=dt(()=>new yt),_=BigInt(4294967295),mt=BigInt(32);var Et=(e,t,r)=>e<<32-r|t>>>r,M=(e,t,r)=>e>>>r|t<<32-r,R=(e,t,r)=>e<<32-r|t>>>r,wt=(e,t,r)=>e<<64-r|t>>>r-32,xt=(e,t,r)=>e>>>r-32|t<<64-r;function O(e,t,r,o){t=(t>>>0)+(o>>>0);return{h:e+r+(t/2**32|0)|0,l:0|t}}var vt=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),k=new Uint32Array(64),Tt=class extends t{constructor(e){super(64,e,8,!1)}get(){var{A:e,B:t,C:r,D:o,E:s,F:n,G:i,H:a}=this;return[e,t,r,o,s,n,i,a]}set(e,t,r,o,s,n,i,a){this.A=0|e,this.B=0|t,this.C=0|r,this.D=0|o,this.E=0|s,this.F=0|n,this.G=0|i,this.H=0|a}process(t,r){for(let e=0;e<16;e++,r+=4)k[e]=t.getUint32(r,!1);for(let e=16;e<64;e++){var o=k[e-15],s=k[e-2],o=g(o,7)^g(o,18)^o>>>3,s=g(s,17)^g(s,19)^s>>>10;k[e]=s+k[e-7]+o+k[e-16]|0}let{A:n,B:i,C:a,D:c,E:h,F:u,G:l,H:d}=this;for(let e=0;e<64;e++){var p=g(h,6)^g(h,11)^g(h,25),p=d+p+gt(h,u,l)+vt[e]+k[e]|0,f=(g(n,2)^g(n,13)^g(n,22))+bt(n,i,a)|0;d=l,l=u,u=h,h=c+p|0,c=a,a=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,a=a+this.C|0,c=c+this.D|0,h=h+this.E|0,u=u+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(n,i,a,c,h,u,l,d)}roundClean(){f(k)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),f(this.buffer)}},At=class extends Tt{A=0|b[0];B=0|b[1];C=0|b[2];D=0|b[3];E=0|b[4];F=0|b[5];G=0|b[6];H=0|b[7];constructor(){super(32)}},Tt=((t,r=!1)=>{var o=t.length,s=new Uint32Array(o),n=new Uint32Array(o);for(let e=0;e<o;e++){[a,i=!1]=[t[e],r];var{h:i,l:a}=i?{h:Number(a&_),l:Number(a>>mt&_)}:{h:0|Number(a>>mt&_),l:0|Number(a&_)};[s[e],n[e]]=[i,a]}return[s,n]})(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(e=>BigInt(e))),St=Tt[0],It=Tt[1],B=new Uint32Array(80),N=new Uint32Array(80),Tt=class extends t{constructor(e){super(128,e,16,!1)}get(){var{Ah:e,Al:t,Bh:r,Bl:o,Ch:s,Cl:n,Dh:i,Dl:a,Eh:c,El:h,Fh:u,Fl:l,Gh:d,Gl:p,Hh:f,Hl:g}=this;return[e,t,r,o,s,n,i,a,c,h,u,l,d,p,f,g]}set(e,t,r,o,s,n,i,a,c,h,u,l,d,p,f,g){this.Ah=0|e,this.Al=0|t,this.Bh=0|r,this.Bl=0|o,this.Ch=0|s,this.Cl=0|n,this.Dh=0|i,this.Dl=0|a,this.Eh=0|c,this.El=0|h,this.Fh=0|u,this.Fl=0|l,this.Gh=0|d,this.Gl=0|p,this.Hh=0|f,this.Hl=0|g}process(t,r){for(let e=0;e<16;e++,r+=4)B[e]=t.getUint32(r),N[e]=t.getUint32(r+=4);for(let e=16;e<80;e++){var o=0|B[e-15],s=0|N[e-15],n=M(o,s,1)^M(o,s,8)^o>>>7,o=R(o,s,1)^R(o,s,8)^Et(o,s,7),s=0|B[e-2],i=0|N[e-2],a=M(s,i,19)^wt(s,i,61)^s>>>6,o=(o>>>0)+((R(s,i,19)^xt(s,i,61)^Et(s,i,6))>>>0)+(N[e-7]>>>0)+(N[e-16]>>>0);s=B[e-7],i=B[e-16],B[e]=0|(n+a+s+i+(o/2**32|0)|0),N[e]=0|o}let{Ah:c,Al:h,Bh:u,Bl:l,Ch:d,Cl:p,Dh:f,Dl:g,Eh:b,El:y,Fh:m,Fl:E,Gh:w,Gl:x,Hh:v,Hl:T}=this;for(let e=0;e<80;e++){var A=M(b,y,14)^M(b,y,18)^wt(b,y,41),S=R(b,y,14)^R(b,y,18)^xt(b,y,41),I=b&m^~b&w,C=y&E^~y&x,S=(T>>>0)+(S>>>0)+(C>>>0)+(It[e]>>>0)+(N[e]>>>0),C=(C=v,_=St[e],k=B[e],C+A+I+_+k+(S/2**32|0)|0),A=0|S,I=M(c,h,28)^wt(c,h,34)^wt(c,h,39),_=R(c,h,28)^xt(c,h,34)^xt(c,h,39),k=c&u^c&d^u&d,S=h&l^h&p^l&p,A=(v=0|w,T=0|x,w=0|m,x=0|E,m=0|b,E=0|y,{h:b,l:y}=O(0|f,0|g,0|C,0|A),f=0|d,g=0|p,d=0|u,p=0|l,u=0|c,l=0|h,(A>>>0)+(_>>>0)+(S>>>0));c=C+I+k+(A/2**32|0)|0,h=0|A}({h:c,l:h}=O(0|this.Ah,0|this.Al,0|c,0|h)),{h:u,l}=O(0|this.Bh,0|this.Bl,0|u,0|l),{h:d,l:p}=O(0|this.Ch,0|this.Cl,0|d,0|p),{h:f,l:g}=O(0|this.Dh,0|this.Dl,0|f,0|g),{h:b,l:y}=O(0|this.Eh,0|this.El,0|b,0|y),{h:m,l:E}=O(0|this.Fh,0|this.Fl,0|m,0|E),{h:w,l:x}=O(0|this.Gh,0|this.Gl,0|w,0|x),{h:v,l:T}=O(0|this.Hh,0|this.Hl,0|v,0|T),this.set(c,h,u,l,d,p,f,g,b,y,m,E,w,x,v,T)}roundClean(){f(B,N)}destroy(){this.destroyed=!0,f(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},Ct=class extends Tt{Ah=0|y[0];Al=0|y[1];Bh=0|y[2];Bl=0|y[3];Ch=0|y[4];Cl=0|y[5];Dh=0|y[6];Dl=0|y[7];Eh=0|y[8];El=0|y[9];Fh=0|y[10];Fl=0|y[11];Gh=0|y[12];Gl=0|y[13];Hh=0|y[14];Hl=0|y[15];constructor(){super(64)}},_t={sha1:C,sha256:dt(()=>new At,e(1)),sha512:dt(()=>new Ct,e(3))},kt=Object.freeze(Object.keys(_t)),Mt=class{name="noble";algorithms=kt;hmac(e,t,r){e=v(e,{supported:this.algorithms,plugin:this.name});return ft(_t[e],t,r)}randomBytes(e){var[e=32]=[e],t=(at(e,"bytesLength"),"object"==typeof globalThis?globalThis.crypto:null);if("function"!=typeof t?.getRandomValues)throw new Error("crypto.getRandomValues must be defined");if(65536<e)throw new RangeError('"bytesLength" expected <= 65536, got '+e);return t.getRandomValues(new Uint8Array(e))}constantTimeEqual(e,r){{var o=_e(e),s=_e(r);if(o.length!==s.length)return!1;let t=0;for(let e=0;e<o.length;e++)t|=o[e]^s[e];return 0===t}}},Rt=Object.freeze(new Mt);function Ot(e){return{secret:e.secret,strategy:e.strategy??"totp",crypto:e.crypto??Rt,base32:e.base32??it,algorithm:e.algorithm??"sha1",digits:e.digits??6,period:e.period??30,epoch:e.epoch??Math.floor(Date.now()/1e3),t0:e.t0??0,counter:e.counter,guardrails:e.guardrails??x(),hooks:e.hooks}}function Bt(e){return{...Ot(e),token:e.token,epochTolerance:e.epochTolerance??0,counterTolerance:e.counterTolerance??0,afterTimeStep:e.afterTimeStep}}function D(e,t,r){if("totp"===e)return r.totp();if("hotp"!==e)throw new o(`Unknown OTP strategy: ${e}. Valid strategies are 'totp' or 'hotp'.`);if(void 0===t)throw new o("Counter is required for HOTP strategy. Example: { strategy: 'hotp', counter: 0 }");return r.hotp(t)}function Nt(e){let{strategy:t="totp",issuer:r,label:o,secret:s,algorithm:n="sha1",digits:i=6,period:a=30,counter:c}=e;return D(t,c,{totp:()=>Le({issuer:r,label:o,secret:s,algorithm:n,digits:i,period:a}),hotp:e=>He({issuer:r,label:o,secret:s,algorithm:n,digits:i,counter:e})})}async function Dt(e){let t=Ot(e),{secret:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a}=t,c={secret:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a};return D(t.strategy,t.counter,{totp:()=>We({...c,period:t.period,epoch:t.epoch,t0:t.t0,guardrails:t.guardrails}),hotp:e=>h({...c,counter:e,guardrails:t.guardrails})})}function Ut(e){let t=Ot(e),{secret:r,crypto:o,base32:s,algorithm:n,digits:i}=t,a={secret:r,crypto:o,base32:s,algorithm:n,digits:i};return D(t.strategy,t.counter,{totp:()=>qe({...a,period:t.period,epoch:t.epoch,t0:t.t0,guardrails:t.guardrails}),hotp:e=>$e({...a,counter:e,guardrails:t.guardrails})})}async function Lt(e){let t=Bt(e),{secret:r,token:o,crypto:s,base32:n,algorithm:i,digits:a,hooks:c}=t,h={secret:r,token:o,crypto:s,base32:n,algorithm:i,digits:a,hooks:c};return D(t.strategy,t.counter,{totp:()=>Je({...h,period:t.period,epoch:t.epoch,t0:t.t0,epochTolerance:t.epochTolerance,afterTimeStep:t.afterTimeStep,guardrails:t.guardrails}),hotp:e=>je({...h,counter:e,counterTolerance:t.counterTolerance,guardrails:t.guardrails})})}function Ht(e){let l=Bt(e),{secret:t,token:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a}=l,d={secret:t,token:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a};return D(l.strategy,l.counter,{totp:()=>{var{token:t,crypto:r,minCounter:o,maxCounter:s,currentCounter:n,t0:i,period:a,afterTimeStep:c,getGenerateOptions:h}=Ve(o={...d,period:l.period,epoch:l.epoch,t0:l.t0,epochTolerance:l.epochTolerance,afterTimeStep:l.afterTimeStep,guardrails:l.guardrails});for(let e=o;e<=s;e++)if(!ze(e,c)){var u=qe(h(e));if(r.constantTimeEqual(u,t))return{valid:!0,delta:e-n,epoch:e*a+i,timeStep:e}}return{valid:!1}},hotp:e=>{var{token:t,counterNum:r,past:o,totalChecks:s,crypto:n,getGenerateOptions:i}=Ge({...d,counter:e,counterTolerance:l.counterTolerance,guardrails:l.guardrails});for(let e=Math.max(0,o-r);e<s;e++){var a=e-o,c=$e(i(r+a));if(n.constantTimeEqual(c,t))return{valid:!0,delta:0|a}}return{valid:!1}}})}var Pt=class{strategy;crypto;base32;guardrails;constructor(e={}){var{strategy:e="totp",crypto:t=Rt,base32:r=it,guardrails:o}=e;this.strategy=e,this.crypto=t,this.base32=r,this.guardrails=x(o)}getStrategy(){return this.strategy}generateSecret(e=20){return n({crypto:this.crypto,base32:this.base32,length:e})}async generate(e){return Dt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateSync(e){return Ut({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}async verify(e){return Lt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}verifySync(e){return Ht({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateURI(e){return Nt({...e,strategy:this.strategy})}};return t=X,((t,r,o,s)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let e of H(r))P.call(t,e)||e===o||U(t,e,{get:()=>r[e],enumerable:!(s=L(r,e))||s.enumerable});return t})(U({},"__esModule",{value:!0}),t)})();
1
+ var otplib=(e=>{Object.defineProperty(e,"__esModule",{value:!0});var t=class extends Error{constructor(e,t){super(e,t),this.name="OTPError"}},r=class extends t{constructor(e){super(e),this.name="SecretError"}},k=class extends r{constructor(e,t){super(`Secret must be at least ${e} bytes (${8*e} bits), got ${t} bytes`),this.name="SecretTooShortError"}},M=class extends r{constructor(e,t){super(`Secret must not exceed ${e} bytes, got ${t} bytes`),this.name="SecretTooLongError"}},r=class extends t{constructor(e){super(e),this.name="CounterError"}},O=class extends r{constructor(){super("Counter must be non-negative"),this.name="CounterNegativeError"}},P=class extends r{constructor(){super("Counter exceeds maximum safe integer value"),this.name="CounterOverflowError"}},X=class extends r{constructor(){super("Counter must be a finite integer"),this.name="CounterNotIntegerError"}},r=class extends t{constructor(e){super(e),this.name="TimeError"}},G=class extends r{constructor(){super("Time must be non-negative"),this.name="TimeNegativeError"}},j=class extends r{constructor(){super("Time must be a finite number"),this.name="TimeNotFiniteError"}},r=class extends t{constructor(e){super(e),this.name="PeriodError"}},F=class extends r{constructor(e){super(`Period must be at least ${e} second(s)`),this.name="PeriodTooSmallError"}},$=class extends r{constructor(e){super(`Period must not exceed ${e} seconds`),this.name="PeriodTooLargeError"}},r=class extends t{constructor(e){super(e),this.name="AlgorithmError"}},Y=class extends r{constructor(e,t={}){var{supported:t,plugin:r}=t;super("Unsupported hash algorithm."+(t?" Expected one of: "+(t.join(", ")||"(none)"):"")+(r?` [plugin: ${r}]`:"")),this.name="AlgorithmUnsupportedError"}},o=class extends t{constructor(e){super(e),this.name="TokenError"}},W=class extends o{constructor(e,t){super(`Token must be ${e} digits, got `+t),this.name="TokenLengthError"}},q=class extends o{constructor(){super("Token must contain only digits"),this.name="TokenFormatError"}},o=class extends t{constructor(e,t){super(e,t),this.name="CryptoError"}},n=class extends o{constructor(e,t){super("HMAC computation failed: "+e,t),this.name="HMACError"}},z=class extends o{constructor(e,t){super("Random byte generation failed: "+e,t),this.name="RandomBytesError"}},g=class extends t{constructor(e){super(e),this.name="CounterToleranceError"}},V=class extends g{constructor(e,t){super(`Counter tolerance validation failed: total checks (${t}) exceeds MAX_WINDOW (${e})`),this.name="CounterToleranceTooLargeError"}},J=class extends g{constructor(){super("Counter tolerance cannot contain negative values"),this.name="CounterToleranceNegativeError"}},w=class extends t{constructor(e){super(e),this.name="EpochToleranceError"}},K=class extends w{constructor(){super("Epoch tolerance cannot contain negative values"),this.name="EpochToleranceNegativeError"}},Q=class extends w{constructor(e,t){super(`Epoch tolerance must not exceed ${e} seconds, got ${t}. Large tolerances can cause performance issues.`),this.name="EpochToleranceTooLargeError"}},o=class extends t{constructor(e){super(e),this.name="PluginError"}},Z=class extends o{constructor(){super("Crypto plugin is required."),this.name="CryptoPluginMissingError"}},ee=class extends o{constructor(){super("Base32 plugin is required."),this.name="Base32PluginMissingError"}},s=class extends t{constructor(e){super(e),this.name="ConfigurationError"}},te=class extends s{constructor(){super("Secret is required. Use generateSecret() to create one, or provide via { secret: 'YOUR_BASE32_SECRET' }"),this.name="SecretMissingError"}},re=class extends s{constructor(){super("Label is required for URI generation. Example: { label: 'user@example.com' }"),this.name="LabelMissingError"}},oe=class extends s{constructor(){super("Issuer is required for URI generation. Example: { issuer: 'MyApp' }"),this.name="IssuerMissingError"}},se=class extends s{constructor(){super("Class API requires secret to be a Base32 string, not Uint8Array. Use generateSecret() or provide a Base32-encoded string."),this.name="SecretTypeError"}},o=class extends t{constructor(e){super(e),this.name="AfterTimeStepError"}},ne=class extends o{constructor(){super("afterTimeStep must be >= 0"),this.name="AfterTimeStepNegativeError"}},ie=class extends o{constructor(){super("Invalid afterTimeStep: non-integer value"),this.name="AfterTimeStepNotIntegerError"}},ae=class extends o{constructor(){super("Invalid afterTimeStep: cannot be greater than current time step plus window"),this.name="AfterTimeStepRangeExceededError"}};let ce=new TextEncoder,he=(new TextDecoder,Symbol("otplib.guardrails.override"));function i(e,t,r){if("number"!=typeof t||!Number.isSafeInteger(t))throw new s(`Guardrail '${e}' must be a safe integer`);if(t<r)throw new s(`Guardrail '${e}' must be >= `+r)}let v=Object.freeze({MIN_SECRET_BYTES:16,MAX_SECRET_BYTES:64,MIN_PERIOD:1,MAX_PERIOD:3600,MAX_COUNTER:2**53-1,MAX_WINDOW:99,[he]:!1});function x(e){if(!e)return v;void 0!==e.MIN_SECRET_BYTES&&i("MIN_SECRET_BYTES",e.MIN_SECRET_BYTES,1),void 0!==e.MAX_SECRET_BYTES&&i("MAX_SECRET_BYTES",e.MAX_SECRET_BYTES,1),void 0!==e.MIN_PERIOD&&i("MIN_PERIOD",e.MIN_PERIOD,1),void 0!==e.MAX_PERIOD&&i("MAX_PERIOD",e.MAX_PERIOD,1),void 0!==e.MAX_COUNTER&&i("MAX_COUNTER",e.MAX_COUNTER,0),void 0!==e.MAX_WINDOW&&i("MAX_WINDOW",e.MAX_WINDOW,1);e={...v,...e};if(e.MAX_SECRET_BYTES<e.MIN_SECRET_BYTES)throw new s("Guardrail 'MIN_SECRET_BYTES' must be <= 'MAX_SECRET_BYTES'");if(e.MAX_PERIOD<e.MIN_PERIOD)throw new s("Guardrail 'MIN_PERIOD' must be <= 'MAX_PERIOD'");return Object.freeze({...e,[he]:!0})}let ue={sha1:["sha1","sha-1","sha_1"],sha256:["sha256","sha-256","sha_256"],sha512:["sha512","sha-512","sha_512"]},le=Object.freeze(Object.keys(ue)),de=new Map(Object.entries(ue).flatMap(([t,e])=>e.map(e=>[e,t])));function T(e,t={}){let{supported:r,plugin:o}=t,s=void 0===r?le:le.filter(e=>r.includes(e));if("string"==typeof e){t=de.get(e.toLowerCase());if(void 0!==t&&s.includes(t))return t}throw new Y(e,{supported:s,plugin:o})}function A(e,t=v){if(e.length<t.MIN_SECRET_BYTES)throw new k(t.MIN_SECRET_BYTES,e.length);if(t.MAX_SECRET_BYTES<e.length)throw new M(t.MAX_SECRET_BYTES,e.length)}function pe(e,t=v){if("number"==typeof e){if(!Number.isFinite(e)||!Number.isInteger(e))throw new X;if(!Number.isSafeInteger(e))throw new P}e="bigint"==typeof e?e:BigInt(e);if(e<0n)throw new O;if(e>BigInt(t.MAX_COUNTER))throw new P}function fe(e){if(!Number.isFinite(e))throw new j;if(e<0)throw new G}function ge(e,t=v){if(!Number.isInteger(e)||e<t.MIN_PERIOD)throw new F(t.MIN_PERIOD);if(e>t.MAX_PERIOD)throw new $(t.MAX_PERIOD)}function be(e,t){if(e.length!==t)throw new W(t,e.length);if(!/^\d+$/.test(e))throw new q}function ye(e){var t=15&e[e.length-1];return(127&e[t])<<24|e[1+t]<<16|e[2+t]<<8|e[3+t]}function me(e,t){return(e%10**t).toString().padStart(t,"0")}function Ee(e){return"string"==typeof e?ce.encode(e):e}function S(e,t){return"string"==typeof e?(c(t),t.decode(e)):e}function a(e){var{crypto:e,base32:t,length:r=20}=e,e=(C(e),c(t),e.randomBytes(r));return t.encode(e,{padding:!1})}function we(e=0){return Array.isArray(e)?e:[0,e]}function C(e){if(!e)throw new Z}function c(e){if(!e)throw new ee}function I(e){if(!e)throw new te}function ve(e){if(!e)throw new re}function xe(e){if(!e)throw new oe}function Te(e){if("string"!=typeof e)throw new se}function Ae(e){return{ok:!0,value:e}}function Se(e){return{ok:!1,error:e}}var Ce=class{crypto;constructor(e){this.crypto=e}get plugin(){return this.crypto}normalize(e){return T(e,{supported:this.crypto.algorithms,plugin:this.crypto.name})}async hmac(e,t,r){var o=this.normalize(e);try{return await this.crypto.hmac(o,t,r)}catch(e){throw new n(e instanceof Error?e.message:String(e),{cause:e})}}hmacSync(e,t,r){var o=this.normalize(e);try{var s=this.crypto.hmac(o,t,r);if("function"!=typeof s.then)return s;Promise.resolve(s).catch(()=>{})}catch(e){throw new n(e instanceof Error?e.message:String(e),{cause:e})}throw new n("Crypto plugin does not support synchronous HMAC operations")}randomBytes(e){try{return this.crypto.randomBytes(e)}catch(e){throw new z(e instanceof Error?e.message:String(e),{cause:e})}}},t=class extends Error{constructor(e,t){super(e,t),this.name="URIParseError"}},h=class extends t{constructor(e,t,r){super(`Invalid value for parameter '${e}': `+t,r),this.name="InvalidParameterError"}};function Ie(e,t,r=2**53-1){if("number"==typeof e||"string"==typeof e&&""!==e.trim())return e=Number(e),Number.isSafeInteger(e)&&t<=e&&e<=r?e:void 0}function _e(e){var{type:e,label:t,params:r}=e;if("hotp"!==e&&"totp"!==e)throw new h("type",String(e));var o=void 0===r.digits?void 0:Ie(r.digits,1);if(void 0!==r.digits&&void 0===o)throw new h("digits",String(r.digits));var s=void 0===r.counter?void 0:Ie(r.counter,0);if(void 0!==r.counter&&void 0===s)throw new h("counter",String(r.counter));var n=void 0===r.period?void 0:Ie(r.period,1);if(void 0!==r.period&&void 0===n)throw new h("period",String(r.period));var t=`otpauth://${e}/${t.split(":").map(e=>encodeURIComponent(e)).join(":")}?`,i=[];return r.secret&&i.push("secret="+encodeURIComponent(r.secret)),r.issuer&&i.push("issuer="+encodeURIComponent(r.issuer)),r.algorithm&&"sha1"!==(r=T(r.algorithm))&&i.push("algorithm="+r.toUpperCase()),void 0!==o&&6!==o&&i.push("digits="+o),"hotp"===e&&void 0!==s&&i.push("counter="+s),"totp"===e&&void 0!==n&&30!==n&&i.push("period="+n),t+=i.join("&")}function ke(e){var{issuer:e,label:t,secret:r,algorithm:o="sha1",digits:s=6,period:n=30}=e;return _e({type:"totp",label:e?e+":"+t:t,params:{secret:r,issuer:e,algorithm:o,digits:s,period:n}})}function Me(e){var{issuer:e,label:t,secret:r,counter:o=0,algorithm:s="sha1",digits:n=6}=e;return _e({type:"hotp",label:e?e+":"+t:t,params:{secret:r,issuer:e,algorithm:s,digits:n,counter:o}})}function Oe(e){var{secret:e,counter:t,algorithm:r="sha1",digits:o=6,crypto:s,base32:n,guardrails:i,hooks:a}=e,e=(I(e),C(s),S(e,n)),n=(A(e,i),pe(t,i),T(r,{supported:s.algorithms,plugin:s.name}));return{ctx:new Ce(s),algorithm:n,digits:o,secretBytes:e,counterBytes:(i="bigint"==typeof(i=t)?i:BigInt(i),r=new ArrayBuffer(8),new DataView(r).setBigUint64(0,i,!1),new Uint8Array(r)),hooks:a}}async function u(e){var{ctx:e,algorithm:t,digits:r,secretBytes:o,counterBytes:s,hooks:n}=Oe(e),e=await e.hmac(t,o,s),t=n?.truncateDigest?n.truncateDigest(e):ye(e);return n?.encodeToken?n.encodeToken(t,r):me(t,r)}function Be(e){var{ctx:e,algorithm:t,digits:r,secretBytes:o,counterBytes:s,hooks:n}=Oe(e),e=e.hmacSync(t,o,s),t=n?.truncateDigest?n.truncateDigest(e):ye(e);return n?.encodeToken?n.encodeToken(t,r):me(t,r)}function Re(e){let{secret:t,counter:r,token:o,algorithm:s="sha1",digits:n=6,crypto:i,base32:a,counterTolerance:c=0,guardrails:h=x(),hooks:u}=e,l=(I(t),C(i),S(t,a)),d=(A(l,h),pe(r,h),T(s,{supported:i.algorithms,plugin:i.name}));u?.validateToken?u.validateToken(o,n):be(o,n);var[e,p=v]=[c,h],[e,f]=we(e);if(!Number.isSafeInteger(e)||!Number.isSafeInteger(f))throw new g("Counter tolerance values must be safe integers");if(e<0||f<0)throw new J;if((e=e+f+1)>p.MAX_WINDOW)throw new V(p.MAX_WINDOW,e);var f="bigint"==typeof r?Number(r):r,[p,e]=we(c);return{token:o,counterNum:f,past:p,future:e,totalChecks:p+e+1,crypto:i,getGenerateOptions:e=>({secret:l,counter:e,algorithm:d,digits:n,crypto:i,guardrails:h,hooks:u})}}async function Ne(e){var{token:t,counterNum:r,past:o,totalChecks:s,crypto:n,getGenerateOptions:i}=Re(e);for(let e=Math.max(0,o-r);e<s;e++){var a=e-o,c=await u(i(r+a));if(n.constantTimeEqual(c,t))return{valid:!0,delta:0|a}}return{valid:!1}}function Ue(e){var{secret:e,epoch:t=Math.floor(Date.now()/1e3),t0:r=0,period:o=30,algorithm:s="sha1",digits:n=6,crypto:i,base32:a,guardrails:c=x(),hooks:h}=e,e=(I(e),C(i),S(e,a)),a=(A(e,c),fe(t),ge(o,c),T(s,{supported:i.algorithms,plugin:i.name}));return{secret:e,counter:Math.floor((t-r)/o),algorithm:a,digits:n,crypto:i,guardrails:c,hooks:h}}async function De(e){return u(Ue(e))}function Le(e){return Be(Ue(e))}function He(e,t){return void 0!==t&&e<=t}function Pe(e){let{secret:t,token:r,epoch:o=Math.floor(Date.now()/1e3),t0:s=0,period:n=30,algorithm:i="sha1",digits:a=6,crypto:c,base32:h,epochTolerance:u=0,afterTimeStep:l,guardrails:d=x(),hooks:p}=e,f=(I(t),C(c),S(t,h)),g=(A(f,d),fe(o),ge(n,d),T(i,{supported:c.algorithms,plugin:c.name}));p?.validateToken?p.validateToken(r,a):be(r,a);var[e,b=30,y=v]=[u,n,d],[e,m]=Array.isArray(e)?e:[e,e];if(!Number.isSafeInteger(e)||!Number.isSafeInteger(m))throw new w("Epoch tolerance values must be safe integers");if(e<0||m<0)throw new K;if((y=(y.MAX_WINDOW-1)*b)<(b=e+m))throw new Q(y,b);var e=Math.floor((o-s)/n),[y,b]=([m=0]=[u],Array.isArray(m)?m:[m,m]),m=Math.max(0,Math.floor((o-y-s)/n)),y=Math.floor((o+b-s)/n),b=l,E=y;if(void 0!==b){if(b<0)throw new ne;if(!Number.isSafeInteger(b))throw new ie;if(E<b)throw new ae}return{token:r,crypto:c,minCounter:m,maxCounter:y,currentCounter:e,t0:s,period:n,afterTimeStep:l,getGenerateOptions:e=>({secret:f,epoch:e*n+s,t0:s,period:n,algorithm:g,digits:a,crypto:c,guardrails:d,hooks:p})}}async function Xe(t){var{token:r,crypto:o,minCounter:t,maxCounter:s,currentCounter:n,t0:i,period:a,afterTimeStep:c,getGenerateOptions:h}=Pe(t);for(let e=t;e<=s;e++)if(!He(e,c)){var u=await De(h(e));if(o.constantTimeEqual(u,r))return{valid:!0,delta:e-n,epoch:e*a+i,timeStep:e}}return{valid:!1}}function Ge(e){if(!((e=e)instanceof Uint8Array||ArrayBuffer.isView(e)&&"Uint8Array"===e.constructor.name&&"BYTES_PER_ELEMENT"in e&&1===e.BYTES_PER_ELEMENT))throw TypeError("Uint8Array expected")}function je(e,t){if("string"!=typeof t)throw TypeError(e+": string expected")}function Fe(e,t="number"){if("number"!=typeof e)throw TypeError(t+": expected number, got "+typeof e);if(!Number.isSafeInteger(e))throw RangeError(t+": expected safe integer, got "+e)}let $e=(()=>{var t=[];for(let e=0;e<40;e++)t.push(2**e);return t})(),Ye=(()=>{try{var e=new TextDecoder;return"A0+"===e.decode(Uint8Array.of(65,48,43,127))?e:void 0}catch{}})(),We=8192;function qe(n,e){var t=n.length;if(128<t)throw Error("alphabet: max 128 letters");let a=new Uint8Array(t),i=new Int8Array(128).fill(-1);for(let e=0;e<t;e++){var r=n.charCodeAt(e);if(n.codePointAt(e)!==r||127<r)throw Error("alphabet: single-char ASCII letters only");a[e]=r,i[r]=e}if(void 0!==e)for(var o of Object.keys(e)){var s=o.charCodeAt(0),c=i[e[o].charCodeAt(0)];if(1!==o.length||127<s||void 0===c||-1===c)throw Error("alphabet: invalid alias "+o);i[s]=c}return{encode:t=>{var r=new Uint8Array(t.length);for(let e=0;e<t.length;e++){var o=t[e],s=a[o];if(void 0===s)throw Error("alphabet.encode: invalid digit "+o);r[e]=s}{var n=r,i=n.length;if(void 0!==Ye&&12<=i)return Ye.decode(n);if(i<=We)return String.fromCharCode.apply(null,n);let t="";for(let e=0;e<i;e+=We)t+=String.fromCharCode.apply(null,n.subarray(e,e+We));return t}},decode:t=>{je("decode",t);var r=t.length,o=new Uint8Array(r);for(let e=0;e<r;e++){var s=t.charCodeAt(e),s=s<128?i[s]:-1;if(-1===s)throw Error(`Unknown letter "${t[e]}". Allowed: `+n);o[e]=s}return o}}}o=()=>{return e=[(a=>{if(Fe(a),a<=0||8<a)throw RangeError("radix2: bits should be in (0..8]");let c=$e[a]-1;return{encode:t=>{Ge(t);let r=t.length,o=new Uint8Array(Math.ceil(8*r/a)),s=0,n=0,i=0;for(let e=0;e<r;)for(e+2<r?(s=s<<24|t[e]<<16|t[e+1]<<8|t[e+2],n+=24,e+=3):(s=65535&(s<<8|t[e]),n+=8,e++);n-=a,o[i++]=s>>n&c,!(n<a););return 0<n&&(o[i]=s<<a-n&c),o},decode:t=>{let r=t.length,o=new Uint8Array(Math.floor(r*a/8)),s=0,n=0,i=0;for(let e=0;e<r;e++)for(s=65535&(s<<a|t[e]),n+=a;8<=n;n-=8)o[i++]=s>>n-8&255;if(s=s<<8-n&255,n>=a)throw Error("Excess padding");if(0<s)throw Error("Non-zero padding: "+s);return o}}})(5),qe("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),(s="=",Fe(o=5),je("padding",s),{encode(e){for(;e.length*o%8;)e+=s;return e},decode(e){je("decode",e);let t=e.length;if(t*o%8)throw Error("padding: invalid length");for(;0<t&&e[t-1]===s;t--)if((t-1)*o%8==0)throw Error("padding: excess padding");return e.slice(0,t)}})],t=e=>e,r=(t,r)=>e=>t(r(e)),{encode:e.map(e=>e.encode).reduceRight(r,t),decode:e.map(e=>e.decode).reduce(r,t)};var e,t,r,o,s};let ze=Object.freeze(o()),Ve=class{name="scure";encode(e,t={}){var{padding:t=!1}=t,e=ze.encode(e);return t?e:e.replace(/=+$/,"")}decode(e){try{var t=e.toUpperCase(),r=t.padEnd(8*Math.ceil(t.length/8),"=");return ze.decode(r)}catch(e){throw Error("Invalid Base32 string: "+e.message)}}},Je=Object.freeze(new Ve);function Ke(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&"Uint8Array"===e.constructor.name&&"BYTES_PER_ELEMENT"in e&&1===e.BYTES_PER_ELEMENT}let Qe=e=>e?`"${e}" `:"";function l(e,t=""){if("number"!=typeof e)throw TypeError(Qe(t)+"expected number, got "+typeof e);if(!Number.isSafeInteger(e)||e<0)throw RangeError(Qe(t)+"expected integer >= 0, got "+e)}function Ze(e,t,r=""){var o;if(!Ke(e)||void 0!==t&&e.length!==t)throw void 0!==t&&l(t,"length"),t=void 0===t?"":" of length "+t,e=(o=Ke(e))?"length="+e.length:"type="+typeof e,r=Qe(r)+"expected Uint8Array"+t+", got "+e,(o?RangeError:TypeError)(r)}let et=(e,t)=>{if("object"!=typeof e||!e||Array.isArray(e))throw TypeError(("object"===t?"":`"${t}" `)+"expected object, got type="+typeof e)},tt=(e,t)=>{et(e,t);var r=Object.getPrototypeOf(e);if(r!==Object.prototype&&null!==r)throw TypeError(`"${t}" expected plain object`);if(Object.hasOwn(e,"__proto__"))throw TypeError(`"${t}.__proto__" is not allowed`)};function d(e,t=!0){if(e.destroyed)throw Error("hash was destroyed");if(t&&e.finished)throw Error("digest() was already called")}function rt(e,t){Ze(e,void 0,"output");t=t.outputLen;if(!(e.length>=t))throw RangeError('"output" expected length >= '+t)}function p(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function ot(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function b(e,t){return e<<32-t|e>>>t}function st(e,t){return e<<t|e>>>32-t>>>0}function nt(r,e={}){if("function"!=typeof r)throw TypeError('"hashCons" expected function, got type='+typeof r);s={},t=e,o="info",tt(s,"defaults"),void 0!==t&&tt(t,o),e=Object.assign(Object.create(null),s,t);var t,o=(e,t)=>r(t).update(e).digest(),s=r(void 0);return o.outputLen=s.outputLen,o.blockLen=s.blockLen,o.canXOF=s.canXOF,o.create=e=>r(e),Object.assign(o,e),Object.freeze(o)}var t=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])}),it=class{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,t){var r=e;if("function"!=typeof r||"function"!=typeof r.create)throw TypeError("expected hash wrapped by utils.createHasher");if(l(r.outputLen),l(r.blockLen),r.outputLen<1||r.blockLen<1)throw Error("hash blockLen / outputLen must be >= 1");if(Ze(t,void 0,"key"),this.iHash=e.create(),"function"!=typeof this.iHash.update)throw Error("expected Hash instance");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;var r=this.blockLen,o=new Uint8Array(r);o.set(t.length>r?e.create().update(t).digest():t);for(let e=0;e<o.length;e++)o[e]^=54;this.iHash.update(o),this.oHash=e.create();for(let e=0;e<o.length;e++)o[e]^=106;this.oHash.update(o),p(o)}update(e){return d(this),this.iHash.update(e),this}digestInto(e){d(this),rt(e,this),this.finished=!0;e=e.subarray(0,this.outputLen);this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){var e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){var{oHash:t,iHash:r,finished:o,destroyed:s,blockLen:n,outputLen:i,canXOF:a}=this;return(e||=Object.create(Object.getPrototypeOf(this),{})).finished=o,e.destroyed=s,e.blockLen=n,e.outputLen=i,e.canXOF=a,e.oHash=t._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}};(o=(e,t,r)=>new it(e,t).update(r).digest()).create=(e,t)=>new it(e,t);let at=o,f=BigInt(2**32-1),ct=BigInt(32),ht=(e,t,r)=>e<<32-r|t>>>r,B=(e,t,r)=>e>>>r|t<<32-r,R=(e,t,r)=>e<<32-r|t>>>r,N=(e,t,r)=>e<<64-r|t>>>r-32,U=(e,t,r)=>e>>>r-32|t<<64-r;function D(e,t,r,o){t=(t>>>0)+(o>>>0);return{h:e+r+(t/2**32|0)|0,l:0|t}}function ut(e,t,r){return e&t^~e&r}function lt(e,t,r){return e&t^e&r^t&r}let dt=class{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,r,o){this.blockLen=e,this.outputLen=t,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(e),this.view=ot(this.buffer)}update(t){d(this),Ze(t);let{view:r,buffer:o,blockLen:s}=this,n=t.length,i=!1;for(let e=0;e<n;){var a=Math.min(s-this.pos,n-e);if(a===s){for(var c=ot(t);s<=n-e;e+=s)this.process(c,e);i=!0}else o.set(0===e&&a===n?t:t.subarray(e,e+a),this.pos),this.pos+=a,e+=a,this.pos===s&&(this.process(r,0),this.pos=0,i=!0)}return this.length+=t.length,i&&this.roundClean(),this}digestInto(e){d(this),rt(e,this),this.finished=!0;var t,r,o,{buffer:s,view:n,blockLen:i,isLE:a}=this,c=this.pos,h=(s[c++]=128,s.fill(0,c),this.padOffset>i-c&&(this.process(n,0),s.fill(0)),c=n,i=i-8,t=8*this.length,r=a,o=t/2**32|0,t>>>=0,c.setUint32(i,r?t:o,r),c.setUint32(i+4,r?o:t,r),this.process(n,0),this.roundClean(),e===s?n:ot(e)),c=this.outputLen,u=c/4,l=this.get();if(c%4||u>l.length)throw Error("invalid outputLen");for(let e=0;e<u;e++)h.setUint32(4*e,l[e],a)}digest(){var{buffer:e,outputLen:t}=this,e=(this.digestInto(e),e.slice(0,t));return this.destroy(),e}_cloneIntoMeta(e){var{buffer:t,length:r,finished:o,destroyed:s,pos:n}=this;return e.destroyed=s,e.finished=o,e.length=r,(e.pos=n)&&e.buffer.set(t),e}clone(){return this._cloneInto()}},pt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ft=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),y=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),m=new Uint32Array(80);var gt=class extends dt{A=0|y[0];B=0|y[1];C=0|y[2];D=0|y[3];E=0|y[4];constructor(){super(64,20,8,!1)}get(){var{A:e,B:t,C:r,D:o,E:s}=this;return[e,t,r,o,s]}set(e,t,r,o,s){this.A=0|e,this.B=0|t,this.C=0|r,this.D=0|o,this.E=0|s}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(t,r){for(let e=0;e<16;e++,r+=4)m[e]=t.getUint32(r,!1);for(let e=16;e<80;e++)m[e]=st(m[e-3]^m[e-8]^m[e-14]^m[e-16],1);let{A:o,B:s,C:n,D:i,E:a}=this;for(let r=0;r<80;r++){let e,t;t=r<20?(e=ut(s,n,i),1518500249):r<40?(e=s^n^i,1859775393):r<60?(e=lt(s,n,i),2400959708):(e=s^n^i,3395469782);var c=st(o,5)+e+a+t+m[r]|0;a=i,i=n,n=st(s,30),s=o,o=c}o=o+this.A|0,s=s+this.B|0,n=n+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(o,s,n,i,a)}roundClean(){p(m)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0),p(this.buffer)}};let bt=nt(()=>new gt),yt=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),E=new Uint32Array(64);var o=class extends dt{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(e,t){super(64,e,8,!1),this.A=0|t[0],this.B=0|t[1],this.C=0|t[2],this.D=0|t[3],this.E=0|t[4],this.F=0|t[5],this.G=0|t[6],this.H=0|t[7]}get(){var{A:e,B:t,C:r,D:o,E:s,F:n,G:i,H:a}=this;return[e,t,r,o,s,n,i,a]}set(e,t,r,o,s,n,i,a){this.A=0|e,this.B=0|t,this.C=0|r,this.D=0|o,this.E=0|s,this.F=0|n,this.G=0|i,this.H=0|a}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(t,r){for(let e=0;e<16;e++,r+=4)E[e]=t.getUint32(r,!1);for(let e=16;e<64;e++){var o=E[e-15],s=E[e-2],o=b(o,7)^b(o,18)^o>>>3,s=b(s,17)^b(s,19)^s>>>10;E[e]=s+E[e-7]+o+E[e-16]|0}let{A:n,B:i,C:a,D:c,E:h,F:u,G:l,H:d}=this;for(let e=0;e<64;e++){var p=b(h,6)^b(h,11)^b(h,25),p=d+p+ut(h,u,l)+yt[e]+E[e]|0,f=(b(n,2)^b(n,13)^b(n,22))+lt(n,i,a)|0;d=l,l=u,u=h,h=c+p|0,c=a,a=i,i=n,n=p+f|0}n=n+this.A|0,i=i+this.B|0,a=a+this.C|0,c=c+this.D|0,h=h+this.E|0,u=u+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(n,i,a,c,h,u,l,d)}roundClean(){p(E)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),p(this.buffer)}},mt=class extends o{constructor(){super(32,pt)}};let Et=((t,r=!1)=>{var o=t.length,s=new Uint32Array(o),n=new Uint32Array(o);for(let e=0;e<o;e++){[a,i=!1]=[t[e],r];var{h:i,l:a}=i?{h:Number(a&f),l:Number(a>>ct&f)}:{h:0|Number(a>>ct&f),l:0|Number(a&f)};[s[e],n[e]]=[i,a]}return[s,n]})("0x428a2f98d728ae22.0x7137449123ef65cd.0xb5c0fbcfec4d3b2f.0xe9b5dba58189dbbc.0x3956c25bf348b538.0x59f111f1b605d019.0x923f82a4af194f9b.0xab1c5ed5da6d8118.0xd807aa98a3030242.0x12835b0145706fbe.0x243185be4ee4b28c.0x550c7dc3d5ffb4e2.0x72be5d74f27b896f.0x80deb1fe3b1696b1.0x9bdc06a725c71235.0xc19bf174cf692694.0xe49b69c19ef14ad2.0xefbe4786384f25e3.0x0fc19dc68b8cd5b5.0x240ca1cc77ac9c65.0x2de92c6f592b0275.0x4a7484aa6ea6e483.0x5cb0a9dcbd41fbd4.0x76f988da831153b5.0x983e5152ee66dfab.0xa831c66d2db43210.0xb00327c898fb213f.0xbf597fc7beef0ee4.0xc6e00bf33da88fc2.0xd5a79147930aa725.0x06ca6351e003826f.0x142929670a0e6e70.0x27b70a8546d22ffc.0x2e1b21385c26c926.0x4d2c6dfc5ac42aed.0x53380d139d95b3df.0x650a73548baf63de.0x766a0abb3c77b2a8.0x81c2c92e47edaee6.0x92722c851482353b.0xa2bfe8a14cf10364.0xa81a664bbc423001.0xc24b8b70d0f89791.0xc76c51a30654be30.0xd192e819d6ef5218.0xd69906245565a910.0xf40e35855771202a.0x106aa07032bbd1b8.0x19a4c116b8d2d0c8.0x1e376c085141ab53.0x2748774cdf8eeb99.0x34b0bcb5e19b48a8.0x391c0cb3c5c95a63.0x4ed8aa4ae3418acb.0x5b9cca4f7763e373.0x682e6ff3d6b2b8a3.0x748f82ee5defb2fc.0x78a5636f43172f60.0x84c87814a1f0ab72.0x8cc702081a6439ec.0x90befffa23631e28.0xa4506cebde82bde9.0xbef9a3f7b2c67915.0xc67178f2e372532b.0xca273eceea26619c.0xd186b8c721c0c207.0xeada7dd6cde0eb1e.0xf57d4f7fee6ed178.0x06f067aa72176fba.0x0a637dc5a2c898a6.0x113f9804bef90dae.0x1b710b35131c471b.0x28db77f523047d84.0x32caab7b40c72493.0x3c9ebe0a15c9bebc.0x431d67c49c100d4c.0x4cc5d4becb3e42b6.0x597f299cfc657e2a.0x5fcb6fab3ad6faec.0x6c44198c4a475817".split(".").map(e=>BigInt(e))),wt=Et[0],vt=Et[1],L=new Uint32Array(80),H=new Uint32Array(80);var o=class extends dt{Ah=0;Al=0;Bh=0;Bl=0;Ch=0;Cl=0;Dh=0;Dl=0;Eh=0;El=0;Fh=0;Fl=0;Gh=0;Gl=0;Hh=0;Hl=0;constructor(e,t){super(128,e,16,!1),this.Ah=0|t[0],this.Al=0|t[1],this.Bh=0|t[2],this.Bl=0|t[3],this.Ch=0|t[4],this.Cl=0|t[5],this.Dh=0|t[6],this.Dl=0|t[7],this.Eh=0|t[8],this.El=0|t[9],this.Fh=0|t[10],this.Fl=0|t[11],this.Gh=0|t[12],this.Gl=0|t[13],this.Hh=0|t[14],this.Hl=0|t[15]}get(){var{Ah:e,Al:t,Bh:r,Bl:o,Ch:s,Cl:n,Dh:i,Dl:a,Eh:c,El:h,Fh:u,Fl:l,Gh:d,Gl:p,Hh:f,Hl:g}=this;return[e,t,r,o,s,n,i,a,c,h,u,l,d,p,f,g]}set(e,t,r,o,s,n,i,a,c,h,u,l,d,p,f,g){this.Ah=0|e,this.Al=0|t,this.Bh=0|r,this.Bl=0|o,this.Ch=0|s,this.Cl=0|n,this.Dh=0|i,this.Dl=0|a,this.Eh=0|c,this.El=0|h,this.Fh=0|u,this.Fl=0|l,this.Gh=0|d,this.Gl=0|p,this.Hh=0|f,this.Hl=0|g}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(t,r){for(let e=0;e<16;e++,r+=4)L[e]=t.getUint32(r),H[e]=t.getUint32(r+=4);for(let e=16;e<80;e++){var o=0|L[e-15],s=0|H[e-15],n=B(o,s,1)^B(o,s,8)^o>>>7,o=R(o,s,1)^R(o,s,8)^ht(o,s,7),s=0|L[e-2],i=0|H[e-2],a=B(s,i,19)^N(s,i,61)^s>>>6,o=(o>>>0)+((R(s,i,19)^U(s,i,61)^ht(s,i,6))>>>0)+(H[e-7]>>>0)+(H[e-16]>>>0),i=(s=o,i=n,n=a,a=L[e-7],c=L[e-16],i+n+a+c+(s/2**32|0)|0);L[e]=0|i,H[e]=0|o}var c;let{Ah:h,Al:u,Bh:l,Bl:d,Ch:p,Cl:f,Dh:g,Dl:b,Eh:y,El:m,Fh:E,Fl:w,Gh:v,Gl:x,Hh:T,Hl:A}=this;for(let e=0;e<80;e++){var S=B(y,m,14)^B(y,m,18)^N(y,m,41),C=R(y,m,14)^R(y,m,18)^U(y,m,41),I=y&E^~y&v,_=m&w^~m&x,C=(A>>>0)+(C>>>0)+(_>>>0)+(vt[e]>>>0)+(H[e]>>>0),k=(_=C,k=T,S=S,I=I,M=wt[e],O=L[e],k+S+I+M+O+(_/2**32|0)|0),S=0|C,I=B(h,u,28)^N(h,u,34)^N(h,u,39),M=R(h,u,28)^U(h,u,34)^U(h,u,39),O=h&l^h&p^l&p,_=u&d^u&f^d&f,C=(T=0|v,A=0|x,v=0|E,x=0|w,E=0|y,w=0|m,{h:y,l:m}=D(0|g,0|b,0|k,0|S),g=0|p,b=0|f,p=0|l,f=0|d,l=0|h,d=0|u,(S>>>0)+(M>>>0)+(_>>>0));h=k+I+O+(C/2**32|0)|0,u=0|C}({h,l:u}=D(0|this.Ah,0|this.Al,0|h,0|u)),{h:l,l:d}=D(0|this.Bh,0|this.Bl,0|l,0|d),{h:p,l:f}=D(0|this.Ch,0|this.Cl,0|p,0|f),{h:g,l:b}=D(0|this.Dh,0|this.Dl,0|g,0|b),{h:y,l:m}=D(0|this.Eh,0|this.El,0|y,0|m),{h:E,l:w}=D(0|this.Fh,0|this.Fl,0|E,0|w),{h:v,l:x}=D(0|this.Gh,0|this.Gl,0|v,0|x),{h:T,l:A}=D(0|this.Hh,0|this.Hl,0|T,0|A),this.set(h,u,l,d,p,f,g,b,y,m,E,w,v,x,T,A)}roundClean(){p(L,H)}destroy(){this.destroyed=!0,p(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},xt=class extends o{constructor(){super(64,ft)}};let Tt={sha1:bt,sha256:nt(()=>new mt,t(1)),sha512:nt(()=>new xt,t(3))},At=Object.freeze(Object.keys(Tt)),St=class{name="noble";algorithms=At;hmac(e,t,r){e=T(e,{supported:this.algorithms,plugin:this.name});return at(Tt[e],t,r)}randomBytes(e){var[e=32]=[e],t=(l(e,"bytesLength"),"object"==typeof globalThis?globalThis.crypto:null);if("function"!=typeof t?.getRandomValues)throw Error("crypto.getRandomValues must be defined");if(65536<e)throw RangeError('"bytesLength" expected <= 65536, got '+e);return t.getRandomValues(new Uint8Array(e))}constantTimeEqual(e,r){{var o=Ee(e),s=Ee(r);if(o.length!==s.length)return!1;let t=0;for(let e=0;e<o.length;e++)t|=o[e]^s[e];return 0===t}}},Ct=Object.freeze(new St);function It(e){return{secret:e.secret,strategy:e.strategy??"totp",crypto:e.crypto??Ct,base32:e.base32??Je,algorithm:e.algorithm??"sha1",digits:e.digits??6,period:e.period??30,epoch:e.epoch??Math.floor(Date.now()/1e3),t0:e.t0??0,counter:e.counter,guardrails:e.guardrails??x(),hooks:e.hooks}}function _t(e){return{...It(e),token:e.token,epochTolerance:e.epochTolerance??0,counterTolerance:e.counterTolerance??0,afterTimeStep:e.afterTimeStep}}function _(e,t,r){if("totp"===e)return r.totp();if("hotp"!==e)throw new s(`Unknown OTP strategy: ${e}. Valid strategies are 'totp' or 'hotp'.`);if(void 0===t)throw new s("Counter is required for HOTP strategy. Example: { strategy: 'hotp', counter: 0 }");return r.hotp(t)}function kt(e){let{strategy:t="totp",issuer:r,label:o,secret:s,algorithm:n="sha1",digits:i=6,period:a=30,counter:c}=e;return _(t,c,{totp:()=>ke({issuer:r,label:o,secret:s,algorithm:n,digits:i,period:a}),hotp:e=>Me({issuer:r,label:o,secret:s,algorithm:n,digits:i,counter:e})})}async function Mt(e){let t=It(e),{secret:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a}=t,c={secret:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a};return _(t.strategy,t.counter,{totp:()=>De({...c,period:t.period,epoch:t.epoch,t0:t.t0,guardrails:t.guardrails}),hotp:e=>u({...c,counter:e,guardrails:t.guardrails})})}function Ot(e){let t=It(e),{secret:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a}=t,c={secret:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a};return _(t.strategy,t.counter,{totp:()=>Le({...c,period:t.period,epoch:t.epoch,t0:t.t0,guardrails:t.guardrails}),hotp:e=>Be({...c,counter:e,guardrails:t.guardrails})})}async function Bt(e){let t=_t(e),{secret:r,token:o,crypto:s,base32:n,algorithm:i,digits:a,hooks:c}=t,h={secret:r,token:o,crypto:s,base32:n,algorithm:i,digits:a,hooks:c};return _(t.strategy,t.counter,{totp:()=>Xe({...h,period:t.period,epoch:t.epoch,t0:t.t0,epochTolerance:t.epochTolerance,afterTimeStep:t.afterTimeStep,guardrails:t.guardrails}),hotp:e=>Ne({...h,counter:e,counterTolerance:t.counterTolerance,guardrails:t.guardrails})})}function Rt(e){let l=_t(e),{secret:t,token:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a}=l,d={secret:t,token:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a};return _(l.strategy,l.counter,{totp:()=>{var{token:t,crypto:r,minCounter:o,maxCounter:s,currentCounter:n,t0:i,period:a,afterTimeStep:c,getGenerateOptions:h}=Pe(o={...d,period:l.period,epoch:l.epoch,t0:l.t0,epochTolerance:l.epochTolerance,afterTimeStep:l.afterTimeStep,guardrails:l.guardrails});for(let e=o;e<=s;e++)if(!He(e,c)){var u=Le(h(e));if(r.constantTimeEqual(u,t))return{valid:!0,delta:e-n,epoch:e*a+i,timeStep:e}}return{valid:!1}},hotp:e=>{var{token:t,counterNum:r,past:o,totalChecks:s,crypto:n,getGenerateOptions:i}=Re({...d,counter:e,counterTolerance:l.counterTolerance,guardrails:l.guardrails});for(let e=Math.max(0,o-r);e<s;e++){var a=e-o,c=Be(i(r+a));if(n.constantTimeEqual(c,t))return{valid:!0,delta:0|a}}return{valid:!1}}})}return e.AlgorithmError=r,e.AlgorithmUnsupportedError=Y,e.HMACError=n,e.HOTP=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=x(e.guardrails)}generateSecret(){var{crypto:e,base32:t}=this.options;return C(e),c(t),a({crypto:e,base32:t})}async generate(e,t){var r={...this.options,...t},{secret:o,crypto:s,base32:n,algorithm:i="sha1",digits:a=6}=r;return I(o),C(s),u({secret:o,counter:e,algorithm:i,digits:a,crypto:s,base32:n,guardrails:t?.guardrails??this.guardrails,hooks:r.hooks})}async verify(e,t){var r={...this.options,...t},{secret:o,crypto:s,base32:n,algorithm:i="sha1",digits:a=6,counterTolerance:c=0}=r,t=(I(o),C(s),t?.guardrails??this.guardrails);return Ne({secret:o,token:e.token,counter:e.counter,algorithm:i,digits:a,counterTolerance:c,crypto:s,base32:n,guardrails:t,hooks:r.hooks})}toURI(e=0){var{issuer:t,label:r,secret:o,algorithm:s="sha1",digits:n=6}=this.options;return I(o),ve(r),xe(t),Te(o),Me({issuer:t,label:r,secret:o,algorithm:s,digits:n,counter:e})}},e.NobleCryptoPlugin=St,e.OTP=class{strategy;crypto;base32;guardrails;constructor(e={}){var{strategy:e="totp",crypto:t=Ct,base32:r=Je,guardrails:o}=e;this.strategy=e,this.crypto=t,this.base32=r,this.guardrails=x(o)}getStrategy(){return this.strategy}generateSecret(e=20){return a({crypto:this.crypto,base32:this.base32,length:e})}async generate(e){return Mt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateSync(e){return Ot({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}async verify(e){return Bt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}verifySync(e){return Rt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateURI(e){return kt({...e,strategy:this.strategy})}},e.ScureBase32Plugin=Ve,e.TOTP=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=x(e.guardrails)}generateSecret(){var{crypto:e,base32:t}=this.options;return C(e),c(t),a({crypto:e,base32:t})}async generate(e){var t={...this.options,...e},{secret:r,crypto:o,base32:s,algorithm:n="sha1",digits:i=6,period:a=30,epoch:c,t0:h=0}=t,e=(I(r),C(o),e?.guardrails??this.guardrails);return De({secret:r,algorithm:n,digits:i,period:a,epoch:c??Math.floor(Date.now()/1e3),t0:h,crypto:o,base32:s,guardrails:e,hooks:t.hooks})}async verify(e,t){var r={...this.options,...t},{secret:o,crypto:s,base32:n,algorithm:i="sha1",digits:a=6,period:c=30,epoch:h,t0:u=0,epochTolerance:l=0,afterTimeStep:d}=r,t=(I(o),C(s),t?.guardrails??this.guardrails);return Xe({secret:o,token:e,algorithm:i,digits:a,period:c,epoch:h??Math.floor(Date.now()/1e3),t0:u,epochTolerance:l,afterTimeStep:d,crypto:s,base32:n,guardrails:t,hooks:r.hooks})}toURI(e){var{issuer:t,label:r,secret:o,algorithm:s="sha1",digits:n=6,period:i=30}=this.options,r=e?.label??r,t=e?.issuer??t,e=e?.secret??o;return I(e),ve(r),xe(t),Te(e),ke({issuer:t,label:r,secret:e,algorithm:s,digits:n,period:i})}},e.createGuardrails=x,e.generate=Mt,e.generateSecret=function(e){var{crypto:e=Ct,base32:t=Je,length:r=20}=e||{};return a({crypto:e,base32:t,length:r})},e.generateSync=Ot,e.generateURI=kt,e.stringToBytes=Ee,e.verify=Bt,e.verifySync=Rt,e.wrapResult=function(t){return(...e)=>{try{return Ae(t(...e))}catch(e){return Se(e)}}},e.wrapResultAsync=function(t){return async(...e)=>{try{return Ae(await t(...e))}catch(e){return Se(e)}}},e})({});
@@ -1,7 +1,4 @@
1
- "use strict";var otplib=(()=>{var Ut=Object.defineProperty;var Wr=Object.getOwnPropertyDescriptor;var Xr=Object.getOwnPropertyNames;var Yr=Object.prototype.hasOwnProperty;var Kr=(t,e)=>{for(var r in e)Ut(t,r,{get:e[r],enumerable:!0})},Jr=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Xr(e))!Yr.call(t,o)&&o!==r&&Ut(t,o,{get:()=>e[o],enumerable:!(n=Wr(e,o))||n.enumerable});return t};var Qr=t=>Jr(Ut({},"__esModule",{value:!0}),t);var yn={};Kr(yn,{AlgorithmError:()=>ee,AlgorithmUnsupportedError:()=>V,HMACError:()=>U,HOTP:()=>je,NobleCryptoPlugin:()=>Ze,OTP:()=>Ht,ScureBase32Plugin:()=>We,TOTP:()=>Fe,createGuardrails:()=>y,generate:()=>At,generateSecret:()=>Fr,generateSync:()=>Pt,generateURI:()=>wt,stringToBytes:()=>ke,verify:()=>St,verifySync:()=>Ct,wrapResult:()=>Nt,wrapResultAsync:()=>Vt});var T=class extends Error{constructor(e,r){super(e,r),this.name="OTPError"}},ie=class extends T{constructor(e){super(e),this.name="SecretError"}},ae=class extends ie{constructor(e,r){super(`Secret must be at least ${e} bytes (${e*8} bits), got ${r} bytes`),this.name="SecretTooShortError"}},ce=class extends ie{constructor(e,r){super(`Secret must not exceed ${e} bytes, got ${r} bytes`),this.name="SecretTooLongError"}},Q=class extends T{constructor(e){super(e),this.name="CounterError"}},ue=class extends Q{constructor(){super("Counter must be non-negative"),this.name="CounterNegativeError"}},Z=class extends Q{constructor(){super("Counter exceeds maximum safe integer value"),this.name="CounterOverflowError"}},le=class extends Q{constructor(){super("Counter must be a finite integer"),this.name="CounterNotIntegerError"}},pe=class extends T{constructor(e){super(e),this.name="TimeError"}},fe=class extends pe{constructor(){super("Time must be non-negative"),this.name="TimeNegativeError"}},he=class extends pe{constructor(){super("Time must be a finite number"),this.name="TimeNotFiniteError"}},de=class extends T{constructor(e){super(e),this.name="PeriodError"}},ge=class extends de{constructor(e){super(`Period must be at least ${e} second(s)`),this.name="PeriodTooSmallError"}},xe=class extends de{constructor(e){super(`Period must not exceed ${e} seconds`),this.name="PeriodTooLargeError"}};var ee=class extends T{constructor(e){super(e),this.name="AlgorithmError"}},V=class extends ee{constructor(e,r={}){let{supported:n,plugin:o}=r;super("Unsupported hash algorithm."+(n?` Expected one of: ${n.join(", ")||"(none)"}`:"")+(o?` [plugin: ${o}]`:"")),this.name="AlgorithmUnsupportedError"}},me=class extends T{constructor(e){super(e),this.name="TokenError"}},ye=class extends me{constructor(e,r){super(`Token must be ${e} digits, got ${r}`),this.name="TokenLengthError"}},be=class extends me{constructor(){super("Token must contain only digits"),this.name="TokenFormatError"}},Te=class extends T{constructor(e,r){super(e,r),this.name="CryptoError"}},U=class extends Te{constructor(e,r){super(`HMAC computation failed: ${e}`,r),this.name="HMACError"}},Oe=class extends Te{constructor(e,r){super(`Random byte generation failed: ${e}`,r),this.name="RandomBytesError"}};var $=class extends T{constructor(e){super(e),this.name="CounterToleranceError"}},Ee=class extends ${constructor(e,r){super(`Counter tolerance validation failed: total checks (${r}) exceeds MAX_WINDOW (${e})`),this.name="CounterToleranceTooLargeError"}},we=class extends ${constructor(){super("Counter tolerance cannot contain negative values"),this.name="CounterToleranceNegativeError"}},j=class extends T{constructor(e){super(e),this.name="EpochToleranceError"}},Ae=class extends j{constructor(){super("Epoch tolerance cannot contain negative values"),this.name="EpochToleranceNegativeError"}},Pe=class extends j{constructor(e,r){super(`Epoch tolerance must not exceed ${e} seconds, got ${r}. Large tolerances can cause performance issues.`),this.name="EpochToleranceTooLargeError"}},Se=class extends T{constructor(e){super(e),this.name="PluginError"}},Ce=class extends Se{constructor(){super("Crypto plugin is required."),this.name="CryptoPluginMissingError"}},He=class extends Se{constructor(){super("Base32 plugin is required."),this.name="Base32PluginMissingError"}},O=class extends T{constructor(e){super(e),this.name="ConfigurationError"}},Re=class extends O{constructor(){super("Secret is required. Use generateSecret() to create one, or provide via { secret: 'YOUR_BASE32_SECRET' }"),this.name="SecretMissingError"}},Ie=class extends O{constructor(){super("Label is required for URI generation. Example: { label: 'user@example.com' }"),this.name="LabelMissingError"}},Be=class extends O{constructor(){super("Issuer is required for URI generation. Example: { issuer: 'MyApp' }"),this.name="IssuerMissingError"}},_e=class extends O{constructor(){super("Class API requires secret to be a Base32 string, not Uint8Array. Use generateSecret() or provide a Base32-encoded string."),this.name="SecretTypeError"}},te=class extends T{constructor(e){super(e),this.name="AfterTimeStepError"}},Ue=class extends te{constructor(){super("afterTimeStep must be >= 0"),this.name="AfterTimeStepNegativeError"}},ve=class extends te{constructor(){super("Invalid afterTimeStep: non-integer value"),this.name="AfterTimeStepNotIntegerError"}},Le=class extends te{constructor(){super("Invalid afterTimeStep: cannot be greater than current time step plus window"),this.name="AfterTimeStepRangeExceededError"}};var Zr=new TextEncoder,wn=new TextDecoder,ir=16,ar=64,cr=20,ur=1,lr=3600,pr=30,fr=Number.MAX_SAFE_INTEGER,hr=99,dr=Symbol("otplib.guardrails.override");function re(t,e,r){if(typeof e!="number"||!Number.isSafeInteger(e))throw new O(`Guardrail '${t}' must be a safe integer`);if(e<r)throw new O(`Guardrail '${t}' must be >= ${r}`)}var z=Object.freeze({MIN_SECRET_BYTES:ir,MAX_SECRET_BYTES:ar,MIN_PERIOD:ur,MAX_PERIOD:lr,MAX_COUNTER:fr,MAX_WINDOW:hr,[dr]:!1});function y(t){if(!t)return z;t.MIN_SECRET_BYTES!==void 0&&re("MIN_SECRET_BYTES",t.MIN_SECRET_BYTES,1),t.MAX_SECRET_BYTES!==void 0&&re("MAX_SECRET_BYTES",t.MAX_SECRET_BYTES,1),t.MIN_PERIOD!==void 0&&re("MIN_PERIOD",t.MIN_PERIOD,1),t.MAX_PERIOD!==void 0&&re("MAX_PERIOD",t.MAX_PERIOD,1),t.MAX_COUNTER!==void 0&&re("MAX_COUNTER",t.MAX_COUNTER,0),t.MAX_WINDOW!==void 0&&re("MAX_WINDOW",t.MAX_WINDOW,1);let e={...z,...t};if(e.MIN_SECRET_BYTES>e.MAX_SECRET_BYTES)throw new O("Guardrail 'MIN_SECRET_BYTES' must be <= 'MAX_SECRET_BYTES'");if(e.MIN_PERIOD>e.MAX_PERIOD)throw new O("Guardrail 'MIN_PERIOD' must be <= 'MAX_PERIOD'");return Object.freeze({...e,[dr]:!0})}var gr={sha1:["sha1","sha-1","sha_1"],sha256:["sha256","sha-256","sha_256"],sha512:["sha512","sha-512","sha_512"]},vt=Object.freeze(Object.keys(gr)),en=new Map(Object.entries(gr).flatMap(([t,e])=>e.map(r=>[r,t])));function A(t,e={}){let{supported:r,plugin:n}=e,o=r===void 0?vt:vt.filter(s=>r.includes(s));if(typeof t=="string"){let s=en.get(t.toLowerCase());if(s!==void 0&&o.includes(s))return s}throw new V(t,{supported:o,plugin:n})}function F(t,e=z){if(t.length<e.MIN_SECRET_BYTES)throw new ae(e.MIN_SECRET_BYTES,t.length);if(t.length>e.MAX_SECRET_BYTES)throw new ce(e.MAX_SECRET_BYTES,t.length)}function nt(t,e=z){if(typeof t=="number"){if(!Number.isFinite(t)||!Number.isInteger(t))throw new le;if(!Number.isSafeInteger(t))throw new Z}let r=typeof t=="bigint"?t:BigInt(t);if(r<0n)throw new ue;if(r>BigInt(e.MAX_COUNTER))throw new Z}function ot(t){if(!Number.isFinite(t))throw new he;if(t<0)throw new fe}function st(t,e=z){if(!Number.isInteger(t)||t<e.MIN_PERIOD)throw new ge(e.MIN_PERIOD);if(t>e.MAX_PERIOD)throw new xe(e.MAX_PERIOD)}function Me(t,e){if(t.length!==e)throw new ye(e,t.length);if(!/^\d+$/.test(t))throw new be}function Lt(t,e=z){let[r,n]=ct(t);if(!Number.isSafeInteger(r)||!Number.isSafeInteger(n))throw new $("Counter tolerance values must be safe integers");if(r<0||n<0)throw new we;let o=r+n+1;if(o>e.MAX_WINDOW)throw new Ee(e.MAX_WINDOW,o)}function kt(t,e=pr,r=z){let[n,o]=Array.isArray(t)?t:[t,t];if(!Number.isSafeInteger(n)||!Number.isSafeInteger(o))throw new j("Epoch tolerance values must be safe integers");if(n<0||o<0)throw new Ae;let s=(r.MAX_WINDOW-1)*e,i=n+o;if(i>s)throw new Pe(s,i)}function Mt(t){let e=typeof t=="bigint"?t:BigInt(t),r=new ArrayBuffer(8);return new DataView(r).setBigUint64(0,e,!1),new Uint8Array(r)}function it(t){let e=t[t.length-1]&15;return(t[e]&127)<<24|t[e+1]<<16|t[e+2]<<8|t[e+3]}function at(t,e){let r=10**e;return(t%r).toString().padStart(e,"0")}function xr(t,e){return t.length===e.length}function Dt(t,e){let r=ke(t),n=ke(e);if(!xr(r,n))return!1;let o=0;for(let s=0;s<r.length;s++)o|=r[s]^n[s];return o===0}function ke(t){return typeof t=="string"?Zr.encode(t):t}function q(t,e){return typeof t=="string"?(W(e),e.decode(t)):t}function v(t){let{crypto:e,base32:r,length:n=cr}=t;b(e),W(r);let o=e.randomBytes(n);return r.encode(o,{padding:!1})}function ct(t=0){return Array.isArray(t)?t:[0,t]}function Gt(t=0){return Array.isArray(t)?t:[t,t]}function b(t){if(!t)throw new Ce}function W(t){if(!t)throw new He}function E(t){if(!t)throw new Re}function De(t){if(!t)throw new Ie}function Ge(t){if(!t)throw new Be}function Ne(t){if(typeof t!="string")throw new _e}function mr(t){return{ok:!0,value:t}}function yr(t){return{ok:!1,error:t}}function Nt(t){return(...e)=>{try{return mr(t(...e))}catch(r){return yr(r)}}}function Vt(t){return async(...e)=>{try{return mr(await t(...e))}catch(r){return yr(r)}}}function tn(t){return typeof t.then=="function"}var ut=class{constructor(e){this.crypto=e}get plugin(){return this.crypto}normalize(e){return A(e,{supported:this.crypto.algorithms,plugin:this.crypto.name})}async hmac(e,r,n){let o=this.normalize(e);try{return await this.crypto.hmac(o,r,n)}catch(s){let i=s instanceof Error?s.message:String(s);throw new U(i,{cause:s})}}hmacSync(e,r,n){let o=this.normalize(e);try{let s=this.crypto.hmac(o,r,n);if(!tn(s))return s;Promise.resolve(s).catch(()=>{})}catch(s){let i=s instanceof Error?s.message:String(s);throw new U(i,{cause:s})}throw new U("Crypto plugin does not support synchronous HMAC operations")}randomBytes(e){try{return this.crypto.randomBytes(e)}catch(r){let n=r instanceof Error?r.message:String(r);throw new Oe(n,{cause:r})}}};function $t(t){return new ut(t)}function jt(t){let{type:e,label:r,params:n}=t,o=r.split(":").map(a=>encodeURIComponent(a)).join(":"),s=`otpauth://${e}/${o}?`,i=[];if(n.secret&&i.push(`secret=${encodeURIComponent(n.secret)}`),n.issuer&&i.push(`issuer=${encodeURIComponent(n.issuer)}`),n.algorithm){let a=A(n.algorithm);a!=="sha1"&&i.push(`algorithm=${a.toUpperCase()}`)}return n.digits&&n.digits!==6&&i.push(`digits=${n.digits}`),e==="hotp"&&n.counter!==void 0&&i.push(`counter=${n.counter}`),e==="totp"&&n.period!==void 0&&n.period!==30&&i.push(`period=${n.period}`),s+=i.join("&"),s}function Ve(t){let{issuer:e,label:r,secret:n,algorithm:o="sha1",digits:s=6,period:i=30}=t,a=e?`${e}:${r}`:r;return jt({type:"totp",label:a,params:{secret:n,issuer:e,algorithm:o,digits:s,period:i}})}function $e(t){let{issuer:e,label:r,secret:n,counter:o=0,algorithm:s="sha1",digits:i=6}=t,a=e?`${e}:${r}`:r;return jt({type:"hotp",label:a,params:{secret:n,issuer:e,algorithm:s,digits:i,counter:o}})}var je=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=y(e.guardrails)}generateSecret(){let{crypto:e,base32:r}=this.options;return b(e),W(r),v({crypto:e,base32:r})}async generate(e,r){let n={...this.options,...r},{secret:o,crypto:s,base32:i,algorithm:a="sha1",digits:c=6}=n;E(o),b(s);let u=r?.guardrails??this.guardrails;return X({secret:o,counter:e,algorithm:a,digits:c,crypto:s,base32:i,guardrails:u,hooks:n.hooks})}async verify(e,r){let n={...this.options,...r},{secret:o,crypto:s,base32:i,algorithm:a="sha1",digits:c=6,counterTolerance:u=0}=n;E(o),b(s);let l=r?.guardrails??this.guardrails;return lt({secret:o,token:e.token,counter:e.counter,algorithm:a,digits:c,counterTolerance:u,crypto:s,base32:i,guardrails:l,hooks:n.hooks})}toURI(e=0){let{issuer:r,label:n,secret:o,algorithm:s="sha1",digits:i=6}=this.options;return E(o),De(n),Ge(r),Ne(o),$e({issuer:r,label:n,secret:o,algorithm:s,digits:i,counter:e})}};function br(t){let{secret:e,counter:r,algorithm:n="sha1",digits:o=6,crypto:s,base32:i,guardrails:a,hooks:c}=t;E(e),b(s);let u=q(e,i);F(u,a),nt(r,a);let l=A(n,{supported:s.algorithms,plugin:s.name}),p=$t(s),f=Mt(r);return{ctx:p,algorithm:l,digits:o,secretBytes:u,counterBytes:f,hooks:c}}async function X(t){let{ctx:e,algorithm:r,digits:n,secretBytes:o,counterBytes:s,hooks:i}=br(t),a=await e.hmac(r,o,s),c=i?.truncateDigest?i.truncateDigest(a):it(a);return i?.encodeToken?i.encodeToken(c,n):at(c,n)}function ze(t){let{ctx:e,algorithm:r,digits:n,secretBytes:o,counterBytes:s,hooks:i}=br(t),a=e.hmacSync(r,o,s),c=i?.truncateDigest?i.truncateDigest(a):it(a);return i?.encodeToken?i.encodeToken(c,n):at(c,n)}function Tr(t){let{secret:e,counter:r,token:n,algorithm:o="sha1",digits:s=6,crypto:i,base32:a,counterTolerance:c=0,guardrails:u=y(),hooks:l}=t;E(e),b(i);let p=q(e,a);F(p,u),nt(r,u);let f=A(o,{supported:i.algorithms,plugin:i.name});l?.validateToken?l.validateToken(n,s):Me(n,s),Lt(c,u);let h=typeof r=="bigint"?Number(r):r,[g,x]=ct(c),w=g+x+1;return{token:n,counterNum:h,past:g,future:x,totalChecks:w,crypto:i,getGenerateOptions:I=>({secret:p,counter:I,algorithm:f,digits:s,crypto:i,guardrails:u,hooks:l})}}async function lt(t){let{token:e,counterNum:r,past:n,totalChecks:o,crypto:s,getGenerateOptions:i}=Tr(t),a=Math.max(0,n-r);for(let c=a;c<o;c++){let u=c-n,l=r+u,p=await X(i(l));if(s.constantTimeEqual(p,e))return{valid:!0,delta:u|0}}return{valid:!1}}function Or(t){let{token:e,counterNum:r,past:n,totalChecks:o,crypto:s,getGenerateOptions:i}=Tr(t),a=Math.max(0,n-r);for(let c=a;c<o;c++){let u=c-n,l=r+u,p=ze(i(l));if(s.constantTimeEqual(p,e))return{valid:!0,delta:u|0}}return{valid:!1}}var Fe=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=y(e.guardrails)}generateSecret(){let{crypto:e,base32:r}=this.options;return b(e),W(r),v({crypto:e,base32:r})}async generate(e){let r={...this.options,...e},{secret:n,crypto:o,base32:s,algorithm:i="sha1",digits:a=6,period:c=30,epoch:u,t0:l=0}=r;E(n),b(o);let p=e?.guardrails??this.guardrails;return qe({secret:n,algorithm:i,digits:a,period:c,epoch:u??Math.floor(Date.now()/1e3),t0:l,crypto:o,base32:s,guardrails:p,hooks:r.hooks})}async verify(e,r){let n={...this.options,...r},{secret:o,crypto:s,base32:i,algorithm:a="sha1",digits:c=6,period:u=30,epoch:l,t0:p=0,epochTolerance:f=0,afterTimeStep:h}=n;E(o),b(s);let g=r?.guardrails??this.guardrails;return pt({secret:o,token:e,algorithm:a,digits:c,period:u,epoch:l??Math.floor(Date.now()/1e3),t0:p,epochTolerance:f,afterTimeStep:h,crypto:s,base32:i,guardrails:g,hooks:n.hooks})}toURI(e){let{issuer:r,label:n,secret:o,algorithm:s="sha1",digits:i=6,period:a=30}=this.options,c=e?.label??n,u=e?.issuer??r,l=e?.secret??o;return E(l),De(c),Ge(u),Ne(l),Ve({issuer:u,label:c,secret:l,algorithm:s,digits:i,period:a})}};function Er(t){let{secret:e,epoch:r=Math.floor(Date.now()/1e3),t0:n=0,period:o=30,algorithm:s="sha1",digits:i=6,crypto:a,base32:c,guardrails:u=y(),hooks:l}=t;E(e),b(a);let p=q(e,c);F(p,u),ot(r),st(o,u);let f=A(s,{supported:a.algorithms,plugin:a.name}),h=Math.floor((r-n)/o);return{secret:p,counter:h,algorithm:f,digits:i,crypto:a,guardrails:u,hooks:l}}async function qe(t){let e=Er(t);return X(e)}function zt(t){let e=Er(t);return ze(e)}function rn(t,e){if(t!==void 0){if(t<0)throw new Ue;if(!Number.isSafeInteger(t))throw new ve;if(t>e)throw new Le}}function wr(t,e){return e!==void 0&&t<=e}function Ar(t){let{secret:e,token:r,epoch:n=Math.floor(Date.now()/1e3),t0:o=0,period:s=30,algorithm:i="sha1",digits:a=6,crypto:c,base32:u,epochTolerance:l=0,afterTimeStep:p,guardrails:f=y(),hooks:h}=t;E(e),b(c);let g=q(e,u);F(g,f),ot(n),st(s,f);let x=A(i,{supported:c.algorithms,plugin:c.name});h?.validateToken?h.validateToken(r,a):Me(r,a),kt(l,s,f);let w=Math.floor((n-o)/s),[I,N]=Gt(l),d=Math.max(0,Math.floor((n-I-o)/s)),S=Math.floor((n+N-o)/s);return rn(p,S),{token:r,crypto:c,minCounter:d,maxCounter:S,currentCounter:w,t0:o,period:s,afterTimeStep:p,getGenerateOptions:H=>({secret:g,epoch:H*s+o,t0:o,period:s,algorithm:x,digits:a,crypto:c,guardrails:f,hooks:h})}}async function pt(t){let{token:e,crypto:r,minCounter:n,maxCounter:o,currentCounter:s,t0:i,period:a,afterTimeStep:c,getGenerateOptions:u}=Ar(t);for(let l=n;l<=o;l++){if(wr(l,c))continue;let p=await qe(u(l));if(r.constantTimeEqual(p,e))return{valid:!0,delta:l-s,epoch:l*a+i,timeStep:l}}return{valid:!1}}function Pr(t){let{token:e,crypto:r,minCounter:n,maxCounter:o,currentCounter:s,t0:i,period:a,afterTimeStep:c,getGenerateOptions:u}=Ar(t);for(let l=n;l<=o;l++){if(wr(l,c))continue;let p=zt(u(l));if(r.constantTimeEqual(p,e))return{valid:!0,delta:l-s,epoch:l*a+i,timeStep:l}}return{valid:!1}}function nn(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}function Cr(t,e){return Array.isArray(e)?e.length===0?!0:t?e.every(r=>typeof r=="string"):e.every(r=>Number.isSafeInteger(r)):!1}function ft(t,e){if(typeof e!="string")throw new TypeError(`${t}: string expected`);return!0}function Wt(t){if(typeof t!="number")throw new TypeError(`number expected, got ${typeof t}`);if(!Number.isSafeInteger(t))throw new RangeError(`invalid integer: ${t}`)}function qt(t){if(!Array.isArray(t))throw new TypeError("array expected")}function ht(t,e){if(!Cr(!0,e))throw new TypeError(`${t}: array of strings expected`)}function on(t,e){if(!Cr(!1,e))throw new TypeError(`${t}: array of numbers expected`)}function sn(...t){let e=s=>s,r=(s,i)=>a=>s(i(a)),n=t.map(s=>s.encode).reduceRight(r,e),o=t.map(s=>s.decode).reduce(r,e);return{encode:n,decode:o}}function an(t){let e=typeof t=="string"?t.split(""):t,r=e.length;ht("alphabet",e);let n=new Map(e.map((o,s)=>[o,s]));return{encode:o=>(qt(o),o.map(s=>{if(!Number.isSafeInteger(s)||s<0||s>=r)throw new Error(`alphabet.encode: digit index outside alphabet "${s}". Allowed: ${t}`);return e[s]})),decode:o=>(qt(o),o.map(s=>{ft("alphabet.decode",s);let i=n.get(s);if(i===void 0)throw new Error(`Unknown letter: "${s}". Allowed: ${t}`);return i}))}}function cn(t=""){return ft("join",t),{encode:e=>(ht("join.decode",e),e.join(t)),decode:e=>(ft("join.decode",e),e.split(t))}}function un(t,e="="){return Wt(t),ft("padding",e),{encode(r){for(ht("padding.encode",r);r.length*t%8;)r.push(e);return r},decode(r){ht("padding.decode",r);let n=r.length;if(n*t%8)throw new Error("padding: invalid, string should have whole number of bytes");for(;n>0&&r[n-1]===e;n--)if((n-1)*t%8===0)throw new Error("padding: invalid, string has too much padding");return r.slice(0,n)}}}var Hr=(t,e)=>e===0?t:Hr(e,t%e),dt=(t,e)=>t+(e-Hr(t,e)),Ft=(()=>{let t=[];for(let e=0;e<40;e++)t.push(2**e);return t})();function Sr(t,e,r,n){if(qt(t),e<=0||e>32)throw new RangeError(`convertRadix2: wrong from=${e}`);if(r<=0||r>32)throw new RangeError(`convertRadix2: wrong to=${r}`);if(dt(e,r)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${r} carryBits=${dt(e,r)}`);let o=0,s=0,i=Ft[e],a=Ft[r]-1,c=[];for(let u of t){if(Wt(u),u>=i)throw new Error(`convertRadix2: invalid data word=${u} from=${e}`);if(o=o<<e|u,s+e>32)throw new Error(`convertRadix2: carry overflow pos=${s} from=${e}`);for(s+=e;s>=r;s-=r)c.push((o>>s-r&a)>>>0);let l=Ft[s];if(l===void 0)throw new Error("invalid carry");o&=l-1}if(o=o<<r-s&a,!n&&s>=e)throw new Error("Excess padding");if(!n&&o>0)throw new Error(`Non-zero padding: ${o}`);return n&&s>0&&c.push(o>>>0),c}function ln(t,e=!1){if(Wt(t),t<=0||t>32)throw new RangeError("radix2: bits should be in (0..32]");if(dt(8,t)>32||dt(t,8)>32)throw new RangeError("radix2: carry overflow");return{encode:r=>{if(!nn(r))throw new TypeError("radix2.encode input should be Uint8Array");return Sr(Array.from(r),8,t,!e)},decode:r=>(on("radix2.decode",r),Uint8Array.from(Sr(r,t,8,e)))}}var Xt=Object.freeze(sn(ln(5),an("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),un(5),cn("")));var We=class{name="scure";encode(e,r={}){let{padding:n=!1}=r,o=Xt.encode(e);return n?o:o.replace(/=+$/,"")}decode(e){try{let r=e.toUpperCase(),n=r.padEnd(Math.ceil(r.length/8)*8,"=");return Xt.decode(n)}catch(r){throw new Error(`Invalid Base32 string: ${r.message}`)}}},ne=Object.freeze(new We);function pn(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}function Yt(t,e=""){if(typeof t!="number"){let r=e&&`"${e}" `;throw new TypeError(`${r}expected number, got ${typeof t}`)}if(!Number.isSafeInteger(t)||t<0){let r=e&&`"${e}" `;throw new RangeError(`${r}expected integer >= 0, got ${t}`)}}function Xe(t,e,r=""){let n=pn(t),o=t?.length,s=e!==void 0;if(!n||s&&o!==e){let i=r&&`"${r}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof t}`,u=i+"expected Uint8Array"+a+", got "+c;throw n?new RangeError(u):new TypeError(u)}return t}function Rr(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("Hash must wrapped by utils.createHasher");if(Yt(t.outputLen),Yt(t.blockLen),t.outputLen<1)throw new Error('"outputLen" must be >= 1');if(t.blockLen<1)throw new Error('"blockLen" must be >= 1')}function oe(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function gt(t,e){Xe(t,void 0,"digestInto() output");let r=e.outputLen;if(t.length<r)throw new RangeError('"digestInto() output" expected to be of length >='+r)}function P(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function xt(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function C(t,e){return t<<32-e|t>>>e}function mt(t,e){return t<<e|t>>>32-e>>>0}function Ye(t,e={}){let r=(o,s)=>t(s).update(o).digest(),n=t(void 0);return r.outputLen=n.outputLen,r.blockLen=n.blockLen,r.canXOF=n.canXOF,r.create=o=>t(o),Object.assign(r,e),Object.freeze(r)}function Ir(t=32){Yt(t,"bytesLength");let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(t>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${t}`);return e.getRandomValues(new Uint8Array(t))}var Kt=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});var yt=class{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,r){if(Rr(e),Xe(r,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(r.length>n?e.create().update(r).digest():r);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),P(o)}update(e){return oe(this),this.iHash.update(e),this}digestInto(e){oe(this),gt(e,this),this.finished=!0;let r=e.subarray(0,this.outputLen);this.iHash.digestInto(r),this.oHash.update(r),this.oHash.digestInto(r),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:r,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=r._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Br=(()=>{let t=((e,r,n)=>new yt(e,r).update(n).digest());return t.create=(e,r)=>new yt(e,r),t})();function bt(t,e,r){return t&e^~t&r}function Tt(t,e,r){return t&e^t&r^e&r}var Y=class{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,r,n,o){this.blockLen=e,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=xt(this.buffer)}update(e){oe(this),Xe(e);let{view:r,buffer:n,blockLen:o}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=xt(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){oe(this),gt(e,this),this.finished=!0;let{buffer:r,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;r[i++]=128,P(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let p=i;p<o;p++)r[p]=0;n.setBigUint64(o-8,BigInt(this.length*8),s),this.process(n,0);let a=xt(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let p=0;p<u;p++)a.setUint32(4*p,l[p],s)}digest(){let{buffer:e,outputLen:r}=this;this.digestInto(e);let n=e.slice(0,r);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:r,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%r&&e.buffer.set(n),e}clone(){return this._cloneInto()}},L=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var m=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var Ke=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),k=new Uint32Array(80),Jt=class extends Y{A=Ke[0]|0;B=Ke[1]|0;C=Ke[2]|0;D=Ke[3]|0;E=Ke[4]|0;constructor(){super(64,20,8,!1)}get(){let{A:e,B:r,C:n,D:o,E:s}=this;return[e,r,n,o,s]}set(e,r,n,o,s){this.A=e|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=s|0}process(e,r){for(let c=0;c<16;c++,r+=4)k[c]=e.getUint32(r,!1);for(let c=16;c<80;c++)k[c]=mt(k[c-3]^k[c-8]^k[c-14]^k[c-16],1);let{A:n,B:o,C:s,D:i,E:a}=this;for(let c=0;c<80;c++){let u,l;c<20?(u=bt(o,s,i),l=1518500249):c<40?(u=o^s^i,l=1859775393):c<60?(u=Tt(o,s,i),l=2400959708):(u=o^s^i,l=3395469782);let p=mt(n,5)+u+a+l+k[c]|0;a=i,i=s,s=mt(o,30),o=n,n=p}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(n,o,s,i,a)}roundClean(){P(k)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0),P(this.buffer)}},_r=Ye(()=>new Jt);var Ot=BigInt(4294967295),Ur=BigInt(32);function fn(t,e=!1){return e?{h:Number(t&Ot),l:Number(t>>Ur&Ot)}:{h:Number(t>>Ur&Ot)|0,l:Number(t&Ot)|0}}function vr(t,e=!1){let r=t.length,n=new Uint32Array(r),o=new Uint32Array(r);for(let s=0;s<r;s++){let{h:i,l:a}=fn(t[s],e);[n[s],o[s]]=[i,a]}return[n,o]}var Qt=(t,e,r)=>t>>>r,Zt=(t,e,r)=>t<<32-r|e>>>r,K=(t,e,r)=>t>>>r|e<<32-r,J=(t,e,r)=>t<<32-r|e>>>r,Je=(t,e,r)=>t<<64-r|e>>>r-32,Qe=(t,e,r)=>t>>>r-32|e<<64-r;function R(t,e,r,n){let o=(e>>>0)+(n>>>0);return{h:t+r+(o/2**32|0)|0,l:o|0}}var Lr=(t,e,r)=>(t>>>0)+(e>>>0)+(r>>>0),kr=(t,e,r,n)=>e+r+n+(t/2**32|0)|0,Mr=(t,e,r,n)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0),Dr=(t,e,r,n,o)=>e+r+n+o+(t/2**32|0)|0,Gr=(t,e,r,n,o)=>(t>>>0)+(e>>>0)+(r>>>0)+(n>>>0)+(o>>>0),Nr=(t,e,r,n,o,s)=>e+r+n+o+s+(t/2**32|0)|0;var dn=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),M=new Uint32Array(64),er=class extends Y{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:r,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,r,n,o,s,i,a,c]}set(e,r,n,o,s,i,a,c){this.A=e|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,r){for(let p=0;p<16;p++,r+=4)M[p]=e.getUint32(r,!1);for(let p=16;p<64;p++){let f=M[p-15],h=M[p-2],g=C(f,7)^C(f,18)^f>>>3,x=C(h,17)^C(h,19)^h>>>10;M[p]=x+M[p-7]+g+M[p-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:u,H:l}=this;for(let p=0;p<64;p++){let f=C(a,6)^C(a,11)^C(a,25),h=l+f+bt(a,c,u)+dn[p]+M[p]|0,x=(C(n,2)^C(n,13)^C(n,22))+Tt(n,o,s)|0;l=u,u=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+x|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,o,s,i,a,c,u,l)}roundClean(){P(M)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),P(this.buffer)}},tr=class extends er{A=L[0]|0;B=L[1]|0;C=L[2]|0;D=L[3]|0;E=L[4]|0;F=L[5]|0;G=L[6]|0;H=L[7]|0;constructor(){super(32)}};var Vr=vr(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),gn=Vr[0],xn=Vr[1],D=new Uint32Array(80),G=new Uint32Array(80),rr=class extends Y{constructor(e){super(128,e,16,!1)}get(){let{Ah:e,Al:r,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:u,El:l,Fh:p,Fl:f,Gh:h,Gl:g,Hh:x,Hl:w}=this;return[e,r,n,o,s,i,a,c,u,l,p,f,h,g,x,w]}set(e,r,n,o,s,i,a,c,u,l,p,f,h,g,x,w){this.Ah=e|0,this.Al=r|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=u|0,this.El=l|0,this.Fh=p|0,this.Fl=f|0,this.Gh=h|0,this.Gl=g|0,this.Hh=x|0,this.Hl=w|0}process(e,r){for(let d=0;d<16;d++,r+=4)D[d]=e.getUint32(r),G[d]=e.getUint32(r+=4);for(let d=16;d<80;d++){let S=D[d-15]|0,H=G[d-15]|0,Rt=K(S,H,1)^K(S,H,8)^Qt(S,H,7),It=J(S,H,1)^J(S,H,8)^Zt(S,H,7),B=D[d-2]|0,_=G[d-2]|0,tt=K(B,_,19)^Je(B,_,61)^Qt(B,_,6),Bt=J(B,_,19)^Qe(B,_,61)^Zt(B,_,6),rt=Mr(It,Bt,G[d-7],G[d-16]),_t=Dr(rt,Rt,tt,D[d-7],D[d-16]);D[d]=_t|0,G[d]=rt|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:u,Dl:l,Eh:p,El:f,Fh:h,Fl:g,Gh:x,Gl:w,Hh:I,Hl:N}=this;for(let d=0;d<80;d++){let S=K(p,f,14)^K(p,f,18)^Je(p,f,41),H=J(p,f,14)^J(p,f,18)^Qe(p,f,41),Rt=p&h^~p&x,It=f&g^~f&w,B=Gr(N,H,It,xn[d],G[d]),_=Nr(B,I,S,Rt,gn[d],D[d]),tt=B|0,Bt=K(n,o,28)^Je(n,o,34)^Je(n,o,39),rt=J(n,o,28)^Qe(n,o,34)^Qe(n,o,39),_t=n&s^n&a^s&a,qr=o&i^o&c^i&c;I=x|0,N=w|0,x=h|0,w=g|0,h=p|0,g=f|0,{h:p,l:f}=R(u|0,l|0,_|0,tt|0),u=a|0,l=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let sr=Lr(tt,rt,qr);n=kr(sr,_,Bt,_t),o=sr|0}({h:n,l:o}=R(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=R(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=R(this.Ch|0,this.Cl|0,a|0,c|0),{h:u,l}=R(this.Dh|0,this.Dl|0,u|0,l|0),{h:p,l:f}=R(this.Eh|0,this.El|0,p|0,f|0),{h,l:g}=R(this.Fh|0,this.Fl|0,h|0,g|0),{h:x,l:w}=R(this.Gh|0,this.Gl|0,x|0,w|0),{h:I,l:N}=R(this.Hh|0,this.Hl|0,I|0,N|0),this.set(n,o,s,i,a,c,u,l,p,f,h,g,x,w,I,N)}roundClean(){P(D,G)}destroy(){this.destroyed=!0,P(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},nr=class extends rr{Ah=m[0]|0;Al=m[1]|0;Bh=m[2]|0;Bl=m[3]|0;Ch=m[4]|0;Cl=m[5]|0;Dh=m[6]|0;Dl=m[7]|0;Eh=m[8]|0;El=m[9]|0;Fh=m[10]|0;Fl=m[11]|0;Gh=m[12]|0;Gl=m[13]|0;Hh=m[14]|0;Hl=m[15]|0;constructor(){super(64)}};var $r=Ye(()=>new tr,Kt(1));var jr=Ye(()=>new nr,Kt(3));var zr={sha1:_r,sha256:$r,sha512:jr},mn=Object.freeze(Object.keys(zr)),Ze=class{name="noble";algorithms=mn;hmac(e,r,n){let o=A(e,{supported:this.algorithms,plugin:this.name});return Br(zr[o],r,n)}randomBytes(e){return Ir(e)}constantTimeEqual(e,r){return Dt(e,r)}},se=Object.freeze(new Ze);function Et(t){return{secret:t.secret,strategy:t.strategy??"totp",crypto:t.crypto??se,base32:t.base32??ne,algorithm:t.algorithm??"sha1",digits:t.digits??6,period:t.period??30,epoch:t.epoch??Math.floor(Date.now()/1e3),t0:t.t0??0,counter:t.counter,guardrails:t.guardrails??y(),hooks:t.hooks}}function or(t){return{...Et(t),token:t.token,epochTolerance:t.epochTolerance??0,counterTolerance:t.counterTolerance??0,afterTimeStep:t.afterTimeStep}}function et(t,e,r){if(t==="totp")return r.totp();if(t==="hotp"){if(e===void 0)throw new O("Counter is required for HOTP strategy. Example: { strategy: 'hotp', counter: 0 }");return r.hotp(e)}throw new O(`Unknown OTP strategy: ${t}. Valid strategies are 'totp' or 'hotp'.`)}function Fr(t){let{crypto:e=se,base32:r=ne,length:n=20}=t||{};return v({crypto:e,base32:r,length:n})}function wt(t){let{strategy:e="totp",issuer:r,label:n,secret:o,algorithm:s="sha1",digits:i=6,period:a=30,counter:c}=t;return et(e,c,{totp:()=>Ve({issuer:r,label:n,secret:o,algorithm:s,digits:i,period:a}),hotp:u=>$e({issuer:r,label:n,secret:o,algorithm:s,digits:i,counter:u})})}async function At(t){let e=Et(t),{secret:r,crypto:n,base32:o,algorithm:s,digits:i,hooks:a}=e,c={secret:r,crypto:n,base32:o,algorithm:s,digits:i,hooks:a};return et(e.strategy,e.counter,{totp:()=>qe({...c,period:e.period,epoch:e.epoch,t0:e.t0,guardrails:e.guardrails}),hotp:u=>X({...c,counter:u,guardrails:e.guardrails})})}function Pt(t){let e=Et(t),{secret:r,crypto:n,base32:o,algorithm:s,digits:i}=e,a={secret:r,crypto:n,base32:o,algorithm:s,digits:i};return et(e.strategy,e.counter,{totp:()=>zt({...a,period:e.period,epoch:e.epoch,t0:e.t0,guardrails:e.guardrails}),hotp:c=>ze({...a,counter:c,guardrails:e.guardrails})})}async function St(t){let e=or(t),{secret:r,token:n,crypto:o,base32:s,algorithm:i,digits:a,hooks:c}=e,u={secret:r,token:n,crypto:o,base32:s,algorithm:i,digits:a,hooks:c};return et(e.strategy,e.counter,{totp:()=>pt({...u,period:e.period,epoch:e.epoch,t0:e.t0,epochTolerance:e.epochTolerance,afterTimeStep:e.afterTimeStep,guardrails:e.guardrails}),hotp:l=>lt({...u,counter:l,counterTolerance:e.counterTolerance,guardrails:e.guardrails})})}function Ct(t){let e=or(t),{secret:r,token:n,crypto:o,base32:s,algorithm:i,digits:a,hooks:c}=e,u={secret:r,token:n,crypto:o,base32:s,algorithm:i,digits:a,hooks:c};return et(e.strategy,e.counter,{totp:()=>Pr({...u,period:e.period,epoch:e.epoch,t0:e.t0,epochTolerance:e.epochTolerance,afterTimeStep:e.afterTimeStep,guardrails:e.guardrails}),hotp:l=>Or({...u,counter:l,counterTolerance:e.counterTolerance,guardrails:e.guardrails})})}var Ht=class{strategy;crypto;base32;guardrails;constructor(e={}){let{strategy:r="totp",crypto:n=se,base32:o=ne,guardrails:s}=e;this.strategy=r,this.crypto=n,this.base32=o,this.guardrails=y(s)}getStrategy(){return this.strategy}generateSecret(e=20){return v({crypto:this.crypto,base32:this.base32,length:e})}async generate(e){return At({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateSync(e){return Pt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}async verify(e){return St({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}verifySync(e){return Ct({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateURI(e){return wt({...e,strategy:this.strategy})}};return Qr(yn);})();
2
- /*! Bundled license information:
3
-
4
- @scure/base/index.js:
5
- (*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
6
- */
1
+ "use strict";var otplib=(function(e){Object.defineProperty(e,"__esModule",{value:!0});var t=class extends Error{constructor(e,t){super(e,t),this.name=`OTPError`}},n=class extends t{constructor(e){super(e),this.name=`SecretError`}},r=class extends n{constructor(e,t){super(`Secret must be at least ${e} bytes (${e*8} bits), got ${t} bytes`),this.name=`SecretTooShortError`}},i=class extends n{constructor(e,t){super(`Secret must not exceed ${e} bytes, got ${t} bytes`),this.name=`SecretTooLongError`}},a=class extends t{constructor(e){super(e),this.name=`CounterError`}},o=class extends a{constructor(){super(`Counter must be non-negative`),this.name=`CounterNegativeError`}},s=class extends a{constructor(){super(`Counter exceeds maximum safe integer value`),this.name=`CounterOverflowError`}},c=class extends a{constructor(){super(`Counter must be a finite integer`),this.name=`CounterNotIntegerError`}},l=class extends t{constructor(e){super(e),this.name=`TimeError`}},u=class extends l{constructor(){super(`Time must be non-negative`),this.name=`TimeNegativeError`}},d=class extends l{constructor(){super(`Time must be a finite number`),this.name=`TimeNotFiniteError`}},f=class extends t{constructor(e){super(e),this.name=`PeriodError`}},p=class extends f{constructor(e){super(`Period must be at least ${e} second(s)`),this.name=`PeriodTooSmallError`}},m=class extends f{constructor(e){super(`Period must not exceed ${e} seconds`),this.name=`PeriodTooLargeError`}},h=class extends t{constructor(e){super(e),this.name=`AlgorithmError`}},g=class extends h{constructor(e,t={}){let{supported:n,plugin:r}=t;super(`Unsupported hash algorithm.`+(n?` Expected one of: ${n.join(`, `)||`(none)`}`:``)+(r?` [plugin: ${r}]`:``)),this.name=`AlgorithmUnsupportedError`}},_=class extends t{constructor(e){super(e),this.name=`TokenError`}},v=class extends _{constructor(e,t){super(`Token must be ${e} digits, got ${t}`),this.name=`TokenLengthError`}},ee=class extends _{constructor(){super(`Token must contain only digits`),this.name=`TokenFormatError`}},y=class extends t{constructor(e,t){super(e,t),this.name=`CryptoError`}},b=class extends y{constructor(e,t){super(`HMAC computation failed: ${e}`,t),this.name=`HMACError`}},te=class extends y{constructor(e,t){super(`Random byte generation failed: ${e}`,t),this.name=`RandomBytesError`}},x=class extends t{constructor(e){super(e),this.name=`CounterToleranceError`}},ne=class extends x{constructor(e,t){super(`Counter tolerance validation failed: total checks (${t}) exceeds MAX_WINDOW (${e})`),this.name=`CounterToleranceTooLargeError`}},re=class extends x{constructor(){super(`Counter tolerance cannot contain negative values`),this.name=`CounterToleranceNegativeError`}},S=class extends t{constructor(e){super(e),this.name=`EpochToleranceError`}},ie=class extends S{constructor(){super(`Epoch tolerance cannot contain negative values`),this.name=`EpochToleranceNegativeError`}},ae=class extends S{constructor(e,t){super(`Epoch tolerance must not exceed ${e} seconds, got ${t}. Large tolerances can cause performance issues.`),this.name=`EpochToleranceTooLargeError`}},oe=class extends t{constructor(e){super(e),this.name=`PluginError`}},se=class extends oe{constructor(){super(`Crypto plugin is required.`),this.name=`CryptoPluginMissingError`}},ce=class extends oe{constructor(){super(`Base32 plugin is required.`),this.name=`Base32PluginMissingError`}},C=class extends t{constructor(e){super(e),this.name=`ConfigurationError`}},le=class extends C{constructor(){super(`Secret is required. Use generateSecret() to create one, or provide via { secret: 'YOUR_BASE32_SECRET' }`),this.name=`SecretMissingError`}},ue=class extends C{constructor(){super(`Label is required for URI generation. Example: { label: 'user@example.com' }`),this.name=`LabelMissingError`}},de=class extends C{constructor(){super(`Issuer is required for URI generation. Example: { issuer: 'MyApp' }`),this.name=`IssuerMissingError`}},fe=class extends C{constructor(){super(`Class API requires secret to be a Base32 string, not Uint8Array. Use generateSecret() or provide a Base32-encoded string.`),this.name=`SecretTypeError`}},pe=class extends t{constructor(e){super(e),this.name=`AfterTimeStepError`}},me=class extends pe{constructor(){super(`afterTimeStep must be >= 0`),this.name=`AfterTimeStepNegativeError`}},he=class extends pe{constructor(){super(`Invalid afterTimeStep: non-integer value`),this.name=`AfterTimeStepNotIntegerError`}},ge=class extends pe{constructor(){super(`Invalid afterTimeStep: cannot be greater than current time step plus window`),this.name=`AfterTimeStepRangeExceededError`}};let _e=new TextEncoder;new TextDecoder;let ve=2**53-1,ye=Symbol(`otplib.guardrails.override`);function w(e,t,n){if(typeof t!=`number`||!Number.isSafeInteger(t))throw new C(`Guardrail '${e}' must be a safe integer`);if(t<n)throw new C(`Guardrail '${e}' must be >= ${n}`)}let T=Object.freeze({MIN_SECRET_BYTES:16,MAX_SECRET_BYTES:64,MIN_PERIOD:1,MAX_PERIOD:3600,MAX_COUNTER:ve,MAX_WINDOW:99,[ye]:!1});function E(e){if(!e)return T;e.MIN_SECRET_BYTES!==void 0&&w(`MIN_SECRET_BYTES`,e.MIN_SECRET_BYTES,1),e.MAX_SECRET_BYTES!==void 0&&w(`MAX_SECRET_BYTES`,e.MAX_SECRET_BYTES,1),e.MIN_PERIOD!==void 0&&w(`MIN_PERIOD`,e.MIN_PERIOD,1),e.MAX_PERIOD!==void 0&&w(`MAX_PERIOD`,e.MAX_PERIOD,1),e.MAX_COUNTER!==void 0&&w(`MAX_COUNTER`,e.MAX_COUNTER,0),e.MAX_WINDOW!==void 0&&w(`MAX_WINDOW`,e.MAX_WINDOW,1);let t={...T,...e};if(t.MIN_SECRET_BYTES>t.MAX_SECRET_BYTES)throw new C(`Guardrail 'MIN_SECRET_BYTES' must be <= 'MAX_SECRET_BYTES'`);if(t.MIN_PERIOD>t.MAX_PERIOD)throw new C(`Guardrail 'MIN_PERIOD' must be <= 'MAX_PERIOD'`);return Object.freeze({...t,[ye]:!0})}let be={sha1:[`sha1`,`sha-1`,`sha_1`],sha256:[`sha256`,`sha-256`,`sha_256`],sha512:[`sha512`,`sha-512`,`sha_512`]},xe=Object.freeze(Object.keys(be)),Se=new Map(Object.entries(be).flatMap(([e,t])=>t.map(t=>[t,e])));function D(e,t={}){let{supported:n,plugin:r}=t,i=n===void 0?xe:xe.filter(e=>n.includes(e));if(typeof e==`string`){let t=Se.get(e.toLowerCase());if(t!==void 0&&i.includes(t))return t}throw new g(e,{supported:i,plugin:r})}function O(e,t=T){if(e.length<t.MIN_SECRET_BYTES)throw new r(t.MIN_SECRET_BYTES,e.length);if(e.length>t.MAX_SECRET_BYTES)throw new i(t.MAX_SECRET_BYTES,e.length)}function Ce(e,t=T){if(typeof e==`number`){if(!Number.isFinite(e)||!Number.isInteger(e))throw new c;if(!Number.isSafeInteger(e))throw new s}let n=typeof e==`bigint`?e:BigInt(e);if(n<0n)throw new o;if(n>BigInt(t.MAX_COUNTER))throw new s}function we(e){if(!Number.isFinite(e))throw new d;if(e<0)throw new u}function Te(e,t=T){if(!Number.isInteger(e)||e<t.MIN_PERIOD)throw new p(t.MIN_PERIOD);if(e>t.MAX_PERIOD)throw new m(t.MAX_PERIOD)}function Ee(e,t){if(e.length!==t)throw new v(t,e.length);if(!/^\d+$/.test(e))throw new ee}function De(e,t=T){let[n,r]=Fe(e);if(!Number.isSafeInteger(n)||!Number.isSafeInteger(r))throw new x(`Counter tolerance values must be safe integers`);if(n<0||r<0)throw new re;let i=n+r+1;if(i>t.MAX_WINDOW)throw new ne(t.MAX_WINDOW,i)}function Oe(e,t=30,n=T){let[r,i]=Array.isArray(e)?e:[e,e];if(!Number.isSafeInteger(r)||!Number.isSafeInteger(i))throw new S(`Epoch tolerance values must be safe integers`);if(r<0||i<0)throw new ie;let a=(n.MAX_WINDOW-1)*t,o=r+i;if(o>a)throw new ae(a,o)}function ke(e){let t=typeof e==`bigint`?e:BigInt(e),n=new ArrayBuffer(8);return new DataView(n).setBigUint64(0,t,!1),new Uint8Array(n)}function Ae(e){let t=e[e.length-1]&15;return(e[t]&127)<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]}function je(e,t){return(e%10**t).toString().padStart(t,`0`)}function Me(e,t){return e.length===t.length}function Ne(e,t){let n=Pe(e),r=Pe(t);if(!Me(n,r))return!1;let i=0;for(let e=0;e<n.length;e++)i|=n[e]^r[e];return i===0}function Pe(e){return typeof e==`string`?_e.encode(e):e}function k(e,t){return typeof e==`string`?(M(t),t.decode(e)):e}function A(e){let{crypto:t,base32:n,length:r=20}=e;j(t),M(n);let i=t.randomBytes(r);return n.encode(i,{padding:!1})}function Fe(e=0){return Array.isArray(e)?e:[0,e]}function Ie(e=0){return Array.isArray(e)?e:[e,e]}function j(e){if(!e)throw new se}function M(e){if(!e)throw new ce}function N(e){if(!e)throw new le}function Le(e){if(!e)throw new ue}function Re(e){if(!e)throw new de}function ze(e){if(typeof e!=`string`)throw new fe}function Be(e){return{ok:!0,value:e}}function Ve(e){return{ok:!1,error:e}}function He(e){return(...t)=>{try{return Be(e(...t))}catch(e){return Ve(e)}}}function Ue(e){return async(...t)=>{try{return Be(await e(...t))}catch(e){return Ve(e)}}}function We(e){return typeof e.then==`function`}var Ge=class{crypto;constructor(e){this.crypto=e}get plugin(){return this.crypto}normalize(e){return D(e,{supported:this.crypto.algorithms,plugin:this.crypto.name})}async hmac(e,t,n){let r=this.normalize(e);try{return await this.crypto.hmac(r,t,n)}catch(e){throw new b(e instanceof Error?e.message:String(e),{cause:e})}}hmacSync(e,t,n){let r=this.normalize(e);try{let e=this.crypto.hmac(r,t,n);if(!We(e))return e;Promise.resolve(e).catch(()=>void 0)}catch(e){throw new b(e instanceof Error?e.message:String(e),{cause:e})}throw new b(`Crypto plugin does not support synchronous HMAC operations`)}randomBytes(e){try{return this.crypto.randomBytes(e)}catch(e){throw new te(e instanceof Error?e.message:String(e),{cause:e})}}};function Ke(e){return new Ge(e)}var qe=class extends Error{constructor(e,t){super(e,t),this.name=`URIParseError`}},P=class extends qe{constructor(e,t,n){super(`Invalid value for parameter '${e}': ${t}`,n),this.name=`InvalidParameterError`}};function Je(e,t,n=2**53-1){if(typeof e!=`number`&&(typeof e!=`string`||e.trim()===``))return;let r=Number(e);return Number.isSafeInteger(r)&&r>=t&&r<=n?r:void 0}function Ye(e){let{type:t,label:n,params:r}=e;if(t!==`hotp`&&t!==`totp`)throw new P(`type`,String(t));let i=r.digits===void 0?void 0:Je(r.digits,1);if(r.digits!==void 0&&i===void 0)throw new P(`digits`,String(r.digits));let a=r.counter===void 0?void 0:Je(r.counter,0);if(r.counter!==void 0&&a===void 0)throw new P(`counter`,String(r.counter));let o=r.period===void 0?void 0:Je(r.period,1);if(r.period!==void 0&&o===void 0)throw new P(`period`,String(r.period));let s=`otpauth://${t}/${n.split(`:`).map(e=>encodeURIComponent(e)).join(`:`)}?`,c=[];if(r.secret&&c.push(`secret=${encodeURIComponent(r.secret)}`),r.issuer&&c.push(`issuer=${encodeURIComponent(r.issuer)}`),r.algorithm){let e=D(r.algorithm);e!==`sha1`&&c.push(`algorithm=${e.toUpperCase()}`)}return i!==void 0&&i!==6&&c.push(`digits=${i}`),t===`hotp`&&a!==void 0&&c.push(`counter=${a}`),t===`totp`&&o!==void 0&&o!==30&&c.push(`period=${o}`),s+=c.join(`&`),s}function Xe(e){let{issuer:t,label:n,secret:r,algorithm:i=`sha1`,digits:a=6,period:o=30}=e;return Ye({type:`totp`,label:t?`${t}:${n}`:n,params:{secret:r,issuer:t,algorithm:i,digits:a,period:o}})}function Ze(e){let{issuer:t,label:n,secret:r,counter:i=0,algorithm:a=`sha1`,digits:o=6}=e;return Ye({type:`hotp`,label:t?`${t}:${n}`:n,params:{secret:r,issuer:t,algorithm:a,digits:o,counter:i}})}var Qe=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=E(e.guardrails)}generateSecret(){let{crypto:e,base32:t}=this.options;return j(e),M(t),A({crypto:e,base32:t})}async generate(e,t){let n={...this.options,...t},{secret:r,crypto:i,base32:a,algorithm:o=`sha1`,digits:s=6}=n;return N(r),j(i),F({secret:r,counter:e,algorithm:o,digits:s,crypto:i,base32:a,guardrails:t?.guardrails??this.guardrails,hooks:n.hooks})}async verify(e,t){let n={...this.options,...t},{secret:r,crypto:i,base32:a,algorithm:o=`sha1`,digits:s=6,counterTolerance:c=0}=n;N(r),j(i);let l=t?.guardrails??this.guardrails;return tt({secret:r,token:e.token,counter:e.counter,algorithm:o,digits:s,counterTolerance:c,crypto:i,base32:a,guardrails:l,hooks:n.hooks})}toURI(e=0){let{issuer:t,label:n,secret:r,algorithm:i=`sha1`,digits:a=6}=this.options;return N(r),Le(n),Re(t),ze(r),Ze({issuer:t,label:n,secret:r,algorithm:i,digits:a,counter:e})}};function $e(e){let{secret:t,counter:n,algorithm:r=`sha1`,digits:i=6,crypto:a,base32:o,guardrails:s,hooks:c}=e;N(t),j(a);let l=k(t,o);O(l,s),Ce(n,s);let u=D(r,{supported:a.algorithms,plugin:a.name});return{ctx:Ke(a),algorithm:u,digits:i,secretBytes:l,counterBytes:ke(n),hooks:c}}async function F(e){let{ctx:t,algorithm:n,digits:r,secretBytes:i,counterBytes:a,hooks:o}=$e(e),s=await t.hmac(n,i,a),c=o?.truncateDigest?o.truncateDigest(s):Ae(s);return o?.encodeToken?o.encodeToken(c,r):je(c,r)}function I(e){let{ctx:t,algorithm:n,digits:r,secretBytes:i,counterBytes:a,hooks:o}=$e(e),s=t.hmacSync(n,i,a),c=o?.truncateDigest?o.truncateDigest(s):Ae(s);return o?.encodeToken?o.encodeToken(c,r):je(c,r)}function et(e){let{secret:t,counter:n,token:r,algorithm:i=`sha1`,digits:a=6,crypto:o,base32:s,counterTolerance:c=0,guardrails:l=E(),hooks:u}=e;N(t),j(o);let d=k(t,s);O(d,l),Ce(n,l);let f=D(i,{supported:o.algorithms,plugin:o.name});u?.validateToken?u.validateToken(r,a):Ee(r,a),De(c,l);let p=typeof n==`bigint`?Number(n):n,[m,h]=Fe(c);return{token:r,counterNum:p,past:m,future:h,totalChecks:m+h+1,crypto:o,getGenerateOptions:e=>({secret:d,counter:e,algorithm:f,digits:a,crypto:o,guardrails:l,hooks:u})}}async function tt(e){let{token:t,counterNum:n,past:r,totalChecks:i,crypto:a,getGenerateOptions:o}=et(e),s=Math.max(0,r-n);for(let e=s;e<i;e++){let i=e-r,s=await F(o(n+i));if(a.constantTimeEqual(s,t))return{valid:!0,delta:i|0}}return{valid:!1}}function nt(e){let{token:t,counterNum:n,past:r,totalChecks:i,crypto:a,getGenerateOptions:o}=et(e),s=Math.max(0,r-n);for(let e=s;e<i;e++){let i=e-r,s=I(o(n+i));if(a.constantTimeEqual(s,t))return{valid:!0,delta:i|0}}return{valid:!1}}var rt=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=E(e.guardrails)}generateSecret(){let{crypto:e,base32:t}=this.options;return j(e),M(t),A({crypto:e,base32:t})}async generate(e){let t={...this.options,...e},{secret:n,crypto:r,base32:i,algorithm:a=`sha1`,digits:o=6,period:s=30,epoch:c,t0:l=0}=t;N(n),j(r);let u=e?.guardrails??this.guardrails;return L({secret:n,algorithm:a,digits:o,period:s,epoch:c??Math.floor(Date.now()/1e3),t0:l,crypto:r,base32:i,guardrails:u,hooks:t.hooks})}async verify(e,t){let n={...this.options,...t},{secret:r,crypto:i,base32:a,algorithm:o=`sha1`,digits:s=6,period:c=30,epoch:l,t0:u=0,epochTolerance:d=0,afterTimeStep:f}=n;N(r),j(i);let p=t?.guardrails??this.guardrails;return lt({secret:r,token:e,algorithm:o,digits:s,period:c,epoch:l??Math.floor(Date.now()/1e3),t0:u,epochTolerance:d,afterTimeStep:f,crypto:i,base32:a,guardrails:p,hooks:n.hooks})}toURI(e){let{issuer:t,label:n,secret:r,algorithm:i=`sha1`,digits:a=6,period:o=30}=this.options,s=e?.label??n,c=e?.issuer??t,l=e?.secret??r;return N(l),Le(s),Re(c),ze(l),Xe({issuer:c,label:s,secret:l,algorithm:i,digits:a,period:o})}};function it(e){let{secret:t,epoch:n=Math.floor(Date.now()/1e3),t0:r=0,period:i=30,algorithm:a=`sha1`,digits:o=6,crypto:s,base32:c,guardrails:l=E(),hooks:u}=e;N(t),j(s);let d=k(t,c);O(d,l),we(n),Te(i,l);let f=D(a,{supported:s.algorithms,plugin:s.name});return{secret:d,counter:Math.floor((n-r)/i),algorithm:f,digits:o,crypto:s,guardrails:l,hooks:u}}async function L(e){return F(it(e))}function at(e){return I(it(e))}function ot(e,t){if(e!==void 0){if(e<0)throw new me;if(!Number.isSafeInteger(e))throw new he;if(e>t)throw new ge}}function st(e,t){return t!==void 0&&e<=t}function ct(e){let{secret:t,token:n,epoch:r=Math.floor(Date.now()/1e3),t0:i=0,period:a=30,algorithm:o=`sha1`,digits:s=6,crypto:c,base32:l,epochTolerance:u=0,afterTimeStep:d,guardrails:f=E(),hooks:p}=e;N(t),j(c);let m=k(t,l);O(m,f),we(r),Te(a,f);let h=D(o,{supported:c.algorithms,plugin:c.name});p?.validateToken?p.validateToken(n,s):Ee(n,s),Oe(u,a,f);let g=Math.floor((r-i)/a),[_,v]=Ie(u),ee=Math.max(0,Math.floor((r-_-i)/a)),y=Math.floor((r+v-i)/a);return ot(d,y),{token:n,crypto:c,minCounter:ee,maxCounter:y,currentCounter:g,t0:i,period:a,afterTimeStep:d,getGenerateOptions:e=>({secret:m,epoch:e*a+i,t0:i,period:a,algorithm:h,digits:s,crypto:c,guardrails:f,hooks:p})}}async function lt(e){let{token:t,crypto:n,minCounter:r,maxCounter:i,currentCounter:a,t0:o,period:s,afterTimeStep:c,getGenerateOptions:l}=ct(e);for(let e=r;e<=i;e++){if(st(e,c))continue;let r=await L(l(e));if(n.constantTimeEqual(r,t))return{valid:!0,delta:e-a,epoch:e*s+o,timeStep:e}}return{valid:!1}}function ut(e){let{token:t,crypto:n,minCounter:r,maxCounter:i,currentCounter:a,t0:o,period:s,afterTimeStep:c,getGenerateOptions:l}=ct(e);for(let e=r;e<=i;e++){if(st(e,c))continue;let r=at(l(e));if(n.constantTimeEqual(r,t))return{valid:!0,delta:e-a,epoch:e*s+o,timeStep:e}}return{valid:!1}}
2
+ /*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */
3
+ let dt=e=>Object.freeze(e());function ft(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`&&`BYTES_PER_ELEMENT`in e&&e.BYTES_PER_ELEMENT===1}function pt(e){if(!ft(e))throw TypeError(`Uint8Array expected`)}function mt(e,t){if(typeof t!=`string`)throw TypeError(`${e}: string expected`);return!0}function ht(e,t=`number`){if(typeof e!=`number`)throw TypeError(`${t}: expected number, got ${typeof e}`);if(!Number.isSafeInteger(e))throw RangeError(`${t}: expected safe integer, got ${e}`)}function gt(...e){let t=e=>e,n=(e,t)=>n=>e(t(n));return{encode:e.map(e=>e.encode).reduceRight(n,t),decode:e.map(e=>e.decode).reduce(n,t)}}let _t=(()=>{let e=[];for(let t=0;t<40;t++)e.push(2**t);return e})(),vt=(()=>{try{let e=new TextDecoder;return e.decode(Uint8Array.of(65,48,43,127))===`A0+`?e:void 0}catch{return}})(),yt=8192;function bt(e){let t=e.length;if(vt!==void 0&&t>=12)return vt.decode(e);if(t<=yt)return String.fromCharCode.apply(null,e);let n=``;for(let r=0;r<t;r+=yt)n+=String.fromCharCode.apply(null,e.subarray(r,r+yt));return n}function xt(e){if(ht(e),e<=0||e>8)throw RangeError(`radix2: bits should be in (0..8]`);let t=_t[e]-1;return{encode:n=>{pt(n);let r=n.length,i=new Uint8Array(Math.ceil(r*8/e)),a=0,o=0,s=0;for(let c=0;c<r;)for(c+2<r?(a=a<<24|n[c]<<16|n[c+1]<<8|n[c+2],o+=24,c+=3):(a=(a<<8|n[c])&65535,o+=8,c++);o-=e,i[s++]=a>>o&t,!(o<e););return o>0&&(i[s]=a<<e-o&t),i},decode:t=>{let n=t.length,r=new Uint8Array(Math.floor(n*e/8)),i=0,a=0,o=0;for(let s=0;s<n;s++)for(i=(i<<e|t[s])&65535,a+=e;a>=8;a-=8)r[o++]=i>>a-8&255;if(i=i<<8-a&255,a>=e)throw Error(`Excess padding`);if(i>0)throw Error(`Non-zero padding: ${i}`);return r}}}function St(e,t){let n=e.length;if(n>128)throw Error(`alphabet: max 128 letters`);let r=new Uint8Array(n),i=new Int8Array(128).fill(-1);for(let t=0;t<n;t++){let n=e.charCodeAt(t);if(e.codePointAt(t)!==n||n>127)throw Error(`alphabet: single-char ASCII letters only`);r[t]=n,i[n]=t}if(t!==void 0)for(let e of Object.keys(t)){let n=e.charCodeAt(0),r=i[t[e].charCodeAt(0)];if(e.length!==1||n>127||r===void 0||r===-1)throw Error(`alphabet: invalid alias ${e}`);i[n]=r}return{encode:e=>{let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++){let i=e[n],a=r[i];if(a===void 0)throw Error(`alphabet.encode: invalid digit ${i}`);t[n]=a}return bt(t)},decode:t=>{mt(`decode`,t);let n=t.length,r=new Uint8Array(n);for(let a=0;a<n;a++){let n=t.charCodeAt(a),o=n<128?i[n]:-1;if(o===-1)throw Error(`Unknown letter "${t[a]}". Allowed: ${e}`);r[a]=o}return r}}}function Ct(e,t=`=`){return ht(e),mt(`padding`,t),{encode(n){for(;n.length*e%8;)n+=t;return n},decode(n){mt(`decode`,n);let r=n.length;if(r*e%8)throw Error(`padding: invalid length`);for(;r>0&&n[r-1]===t;r--)if((r-1)*e%8==0)throw Error(`padding: excess padding`);return n.slice(0,r)}}}let wt=dt(()=>gt(xt(5),St(`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`),Ct(5)));var Tt=class{name=`scure`;encode(e,t={}){let{padding:n=!1}=t,r=wt.encode(e);return n?r:r.replace(/=+$/,``)}decode(e){try{let t=e.toUpperCase(),n=t.padEnd(Math.ceil(t.length/8)*8,`=`);return wt.decode(n)}catch(e){throw Error(`Invalid Base32 string: ${e.message}`)}}};let Et=Object.freeze(new Tt);function Dt(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`&&`BYTES_PER_ELEMENT`in e&&e.BYTES_PER_ELEMENT===1}let Ot=e=>e?`"${e}" `:``;function R(e,t=``){if(typeof e!=`number`)throw TypeError(Ot(t)+`expected number, got `+typeof e);if(!Number.isSafeInteger(e)||e<0)throw RangeError(Ot(t)+`expected integer >= 0, got `+e);return e}function kt(e,t,n=``){if(Dt(e)&&(t===void 0||e.length===t))return e;t!==void 0&&R(t,`length`);let r=Dt(e),i=t===void 0?``:` of length ${t}`,a=r?`length=${e.length}`:`type=${typeof e}`,o=Ot(n)+`expected Uint8Array`+i+`, got `+a;throw r?RangeError(o):TypeError(o)}function At(e){if(typeof e!=`function`||typeof e.create!=`function`)throw TypeError(`expected hash wrapped by utils.createHasher`);if(R(e.outputLen),R(e.blockLen),e.outputLen<1||e.blockLen<1)throw Error(`hash blockLen / outputLen must be >= 1`)}let jt=(e,t)=>{if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError((t===`object`?``:`"${t}" `)+`expected object, got type=`+typeof e)},Mt=(e,t)=>{jt(e,t);let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw TypeError(`"${t}" expected plain object`);if(Object.hasOwn(e,`__proto__`))throw TypeError(`"${t}.__proto__" is not allowed`)};function z(e,t=!0){if(e.destroyed)throw Error(`hash was destroyed`);if(t&&e.finished)throw Error(`digest() was already called`)}function Nt(e,t){kt(e,void 0,`output`);let n=t.outputLen;if(!(e.length>=n))throw RangeError(`"output" expected length >= `+n)}function B(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function Pt(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function V(e,t){return e<<32-t|e>>>t}function Ft(e,t){return e<<t|e>>>32-t>>>0}function It(e,t,n=`opts`){return Mt(e,`defaults`),t!==void 0&&Mt(t,n),Object.assign(Object.create(null),e,t)}function Lt(e,t={}){if(typeof e!=`function`)throw TypeError(`"hashCons" expected function, got type=`+typeof e);t=It({},t,`info`);let n=(t,n)=>e(n).update(t).digest(),r=e(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=t=>e(t),Object.assign(n,t),Object.freeze(n)}function Rt(e=32){R(e,`bytesLength`);let t=typeof globalThis==`object`?globalThis.crypto:null;if(typeof t?.getRandomValues!=`function`)throw Error(`crypto.getRandomValues must be defined`);if(e>65536)throw RangeError(`"bytesLength" expected <= 65536, got ${e}`);return t.getRandomValues(new Uint8Array(e))}let zt=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});var Bt=class{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,t){if(At(e),kt(t,void 0,`key`),this.iHash=e.create(),typeof this.iHash.update!=`function`)throw Error(`expected Hash instance`);this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,r=new Uint8Array(n);r.set(t.length>n?e.create().update(t).digest():t);for(let e=0;e<r.length;e++)r[e]^=54;this.iHash.update(r),this.oHash=e.create();for(let e=0;e<r.length;e++)r[e]^=106;this.oHash.update(r),B(r)}update(e){return z(this),this.iHash.update(e),this}digestInto(e){z(this),Nt(e,this),this.finished=!0;let t=e.subarray(0,this.outputLen);this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:r,destroyed:i,blockLen:a,outputLen:o,canXOF:s}=this;return e=e,e.finished=r,e.destroyed=i,e.blockLen=a,e.outputLen=o,e.canXOF=s,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}};let Vt=(()=>{let e=((e,t,n)=>new Bt(e,t).update(n).digest());return e.create=(e,t)=>new Bt(e,t),e})(),H=BigInt(2**32-1),Ht=BigInt(32);function Ut(e,t=!1){return t?{h:Number(e&H),l:Number(e>>Ht&H)}:{h:Number(e>>Ht&H)|0,l:Number(e&H)|0}}function Wt(e,t=!1){let n=e.length,r=new Uint32Array(n),i=new Uint32Array(n);for(let a=0;a<n;a++){let{h:n,l:o}=Ut(e[a],t);[r[a],i[a]]=[n,o]}return[r,i]}let Gt=e=>e/2**32|0,Kt=e=>e>>>0;function qt(e,t,n,r){let i=Gt(n),a=Kt(n);e.setUint32(t,r?a:i,r),e.setUint32(t+4,r?i:a,r)}let Jt=(e,t,n)=>e>>>n,Yt=(e,t,n)=>e<<32-n|t>>>n,U=(e,t,n)=>e>>>n|t<<32-n,W=(e,t,n)=>e<<32-n|t>>>n,G=(e,t,n)=>e<<64-n|t>>>n-32,K=(e,t,n)=>e>>>n-32|t<<64-n;function q(e,t,n,r){let i=(t>>>0)+(r>>>0);return{h:e+n+(i/2**32|0)|0,l:i|0}}let Xt=(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0),Zt=(e,t,n,r)=>t+n+r+(e/2**32|0)|0,Qt=(e,t,n,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0),$t=(e,t,n,r,i)=>t+n+r+i+(e/2**32|0)|0,en=(e,t,n,r,i)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0)+(i>>>0),tn=(e,t,n,r,i,a)=>t+n+r+i+a+(e/2**32|0)|0;function nn(e,t,n){return e&t^~e&n}function rn(e,t,n){return e&t^e&n^t&n}var an=class{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,r){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.buffer=new Uint8Array(e),this.view=Pt(this.buffer)}update(e){z(this),kt(e);let{view:t,buffer:n,blockLen:r}=this,i=e.length,a=!1;for(let o=0;o<i;){let s=Math.min(r-this.pos,i-o);if(s===r){let t=Pt(e);for(;r<=i-o;o+=r)this.process(t,o);a=!0;continue}n.set(o===0&&s===i?e:e.subarray(o,o+s),this.pos),this.pos+=s,o+=s,this.pos===r&&(this.process(t,0),this.pos=0,a=!0)}return this.length+=e.length,a&&this.roundClean(),this}digestInto(e){z(this),Nt(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:i}=this,{pos:a}=this;t[a++]=128,t.fill(0,a),this.padOffset>r-a&&(this.process(n,0),t.fill(0)),qt(n,r-8,this.length*8,i),this.process(n,0),this.roundClean();let o=e===t?n:Pt(e),s=this.outputLen,c=s/4,l=this.get();if(s%4||c>l.length)throw Error(`invalid outputLen`);for(let e=0;e<c;e++)o.setUint32(4*e,l[e],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneIntoMeta(e){let{buffer:t,length:n,finished:r,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=r,e.length=n,e.pos=a,a&&e.buffer.set(t),e}clone(){return this._cloneInto()}};let on=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),sn=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),J=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),Y=new Uint32Array(80);var cn=class extends an{A=J[0]|0;B=J[1]|0;C=J[2]|0;D=J[3]|0;E=J[4]|0;constructor(){super(64,20,8,!1)}get(){let{A:e,B:t,C:n,D:r,E:i}=this;return[e,t,n,r,i]}set(e,t,n,r,i){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=i|0}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(e,t){for(let n=0;n<16;n++,t+=4)Y[n]=e.getUint32(t,!1);for(let e=16;e<80;e++)Y[e]=Ft(Y[e-3]^Y[e-8]^Y[e-14]^Y[e-16],1);let{A:n,B:r,C:i,D:a,E:o}=this;for(let e=0;e<80;e++){let t,s;e<20?(t=nn(r,i,a),s=1518500249):e<40?(t=r^i^a,s=1859775393):e<60?(t=rn(r,i,a),s=2400959708):(t=r^i^a,s=3395469782);let c=Ft(n,5)+t+o+s+Y[e]|0;o=a,a=i,i=Ft(r,30),r=n,n=c}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,a=a+this.D|0,o=o+this.E|0,this.set(n,r,i,a,o)}roundClean(){B(Y)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0),B(this.buffer)}};let ln=Lt(()=>new cn),un=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),X=new Uint32Array(64);var dn=class extends an{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(e,t){super(64,e,8,!1),this.A=t[0]|0,this.B=t[1]|0,this.C=t[2]|0,this.D=t[3]|0,this.E=t[4]|0,this.F=t[5]|0,this.G=t[6]|0,this.H=t[7]|0}get(){let{A:e,B:t,C:n,D:r,E:i,F:a,G:o,H:s}=this;return[e,t,n,r,i,a,o,s]}set(e,t,n,r,i,a,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=i|0,this.F=a|0,this.G=o|0,this.H=s|0}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(e,t){for(let n=0;n<16;n++,t+=4)X[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){let t=X[e-15],n=X[e-2],r=V(t,7)^V(t,18)^t>>>3,i=V(n,17)^V(n,19)^n>>>10;X[e]=i+X[e-7]+r+X[e-16]|0}let{A:n,B:r,C:i,D:a,E:o,F:s,G:c,H:l}=this;for(let e=0;e<64;e++){let t=V(o,6)^V(o,11)^V(o,25),u=l+t+nn(o,s,c)+un[e]+X[e]|0,d=(V(n,2)^V(n,13)^V(n,22))+rn(n,r,i)|0;l=c,c=s,s=o,o=a+u|0,a=i,i=r,r=n,n=u+d|0}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,a=a+this.D|0,o=o+this.E|0,s=s+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,i,a,o,s,c,l)}roundClean(){B(X)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),B(this.buffer)}},fn=class extends dn{constructor(){super(32,on)}};let pn=Wt(`0x428a2f98d728ae22.0x7137449123ef65cd.0xb5c0fbcfec4d3b2f.0xe9b5dba58189dbbc.0x3956c25bf348b538.0x59f111f1b605d019.0x923f82a4af194f9b.0xab1c5ed5da6d8118.0xd807aa98a3030242.0x12835b0145706fbe.0x243185be4ee4b28c.0x550c7dc3d5ffb4e2.0x72be5d74f27b896f.0x80deb1fe3b1696b1.0x9bdc06a725c71235.0xc19bf174cf692694.0xe49b69c19ef14ad2.0xefbe4786384f25e3.0x0fc19dc68b8cd5b5.0x240ca1cc77ac9c65.0x2de92c6f592b0275.0x4a7484aa6ea6e483.0x5cb0a9dcbd41fbd4.0x76f988da831153b5.0x983e5152ee66dfab.0xa831c66d2db43210.0xb00327c898fb213f.0xbf597fc7beef0ee4.0xc6e00bf33da88fc2.0xd5a79147930aa725.0x06ca6351e003826f.0x142929670a0e6e70.0x27b70a8546d22ffc.0x2e1b21385c26c926.0x4d2c6dfc5ac42aed.0x53380d139d95b3df.0x650a73548baf63de.0x766a0abb3c77b2a8.0x81c2c92e47edaee6.0x92722c851482353b.0xa2bfe8a14cf10364.0xa81a664bbc423001.0xc24b8b70d0f89791.0xc76c51a30654be30.0xd192e819d6ef5218.0xd69906245565a910.0xf40e35855771202a.0x106aa07032bbd1b8.0x19a4c116b8d2d0c8.0x1e376c085141ab53.0x2748774cdf8eeb99.0x34b0bcb5e19b48a8.0x391c0cb3c5c95a63.0x4ed8aa4ae3418acb.0x5b9cca4f7763e373.0x682e6ff3d6b2b8a3.0x748f82ee5defb2fc.0x78a5636f43172f60.0x84c87814a1f0ab72.0x8cc702081a6439ec.0x90befffa23631e28.0xa4506cebde82bde9.0xbef9a3f7b2c67915.0xc67178f2e372532b.0xca273eceea26619c.0xd186b8c721c0c207.0xeada7dd6cde0eb1e.0xf57d4f7fee6ed178.0x06f067aa72176fba.0x0a637dc5a2c898a6.0x113f9804bef90dae.0x1b710b35131c471b.0x28db77f523047d84.0x32caab7b40c72493.0x3c9ebe0a15c9bebc.0x431d67c49c100d4c.0x4cc5d4becb3e42b6.0x597f299cfc657e2a.0x5fcb6fab3ad6faec.0x6c44198c4a475817`.split(`.`).map(e=>BigInt(e))),mn=pn[0],hn=pn[1],Z=new Uint32Array(80),Q=new Uint32Array(80);var gn=class extends an{Ah=0;Al=0;Bh=0;Bl=0;Ch=0;Cl=0;Dh=0;Dl=0;Eh=0;El=0;Fh=0;Fl=0;Gh=0;Gl=0;Hh=0;Hl=0;constructor(e,t){super(128,e,16,!1),this.Ah=t[0]|0,this.Al=t[1]|0,this.Bh=t[2]|0,this.Bl=t[3]|0,this.Ch=t[4]|0,this.Cl=t[5]|0,this.Dh=t[6]|0,this.Dl=t[7]|0,this.Eh=t[8]|0,this.El=t[9]|0,this.Fh=t[10]|0,this.Fl=t[11]|0,this.Gh=t[12]|0,this.Gl=t[13]|0,this.Hh=t[14]|0,this.Hl=t[15]|0}get(){let{Ah:e,Al:t,Bh:n,Bl:r,Ch:i,Cl:a,Dh:o,Dl:s,Eh:c,El:l,Fh:u,Fl:d,Gh:f,Gl:p,Hh:m,Hl:h}=this;return[e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h]}set(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=r|0,this.Ch=i|0,this.Cl=a|0,this.Dh=o|0,this.Dl=s|0,this.Eh=c|0,this.El=l|0,this.Fh=u|0,this.Fl=d|0,this.Gh=f|0,this.Gl=p|0,this.Hh=m|0,this.Hl=h|0}_cloneInto(e){return(e||=new this.constructor).set(...this.get()),this._cloneIntoMeta(e)}process(e,t){for(let n=0;n<16;n++,t+=4)Z[n]=e.getUint32(t),Q[n]=e.getUint32(t+=4);for(let e=16;e<80;e++){let t=Z[e-15]|0,n=Q[e-15]|0,r=U(t,n,1)^U(t,n,8)^Jt(t,n,7),i=W(t,n,1)^W(t,n,8)^Yt(t,n,7),a=Z[e-2]|0,o=Q[e-2]|0,s=U(a,o,19)^G(a,o,61)^Jt(a,o,6),c=W(a,o,19)^K(a,o,61)^Yt(a,o,6),l=Qt(i,c,Q[e-7],Q[e-16]),u=$t(l,r,s,Z[e-7],Z[e-16]);Z[e]=u|0,Q[e]=l|0}let{Ah:n,Al:r,Bh:i,Bl:a,Ch:o,Cl:s,Dh:c,Dl:l,Eh:u,El:d,Fh:f,Fl:p,Gh:m,Gl:h,Hh:g,Hl:_}=this;for(let e=0;e<80;e++){let t=U(u,d,14)^U(u,d,18)^G(u,d,41),v=W(u,d,14)^W(u,d,18)^K(u,d,41),ee=u&f^~u&m,y=d&p^~d&h,b=en(_,v,y,hn[e],Q[e]),te=tn(b,g,t,ee,mn[e],Z[e]),x=b|0,ne=U(n,r,28)^G(n,r,34)^G(n,r,39),re=W(n,r,28)^K(n,r,34)^K(n,r,39),S=n&i^n&o^i&o,ie=r&a^r&s^a&s;g=m|0,_=h|0,m=f|0,h=p|0,f=u|0,p=d|0,{h:u,l:d}=q(c|0,l|0,te|0,x|0),c=o|0,l=s|0,o=i|0,s=a|0,i=n|0,a=r|0;let ae=Xt(x,re,ie);n=Zt(ae,te,ne,S),r=ae|0}({h:n,l:r}=q(this.Ah|0,this.Al|0,n|0,r|0)),{h:i,l:a}=q(this.Bh|0,this.Bl|0,i|0,a|0),{h:o,l:s}=q(this.Ch|0,this.Cl|0,o|0,s|0),{h:c,l}=q(this.Dh|0,this.Dl|0,c|0,l|0),{h:u,l:d}=q(this.Eh|0,this.El|0,u|0,d|0),{h:f,l:p}=q(this.Fh|0,this.Fl|0,f|0,p|0),{h:m,l:h}=q(this.Gh|0,this.Gl|0,m|0,h|0),{h:g,l:_}=q(this.Hh|0,this.Hl|0,g|0,_|0),this.set(n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_)}roundClean(){B(Z,Q)}destroy(){this.destroyed=!0,B(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},_n=class extends gn{constructor(){super(64,sn)}};let vn={sha1:ln,sha256:Lt(()=>new fn,zt(1)),sha512:Lt(()=>new _n,zt(3))},yn=Object.freeze(Object.keys(vn));var bn=class{name=`noble`;algorithms=yn;hmac(e,t,n){let r=D(e,{supported:this.algorithms,plugin:this.name});return Vt(vn[r],t,n)}randomBytes(e){return Rt(e)}constantTimeEqual(e,t){return Ne(e,t)}};let xn=Object.freeze(new bn);function Sn(e){return{secret:e.secret,strategy:e.strategy??`totp`,crypto:e.crypto??xn,base32:e.base32??Et,algorithm:e.algorithm??`sha1`,digits:e.digits??6,period:e.period??30,epoch:e.epoch??Math.floor(Date.now()/1e3),t0:e.t0??0,counter:e.counter,guardrails:e.guardrails??E(),hooks:e.hooks}}function Cn(e){return{...Sn(e),token:e.token,epochTolerance:e.epochTolerance??0,counterTolerance:e.counterTolerance??0,afterTimeStep:e.afterTimeStep}}function $(e,t,n){if(e===`totp`)return n.totp();if(e===`hotp`){if(t===void 0)throw new C(`Counter is required for HOTP strategy. Example: { strategy: 'hotp', counter: 0 }`);return n.hotp(t)}throw new C(`Unknown OTP strategy: ${e}. Valid strategies are 'totp' or 'hotp'.`)}function wn(e){let{crypto:t=xn,base32:n=Et,length:r=20}=e||{};return A({crypto:t,base32:n,length:r})}function Tn(e){let{strategy:t=`totp`,issuer:n,label:r,secret:i,algorithm:a=`sha1`,digits:o=6,period:s=30,counter:c}=e;return $(t,c,{totp:()=>Xe({issuer:n,label:r,secret:i,algorithm:a,digits:o,period:s}),hotp:e=>Ze({issuer:n,label:r,secret:i,algorithm:a,digits:o,counter:e})})}async function En(e){let t=Sn(e),{secret:n,crypto:r,base32:i,algorithm:a,digits:o,hooks:s}=t,c={secret:n,crypto:r,base32:i,algorithm:a,digits:o,hooks:s};return $(t.strategy,t.counter,{totp:()=>L({...c,period:t.period,epoch:t.epoch,t0:t.t0,guardrails:t.guardrails}),hotp:e=>F({...c,counter:e,guardrails:t.guardrails})})}function Dn(e){let t=Sn(e),{secret:n,crypto:r,base32:i,algorithm:a,digits:o,hooks:s}=t,c={secret:n,crypto:r,base32:i,algorithm:a,digits:o,hooks:s};return $(t.strategy,t.counter,{totp:()=>at({...c,period:t.period,epoch:t.epoch,t0:t.t0,guardrails:t.guardrails}),hotp:e=>I({...c,counter:e,guardrails:t.guardrails})})}async function On(e){let t=Cn(e),{secret:n,token:r,crypto:i,base32:a,algorithm:o,digits:s,hooks:c}=t,l={secret:n,token:r,crypto:i,base32:a,algorithm:o,digits:s,hooks:c};return $(t.strategy,t.counter,{totp:()=>lt({...l,period:t.period,epoch:t.epoch,t0:t.t0,epochTolerance:t.epochTolerance,afterTimeStep:t.afterTimeStep,guardrails:t.guardrails}),hotp:e=>tt({...l,counter:e,counterTolerance:t.counterTolerance,guardrails:t.guardrails})})}function kn(e){let t=Cn(e),{secret:n,token:r,crypto:i,base32:a,algorithm:o,digits:s,hooks:c}=t,l={secret:n,token:r,crypto:i,base32:a,algorithm:o,digits:s,hooks:c};return $(t.strategy,t.counter,{totp:()=>ut({...l,period:t.period,epoch:t.epoch,t0:t.t0,epochTolerance:t.epochTolerance,afterTimeStep:t.afterTimeStep,guardrails:t.guardrails}),hotp:e=>nt({...l,counter:e,counterTolerance:t.counterTolerance,guardrails:t.guardrails})})}var An=class{strategy;crypto;base32;guardrails;constructor(e={}){let{strategy:t=`totp`,crypto:n=xn,base32:r=Et,guardrails:i}=e;this.strategy=t,this.crypto=n,this.base32=r,this.guardrails=E(i)}getStrategy(){return this.strategy}generateSecret(e=20){return A({crypto:this.crypto,base32:this.base32,length:e})}async generate(e){return En({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateSync(e){return Dn({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}async verify(e){return On({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}verifySync(e){return kn({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateURI(e){return Tn({...e,strategy:this.strategy})}};return e.AlgorithmError=h,e.AlgorithmUnsupportedError=g,e.HMACError=b,e.HOTP=Qe,e.NobleCryptoPlugin=bn,e.OTP=An,e.ScureBase32Plugin=Tt,e.TOTP=rt,e.createGuardrails=E,e.generate=En,e.generateSecret=wn,e.generateSync=Dn,e.generateURI=Tn,e.stringToBytes=Pe,e.verify=On,e.verifySync=kn,e.wrapResult=He,e.wrapResultAsync=Ue,e})({});
7
4
  //# sourceMappingURL=index.global.js.map
package/lib/src/web.js CHANGED
@@ -37,7 +37,6 @@ export class Web extends EventEmitter {
37
37
  const limiter = rateLimit(config.limiter);
38
38
  app.set('trust proxy', config.trustProxy);
39
39
  app.set('view engine', 'ejs');
40
- app.set('view options', { outputFunctionName: 'echo' });
41
40
  app.set('views', path.join(expectedCWD, 'views'));
42
41
  app.use((_, res, next) => {
43
42
  res.set('X-Robots-Tag', 'noindex, nofollow');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inner-dj/server",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "description": "server component of inner-dj",
5
5
  "keywords": [
6
6
  "jukebox",
@@ -44,32 +44,32 @@
44
44
  ],
45
45
  "dependencies": {
46
46
  "@inner-dj/common": "0.2.8",
47
- "@inner-dj/discord-receiver": "0.2.8",
48
- "@inner-dj/twilio-receiver": "0.2.8",
47
+ "@inner-dj/discord-receiver": "0.2.9",
48
+ "@inner-dj/twilio-receiver": "0.2.9",
49
49
  "better-sqlite3": "^13.0.3",
50
50
  "bulma": "^1.0.4",
51
51
  "content-disposition": "3.0.0",
52
- "ejs": "^7.0.1",
52
+ "ejs": "^7.0.2",
53
53
  "express": "^5.3.0",
54
- "express-rate-limit": "^8.7.1",
54
+ "express-rate-limit": "^8.7.2",
55
55
  "express-session": "^1.19.0",
56
56
  "express-ws": "^5.0.2",
57
57
  "get-youtube-id-ng": "1.0.1",
58
58
  "jsonwebtoken": "9.0.3",
59
- "otplib": "^13.5.0",
59
+ "otplib": "^13.6.0",
60
60
  "qr-creator": "^1.0.0",
61
61
  "yaml": "^2.9.1"
62
62
  },
63
63
  "devDependencies": {
64
- "@sindresorhus/tsconfig": "8.1.0",
64
+ "@sindresorhus/tsconfig": "9.0.0",
65
65
  "@types/better-sqlite3": "^9.6.0",
66
66
  "@types/express": "^5.0.6",
67
67
  "@types/express-session": "^1.19.0",
68
68
  "@types/express-ws": "^3.0.6",
69
69
  "@types/jsonwebtoken": "^9.0.10",
70
- "@types/node": "^26.2.0",
70
+ "@types/node": "^26.6.6",
71
71
  "@types/ws": "^8.18.2",
72
- "forking-build-shit": "1.1.7",
72
+ "forking-build-shit": "1.1.9",
73
73
  "npm-attribution-generator": "^2.0.0",
74
74
  "typescript": "^7.0.2"
75
75
  },
@@ -107,7 +107,7 @@ SOFTWARE.
107
107
  ******************************
108
108
 
109
109
  body-parser
110
- 2.3.0 <https://github.com/expressjs/body-parser>
110
+ 2.4.0 <https://github.com/expressjs/body-parser>
111
111
  (The MIT License)
112
112
 
113
113
  Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
@@ -217,7 +217,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
217
217
  ******************************
218
218
 
219
219
  discord.js
220
- 14.27.0 <https://github.com/discordjs/discord.js>
220
+ 14.28.0 <https://github.com/discordjs/discord.js>
221
221
  Apache License
222
222
  Version 2.0, January 2004
223
223
  http://www.apache.org/licenses/
@@ -414,7 +414,7 @@ discord.js
414
414
  ******************************
415
415
 
416
416
  ejs
417
- 7.0.1 <https://github.com/mde/ejs>
417
+ 7.0.2 <https://github.com/mde/ejs>
418
418
 
419
419
  Apache License
420
420
  Version 2.0, January 2004
@@ -652,7 +652,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
652
652
  ******************************
653
653
 
654
654
  express-rate-limit
655
- 8.7.1 <https://github.com/express-rate-limit/express-rate-limit>
655
+ 8.7.2 <https://github.com/express-rate-limit/express-rate-limit>
656
656
  MIT License
657
657
 
658
658
  Copyright 2023 Nathan Friedly, Vedant K
@@ -789,7 +789,7 @@ SOFTWARE.
789
789
  ******************************
790
790
 
791
791
  otplib
792
- 13.5.0 <https://github.com/yeojz/otplib>
792
+ 13.6.0 <https://github.com/yeojz/otplib>
793
793
  MIT License
794
794
 
795
795
  Copyright (c) 2026 Gerald Yeo
@@ -870,7 +870,7 @@ SOFTWARE.
870
870
  ******************************
871
871
 
872
872
  twilio
873
- 6.0.2 <https://github.com/twilio/twilio-node>
873
+ 6.2.0 <https://github.com/twilio/twilio-node>
874
874
  MIT License
875
875
 
876
876
  Copyright (C) 2023, Twilio, Inc. <https://www.twilio.com/help/contact>