@inner-dj/server 0.2.5 → 0.2.6

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.
package/README.md CHANGED
@@ -94,3 +94,7 @@ Important pages:
94
94
  Load the `/admin` page on a device or screen that guests can see. The page has instructions that guests can follow. Skip tracks with `/admin/controls` when necessary.
95
95
 
96
96
  Make sure the device displaying `/admin` has its system time set correctly. Otherwise the QR codes it generates will not work.
97
+
98
+ ## Screenshot
99
+
100
+ ![Screenshot of the inner-dj server interface](../../.github/assets/server-screenshot.png "Server interface")
@@ -1 +1 @@
1
- var otplib=(()=>{var L=Object.defineProperty,U=Object.getOwnPropertyDescriptor,H=Object.getOwnPropertyNames,P=Object.prototype.hasOwnProperty,X={},e=(((e,t)=>{for(var r in t)L(e,r,{get:t[r],enumerable:!0})})(X,{HOTP:()=>De,NobleCryptoPlugin:()=>St,OTP:()=>Ot,ScureBase32Plugin:()=>tt,TOTP:()=>Xe,createGuardrails:()=>w,generate:()=>Rt,generateSecret:()=>function(e){var{crypto:e=It,base32:t=rt,length:r=20}=e||{};return n({crypto:e,base32:t,length:r})},generateSync:()=>Mt,generateURI:()=>kt,stringToBytes:()=>Ae,verify:()=>Bt,verifySync:()=>Nt,wrapResult:()=>function(t){return(...e)=>{try{return ke(t(...e))}catch(e){return Re(e)}}},wrapResultAsync:()=>function(t){return async(...e)=>{try{return ke(await t(...e))}catch(e){return Re(e)}}}}),class extends Error{constructor(e,t){super(e,t),this.name="OTPError"}}),t=class extends e{constructor(e){super(e),this.name="SecretError"}},G=class extends t{constructor(e,t){super(`Secret must be at least ${e} bytes (${8*e} bits), got ${t} bytes`),this.name="SecretTooShortError"}},$=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"}},F=class extends t{constructor(){super("Counter must be non-negative"),this.name="CounterNegativeError"}},Y=class extends t{constructor(){super("Counter exceeds maximum safe integer value"),this.name="CounterOverflowError"}},j=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"}},V=class extends t{constructor(e){super(`Period must be at least ${e} second(s)`),this.name="PeriodTooSmallError"}},z=class extends t{constructor(e){super(`Period must not exceed ${e} seconds`),this.name="PeriodTooLargeError"}},t=class extends e{constructor(e){super(e),this.name="TokenError"}},J=class extends t{constructor(e,t){super(`Token must be ${e} digits, got `+t),this.name="TokenLengthError"}},K=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"}},Q=class extends t{constructor(e,t){super("Random byte generation failed: "+e,t),this.name="RandomBytesError"}},Z=class extends e{constructor(e){super(e),this.name="CounterToleranceError"}},ee=class extends Z{constructor(e,t){super(`Counter tolerance validation failed: total checks (${t}) exceeds MAX_WINDOW (${e})`),this.name="CounterToleranceTooLargeError"}},te=class extends Z{constructor(){super("Counter tolerance cannot contain negative values"),this.name="CounterToleranceNegativeError"}},re=class extends e{constructor(e){super(e),this.name="EpochToleranceError"}},oe=class extends re{constructor(){super("Epoch tolerance cannot contain negative values"),this.name="EpochToleranceNegativeError"}},se=class extends re{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"}},ne=class extends t{constructor(){super("Crypto plugin is required."),this.name="CryptoPluginMissingError"}},ie=class extends t{constructor(){super("Base32 plugin is required."),this.name="Base32PluginMissingError"}},o=class extends e{constructor(e){super(e),this.name="ConfigurationError"}},ae=class extends o{constructor(){super("Secret is required. Use generateSecret() to create one, or provide via { secret: 'YOUR_BASE32_SECRET' }"),this.name="SecretMissingError"}},ce=class extends o{constructor(){super("Label is required for URI generation. Example: { label: 'user@example.com' }"),this.name="LabelMissingError"}},he=class extends o{constructor(){super("Issuer is required for URI generation. Example: { issuer: 'MyApp' }"),this.name="IssuerMissingError"}},ue=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"}},de=class extends t{constructor(){super("afterTimeStep must be >= 0"),this.name="AfterTimeStepNegativeError"}},le=class extends t{constructor(){super("Invalid afterTimeStep: non-integer value"),this.name="AfterTimeStepNotIntegerError"}},fe=class extends t{constructor(){super("Invalid afterTimeStep: cannot be greater than current time step plus window"),this.name="AfterTimeStepRangeExceededError"}},pe=new TextEncoder,ge=(new TextDecoder,20),be=30,e=Number.MAX_SAFE_INTEGER,ye=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 E=Object.freeze({MIN_SECRET_BYTES:16,MAX_SECRET_BYTES:64,MIN_PERIOD:1,MAX_PERIOD:3600,MAX_COUNTER:e,MAX_WINDOW:99,[ye]:!1});function w(e){if(!e)return E;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={...E,...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,[ye]:!0})}function x(e,t=E){if(e.length<t.MIN_SECRET_BYTES)throw new G(t.MIN_SECRET_BYTES,e.length);if(t.MAX_SECRET_BYTES<e.length)throw new $(t.MAX_SECRET_BYTES,e.length)}function me(e,t=E){if("number"==typeof e){if(!Number.isFinite(e)||!Number.isInteger(e))throw new j;if(!Number.isSafeInteger(e))throw new Y}e="bigint"==typeof e?e:BigInt(e);if(e<0n)throw new F;if(e>BigInt(t.MAX_COUNTER))throw new Y}function Ee(e){if(!Number.isFinite(e))throw new q;if(e<0)throw new W}function we(e,t=E){if(!Number.isInteger(e)||e<t.MIN_PERIOD)throw new V(t.MIN_PERIOD);if(e>t.MAX_PERIOD)throw new z(t.MAX_PERIOD)}function xe(e,t){if(e.length!==t)throw new J(t,e.length);if(!/^\d+$/.test(e))throw new K}function ve(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 Te(e,t){return(e%10**t).toString().padStart(t,"0")}function Ae(e){return"string"==typeof e?pe.encode(e):e}function v(e,t){return"string"==typeof e?(i(t),t.decode(e)):e}function n(e){var{crypto:e,base32:t,length:r=ge}=e,e=(T(e),i(t),e.randomBytes(r));return t.encode(e,{padding:!1})}function Se(e=0){return Array.isArray(e)?e:[0,e]}function T(e){if(!e)throw new ne}function i(e){if(!e)throw new ie}function A(e){if(!e)throw new ae}function Ie(e){if(!e)throw new ce}function Ce(e){if(!e)throw new he}function _e(e){if("string"!=typeof e)throw new ue}function ke(e){return{ok:!0,value:e}}function Re(e){return{ok:!1,error:e}}var Me=class{constructor(e){this.crypto=e}get plugin(){return this.crypto}async hmac(t,e,r){try{var o=this.crypto.hmac(t,e,r);return o instanceof Promise?await o:o}catch(e){t=e instanceof Error?e.message:String(e);throw new s(t,{cause:e})}}hmacSync(t,e,r){try{var o=this.crypto.hmac(t,e,r);if(o instanceof Promise)throw new s("Crypto plugin does not support synchronous HMAC operations");return o}catch(e){if(e instanceof s)throw e;t=e instanceof Error?e.message:String(e);throw new s(t,{cause:e})}}randomBytes(t){try{return this.crypto.randomBytes(t)}catch(e){t=e instanceof Error?e.message:String(e);throw new Q(t,{cause:e})}}};function Be(e){var{type:e,label:t,params:r}=e,t=`otpauth://${e}/${t.split(":").map(e=>encodeURIComponent(e)).join(":")}?`,o=[];return r.secret&&o.push("secret="+encodeURIComponent(r.secret)),r.issuer&&o.push("issuer="+encodeURIComponent(r.issuer)),r.algorithm&&"sha1"!==r.algorithm&&o.push("algorithm="+r.algorithm.toUpperCase()),r.digits&&6!==r.digits&&o.push("digits="+r.digits),"hotp"===e&&void 0!==r.counter&&o.push("counter="+r.counter),"totp"===e&&void 0!==r.period&&30!==r.period&&o.push("period="+r.period),t+=o.join("&")}function Ne(e){var{issuer:e,label:t,secret:r,algorithm:o="sha1",digits:s=6,period:n=30}=e;return Be({type:"totp",label:e?e+":"+t:t,params:{secret:r,issuer:e,algorithm:o,digits:s,period:n}})}function Oe(e){var{issuer:e,label:t,secret:r,counter:o=0,algorithm:s="sha1",digits:n=6}=e;return Be({type:"hotp",label:e?e+":"+t:t,params:{secret:r,issuer:e,algorithm:s,digits:n,counter:o}})}var De=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=w(e.guardrails)}generateSecret(){var{crypto:e,base32:t}=this.options;return T(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=(A(o),T(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=(A(o),T(s),t?.guardrails??this.guardrails);return Pe({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 A(o),Ie(r),Ce(t),_e(o),Oe({issuer:t,label:r,secret:o,algorithm:s,digits:n,counter:e})}};function Le(e){var{secret:e,counter:t,algorithm:r="sha1",digits:o=6,crypto:s,base32:n,guardrails:i,hooks:a}=e,e=(A(e),T(s),v(e,n)),n=(x(e,i),me(t,i),new Me(s));return i="bigint"==typeof(i=t)?i:BigInt(i),s=new ArrayBuffer(8),new DataView(s).setBigUint64(0,i,!1),{ctx:n,algorithm:r,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}=Le(e),e=await e.hmac(t,o,s),t=n?.truncateDigest?n.truncateDigest(e):ve(e);return n?.encodeToken?n.encodeToken(t,r):Te(t,r)}function Ue(e){var{ctx:e,algorithm:t,digits:r,secretBytes:o,counterBytes:s,hooks:n}=Le(e),e=e.hmacSync(t,o,s),t=n?.truncateDigest?n.truncateDigest(e):ve(e);return n?.encodeToken?n.encodeToken(t,r):Te(t,r)}function He(e){let{secret:t,counter:r,token:o,algorithm:s="sha1",digits:n=6,crypto:i,base32:a,counterTolerance:c=0,guardrails:h=w(),hooks:u}=e,d=(A(t),T(i),v(t,a));x(d,h),me(r,h),u?.validateToken?u.validateToken(o,n):xe(o,n);var[e,l=E]=[c,h],[e,f]=Se(e);if(!Number.isSafeInteger(e)||!Number.isSafeInteger(f))throw new Z("Counter tolerance values must be safe integers");if(e<0||f<0)throw new te;if((e=e+f+1)>l.MAX_WINDOW)throw new ee(l.MAX_WINDOW,e);var f="bigint"==typeof r?Number(r):r,[l,e]=Se(c);return{token:o,counterNum:f,past:l,future:e,totalChecks:l+e+1,crypto:i,getGenerateOptions:e=>({secret:d,counter:e,algorithm:s,digits:n,crypto:i,guardrails:h,hooks:u})}}async function Pe(e){var{token:t,counterNum:r,past:o,totalChecks:s,crypto:n,getGenerateOptions:i}=He(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 Xe=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=w(e.guardrails)}generateSecret(){var{crypto:e,base32:t}=this.options;return T(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=(A(r),T(o),e?.guardrails??this.guardrails);return $e({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:d=0,afterTimeStep:l}=r,t=(A(o),T(s),t?.guardrails??this.guardrails);return We({secret:o,token:e,algorithm:i,digits:a,period:c,epoch:h??Math.floor(Date.now()/1e3),t0:u,epochTolerance:d,afterTimeStep:l,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 A(e),Ie(r),Ce(t),_e(e),Ne({issuer:t,label:r,secret:e,algorithm:s,digits:n,period:i})}};function Ge(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=w(),hooks:h}=e,e=(A(e),T(i),v(e,a)),a=(x(e,c),Ee(t),we(o,c),Math.floor((t-r)/o));return{secret:e,counter:a,algorithm:s,digits:n,crypto:i,guardrails:c,hooks:h}}async function $e(e){return h(Ge(e))}function Fe(e){return Ue(Ge(e))}function Ye(e,t){return void 0!==t&&e<=t}function je(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:d,guardrails:l=w(),hooks:f}=e,p=(A(t),T(c),v(t,h));x(p,l),Ee(o),we(n,l),f?.validateToken?f.validateToken(r,a):xe(r,a);var[e,g=be,b=E]=[u,n,l],[e,y]=Array.isArray(e)?e:[e,e];if(!Number.isSafeInteger(e)||!Number.isSafeInteger(y))throw new re("Epoch tolerance values must be safe integers");if(e<0||y<0)throw new oe;if((b=(b.MAX_WINDOW-1)*g)<(g=e+y))throw new se(b,g);var e=Math.floor((o-s)/n),[b,g]=([y=0]=[u],Array.isArray(y)?y:[y,y]),y=Math.max(0,Math.floor((o-b-s)/n)),b=Math.floor((o+g-s)/n),g=d,m=b;if(void 0!==g){if(g<0)throw new de;if(!Number.isSafeInteger(g))throw new le;if(m<g)throw new fe}return{token:r,crypto:c,minCounter:y,maxCounter:b,currentCounter:e,t0:s,period:n,afterTimeStep:d,getGenerateOptions:e=>({secret:p,epoch:e*n+s,t0:s,period:n,algorithm:i,digits:a,crypto:c,guardrails:l,hooks:f})}}async function We(t){var{token:r,crypto:o,minCounter:t,maxCounter:s,currentCounter:n,t0:i,period:a,afterTimeStep:c,getGenerateOptions:h}=je(t);for(let e=t;e<=s;e++)if(!Ye(e,c)){var u=await $e(h(e));if(o.constantTimeEqual(u,r))return{valid:!0,delta:e-n,epoch:e*a+i,timeStep:e}}return{valid:!1}}function qe(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 Ve(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(!qe(!0,t))throw new TypeError(e+": array of strings expected")}var Je=(e,t)=>0===t?e:Je(t,e%t),u=(e,t)=>e+(t-Je(e,t)),Ke=(()=>{var t=[];for(let e=0;e<40;e++)t.push(2**e);return t})();function Qe(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=Ke[t],a=Ke[r]-1,c=[];for(var h of e){if(Ve(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=Ke[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 Ze,d,l,et=Object.freeze((t=[((r,o=!1)=>{if(Ve(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 Qe(Array.from(e),8,r,!o);throw new TypeError("radix2.encode input should be Uint8Array")},decode:e=>{var t="radix2.decode";if(qe(!1,e))return Uint8Array.from(Qe(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"),(l="=",Ve(d=5),a("padding",l),{encode(e){for(c("padding.encode",e);e.length*d%8;)e.push(l);return e},decode(e){c("padding.decode",e);let t=e.length;if(t*d%8)throw new Error("padding: invalid, string should have whole number of bytes");for(;0<t&&e[t-1]===l;t--)if((t-1)*d%8==0)throw new Error("padding: invalid, string has too much padding");return e.slice(0,t)}}),(a("join",Ze=""),{encode:e=>(c("join.decode",e),e.join(Ze)),decode:e=>(a("join.decode",e),e.split(Ze))})],e=e=>e,_=(t,r)=>e=>t(r(e)),{encode:t.map(e=>e.encode).reduceRight(_,e),decode:t.map(e=>e.decode).reduce(_,e)})),tt=class{name="scure";encode(e,t={}){var{padding:t=!1}=t,e=et.encode(e);return t?e:e.replace(/=+$/,"")}decode(e){try{var t=e.toUpperCase(),r=t.padEnd(8*Math.ceil(t.length/8),"=");return et.decode(r)}catch(e){throw new Error("Invalid Base32 string: "+e.message)}}},rt=Object.freeze(new tt);function ot(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 st(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 f(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 nt(e,t){st(e,void 0,"digestInto() output");t=t.outputLen;if(e.length<t)throw new RangeError('"digestInto() output" expected to be of length >='+t)}function p(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}function it(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function g(e,t){return e<<32-t|e>>>t}function at(e,t){return e<<t|e>>>32-t>>>0}function ct(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 t=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])}),ht=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(ot(r.outputLen),ot(r.blockLen),r.outputLen<1)throw new Error('"outputLen" must be >= 1');if(r.blockLen<1)throw new Error('"blockLen" must be >= 1');if(st(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),p(o)}update(e){return f(this),this.iHash.update(e),this}digestInto(e){f(this),nt(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()}},ut=((_=(e,t,r)=>new ht(e,t).update(r).digest()).create=(e,t)=>new ht(e,t),_);function dt(e,t,r){return e&t^~e&r}function lt(e,t,r){return e&t^e&r^t&r}var e=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=it(this.buffer)}update(t){f(this),st(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=it(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){f(this),nt(e,this),this.finished=!0;let{buffer:t,view:r,blockLen:o,isLE:s}=this,n=this.pos;t[n++]=128,p(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=it(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]),S=new Uint32Array(80),ft=class extends e{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)S[e]=t.getUint32(r,!1);for(let e=16;e<80;e++)S[e]=at(S[e-3]^S[e-8]^S[e-14]^S[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=dt(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=at(o,5)+e+a+t+S[r]|0;a=i,i=n,n=at(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(S)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0),p(this.buffer)}},pt=ct(()=>new ft),I=BigInt(4294967295),gt=BigInt(32);var bt=(e,t,r)=>e<<32-r|t>>>r,R=(e,t,r)=>e>>>r|t<<32-r,M=(e,t,r)=>e<<32-r|t>>>r,B=(e,t,r)=>e<<64-r|t>>>r-32,yt=(e,t,r)=>e>>>r-32|t<<64-r;function N(e,t,r,o){t=(t>>>0)+(o>>>0);return{h:e+r+(t/2**32|0)|0,l:0|t}}var mt=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]),C=new Uint32Array(64),_=class extends e{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)C[e]=t.getUint32(r,!1);for(let e=16;e<64;e++){var o=C[e-15],s=C[e-2],o=g(o,7)^g(o,18)^o>>>3,s=g(s,17)^g(s,19)^s>>>10;C[e]=s+C[e-7]+o+C[e-16]|0}let{A:n,B:i,C:a,D:c,E:h,F:u,G:d,H:l}=this;for(let e=0;e<64;e++){var f=g(h,6)^g(h,11)^g(h,25),f=l+f+dt(h,u,d)+mt[e]+C[e]|0,p=(g(n,2)^g(n,13)^g(n,22))+lt(n,i,a)|0;l=d,d=u,u=h,h=c+f|0,c=a,a=i,i=n,n=f+p|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,d=d+this.G|0,l=l+this.H|0,this.set(n,i,a,c,h,u,d,l)}roundClean(){p(C)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),p(this.buffer)}},Et=class extends _{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)}},_=((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&I),l:Number(a>>gt&I)}:{h:0|Number(a>>gt&I),l:0|Number(a&I)};[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))),wt=_[0],xt=_[1],O=new Uint32Array(80),D=new Uint32Array(80),_=class extends e{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:d,Gh:l,Gl:f,Hh:p,Hl:g}=this;return[e,t,r,o,s,n,i,a,c,h,u,d,l,f,p,g]}set(e,t,r,o,s,n,i,a,c,h,u,d,l,f,p,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|d,this.Gh=0|l,this.Gl=0|f,this.Hh=0|p,this.Hl=0|g}process(t,r){for(let e=0;e<16;e++,r+=4)O[e]=t.getUint32(r),D[e]=t.getUint32(r+=4);for(let e=16;e<80;e++){var o=0|O[e-15],s=0|D[e-15],n=R(o,s,1)^R(o,s,8)^o>>>7,o=M(o,s,1)^M(o,s,8)^bt(o,s,7),s=0|O[e-2],i=0|D[e-2],a=R(s,i,19)^B(s,i,61)^s>>>6,o=(o>>>0)+((M(s,i,19)^yt(s,i,61)^bt(s,i,6))>>>0)+(D[e-7]>>>0)+(D[e-16]>>>0);s=O[e-7],i=O[e-16],O[e]=0|(n+a+s+i+(o/2**32|0)|0),D[e]=0|o}let{Ah:c,Al:h,Bh:u,Bl:d,Ch:l,Cl:f,Dh:p,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=R(b,y,14)^R(b,y,18)^B(b,y,41),S=M(b,y,14)^M(b,y,18)^yt(b,y,41),I=b&m^~b&w,C=y&E^~y&x,S=(T>>>0)+(S>>>0)+(C>>>0)+(xt[e]>>>0)+(D[e]>>>0),C=(C=v,_=wt[e],k=O[e],C+A+I+_+k+(S/2**32|0)|0),A=0|S,I=R(c,h,28)^B(c,h,34)^B(c,h,39),_=M(c,h,28)^yt(c,h,34)^yt(c,h,39),k=c&u^c&l^u&l,S=h&d^h&f^d&f,A=(v=0|w,T=0|x,w=0|m,x=0|E,m=0|b,E=0|y,{h:b,l:y}=N(0|p,0|g,0|C,0|A),p=0|l,g=0|f,l=0|u,f=0|d,u=0|c,d=0|h,(A>>>0)+(_>>>0)+(S>>>0));c=C+I+k+(A/2**32|0)|0,h=0|A}({h:c,l:h}=N(0|this.Ah,0|this.Al,0|c,0|h)),{h:u,l:d}=N(0|this.Bh,0|this.Bl,0|u,0|d),{h:l,l:f}=N(0|this.Ch,0|this.Cl,0|l,0|f),{h:p,l:g}=N(0|this.Dh,0|this.Dl,0|p,0|g),{h:b,l:y}=N(0|this.Eh,0|this.El,0|b,0|y),{h:m,l:E}=N(0|this.Fh,0|this.Fl,0|m,0|E),{h:w,l:x}=N(0|this.Gh,0|this.Gl,0|w,0|x),{h:v,l:T}=N(0|this.Hh,0|this.Hl,0|v,0|T),this.set(c,h,u,d,l,f,p,g,b,y,m,E,w,x,v,T)}roundClean(){p(O,D)}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)}},vt=class extends _{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)}},Tt=ct(()=>new Et,t(1)),At=ct(()=>new vt,t(3)),St=class{name="noble";hmac(e,t,r){return ut("sha1"===e?pt:"sha256"===e?Tt:At,t,r)}randomBytes(e){var[e=32]=[e],t=(ot(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=Ae(e),s=Ae(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}}},It=Object.freeze(new St);function Ct(e){return{secret:e.secret,strategy:e.strategy??"totp",crypto:e.crypto??It,base32:e.base32??rt,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??w(),hooks:e.hooks}}function _t(e){return{...Ct(e),token:e.token,epochTolerance:e.epochTolerance??0,counterTolerance:e.counterTolerance??0,afterTimeStep:e.afterTimeStep}}function k(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 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 k(t,c,{totp:()=>Ne({issuer:r,label:o,secret:s,algorithm:n,digits:i,period:a}),hotp:e=>Oe({issuer:r,label:o,secret:s,algorithm:n,digits:i,counter:e})})}async function Rt(e){let t=Ct(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 k(t.strategy,t.counter,{totp:()=>$e({...c,period:t.period,epoch:t.epoch,t0:t.t0,guardrails:t.guardrails}),hotp:e=>h({...c,counter:e,guardrails:t.guardrails})})}function Mt(e){let t=Ct(e),{secret:r,crypto:o,base32:s,algorithm:n,digits:i}=t,a={secret:r,crypto:o,base32:s,algorithm:n,digits:i};return k(t.strategy,t.counter,{totp:()=>Fe({...a,period:t.period,epoch:t.epoch,t0:t.t0,guardrails:t.guardrails}),hotp:e=>Ue({...a,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 k(t.strategy,t.counter,{totp:()=>We({...h,period:t.period,epoch:t.epoch,t0:t.t0,epochTolerance:t.epochTolerance,afterTimeStep:t.afterTimeStep,guardrails:t.guardrails}),hotp:e=>Pe({...h,counter:e,counterTolerance:t.counterTolerance,guardrails:t.guardrails})})}function Nt(e){let d=_t(e),{secret:t,token:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a}=d,l={secret:t,token:r,crypto:o,base32:s,algorithm:n,digits:i,hooks:a};return k(d.strategy,d.counter,{totp:()=>{var{token:t,crypto:r,minCounter:o,maxCounter:s,currentCounter:n,t0:i,period:a,afterTimeStep:c,getGenerateOptions:h}=je(o={...l,period:d.period,epoch:d.epoch,t0:d.t0,epochTolerance:d.epochTolerance,afterTimeStep:d.afterTimeStep,guardrails:d.guardrails});for(let e=o;e<=s;e++)if(!Ye(e,c)){var u=Fe(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}=He({...l,counter:e,counterTolerance:d.counterTolerance,guardrails:d.guardrails});for(let e=Math.max(0,o-r);e<s;e++){var a=e-o,c=Ue(i(r+a));if(n.constantTimeEqual(c,t))return{valid:!0,delta:0|a}}return{valid:!1}}})}var Ot=class{strategy;crypto;base32;guardrails;constructor(e={}){var{strategy:e="totp",crypto:t=It,base32:r=rt,guardrails:o}=e;this.strategy=e,this.crypto=t,this.base32=r,this.guardrails=w(o)}getStrategy(){return this.strategy}generateSecret(e=20){return n({crypto:this.crypto,base32:this.base32,length:e})}async generate(e){return Rt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateSync(e){return Mt({...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 Nt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateURI(e){return kt({...e,strategy:this.strategy})}};return e=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||L(t,e,{get:()=>r[e],enumerable:!(s=U(r,e))||s.enumerable});return t})(L({},"__esModule",{value:!0}),e)})();
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,4 +1,4 @@
1
- "use strict";var otplib=(()=>{var It=Object.defineProperty;var Nr=Object.getOwnPropertyDescriptor;var $r=Object.getOwnPropertyNames;var jr=Object.prototype.hasOwnProperty;var Fr=(t,e)=>{for(var r in e)It(t,r,{get:e[r],enumerable:!0})},qr=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of $r(e))!jr.call(t,n)&&n!==r&&It(t,n,{get:()=>e[n],enumerable:!(o=Nr(e,n))||o.enumerable});return t};var Wr=t=>qr(It({},"__esModule",{value:!0}),t);var un={};Fr(un,{HOTP:()=>Ve,NobleCryptoPlugin:()=>Ke,OTP:()=>At,ScureBase32Plugin:()=>Fe,TOTP:()=>$e,createGuardrails:()=>b,generate:()=>Ot,generateSecret:()=>Gr,generateSync:()=>Et,generateURI:()=>Tt,stringToBytes:()=>Ue,verify:()=>wt,verifySync:()=>Pt,wrapResult:()=>kt,wrapResultAsync:()=>Lt});var w=class extends Error{constructor(e,r){super(e,r),this.name="OTPError"}},ne=class extends w{constructor(e){super(e),this.name="SecretError"}},oe=class extends ne{constructor(e,r){super(`Secret must be at least ${e} bytes (${e*8} bits), got ${r} bytes`),this.name="SecretTooShortError"}},se=class extends ne{constructor(e,r){super(`Secret must not exceed ${e} bytes, got ${r} bytes`),this.name="SecretTooLongError"}},K=class extends w{constructor(e){super(e),this.name="CounterError"}},ie=class extends K{constructor(){super("Counter must be non-negative"),this.name="CounterNegativeError"}},J=class extends K{constructor(){super("Counter exceeds maximum safe integer value"),this.name="CounterOverflowError"}},ae=class extends K{constructor(){super("Counter must be a finite integer"),this.name="CounterNotIntegerError"}},ce=class extends w{constructor(e){super(e),this.name="TimeError"}},ue=class extends ce{constructor(){super("Time must be non-negative"),this.name="TimeNegativeError"}},fe=class extends ce{constructor(){super("Time must be a finite number"),this.name="TimeNotFiniteError"}},le=class extends w{constructor(e){super(e),this.name="PeriodError"}},pe=class extends le{constructor(e){super(`Period must be at least ${e} second(s)`),this.name="PeriodTooSmallError"}},de=class extends le{constructor(e){super(`Period must not exceed ${e} seconds`),this.name="PeriodTooLargeError"}};var he=class extends w{constructor(e){super(e),this.name="TokenError"}},ge=class extends he{constructor(e,r){super(`Token must be ${e} digits, got ${r}`),this.name="TokenLengthError"}},xe=class extends he{constructor(){super("Token must contain only digits"),this.name="TokenFormatError"}},ye=class extends w{constructor(e,r){super(e,r),this.name="CryptoError"}},U=class extends ye{constructor(e,r){super(`HMAC computation failed: ${e}`,r),this.name="HMACError"}},be=class extends ye{constructor(e,r){super(`Random byte generation failed: ${e}`,r),this.name="RandomBytesError"}};var V=class extends w{constructor(e){super(e),this.name="CounterToleranceError"}},me=class extends V{constructor(e,r){super(`Counter tolerance validation failed: total checks (${r}) exceeds MAX_WINDOW (${e})`),this.name="CounterToleranceTooLargeError"}},Te=class extends V{constructor(){super("Counter tolerance cannot contain negative values"),this.name="CounterToleranceNegativeError"}},N=class extends w{constructor(e){super(e),this.name="EpochToleranceError"}},Oe=class extends N{constructor(){super("Epoch tolerance cannot contain negative values"),this.name="EpochToleranceNegativeError"}},Ee=class extends N{constructor(e,r){super(`Epoch tolerance must not exceed ${e} seconds, got ${r}. Large tolerances can cause performance issues.`),this.name="EpochToleranceTooLargeError"}},we=class extends w{constructor(e){super(e),this.name="PluginError"}},Pe=class extends we{constructor(){super("Crypto plugin is required."),this.name="CryptoPluginMissingError"}},Ae=class extends we{constructor(){super("Base32 plugin is required."),this.name="Base32PluginMissingError"}},T=class extends w{constructor(e){super(e),this.name="ConfigurationError"}},Se=class extends T{constructor(){super("Secret is required. Use generateSecret() to create one, or provide via { secret: 'YOUR_BASE32_SECRET' }"),this.name="SecretMissingError"}},Ce=class extends T{constructor(){super("Label is required for URI generation. Example: { label: 'user@example.com' }"),this.name="LabelMissingError"}},Re=class extends T{constructor(){super("Issuer is required for URI generation. Example: { issuer: 'MyApp' }"),this.name="IssuerMissingError"}},Be=class extends T{constructor(){super("Class API requires secret to be a Base32 string, not Uint8Array. Use generateSecret() or provide a Base32-encoded string."),this.name="SecretTypeError"}},Q=class extends w{constructor(e){super(e),this.name="AfterTimeStepError"}},Ie=class extends Q{constructor(){super("afterTimeStep must be >= 0"),this.name="AfterTimeStepNegativeError"}},He=class extends Q{constructor(){super("Invalid afterTimeStep: non-integer value"),this.name="AfterTimeStepNotIntegerError"}},_e=class extends Q{constructor(){super("Invalid afterTimeStep: cannot be greater than current time step plus window"),this.name="AfterTimeStepRangeExceededError"}};var Xr=new TextEncoder,hn=new TextDecoder,rr=16,nr=64,or=20,sr=1,ir=3600,ar=30,cr=Number.MAX_SAFE_INTEGER,ur=99,fr=Symbol("otplib.guardrails.override");function Z(t,e,r){if(typeof e!="number"||!Number.isSafeInteger(e))throw new T(`Guardrail '${t}' must be a safe integer`);if(e<r)throw new T(`Guardrail '${t}' must be >= ${r}`)}var $=Object.freeze({MIN_SECRET_BYTES:rr,MAX_SECRET_BYTES:nr,MIN_PERIOD:sr,MAX_PERIOD:ir,MAX_COUNTER:cr,MAX_WINDOW:ur,[fr]:!1});function b(t){if(!t)return $;t.MIN_SECRET_BYTES!==void 0&&Z("MIN_SECRET_BYTES",t.MIN_SECRET_BYTES,1),t.MAX_SECRET_BYTES!==void 0&&Z("MAX_SECRET_BYTES",t.MAX_SECRET_BYTES,1),t.MIN_PERIOD!==void 0&&Z("MIN_PERIOD",t.MIN_PERIOD,1),t.MAX_PERIOD!==void 0&&Z("MAX_PERIOD",t.MAX_PERIOD,1),t.MAX_COUNTER!==void 0&&Z("MAX_COUNTER",t.MAX_COUNTER,0),t.MAX_WINDOW!==void 0&&Z("MAX_WINDOW",t.MAX_WINDOW,1);let e={...$,...t};if(e.MIN_SECRET_BYTES>e.MAX_SECRET_BYTES)throw new T("Guardrail 'MIN_SECRET_BYTES' must be <= 'MAX_SECRET_BYTES'");if(e.MIN_PERIOD>e.MAX_PERIOD)throw new T("Guardrail 'MIN_PERIOD' must be <= 'MAX_PERIOD'");return Object.freeze({...e,[fr]:!0})}function j(t,e=$){if(t.length<e.MIN_SECRET_BYTES)throw new oe(e.MIN_SECRET_BYTES,t.length);if(t.length>e.MAX_SECRET_BYTES)throw new se(e.MAX_SECRET_BYTES,t.length)}function et(t,e=$){if(typeof t=="number"){if(!Number.isFinite(t)||!Number.isInteger(t))throw new ae;if(!Number.isSafeInteger(t))throw new J}let r=typeof t=="bigint"?t:BigInt(t);if(r<0n)throw new ie;if(r>BigInt(e.MAX_COUNTER))throw new J}function tt(t){if(!Number.isFinite(t))throw new fe;if(t<0)throw new ue}function rt(t,e=$){if(!Number.isInteger(t)||t<e.MIN_PERIOD)throw new pe(e.MIN_PERIOD);if(t>e.MAX_PERIOD)throw new de(e.MAX_PERIOD)}function ve(t,e){if(t.length!==e)throw new ge(e,t.length);if(!/^\d+$/.test(t))throw new xe}function Ht(t,e=$){let[r,o]=st(t);if(!Number.isSafeInteger(r)||!Number.isSafeInteger(o))throw new V("Counter tolerance values must be safe integers");if(r<0||o<0)throw new Te;let n=r+o+1;if(n>e.MAX_WINDOW)throw new me(e.MAX_WINDOW,n)}function _t(t,e=ar,r=$){let[o,n]=Array.isArray(t)?t:[t,t];if(!Number.isSafeInteger(o)||!Number.isSafeInteger(n))throw new N("Epoch tolerance values must be safe integers");if(o<0||n<0)throw new Oe;let s=(r.MAX_WINDOW-1)*e,i=o+n;if(i>s)throw new Ee(s,i)}function Ut(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 nt(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 ot(t,e){let r=10**e;return(t%r).toString().padStart(e,"0")}function lr(t,e){return t.length===e.length}function vt(t,e){let r=Ue(t),o=Ue(e);if(!lr(r,o))return!1;let n=0;for(let s=0;s<r.length;s++)n|=r[s]^o[s];return n===0}function Ue(t){return typeof t=="string"?Xr.encode(t):t}function F(t,e){return typeof t=="string"?(q(e),e.decode(t)):t}function I(t){let{crypto:e,base32:r,length:o=or}=t;m(e),q(r);let n=e.randomBytes(o);return r.encode(n,{padding:!1})}function st(t=0){return Array.isArray(t)?t:[0,t]}function Dt(t=0){return Array.isArray(t)?t:[t,t]}function m(t){if(!t)throw new Pe}function q(t){if(!t)throw new Ae}function O(t){if(!t)throw new Se}function De(t){if(!t)throw new Ce}function ke(t){if(!t)throw new Re}function Le(t){if(typeof t!="string")throw new Be}function pr(t){return{ok:!0,value:t}}function dr(t){return{ok:!1,error:t}}function kt(t){return(...e)=>{try{return pr(t(...e))}catch(r){return dr(r)}}}function Lt(t){return async(...e)=>{try{return pr(await t(...e))}catch(r){return dr(r)}}}var it=class{constructor(e){this.crypto=e}get plugin(){return this.crypto}async hmac(e,r,o){try{let n=this.crypto.hmac(e,r,o);return n instanceof Promise?await n:n}catch(n){let s=n instanceof Error?n.message:String(n);throw new U(s,{cause:n})}}hmacSync(e,r,o){try{let n=this.crypto.hmac(e,r,o);if(n instanceof Promise)throw new U("Crypto plugin does not support synchronous HMAC operations");return n}catch(n){if(n instanceof U)throw n;let s=n instanceof Error?n.message:String(n);throw new U(s,{cause:n})}}randomBytes(e){try{return this.crypto.randomBytes(e)}catch(r){let o=r instanceof Error?r.message:String(r);throw new be(o,{cause:r})}}};function Mt(t){return new it(t)}function Gt(t){let{type:e,label:r,params:o}=t,n=r.split(":").map(a=>encodeURIComponent(a)).join(":"),s=`otpauth://${e}/${n}?`,i=[];return o.secret&&i.push(`secret=${encodeURIComponent(o.secret)}`),o.issuer&&i.push(`issuer=${encodeURIComponent(o.issuer)}`),o.algorithm&&o.algorithm!=="sha1"&&i.push(`algorithm=${o.algorithm.toUpperCase()}`),o.digits&&o.digits!==6&&i.push(`digits=${o.digits}`),e==="hotp"&&o.counter!==void 0&&i.push(`counter=${o.counter}`),e==="totp"&&o.period!==void 0&&o.period!==30&&i.push(`period=${o.period}`),s+=i.join("&"),s}function Me(t){let{issuer:e,label:r,secret:o,algorithm:n="sha1",digits:s=6,period:i=30}=t,a=e?`${e}:${r}`:r;return Gt({type:"totp",label:a,params:{secret:o,issuer:e,algorithm:n,digits:s,period:i}})}function Ge(t){let{issuer:e,label:r,secret:o,counter:n=0,algorithm:s="sha1",digits:i=6}=t,a=e?`${e}:${r}`:r;return Gt({type:"hotp",label:a,params:{secret:o,issuer:e,algorithm:s,digits:i,counter:n}})}var Ve=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=b(e.guardrails)}generateSecret(){let{crypto:e,base32:r}=this.options;return m(e),q(r),I({crypto:e,base32:r})}async generate(e,r){let o={...this.options,...r},{secret:n,crypto:s,base32:i,algorithm:a="sha1",digits:c=6}=o;O(n),m(s);let u=r?.guardrails??this.guardrails;return W({secret:n,counter:e,algorithm:a,digits:c,crypto:s,base32:i,guardrails:u,hooks:o.hooks})}async verify(e,r){let o={...this.options,...r},{secret:n,crypto:s,base32:i,algorithm:a="sha1",digits:c=6,counterTolerance:u=0}=o;O(n),m(s);let f=r?.guardrails??this.guardrails;return at({secret:n,token:e.token,counter:e.counter,algorithm:a,digits:c,counterTolerance:u,crypto:s,base32:i,guardrails:f,hooks:o.hooks})}toURI(e=0){let{issuer:r,label:o,secret:n,algorithm:s="sha1",digits:i=6}=this.options;return O(n),De(o),ke(r),Le(n),Ge({issuer:r,label:o,secret:n,algorithm:s,digits:i,counter:e})}};function hr(t){let{secret:e,counter:r,algorithm:o="sha1",digits:n=6,crypto:s,base32:i,guardrails:a,hooks:c}=t;O(e),m(s);let u=F(e,i);j(u,a),et(r,a);let f=Mt(s),l=Ut(r);return{ctx:f,algorithm:o,digits:n,secretBytes:u,counterBytes:l,hooks:c}}async function W(t){let{ctx:e,algorithm:r,digits:o,secretBytes:n,counterBytes:s,hooks:i}=hr(t),a=await e.hmac(r,n,s),c=i?.truncateDigest?i.truncateDigest(a):nt(a);return i?.encodeToken?i.encodeToken(c,o):ot(c,o)}function Ne(t){let{ctx:e,algorithm:r,digits:o,secretBytes:n,counterBytes:s,hooks:i}=hr(t),a=e.hmacSync(r,n,s),c=i?.truncateDigest?i.truncateDigest(a):nt(a);return i?.encodeToken?i.encodeToken(c,o):ot(c,o)}function gr(t){let{secret:e,counter:r,token:o,algorithm:n="sha1",digits:s=6,crypto:i,base32:a,counterTolerance:c=0,guardrails:u=b(),hooks:f}=t;O(e),m(i);let l=F(e,a);j(l,u),et(r,u),f?.validateToken?f.validateToken(o,s):ve(o,s),Ht(c,u);let p=typeof r=="bigint"?Number(r):r,[h,g]=st(c),x=h+g+1;return{token:o,counterNum:p,past:h,future:g,totalChecks:x,crypto:i,getGenerateOptions:E=>({secret:l,counter:E,algorithm:n,digits:s,crypto:i,guardrails:u,hooks:f})}}async function at(t){let{token:e,counterNum:r,past:o,totalChecks:n,crypto:s,getGenerateOptions:i}=gr(t),a=Math.max(0,o-r);for(let c=a;c<n;c++){let u=c-o,f=r+u,l=await W(i(f));if(s.constantTimeEqual(l,e))return{valid:!0,delta:u|0}}return{valid:!1}}function xr(t){let{token:e,counterNum:r,past:o,totalChecks:n,crypto:s,getGenerateOptions:i}=gr(t),a=Math.max(0,o-r);for(let c=a;c<n;c++){let u=c-o,f=r+u,l=Ne(i(f));if(s.constantTimeEqual(l,e))return{valid:!0,delta:u|0}}return{valid:!1}}var $e=class{options;guardrails;constructor(e={}){this.options=e,this.guardrails=b(e.guardrails)}generateSecret(){let{crypto:e,base32:r}=this.options;return m(e),q(r),I({crypto:e,base32:r})}async generate(e){let r={...this.options,...e},{secret:o,crypto:n,base32:s,algorithm:i="sha1",digits:a=6,period:c=30,epoch:u,t0:f=0}=r;O(o),m(n);let l=e?.guardrails??this.guardrails;return je({secret:o,algorithm:i,digits:a,period:c,epoch:u??Math.floor(Date.now()/1e3),t0:f,crypto:n,base32:s,guardrails:l,hooks:r.hooks})}async verify(e,r){let o={...this.options,...r},{secret:n,crypto:s,base32:i,algorithm:a="sha1",digits:c=6,period:u=30,epoch:f,t0:l=0,epochTolerance:p=0,afterTimeStep:h}=o;O(n),m(s);let g=r?.guardrails??this.guardrails;return ct({secret:n,token:e,algorithm:a,digits:c,period:u,epoch:f??Math.floor(Date.now()/1e3),t0:l,epochTolerance:p,afterTimeStep:h,crypto:s,base32:i,guardrails:g,hooks:o.hooks})}toURI(e){let{issuer:r,label:o,secret:n,algorithm:s="sha1",digits:i=6,period:a=30}=this.options,c=e?.label??o,u=e?.issuer??r,f=e?.secret??n;return O(f),De(c),ke(u),Le(f),Me({issuer:u,label:c,secret:f,algorithm:s,digits:i,period:a})}};function yr(t){let{secret:e,epoch:r=Math.floor(Date.now()/1e3),t0:o=0,period:n=30,algorithm:s="sha1",digits:i=6,crypto:a,base32:c,guardrails:u=b(),hooks:f}=t;O(e),m(a);let l=F(e,c);j(l,u),tt(r),rt(n,u);let p=Math.floor((r-o)/n);return{secret:l,counter:p,algorithm:s,digits:i,crypto:a,guardrails:u,hooks:f}}async function je(t){let e=yr(t);return W(e)}function Vt(t){let e=yr(t);return Ne(e)}function zr(t,e){if(t!==void 0){if(t<0)throw new Ie;if(!Number.isSafeInteger(t))throw new He;if(t>e)throw new _e}}function br(t,e){return e!==void 0&&t<=e}function mr(t){let{secret:e,token:r,epoch:o=Math.floor(Date.now()/1e3),t0:n=0,period:s=30,algorithm:i="sha1",digits:a=6,crypto:c,base32:u,epochTolerance:f=0,afterTimeStep:l,guardrails:p=b(),hooks:h}=t;O(e),m(c);let g=F(e,u);j(g,p),tt(o),rt(s,p),h?.validateToken?h.validateToken(r,a):ve(r,a),_t(f,s,p);let x=Math.floor((o-n)/s),[E,M]=Dt(f),G=Math.max(0,Math.floor((o-E-n)/s)),d=Math.floor((o+M-n)/s);return zr(l,d),{token:r,crypto:c,minCounter:G,maxCounter:d,currentCounter:x,t0:n,period:s,afterTimeStep:l,getGenerateOptions:S=>({secret:g,epoch:S*s+n,t0:n,period:s,algorithm:i,digits:a,crypto:c,guardrails:p,hooks:h})}}async function ct(t){let{token:e,crypto:r,minCounter:o,maxCounter:n,currentCounter:s,t0:i,period:a,afterTimeStep:c,getGenerateOptions:u}=mr(t);for(let f=o;f<=n;f++){if(br(f,c))continue;let l=await je(u(f));if(r.constantTimeEqual(l,e))return{valid:!0,delta:f-s,epoch:f*a+i,timeStep:f}}return{valid:!1}}function Tr(t){let{token:e,crypto:r,minCounter:o,maxCounter:n,currentCounter:s,t0:i,period:a,afterTimeStep:c,getGenerateOptions:u}=mr(t);for(let f=o;f<=n;f++){if(br(f,c))continue;let l=Vt(u(f));if(r.constantTimeEqual(l,e))return{valid:!0,delta:f-s,epoch:f*a+i,timeStep:f}}return{valid:!1}}function Yr(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}function Er(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 ut(t,e){if(typeof e!="string")throw new TypeError(`${t}: string expected`);return!0}function jt(t){if(typeof t!="number")throw new TypeError(`number expected, got ${typeof t}`);if(!Number.isSafeInteger(t))throw new RangeError(`invalid integer: ${t}`)}function $t(t){if(!Array.isArray(t))throw new TypeError("array expected")}function ft(t,e){if(!Er(!0,e))throw new TypeError(`${t}: array of strings expected`)}function Kr(t,e){if(!Er(!1,e))throw new TypeError(`${t}: array of numbers expected`)}function Jr(...t){let e=s=>s,r=(s,i)=>a=>s(i(a)),o=t.map(s=>s.encode).reduceRight(r,e),n=t.map(s=>s.decode).reduce(r,e);return{encode:o,decode:n}}function Qr(t){let e=typeof t=="string"?t.split(""):t,r=e.length;ft("alphabet",e);let o=new Map(e.map((n,s)=>[n,s]));return{encode:n=>($t(n),n.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:n=>($t(n),n.map(s=>{ut("alphabet.decode",s);let i=o.get(s);if(i===void 0)throw new Error(`Unknown letter: "${s}". Allowed: ${t}`);return i}))}}function Zr(t=""){return ut("join",t),{encode:e=>(ft("join.decode",e),e.join(t)),decode:e=>(ut("join.decode",e),e.split(t))}}function en(t,e="="){return jt(t),ut("padding",e),{encode(r){for(ft("padding.encode",r);r.length*t%8;)r.push(e);return r},decode(r){ft("padding.decode",r);let o=r.length;if(o*t%8)throw new Error("padding: invalid, string should have whole number of bytes");for(;o>0&&r[o-1]===e;o--)if((o-1)*t%8===0)throw new Error("padding: invalid, string has too much padding");return r.slice(0,o)}}}var wr=(t,e)=>e===0?t:wr(e,t%e),lt=(t,e)=>t+(e-wr(t,e)),Nt=(()=>{let t=[];for(let e=0;e<40;e++)t.push(2**e);return t})();function Or(t,e,r,o){if($t(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(lt(e,r)>32)throw new Error(`convertRadix2: carry overflow from=${e} to=${r} carryBits=${lt(e,r)}`);let n=0,s=0,i=Nt[e],a=Nt[r]-1,c=[];for(let u of t){if(jt(u),u>=i)throw new Error(`convertRadix2: invalid data word=${u} from=${e}`);if(n=n<<e|u,s+e>32)throw new Error(`convertRadix2: carry overflow pos=${s} from=${e}`);for(s+=e;s>=r;s-=r)c.push((n>>s-r&a)>>>0);let f=Nt[s];if(f===void 0)throw new Error("invalid carry");n&=f-1}if(n=n<<r-s&a,!o&&s>=e)throw new Error("Excess padding");if(!o&&n>0)throw new Error(`Non-zero padding: ${n}`);return o&&s>0&&c.push(n>>>0),c}function tn(t,e=!1){if(jt(t),t<=0||t>32)throw new RangeError("radix2: bits should be in (0..32]");if(lt(8,t)>32||lt(t,8)>32)throw new RangeError("radix2: carry overflow");return{encode:r=>{if(!Yr(r))throw new TypeError("radix2.encode input should be Uint8Array");return Or(Array.from(r),8,t,!e)},decode:r=>(Kr("radix2.decode",r),Uint8Array.from(Or(r,t,8,e)))}}var Ft=Object.freeze(Jr(tn(5),Qr("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"),en(5),Zr("")));var Fe=class{name="scure";encode(e,r={}){let{padding:o=!1}=r,n=Ft.encode(e);return o?n:n.replace(/=+$/,"")}decode(e){try{let r=e.toUpperCase(),o=r.padEnd(Math.ceil(r.length/8)*8,"=");return Ft.decode(o)}catch(r){throw new Error(`Invalid Base32 string: ${r.message}`)}}},ee=Object.freeze(new Fe);function rn(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}function qt(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 qe(t,e,r=""){let o=rn(t),n=t?.length,s=e!==void 0;if(!o||s&&n!==e){let i=r&&`"${r}" `,a=s?` of length ${e}`:"",c=o?`length=${n}`:`type=${typeof t}`,u=i+"expected Uint8Array"+a+", got "+c;throw o?new RangeError(u):new TypeError(u)}return t}function Pr(t){if(typeof t!="function"||typeof t.create!="function")throw new TypeError("Hash must wrapped by utils.createHasher");if(qt(t.outputLen),qt(t.blockLen),t.outputLen<1)throw new Error('"outputLen" must be >= 1');if(t.blockLen<1)throw new Error('"blockLen" must be >= 1')}function te(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 pt(t,e){qe(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 dt(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function A(t,e){return t<<32-e|t>>>e}function ht(t,e){return t<<e|t>>>32-e>>>0}function We(t,e={}){let r=(n,s)=>t(s).update(n).digest(),o=t(void 0);return r.outputLen=o.outputLen,r.blockLen=o.blockLen,r.canXOF=o.canXOF,r.create=n=>t(n),Object.assign(r,e),Object.freeze(r)}function Ar(t=32){qt(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 Wt=t=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,t])});var gt=class{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,r){if(Pr(e),qe(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 o=this.blockLen,n=new Uint8Array(o);n.set(r.length>o?e.create().update(r).digest():r);for(let s=0;s<n.length;s++)n[s]^=54;this.iHash.update(n),this.oHash=e.create();for(let s=0;s<n.length;s++)n[s]^=106;this.oHash.update(n),P(n)}update(e){return te(this),this.iHash.update(e),this}digestInto(e){te(this),pt(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:o,finished:n,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=n,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=r._cloneInto(e.oHash),e.iHash=o._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Sr=(()=>{let t=((e,r,o)=>new gt(e,r).update(o).digest());return t.create=(e,r)=>new gt(e,r),t})();function xt(t,e,r){return t&e^~t&r}function yt(t,e,r){return t&e^t&r^e&r}var X=class{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,r,o,n){this.blockLen=e,this.outputLen=r,this.padOffset=o,this.isLE=n,this.buffer=new Uint8Array(e),this.view=dt(this.buffer)}update(e){te(this),qe(e);let{view:r,buffer:o,blockLen:n}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(n-this.pos,s-i);if(a===n){let c=dt(e);for(;n<=s-i;i+=n)this.process(c,i);continue}o.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===n&&(this.process(r,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){te(this),pt(e,this),this.finished=!0;let{buffer:r,view:o,blockLen:n,isLE:s}=this,{pos:i}=this;r[i++]=128,P(this.buffer.subarray(i)),this.padOffset>n-i&&(this.process(o,0),i=0);for(let l=i;l<n;l++)r[l]=0;o.setBigUint64(n-8,BigInt(this.length*8),s),this.process(o,0);let a=dt(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let u=c/4,f=this.get();if(u>f.length)throw new Error("_sha2: outputLen bigger than state");for(let l=0;l<u;l++)a.setUint32(4*l,f[l],s)}digest(){let{buffer:e,outputLen:r}=this;this.digestInto(e);let o=e.slice(0,r);return this.destroy(),o}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:r,buffer:o,length:n,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=n,e.pos=a,n%r&&e.buffer.set(o),e}clone(){return this._cloneInto()}},H=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var y=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var Xe=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),v=new Uint32Array(80),Xt=class extends X{A=Xe[0]|0;B=Xe[1]|0;C=Xe[2]|0;D=Xe[3]|0;E=Xe[4]|0;constructor(){super(64,20,8,!1)}get(){let{A:e,B:r,C:o,D:n,E:s}=this;return[e,r,o,n,s]}set(e,r,o,n,s){this.A=e|0,this.B=r|0,this.C=o|0,this.D=n|0,this.E=s|0}process(e,r){for(let c=0;c<16;c++,r+=4)v[c]=e.getUint32(r,!1);for(let c=16;c<80;c++)v[c]=ht(v[c-3]^v[c-8]^v[c-14]^v[c-16],1);let{A:o,B:n,C:s,D:i,E:a}=this;for(let c=0;c<80;c++){let u,f;c<20?(u=xt(n,s,i),f=1518500249):c<40?(u=n^s^i,f=1859775393):c<60?(u=yt(n,s,i),f=2400959708):(u=n^s^i,f=3395469782);let l=ht(o,5)+u+a+f+v[c]|0;a=i,i=s,s=ht(n,30),n=o,o=l}o=o+this.A|0,n=n+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(o,n,s,i,a)}roundClean(){P(v)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0),P(this.buffer)}},Cr=We(()=>new Xt);var bt=BigInt(4294967295),Rr=BigInt(32);function nn(t,e=!1){return e?{h:Number(t&bt),l:Number(t>>Rr&bt)}:{h:Number(t>>Rr&bt)|0,l:Number(t&bt)|0}}function Br(t,e=!1){let r=t.length,o=new Uint32Array(r),n=new Uint32Array(r);for(let s=0;s<r;s++){let{h:i,l:a}=nn(t[s],e);[o[s],n[s]]=[i,a]}return[o,n]}var zt=(t,e,r)=>t>>>r,Yt=(t,e,r)=>t<<32-r|e>>>r,z=(t,e,r)=>t>>>r|e<<32-r,Y=(t,e,r)=>t<<32-r|e>>>r,ze=(t,e,r)=>t<<64-r|e>>>r-32,Ye=(t,e,r)=>t>>>r-32|e<<64-r;function C(t,e,r,o){let n=(e>>>0)+(o>>>0);return{h:t+r+(n/2**32|0)|0,l:n|0}}var Ir=(t,e,r)=>(t>>>0)+(e>>>0)+(r>>>0),Hr=(t,e,r,o)=>e+r+o+(t/2**32|0)|0,_r=(t,e,r,o)=>(t>>>0)+(e>>>0)+(r>>>0)+(o>>>0),Ur=(t,e,r,o,n)=>e+r+o+n+(t/2**32|0)|0,vr=(t,e,r,o,n)=>(t>>>0)+(e>>>0)+(r>>>0)+(o>>>0)+(n>>>0),Dr=(t,e,r,o,n,s)=>e+r+o+n+s+(t/2**32|0)|0;var sn=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]),D=new Uint32Array(64),Kt=class extends X{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:r,C:o,D:n,E:s,F:i,G:a,H:c}=this;return[e,r,o,n,s,i,a,c]}set(e,r,o,n,s,i,a,c){this.A=e|0,this.B=r|0,this.C=o|0,this.D=n|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,r){for(let l=0;l<16;l++,r+=4)D[l]=e.getUint32(r,!1);for(let l=16;l<64;l++){let p=D[l-15],h=D[l-2],g=A(p,7)^A(p,18)^p>>>3,x=A(h,17)^A(h,19)^h>>>10;D[l]=x+D[l-7]+g+D[l-16]|0}let{A:o,B:n,C:s,D:i,E:a,F:c,G:u,H:f}=this;for(let l=0;l<64;l++){let p=A(a,6)^A(a,11)^A(a,25),h=f+p+xt(a,c,u)+sn[l]+D[l]|0,x=(A(o,2)^A(o,13)^A(o,22))+yt(o,n,s)|0;f=u,u=c,c=a,a=i+h|0,i=s,s=n,n=o,o=h+x|0}o=o+this.A|0,n=n+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,f=f+this.H|0,this.set(o,n,s,i,a,c,u,f)}roundClean(){P(D)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),P(this.buffer)}},Jt=class extends Kt{A=H[0]|0;B=H[1]|0;C=H[2]|0;D=H[3]|0;E=H[4]|0;F=H[5]|0;G=H[6]|0;H=H[7]|0;constructor(){super(32)}};var kr=Br(["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))),an=kr[0],cn=kr[1],k=new Uint32Array(80),L=new Uint32Array(80),Qt=class extends X{constructor(e){super(128,e,16,!1)}get(){let{Ah:e,Al:r,Bh:o,Bl:n,Ch:s,Cl:i,Dh:a,Dl:c,Eh:u,El:f,Fh:l,Fl:p,Gh:h,Gl:g,Hh:x,Hl:E}=this;return[e,r,o,n,s,i,a,c,u,f,l,p,h,g,x,E]}set(e,r,o,n,s,i,a,c,u,f,l,p,h,g,x,E){this.Ah=e|0,this.Al=r|0,this.Bh=o|0,this.Bl=n|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=u|0,this.El=f|0,this.Fh=l|0,this.Fl=p|0,this.Gh=h|0,this.Gl=g|0,this.Hh=x|0,this.Hl=E|0}process(e,r){for(let d=0;d<16;d++,r+=4)k[d]=e.getUint32(r),L[d]=e.getUint32(r+=4);for(let d=16;d<80;d++){let S=k[d-15]|0,_=L[d-15]|0,St=z(S,_,1)^z(S,_,8)^zt(S,_,7),Ct=Y(S,_,1)^Y(S,_,8)^Yt(S,_,7),R=k[d-2]|0,B=L[d-2]|0,Qe=z(R,B,19)^ze(R,B,61)^zt(R,B,6),Rt=Y(R,B,19)^Ye(R,B,61)^Yt(R,B,6),Ze=_r(Ct,Rt,L[d-7],L[d-16]),Bt=Ur(Ze,St,Qe,k[d-7],k[d-16]);k[d]=Bt|0,L[d]=Ze|0}let{Ah:o,Al:n,Bh:s,Bl:i,Ch:a,Cl:c,Dh:u,Dl:f,Eh:l,El:p,Fh:h,Fl:g,Gh:x,Gl:E,Hh:M,Hl:G}=this;for(let d=0;d<80;d++){let S=z(l,p,14)^z(l,p,18)^ze(l,p,41),_=Y(l,p,14)^Y(l,p,18)^Ye(l,p,41),St=l&h^~l&x,Ct=p&g^~p&E,R=vr(G,_,Ct,cn[d],L[d]),B=Dr(R,M,S,St,an[d],k[d]),Qe=R|0,Rt=z(o,n,28)^ze(o,n,34)^ze(o,n,39),Ze=Y(o,n,28)^Ye(o,n,34)^Ye(o,n,39),Bt=o&s^o&a^s&a,Vr=n&i^n&c^i&c;M=x|0,G=E|0,x=h|0,E=g|0,h=l|0,g=p|0,{h:l,l:p}=C(u|0,f|0,B|0,Qe|0),u=a|0,f=c|0,a=s|0,c=i|0,s=o|0,i=n|0;let tr=Ir(Qe,Ze,Vr);o=Hr(tr,B,Rt,Bt),n=tr|0}({h:o,l:n}=C(this.Ah|0,this.Al|0,o|0,n|0)),{h:s,l:i}=C(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=C(this.Ch|0,this.Cl|0,a|0,c|0),{h:u,l:f}=C(this.Dh|0,this.Dl|0,u|0,f|0),{h:l,l:p}=C(this.Eh|0,this.El|0,l|0,p|0),{h,l:g}=C(this.Fh|0,this.Fl|0,h|0,g|0),{h:x,l:E}=C(this.Gh|0,this.Gl|0,x|0,E|0),{h:M,l:G}=C(this.Hh|0,this.Hl|0,M|0,G|0),this.set(o,n,s,i,a,c,u,f,l,p,h,g,x,E,M,G)}roundClean(){P(k,L)}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)}},Zt=class extends Qt{Ah=y[0]|0;Al=y[1]|0;Bh=y[2]|0;Bl=y[3]|0;Ch=y[4]|0;Cl=y[5]|0;Dh=y[6]|0;Dl=y[7]|0;Eh=y[8]|0;El=y[9]|0;Fh=y[10]|0;Fl=y[11]|0;Gh=y[12]|0;Gl=y[13]|0;Hh=y[14]|0;Hl=y[15]|0;constructor(){super(64)}};var Lr=We(()=>new Jt,Wt(1));var Mr=We(()=>new Zt,Wt(3));var Ke=class{name="noble";hmac(e,r,o){return Sr(e==="sha1"?Cr:e==="sha256"?Lr:Mr,r,o)}randomBytes(e){return Ar(e)}constantTimeEqual(e,r){return vt(e,r)}},re=Object.freeze(new Ke);function mt(t){return{secret:t.secret,strategy:t.strategy??"totp",crypto:t.crypto??re,base32:t.base32??ee,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??b(),hooks:t.hooks}}function er(t){return{...mt(t),token:t.token,epochTolerance:t.epochTolerance??0,counterTolerance:t.counterTolerance??0,afterTimeStep:t.afterTimeStep}}function Je(t,e,r){if(t==="totp")return r.totp();if(t==="hotp"){if(e===void 0)throw new T("Counter is required for HOTP strategy. Example: { strategy: 'hotp', counter: 0 }");return r.hotp(e)}throw new T(`Unknown OTP strategy: ${t}. Valid strategies are 'totp' or 'hotp'.`)}function Gr(t){let{crypto:e=re,base32:r=ee,length:o=20}=t||{};return I({crypto:e,base32:r,length:o})}function Tt(t){let{strategy:e="totp",issuer:r,label:o,secret:n,algorithm:s="sha1",digits:i=6,period:a=30,counter:c}=t;return Je(e,c,{totp:()=>Me({issuer:r,label:o,secret:n,algorithm:s,digits:i,period:a}),hotp:u=>Ge({issuer:r,label:o,secret:n,algorithm:s,digits:i,counter:u})})}async function Ot(t){let e=mt(t),{secret:r,crypto:o,base32:n,algorithm:s,digits:i,hooks:a}=e,c={secret:r,crypto:o,base32:n,algorithm:s,digits:i,hooks:a};return Je(e.strategy,e.counter,{totp:()=>je({...c,period:e.period,epoch:e.epoch,t0:e.t0,guardrails:e.guardrails}),hotp:u=>W({...c,counter:u,guardrails:e.guardrails})})}function Et(t){let e=mt(t),{secret:r,crypto:o,base32:n,algorithm:s,digits:i}=e,a={secret:r,crypto:o,base32:n,algorithm:s,digits:i};return Je(e.strategy,e.counter,{totp:()=>Vt({...a,period:e.period,epoch:e.epoch,t0:e.t0,guardrails:e.guardrails}),hotp:c=>Ne({...a,counter:c,guardrails:e.guardrails})})}async function wt(t){let e=er(t),{secret:r,token:o,crypto:n,base32:s,algorithm:i,digits:a,hooks:c}=e,u={secret:r,token:o,crypto:n,base32:s,algorithm:i,digits:a,hooks:c};return Je(e.strategy,e.counter,{totp:()=>ct({...u,period:e.period,epoch:e.epoch,t0:e.t0,epochTolerance:e.epochTolerance,afterTimeStep:e.afterTimeStep,guardrails:e.guardrails}),hotp:f=>at({...u,counter:f,counterTolerance:e.counterTolerance,guardrails:e.guardrails})})}function Pt(t){let e=er(t),{secret:r,token:o,crypto:n,base32:s,algorithm:i,digits:a,hooks:c}=e,u={secret:r,token:o,crypto:n,base32:s,algorithm:i,digits:a,hooks:c};return Je(e.strategy,e.counter,{totp:()=>Tr({...u,period:e.period,epoch:e.epoch,t0:e.t0,epochTolerance:e.epochTolerance,afterTimeStep:e.afterTimeStep,guardrails:e.guardrails}),hotp:f=>xr({...u,counter:f,counterTolerance:e.counterTolerance,guardrails:e.guardrails})})}var At=class{strategy;crypto;base32;guardrails;constructor(e={}){let{strategy:r="totp",crypto:o=re,base32:n=ee,guardrails:s}=e;this.strategy=r,this.crypto=o,this.base32=n,this.guardrails=b(s)}getStrategy(){return this.strategy}generateSecret(e=20){return I({crypto:this.crypto,base32:this.base32,length:e})}async generate(e){return Ot({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateSync(e){return Et({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}async verify(e){return wt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}verifySync(e){return Pt({...e,strategy:this.strategy,crypto:this.crypto,base32:this.base32,guardrails:e.guardrails??this.guardrails})}generateURI(e){return Tt({...e,strategy:this.strategy})}};return Wr(un);})();
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
2
  /*! Bundled license information:
3
3
 
4
4
  @scure/base/index.js:
package/lib/src/web.js CHANGED
@@ -8,7 +8,7 @@ import express from 'express';
8
8
  import expressWs from 'express-ws';
9
9
  import session from 'express-session';
10
10
  import getYouTubeID from 'get-youtube-id-ng';
11
- import contentDisposition from 'content-disposition';
11
+ import * as contentDisposition from 'content-disposition';
12
12
  import { rateLimit } from 'express-rate-limit';
13
13
  import { verify } from "otplib";
14
14
  import { getExpectedCWD } from './cwd-checker.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inner-dj/server",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "description": "server component of inner-dj",
5
5
  "keywords": [
6
6
  "jukebox",
@@ -43,22 +43,22 @@
43
43
  "LICENSE"
44
44
  ],
45
45
  "dependencies": {
46
+ "@inner-dj/common": "0.2.3",
47
+ "@inner-dj/discord-receiver": "0.2.5",
48
+ "@inner-dj/twilio-receiver": "0.2.3",
46
49
  "better-sqlite3": "^13.0.3",
47
50
  "bulma": "^1.0.4",
48
- "content-disposition": "2.0.1",
51
+ "content-disposition": "3.0.0",
49
52
  "ejs": "^6.0.1",
50
53
  "express": "^5.2.1",
51
- "express-rate-limit": "^8.6.2",
54
+ "express-rate-limit": "^8.7.0",
52
55
  "express-session": "^1.19.0",
53
56
  "express-ws": "^5.0.2",
54
57
  "get-youtube-id-ng": "1.0.1",
55
58
  "jsonwebtoken": "9.0.3",
56
- "otplib": "^13.4.1",
59
+ "otplib": "^13.5.0",
57
60
  "qr-creator": "^1.0.0",
58
- "yaml": "^2.9.0",
59
- "@inner-dj/discord-receiver": "0.2.5",
60
- "@inner-dj/twilio-receiver": "0.2.3",
61
- "@inner-dj/common": "0.2.3"
61
+ "yaml": "^2.9.0"
62
62
  },
63
63
  "devDependencies": {
64
64
  "@sindresorhus/tsconfig": "8.1.0",
@@ -69,7 +69,7 @@
69
69
  "@types/jsonwebtoken": "^9.0.10",
70
70
  "@types/node": "^26.2.0",
71
71
  "@types/ws": "^8.18.1",
72
- "forking-build-shit": "1.1.3",
72
+ "forking-build-shit": "1.1.7",
73
73
  "npm-attribution-generator": "^2.0.0",
74
74
  "typescript": "^7.0.2"
75
75
  },
@@ -189,7 +189,7 @@ THE SOFTWARE.
189
189
  ******************************
190
190
 
191
191
  content-disposition
192
- 2.0.1 <https://github.com/jshttp/content-disposition>
192
+ 3.0.0 <https://github.com/jshttp/content-disposition>
193
193
  (The MIT License)
194
194
 
195
195
  Copyright (c) 2014-2017 Douglas Christopher Wilson
@@ -652,8 +652,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
652
652
  ******************************
653
653
 
654
654
  express-rate-limit
655
- 8.6.2 <https://github.com/express-rate-limit/express-rate-limit>
656
- # MIT License
655
+ 8.7.0 <https://github.com/express-rate-limit/express-rate-limit>
656
+ MIT License
657
657
 
658
658
  Copyright 2023 Nathan Friedly, Vedant K
659
659
 
@@ -668,11 +668,12 @@ The above copyright notice and this permission notice shall be included in all
668
668
  copies or substantial portions of the Software.
669
669
 
670
670
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
671
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
672
- FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
673
- COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
674
- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
675
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
671
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
672
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
673
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
674
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
675
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
676
+ SOFTWARE.
676
677
 
677
678
 
678
679
  ******************************
@@ -788,7 +789,7 @@ SOFTWARE.
788
789
  ******************************
789
790
 
790
791
  otplib
791
- 13.4.1 <https://github.com/yeojz/otplib>
792
+ 13.5.0 <https://github.com/yeojz/otplib>
792
793
  MIT License
793
794
 
794
795
  Copyright (c) 2026 Gerald Yeo