hibp 14.1.0 → 14.1.1
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/CHANGELOG.md +6 -0
- package/dist/browser/hibp.module.js +1 -1
- package/dist/browser/hibp.module.js.map +1 -1
- package/dist/browser/hibp.umd.js +1 -1
- package/dist/browser/hibp.umd.js.map +1 -1
- package/dist/cjs/api/fetch-polyfill.cjs +2 -1
- package/dist/cjs/api/fetch-polyfill.cjs.map +1 -1
- package/dist/cjs/package.json.cjs +1 -1
- package/dist/esm/api/fetch-polyfill.js +2 -1
- package/dist/esm/api/fetch-polyfill.js.map +1 -1
- package/dist/esm/package.json.js +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 14.1.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#464](https://github.com/wKovacs64/hibp/pull/464) [`1dd6547`](https://github.com/wKovacs64/hibp/commit/1dd65475a93a32a0ddcd93bf1696869b266372cf) Thanks [@wKovacs64](https://github.com/wKovacs64)! - Fix consumption from Next.js client components.
|
|
8
|
+
|
|
3
9
|
## 14.1.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const t="hibp",e="14.1.0";function n(){if("undefined"!=typeof process&&process.versions.node.startsWith("18.")){const{File:t,fetch:e,FormData:n,Headers:r,Request:s,Response:o}=require("undici");global.File=t,global.Headers=r,global.Request=s,global.Response=o,global.fetch=e,global.FormData=n}}const r=new Map,s={headers:r,status:400,statusText:"Bad request — the account does not comply with an acceptable format."},o={headers:r,status:401,body:{statusCode:401,message:"Access denied due to missing hibp-api-key."}},i={headers:r,status:403,statusText:"Forbidden - access denied."},u={headers:r,status:404},a={headers:new Map([["retry-after","2"]]),status:429,body:{statusCode:429,message:"Rate limit is exceeded. Try again in 2 seconds."}};n();class h extends Error{retryAfterSeconds;constructor(t,e,n){super(e,n),this.name=this.constructor.name,this.retryAfterSeconds="string"==typeof t?Number.parseInt(t,10):void 0}}async function c(n,r={}){const{apiKey:c,baseUrl:f="https://haveibeenpwned.com/api/v3",timeoutMs:l,userAgent:d}=r,p={};c&&(p["HIBP-API-Key"]=c),d&&(p["User-Agent"]=d),d||"undefined"!=typeof navigator||(p["User-Agent"]=`${t} ${e}`);const g={headers:p,...l?{signal:AbortSignal.timeout(l)}:{}},m=`${f.replace(/\/$/g,"")}${n}`,A=await fetch(m,g);if(A.ok)return A.json();switch(A.status){case s.status:throw Error(s.statusText);case o.status:{const t=await A.json();throw Error(t.message)}case i.status:{const t=A.headers.get("cf-ray");if(t)throw Error(function(t){return`Request blocked, contact haveibeenpwned.com if this continues (Ray ID: ${t})`}(t));throw Error(i.statusText)}case u.status:return null;case a.status:{const t=await A.json(),e=A.headers.get("retry-after");throw new h(e,t.message)}default:throw Error(A.statusText)}}function f(t,e={}){return c("/breach/"+encodeURIComponent(t),e)}function l(t,e={}){const{apiKey:n,domain:r,includeUnverified:s=!0,timeoutMs:o,truncate:i=!0,baseUrl:u,userAgent:a}=e,h=`/breachedaccount/${encodeURIComponent(t)}?`,f=[];return r&&f.push("domain="+encodeURIComponent(r)),s||f.push("includeUnverified=false"),i||f.push("truncateResponse=false"),c(`${h}${f.join("&")}`,{apiKey:n,baseUrl:u,timeoutMs:o,userAgent:a})}function d(t={}){const{domain:e,baseUrl:n,timeoutMs:r,userAgent:s}=t,o=[];return e&&o.push("domain="+encodeURIComponent(e)),c("/breaches?"+o.join("&"),{baseUrl:n,timeoutMs:r,userAgent:s})}function p(t={}){return c("/dataclasses",t)}function g(t,e={}){return c("/pasteaccount/"+encodeURIComponent(t),e)}const m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",A="ARRAYBUFFER not supported by this environment",b="UINT8ARRAY not supported by this environment";function w(t,e,n,r){let s,o,i;const u=e||[0],a=(n=n||0)>>>3,h=-1===r?3:0;for(s=0;t.length>s;s+=1)i=s+a,o=i>>>2,o>=u.length&&u.push(0),u[o]|=t[s]<<8*(h+r*(i%4));return{value:u,binLen:8*t.length+n}}function U(t,e,n){switch(e){case"UTF8":case"UTF16BE":case"UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE")}switch(t){case"HEX":return function(t,e,r){return function(t,e,n,r){let s,o,i,u;if(0!=t.length%2)throw Error("String of HEX type must be in byte increments");const a=e||[0],h=(n=n||0)>>>3,c=-1===r?3:0;for(s=0;t.length>s;s+=2){if(o=parseInt(t.substr(s,2),16),isNaN(o))throw Error("String of HEX type contains invalid characters");for(u=(s>>>1)+h,i=u>>>2;i>=a.length;)a.push(0);a[i]|=o<<8*(c+r*(u%4))}return{value:a,binLen:4*t.length+n}}(t,e,r,n)};case"TEXT":return function(t,r,s){return function(t,e,n,r,s){let o,i,u,a,h,c,f,l,d=0;const p=n||[0],g=(r=r||0)>>>3;if("UTF8"===e)for(f=-1===s?3:0,u=0;t.length>u;u+=1)for(o=t.charCodeAt(u),i=[],128>o?i.push(o):2048>o?(i.push(192|o>>>6),i.push(128|63&o)):55296>o||o>=57344?i.push(224|o>>>12,128|o>>>6&63,128|63&o):(u+=1,o=65536+((1023&o)<<10|1023&t.charCodeAt(u)),i.push(240|o>>>18,128|o>>>12&63,128|o>>>6&63,128|63&o)),a=0;i.length>a;a+=1){for(c=d+g,h=c>>>2;h>=p.length;)p.push(0);p[h]|=i[a]<<8*(f+s*(c%4)),d+=1}else for(f=-1===s?2:0,l="UTF16LE"===e&&1!==s||"UTF16LE"!==e&&1===s,u=0;t.length>u;u+=1){for(o=t.charCodeAt(u),!0===l&&(a=255&o,o=a<<8|o>>>8),c=d+g,h=c>>>2;h>=p.length;)p.push(0);p[h]|=o<<8*(f+s*(c%4)),d+=2}return{value:p,binLen:8*d+r}}(t,e,r,s,n)};case"B64":return function(t,e,r){return function(t,e,n,r){let s,o,i,u,a,h,c,f=0;const l=e||[0],d=(n=n||0)>>>3,p=-1===r?3:0,g=t.indexOf("=");if(-1===t.search(/^[a-zA-Z0-9=+/]+$/))throw Error("Invalid character in base-64 string");if(t=t.replace(/=/g,""),-1!==g&&t.length>g)throw Error("Invalid '=' found in base-64 string");for(o=0;t.length>o;o+=4){for(a=t.substr(o,4),u=0,i=0;a.length>i;i+=1)s=m.indexOf(a.charAt(i)),u|=s<<18-6*i;for(i=0;a.length-1>i;i+=1){for(c=f+d,h=c>>>2;h>=l.length;)l.push(0);l[h]|=(u>>>16-8*i&255)<<8*(p+r*(c%4)),f+=1}}return{value:l,binLen:8*f+n}}(t,e,r,n)};case"BYTES":return function(t,e,r){return function(t,e,n,r){let s,o,i,u;const a=e||[0],h=(n=n||0)>>>3,c=-1===r?3:0;for(o=0;t.length>o;o+=1)s=t.charCodeAt(o),u=o+h,i=u>>>2,i>=a.length&&a.push(0),a[i]|=s<<8*(c+r*(u%4));return{value:a,binLen:8*t.length+n}}(t,e,r,n)};case"ARRAYBUFFER":try{new ArrayBuffer(0)}catch(t){throw Error(A)}return function(t,e,r){return function(t,e,n,r){return w(new Uint8Array(t),e,n,r)}(t,e,r,n)};case"UINT8ARRAY":try{new Uint8Array(0)}catch(t){throw Error(b)}return function(t,e,r){return w(t,e,r,n)};default:throw Error("format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}function E(t,e,n,r){switch(t){case"HEX":return function(t){return function(t,e,n,r){const s="0123456789abcdef";let o,i,u="";const a=e/8,h=-1===n?3:0;for(o=0;a>o;o+=1)i=t[o>>>2]>>>8*(h+n*(o%4)),u+=s.charAt(i>>>4&15)+s.charAt(15&i);return r.outputUpper?u.toUpperCase():u}(t,e,n,r)};case"B64":return function(t){return function(t,e,n,r){let s,o,i,u,a,h="";const c=e/8,f=-1===n?3:0;for(s=0;c>s;s+=3)for(u=c>s+1?t[s+1>>>2]:0,a=c>s+2?t[s+2>>>2]:0,i=(t[s>>>2]>>>8*(f+n*(s%4))&255)<<16|(u>>>8*(f+n*((s+1)%4))&255)<<8|a>>>8*(f+n*((s+2)%4))&255,o=0;4>o;o+=1)h+=8*s+6*o>e?r.b64Pad:m.charAt(i>>>6*(3-o)&63);return h}(t,e,n,r)};case"BYTES":return function(t){return function(t,e,n){let r,s,o="";const i=e/8,u=-1===n?3:0;for(r=0;i>r;r+=1)s=t[r>>>2]>>>8*(u+n*(r%4))&255,o+=String.fromCharCode(s);return o}(t,e,n)};case"ARRAYBUFFER":try{new ArrayBuffer(0)}catch(t){throw Error(A)}return function(t){return function(t,e,n){let r;const s=e/8,o=new ArrayBuffer(s),i=new Uint8Array(o),u=-1===n?3:0;for(r=0;s>r;r+=1)i[r]=t[r>>>2]>>>8*(u+n*(r%4))&255;return o}(t,e,n)};case"UINT8ARRAY":try{new Uint8Array(0)}catch(t){throw Error(b)}return function(t){return function(t,e,n){let r;const s=e/8,o=-1===n?3:0,i=new Uint8Array(s);for(r=0;s>r;r+=1)i[r]=t[r>>>2]>>>8*(o+n*(r%4))&255;return i}(t,e,n)};default:throw Error("format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}function y(t){const e={outputUpper:!1,b64Pad:"=",outputLen:-1},n=t||{},r="Output length must be a multiple of 8";if(e.outputUpper=n.outputUpper||!1,n.b64Pad&&(e.b64Pad=n.b64Pad),n.outputLen){if(n.outputLen%8!=0)throw Error(r);e.outputLen=n.outputLen}else if(n.shakeLen){if(n.shakeLen%8!=0)throw Error(r);e.outputLen=n.shakeLen}if("boolean"!=typeof e.outputUpper)throw Error("Invalid outputUpper formatting option");if("string"!=typeof e.b64Pad)throw Error("Invalid b64Pad formatting option");return e}class R{constructor(t,e,n){const r=n||{};if(this.t=e,this.i=r.encoding||"UTF8",this.numRounds=r.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw Error("numRounds must a integer >= 1");this.o=t,this.h=[],this.u=0,this.l=!1,this.A=0,this.p=!1,this.U=[],this.R=[]}update(t){let e,n=0;const r=this.T>>>5,s=this.F(t,this.h,this.u),o=s.binLen,i=s.value,u=o>>>5;for(e=0;u>e;e+=r)o>=n+this.T&&(this.m=this.g(i.slice(e,e+r),this.m),n+=this.T);return this.A+=n,this.h=i.slice(n>>>5),this.u=o%this.T,this.l=!0,this}getHash(t,e){let n,r,s=this.B;const o=y(e);if(this.v){if(-1===o.outputLen)throw Error("Output length must be specified in options");s=o.outputLen}const i=E(t,s,this.H,o);if(this.p&&this.C)return i(this.C(o));for(r=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),s),n=1;this.numRounds>n;n+=1)this.v&&s%32!=0&&(r[r.length-1]&=16777215>>>24-s%32),r=this.Y(r,s,0,this.L(this.o),s);return i(r)}setHMACKey(t,e,n){if(!this.M)throw Error("Variant does not support HMAC");if(this.l)throw Error("Cannot set MAC key after calling update");const r=U(e,(n||{}).encoding||"UTF8",this.H);this.N(r(t))}N(t){const e=this.T>>>3,n=e/4-1;let r;if(1!==this.numRounds)throw Error("Cannot set numRounds with MAC");if(this.p)throw Error("MAC key already set");for(t.binLen/8>e&&(t.value=this.Y(t.value,t.binLen,0,this.L(this.o),this.B));n>=t.value.length;)t.value.push(0);for(r=0;n>=r;r+=1)this.U[r]=909522486^t.value[r],this.R[r]=1549556828^t.value[r];this.m=this.g(this.U,this.m),this.A=this.T,this.p=!0}getHMAC(t,e){const n=y(e);return E(t,this.B,this.H,n)(this.S())}S(){let t;if(!this.p)throw Error("Cannot call getHMAC without first setting MAC key");const e=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),this.B);return t=this.g(this.R,this.L(this.o)),t=this.Y(e,this.B,this.T,t,this.B),t}}function T(t,e){return t<<e|t>>>32-e}function v(t,e,n){return t^e^n}function C(t,e,n){return t&e^t&n^e&n}function F(t,e){const n=(65535&t)+(65535&e);return(65535&(t>>>16)+(e>>>16)+(n>>>16))<<16|65535&n}function B(t,e,n,r,s){const o=(65535&t)+(65535&e)+(65535&n)+(65535&r)+(65535&s);return(65535&(t>>>16)+(e>>>16)+(n>>>16)+(r>>>16)+(s>>>16)+(o>>>16))<<16|65535&o}function L(t){return[1732584193,4023233417,2562383102,271733878,3285377520]}function H(t,e){let n,r,s,o,i,u,a;const h=[];for(n=e[0],r=e[1],s=e[2],o=e[3],i=e[4],a=0;80>a;a+=1)h[a]=16>a?t[a]:T(h[a-3]^h[a-8]^h[a-14]^h[a-16],1),u=20>a?B(T(n,5),(c=r)&s^~c&o,i,1518500249,h[a]):40>a?B(T(n,5),v(r,s,o),i,1859775393,h[a]):60>a?B(T(n,5),C(r,s,o),i,2400959708,h[a]):B(T(n,5),v(r,s,o),i,3395469782,h[a]),i=o,o=s,s=T(r,30),r=n,n=u;var c;return e[0]=F(n,e[0]),e[1]=F(r,e[1]),e[2]=F(s,e[2]),e[3]=F(o,e[3]),e[4]=F(i,e[4]),e}function I(t,e,n,r){let s;const o=15+(e+65>>>9<<4),i=e+n;for(;o>=t.length;)t.push(0);for(t[e>>>5]|=128<<24-e%32,t[o]=4294967295&i,t[o-1]=i/4294967296|0,s=0;t.length>s;s+=16)r=H(t.slice(s,s+16),r);return r}class M extends R{constructor(t,e,n){if("SHA-1"!==t)throw Error("Chosen SHA variant is not supported");super(t,e,n);const r=n||{};this.M=!0,this.C=this.S,this.H=-1,this.F=U(this.t,this.i,this.H),this.g=H,this.I=function(t){return t.slice()},this.L=L,this.Y=I,this.m=[1732584193,4023233417,2562383102,271733878,3285377520],this.T=512,this.B=160,this.v=!1,r.hmacKey&&this.N(function(t,e,n,r){const s="hmacKey must include a value and format";if(!e)throw Error(s);if(void 0===e.value||!e.format)throw Error(s);return U(e.format,e.encoding||"UTF8",n)(e.value)}(0,r.hmacKey,this.H))}}const Y={status:400,body:"The hash prefix was not in a valid format"};async function S(t,e={}){const{baseUrl:n,timeoutMs:r,userAgent:s,addPadding:o=!1,mode:i="sha1"}=e,u=await async function(t,e={}){const{baseUrl:n="https://api.pwnedpasswords.com",timeoutMs:r,userAgent:s,addPadding:o=!1,mode:i="sha1"}=e,u={headers:{...s?{"User-Agent":s}:{},...o?{"Add-Padding":"true"}:{}},...r?{signal:AbortSignal.timeout(r)}:{}},a=`${n.replace(/\/$/g,"")}${t}?mode=${i}`,h=await fetch(a,u);if(h.ok)return h.text();if(h.status===Y.status){const t=await h.text();throw Error(t)}throw Error(h.statusText)}("/range/"+encodeURIComponent(t),{baseUrl:n,timeoutMs:r,userAgent:s,addPadding:o,mode:i});return u.split("\n").filter(Boolean).reduce(((t,e)=>{const[n,r]=e.split(":");return t[n]=Number.parseInt(r,10),t}),{})}async function x(t,e={}){const n=new M("SHA-1","TEXT");n.update(t);const r=n.getHash("HEX",{outputUpper:!0}),s=r.slice(0,5),o=r.slice(5);return(await S(s,e))[o]||0}async function N(t,e={}){const{apiKey:n,domain:r,truncate:s=!0,baseUrl:o,timeoutMs:i,userAgent:u}=e,[a,h]=await Promise.all([l(t,{apiKey:n,domain:r,truncate:s,baseUrl:o,timeoutMs:i,userAgent:u}),/^.+@.+$/.test(t)?g(t,{apiKey:n,baseUrl:o,timeoutMs:i,userAgent:u}):null]);return{breaches:a,pastes:h}}async function P(t={}){return c("/subscription/status",t)}n();export{h as RateLimitError,f as breach,l as breachedAccount,d as breaches,p as dataClasses,g as pasteAccount,x as pwnedPassword,S as pwnedPasswordRange,N as search,P as subscriptionStatus};
|
|
1
|
+
const t="hibp",e="14.1.1";function n(){if("undefined"!=typeof process&&process.versions?.node?.startsWith("18.")){const{File:t,fetch:e,FormData:n,Headers:r,Request:s,Response:o}=require("undici");global.File=t,global.Headers=r,global.Request=s,global.Response=o,global.fetch=e,global.FormData=n}}const r=new Map,s={headers:r,status:400,statusText:"Bad request — the account does not comply with an acceptable format."},o={headers:r,status:401,body:{statusCode:401,message:"Access denied due to missing hibp-api-key."}},i={headers:r,status:403,statusText:"Forbidden - access denied."},u={headers:r,status:404},a={headers:new Map([["retry-after","2"]]),status:429,body:{statusCode:429,message:"Rate limit is exceeded. Try again in 2 seconds."}};n();class h extends Error{retryAfterSeconds;constructor(t,e,n){super(e,n),this.name=this.constructor.name,this.retryAfterSeconds="string"==typeof t?Number.parseInt(t,10):void 0}}async function c(n,r={}){const{apiKey:c,baseUrl:f="https://haveibeenpwned.com/api/v3",timeoutMs:l,userAgent:d}=r,p={};c&&(p["HIBP-API-Key"]=c),d&&(p["User-Agent"]=d),d||"undefined"!=typeof navigator||(p["User-Agent"]=`${t} ${e}`);const g={headers:p,...l?{signal:AbortSignal.timeout(l)}:{}},m=`${f.replace(/\/$/g,"")}${n}`,A=await fetch(m,g);if(A.ok)return A.json();switch(A.status){case s.status:throw Error(s.statusText);case o.status:{const t=await A.json();throw Error(t.message)}case i.status:{const t=A.headers.get("cf-ray");if(t)throw Error(function(t){return`Request blocked, contact haveibeenpwned.com if this continues (Ray ID: ${t})`}(t));throw Error(i.statusText)}case u.status:return null;case a.status:{const t=await A.json(),e=A.headers.get("retry-after");throw new h(e,t.message)}default:throw Error(A.statusText)}}function f(t,e={}){return c("/breach/"+encodeURIComponent(t),e)}function l(t,e={}){const{apiKey:n,domain:r,includeUnverified:s=!0,timeoutMs:o,truncate:i=!0,baseUrl:u,userAgent:a}=e,h=`/breachedaccount/${encodeURIComponent(t)}?`,f=[];return r&&f.push("domain="+encodeURIComponent(r)),s||f.push("includeUnverified=false"),i||f.push("truncateResponse=false"),c(`${h}${f.join("&")}`,{apiKey:n,baseUrl:u,timeoutMs:o,userAgent:a})}function d(t={}){const{domain:e,baseUrl:n,timeoutMs:r,userAgent:s}=t,o=[];return e&&o.push("domain="+encodeURIComponent(e)),c("/breaches?"+o.join("&"),{baseUrl:n,timeoutMs:r,userAgent:s})}function p(t={}){return c("/dataclasses",t)}function g(t,e={}){return c("/pasteaccount/"+encodeURIComponent(t),e)}const m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",A="ARRAYBUFFER not supported by this environment",b="UINT8ARRAY not supported by this environment";function w(t,e,n,r){let s,o,i;const u=e||[0],a=(n=n||0)>>>3,h=-1===r?3:0;for(s=0;t.length>s;s+=1)i=s+a,o=i>>>2,o>=u.length&&u.push(0),u[o]|=t[s]<<8*(h+r*(i%4));return{value:u,binLen:8*t.length+n}}function U(t,e,n){switch(e){case"UTF8":case"UTF16BE":case"UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE")}switch(t){case"HEX":return function(t,e,r){return function(t,e,n,r){let s,o,i,u;if(0!=t.length%2)throw Error("String of HEX type must be in byte increments");const a=e||[0],h=(n=n||0)>>>3,c=-1===r?3:0;for(s=0;t.length>s;s+=2){if(o=parseInt(t.substr(s,2),16),isNaN(o))throw Error("String of HEX type contains invalid characters");for(u=(s>>>1)+h,i=u>>>2;i>=a.length;)a.push(0);a[i]|=o<<8*(c+r*(u%4))}return{value:a,binLen:4*t.length+n}}(t,e,r,n)};case"TEXT":return function(t,r,s){return function(t,e,n,r,s){let o,i,u,a,h,c,f,l,d=0;const p=n||[0],g=(r=r||0)>>>3;if("UTF8"===e)for(f=-1===s?3:0,u=0;t.length>u;u+=1)for(o=t.charCodeAt(u),i=[],128>o?i.push(o):2048>o?(i.push(192|o>>>6),i.push(128|63&o)):55296>o||o>=57344?i.push(224|o>>>12,128|o>>>6&63,128|63&o):(u+=1,o=65536+((1023&o)<<10|1023&t.charCodeAt(u)),i.push(240|o>>>18,128|o>>>12&63,128|o>>>6&63,128|63&o)),a=0;i.length>a;a+=1){for(c=d+g,h=c>>>2;h>=p.length;)p.push(0);p[h]|=i[a]<<8*(f+s*(c%4)),d+=1}else for(f=-1===s?2:0,l="UTF16LE"===e&&1!==s||"UTF16LE"!==e&&1===s,u=0;t.length>u;u+=1){for(o=t.charCodeAt(u),!0===l&&(a=255&o,o=a<<8|o>>>8),c=d+g,h=c>>>2;h>=p.length;)p.push(0);p[h]|=o<<8*(f+s*(c%4)),d+=2}return{value:p,binLen:8*d+r}}(t,e,r,s,n)};case"B64":return function(t,e,r){return function(t,e,n,r){let s,o,i,u,a,h,c,f=0;const l=e||[0],d=(n=n||0)>>>3,p=-1===r?3:0,g=t.indexOf("=");if(-1===t.search(/^[a-zA-Z0-9=+/]+$/))throw Error("Invalid character in base-64 string");if(t=t.replace(/=/g,""),-1!==g&&t.length>g)throw Error("Invalid '=' found in base-64 string");for(o=0;t.length>o;o+=4){for(a=t.substr(o,4),u=0,i=0;a.length>i;i+=1)s=m.indexOf(a.charAt(i)),u|=s<<18-6*i;for(i=0;a.length-1>i;i+=1){for(c=f+d,h=c>>>2;h>=l.length;)l.push(0);l[h]|=(u>>>16-8*i&255)<<8*(p+r*(c%4)),f+=1}}return{value:l,binLen:8*f+n}}(t,e,r,n)};case"BYTES":return function(t,e,r){return function(t,e,n,r){let s,o,i,u;const a=e||[0],h=(n=n||0)>>>3,c=-1===r?3:0;for(o=0;t.length>o;o+=1)s=t.charCodeAt(o),u=o+h,i=u>>>2,i>=a.length&&a.push(0),a[i]|=s<<8*(c+r*(u%4));return{value:a,binLen:8*t.length+n}}(t,e,r,n)};case"ARRAYBUFFER":try{new ArrayBuffer(0)}catch(t){throw Error(A)}return function(t,e,r){return function(t,e,n,r){return w(new Uint8Array(t),e,n,r)}(t,e,r,n)};case"UINT8ARRAY":try{new Uint8Array(0)}catch(t){throw Error(b)}return function(t,e,r){return w(t,e,r,n)};default:throw Error("format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}function E(t,e,n,r){switch(t){case"HEX":return function(t){return function(t,e,n,r){const s="0123456789abcdef";let o,i,u="";const a=e/8,h=-1===n?3:0;for(o=0;a>o;o+=1)i=t[o>>>2]>>>8*(h+n*(o%4)),u+=s.charAt(i>>>4&15)+s.charAt(15&i);return r.outputUpper?u.toUpperCase():u}(t,e,n,r)};case"B64":return function(t){return function(t,e,n,r){let s,o,i,u,a,h="";const c=e/8,f=-1===n?3:0;for(s=0;c>s;s+=3)for(u=c>s+1?t[s+1>>>2]:0,a=c>s+2?t[s+2>>>2]:0,i=(t[s>>>2]>>>8*(f+n*(s%4))&255)<<16|(u>>>8*(f+n*((s+1)%4))&255)<<8|a>>>8*(f+n*((s+2)%4))&255,o=0;4>o;o+=1)h+=8*s+6*o>e?r.b64Pad:m.charAt(i>>>6*(3-o)&63);return h}(t,e,n,r)};case"BYTES":return function(t){return function(t,e,n){let r,s,o="";const i=e/8,u=-1===n?3:0;for(r=0;i>r;r+=1)s=t[r>>>2]>>>8*(u+n*(r%4))&255,o+=String.fromCharCode(s);return o}(t,e,n)};case"ARRAYBUFFER":try{new ArrayBuffer(0)}catch(t){throw Error(A)}return function(t){return function(t,e,n){let r;const s=e/8,o=new ArrayBuffer(s),i=new Uint8Array(o),u=-1===n?3:0;for(r=0;s>r;r+=1)i[r]=t[r>>>2]>>>8*(u+n*(r%4))&255;return o}(t,e,n)};case"UINT8ARRAY":try{new Uint8Array(0)}catch(t){throw Error(b)}return function(t){return function(t,e,n){let r;const s=e/8,o=-1===n?3:0,i=new Uint8Array(s);for(r=0;s>r;r+=1)i[r]=t[r>>>2]>>>8*(o+n*(r%4))&255;return i}(t,e,n)};default:throw Error("format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}function y(t){const e={outputUpper:!1,b64Pad:"=",outputLen:-1},n=t||{},r="Output length must be a multiple of 8";if(e.outputUpper=n.outputUpper||!1,n.b64Pad&&(e.b64Pad=n.b64Pad),n.outputLen){if(n.outputLen%8!=0)throw Error(r);e.outputLen=n.outputLen}else if(n.shakeLen){if(n.shakeLen%8!=0)throw Error(r);e.outputLen=n.shakeLen}if("boolean"!=typeof e.outputUpper)throw Error("Invalid outputUpper formatting option");if("string"!=typeof e.b64Pad)throw Error("Invalid b64Pad formatting option");return e}class R{constructor(t,e,n){const r=n||{};if(this.t=e,this.i=r.encoding||"UTF8",this.numRounds=r.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw Error("numRounds must a integer >= 1");this.o=t,this.h=[],this.u=0,this.l=!1,this.A=0,this.p=!1,this.U=[],this.R=[]}update(t){let e,n=0;const r=this.T>>>5,s=this.F(t,this.h,this.u),o=s.binLen,i=s.value,u=o>>>5;for(e=0;u>e;e+=r)o>=n+this.T&&(this.m=this.g(i.slice(e,e+r),this.m),n+=this.T);return this.A+=n,this.h=i.slice(n>>>5),this.u=o%this.T,this.l=!0,this}getHash(t,e){let n,r,s=this.B;const o=y(e);if(this.v){if(-1===o.outputLen)throw Error("Output length must be specified in options");s=o.outputLen}const i=E(t,s,this.H,o);if(this.p&&this.C)return i(this.C(o));for(r=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),s),n=1;this.numRounds>n;n+=1)this.v&&s%32!=0&&(r[r.length-1]&=16777215>>>24-s%32),r=this.Y(r,s,0,this.L(this.o),s);return i(r)}setHMACKey(t,e,n){if(!this.M)throw Error("Variant does not support HMAC");if(this.l)throw Error("Cannot set MAC key after calling update");const r=U(e,(n||{}).encoding||"UTF8",this.H);this.N(r(t))}N(t){const e=this.T>>>3,n=e/4-1;let r;if(1!==this.numRounds)throw Error("Cannot set numRounds with MAC");if(this.p)throw Error("MAC key already set");for(t.binLen/8>e&&(t.value=this.Y(t.value,t.binLen,0,this.L(this.o),this.B));n>=t.value.length;)t.value.push(0);for(r=0;n>=r;r+=1)this.U[r]=909522486^t.value[r],this.R[r]=1549556828^t.value[r];this.m=this.g(this.U,this.m),this.A=this.T,this.p=!0}getHMAC(t,e){const n=y(e);return E(t,this.B,this.H,n)(this.S())}S(){let t;if(!this.p)throw Error("Cannot call getHMAC without first setting MAC key");const e=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),this.B);return t=this.g(this.R,this.L(this.o)),t=this.Y(e,this.B,this.T,t,this.B),t}}function T(t,e){return t<<e|t>>>32-e}function v(t,e,n){return t^e^n}function C(t,e,n){return t&e^t&n^e&n}function F(t,e){const n=(65535&t)+(65535&e);return(65535&(t>>>16)+(e>>>16)+(n>>>16))<<16|65535&n}function B(t,e,n,r,s){const o=(65535&t)+(65535&e)+(65535&n)+(65535&r)+(65535&s);return(65535&(t>>>16)+(e>>>16)+(n>>>16)+(r>>>16)+(s>>>16)+(o>>>16))<<16|65535&o}function L(t){return[1732584193,4023233417,2562383102,271733878,3285377520]}function H(t,e){let n,r,s,o,i,u,a;const h=[];for(n=e[0],r=e[1],s=e[2],o=e[3],i=e[4],a=0;80>a;a+=1)h[a]=16>a?t[a]:T(h[a-3]^h[a-8]^h[a-14]^h[a-16],1),u=20>a?B(T(n,5),(c=r)&s^~c&o,i,1518500249,h[a]):40>a?B(T(n,5),v(r,s,o),i,1859775393,h[a]):60>a?B(T(n,5),C(r,s,o),i,2400959708,h[a]):B(T(n,5),v(r,s,o),i,3395469782,h[a]),i=o,o=s,s=T(r,30),r=n,n=u;var c;return e[0]=F(n,e[0]),e[1]=F(r,e[1]),e[2]=F(s,e[2]),e[3]=F(o,e[3]),e[4]=F(i,e[4]),e}function I(t,e,n,r){let s;const o=15+(e+65>>>9<<4),i=e+n;for(;o>=t.length;)t.push(0);for(t[e>>>5]|=128<<24-e%32,t[o]=4294967295&i,t[o-1]=i/4294967296|0,s=0;t.length>s;s+=16)r=H(t.slice(s,s+16),r);return r}class M extends R{constructor(t,e,n){if("SHA-1"!==t)throw Error("Chosen SHA variant is not supported");super(t,e,n);const r=n||{};this.M=!0,this.C=this.S,this.H=-1,this.F=U(this.t,this.i,this.H),this.g=H,this.I=function(t){return t.slice()},this.L=L,this.Y=I,this.m=[1732584193,4023233417,2562383102,271733878,3285377520],this.T=512,this.B=160,this.v=!1,r.hmacKey&&this.N(function(t,e,n,r){const s="hmacKey must include a value and format";if(!e)throw Error(s);if(void 0===e.value||!e.format)throw Error(s);return U(e.format,e.encoding||"UTF8",n)(e.value)}(0,r.hmacKey,this.H))}}const Y={status:400,body:"The hash prefix was not in a valid format"};async function S(t,e={}){const{baseUrl:n,timeoutMs:r,userAgent:s,addPadding:o=!1,mode:i="sha1"}=e,u=await async function(t,e={}){const{baseUrl:n="https://api.pwnedpasswords.com",timeoutMs:r,userAgent:s,addPadding:o=!1,mode:i="sha1"}=e,u={headers:{...s?{"User-Agent":s}:{},...o?{"Add-Padding":"true"}:{}},...r?{signal:AbortSignal.timeout(r)}:{}},a=`${n.replace(/\/$/g,"")}${t}?mode=${i}`,h=await fetch(a,u);if(h.ok)return h.text();if(h.status===Y.status){const t=await h.text();throw Error(t)}throw Error(h.statusText)}("/range/"+encodeURIComponent(t),{baseUrl:n,timeoutMs:r,userAgent:s,addPadding:o,mode:i});return u.split("\n").filter(Boolean).reduce(((t,e)=>{const[n,r]=e.split(":");return t[n]=Number.parseInt(r,10),t}),{})}async function x(t,e={}){const n=new M("SHA-1","TEXT");n.update(t);const r=n.getHash("HEX",{outputUpper:!0}),s=r.slice(0,5),o=r.slice(5);return(await S(s,e))[o]||0}async function N(t,e={}){const{apiKey:n,domain:r,truncate:s=!0,baseUrl:o,timeoutMs:i,userAgent:u}=e,[a,h]=await Promise.all([l(t,{apiKey:n,domain:r,truncate:s,baseUrl:o,timeoutMs:i,userAgent:u}),/^.+@.+$/.test(t)?g(t,{apiKey:n,baseUrl:o,timeoutMs:i,userAgent:u}):null]);return{breaches:a,pastes:h}}async function P(t={}){return c("/subscription/status",t)}n();export{h as RateLimitError,f as breach,l as breachedAccount,d as breaches,p as dataClasses,g as pasteAccount,x as pwnedPassword,S as pwnedPasswordRange,N as search,P as subscriptionStatus};
|
|
2
2
|
//# sourceMappingURL=hibp.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hibp.module.js","sources":["../../src/api/fetch-polyfill.ts","../../src/api/haveibeenpwned/responses.ts","../../src/api/haveibeenpwned/fetch-from-api.ts","../../src/breach.ts","../../src/breached-account.ts","../../src/breaches.ts","../../src/data-classes.ts","../../src/paste-account.ts","../../node_modules/jssha/dist/sha1.mjs","../../src/api/pwnedpasswords/responses.ts","../../src/pwned-password-range.ts","../../src/api/pwnedpasswords/fetch-from-api.ts","../../src/pwned-password.ts","../../src/search.ts","../../src/subscription-status.ts"],"sourcesContent":["/* eslint-disable global-require */\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n\n// This can probably be removed in favor of Node's native fetch once we drop\n// support for v18. https://x.com/ebey_jacob/status/1709975146939973909?s=20\n\n/* c8 ignore start */\nexport function installUndiciOnNode18() {\n if (\n typeof process !== 'undefined' &&\n process.versions.node.startsWith('18.')\n ) {\n const {\n File: UndiciFile,\n fetch: undiciFetch,\n FormData: UndiciFormData,\n Headers: UndiciHeaders,\n Request: UndiciRequest,\n Response: UndiciResponse,\n } = require('undici');\n global.File = UndiciFile as unknown as typeof File;\n global.Headers = UndiciHeaders;\n global.Request = UndiciRequest;\n global.Response = UndiciResponse;\n global.fetch = undiciFetch;\n global.FormData = UndiciFormData;\n }\n}\n/* c8 ignore stop */\n","/**\n * Known potential responses from the remote API.\n *\n * Unfortunately, the API does not send a decent human-readable message back\n * with each response, but they are documented on the website:\n * https://haveibeenpwned.com/api/v3#ResponseCodes\n *\n * These objects simply provide a mapping between the HTTP response status code\n * and the corresponding human-readable message so we can throw a more\n * descriptive error for the consumer. (They are also leveraged in our tests.)\n */\n\nimport type { ResponseBody } from './types.js';\n\n/** @internal */\nexport interface HaveIBeenPwnedApiResponse {\n headers: Map<string, string>;\n status: number;\n statusText?: string;\n body?: ResponseBody;\n}\n\nconst emptyHeaders = new Map<string, string>();\n\n/** @internal */\nexport const BAD_REQUEST: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 400,\n statusText:\n 'Bad request — the account does not comply with an acceptable format.',\n};\n\n/**\n * This response has unique behavior. For some reason, the API includes an\n * object in the response body for this one, containing a human-readable\n * message. Manually populating the message here purely for use in tests.\n *\n * @internal\n */\nexport const UNAUTHORIZED: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 401,\n body: {\n statusCode: 401,\n message: 'Access denied due to missing hibp-api-key.',\n },\n};\n\n/** @internal */\nexport const FORBIDDEN: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 403,\n statusText: 'Forbidden - access denied.',\n};\n\n/** @internal */\nexport const BLOCKED: HaveIBeenPwnedApiResponse = {\n headers: new Map([['cf-ray', 'someRayId']]),\n status: 403,\n};\n\n/** @internal */\nexport const NOT_FOUND: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 404,\n};\n\n/**\n * This response has unique behavior. For some reason, the API includes an\n * object in the response body for this one, containing a human-readable\n * message. Manually populating the message here purely for use in tests.\n *\n * @internal\n */\nexport const TOO_MANY_REQUESTS: HaveIBeenPwnedApiResponse = {\n headers: new Map([['retry-after', '2']]),\n status: 429,\n body: {\n statusCode: 429,\n message: 'Rate limit is exceeded. Try again in 2 seconds.',\n },\n};\n","import { name, version } from '../../../package.json';\nimport { installUndiciOnNode18 } from '../fetch-polyfill.js';\nimport {\n BAD_REQUEST,\n UNAUTHORIZED,\n FORBIDDEN,\n NOT_FOUND,\n TOO_MANY_REQUESTS,\n} from './responses.js';\nimport type { ApiData, ErrorData } from './types.js';\n\ninstallUndiciOnNode18();\n\n/**\n * Custom error thrown when the haveibeenpwned.com API responds with 429 Too\n * Many Requests. See the `retryAfterSeconds` property for the number of seconds\n * to wait before attempting the request again.\n *\n * @see https://haveibeenpwned.com/API/v3#RateLimiting\n */\nexport class RateLimitError extends Error {\n /**\n * The number of seconds to wait before attempting the request again. May be\n * `undefined` if the API does not provide a `retry-after` header, but this\n * should never happen.\n */\n public retryAfterSeconds: number | undefined;\n\n constructor(\n retryAfter: ReturnType<Headers['get']>,\n message: string | undefined,\n options?: ErrorOptions,\n ) {\n super(message, options);\n this.name = this.constructor.name;\n this.retryAfterSeconds =\n typeof retryAfter === 'string'\n ? Number.parseInt(retryAfter, 10) /* c8 ignore start */\n : undefined; /* c8 ignore stop */\n }\n}\n\nfunction blockedWithRayId(rayId: string) {\n return `Request blocked, contact haveibeenpwned.com if this continues (Ray ID: ${rayId})`;\n}\n\n/**\n * Fetches data from the supplied API endpoint.\n *\n * HTTP status code 200 returns an Object (data found).\n * HTTP status code 404 returns null (no data found).\n * HTTP status code 400 throws an Error (bad request).\n * HTTP status code 401 throws an Error (unauthorized).\n * HTTP status code 403 throws an Error (forbidden).\n * HTTP status code 429 throws an Error (too many requests).\n *\n * @internal\n * @private\n * @param {string} endpoint the API endpoint to query\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<ApiData>} a Promise which resolves to the data resulting\n * from the query (or null for 404 Not Found responses), or rejects with an\n * Error\n */\nexport async function fetchFromApi(\n endpoint: string,\n options: {\n apiKey?: string;\n baseUrl?: string;\n timeoutMs?: number;\n userAgent?: string;\n } = {},\n): Promise<ApiData> {\n const {\n apiKey,\n baseUrl = 'https://haveibeenpwned.com/api/v3',\n timeoutMs,\n userAgent,\n } = options;\n const headers: Record<string, string> = {};\n\n if (apiKey) {\n headers['HIBP-API-Key'] = apiKey;\n }\n\n if (userAgent) {\n headers['User-Agent'] = userAgent;\n }\n\n // Provide a default User-Agent when running outside the browser\n if (!userAgent && typeof navigator === 'undefined') {\n headers['User-Agent'] = `${name} ${version}`;\n }\n\n const config: RequestInit = {\n headers,\n ...(timeoutMs ? { signal: AbortSignal.timeout(timeoutMs) } : {}),\n };\n const url = `${baseUrl.replace(/\\/$/g, '')}${endpoint}`;\n const response = await fetch(url, config);\n\n if (response.ok) return response.json() as Promise<ApiData>;\n\n switch (response.status) {\n case BAD_REQUEST.status: {\n throw new Error(BAD_REQUEST.statusText);\n }\n case UNAUTHORIZED.status: {\n const body = (await response.json()) as unknown as ErrorData;\n throw new Error(body.message);\n }\n case FORBIDDEN.status: {\n const rayId = response.headers.get('cf-ray');\n if (rayId) throw new Error(blockedWithRayId(rayId));\n throw new Error(FORBIDDEN.statusText);\n }\n case NOT_FOUND.status: {\n return null;\n }\n case TOO_MANY_REQUESTS.status: {\n const body = (await response.json()) as unknown as ErrorData;\n const retryAfter = response.headers.get('retry-after');\n throw new RateLimitError(retryAfter, body.message);\n }\n default: {\n throw new Error(response.statusText);\n }\n }\n}\n","import type { Breach } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * An object representing a breach.\n *\n * @typedef {object} Breach\n * @property {string} Name\n * @property {string} Title\n * @property {string} Domain\n * @property {string} BreachDate\n * @property {string} AddedDate\n * @property {string} ModifiedDate\n * @property {number} PwnCount\n * @property {string} Description\n * @property {string[]} DataClasses\n * @property {boolean} IsVerified\n * @property {boolean} IsFabricated\n * @property {boolean} IsSensitive\n * @property {boolean} IsRetired\n * @property {boolean} IsSpamList\n * @property {boolean} IsMalware\n * @property {boolean} IsSubscriptionFree\n * @property {string} LogoPath\n */\n\n/**\n * Fetches data for a specific breach event.\n *\n * @param {string} breachName the name of a breach in the system\n * @param {object} [options] a configuration object\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<Breach>|Promise<null>)} a Promise which resolves to an\n * object representing a breach (or null if no breach was found), or rejects\n * with an Error\n * @example\n * try {\n * const data = await breach(\"Adobe\");\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function breach(\n breachName: string,\n options: {\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Breach | null> {\n return fetchFromApi(\n `/breach/${encodeURIComponent(breachName)}`,\n options,\n ) as Promise<Breach | null>;\n}\n","import type { Breach } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * Fetches breach data for a specific account.\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `breachedaccount` endpoint. The\n * `apiKey` option here is not explicitly required, but direct requests made\n * without it will fail (unless you specify a `baseUrl` to a proxy that inserts\n * a valid API key on your behalf).\n *\n * @param {string} account a username or email address\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.domain] a domain by which to filter the results\n * (default: all domains)\n * @param {boolean} [options.includeUnverified] include \"unverified\" breaches in\n * the results (default: true)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {boolean} [options.truncate] truncate the results to only include\n * the name of each breach (default: true)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<Breach[]> | Promise<null>)} a Promise which resolves to an\n * array of breach objects (or null if no breaches were found), or rejects with\n * an Error\n * @example\n * try {\n * const data = await breachedAccount(\"foo\", { apiKey: \"my-api-key\" });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await breachedAccount(\"bar\", {\n * includeUnverified: false,\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await breachedAccount(\"baz\", {\n * apiKey: \"my-api-key\",\n * domain: \"adobe.com\",\n * truncate: false,\n * userAgent: \"my-app 1.0\",\n * });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function breachedAccount(\n account: string,\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a domain by which to filter the results (default: all domains)\n */\n domain?: string;\n /**\n * include \"unverified\" breaches in the results (default: true)\n */\n includeUnverified?: boolean;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * truncate the results to only include the name of each breach (default:\n * true)\n */\n truncate?: boolean;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Breach[] | null> {\n const {\n apiKey,\n domain,\n includeUnverified = true,\n timeoutMs,\n truncate = true,\n baseUrl,\n userAgent,\n } = options;\n const endpoint = `/breachedaccount/${encodeURIComponent(account)}?`;\n const params: string[] = [];\n\n if (domain) {\n params.push(`domain=${encodeURIComponent(domain)}`);\n }\n\n if (!includeUnverified) {\n params.push('includeUnverified=false');\n }\n\n if (!truncate) {\n params.push('truncateResponse=false');\n }\n\n return fetchFromApi(`${endpoint}${params.join('&')}`, {\n apiKey,\n baseUrl,\n timeoutMs,\n userAgent,\n }) as Promise<Breach[] | null>;\n}\n","import type { Breach } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * Fetches all breach events in the system.\n *\n * @param {object} [options] a configuration object\n * @param {string} [options.domain] a domain by which to filter the results\n * (default: all domains)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<Breach[]>} a Promise which resolves to an array of breach\n * objects (an empty array if no breaches were found), or rejects with an Error\n * @example\n * try {\n * const data = await breaches();\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await breaches({ domain: \"adobe.com\" });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function breaches(\n options: {\n /**\n * a domain by which to filter the results (default: all domains)\n */\n domain?: string;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Breach[]> {\n const { domain, baseUrl, timeoutMs, userAgent } = options;\n const endpoint = '/breaches?';\n const params: string[] = [];\n\n if (domain) {\n params.push(`domain=${encodeURIComponent(domain)}`);\n }\n\n return fetchFromApi(`${endpoint}${params.join('&')}`, {\n baseUrl,\n timeoutMs,\n userAgent,\n }) as Promise<Breach[]>;\n}\n","import { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * Fetches all data classes in the system.\n *\n * @param {object} [options] a configuration object\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<string[]> | Promise<null>)} a Promise which resolves to an\n * array of strings (or null if no data classes were found), or rejects with an\n * Error\n * @example\n * try {\n * const data = await dataClasses();\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function dataClasses(\n options: {\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<string[] | null> {\n return fetchFromApi('/dataclasses', options) as Promise<string[] | null>;\n}\n","import type { Paste } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * An object representing a paste.\n *\n * @typedef {object} Paste\n * @property {string} Id\n * @property {string} Source\n * @property {string} Title\n * @property {string} Date\n * @property {number} EmailCount\n */\n\n/**\n * Fetches paste data for a specific account (email address).\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `pasteaccount` endpoint. The\n * `apiKey` option here is not explicitly required, but direct requests made\n * without it will fail (unless you specify a `baseUrl` to a proxy that inserts\n * a valid API key on your behalf).\n *\n * @param {string} email the email address to query\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<Paste[]> | Promise<null>)} a Promise which resolves to an\n * array of paste objects (or null if no pastes were found), or rejects with an\n * Error\n * @example\n * try {\n * const data = await pasteAccount(\"foo@bar.com\", { apiKey: \"my-api-key\" });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await pasteAccount(\"foo@bar.com\", {\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function pasteAccount(\n email: string,\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Paste[] | null> {\n return fetchFromApi(\n `/pasteaccount/${encodeURIComponent(email)}`,\n options,\n ) as Promise<Paste[] | null>;\n}\n","/**\n * A JavaScript implementation of the SHA family of hashes - defined in FIPS PUB 180-4, FIPS PUB 202,\n * and SP 800-185 - as well as the corresponding HMAC implementation as defined in FIPS PUB 198-1.\n *\n * Copyright 2008-2023 Brian Turek, 1998-2009 Paul Johnston & Contributors\n * Distributed under the BSD License\n * See http://caligatio.github.com/jsSHA/ for more information\n */\nconst t=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",r=\"ARRAYBUFFER not supported by this environment\",n=\"UINT8ARRAY not supported by this environment\";function i(t,r,n,i){let e,s,o;const h=r||[0],u=(n=n||0)>>>3,f=-1===i?3:0;for(e=0;e<t.length;e+=1)o=e+u,s=o>>>2,h.length<=s&&h.push(0),h[s]|=t[e]<<8*(f+i*(o%4));return{value:h,binLen:8*t.length+n}}function e(e,s,o){switch(s){case\"UTF8\":case\"UTF16BE\":case\"UTF16LE\":break;default:throw new Error(\"encoding must be UTF8, UTF16BE, or UTF16LE\")}switch(e){case\"HEX\":return function(t,r,n){return function(t,r,n,i){let e,s,o,h;if(0!=t.length%2)throw new Error(\"String of HEX type must be in byte increments\");const u=r||[0],f=(n=n||0)>>>3,c=-1===i?3:0;for(e=0;e<t.length;e+=2){if(s=parseInt(t.substr(e,2),16),isNaN(s))throw new Error(\"String of HEX type contains invalid characters\");for(h=(e>>>1)+f,o=h>>>2;u.length<=o;)u.push(0);u[o]|=s<<8*(c+i*(h%4))}return{value:u,binLen:4*t.length+n}}(t,r,n,o)};case\"TEXT\":return function(t,r,n){return function(t,r,n,i,e){let s,o,h,u,f,c,a,w,E=0;const l=n||[0],A=(i=i||0)>>>3;if(\"UTF8\"===r)for(a=-1===e?3:0,h=0;h<t.length;h+=1)for(s=t.charCodeAt(h),o=[],128>s?o.push(s):2048>s?(o.push(192|s>>>6),o.push(128|63&s)):55296>s||57344<=s?o.push(224|s>>>12,128|s>>>6&63,128|63&s):(h+=1,s=65536+((1023&s)<<10|1023&t.charCodeAt(h)),o.push(240|s>>>18,128|s>>>12&63,128|s>>>6&63,128|63&s)),u=0;u<o.length;u+=1){for(c=E+A,f=c>>>2;l.length<=f;)l.push(0);l[f]|=o[u]<<8*(a+e*(c%4)),E+=1}else for(a=-1===e?2:0,w=\"UTF16LE\"===r&&1!==e||\"UTF16LE\"!==r&&1===e,h=0;h<t.length;h+=1){for(s=t.charCodeAt(h),!0===w&&(u=255&s,s=u<<8|s>>>8),c=E+A,f=c>>>2;l.length<=f;)l.push(0);l[f]|=s<<8*(a+e*(c%4)),E+=2}return{value:l,binLen:8*E+i}}(t,s,r,n,o)};case\"B64\":return function(r,n,i){return function(r,n,i,e){let s,o,h,u,f,c,a,w=0;const E=n||[0],l=(i=i||0)>>>3,A=-1===e?3:0,p=r.indexOf(\"=\");if(-1===r.search(/^[a-zA-Z0-9=+/]+$/))throw new Error(\"Invalid character in base-64 string\");if(r=r.replace(/=/g,\"\"),-1!==p&&p<r.length)throw new Error(\"Invalid '=' found in base-64 string\");for(o=0;o<r.length;o+=4){for(f=r.substr(o,4),u=0,h=0;h<f.length;h+=1)s=t.indexOf(f.charAt(h)),u|=s<<18-6*h;for(h=0;h<f.length-1;h+=1){for(a=w+l,c=a>>>2;E.length<=c;)E.push(0);E[c]|=(u>>>16-8*h&255)<<8*(A+e*(a%4)),w+=1}}return{value:E,binLen:8*w+i}}(r,n,i,o)};case\"BYTES\":return function(t,r,n){return function(t,r,n,i){let e,s,o,h;const u=r||[0],f=(n=n||0)>>>3,c=-1===i?3:0;for(s=0;s<t.length;s+=1)e=t.charCodeAt(s),h=s+f,o=h>>>2,u.length<=o&&u.push(0),u[o]|=e<<8*(c+i*(h%4));return{value:u,binLen:8*t.length+n}}(t,r,n,o)};case\"ARRAYBUFFER\":try{new ArrayBuffer(0)}catch(t){throw new Error(r)}return function(t,r,n){return function(t,r,n,e){return i(new Uint8Array(t),r,n,e)}(t,r,n,o)};case\"UINT8ARRAY\":try{new Uint8Array(0)}catch(t){throw new Error(n)}return function(t,r,n){return i(t,r,n,o)};default:throw new Error(\"format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY\")}}function s(i,e,s,o){switch(i){case\"HEX\":return function(t){return function(t,r,n,i){const e=\"0123456789abcdef\";let s,o,h=\"\";const u=r/8,f=-1===n?3:0;for(s=0;s<u;s+=1)o=t[s>>>2]>>>8*(f+n*(s%4)),h+=e.charAt(o>>>4&15)+e.charAt(15&o);return i.outputUpper?h.toUpperCase():h}(t,e,s,o)};case\"B64\":return function(r){return function(r,n,i,e){let s,o,h,u,f,c=\"\";const a=n/8,w=-1===i?3:0;for(s=0;s<a;s+=3)for(u=s+1<a?r[s+1>>>2]:0,f=s+2<a?r[s+2>>>2]:0,h=(r[s>>>2]>>>8*(w+i*(s%4))&255)<<16|(u>>>8*(w+i*((s+1)%4))&255)<<8|f>>>8*(w+i*((s+2)%4))&255,o=0;o<4;o+=1)c+=8*s+6*o<=n?t.charAt(h>>>6*(3-o)&63):e.b64Pad;return c}(r,e,s,o)};case\"BYTES\":return function(t){return function(t,r,n){let i,e,s=\"\";const o=r/8,h=-1===n?3:0;for(i=0;i<o;i+=1)e=t[i>>>2]>>>8*(h+n*(i%4))&255,s+=String.fromCharCode(e);return s}(t,e,s)};case\"ARRAYBUFFER\":try{new ArrayBuffer(0)}catch(t){throw new Error(r)}return function(t){return function(t,r,n){let i;const e=r/8,s=new ArrayBuffer(e),o=new Uint8Array(s),h=-1===n?3:0;for(i=0;i<e;i+=1)o[i]=t[i>>>2]>>>8*(h+n*(i%4))&255;return s}(t,e,s)};case\"UINT8ARRAY\":try{new Uint8Array(0)}catch(t){throw new Error(n)}return function(t){return function(t,r,n){let i;const e=r/8,s=-1===n?3:0,o=new Uint8Array(e);for(i=0;i<e;i+=1)o[i]=t[i>>>2]>>>8*(s+n*(i%4))&255;return o}(t,e,s)};default:throw new Error(\"format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY\")}}function o(t){const r={outputUpper:!1,b64Pad:\"=\",outputLen:-1},n=t||{},i=\"Output length must be a multiple of 8\";if(r.outputUpper=n.outputUpper||!1,n.b64Pad&&(r.b64Pad=n.b64Pad),n.outputLen){if(n.outputLen%8!=0)throw new Error(i);r.outputLen=n.outputLen}else if(n.shakeLen){if(n.shakeLen%8!=0)throw new Error(i);r.outputLen=n.shakeLen}if(\"boolean\"!=typeof r.outputUpper)throw new Error(\"Invalid outputUpper formatting option\");if(\"string\"!=typeof r.b64Pad)throw new Error(\"Invalid b64Pad formatting option\");return r}class h{constructor(t,r,n){const i=n||{};if(this.t=r,this.i=i.encoding||\"UTF8\",this.numRounds=i.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw new Error(\"numRounds must a integer >= 1\");this.o=t,this.h=[],this.u=0,this.l=!1,this.A=0,this.p=!1,this.U=[],this.R=[]}update(t){let r,n=0;const i=this.T>>>5,e=this.F(t,this.h,this.u),s=e.binLen,o=e.value,h=s>>>5;for(r=0;r<h;r+=i)n+this.T<=s&&(this.m=this.g(o.slice(r,r+i),this.m),n+=this.T);return this.A+=n,this.h=o.slice(n>>>5),this.u=s%this.T,this.l=!0,this}getHash(t,r){let n,i,e=this.B;const h=o(r);if(this.v){if(-1===h.outputLen)throw new Error(\"Output length must be specified in options\");e=h.outputLen}const u=s(t,e,this.H,h);if(this.p&&this.C)return u(this.C(h));for(i=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),e),n=1;n<this.numRounds;n+=1)this.v&&e%32!=0&&(i[i.length-1]&=16777215>>>24-e%32),i=this.Y(i,e,0,this.L(this.o),e);return u(i)}setHMACKey(t,r,n){if(!this.M)throw new Error(\"Variant does not support HMAC\");if(this.l)throw new Error(\"Cannot set MAC key after calling update\");const i=e(r,(n||{}).encoding||\"UTF8\",this.H);this.N(i(t))}N(t){const r=this.T>>>3,n=r/4-1;let i;if(1!==this.numRounds)throw new Error(\"Cannot set numRounds with MAC\");if(this.p)throw new Error(\"MAC key already set\");for(r<t.binLen/8&&(t.value=this.Y(t.value,t.binLen,0,this.L(this.o),this.B));t.value.length<=n;)t.value.push(0);for(i=0;i<=n;i+=1)this.U[i]=909522486^t.value[i],this.R[i]=1549556828^t.value[i];this.m=this.g(this.U,this.m),this.A=this.T,this.p=!0}getHMAC(t,r){const n=o(r);return s(t,this.B,this.H,n)(this.S())}S(){let t;if(!this.p)throw new Error(\"Cannot call getHMAC without first setting MAC key\");const r=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),this.B);return t=this.g(this.R,this.L(this.o)),t=this.Y(r,this.B,this.T,t,this.B),t}}function u(t,r){return t<<r|t>>>32-r}function f(t,r,n){return t^r^n}function c(t,r,n){return t&r^t&n^r&n}function a(t,r){const n=(65535&t)+(65535&r);return(65535&(t>>>16)+(r>>>16)+(n>>>16))<<16|65535&n}function w(t,r,n,i,e){const s=(65535&t)+(65535&r)+(65535&n)+(65535&i)+(65535&e);return(65535&(t>>>16)+(r>>>16)+(n>>>16)+(i>>>16)+(e>>>16)+(s>>>16))<<16|65535&s}function E(t){return[1732584193,4023233417,2562383102,271733878,3285377520]}function l(t,r){let n,i,e,s,o,h,E;const l=[];for(n=r[0],i=r[1],e=r[2],s=r[3],o=r[4],E=0;E<80;E+=1)l[E]=E<16?t[E]:u(l[E-3]^l[E-8]^l[E-14]^l[E-16],1),h=E<20?w(u(n,5),(A=i)&e^~A&s,o,1518500249,l[E]):E<40?w(u(n,5),f(i,e,s),o,1859775393,l[E]):E<60?w(u(n,5),c(i,e,s),o,2400959708,l[E]):w(u(n,5),f(i,e,s),o,3395469782,l[E]),o=s,s=e,e=u(i,30),i=n,n=h;var A;return r[0]=a(n,r[0]),r[1]=a(i,r[1]),r[2]=a(e,r[2]),r[3]=a(s,r[3]),r[4]=a(o,r[4]),r}function A(t,r,n,i){let e;const s=15+(r+65>>>9<<4),o=r+n;for(;t.length<=s;)t.push(0);for(t[r>>>5]|=128<<24-r%32,t[s]=4294967295&o,t[s-1]=o/4294967296|0,e=0;e<t.length;e+=16)i=l(t.slice(e,e+16),i);return i}class p extends h{constructor(t,r,n){if(\"SHA-1\"!==t)throw new Error(\"Chosen SHA variant is not supported\");super(t,r,n);const i=n||{};this.M=!0,this.C=this.S,this.H=-1,this.F=e(this.t,this.i,this.H),this.g=l,this.I=function(t){return t.slice()},this.L=E,this.Y=A,this.m=[1732584193,4023233417,2562383102,271733878,3285377520],this.T=512,this.B=160,this.v=!1,i.hmacKey&&this.N(function(t,r,n,i){const s=t+\" must include a value and format\";if(!r){if(!i)throw new Error(s);return i}if(void 0===r.value||!r.format)throw new Error(s);return e(r.format,r.encoding||\"UTF8\",n)(r.value)}(\"hmacKey\",i.hmacKey,this.H))}}export{p as default};\n","/**\n * Known potential responses from the remote API.\n *\n * https://haveibeenpwned.com/api/v3#PwnedPasswords\n *\n */\n\n/** @internal */\nexport interface PwnedPasswordsApiResponse {\n status: number;\n body?: string;\n}\n\n/** @internal */\nexport const BAD_REQUEST: PwnedPasswordsApiResponse = {\n status: 400,\n body: 'The hash prefix was not in a valid format',\n};\n","import { fetchFromApi } from './api/pwnedpasswords/fetch-from-api.js';\n\nexport type PwnedPasswordSuffixes = Record<string, number>;\n\n/**\n * An object mapping an exposed password hash suffix (corresponding to a given\n * hash prefix) to how many times it occurred in the Pwned Passwords repository.\n *\n * @typedef {Object.<string, number>} PwnedPasswordSuffixes\n */\n\n/**\n * Fetches the SHA-1 or NTLM hash suffixes for the given 5-character hash\n * prefix.\n *\n * When a password hash with the same first 5 characters is found in the Pwned\n * Passwords repository, the API will respond with an HTTP 200 and include the\n * suffix of every hash beginning with the specified prefix, followed by a count\n * of how many times it appears in the data set. This function parses the\n * response and returns a more structured format.\n *\n * @param {string} prefix the first 5 characters of a password hash (case\n * insensitive)\n * @param {object} [options] a configuration object\n * @param {boolean} [options.addPadding] ask the remote API to add padding to\n * the response to obscure the password prefix (default: `false`)\n * @param {'sha1' | 'ntlm'} [options.mode] return SHA-1 or NTLM hashes\n * (default: `sha1`)\n * @param {string} [options.baseUrl] a custom base URL for the\n * pwnedpasswords.com API endpoints (default: `https://api.pwnedpasswords.com`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<PwnedPasswordSuffixes>} a Promise which resolves to an\n * object mapping the `suffix` that when matched with the prefix composes the\n * complete hash, to the `count` of how many times it appears in the breached\n * password data set, or rejects with an Error\n *\n * @example\n * try {\n * const results = await pwnedPasswordRange(\"5BAA6\");\n * // results will have the following shape:\n * // {\n * // \"003D68EB55068C33ACE09247EE4C639306B\": 3,\n * // \"012C192B2F16F82EA0EB9EF18D9D539B0DD\": 1,\n * // ...\n * // }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const suffix = \"1E4C9B93F3F0682250B6CF8331B7EE68FD8\";\n * const results = await pwnedPasswordRange(\"5BAA6\");\n * const numPwns = results[suffix] || 0;\n * } catch (err) {\n * // ...\n * }\n * @see https://haveibeenpwned.com/api/v3#SearchingPwnedPasswordsByRange\n */\nexport async function pwnedPasswordRange(\n prefix: string,\n options: {\n /**\n * ask the remote API to add padding to the response to obscure the password\n * prefix (default: `false`)\n */\n addPadding?: boolean;\n /**\n * return SHA-1 or NTLM hashes (default: `sha1`)\n */\n mode?: 'sha1' | 'ntlm';\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<PwnedPasswordSuffixes> {\n const {\n baseUrl,\n timeoutMs,\n userAgent,\n addPadding = false,\n mode = 'sha1',\n } = options;\n\n const data = await fetchFromApi(`/range/${encodeURIComponent(prefix)}`, {\n baseUrl,\n timeoutMs,\n userAgent,\n addPadding,\n mode,\n });\n\n // create array from lines of text in response body\n const results = data.split('\\n').filter(Boolean);\n\n // convert into an object mapping suffix to count for each line\n return results.reduce<PwnedPasswordSuffixes>((acc, row) => {\n const [suffix, countString] = row.split(':');\n acc[suffix] = Number.parseInt(countString, 10);\n return acc;\n }, {});\n}\n","import { installUndiciOnNode18 } from '../fetch-polyfill.js';\nimport { BAD_REQUEST } from './responses.js';\n\ninstallUndiciOnNode18();\n\n/**\n * Fetches data from the supplied API endpoint.\n *\n * HTTP status code 200 returns plain text (data found).\n * HTTP status code 400 throws an Error (bad request).\n *\n * @internal\n * @private\n * @param {string} endpoint the API endpoint to query\n * @param {object} [options] a configuration object\n * @param {string} [options.baseUrl] a custom base URL for the\n * pwnedpasswords.com API endpoints (default: `https://api.pwnedpasswords.com`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @param {boolean} [options.addPadding] ask the remote API to add padding to\n * the response to obscure the password prefix (default: `false`)\n * @param {'sha1' | 'ntlm'} [options.mode] return SHA-1 or NTLM hashes\n * (default: `sha1`)\n * @returns {Promise<string>} a Promise which resolves to the data resulting\n * from the query, or rejects with an Error\n */\nexport async function fetchFromApi(\n endpoint: string,\n options: {\n baseUrl?: string;\n timeoutMs?: number;\n userAgent?: string;\n addPadding?: boolean;\n mode?: 'sha1' | 'ntlm';\n } = {},\n): Promise<string> {\n const {\n baseUrl = 'https://api.pwnedpasswords.com',\n timeoutMs,\n userAgent,\n addPadding = false,\n mode = 'sha1',\n } = options;\n\n const config: RequestInit = {\n headers: {\n ...(userAgent ? { 'User-Agent': userAgent } : {}),\n ...(addPadding ? { 'Add-Padding': 'true' } : {}),\n },\n ...(timeoutMs ? { signal: AbortSignal.timeout(timeoutMs) } : {}),\n };\n const url = `${baseUrl.replace(/\\/$/g, '')}${endpoint}?mode=${mode}`;\n const response = await fetch(url, config);\n\n if (response.ok) return response.text();\n\n if (response.status === BAD_REQUEST.status) {\n const text = await response.text();\n throw new Error(text);\n }\n\n throw new Error(response.statusText);\n}\n","import JSSHA from 'jssha/dist/sha1';\nimport { pwnedPasswordRange } from './pwned-password-range.js';\n\n/**\n * Fetches the number of times the the given password has been exposed in a\n * breach (0 indicating no exposure). The password is given in plain text, but\n * only the first 5 characters of its SHA-1 hash will be submitted to the API.\n *\n * @param {string} password a password in plain text\n * @param {object} [options] a configuration object\n * @param {boolean} [options.addPadding] ask the remote API to add padding to\n * the response to obscure the password prefix (default: `false`)\n * @param {string} [options.baseUrl] a custom base URL for the\n * pwnedpasswords.com API endpoints (default: `https://api.pwnedpasswords.com`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<number>} a Promise which resolves to the number of times\n * the password has been exposed in a breach, or rejects with an Error\n * @example\n * try {\n * const numPwns = await pwnedPassword(\"f00b4r\");\n * // truthy check or numeric condition\n * if (numPwns) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @see https://haveibeenpwned.com/api/v3#PwnedPasswords\n */\nexport async function pwnedPassword(\n password: string,\n options: {\n /**\n * ask the remote API to add padding to the response to obscure the password\n * prefix (default: `false`)\n */\n addPadding?: boolean;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<number> {\n /* eslint-disable */\n // @ts-expect-error: JSSHA types are busted\n const sha1 = new JSSHA('SHA-1', 'TEXT');\n sha1.update(password);\n const hash = sha1.getHash('HEX', { outputUpper: true });\n const prefix = hash.slice(0, 5);\n const suffix = hash.slice(5);\n\n const range = await pwnedPasswordRange(prefix, options);\n return range[suffix] || 0;\n /* eslint-enable */\n}\n","import type { Breach, Paste } from './api/haveibeenpwned/types.js';\nimport { breachedAccount } from './breached-account.js';\nimport { pasteAccount } from './paste-account.js';\n\nexport interface SearchResults {\n breaches: Breach[] | null;\n pastes: Paste[] | null;\n}\n\n/**\n * An object representing search results.\n *\n * @typedef {object} SearchResults\n * @property {(Breach[] | null)} breaches\n * @property {(Paste[] | null)} pastes\n */\n\n/**\n * Fetches all breaches and all pastes associated with the provided account\n * (email address or username). Note that the remote API does not support\n * querying pastes by username (only email addresses), so in the event the\n * provided account is not a valid email address, only breach data is queried\n * and the \"pastes\" field of the resulting object will always be null. This is\n * exactly how searching via the current web interface behaves, which this\n * convenience method is designed to mimic.\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `breachedaccount` and\n * `pasteaccount` endpoints. The `apiKey` option here is not explicitly\n * required, but direct requests made without it will fail (unless you specify a\n * `baseUrl` to a proxy that inserts a valid API key on your behalf).\n *\n * @param {string} account an email address or username\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.domain] a domain by which to filter the breach\n * results (default: all domains)\n * @param {boolean} [options.truncate] truncate the breach results to only\n * include the name of each breach (default: true)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the\n * User-Agent field in the request headers (default: `hibp <version>`)\n * @returns {Promise<SearchResults>} a Promise which resolves to an object\n * containing a \"breaches\" key (which can be null or an array of breach objects)\n * and a \"pastes\" key (which can be null or an array of paste objects), or\n * rejects with an Error\n * @example\n * try {\n * const data = await search(\"foo\", { apiKey: \"my-api-key\" });\n * if (data.breaches || data.pastes) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await search(\"nobody@nowhere.com\", {\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * truncate: false,\n * });\n * if (data.breaches || data.pastes) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @see https://haveibeenpwned.com/\n */\nexport async function search(\n account: string,\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a domain by which to filter the results (default: all domains)\n */\n domain?: string;\n /**\n * truncate the results to only include the name of each breach (default:\n * true)\n */\n truncate?: boolean;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<SearchResults> {\n const {\n apiKey,\n domain,\n truncate = true,\n baseUrl,\n timeoutMs,\n userAgent,\n } = options;\n\n const [breaches, pastes] = await Promise.all([\n breachedAccount(account, {\n apiKey,\n domain,\n truncate,\n baseUrl,\n timeoutMs,\n userAgent,\n }),\n // This email regex is garbage but it seems to be what the API uses:\n /^.+@.+$/.test(account)\n ? pasteAccount(account, { apiKey, baseUrl, timeoutMs, userAgent })\n : null,\n ]);\n\n return { breaches, pastes };\n}\n","import type { SubscriptionStatus } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * An object representing the status of your HIBP subscription.\n *\n * @typedef {object} SubscriptionStatus\n * @property {string} SubscriptionName\n * @property {string} Description\n * @property {string} SubscribedUntil\n * @property {number} Rpm\n * @property {number} DomainSearchMaxBreachedAccounts\n */\n\n/**\n * Fetches the current status of your HIBP subscription (API key).\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `subscription/status` endpoint.\n * The `apiKey` option here is not explicitly required, but direct requests made\n * without it will fail (unless you specify a `baseUrl` to a proxy that inserts\n * a valid API key on your behalf).\n *\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<SubscriptionStatus>} a Promise which resolves to a\n * subscription status object, or rejects with an Error\n * @example\n * try {\n * const data = await subscriptionStatus({ apiKey: \"my-api-key\" });\n * // ...\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await subscriptionStatus({\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * });\n * // ...\n * } catch (err) {\n * // ...\n * }\n */\nexport async function subscriptionStatus(\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n) {\n const endpoint = '/subscription/status';\n\n return fetchFromApi(endpoint, options) as Promise<SubscriptionStatus>;\n}\n"],"names":["installUndiciOnNode18","process","versions","node","startsWith","File","UndiciFile","fetch","undiciFetch","FormData","UndiciFormData","Headers","UndiciHeaders","Request","UndiciRequest","Response","UndiciResponse","require","global","emptyHeaders","Map","BAD_REQUEST","headers","status","statusText","UNAUTHORIZED","body","statusCode","message","FORBIDDEN","NOT_FOUND","TOO_MANY_REQUESTS","RateLimitError","Error","retryAfterSeconds","constructor","retryAfter","options","super","this","name","Number","parseInt","undefined","async","fetchFromApi","endpoint","apiKey","baseUrl","timeoutMs","userAgent","navigator","version","config","signal","AbortSignal","timeout","url","replace","response","ok","json","rayId","get","blockedWithRayId","breach","breachName","encodeURIComponent","breachedAccount","account","domain","includeUnverified","truncate","params","push","join","breaches","dataClasses","pasteAccount","email","t","r","n","i","e","s","o","h","u","f","length","value","binLen","c","substr","isNaN","a","w","E","l","A","charCodeAt","p","indexOf","search","charAt","ArrayBuffer","Uint8Array","outputUpper","toUpperCase","b64Pad","String","fromCharCode","outputLen","shakeLen","encoding","numRounds","U","R","update","T","F","m","g","slice","getHash","B","v","H","C","Y","I","L","setHMACKey","M","N","getHMAC","S","hmacKey","format","pwnedPasswordRange","prefix","addPadding","mode","data","text","split","filter","Boolean","reduce","acc","row","suffix","countString","pwnedPassword","password","sha1","JSSHA","hash","pastes","Promise","all","test","subscriptionStatus"],"mappings":"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","x_google_ignoreList":[8]}
|
|
1
|
+
{"version":3,"file":"hibp.module.js","sources":["../../src/api/fetch-polyfill.ts","../../src/api/haveibeenpwned/responses.ts","../../src/api/haveibeenpwned/fetch-from-api.ts","../../src/breach.ts","../../src/breached-account.ts","../../src/breaches.ts","../../src/data-classes.ts","../../src/paste-account.ts","../../node_modules/jssha/dist/sha1.mjs","../../src/api/pwnedpasswords/responses.ts","../../src/pwned-password-range.ts","../../src/api/pwnedpasswords/fetch-from-api.ts","../../src/pwned-password.ts","../../src/search.ts","../../src/subscription-status.ts"],"sourcesContent":["/* eslint-disable global-require */\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unnecessary-condition */\n\n// This can probably be removed in favor of Node's native fetch once we drop\n// support for v18. https://x.com/ebey_jacob/status/1709975146939973909?s=20\n\n/* c8 ignore start */\nexport function installUndiciOnNode18() {\n if (\n typeof process !== 'undefined' &&\n process.versions?.node?.startsWith('18.')\n ) {\n const {\n File: UndiciFile,\n fetch: undiciFetch,\n FormData: UndiciFormData,\n Headers: UndiciHeaders,\n Request: UndiciRequest,\n Response: UndiciResponse,\n } = require('undici');\n global.File = UndiciFile as unknown as typeof File;\n global.Headers = UndiciHeaders;\n global.Request = UndiciRequest;\n global.Response = UndiciResponse;\n global.fetch = undiciFetch;\n global.FormData = UndiciFormData;\n }\n}\n/* c8 ignore stop */\n","/**\n * Known potential responses from the remote API.\n *\n * Unfortunately, the API does not send a decent human-readable message back\n * with each response, but they are documented on the website:\n * https://haveibeenpwned.com/api/v3#ResponseCodes\n *\n * These objects simply provide a mapping between the HTTP response status code\n * and the corresponding human-readable message so we can throw a more\n * descriptive error for the consumer. (They are also leveraged in our tests.)\n */\n\nimport type { ResponseBody } from './types.js';\n\n/** @internal */\nexport interface HaveIBeenPwnedApiResponse {\n headers: Map<string, string>;\n status: number;\n statusText?: string;\n body?: ResponseBody;\n}\n\nconst emptyHeaders = new Map<string, string>();\n\n/** @internal */\nexport const BAD_REQUEST: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 400,\n statusText:\n 'Bad request — the account does not comply with an acceptable format.',\n};\n\n/**\n * This response has unique behavior. For some reason, the API includes an\n * object in the response body for this one, containing a human-readable\n * message. Manually populating the message here purely for use in tests.\n *\n * @internal\n */\nexport const UNAUTHORIZED: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 401,\n body: {\n statusCode: 401,\n message: 'Access denied due to missing hibp-api-key.',\n },\n};\n\n/** @internal */\nexport const FORBIDDEN: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 403,\n statusText: 'Forbidden - access denied.',\n};\n\n/** @internal */\nexport const BLOCKED: HaveIBeenPwnedApiResponse = {\n headers: new Map([['cf-ray', 'someRayId']]),\n status: 403,\n};\n\n/** @internal */\nexport const NOT_FOUND: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 404,\n};\n\n/**\n * This response has unique behavior. For some reason, the API includes an\n * object in the response body for this one, containing a human-readable\n * message. Manually populating the message here purely for use in tests.\n *\n * @internal\n */\nexport const TOO_MANY_REQUESTS: HaveIBeenPwnedApiResponse = {\n headers: new Map([['retry-after', '2']]),\n status: 429,\n body: {\n statusCode: 429,\n message: 'Rate limit is exceeded. Try again in 2 seconds.',\n },\n};\n","import { name, version } from '../../../package.json';\nimport { installUndiciOnNode18 } from '../fetch-polyfill.js';\nimport {\n BAD_REQUEST,\n UNAUTHORIZED,\n FORBIDDEN,\n NOT_FOUND,\n TOO_MANY_REQUESTS,\n} from './responses.js';\nimport type { ApiData, ErrorData } from './types.js';\n\ninstallUndiciOnNode18();\n\n/**\n * Custom error thrown when the haveibeenpwned.com API responds with 429 Too\n * Many Requests. See the `retryAfterSeconds` property for the number of seconds\n * to wait before attempting the request again.\n *\n * @see https://haveibeenpwned.com/API/v3#RateLimiting\n */\nexport class RateLimitError extends Error {\n /**\n * The number of seconds to wait before attempting the request again. May be\n * `undefined` if the API does not provide a `retry-after` header, but this\n * should never happen.\n */\n public retryAfterSeconds: number | undefined;\n\n constructor(\n retryAfter: ReturnType<Headers['get']>,\n message: string | undefined,\n options?: ErrorOptions,\n ) {\n super(message, options);\n this.name = this.constructor.name;\n this.retryAfterSeconds =\n typeof retryAfter === 'string'\n ? Number.parseInt(retryAfter, 10) /* c8 ignore start */\n : undefined; /* c8 ignore stop */\n }\n}\n\nfunction blockedWithRayId(rayId: string) {\n return `Request blocked, contact haveibeenpwned.com if this continues (Ray ID: ${rayId})`;\n}\n\n/**\n * Fetches data from the supplied API endpoint.\n *\n * HTTP status code 200 returns an Object (data found).\n * HTTP status code 404 returns null (no data found).\n * HTTP status code 400 throws an Error (bad request).\n * HTTP status code 401 throws an Error (unauthorized).\n * HTTP status code 403 throws an Error (forbidden).\n * HTTP status code 429 throws an Error (too many requests).\n *\n * @internal\n * @private\n * @param {string} endpoint the API endpoint to query\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<ApiData>} a Promise which resolves to the data resulting\n * from the query (or null for 404 Not Found responses), or rejects with an\n * Error\n */\nexport async function fetchFromApi(\n endpoint: string,\n options: {\n apiKey?: string;\n baseUrl?: string;\n timeoutMs?: number;\n userAgent?: string;\n } = {},\n): Promise<ApiData> {\n const {\n apiKey,\n baseUrl = 'https://haveibeenpwned.com/api/v3',\n timeoutMs,\n userAgent,\n } = options;\n const headers: Record<string, string> = {};\n\n if (apiKey) {\n headers['HIBP-API-Key'] = apiKey;\n }\n\n if (userAgent) {\n headers['User-Agent'] = userAgent;\n }\n\n // Provide a default User-Agent when running outside the browser\n if (!userAgent && typeof navigator === 'undefined') {\n headers['User-Agent'] = `${name} ${version}`;\n }\n\n const config: RequestInit = {\n headers,\n ...(timeoutMs ? { signal: AbortSignal.timeout(timeoutMs) } : {}),\n };\n const url = `${baseUrl.replace(/\\/$/g, '')}${endpoint}`;\n const response = await fetch(url, config);\n\n if (response.ok) return response.json() as Promise<ApiData>;\n\n switch (response.status) {\n case BAD_REQUEST.status: {\n throw new Error(BAD_REQUEST.statusText);\n }\n case UNAUTHORIZED.status: {\n const body = (await response.json()) as unknown as ErrorData;\n throw new Error(body.message);\n }\n case FORBIDDEN.status: {\n const rayId = response.headers.get('cf-ray');\n if (rayId) throw new Error(blockedWithRayId(rayId));\n throw new Error(FORBIDDEN.statusText);\n }\n case NOT_FOUND.status: {\n return null;\n }\n case TOO_MANY_REQUESTS.status: {\n const body = (await response.json()) as unknown as ErrorData;\n const retryAfter = response.headers.get('retry-after');\n throw new RateLimitError(retryAfter, body.message);\n }\n default: {\n throw new Error(response.statusText);\n }\n }\n}\n","import type { Breach } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * An object representing a breach.\n *\n * @typedef {object} Breach\n * @property {string} Name\n * @property {string} Title\n * @property {string} Domain\n * @property {string} BreachDate\n * @property {string} AddedDate\n * @property {string} ModifiedDate\n * @property {number} PwnCount\n * @property {string} Description\n * @property {string[]} DataClasses\n * @property {boolean} IsVerified\n * @property {boolean} IsFabricated\n * @property {boolean} IsSensitive\n * @property {boolean} IsRetired\n * @property {boolean} IsSpamList\n * @property {boolean} IsMalware\n * @property {boolean} IsSubscriptionFree\n * @property {string} LogoPath\n */\n\n/**\n * Fetches data for a specific breach event.\n *\n * @param {string} breachName the name of a breach in the system\n * @param {object} [options] a configuration object\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<Breach>|Promise<null>)} a Promise which resolves to an\n * object representing a breach (or null if no breach was found), or rejects\n * with an Error\n * @example\n * try {\n * const data = await breach(\"Adobe\");\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function breach(\n breachName: string,\n options: {\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Breach | null> {\n return fetchFromApi(\n `/breach/${encodeURIComponent(breachName)}`,\n options,\n ) as Promise<Breach | null>;\n}\n","import type { Breach } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * Fetches breach data for a specific account.\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `breachedaccount` endpoint. The\n * `apiKey` option here is not explicitly required, but direct requests made\n * without it will fail (unless you specify a `baseUrl` to a proxy that inserts\n * a valid API key on your behalf).\n *\n * @param {string} account a username or email address\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.domain] a domain by which to filter the results\n * (default: all domains)\n * @param {boolean} [options.includeUnverified] include \"unverified\" breaches in\n * the results (default: true)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {boolean} [options.truncate] truncate the results to only include\n * the name of each breach (default: true)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<Breach[]> | Promise<null>)} a Promise which resolves to an\n * array of breach objects (or null if no breaches were found), or rejects with\n * an Error\n * @example\n * try {\n * const data = await breachedAccount(\"foo\", { apiKey: \"my-api-key\" });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await breachedAccount(\"bar\", {\n * includeUnverified: false,\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await breachedAccount(\"baz\", {\n * apiKey: \"my-api-key\",\n * domain: \"adobe.com\",\n * truncate: false,\n * userAgent: \"my-app 1.0\",\n * });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function breachedAccount(\n account: string,\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a domain by which to filter the results (default: all domains)\n */\n domain?: string;\n /**\n * include \"unverified\" breaches in the results (default: true)\n */\n includeUnverified?: boolean;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * truncate the results to only include the name of each breach (default:\n * true)\n */\n truncate?: boolean;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Breach[] | null> {\n const {\n apiKey,\n domain,\n includeUnverified = true,\n timeoutMs,\n truncate = true,\n baseUrl,\n userAgent,\n } = options;\n const endpoint = `/breachedaccount/${encodeURIComponent(account)}?`;\n const params: string[] = [];\n\n if (domain) {\n params.push(`domain=${encodeURIComponent(domain)}`);\n }\n\n if (!includeUnverified) {\n params.push('includeUnverified=false');\n }\n\n if (!truncate) {\n params.push('truncateResponse=false');\n }\n\n return fetchFromApi(`${endpoint}${params.join('&')}`, {\n apiKey,\n baseUrl,\n timeoutMs,\n userAgent,\n }) as Promise<Breach[] | null>;\n}\n","import type { Breach } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * Fetches all breach events in the system.\n *\n * @param {object} [options] a configuration object\n * @param {string} [options.domain] a domain by which to filter the results\n * (default: all domains)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<Breach[]>} a Promise which resolves to an array of breach\n * objects (an empty array if no breaches were found), or rejects with an Error\n * @example\n * try {\n * const data = await breaches();\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await breaches({ domain: \"adobe.com\" });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function breaches(\n options: {\n /**\n * a domain by which to filter the results (default: all domains)\n */\n domain?: string;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Breach[]> {\n const { domain, baseUrl, timeoutMs, userAgent } = options;\n const endpoint = '/breaches?';\n const params: string[] = [];\n\n if (domain) {\n params.push(`domain=${encodeURIComponent(domain)}`);\n }\n\n return fetchFromApi(`${endpoint}${params.join('&')}`, {\n baseUrl,\n timeoutMs,\n userAgent,\n }) as Promise<Breach[]>;\n}\n","import { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * Fetches all data classes in the system.\n *\n * @param {object} [options] a configuration object\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<string[]> | Promise<null>)} a Promise which resolves to an\n * array of strings (or null if no data classes were found), or rejects with an\n * Error\n * @example\n * try {\n * const data = await dataClasses();\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function dataClasses(\n options: {\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<string[] | null> {\n return fetchFromApi('/dataclasses', options) as Promise<string[] | null>;\n}\n","import type { Paste } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * An object representing a paste.\n *\n * @typedef {object} Paste\n * @property {string} Id\n * @property {string} Source\n * @property {string} Title\n * @property {string} Date\n * @property {number} EmailCount\n */\n\n/**\n * Fetches paste data for a specific account (email address).\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `pasteaccount` endpoint. The\n * `apiKey` option here is not explicitly required, but direct requests made\n * without it will fail (unless you specify a `baseUrl` to a proxy that inserts\n * a valid API key on your behalf).\n *\n * @param {string} email the email address to query\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<Paste[]> | Promise<null>)} a Promise which resolves to an\n * array of paste objects (or null if no pastes were found), or rejects with an\n * Error\n * @example\n * try {\n * const data = await pasteAccount(\"foo@bar.com\", { apiKey: \"my-api-key\" });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await pasteAccount(\"foo@bar.com\", {\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function pasteAccount(\n email: string,\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Paste[] | null> {\n return fetchFromApi(\n `/pasteaccount/${encodeURIComponent(email)}`,\n options,\n ) as Promise<Paste[] | null>;\n}\n","/**\n * A JavaScript implementation of the SHA family of hashes - defined in FIPS PUB 180-4, FIPS PUB 202,\n * and SP 800-185 - as well as the corresponding HMAC implementation as defined in FIPS PUB 198-1.\n *\n * Copyright 2008-2023 Brian Turek, 1998-2009 Paul Johnston & Contributors\n * Distributed under the BSD License\n * See http://caligatio.github.com/jsSHA/ for more information\n */\nconst t=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",r=\"ARRAYBUFFER not supported by this environment\",n=\"UINT8ARRAY not supported by this environment\";function i(t,r,n,i){let e,s,o;const h=r||[0],u=(n=n||0)>>>3,f=-1===i?3:0;for(e=0;e<t.length;e+=1)o=e+u,s=o>>>2,h.length<=s&&h.push(0),h[s]|=t[e]<<8*(f+i*(o%4));return{value:h,binLen:8*t.length+n}}function e(e,s,o){switch(s){case\"UTF8\":case\"UTF16BE\":case\"UTF16LE\":break;default:throw new Error(\"encoding must be UTF8, UTF16BE, or UTF16LE\")}switch(e){case\"HEX\":return function(t,r,n){return function(t,r,n,i){let e,s,o,h;if(0!=t.length%2)throw new Error(\"String of HEX type must be in byte increments\");const u=r||[0],f=(n=n||0)>>>3,c=-1===i?3:0;for(e=0;e<t.length;e+=2){if(s=parseInt(t.substr(e,2),16),isNaN(s))throw new Error(\"String of HEX type contains invalid characters\");for(h=(e>>>1)+f,o=h>>>2;u.length<=o;)u.push(0);u[o]|=s<<8*(c+i*(h%4))}return{value:u,binLen:4*t.length+n}}(t,r,n,o)};case\"TEXT\":return function(t,r,n){return function(t,r,n,i,e){let s,o,h,u,f,c,a,w,E=0;const l=n||[0],A=(i=i||0)>>>3;if(\"UTF8\"===r)for(a=-1===e?3:0,h=0;h<t.length;h+=1)for(s=t.charCodeAt(h),o=[],128>s?o.push(s):2048>s?(o.push(192|s>>>6),o.push(128|63&s)):55296>s||57344<=s?o.push(224|s>>>12,128|s>>>6&63,128|63&s):(h+=1,s=65536+((1023&s)<<10|1023&t.charCodeAt(h)),o.push(240|s>>>18,128|s>>>12&63,128|s>>>6&63,128|63&s)),u=0;u<o.length;u+=1){for(c=E+A,f=c>>>2;l.length<=f;)l.push(0);l[f]|=o[u]<<8*(a+e*(c%4)),E+=1}else for(a=-1===e?2:0,w=\"UTF16LE\"===r&&1!==e||\"UTF16LE\"!==r&&1===e,h=0;h<t.length;h+=1){for(s=t.charCodeAt(h),!0===w&&(u=255&s,s=u<<8|s>>>8),c=E+A,f=c>>>2;l.length<=f;)l.push(0);l[f]|=s<<8*(a+e*(c%4)),E+=2}return{value:l,binLen:8*E+i}}(t,s,r,n,o)};case\"B64\":return function(r,n,i){return function(r,n,i,e){let s,o,h,u,f,c,a,w=0;const E=n||[0],l=(i=i||0)>>>3,A=-1===e?3:0,p=r.indexOf(\"=\");if(-1===r.search(/^[a-zA-Z0-9=+/]+$/))throw new Error(\"Invalid character in base-64 string\");if(r=r.replace(/=/g,\"\"),-1!==p&&p<r.length)throw new Error(\"Invalid '=' found in base-64 string\");for(o=0;o<r.length;o+=4){for(f=r.substr(o,4),u=0,h=0;h<f.length;h+=1)s=t.indexOf(f.charAt(h)),u|=s<<18-6*h;for(h=0;h<f.length-1;h+=1){for(a=w+l,c=a>>>2;E.length<=c;)E.push(0);E[c]|=(u>>>16-8*h&255)<<8*(A+e*(a%4)),w+=1}}return{value:E,binLen:8*w+i}}(r,n,i,o)};case\"BYTES\":return function(t,r,n){return function(t,r,n,i){let e,s,o,h;const u=r||[0],f=(n=n||0)>>>3,c=-1===i?3:0;for(s=0;s<t.length;s+=1)e=t.charCodeAt(s),h=s+f,o=h>>>2,u.length<=o&&u.push(0),u[o]|=e<<8*(c+i*(h%4));return{value:u,binLen:8*t.length+n}}(t,r,n,o)};case\"ARRAYBUFFER\":try{new ArrayBuffer(0)}catch(t){throw new Error(r)}return function(t,r,n){return function(t,r,n,e){return i(new Uint8Array(t),r,n,e)}(t,r,n,o)};case\"UINT8ARRAY\":try{new Uint8Array(0)}catch(t){throw new Error(n)}return function(t,r,n){return i(t,r,n,o)};default:throw new Error(\"format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY\")}}function s(i,e,s,o){switch(i){case\"HEX\":return function(t){return function(t,r,n,i){const e=\"0123456789abcdef\";let s,o,h=\"\";const u=r/8,f=-1===n?3:0;for(s=0;s<u;s+=1)o=t[s>>>2]>>>8*(f+n*(s%4)),h+=e.charAt(o>>>4&15)+e.charAt(15&o);return i.outputUpper?h.toUpperCase():h}(t,e,s,o)};case\"B64\":return function(r){return function(r,n,i,e){let s,o,h,u,f,c=\"\";const a=n/8,w=-1===i?3:0;for(s=0;s<a;s+=3)for(u=s+1<a?r[s+1>>>2]:0,f=s+2<a?r[s+2>>>2]:0,h=(r[s>>>2]>>>8*(w+i*(s%4))&255)<<16|(u>>>8*(w+i*((s+1)%4))&255)<<8|f>>>8*(w+i*((s+2)%4))&255,o=0;o<4;o+=1)c+=8*s+6*o<=n?t.charAt(h>>>6*(3-o)&63):e.b64Pad;return c}(r,e,s,o)};case\"BYTES\":return function(t){return function(t,r,n){let i,e,s=\"\";const o=r/8,h=-1===n?3:0;for(i=0;i<o;i+=1)e=t[i>>>2]>>>8*(h+n*(i%4))&255,s+=String.fromCharCode(e);return s}(t,e,s)};case\"ARRAYBUFFER\":try{new ArrayBuffer(0)}catch(t){throw new Error(r)}return function(t){return function(t,r,n){let i;const e=r/8,s=new ArrayBuffer(e),o=new Uint8Array(s),h=-1===n?3:0;for(i=0;i<e;i+=1)o[i]=t[i>>>2]>>>8*(h+n*(i%4))&255;return s}(t,e,s)};case\"UINT8ARRAY\":try{new Uint8Array(0)}catch(t){throw new Error(n)}return function(t){return function(t,r,n){let i;const e=r/8,s=-1===n?3:0,o=new Uint8Array(e);for(i=0;i<e;i+=1)o[i]=t[i>>>2]>>>8*(s+n*(i%4))&255;return o}(t,e,s)};default:throw new Error(\"format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY\")}}function o(t){const r={outputUpper:!1,b64Pad:\"=\",outputLen:-1},n=t||{},i=\"Output length must be a multiple of 8\";if(r.outputUpper=n.outputUpper||!1,n.b64Pad&&(r.b64Pad=n.b64Pad),n.outputLen){if(n.outputLen%8!=0)throw new Error(i);r.outputLen=n.outputLen}else if(n.shakeLen){if(n.shakeLen%8!=0)throw new Error(i);r.outputLen=n.shakeLen}if(\"boolean\"!=typeof r.outputUpper)throw new Error(\"Invalid outputUpper formatting option\");if(\"string\"!=typeof r.b64Pad)throw new Error(\"Invalid b64Pad formatting option\");return r}class h{constructor(t,r,n){const i=n||{};if(this.t=r,this.i=i.encoding||\"UTF8\",this.numRounds=i.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw new Error(\"numRounds must a integer >= 1\");this.o=t,this.h=[],this.u=0,this.l=!1,this.A=0,this.p=!1,this.U=[],this.R=[]}update(t){let r,n=0;const i=this.T>>>5,e=this.F(t,this.h,this.u),s=e.binLen,o=e.value,h=s>>>5;for(r=0;r<h;r+=i)n+this.T<=s&&(this.m=this.g(o.slice(r,r+i),this.m),n+=this.T);return this.A+=n,this.h=o.slice(n>>>5),this.u=s%this.T,this.l=!0,this}getHash(t,r){let n,i,e=this.B;const h=o(r);if(this.v){if(-1===h.outputLen)throw new Error(\"Output length must be specified in options\");e=h.outputLen}const u=s(t,e,this.H,h);if(this.p&&this.C)return u(this.C(h));for(i=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),e),n=1;n<this.numRounds;n+=1)this.v&&e%32!=0&&(i[i.length-1]&=16777215>>>24-e%32),i=this.Y(i,e,0,this.L(this.o),e);return u(i)}setHMACKey(t,r,n){if(!this.M)throw new Error(\"Variant does not support HMAC\");if(this.l)throw new Error(\"Cannot set MAC key after calling update\");const i=e(r,(n||{}).encoding||\"UTF8\",this.H);this.N(i(t))}N(t){const r=this.T>>>3,n=r/4-1;let i;if(1!==this.numRounds)throw new Error(\"Cannot set numRounds with MAC\");if(this.p)throw new Error(\"MAC key already set\");for(r<t.binLen/8&&(t.value=this.Y(t.value,t.binLen,0,this.L(this.o),this.B));t.value.length<=n;)t.value.push(0);for(i=0;i<=n;i+=1)this.U[i]=909522486^t.value[i],this.R[i]=1549556828^t.value[i];this.m=this.g(this.U,this.m),this.A=this.T,this.p=!0}getHMAC(t,r){const n=o(r);return s(t,this.B,this.H,n)(this.S())}S(){let t;if(!this.p)throw new Error(\"Cannot call getHMAC without first setting MAC key\");const r=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),this.B);return t=this.g(this.R,this.L(this.o)),t=this.Y(r,this.B,this.T,t,this.B),t}}function u(t,r){return t<<r|t>>>32-r}function f(t,r,n){return t^r^n}function c(t,r,n){return t&r^t&n^r&n}function a(t,r){const n=(65535&t)+(65535&r);return(65535&(t>>>16)+(r>>>16)+(n>>>16))<<16|65535&n}function w(t,r,n,i,e){const s=(65535&t)+(65535&r)+(65535&n)+(65535&i)+(65535&e);return(65535&(t>>>16)+(r>>>16)+(n>>>16)+(i>>>16)+(e>>>16)+(s>>>16))<<16|65535&s}function E(t){return[1732584193,4023233417,2562383102,271733878,3285377520]}function l(t,r){let n,i,e,s,o,h,E;const l=[];for(n=r[0],i=r[1],e=r[2],s=r[3],o=r[4],E=0;E<80;E+=1)l[E]=E<16?t[E]:u(l[E-3]^l[E-8]^l[E-14]^l[E-16],1),h=E<20?w(u(n,5),(A=i)&e^~A&s,o,1518500249,l[E]):E<40?w(u(n,5),f(i,e,s),o,1859775393,l[E]):E<60?w(u(n,5),c(i,e,s),o,2400959708,l[E]):w(u(n,5),f(i,e,s),o,3395469782,l[E]),o=s,s=e,e=u(i,30),i=n,n=h;var A;return r[0]=a(n,r[0]),r[1]=a(i,r[1]),r[2]=a(e,r[2]),r[3]=a(s,r[3]),r[4]=a(o,r[4]),r}function A(t,r,n,i){let e;const s=15+(r+65>>>9<<4),o=r+n;for(;t.length<=s;)t.push(0);for(t[r>>>5]|=128<<24-r%32,t[s]=4294967295&o,t[s-1]=o/4294967296|0,e=0;e<t.length;e+=16)i=l(t.slice(e,e+16),i);return i}class p extends h{constructor(t,r,n){if(\"SHA-1\"!==t)throw new Error(\"Chosen SHA variant is not supported\");super(t,r,n);const i=n||{};this.M=!0,this.C=this.S,this.H=-1,this.F=e(this.t,this.i,this.H),this.g=l,this.I=function(t){return t.slice()},this.L=E,this.Y=A,this.m=[1732584193,4023233417,2562383102,271733878,3285377520],this.T=512,this.B=160,this.v=!1,i.hmacKey&&this.N(function(t,r,n,i){const s=t+\" must include a value and format\";if(!r){if(!i)throw new Error(s);return i}if(void 0===r.value||!r.format)throw new Error(s);return e(r.format,r.encoding||\"UTF8\",n)(r.value)}(\"hmacKey\",i.hmacKey,this.H))}}export{p as default};\n","/**\n * Known potential responses from the remote API.\n *\n * https://haveibeenpwned.com/api/v3#PwnedPasswords\n *\n */\n\n/** @internal */\nexport interface PwnedPasswordsApiResponse {\n status: number;\n body?: string;\n}\n\n/** @internal */\nexport const BAD_REQUEST: PwnedPasswordsApiResponse = {\n status: 400,\n body: 'The hash prefix was not in a valid format',\n};\n","import { fetchFromApi } from './api/pwnedpasswords/fetch-from-api.js';\n\nexport type PwnedPasswordSuffixes = Record<string, number>;\n\n/**\n * An object mapping an exposed password hash suffix (corresponding to a given\n * hash prefix) to how many times it occurred in the Pwned Passwords repository.\n *\n * @typedef {Object.<string, number>} PwnedPasswordSuffixes\n */\n\n/**\n * Fetches the SHA-1 or NTLM hash suffixes for the given 5-character hash\n * prefix.\n *\n * When a password hash with the same first 5 characters is found in the Pwned\n * Passwords repository, the API will respond with an HTTP 200 and include the\n * suffix of every hash beginning with the specified prefix, followed by a count\n * of how many times it appears in the data set. This function parses the\n * response and returns a more structured format.\n *\n * @param {string} prefix the first 5 characters of a password hash (case\n * insensitive)\n * @param {object} [options] a configuration object\n * @param {boolean} [options.addPadding] ask the remote API to add padding to\n * the response to obscure the password prefix (default: `false`)\n * @param {'sha1' | 'ntlm'} [options.mode] return SHA-1 or NTLM hashes\n * (default: `sha1`)\n * @param {string} [options.baseUrl] a custom base URL for the\n * pwnedpasswords.com API endpoints (default: `https://api.pwnedpasswords.com`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<PwnedPasswordSuffixes>} a Promise which resolves to an\n * object mapping the `suffix` that when matched with the prefix composes the\n * complete hash, to the `count` of how many times it appears in the breached\n * password data set, or rejects with an Error\n *\n * @example\n * try {\n * const results = await pwnedPasswordRange(\"5BAA6\");\n * // results will have the following shape:\n * // {\n * // \"003D68EB55068C33ACE09247EE4C639306B\": 3,\n * // \"012C192B2F16F82EA0EB9EF18D9D539B0DD\": 1,\n * // ...\n * // }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const suffix = \"1E4C9B93F3F0682250B6CF8331B7EE68FD8\";\n * const results = await pwnedPasswordRange(\"5BAA6\");\n * const numPwns = results[suffix] || 0;\n * } catch (err) {\n * // ...\n * }\n * @see https://haveibeenpwned.com/api/v3#SearchingPwnedPasswordsByRange\n */\nexport async function pwnedPasswordRange(\n prefix: string,\n options: {\n /**\n * ask the remote API to add padding to the response to obscure the password\n * prefix (default: `false`)\n */\n addPadding?: boolean;\n /**\n * return SHA-1 or NTLM hashes (default: `sha1`)\n */\n mode?: 'sha1' | 'ntlm';\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<PwnedPasswordSuffixes> {\n const {\n baseUrl,\n timeoutMs,\n userAgent,\n addPadding = false,\n mode = 'sha1',\n } = options;\n\n const data = await fetchFromApi(`/range/${encodeURIComponent(prefix)}`, {\n baseUrl,\n timeoutMs,\n userAgent,\n addPadding,\n mode,\n });\n\n // create array from lines of text in response body\n const results = data.split('\\n').filter(Boolean);\n\n // convert into an object mapping suffix to count for each line\n return results.reduce<PwnedPasswordSuffixes>((acc, row) => {\n const [suffix, countString] = row.split(':');\n acc[suffix] = Number.parseInt(countString, 10);\n return acc;\n }, {});\n}\n","import { installUndiciOnNode18 } from '../fetch-polyfill.js';\nimport { BAD_REQUEST } from './responses.js';\n\ninstallUndiciOnNode18();\n\n/**\n * Fetches data from the supplied API endpoint.\n *\n * HTTP status code 200 returns plain text (data found).\n * HTTP status code 400 throws an Error (bad request).\n *\n * @internal\n * @private\n * @param {string} endpoint the API endpoint to query\n * @param {object} [options] a configuration object\n * @param {string} [options.baseUrl] a custom base URL for the\n * pwnedpasswords.com API endpoints (default: `https://api.pwnedpasswords.com`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @param {boolean} [options.addPadding] ask the remote API to add padding to\n * the response to obscure the password prefix (default: `false`)\n * @param {'sha1' | 'ntlm'} [options.mode] return SHA-1 or NTLM hashes\n * (default: `sha1`)\n * @returns {Promise<string>} a Promise which resolves to the data resulting\n * from the query, or rejects with an Error\n */\nexport async function fetchFromApi(\n endpoint: string,\n options: {\n baseUrl?: string;\n timeoutMs?: number;\n userAgent?: string;\n addPadding?: boolean;\n mode?: 'sha1' | 'ntlm';\n } = {},\n): Promise<string> {\n const {\n baseUrl = 'https://api.pwnedpasswords.com',\n timeoutMs,\n userAgent,\n addPadding = false,\n mode = 'sha1',\n } = options;\n\n const config: RequestInit = {\n headers: {\n ...(userAgent ? { 'User-Agent': userAgent } : {}),\n ...(addPadding ? { 'Add-Padding': 'true' } : {}),\n },\n ...(timeoutMs ? { signal: AbortSignal.timeout(timeoutMs) } : {}),\n };\n const url = `${baseUrl.replace(/\\/$/g, '')}${endpoint}?mode=${mode}`;\n const response = await fetch(url, config);\n\n if (response.ok) return response.text();\n\n if (response.status === BAD_REQUEST.status) {\n const text = await response.text();\n throw new Error(text);\n }\n\n throw new Error(response.statusText);\n}\n","import JSSHA from 'jssha/dist/sha1';\nimport { pwnedPasswordRange } from './pwned-password-range.js';\n\n/**\n * Fetches the number of times the the given password has been exposed in a\n * breach (0 indicating no exposure). The password is given in plain text, but\n * only the first 5 characters of its SHA-1 hash will be submitted to the API.\n *\n * @param {string} password a password in plain text\n * @param {object} [options] a configuration object\n * @param {boolean} [options.addPadding] ask the remote API to add padding to\n * the response to obscure the password prefix (default: `false`)\n * @param {string} [options.baseUrl] a custom base URL for the\n * pwnedpasswords.com API endpoints (default: `https://api.pwnedpasswords.com`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<number>} a Promise which resolves to the number of times\n * the password has been exposed in a breach, or rejects with an Error\n * @example\n * try {\n * const numPwns = await pwnedPassword(\"f00b4r\");\n * // truthy check or numeric condition\n * if (numPwns) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @see https://haveibeenpwned.com/api/v3#PwnedPasswords\n */\nexport async function pwnedPassword(\n password: string,\n options: {\n /**\n * ask the remote API to add padding to the response to obscure the password\n * prefix (default: `false`)\n */\n addPadding?: boolean;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<number> {\n /* eslint-disable */\n // @ts-expect-error: JSSHA types are busted\n const sha1 = new JSSHA('SHA-1', 'TEXT');\n sha1.update(password);\n const hash = sha1.getHash('HEX', { outputUpper: true });\n const prefix = hash.slice(0, 5);\n const suffix = hash.slice(5);\n\n const range = await pwnedPasswordRange(prefix, options);\n return range[suffix] || 0;\n /* eslint-enable */\n}\n","import type { Breach, Paste } from './api/haveibeenpwned/types.js';\nimport { breachedAccount } from './breached-account.js';\nimport { pasteAccount } from './paste-account.js';\n\nexport interface SearchResults {\n breaches: Breach[] | null;\n pastes: Paste[] | null;\n}\n\n/**\n * An object representing search results.\n *\n * @typedef {object} SearchResults\n * @property {(Breach[] | null)} breaches\n * @property {(Paste[] | null)} pastes\n */\n\n/**\n * Fetches all breaches and all pastes associated with the provided account\n * (email address or username). Note that the remote API does not support\n * querying pastes by username (only email addresses), so in the event the\n * provided account is not a valid email address, only breach data is queried\n * and the \"pastes\" field of the resulting object will always be null. This is\n * exactly how searching via the current web interface behaves, which this\n * convenience method is designed to mimic.\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `breachedaccount` and\n * `pasteaccount` endpoints. The `apiKey` option here is not explicitly\n * required, but direct requests made without it will fail (unless you specify a\n * `baseUrl` to a proxy that inserts a valid API key on your behalf).\n *\n * @param {string} account an email address or username\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.domain] a domain by which to filter the breach\n * results (default: all domains)\n * @param {boolean} [options.truncate] truncate the breach results to only\n * include the name of each breach (default: true)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the\n * User-Agent field in the request headers (default: `hibp <version>`)\n * @returns {Promise<SearchResults>} a Promise which resolves to an object\n * containing a \"breaches\" key (which can be null or an array of breach objects)\n * and a \"pastes\" key (which can be null or an array of paste objects), or\n * rejects with an Error\n * @example\n * try {\n * const data = await search(\"foo\", { apiKey: \"my-api-key\" });\n * if (data.breaches || data.pastes) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await search(\"nobody@nowhere.com\", {\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * truncate: false,\n * });\n * if (data.breaches || data.pastes) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @see https://haveibeenpwned.com/\n */\nexport async function search(\n account: string,\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a domain by which to filter the results (default: all domains)\n */\n domain?: string;\n /**\n * truncate the results to only include the name of each breach (default:\n * true)\n */\n truncate?: boolean;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<SearchResults> {\n const {\n apiKey,\n domain,\n truncate = true,\n baseUrl,\n timeoutMs,\n userAgent,\n } = options;\n\n const [breaches, pastes] = await Promise.all([\n breachedAccount(account, {\n apiKey,\n domain,\n truncate,\n baseUrl,\n timeoutMs,\n userAgent,\n }),\n // This email regex is garbage but it seems to be what the API uses:\n /^.+@.+$/.test(account)\n ? pasteAccount(account, { apiKey, baseUrl, timeoutMs, userAgent })\n : null,\n ]);\n\n return { breaches, pastes };\n}\n","import type { SubscriptionStatus } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * An object representing the status of your HIBP subscription.\n *\n * @typedef {object} SubscriptionStatus\n * @property {string} SubscriptionName\n * @property {string} Description\n * @property {string} SubscribedUntil\n * @property {number} Rpm\n * @property {number} DomainSearchMaxBreachedAccounts\n */\n\n/**\n * Fetches the current status of your HIBP subscription (API key).\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `subscription/status` endpoint.\n * The `apiKey` option here is not explicitly required, but direct requests made\n * without it will fail (unless you specify a `baseUrl` to a proxy that inserts\n * a valid API key on your behalf).\n *\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<SubscriptionStatus>} a Promise which resolves to a\n * subscription status object, or rejects with an Error\n * @example\n * try {\n * const data = await subscriptionStatus({ apiKey: \"my-api-key\" });\n * // ...\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await subscriptionStatus({\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * });\n * // ...\n * } catch (err) {\n * // ...\n * }\n */\nexport async function subscriptionStatus(\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n) {\n const endpoint = '/subscription/status';\n\n return fetchFromApi(endpoint, options) as Promise<SubscriptionStatus>;\n}\n"],"names":["installUndiciOnNode18","process","versions","node","startsWith","File","UndiciFile","fetch","undiciFetch","FormData","UndiciFormData","Headers","UndiciHeaders","Request","UndiciRequest","Response","UndiciResponse","require","global","emptyHeaders","Map","BAD_REQUEST","headers","status","statusText","UNAUTHORIZED","body","statusCode","message","FORBIDDEN","NOT_FOUND","TOO_MANY_REQUESTS","RateLimitError","Error","retryAfterSeconds","constructor","retryAfter","options","super","this","name","Number","parseInt","undefined","async","fetchFromApi","endpoint","apiKey","baseUrl","timeoutMs","userAgent","navigator","version","config","signal","AbortSignal","timeout","url","replace","response","ok","json","rayId","get","blockedWithRayId","breach","breachName","encodeURIComponent","breachedAccount","account","domain","includeUnverified","truncate","params","push","join","breaches","dataClasses","pasteAccount","email","t","r","n","i","e","s","o","h","u","f","length","value","binLen","c","substr","isNaN","a","w","E","l","A","charCodeAt","p","indexOf","search","charAt","ArrayBuffer","Uint8Array","outputUpper","toUpperCase","b64Pad","String","fromCharCode","outputLen","shakeLen","encoding","numRounds","U","R","update","T","F","m","g","slice","getHash","B","v","H","C","Y","I","L","setHMACKey","M","N","getHMAC","S","hmacKey","format","pwnedPasswordRange","prefix","addPadding","mode","data","text","split","filter","Boolean","reduce","acc","row","suffix","countString","pwnedPassword","password","sha1","JSSHA","hash","pastes","Promise","all","test","subscriptionStatus"],"mappings":"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","x_google_ignoreList":[8]}
|
package/dist/browser/hibp.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(t,r){if("function"==typeof define&&define.amd)define("hibp",["exports"],r);else if("undefined"!=typeof exports)r(exports);else{var e={exports:{}};r(e.exports),t.hibp=e.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(t){function r(t,r){return function(t){if(Array.isArray(t))return t}(t)||function(t,r){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,o,i,a,u=[],s=!0,c=!1;try{if(i=(e=e.call(t)).next,0===r){if(Object(e)!==e)return;s=!1}else for(;!(s=(n=i.call(e)).done)&&(u.push(n.value),u.length!==r);s=!0);}catch(t){c=!0,o=t}finally{try{if(!s&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(t,r)||function(t,r){if(!t)return;if("string"==typeof t)return e(t,r);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return e(t,r)}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);r>e;e++)n[e]=t[e];return n}function n(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */n=function(){return r};var t,r={},e=Object.prototype,o=e.hasOwnProperty,i=Object.defineProperty||function(t,r,e){t[r]=e.value},u="function"==typeof Symbol?Symbol:{},s=u.iterator||"@@iterator",c=u.asyncIterator||"@@asyncIterator",f=u.toStringTag||"@@toStringTag";function h(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{h({},"")}catch(t){h=function(t,r,e){return t[r]=e}}function l(t,r,e,n){var o=Object.create((r&&r.prototype instanceof m?r:m).prototype),a=new k(n||[]);return i(o,"_invoke",{value:T(t,e,a)}),o}function p(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=l;var d="suspendedStart",v="suspendedYield",y="executing",g="completed",b={};function m(){}function w(){}function E(){}var A={};h(A,s,(function(){return this}));var x=Object.getPrototypeOf,U=x&&x(x(F([])));U&&U!==e&&o.call(U,s)&&(A=U);var R=E.prototype=m.prototype=Object.create(A);function O(t){["next","throw","return"].forEach((function(r){h(t,r,(function(t){return this._invoke(r,t)}))}))}function L(t,r){function e(n,i,u,s){var c=p(t[n],t,i);if("throw"!==c.type){var f=c.arg,h=f.value;return h&&"object"==a(h)&&o.call(h,"__await")?r.resolve(h.__await).then((function(t){e("next",t,u,s)}),(function(t){e("throw",t,u,s)})):r.resolve(h).then((function(t){f.value=t,u(f)}),(function(t){return e("throw",t,u,s)}))}s(c.arg)}var n;i(this,"_invoke",{value:function(t,o){function i(){return new r((function(r,n){e(t,o,r,n)}))}return n=n?n.then(i,i):i()}})}function T(r,e,n){var o=d;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===g){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var s=j(u,n);if(s){if(s===b)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===d)throw o=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var c=p(r,e,n);if("normal"===c.type){if(o=n.done?g:v,c.arg===b)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(o=g,n.method="throw",n.arg=c.arg)}}}function j(r,e){var n=e.method,o=r.iterator[n];if(o===t)return e.delegate=null,"throw"===n&&r.iterator.return&&(e.method="return",e.arg=t,j(r,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),b;var i=p(o,r.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,b;var a=i.arg;return a?a.done?(e[r.resultName]=a.value,e.next=r.nextLoc,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,b):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function P(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function S(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function F(r){if(r||""===r){var e=r[s];if(e)return e.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var n=-1,i=function e(){for(;++n<r.length;)if(o.call(r,n))return e.value=r[n],e.done=!1,e;return e.value=t,e.done=!0,e};return i.next=i}}throw new TypeError(a(r)+" is not iterable")}return w.prototype=E,i(R,"constructor",{value:E,configurable:!0}),i(E,"constructor",{value:w,configurable:!0}),w.displayName=h(E,f,"GeneratorFunction"),r.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===w||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,E):(t.__proto__=E,h(t,f,"GeneratorFunction")),t.prototype=Object.create(R),t},r.awrap=function(t){return{__await:t}},O(L.prototype),h(L.prototype,c,(function(){return this})),r.AsyncIterator=L,r.async=function(t,e,n,o,i){void 0===i&&(i=Promise);var a=new L(l(t,e,n,o),i);return r.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},O(R),h(R,f,"Generator"),h(R,s,(function(){return this})),h(R,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var r=Object(t),e=[];for(var n in r)e.push(n);return e.reverse(),function t(){for(;e.length;){var n=e.pop();if(n in r)return t.value=n,t.done=!1,t}return t.done=!0,t}},r.values=F,k.prototype={constructor:k,reset:function(r){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(S),!r)for(var e in this)"t"===e.charAt(0)&&o.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function n(n,o){return u.type="throw",u.arg=r,e.next=n,o&&(e.method="next",e.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return n("end");if(this.prev>=a.tryLoc){var s=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(s&&c){if(a.catchLoc>this.prev)return n(a.catchLoc,!0);if(a.finallyLoc>this.prev)return n(a.finallyLoc)}else if(s){if(a.catchLoc>this.prev)return n(a.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(a.finallyLoc>this.prev)return n(a.finallyLoc)}}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(this.prev>=n.tryLoc&&o.call(n,"finallyLoc")&&n.finallyLoc>this.prev){var i=n;break}}i&&("break"===t||"continue"===t)&&r>=i.tryLoc&&i.finallyLoc>=r&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=r,i?(this.method="next",this.next=i.finallyLoc,b):this.complete(a)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),b},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),S(e),b}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;S(e)}return o}}throw Error("illegal catch attempt")},delegateYield:function(r,e,n){return this.delegate={iterator:F(r),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=t),b}},r}function o(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function i(t){for(var r=1;arguments.length>r;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?o(Object(e),!0).forEach((function(r){b(t,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):o(Object(e)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}))}return t}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function u(t,r,e,n,o,i,a){try{var u=t[i](a),s=u.value}catch(t){return void e(t)}u.done?r(s):Promise.resolve(s).then(n,o)}function s(t){return function(){var r=this,e=arguments;return new Promise((function(n,o){var i=t.apply(r,e);function a(t){u(i,n,o,a,s,"next",t)}function s(t){u(i,n,o,a,s,"throw",t)}a(void 0)}))}}function c(t,r){for(var e=0;r.length>e;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,m(n.key),n)}}function f(t,r,e){return r&&c(t.prototype,r),e&&c(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function h(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function l(t,r,e){return r=g(r),function(t,r){if(r&&("object"===a(r)||"function"==typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,v()?Reflect.construct(r,e||[],g(t).constructor):r.apply(t,e))}function p(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&y(t,r)}function d(t){var r="function"==typeof Map?new Map:void 0;return d=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(r){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(t))return r.get(t);r.set(t,e)}function e(){return function(t,r,e){if(v())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,r);var o=new(t.bind.apply(t,n));return e&&y(o,e.prototype),o}(t,arguments,g(this).constructor)}return e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),y(e,t)},d(t)}function v(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(v=function(){return!!t})()}function y(t,r){return y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},y(t,r)}function g(t){return g=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},g(t)}function b(t,r,e){return(r=m(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function m(t){var r=function(t,r){if("object"!=a(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r||"default");if("object"!=a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==a(r)?r:r+""}Object.defineProperty(t,"__esModule",{value:!0}),t.RateLimitError=void 0,t.breach=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return S("/breach/".concat(encodeURIComponent(t)),r)},t.breachedAccount=F,t.breaches=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.domain,e=t.baseUrl,n=t.timeoutMs,o=t.userAgent,i=[];r&&i.push("domain=".concat(encodeURIComponent(r)));return S("".concat("/breaches?").concat(i.join("&")),{baseUrl:e,timeoutMs:n,userAgent:o})},t.dataClasses=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return S("/dataclasses",t)},t.pasteAccount=C,t.pwnedPassword=function(t){return nt.apply(this,arguments)},t.pwnedPasswordRange=rt,t.search=function(t){return ot.apply(this,arguments)},t.subscriptionStatus=function(){return it.apply(this,arguments)};var w="hibp",E="14.1.0";function A(){if("undefined"!=typeof process&&process.versions.node.startsWith("18.")){var t=require("undici"),r=t.fetch,e=t.FormData,n=t.Headers,o=t.Request,i=t.Response;global.File=t.File,global.Headers=n,global.Request=o,global.Response=i,global.fetch=r,global.FormData=e}}var x=new Map,U={headers:x,status:400,statusText:"Bad request — the account does not comply with an acceptable format."},R={headers:x,status:401,body:{statusCode:401,message:"Access denied due to missing hibp-api-key."}},O={headers:x,status:403,statusText:"Forbidden - access denied."},L={headers:x,status:404},T={headers:new Map([["retry-after","2"]]),status:429,body:{statusCode:429,message:"Rate limit is exceeded. Try again in 2 seconds."}};A();var j=t.RateLimitError=function(t){function r(t,e,n){var o;return h(this,r),b(o=l(this,r,[e,n]),"retryAfterSeconds",void 0),o.name=o.constructor.name,o.retryAfterSeconds="string"==typeof t?Number.parseInt(t,10):void 0,o}return p(r,t),f(r)}(d(Error));function P(t){return"Request blocked, contact haveibeenpwned.com if this continues (Ray ID: ".concat(t,")")}function S(t){return k.apply(this,arguments)}function k(){return k=s(n().mark((function t(r){var e,o,a,u,s,c,f,h,l,p,d,v,y,g=arguments;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return u=void 0===(a=(e=g.length>1&&void 0!==g[1]?g[1]:{}).baseUrl)?"https://haveibeenpwned.com/api/v3":a,s=e.timeoutMs,c=e.userAgent,f={},(o=e.apiKey)&&(f["HIBP-API-Key"]=o),c&&(f["User-Agent"]=c),c||"undefined"!=typeof navigator||(f["User-Agent"]="".concat(w," ").concat(E)),h=i({headers:f},s?{signal:AbortSignal.timeout(s)}:{}),l="".concat(u.replace(/\/$/g,"")).concat(r),t.next=10,fetch(l,h);case 10:if(!(p=t.sent).ok){t.next=13;break}return t.abrupt("return",p.json());case 13:t.t0=p.status,t.next=t.t0===U.status?16:t.t0===R.status?17:t.t0===O.status?21:t.t0===L.status?25:t.t0===T.status?26:31;break;case 16:throw Error(U.statusText);case 17:return t.next=19,p.json();case 19:throw Error(t.sent.message);case 21:if(!(d=p.headers.get("cf-ray"))){t.next=24;break}throw Error(P(d));case 24:throw Error(O.statusText);case 25:return t.abrupt("return",null);case 26:return t.next=28,p.json();case 28:throw v=t.sent,y=p.headers.get("retry-after"),new j(y,v.message);case 31:throw Error(p.statusText);case 32:case"end":return t.stop()}}),t)}))),k.apply(this,arguments)}function F(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=r.apiKey,n=r.domain,o=r.includeUnverified,i=void 0===o||o,a=r.timeoutMs,u=r.truncate,s=void 0===u||u,c=r.baseUrl,f=r.userAgent,h="/breachedaccount/".concat(encodeURIComponent(t),"?"),l=[];return n&&l.push("domain=".concat(encodeURIComponent(n))),i||l.push("includeUnverified=false"),s||l.push("truncateResponse=false"),S("".concat(h).concat(l.join("&")),{apiKey:e,baseUrl:c,timeoutMs:a,userAgent:f})}function C(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return S("/pasteaccount/".concat(encodeURIComponent(t)),r)}var I="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",B="ARRAYBUFFER not supported by this environment",M="UINT8ARRAY not supported by this environment";function H(t,r,e,n){var o,i,a,u=r||[0],s=(e=e||0)>>>3,c=-1===n?3:0;for(o=0;t.length>o;o+=1)(i=(a=o+s)>>>2)>=u.length&&u.push(0),u[i]|=t[o]<<8*(c+n*(a%4));return{value:u,binLen:8*t.length+e}}function _(t,r,e){switch(r){case"UTF8":case"UTF16BE":case"UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE")}switch(t){case"HEX":return function(t,r,n){return function(t,r,e,n){var o,i,a,u;if(0!=t.length%2)throw Error("String of HEX type must be in byte increments");var s=r||[0],c=(e=e||0)>>>3,f=-1===n?3:0;for(o=0;t.length>o;o+=2){if(i=parseInt(t.substr(o,2),16),isNaN(i))throw Error("String of HEX type contains invalid characters");for(a=(u=(o>>>1)+c)>>>2;a>=s.length;)s.push(0);s[a]|=i<<8*(f+n*(u%4))}return{value:s,binLen:4*t.length+e}}(t,r,n,e)};case"TEXT":return function(t,n,o){return function(t,r,e,n,o){var i,a,u,s,c,f,h,l,p=0,d=e||[0],v=(n=n||0)>>>3;if("UTF8"===r)for(h=-1===o?3:0,u=0;t.length>u;u+=1)for(a=[],128>(i=t.charCodeAt(u))?a.push(i):2048>i?(a.push(192|i>>>6),a.push(128|63&i)):55296>i||i>=57344?a.push(224|i>>>12,128|i>>>6&63,128|63&i):(i=65536+((1023&i)<<10|1023&t.charCodeAt(u+=1)),a.push(240|i>>>18,128|i>>>12&63,128|i>>>6&63,128|63&i)),s=0;a.length>s;s+=1){for(c=(f=p+v)>>>2;c>=d.length;)d.push(0);d[c]|=a[s]<<8*(h+o*(f%4)),p+=1}else for(h=-1===o?2:0,l="UTF16LE"===r&&1!==o||"UTF16LE"!==r&&1===o,u=0;t.length>u;u+=1){for(i=t.charCodeAt(u),!0===l&&(i=(s=255&i)<<8|i>>>8),c=(f=p+v)>>>2;c>=d.length;)d.push(0);d[c]|=i<<8*(h+o*(f%4)),p+=2}return{value:d,binLen:8*p+n}}(t,r,n,o,e)};case"B64":return function(t,r,n){return function(t,r,e,n){var o,i,a,u,s,c,f=0,h=r||[0],l=(e=e||0)>>>3,p=-1===n?3:0,d=t.indexOf("=");if(-1===t.search(/^[a-zA-Z0-9=+/]+$/))throw Error("Invalid character in base-64 string");if(t=t.replace(/=/g,""),-1!==d&&t.length>d)throw Error("Invalid '=' found in base-64 string");for(o=0;t.length>o;o+=4){for(u=t.substr(o,4),a=0,i=0;u.length>i;i+=1)a|=I.indexOf(u.charAt(i))<<18-6*i;for(i=0;u.length-1>i;i+=1){for(s=(c=f+l)>>>2;s>=h.length;)h.push(0);h[s]|=(a>>>16-8*i&255)<<8*(p+n*(c%4)),f+=1}}return{value:h,binLen:8*f+e}}(t,r,n,e)};case"BYTES":return function(t,r,n){return function(t,r,e,n){var o,i,a,u,s=r||[0],c=(e=e||0)>>>3,f=-1===n?3:0;for(i=0;t.length>i;i+=1)o=t.charCodeAt(i),(a=(u=i+c)>>>2)>=s.length&&s.push(0),s[a]|=o<<8*(f+n*(u%4));return{value:s,binLen:8*t.length+e}}(t,r,n,e)};case"ARRAYBUFFER":try{new ArrayBuffer(0)}catch(t){throw Error(B)}return function(t,r,n){return function(t,r,e,n){return H(new Uint8Array(t),r,e,n)}(t,r,n,e)};case"UINT8ARRAY":try{new Uint8Array(0)}catch(t){throw Error(M)}return function(t,r,n){return H(t,r,n,e)};default:throw Error("format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}function N(t,r,e,n){switch(t){case"HEX":return function(t){return function(t,r,e,n){var o,i,a="0123456789abcdef",u="",s=r/8,c=-1===e?3:0;for(o=0;s>o;o+=1)u+=a.charAt((i=t[o>>>2]>>>8*(c+e*(o%4)))>>>4&15)+a.charAt(15&i);return n.outputUpper?u.toUpperCase():u}(t,r,e,n)};case"B64":return function(t){return function(t,r,e,n){var o,i,a,u="",s=r/8,c=-1===e?3:0;for(o=0;s>o;o+=3)for(a=(t[o>>>2]>>>8*(c+e*(o%4))&255)<<16|((s>o+1?t[o+1>>>2]:0)>>>8*(c+e*((o+1)%4))&255)<<8|(s>o+2?t[o+2>>>2]:0)>>>8*(c+e*((o+2)%4))&255,i=0;4>i;i+=1)u+=8*o+6*i>r?n.b64Pad:I.charAt(a>>>6*(3-i)&63);return u}(t,r,e,n)};case"BYTES":return function(t){return function(t,r,e){var n,o="",i=r/8,a=-1===e?3:0;for(n=0;i>n;n+=1)o+=String.fromCharCode(t[n>>>2]>>>8*(a+e*(n%4))&255);return o}(t,r,e)};case"ARRAYBUFFER":try{new ArrayBuffer(0)}catch(t){throw Error(B)}return function(t){return function(t,r,e){var n,o=r/8,i=new ArrayBuffer(o),a=new Uint8Array(i),u=-1===e?3:0;for(n=0;o>n;n+=1)a[n]=t[n>>>2]>>>8*(u+e*(n%4))&255;return i}(t,r,e)};case"UINT8ARRAY":try{new Uint8Array(0)}catch(t){throw Error(M)}return function(t){return function(t,r,e){var n,o=r/8,i=-1===e?3:0,a=new Uint8Array(o);for(n=0;o>n;n+=1)a[n]=t[n>>>2]>>>8*(i+e*(n%4))&255;return a}(t,r,e)};default:throw Error("format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}function Y(t){var r={outputUpper:!1,b64Pad:"=",outputLen:-1},e=t||{},n="Output length must be a multiple of 8";if(r.outputUpper=e.outputUpper||!1,e.b64Pad&&(r.b64Pad=e.b64Pad),e.outputLen){if(e.outputLen%8!=0)throw Error(n);r.outputLen=e.outputLen}else if(e.shakeLen){if(e.shakeLen%8!=0)throw Error(n);r.outputLen=e.shakeLen}if("boolean"!=typeof r.outputUpper)throw Error("Invalid outputUpper formatting option");if("string"!=typeof r.b64Pad)throw Error("Invalid b64Pad formatting option");return r}var K=function(){return f((function t(r,e,n){h(this,t);var o=n||{};if(this.t=e,this.i=o.encoding||"UTF8",this.numRounds=o.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw Error("numRounds must a integer >= 1");this.o=r,this.h=[],this.u=0,this.l=!1,this.A=0,this.p=!1,this.U=[],this.R=[]}),[{key:"update",value:function(t){var r,e=0,n=this.T>>>5,o=this.F(t,this.h,this.u),i=o.binLen,a=o.value,u=i>>>5;for(r=0;u>r;r+=n)i>=e+this.T&&(this.m=this.g(a.slice(r,r+n),this.m),e+=this.T);return this.A+=e,this.h=a.slice(e>>>5),this.u=i%this.T,this.l=!0,this}},{key:"getHash",value:function(t,r){var e,n,o=this.B,i=Y(r);if(this.v){if(-1===i.outputLen)throw Error("Output length must be specified in options");o=i.outputLen}var a=N(t,o,this.H,i);if(this.p&&this.C)return a(this.C(i));for(n=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),o),e=1;this.numRounds>e;e+=1)this.v&&o%32!=0&&(n[n.length-1]&=16777215>>>24-o%32),n=this.Y(n,o,0,this.L(this.o),o);return a(n)}},{key:"setHMACKey",value:function(t,r,e){if(!this.M)throw Error("Variant does not support HMAC");if(this.l)throw Error("Cannot set MAC key after calling update");var n=_(r,(e||{}).encoding||"UTF8",this.H);this.N(n(t))}},{key:"N",value:function(t){var r,e=this.T>>>3,n=e/4-1;if(1!==this.numRounds)throw Error("Cannot set numRounds with MAC");if(this.p)throw Error("MAC key already set");for(t.binLen/8>e&&(t.value=this.Y(t.value,t.binLen,0,this.L(this.o),this.B));n>=t.value.length;)t.value.push(0);for(r=0;n>=r;r+=1)this.U[r]=909522486^t.value[r],this.R[r]=1549556828^t.value[r];this.m=this.g(this.U,this.m),this.A=this.T,this.p=!0}},{key:"getHMAC",value:function(t,r){var e=Y(r);return N(t,this.B,this.H,e)(this.S())}},{key:"S",value:function(){var t;if(!this.p)throw Error("Cannot call getHMAC without first setting MAC key");var r=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),this.B);return t=this.g(this.R,this.L(this.o)),t=this.Y(r,this.B,this.T,t,this.B)}}])}();function X(t,r){return t<<r|t>>>32-r}function D(t,r,e){return t^r^e}function G(t,r,e){return t&r^t&e^r&e}function q(t,r){var e=(65535&t)+(65535&r);return(65535&(t>>>16)+(r>>>16)+(e>>>16))<<16|65535&e}function $(t,r,e,n,o){var i=(65535&t)+(65535&r)+(65535&e)+(65535&n)+(65535&o);return(65535&(t>>>16)+(r>>>16)+(e>>>16)+(n>>>16)+(o>>>16)+(i>>>16))<<16|65535&i}function z(t){return[1732584193,4023233417,2562383102,271733878,3285377520]}function V(t,r){var e,n,o,i,a,u,s,c,f=[];for(e=r[0],n=r[1],o=r[2],i=r[3],a=r[4],s=0;80>s;s+=1)f[s]=16>s?t[s]:X(f[s-3]^f[s-8]^f[s-14]^f[s-16],1),u=20>s?$(X(e,5),(c=n)&o^~c&i,a,1518500249,f[s]):40>s?$(X(e,5),D(n,o,i),a,1859775393,f[s]):60>s?$(X(e,5),G(n,o,i),a,2400959708,f[s]):$(X(e,5),D(n,o,i),a,3395469782,f[s]),a=i,i=o,o=X(n,30),n=e,e=u;return r[0]=q(e,r[0]),r[1]=q(n,r[1]),r[2]=q(o,r[2]),r[3]=q(i,r[3]),r[4]=q(a,r[4]),r}function W(t,r,e,n){for(var o,i=15+(r+65>>>9<<4),a=r+e;i>=t.length;)t.push(0);for(t[r>>>5]|=128<<24-r%32,t[i]=4294967295&a,t[i-1]=a/4294967296|0,o=0;t.length>o;o+=16)n=V(t.slice(o,o+16),n);return n}var Z=function(t){function r(t,e,n){var o;if(h(this,r),"SHA-1"!==t)throw Error("Chosen SHA variant is not supported");var i=n||{};return(o=l(this,r,[t,e,n])).M=!0,o.C=o.S,o.H=-1,o.F=_(o.t,o.i,o.H),o.g=V,o.I=function(t){return t.slice()},o.L=z,o.Y=W,o.m=[1732584193,4023233417,2562383102,271733878,3285377520],o.T=512,o.B=160,o.v=!1,i.hmacKey&&o.N(function(t,r,e,n){var o="hmacKey must include a value and format";if(!r)throw Error(o);if(void 0===r.value||!r.format)throw Error(o);return _(r.format,r.encoding||"UTF8",e)(r.value)}(0,i.hmacKey,o.H)),o}return p(r,t),f(r)}(K),J={status:400,body:"The hash prefix was not in a valid format"};function Q(t){return tt.apply(this,arguments)}function tt(){return tt=s(n().mark((function t(r){var e,o,a,u,s,c,f,h,l,p,d,v,y=arguments;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=void 0===(o=(e=y.length>1&&void 0!==y[1]?y[1]:{}).baseUrl)?"https://api.pwnedpasswords.com":o,u=e.timeoutMs,f=void 0!==(c=e.addPadding)&&c,l=void 0===(h=e.mode)?"sha1":h,p=i({headers:i(i({},(s=e.userAgent)?{"User-Agent":s}:{}),f?{"Add-Padding":"true"}:{})},u?{signal:AbortSignal.timeout(u)}:{}),d="".concat(a.replace(/\/$/g,"")).concat(r,"?mode=").concat(l),t.next=6,fetch(d,p);case 6:if(!(v=t.sent).ok){t.next=9;break}return t.abrupt("return",v.text());case 9:if(v.status!==J.status){t.next=14;break}return t.next=12,v.text();case 12:throw Error(t.sent);case 14:throw Error(v.statusText);case 15:case"end":return t.stop()}}),t)}))),tt.apply(this,arguments)}function rt(t){return et.apply(this,arguments)}function et(){return et=s(n().mark((function t(e){var o,i,a,u,s,c,f,h,l,p=arguments;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=(o=p.length>1&&void 0!==p[1]?p[1]:{}).baseUrl,a=o.timeoutMs,u=o.userAgent,c=void 0!==(s=o.addPadding)&&s,h=void 0===(f=o.mode)?"sha1":f,t.next=4,Q("/range/".concat(encodeURIComponent(e)),{baseUrl:i,timeoutMs:a,userAgent:u,addPadding:c,mode:h});case 4:return l=t.sent.split("\n").filter(Boolean),t.abrupt("return",l.reduce((function(t,e){var n=r(e.split(":"),2);return t[n[0]]=Number.parseInt(n[1],10),t}),{}));case 7:case"end":return t.stop()}}),t)}))),et.apply(this,arguments)}function nt(){return nt=s(n().mark((function t(r){var e,o,i,a,u,s=arguments;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=s.length>1&&void 0!==s[1]?s[1]:{},(o=new Z("SHA-1","TEXT")).update(r),i=o.getHash("HEX",{outputUpper:!0}),a=i.slice(0,5),u=i.slice(5),t.next=8,rt(a,e);case 8:return t.abrupt("return",t.sent[u]||0);case 10:case"end":return t.stop()}}),t)}))),nt.apply(this,arguments)}function ot(){return ot=s(n().mark((function t(e){var o,i,a,u,s,c,f,h,l,p=arguments;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=(o=p.length>1&&void 0!==p[1]?p[1]:{}).apiKey,a=o.domain,s=void 0===(u=o.truncate)||u,c=o.baseUrl,f=o.timeoutMs,h=o.userAgent,t.next=4,Promise.all([F(e,{apiKey:i,domain:a,truncate:s,baseUrl:c,timeoutMs:f,userAgent:h}),/^.+@.+$/.test(e)?C(e,{apiKey:i,baseUrl:c,timeoutMs:f,userAgent:h}):null]);case 4:return l=r(t.sent,2),t.abrupt("return",{breaches:l[0],pastes:l[1]});case 9:case"end":return t.stop()}}),t)}))),ot.apply(this,arguments)}function it(){return it=s(n().mark((function t(){var r=arguments;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return"/subscription/status",t.abrupt("return",S("/subscription/status",r.length>0&&void 0!==r[0]?r[0]:{}));case 3:case"end":return t.stop()}}),t)}))),it.apply(this,arguments)}A()}));
|
|
1
|
+
!function(t,r){if("function"==typeof define&&define.amd)define("hibp",["exports"],r);else if("undefined"!=typeof exports)r(exports);else{var e={exports:{}};r(e.exports),t.hibp=e.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(t){function r(t,r){return function(t){if(Array.isArray(t))return t}(t)||function(t,r){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,o,i,a,u=[],s=!0,c=!1;try{if(i=(e=e.call(t)).next,0===r){if(Object(e)!==e)return;s=!1}else for(;!(s=(n=i.call(e)).done)&&(u.push(n.value),u.length!==r);s=!0);}catch(t){c=!0,o=t}finally{try{if(!s&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(t,r)||function(t,r){if(!t)return;if("string"==typeof t)return e(t,r);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return e(t,r)}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);r>e;e++)n[e]=t[e];return n}function n(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */n=function(){return r};var t,r={},e=Object.prototype,o=e.hasOwnProperty,i=Object.defineProperty||function(t,r,e){t[r]=e.value},u="function"==typeof Symbol?Symbol:{},s=u.iterator||"@@iterator",c=u.asyncIterator||"@@asyncIterator",f=u.toStringTag||"@@toStringTag";function h(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{h({},"")}catch(t){h=function(t,r,e){return t[r]=e}}function l(t,r,e,n){var o=Object.create((r&&r.prototype instanceof m?r:m).prototype),a=new k(n||[]);return i(o,"_invoke",{value:T(t,e,a)}),o}function p(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=l;var d="suspendedStart",v="suspendedYield",y="executing",g="completed",b={};function m(){}function w(){}function E(){}var A={};h(A,s,(function(){return this}));var x=Object.getPrototypeOf,U=x&&x(x(F([])));U&&U!==e&&o.call(U,s)&&(A=U);var R=E.prototype=m.prototype=Object.create(A);function O(t){["next","throw","return"].forEach((function(r){h(t,r,(function(t){return this._invoke(r,t)}))}))}function L(t,r){function e(n,i,u,s){var c=p(t[n],t,i);if("throw"!==c.type){var f=c.arg,h=f.value;return h&&"object"==a(h)&&o.call(h,"__await")?r.resolve(h.__await).then((function(t){e("next",t,u,s)}),(function(t){e("throw",t,u,s)})):r.resolve(h).then((function(t){f.value=t,u(f)}),(function(t){return e("throw",t,u,s)}))}s(c.arg)}var n;i(this,"_invoke",{value:function(t,o){function i(){return new r((function(r,n){e(t,o,r,n)}))}return n=n?n.then(i,i):i()}})}function T(r,e,n){var o=d;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===g){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var s=j(u,n);if(s){if(s===b)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===d)throw o=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var c=p(r,e,n);if("normal"===c.type){if(o=n.done?g:v,c.arg===b)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(o=g,n.method="throw",n.arg=c.arg)}}}function j(r,e){var n=e.method,o=r.iterator[n];if(o===t)return e.delegate=null,"throw"===n&&r.iterator.return&&(e.method="return",e.arg=t,j(r,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),b;var i=p(o,r.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,b;var a=i.arg;return a?a.done?(e[r.resultName]=a.value,e.next=r.nextLoc,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,b):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function P(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function S(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function F(r){if(r||""===r){var e=r[s];if(e)return e.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var n=-1,i=function e(){for(;++n<r.length;)if(o.call(r,n))return e.value=r[n],e.done=!1,e;return e.value=t,e.done=!0,e};return i.next=i}}throw new TypeError(a(r)+" is not iterable")}return w.prototype=E,i(R,"constructor",{value:E,configurable:!0}),i(E,"constructor",{value:w,configurable:!0}),w.displayName=h(E,f,"GeneratorFunction"),r.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===w||"GeneratorFunction"===(r.displayName||r.name))},r.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,E):(t.__proto__=E,h(t,f,"GeneratorFunction")),t.prototype=Object.create(R),t},r.awrap=function(t){return{__await:t}},O(L.prototype),h(L.prototype,c,(function(){return this})),r.AsyncIterator=L,r.async=function(t,e,n,o,i){void 0===i&&(i=Promise);var a=new L(l(t,e,n,o),i);return r.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},O(R),h(R,f,"Generator"),h(R,s,(function(){return this})),h(R,"toString",(function(){return"[object Generator]"})),r.keys=function(t){var r=Object(t),e=[];for(var n in r)e.push(n);return e.reverse(),function t(){for(;e.length;){var n=e.pop();if(n in r)return t.value=n,t.done=!1,t}return t.done=!0,t}},r.values=F,k.prototype={constructor:k,reset:function(r){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(S),!r)for(var e in this)"t"===e.charAt(0)&&o.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function n(n,o){return u.type="throw",u.arg=r,e.next=n,o&&(e.method="next",e.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return n("end");if(this.prev>=a.tryLoc){var s=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(s&&c){if(a.catchLoc>this.prev)return n(a.catchLoc,!0);if(a.finallyLoc>this.prev)return n(a.finallyLoc)}else if(s){if(a.catchLoc>this.prev)return n(a.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(a.finallyLoc>this.prev)return n(a.finallyLoc)}}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(this.prev>=n.tryLoc&&o.call(n,"finallyLoc")&&n.finallyLoc>this.prev){var i=n;break}}i&&("break"===t||"continue"===t)&&r>=i.tryLoc&&i.finallyLoc>=r&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=r,i?(this.method="next",this.next=i.finallyLoc,b):this.complete(a)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),b},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),S(e),b}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;S(e)}return o}}throw Error("illegal catch attempt")},delegateYield:function(r,e,n){return this.delegate={iterator:F(r),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=t),b}},r}function o(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function i(t){for(var r=1;arguments.length>r;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?o(Object(e),!0).forEach((function(r){b(t,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):o(Object(e)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}))}return t}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function u(t,r,e,n,o,i,a){try{var u=t[i](a),s=u.value}catch(t){return void e(t)}u.done?r(s):Promise.resolve(s).then(n,o)}function s(t){return function(){var r=this,e=arguments;return new Promise((function(n,o){var i=t.apply(r,e);function a(t){u(i,n,o,a,s,"next",t)}function s(t){u(i,n,o,a,s,"throw",t)}a(void 0)}))}}function c(t,r){for(var e=0;r.length>e;e++){var n=r[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,m(n.key),n)}}function f(t,r,e){return r&&c(t.prototype,r),e&&c(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function h(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function l(t,r,e){return r=g(r),function(t,r){if(r&&("object"===a(r)||"function"==typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,v()?Reflect.construct(r,e||[],g(t).constructor):r.apply(t,e))}function p(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&y(t,r)}function d(t){var r="function"==typeof Map?new Map:void 0;return d=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(r){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(t))return r.get(t);r.set(t,e)}function e(){return function(t,r,e){if(v())return Reflect.construct.apply(null,arguments);var n=[null];n.push.apply(n,r);var o=new(t.bind.apply(t,n));return e&&y(o,e.prototype),o}(t,arguments,g(this).constructor)}return e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),y(e,t)},d(t)}function v(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(v=function(){return!!t})()}function y(t,r){return y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,r){return t.__proto__=r,t},y(t,r)}function g(t){return g=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},g(t)}function b(t,r,e){return(r=m(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function m(t){var r=function(t,r){if("object"!=a(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r||"default");if("object"!=a(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==a(r)?r:r+""}Object.defineProperty(t,"__esModule",{value:!0}),t.RateLimitError=void 0,t.breach=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return S("/breach/".concat(encodeURIComponent(t)),r)},t.breachedAccount=F,t.breaches=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.domain,e=t.baseUrl,n=t.timeoutMs,o=t.userAgent,i=[];r&&i.push("domain=".concat(encodeURIComponent(r)));return S("".concat("/breaches?").concat(i.join("&")),{baseUrl:e,timeoutMs:n,userAgent:o})},t.dataClasses=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return S("/dataclasses",t)},t.pasteAccount=C,t.pwnedPassword=function(t){return nt.apply(this,arguments)},t.pwnedPasswordRange=rt,t.search=function(t){return ot.apply(this,arguments)},t.subscriptionStatus=function(){return it.apply(this,arguments)};var w="hibp",E="14.1.1";function A(){var t;if("undefined"!=typeof process&&null!==(t=process.versions)&&void 0!==t&&null!==(t=t.node)&&void 0!==t&&t.startsWith("18.")){var r=require("undici"),e=r.fetch,n=r.FormData,o=r.Headers,i=r.Request,a=r.Response;global.File=r.File,global.Headers=o,global.Request=i,global.Response=a,global.fetch=e,global.FormData=n}}var x=new Map,U={headers:x,status:400,statusText:"Bad request — the account does not comply with an acceptable format."},R={headers:x,status:401,body:{statusCode:401,message:"Access denied due to missing hibp-api-key."}},O={headers:x,status:403,statusText:"Forbidden - access denied."},L={headers:x,status:404},T={headers:new Map([["retry-after","2"]]),status:429,body:{statusCode:429,message:"Rate limit is exceeded. Try again in 2 seconds."}};A();var j=t.RateLimitError=function(t){function r(t,e,n){var o;return h(this,r),b(o=l(this,r,[e,n]),"retryAfterSeconds",void 0),o.name=o.constructor.name,o.retryAfterSeconds="string"==typeof t?Number.parseInt(t,10):void 0,o}return p(r,t),f(r)}(d(Error));function P(t){return"Request blocked, contact haveibeenpwned.com if this continues (Ray ID: ".concat(t,")")}function S(t){return k.apply(this,arguments)}function k(){return k=s(n().mark((function t(r){var e,o,a,u,s,c,f,h,l,p,d,v,y,g=arguments;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return u=void 0===(a=(e=g.length>1&&void 0!==g[1]?g[1]:{}).baseUrl)?"https://haveibeenpwned.com/api/v3":a,s=e.timeoutMs,c=e.userAgent,f={},(o=e.apiKey)&&(f["HIBP-API-Key"]=o),c&&(f["User-Agent"]=c),c||"undefined"!=typeof navigator||(f["User-Agent"]="".concat(w," ").concat(E)),h=i({headers:f},s?{signal:AbortSignal.timeout(s)}:{}),l="".concat(u.replace(/\/$/g,"")).concat(r),t.next=10,fetch(l,h);case 10:if(!(p=t.sent).ok){t.next=13;break}return t.abrupt("return",p.json());case 13:t.t0=p.status,t.next=t.t0===U.status?16:t.t0===R.status?17:t.t0===O.status?21:t.t0===L.status?25:t.t0===T.status?26:31;break;case 16:throw Error(U.statusText);case 17:return t.next=19,p.json();case 19:throw Error(t.sent.message);case 21:if(!(d=p.headers.get("cf-ray"))){t.next=24;break}throw Error(P(d));case 24:throw Error(O.statusText);case 25:return t.abrupt("return",null);case 26:return t.next=28,p.json();case 28:throw v=t.sent,y=p.headers.get("retry-after"),new j(y,v.message);case 31:throw Error(p.statusText);case 32:case"end":return t.stop()}}),t)}))),k.apply(this,arguments)}function F(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=r.apiKey,n=r.domain,o=r.includeUnverified,i=void 0===o||o,a=r.timeoutMs,u=r.truncate,s=void 0===u||u,c=r.baseUrl,f=r.userAgent,h="/breachedaccount/".concat(encodeURIComponent(t),"?"),l=[];return n&&l.push("domain=".concat(encodeURIComponent(n))),i||l.push("includeUnverified=false"),s||l.push("truncateResponse=false"),S("".concat(h).concat(l.join("&")),{apiKey:e,baseUrl:c,timeoutMs:a,userAgent:f})}function C(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return S("/pasteaccount/".concat(encodeURIComponent(t)),r)}var I="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",B="ARRAYBUFFER not supported by this environment",M="UINT8ARRAY not supported by this environment";function H(t,r,e,n){var o,i,a,u=r||[0],s=(e=e||0)>>>3,c=-1===n?3:0;for(o=0;t.length>o;o+=1)(i=(a=o+s)>>>2)>=u.length&&u.push(0),u[i]|=t[o]<<8*(c+n*(a%4));return{value:u,binLen:8*t.length+e}}function _(t,r,e){switch(r){case"UTF8":case"UTF16BE":case"UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE")}switch(t){case"HEX":return function(t,r,n){return function(t,r,e,n){var o,i,a,u;if(0!=t.length%2)throw Error("String of HEX type must be in byte increments");var s=r||[0],c=(e=e||0)>>>3,f=-1===n?3:0;for(o=0;t.length>o;o+=2){if(i=parseInt(t.substr(o,2),16),isNaN(i))throw Error("String of HEX type contains invalid characters");for(a=(u=(o>>>1)+c)>>>2;a>=s.length;)s.push(0);s[a]|=i<<8*(f+n*(u%4))}return{value:s,binLen:4*t.length+e}}(t,r,n,e)};case"TEXT":return function(t,n,o){return function(t,r,e,n,o){var i,a,u,s,c,f,h,l,p=0,d=e||[0],v=(n=n||0)>>>3;if("UTF8"===r)for(h=-1===o?3:0,u=0;t.length>u;u+=1)for(a=[],128>(i=t.charCodeAt(u))?a.push(i):2048>i?(a.push(192|i>>>6),a.push(128|63&i)):55296>i||i>=57344?a.push(224|i>>>12,128|i>>>6&63,128|63&i):(i=65536+((1023&i)<<10|1023&t.charCodeAt(u+=1)),a.push(240|i>>>18,128|i>>>12&63,128|i>>>6&63,128|63&i)),s=0;a.length>s;s+=1){for(c=(f=p+v)>>>2;c>=d.length;)d.push(0);d[c]|=a[s]<<8*(h+o*(f%4)),p+=1}else for(h=-1===o?2:0,l="UTF16LE"===r&&1!==o||"UTF16LE"!==r&&1===o,u=0;t.length>u;u+=1){for(i=t.charCodeAt(u),!0===l&&(i=(s=255&i)<<8|i>>>8),c=(f=p+v)>>>2;c>=d.length;)d.push(0);d[c]|=i<<8*(h+o*(f%4)),p+=2}return{value:d,binLen:8*p+n}}(t,r,n,o,e)};case"B64":return function(t,r,n){return function(t,r,e,n){var o,i,a,u,s,c,f=0,h=r||[0],l=(e=e||0)>>>3,p=-1===n?3:0,d=t.indexOf("=");if(-1===t.search(/^[a-zA-Z0-9=+/]+$/))throw Error("Invalid character in base-64 string");if(t=t.replace(/=/g,""),-1!==d&&t.length>d)throw Error("Invalid '=' found in base-64 string");for(o=0;t.length>o;o+=4){for(u=t.substr(o,4),a=0,i=0;u.length>i;i+=1)a|=I.indexOf(u.charAt(i))<<18-6*i;for(i=0;u.length-1>i;i+=1){for(s=(c=f+l)>>>2;s>=h.length;)h.push(0);h[s]|=(a>>>16-8*i&255)<<8*(p+n*(c%4)),f+=1}}return{value:h,binLen:8*f+e}}(t,r,n,e)};case"BYTES":return function(t,r,n){return function(t,r,e,n){var o,i,a,u,s=r||[0],c=(e=e||0)>>>3,f=-1===n?3:0;for(i=0;t.length>i;i+=1)o=t.charCodeAt(i),(a=(u=i+c)>>>2)>=s.length&&s.push(0),s[a]|=o<<8*(f+n*(u%4));return{value:s,binLen:8*t.length+e}}(t,r,n,e)};case"ARRAYBUFFER":try{new ArrayBuffer(0)}catch(t){throw Error(B)}return function(t,r,n){return function(t,r,e,n){return H(new Uint8Array(t),r,e,n)}(t,r,n,e)};case"UINT8ARRAY":try{new Uint8Array(0)}catch(t){throw Error(M)}return function(t,r,n){return H(t,r,n,e)};default:throw Error("format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}function N(t,r,e,n){switch(t){case"HEX":return function(t){return function(t,r,e,n){var o,i,a="0123456789abcdef",u="",s=r/8,c=-1===e?3:0;for(o=0;s>o;o+=1)u+=a.charAt((i=t[o>>>2]>>>8*(c+e*(o%4)))>>>4&15)+a.charAt(15&i);return n.outputUpper?u.toUpperCase():u}(t,r,e,n)};case"B64":return function(t){return function(t,r,e,n){var o,i,a,u="",s=r/8,c=-1===e?3:0;for(o=0;s>o;o+=3)for(a=(t[o>>>2]>>>8*(c+e*(o%4))&255)<<16|((s>o+1?t[o+1>>>2]:0)>>>8*(c+e*((o+1)%4))&255)<<8|(s>o+2?t[o+2>>>2]:0)>>>8*(c+e*((o+2)%4))&255,i=0;4>i;i+=1)u+=8*o+6*i>r?n.b64Pad:I.charAt(a>>>6*(3-i)&63);return u}(t,r,e,n)};case"BYTES":return function(t){return function(t,r,e){var n,o="",i=r/8,a=-1===e?3:0;for(n=0;i>n;n+=1)o+=String.fromCharCode(t[n>>>2]>>>8*(a+e*(n%4))&255);return o}(t,r,e)};case"ARRAYBUFFER":try{new ArrayBuffer(0)}catch(t){throw Error(B)}return function(t){return function(t,r,e){var n,o=r/8,i=new ArrayBuffer(o),a=new Uint8Array(i),u=-1===e?3:0;for(n=0;o>n;n+=1)a[n]=t[n>>>2]>>>8*(u+e*(n%4))&255;return i}(t,r,e)};case"UINT8ARRAY":try{new Uint8Array(0)}catch(t){throw Error(M)}return function(t){return function(t,r,e){var n,o=r/8,i=-1===e?3:0,a=new Uint8Array(o);for(n=0;o>n;n+=1)a[n]=t[n>>>2]>>>8*(i+e*(n%4))&255;return a}(t,r,e)};default:throw Error("format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY")}}function Y(t){var r={outputUpper:!1,b64Pad:"=",outputLen:-1},e=t||{},n="Output length must be a multiple of 8";if(r.outputUpper=e.outputUpper||!1,e.b64Pad&&(r.b64Pad=e.b64Pad),e.outputLen){if(e.outputLen%8!=0)throw Error(n);r.outputLen=e.outputLen}else if(e.shakeLen){if(e.shakeLen%8!=0)throw Error(n);r.outputLen=e.shakeLen}if("boolean"!=typeof r.outputUpper)throw Error("Invalid outputUpper formatting option");if("string"!=typeof r.b64Pad)throw Error("Invalid b64Pad formatting option");return r}var K=function(){return f((function t(r,e,n){h(this,t);var o=n||{};if(this.t=e,this.i=o.encoding||"UTF8",this.numRounds=o.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw Error("numRounds must a integer >= 1");this.o=r,this.h=[],this.u=0,this.l=!1,this.A=0,this.p=!1,this.U=[],this.R=[]}),[{key:"update",value:function(t){var r,e=0,n=this.T>>>5,o=this.F(t,this.h,this.u),i=o.binLen,a=o.value,u=i>>>5;for(r=0;u>r;r+=n)i>=e+this.T&&(this.m=this.g(a.slice(r,r+n),this.m),e+=this.T);return this.A+=e,this.h=a.slice(e>>>5),this.u=i%this.T,this.l=!0,this}},{key:"getHash",value:function(t,r){var e,n,o=this.B,i=Y(r);if(this.v){if(-1===i.outputLen)throw Error("Output length must be specified in options");o=i.outputLen}var a=N(t,o,this.H,i);if(this.p&&this.C)return a(this.C(i));for(n=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),o),e=1;this.numRounds>e;e+=1)this.v&&o%32!=0&&(n[n.length-1]&=16777215>>>24-o%32),n=this.Y(n,o,0,this.L(this.o),o);return a(n)}},{key:"setHMACKey",value:function(t,r,e){if(!this.M)throw Error("Variant does not support HMAC");if(this.l)throw Error("Cannot set MAC key after calling update");var n=_(r,(e||{}).encoding||"UTF8",this.H);this.N(n(t))}},{key:"N",value:function(t){var r,e=this.T>>>3,n=e/4-1;if(1!==this.numRounds)throw Error("Cannot set numRounds with MAC");if(this.p)throw Error("MAC key already set");for(t.binLen/8>e&&(t.value=this.Y(t.value,t.binLen,0,this.L(this.o),this.B));n>=t.value.length;)t.value.push(0);for(r=0;n>=r;r+=1)this.U[r]=909522486^t.value[r],this.R[r]=1549556828^t.value[r];this.m=this.g(this.U,this.m),this.A=this.T,this.p=!0}},{key:"getHMAC",value:function(t,r){var e=Y(r);return N(t,this.B,this.H,e)(this.S())}},{key:"S",value:function(){var t;if(!this.p)throw Error("Cannot call getHMAC without first setting MAC key");var r=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),this.B);return t=this.g(this.R,this.L(this.o)),t=this.Y(r,this.B,this.T,t,this.B)}}])}();function X(t,r){return t<<r|t>>>32-r}function D(t,r,e){return t^r^e}function G(t,r,e){return t&r^t&e^r&e}function q(t,r){var e=(65535&t)+(65535&r);return(65535&(t>>>16)+(r>>>16)+(e>>>16))<<16|65535&e}function $(t,r,e,n,o){var i=(65535&t)+(65535&r)+(65535&e)+(65535&n)+(65535&o);return(65535&(t>>>16)+(r>>>16)+(e>>>16)+(n>>>16)+(o>>>16)+(i>>>16))<<16|65535&i}function z(t){return[1732584193,4023233417,2562383102,271733878,3285377520]}function V(t,r){var e,n,o,i,a,u,s,c,f=[];for(e=r[0],n=r[1],o=r[2],i=r[3],a=r[4],s=0;80>s;s+=1)f[s]=16>s?t[s]:X(f[s-3]^f[s-8]^f[s-14]^f[s-16],1),u=20>s?$(X(e,5),(c=n)&o^~c&i,a,1518500249,f[s]):40>s?$(X(e,5),D(n,o,i),a,1859775393,f[s]):60>s?$(X(e,5),G(n,o,i),a,2400959708,f[s]):$(X(e,5),D(n,o,i),a,3395469782,f[s]),a=i,i=o,o=X(n,30),n=e,e=u;return r[0]=q(e,r[0]),r[1]=q(n,r[1]),r[2]=q(o,r[2]),r[3]=q(i,r[3]),r[4]=q(a,r[4]),r}function W(t,r,e,n){for(var o,i=15+(r+65>>>9<<4),a=r+e;i>=t.length;)t.push(0);for(t[r>>>5]|=128<<24-r%32,t[i]=4294967295&a,t[i-1]=a/4294967296|0,o=0;t.length>o;o+=16)n=V(t.slice(o,o+16),n);return n}var Z=function(t){function r(t,e,n){var o;if(h(this,r),"SHA-1"!==t)throw Error("Chosen SHA variant is not supported");var i=n||{};return(o=l(this,r,[t,e,n])).M=!0,o.C=o.S,o.H=-1,o.F=_(o.t,o.i,o.H),o.g=V,o.I=function(t){return t.slice()},o.L=z,o.Y=W,o.m=[1732584193,4023233417,2562383102,271733878,3285377520],o.T=512,o.B=160,o.v=!1,i.hmacKey&&o.N(function(t,r,e,n){var o="hmacKey must include a value and format";if(!r)throw Error(o);if(void 0===r.value||!r.format)throw Error(o);return _(r.format,r.encoding||"UTF8",e)(r.value)}(0,i.hmacKey,o.H)),o}return p(r,t),f(r)}(K),J={status:400,body:"The hash prefix was not in a valid format"};function Q(t){return tt.apply(this,arguments)}function tt(){return tt=s(n().mark((function t(r){var e,o,a,u,s,c,f,h,l,p,d,v,y=arguments;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=void 0===(o=(e=y.length>1&&void 0!==y[1]?y[1]:{}).baseUrl)?"https://api.pwnedpasswords.com":o,u=e.timeoutMs,f=void 0!==(c=e.addPadding)&&c,l=void 0===(h=e.mode)?"sha1":h,p=i({headers:i(i({},(s=e.userAgent)?{"User-Agent":s}:{}),f?{"Add-Padding":"true"}:{})},u?{signal:AbortSignal.timeout(u)}:{}),d="".concat(a.replace(/\/$/g,"")).concat(r,"?mode=").concat(l),t.next=6,fetch(d,p);case 6:if(!(v=t.sent).ok){t.next=9;break}return t.abrupt("return",v.text());case 9:if(v.status!==J.status){t.next=14;break}return t.next=12,v.text();case 12:throw Error(t.sent);case 14:throw Error(v.statusText);case 15:case"end":return t.stop()}}),t)}))),tt.apply(this,arguments)}function rt(t){return et.apply(this,arguments)}function et(){return et=s(n().mark((function t(e){var o,i,a,u,s,c,f,h,l,p=arguments;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=(o=p.length>1&&void 0!==p[1]?p[1]:{}).baseUrl,a=o.timeoutMs,u=o.userAgent,c=void 0!==(s=o.addPadding)&&s,h=void 0===(f=o.mode)?"sha1":f,t.next=4,Q("/range/".concat(encodeURIComponent(e)),{baseUrl:i,timeoutMs:a,userAgent:u,addPadding:c,mode:h});case 4:return l=t.sent.split("\n").filter(Boolean),t.abrupt("return",l.reduce((function(t,e){var n=r(e.split(":"),2);return t[n[0]]=Number.parseInt(n[1],10),t}),{}));case 7:case"end":return t.stop()}}),t)}))),et.apply(this,arguments)}function nt(){return nt=s(n().mark((function t(r){var e,o,i,a,u,s=arguments;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=s.length>1&&void 0!==s[1]?s[1]:{},(o=new Z("SHA-1","TEXT")).update(r),i=o.getHash("HEX",{outputUpper:!0}),a=i.slice(0,5),u=i.slice(5),t.next=8,rt(a,e);case 8:return t.abrupt("return",t.sent[u]||0);case 10:case"end":return t.stop()}}),t)}))),nt.apply(this,arguments)}function ot(){return ot=s(n().mark((function t(e){var o,i,a,u,s,c,f,h,l,p=arguments;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=(o=p.length>1&&void 0!==p[1]?p[1]:{}).apiKey,a=o.domain,s=void 0===(u=o.truncate)||u,c=o.baseUrl,f=o.timeoutMs,h=o.userAgent,t.next=4,Promise.all([F(e,{apiKey:i,domain:a,truncate:s,baseUrl:c,timeoutMs:f,userAgent:h}),/^.+@.+$/.test(e)?C(e,{apiKey:i,baseUrl:c,timeoutMs:f,userAgent:h}):null]);case 4:return l=r(t.sent,2),t.abrupt("return",{breaches:l[0],pastes:l[1]});case 9:case"end":return t.stop()}}),t)}))),ot.apply(this,arguments)}function it(){return it=s(n().mark((function t(){var r=arguments;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return"/subscription/status",t.abrupt("return",S("/subscription/status",r.length>0&&void 0!==r[0]?r[0]:{}));case 3:case"end":return t.stop()}}),t)}))),it.apply(this,arguments)}A()}));
|
|
2
2
|
//# sourceMappingURL=hibp.umd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hibp.umd.js","sources":["../../src/breach.ts","../../src/breaches.ts","../../src/data-classes.ts","../../src/pwned-password-range.ts","../../src/pwned-password.ts","../../src/search.ts","../../src/subscription-status.ts","../../src/api/fetch-polyfill.ts","../../src/api/haveibeenpwned/responses.ts","../../src/api/haveibeenpwned/fetch-from-api.ts","../../src/breached-account.ts","../../src/paste-account.ts","../../node_modules/jssha/dist/sha1.mjs","../../src/api/pwnedpasswords/responses.ts","../../src/api/pwnedpasswords/fetch-from-api.ts"],"sourcesContent":["import type { Breach } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * An object representing a breach.\n *\n * @typedef {object} Breach\n * @property {string} Name\n * @property {string} Title\n * @property {string} Domain\n * @property {string} BreachDate\n * @property {string} AddedDate\n * @property {string} ModifiedDate\n * @property {number} PwnCount\n * @property {string} Description\n * @property {string[]} DataClasses\n * @property {boolean} IsVerified\n * @property {boolean} IsFabricated\n * @property {boolean} IsSensitive\n * @property {boolean} IsRetired\n * @property {boolean} IsSpamList\n * @property {boolean} IsMalware\n * @property {boolean} IsSubscriptionFree\n * @property {string} LogoPath\n */\n\n/**\n * Fetches data for a specific breach event.\n *\n * @param {string} breachName the name of a breach in the system\n * @param {object} [options] a configuration object\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<Breach>|Promise<null>)} a Promise which resolves to an\n * object representing a breach (or null if no breach was found), or rejects\n * with an Error\n * @example\n * try {\n * const data = await breach(\"Adobe\");\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function breach(\n breachName: string,\n options: {\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Breach | null> {\n return fetchFromApi(\n `/breach/${encodeURIComponent(breachName)}`,\n options,\n ) as Promise<Breach | null>;\n}\n","import type { Breach } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * Fetches all breach events in the system.\n *\n * @param {object} [options] a configuration object\n * @param {string} [options.domain] a domain by which to filter the results\n * (default: all domains)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<Breach[]>} a Promise which resolves to an array of breach\n * objects (an empty array if no breaches were found), or rejects with an Error\n * @example\n * try {\n * const data = await breaches();\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await breaches({ domain: \"adobe.com\" });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function breaches(\n options: {\n /**\n * a domain by which to filter the results (default: all domains)\n */\n domain?: string;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Breach[]> {\n const { domain, baseUrl, timeoutMs, userAgent } = options;\n const endpoint = '/breaches?';\n const params: string[] = [];\n\n if (domain) {\n params.push(`domain=${encodeURIComponent(domain)}`);\n }\n\n return fetchFromApi(`${endpoint}${params.join('&')}`, {\n baseUrl,\n timeoutMs,\n userAgent,\n }) as Promise<Breach[]>;\n}\n","import { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * Fetches all data classes in the system.\n *\n * @param {object} [options] a configuration object\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<string[]> | Promise<null>)} a Promise which resolves to an\n * array of strings (or null if no data classes were found), or rejects with an\n * Error\n * @example\n * try {\n * const data = await dataClasses();\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function dataClasses(\n options: {\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<string[] | null> {\n return fetchFromApi('/dataclasses', options) as Promise<string[] | null>;\n}\n","import { fetchFromApi } from './api/pwnedpasswords/fetch-from-api.js';\n\nexport type PwnedPasswordSuffixes = Record<string, number>;\n\n/**\n * An object mapping an exposed password hash suffix (corresponding to a given\n * hash prefix) to how many times it occurred in the Pwned Passwords repository.\n *\n * @typedef {Object.<string, number>} PwnedPasswordSuffixes\n */\n\n/**\n * Fetches the SHA-1 or NTLM hash suffixes for the given 5-character hash\n * prefix.\n *\n * When a password hash with the same first 5 characters is found in the Pwned\n * Passwords repository, the API will respond with an HTTP 200 and include the\n * suffix of every hash beginning with the specified prefix, followed by a count\n * of how many times it appears in the data set. This function parses the\n * response and returns a more structured format.\n *\n * @param {string} prefix the first 5 characters of a password hash (case\n * insensitive)\n * @param {object} [options] a configuration object\n * @param {boolean} [options.addPadding] ask the remote API to add padding to\n * the response to obscure the password prefix (default: `false`)\n * @param {'sha1' | 'ntlm'} [options.mode] return SHA-1 or NTLM hashes\n * (default: `sha1`)\n * @param {string} [options.baseUrl] a custom base URL for the\n * pwnedpasswords.com API endpoints (default: `https://api.pwnedpasswords.com`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<PwnedPasswordSuffixes>} a Promise which resolves to an\n * object mapping the `suffix` that when matched with the prefix composes the\n * complete hash, to the `count` of how many times it appears in the breached\n * password data set, or rejects with an Error\n *\n * @example\n * try {\n * const results = await pwnedPasswordRange(\"5BAA6\");\n * // results will have the following shape:\n * // {\n * // \"003D68EB55068C33ACE09247EE4C639306B\": 3,\n * // \"012C192B2F16F82EA0EB9EF18D9D539B0DD\": 1,\n * // ...\n * // }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const suffix = \"1E4C9B93F3F0682250B6CF8331B7EE68FD8\";\n * const results = await pwnedPasswordRange(\"5BAA6\");\n * const numPwns = results[suffix] || 0;\n * } catch (err) {\n * // ...\n * }\n * @see https://haveibeenpwned.com/api/v3#SearchingPwnedPasswordsByRange\n */\nexport async function pwnedPasswordRange(\n prefix: string,\n options: {\n /**\n * ask the remote API to add padding to the response to obscure the password\n * prefix (default: `false`)\n */\n addPadding?: boolean;\n /**\n * return SHA-1 or NTLM hashes (default: `sha1`)\n */\n mode?: 'sha1' | 'ntlm';\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<PwnedPasswordSuffixes> {\n const {\n baseUrl,\n timeoutMs,\n userAgent,\n addPadding = false,\n mode = 'sha1',\n } = options;\n\n const data = await fetchFromApi(`/range/${encodeURIComponent(prefix)}`, {\n baseUrl,\n timeoutMs,\n userAgent,\n addPadding,\n mode,\n });\n\n // create array from lines of text in response body\n const results = data.split('\\n').filter(Boolean);\n\n // convert into an object mapping suffix to count for each line\n return results.reduce<PwnedPasswordSuffixes>((acc, row) => {\n const [suffix, countString] = row.split(':');\n acc[suffix] = Number.parseInt(countString, 10);\n return acc;\n }, {});\n}\n","import JSSHA from 'jssha/dist/sha1';\nimport { pwnedPasswordRange } from './pwned-password-range.js';\n\n/**\n * Fetches the number of times the the given password has been exposed in a\n * breach (0 indicating no exposure). The password is given in plain text, but\n * only the first 5 characters of its SHA-1 hash will be submitted to the API.\n *\n * @param {string} password a password in plain text\n * @param {object} [options] a configuration object\n * @param {boolean} [options.addPadding] ask the remote API to add padding to\n * the response to obscure the password prefix (default: `false`)\n * @param {string} [options.baseUrl] a custom base URL for the\n * pwnedpasswords.com API endpoints (default: `https://api.pwnedpasswords.com`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<number>} a Promise which resolves to the number of times\n * the password has been exposed in a breach, or rejects with an Error\n * @example\n * try {\n * const numPwns = await pwnedPassword(\"f00b4r\");\n * // truthy check or numeric condition\n * if (numPwns) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @see https://haveibeenpwned.com/api/v3#PwnedPasswords\n */\nexport async function pwnedPassword(\n password: string,\n options: {\n /**\n * ask the remote API to add padding to the response to obscure the password\n * prefix (default: `false`)\n */\n addPadding?: boolean;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<number> {\n /* eslint-disable */\n // @ts-expect-error: JSSHA types are busted\n const sha1 = new JSSHA('SHA-1', 'TEXT');\n sha1.update(password);\n const hash = sha1.getHash('HEX', { outputUpper: true });\n const prefix = hash.slice(0, 5);\n const suffix = hash.slice(5);\n\n const range = await pwnedPasswordRange(prefix, options);\n return range[suffix] || 0;\n /* eslint-enable */\n}\n","import type { Breach, Paste } from './api/haveibeenpwned/types.js';\nimport { breachedAccount } from './breached-account.js';\nimport { pasteAccount } from './paste-account.js';\n\nexport interface SearchResults {\n breaches: Breach[] | null;\n pastes: Paste[] | null;\n}\n\n/**\n * An object representing search results.\n *\n * @typedef {object} SearchResults\n * @property {(Breach[] | null)} breaches\n * @property {(Paste[] | null)} pastes\n */\n\n/**\n * Fetches all breaches and all pastes associated with the provided account\n * (email address or username). Note that the remote API does not support\n * querying pastes by username (only email addresses), so in the event the\n * provided account is not a valid email address, only breach data is queried\n * and the \"pastes\" field of the resulting object will always be null. This is\n * exactly how searching via the current web interface behaves, which this\n * convenience method is designed to mimic.\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `breachedaccount` and\n * `pasteaccount` endpoints. The `apiKey` option here is not explicitly\n * required, but direct requests made without it will fail (unless you specify a\n * `baseUrl` to a proxy that inserts a valid API key on your behalf).\n *\n * @param {string} account an email address or username\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.domain] a domain by which to filter the breach\n * results (default: all domains)\n * @param {boolean} [options.truncate] truncate the breach results to only\n * include the name of each breach (default: true)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the\n * User-Agent field in the request headers (default: `hibp <version>`)\n * @returns {Promise<SearchResults>} a Promise which resolves to an object\n * containing a \"breaches\" key (which can be null or an array of breach objects)\n * and a \"pastes\" key (which can be null or an array of paste objects), or\n * rejects with an Error\n * @example\n * try {\n * const data = await search(\"foo\", { apiKey: \"my-api-key\" });\n * if (data.breaches || data.pastes) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await search(\"nobody@nowhere.com\", {\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * truncate: false,\n * });\n * if (data.breaches || data.pastes) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @see https://haveibeenpwned.com/\n */\nexport async function search(\n account: string,\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a domain by which to filter the results (default: all domains)\n */\n domain?: string;\n /**\n * truncate the results to only include the name of each breach (default:\n * true)\n */\n truncate?: boolean;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<SearchResults> {\n const {\n apiKey,\n domain,\n truncate = true,\n baseUrl,\n timeoutMs,\n userAgent,\n } = options;\n\n const [breaches, pastes] = await Promise.all([\n breachedAccount(account, {\n apiKey,\n domain,\n truncate,\n baseUrl,\n timeoutMs,\n userAgent,\n }),\n // This email regex is garbage but it seems to be what the API uses:\n /^.+@.+$/.test(account)\n ? pasteAccount(account, { apiKey, baseUrl, timeoutMs, userAgent })\n : null,\n ]);\n\n return { breaches, pastes };\n}\n","import type { SubscriptionStatus } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * An object representing the status of your HIBP subscription.\n *\n * @typedef {object} SubscriptionStatus\n * @property {string} SubscriptionName\n * @property {string} Description\n * @property {string} SubscribedUntil\n * @property {number} Rpm\n * @property {number} DomainSearchMaxBreachedAccounts\n */\n\n/**\n * Fetches the current status of your HIBP subscription (API key).\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `subscription/status` endpoint.\n * The `apiKey` option here is not explicitly required, but direct requests made\n * without it will fail (unless you specify a `baseUrl` to a proxy that inserts\n * a valid API key on your behalf).\n *\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<SubscriptionStatus>} a Promise which resolves to a\n * subscription status object, or rejects with an Error\n * @example\n * try {\n * const data = await subscriptionStatus({ apiKey: \"my-api-key\" });\n * // ...\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await subscriptionStatus({\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * });\n * // ...\n * } catch (err) {\n * // ...\n * }\n */\nexport async function subscriptionStatus(\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n) {\n const endpoint = '/subscription/status';\n\n return fetchFromApi(endpoint, options) as Promise<SubscriptionStatus>;\n}\n","/* eslint-disable global-require */\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n\n// This can probably be removed in favor of Node's native fetch once we drop\n// support for v18. https://x.com/ebey_jacob/status/1709975146939973909?s=20\n\n/* c8 ignore start */\nexport function installUndiciOnNode18() {\n if (\n typeof process !== 'undefined' &&\n process.versions.node.startsWith('18.')\n ) {\n const {\n File: UndiciFile,\n fetch: undiciFetch,\n FormData: UndiciFormData,\n Headers: UndiciHeaders,\n Request: UndiciRequest,\n Response: UndiciResponse,\n } = require('undici');\n global.File = UndiciFile as unknown as typeof File;\n global.Headers = UndiciHeaders;\n global.Request = UndiciRequest;\n global.Response = UndiciResponse;\n global.fetch = undiciFetch;\n global.FormData = UndiciFormData;\n }\n}\n/* c8 ignore stop */\n","/**\n * Known potential responses from the remote API.\n *\n * Unfortunately, the API does not send a decent human-readable message back\n * with each response, but they are documented on the website:\n * https://haveibeenpwned.com/api/v3#ResponseCodes\n *\n * These objects simply provide a mapping between the HTTP response status code\n * and the corresponding human-readable message so we can throw a more\n * descriptive error for the consumer. (They are also leveraged in our tests.)\n */\n\nimport type { ResponseBody } from './types.js';\n\n/** @internal */\nexport interface HaveIBeenPwnedApiResponse {\n headers: Map<string, string>;\n status: number;\n statusText?: string;\n body?: ResponseBody;\n}\n\nconst emptyHeaders = new Map<string, string>();\n\n/** @internal */\nexport const BAD_REQUEST: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 400,\n statusText:\n 'Bad request — the account does not comply with an acceptable format.',\n};\n\n/**\n * This response has unique behavior. For some reason, the API includes an\n * object in the response body for this one, containing a human-readable\n * message. Manually populating the message here purely for use in tests.\n *\n * @internal\n */\nexport const UNAUTHORIZED: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 401,\n body: {\n statusCode: 401,\n message: 'Access denied due to missing hibp-api-key.',\n },\n};\n\n/** @internal */\nexport const FORBIDDEN: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 403,\n statusText: 'Forbidden - access denied.',\n};\n\n/** @internal */\nexport const BLOCKED: HaveIBeenPwnedApiResponse = {\n headers: new Map([['cf-ray', 'someRayId']]),\n status: 403,\n};\n\n/** @internal */\nexport const NOT_FOUND: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 404,\n};\n\n/**\n * This response has unique behavior. For some reason, the API includes an\n * object in the response body for this one, containing a human-readable\n * message. Manually populating the message here purely for use in tests.\n *\n * @internal\n */\nexport const TOO_MANY_REQUESTS: HaveIBeenPwnedApiResponse = {\n headers: new Map([['retry-after', '2']]),\n status: 429,\n body: {\n statusCode: 429,\n message: 'Rate limit is exceeded. Try again in 2 seconds.',\n },\n};\n","import { name, version } from '../../../package.json';\nimport { installUndiciOnNode18 } from '../fetch-polyfill.js';\nimport {\n BAD_REQUEST,\n UNAUTHORIZED,\n FORBIDDEN,\n NOT_FOUND,\n TOO_MANY_REQUESTS,\n} from './responses.js';\nimport type { ApiData, ErrorData } from './types.js';\n\ninstallUndiciOnNode18();\n\n/**\n * Custom error thrown when the haveibeenpwned.com API responds with 429 Too\n * Many Requests. See the `retryAfterSeconds` property for the number of seconds\n * to wait before attempting the request again.\n *\n * @see https://haveibeenpwned.com/API/v3#RateLimiting\n */\nexport class RateLimitError extends Error {\n /**\n * The number of seconds to wait before attempting the request again. May be\n * `undefined` if the API does not provide a `retry-after` header, but this\n * should never happen.\n */\n public retryAfterSeconds: number | undefined;\n\n constructor(\n retryAfter: ReturnType<Headers['get']>,\n message: string | undefined,\n options?: ErrorOptions,\n ) {\n super(message, options);\n this.name = this.constructor.name;\n this.retryAfterSeconds =\n typeof retryAfter === 'string'\n ? Number.parseInt(retryAfter, 10) /* c8 ignore start */\n : undefined; /* c8 ignore stop */\n }\n}\n\nfunction blockedWithRayId(rayId: string) {\n return `Request blocked, contact haveibeenpwned.com if this continues (Ray ID: ${rayId})`;\n}\n\n/**\n * Fetches data from the supplied API endpoint.\n *\n * HTTP status code 200 returns an Object (data found).\n * HTTP status code 404 returns null (no data found).\n * HTTP status code 400 throws an Error (bad request).\n * HTTP status code 401 throws an Error (unauthorized).\n * HTTP status code 403 throws an Error (forbidden).\n * HTTP status code 429 throws an Error (too many requests).\n *\n * @internal\n * @private\n * @param {string} endpoint the API endpoint to query\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<ApiData>} a Promise which resolves to the data resulting\n * from the query (or null for 404 Not Found responses), or rejects with an\n * Error\n */\nexport async function fetchFromApi(\n endpoint: string,\n options: {\n apiKey?: string;\n baseUrl?: string;\n timeoutMs?: number;\n userAgent?: string;\n } = {},\n): Promise<ApiData> {\n const {\n apiKey,\n baseUrl = 'https://haveibeenpwned.com/api/v3',\n timeoutMs,\n userAgent,\n } = options;\n const headers: Record<string, string> = {};\n\n if (apiKey) {\n headers['HIBP-API-Key'] = apiKey;\n }\n\n if (userAgent) {\n headers['User-Agent'] = userAgent;\n }\n\n // Provide a default User-Agent when running outside the browser\n if (!userAgent && typeof navigator === 'undefined') {\n headers['User-Agent'] = `${name} ${version}`;\n }\n\n const config: RequestInit = {\n headers,\n ...(timeoutMs ? { signal: AbortSignal.timeout(timeoutMs) } : {}),\n };\n const url = `${baseUrl.replace(/\\/$/g, '')}${endpoint}`;\n const response = await fetch(url, config);\n\n if (response.ok) return response.json() as Promise<ApiData>;\n\n switch (response.status) {\n case BAD_REQUEST.status: {\n throw new Error(BAD_REQUEST.statusText);\n }\n case UNAUTHORIZED.status: {\n const body = (await response.json()) as unknown as ErrorData;\n throw new Error(body.message);\n }\n case FORBIDDEN.status: {\n const rayId = response.headers.get('cf-ray');\n if (rayId) throw new Error(blockedWithRayId(rayId));\n throw new Error(FORBIDDEN.statusText);\n }\n case NOT_FOUND.status: {\n return null;\n }\n case TOO_MANY_REQUESTS.status: {\n const body = (await response.json()) as unknown as ErrorData;\n const retryAfter = response.headers.get('retry-after');\n throw new RateLimitError(retryAfter, body.message);\n }\n default: {\n throw new Error(response.statusText);\n }\n }\n}\n","import type { Breach } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * Fetches breach data for a specific account.\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `breachedaccount` endpoint. The\n * `apiKey` option here is not explicitly required, but direct requests made\n * without it will fail (unless you specify a `baseUrl` to a proxy that inserts\n * a valid API key on your behalf).\n *\n * @param {string} account a username or email address\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.domain] a domain by which to filter the results\n * (default: all domains)\n * @param {boolean} [options.includeUnverified] include \"unverified\" breaches in\n * the results (default: true)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {boolean} [options.truncate] truncate the results to only include\n * the name of each breach (default: true)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<Breach[]> | Promise<null>)} a Promise which resolves to an\n * array of breach objects (or null if no breaches were found), or rejects with\n * an Error\n * @example\n * try {\n * const data = await breachedAccount(\"foo\", { apiKey: \"my-api-key\" });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await breachedAccount(\"bar\", {\n * includeUnverified: false,\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await breachedAccount(\"baz\", {\n * apiKey: \"my-api-key\",\n * domain: \"adobe.com\",\n * truncate: false,\n * userAgent: \"my-app 1.0\",\n * });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function breachedAccount(\n account: string,\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a domain by which to filter the results (default: all domains)\n */\n domain?: string;\n /**\n * include \"unverified\" breaches in the results (default: true)\n */\n includeUnverified?: boolean;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * truncate the results to only include the name of each breach (default:\n * true)\n */\n truncate?: boolean;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Breach[] | null> {\n const {\n apiKey,\n domain,\n includeUnverified = true,\n timeoutMs,\n truncate = true,\n baseUrl,\n userAgent,\n } = options;\n const endpoint = `/breachedaccount/${encodeURIComponent(account)}?`;\n const params: string[] = [];\n\n if (domain) {\n params.push(`domain=${encodeURIComponent(domain)}`);\n }\n\n if (!includeUnverified) {\n params.push('includeUnverified=false');\n }\n\n if (!truncate) {\n params.push('truncateResponse=false');\n }\n\n return fetchFromApi(`${endpoint}${params.join('&')}`, {\n apiKey,\n baseUrl,\n timeoutMs,\n userAgent,\n }) as Promise<Breach[] | null>;\n}\n","import type { Paste } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * An object representing a paste.\n *\n * @typedef {object} Paste\n * @property {string} Id\n * @property {string} Source\n * @property {string} Title\n * @property {string} Date\n * @property {number} EmailCount\n */\n\n/**\n * Fetches paste data for a specific account (email address).\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `pasteaccount` endpoint. The\n * `apiKey` option here is not explicitly required, but direct requests made\n * without it will fail (unless you specify a `baseUrl` to a proxy that inserts\n * a valid API key on your behalf).\n *\n * @param {string} email the email address to query\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<Paste[]> | Promise<null>)} a Promise which resolves to an\n * array of paste objects (or null if no pastes were found), or rejects with an\n * Error\n * @example\n * try {\n * const data = await pasteAccount(\"foo@bar.com\", { apiKey: \"my-api-key\" });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await pasteAccount(\"foo@bar.com\", {\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function pasteAccount(\n email: string,\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Paste[] | null> {\n return fetchFromApi(\n `/pasteaccount/${encodeURIComponent(email)}`,\n options,\n ) as Promise<Paste[] | null>;\n}\n","/**\n * A JavaScript implementation of the SHA family of hashes - defined in FIPS PUB 180-4, FIPS PUB 202,\n * and SP 800-185 - as well as the corresponding HMAC implementation as defined in FIPS PUB 198-1.\n *\n * Copyright 2008-2023 Brian Turek, 1998-2009 Paul Johnston & Contributors\n * Distributed under the BSD License\n * See http://caligatio.github.com/jsSHA/ for more information\n */\nconst t=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",r=\"ARRAYBUFFER not supported by this environment\",n=\"UINT8ARRAY not supported by this environment\";function i(t,r,n,i){let e,s,o;const h=r||[0],u=(n=n||0)>>>3,f=-1===i?3:0;for(e=0;e<t.length;e+=1)o=e+u,s=o>>>2,h.length<=s&&h.push(0),h[s]|=t[e]<<8*(f+i*(o%4));return{value:h,binLen:8*t.length+n}}function e(e,s,o){switch(s){case\"UTF8\":case\"UTF16BE\":case\"UTF16LE\":break;default:throw new Error(\"encoding must be UTF8, UTF16BE, or UTF16LE\")}switch(e){case\"HEX\":return function(t,r,n){return function(t,r,n,i){let e,s,o,h;if(0!=t.length%2)throw new Error(\"String of HEX type must be in byte increments\");const u=r||[0],f=(n=n||0)>>>3,c=-1===i?3:0;for(e=0;e<t.length;e+=2){if(s=parseInt(t.substr(e,2),16),isNaN(s))throw new Error(\"String of HEX type contains invalid characters\");for(h=(e>>>1)+f,o=h>>>2;u.length<=o;)u.push(0);u[o]|=s<<8*(c+i*(h%4))}return{value:u,binLen:4*t.length+n}}(t,r,n,o)};case\"TEXT\":return function(t,r,n){return function(t,r,n,i,e){let s,o,h,u,f,c,a,w,E=0;const l=n||[0],A=(i=i||0)>>>3;if(\"UTF8\"===r)for(a=-1===e?3:0,h=0;h<t.length;h+=1)for(s=t.charCodeAt(h),o=[],128>s?o.push(s):2048>s?(o.push(192|s>>>6),o.push(128|63&s)):55296>s||57344<=s?o.push(224|s>>>12,128|s>>>6&63,128|63&s):(h+=1,s=65536+((1023&s)<<10|1023&t.charCodeAt(h)),o.push(240|s>>>18,128|s>>>12&63,128|s>>>6&63,128|63&s)),u=0;u<o.length;u+=1){for(c=E+A,f=c>>>2;l.length<=f;)l.push(0);l[f]|=o[u]<<8*(a+e*(c%4)),E+=1}else for(a=-1===e?2:0,w=\"UTF16LE\"===r&&1!==e||\"UTF16LE\"!==r&&1===e,h=0;h<t.length;h+=1){for(s=t.charCodeAt(h),!0===w&&(u=255&s,s=u<<8|s>>>8),c=E+A,f=c>>>2;l.length<=f;)l.push(0);l[f]|=s<<8*(a+e*(c%4)),E+=2}return{value:l,binLen:8*E+i}}(t,s,r,n,o)};case\"B64\":return function(r,n,i){return function(r,n,i,e){let s,o,h,u,f,c,a,w=0;const E=n||[0],l=(i=i||0)>>>3,A=-1===e?3:0,p=r.indexOf(\"=\");if(-1===r.search(/^[a-zA-Z0-9=+/]+$/))throw new Error(\"Invalid character in base-64 string\");if(r=r.replace(/=/g,\"\"),-1!==p&&p<r.length)throw new Error(\"Invalid '=' found in base-64 string\");for(o=0;o<r.length;o+=4){for(f=r.substr(o,4),u=0,h=0;h<f.length;h+=1)s=t.indexOf(f.charAt(h)),u|=s<<18-6*h;for(h=0;h<f.length-1;h+=1){for(a=w+l,c=a>>>2;E.length<=c;)E.push(0);E[c]|=(u>>>16-8*h&255)<<8*(A+e*(a%4)),w+=1}}return{value:E,binLen:8*w+i}}(r,n,i,o)};case\"BYTES\":return function(t,r,n){return function(t,r,n,i){let e,s,o,h;const u=r||[0],f=(n=n||0)>>>3,c=-1===i?3:0;for(s=0;s<t.length;s+=1)e=t.charCodeAt(s),h=s+f,o=h>>>2,u.length<=o&&u.push(0),u[o]|=e<<8*(c+i*(h%4));return{value:u,binLen:8*t.length+n}}(t,r,n,o)};case\"ARRAYBUFFER\":try{new ArrayBuffer(0)}catch(t){throw new Error(r)}return function(t,r,n){return function(t,r,n,e){return i(new Uint8Array(t),r,n,e)}(t,r,n,o)};case\"UINT8ARRAY\":try{new Uint8Array(0)}catch(t){throw new Error(n)}return function(t,r,n){return i(t,r,n,o)};default:throw new Error(\"format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY\")}}function s(i,e,s,o){switch(i){case\"HEX\":return function(t){return function(t,r,n,i){const e=\"0123456789abcdef\";let s,o,h=\"\";const u=r/8,f=-1===n?3:0;for(s=0;s<u;s+=1)o=t[s>>>2]>>>8*(f+n*(s%4)),h+=e.charAt(o>>>4&15)+e.charAt(15&o);return i.outputUpper?h.toUpperCase():h}(t,e,s,o)};case\"B64\":return function(r){return function(r,n,i,e){let s,o,h,u,f,c=\"\";const a=n/8,w=-1===i?3:0;for(s=0;s<a;s+=3)for(u=s+1<a?r[s+1>>>2]:0,f=s+2<a?r[s+2>>>2]:0,h=(r[s>>>2]>>>8*(w+i*(s%4))&255)<<16|(u>>>8*(w+i*((s+1)%4))&255)<<8|f>>>8*(w+i*((s+2)%4))&255,o=0;o<4;o+=1)c+=8*s+6*o<=n?t.charAt(h>>>6*(3-o)&63):e.b64Pad;return c}(r,e,s,o)};case\"BYTES\":return function(t){return function(t,r,n){let i,e,s=\"\";const o=r/8,h=-1===n?3:0;for(i=0;i<o;i+=1)e=t[i>>>2]>>>8*(h+n*(i%4))&255,s+=String.fromCharCode(e);return s}(t,e,s)};case\"ARRAYBUFFER\":try{new ArrayBuffer(0)}catch(t){throw new Error(r)}return function(t){return function(t,r,n){let i;const e=r/8,s=new ArrayBuffer(e),o=new Uint8Array(s),h=-1===n?3:0;for(i=0;i<e;i+=1)o[i]=t[i>>>2]>>>8*(h+n*(i%4))&255;return s}(t,e,s)};case\"UINT8ARRAY\":try{new Uint8Array(0)}catch(t){throw new Error(n)}return function(t){return function(t,r,n){let i;const e=r/8,s=-1===n?3:0,o=new Uint8Array(e);for(i=0;i<e;i+=1)o[i]=t[i>>>2]>>>8*(s+n*(i%4))&255;return o}(t,e,s)};default:throw new Error(\"format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY\")}}function o(t){const r={outputUpper:!1,b64Pad:\"=\",outputLen:-1},n=t||{},i=\"Output length must be a multiple of 8\";if(r.outputUpper=n.outputUpper||!1,n.b64Pad&&(r.b64Pad=n.b64Pad),n.outputLen){if(n.outputLen%8!=0)throw new Error(i);r.outputLen=n.outputLen}else if(n.shakeLen){if(n.shakeLen%8!=0)throw new Error(i);r.outputLen=n.shakeLen}if(\"boolean\"!=typeof r.outputUpper)throw new Error(\"Invalid outputUpper formatting option\");if(\"string\"!=typeof r.b64Pad)throw new Error(\"Invalid b64Pad formatting option\");return r}class h{constructor(t,r,n){const i=n||{};if(this.t=r,this.i=i.encoding||\"UTF8\",this.numRounds=i.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw new Error(\"numRounds must a integer >= 1\");this.o=t,this.h=[],this.u=0,this.l=!1,this.A=0,this.p=!1,this.U=[],this.R=[]}update(t){let r,n=0;const i=this.T>>>5,e=this.F(t,this.h,this.u),s=e.binLen,o=e.value,h=s>>>5;for(r=0;r<h;r+=i)n+this.T<=s&&(this.m=this.g(o.slice(r,r+i),this.m),n+=this.T);return this.A+=n,this.h=o.slice(n>>>5),this.u=s%this.T,this.l=!0,this}getHash(t,r){let n,i,e=this.B;const h=o(r);if(this.v){if(-1===h.outputLen)throw new Error(\"Output length must be specified in options\");e=h.outputLen}const u=s(t,e,this.H,h);if(this.p&&this.C)return u(this.C(h));for(i=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),e),n=1;n<this.numRounds;n+=1)this.v&&e%32!=0&&(i[i.length-1]&=16777215>>>24-e%32),i=this.Y(i,e,0,this.L(this.o),e);return u(i)}setHMACKey(t,r,n){if(!this.M)throw new Error(\"Variant does not support HMAC\");if(this.l)throw new Error(\"Cannot set MAC key after calling update\");const i=e(r,(n||{}).encoding||\"UTF8\",this.H);this.N(i(t))}N(t){const r=this.T>>>3,n=r/4-1;let i;if(1!==this.numRounds)throw new Error(\"Cannot set numRounds with MAC\");if(this.p)throw new Error(\"MAC key already set\");for(r<t.binLen/8&&(t.value=this.Y(t.value,t.binLen,0,this.L(this.o),this.B));t.value.length<=n;)t.value.push(0);for(i=0;i<=n;i+=1)this.U[i]=909522486^t.value[i],this.R[i]=1549556828^t.value[i];this.m=this.g(this.U,this.m),this.A=this.T,this.p=!0}getHMAC(t,r){const n=o(r);return s(t,this.B,this.H,n)(this.S())}S(){let t;if(!this.p)throw new Error(\"Cannot call getHMAC without first setting MAC key\");const r=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),this.B);return t=this.g(this.R,this.L(this.o)),t=this.Y(r,this.B,this.T,t,this.B),t}}function u(t,r){return t<<r|t>>>32-r}function f(t,r,n){return t^r^n}function c(t,r,n){return t&r^t&n^r&n}function a(t,r){const n=(65535&t)+(65535&r);return(65535&(t>>>16)+(r>>>16)+(n>>>16))<<16|65535&n}function w(t,r,n,i,e){const s=(65535&t)+(65535&r)+(65535&n)+(65535&i)+(65535&e);return(65535&(t>>>16)+(r>>>16)+(n>>>16)+(i>>>16)+(e>>>16)+(s>>>16))<<16|65535&s}function E(t){return[1732584193,4023233417,2562383102,271733878,3285377520]}function l(t,r){let n,i,e,s,o,h,E;const l=[];for(n=r[0],i=r[1],e=r[2],s=r[3],o=r[4],E=0;E<80;E+=1)l[E]=E<16?t[E]:u(l[E-3]^l[E-8]^l[E-14]^l[E-16],1),h=E<20?w(u(n,5),(A=i)&e^~A&s,o,1518500249,l[E]):E<40?w(u(n,5),f(i,e,s),o,1859775393,l[E]):E<60?w(u(n,5),c(i,e,s),o,2400959708,l[E]):w(u(n,5),f(i,e,s),o,3395469782,l[E]),o=s,s=e,e=u(i,30),i=n,n=h;var A;return r[0]=a(n,r[0]),r[1]=a(i,r[1]),r[2]=a(e,r[2]),r[3]=a(s,r[3]),r[4]=a(o,r[4]),r}function A(t,r,n,i){let e;const s=15+(r+65>>>9<<4),o=r+n;for(;t.length<=s;)t.push(0);for(t[r>>>5]|=128<<24-r%32,t[s]=4294967295&o,t[s-1]=o/4294967296|0,e=0;e<t.length;e+=16)i=l(t.slice(e,e+16),i);return i}class p extends h{constructor(t,r,n){if(\"SHA-1\"!==t)throw new Error(\"Chosen SHA variant is not supported\");super(t,r,n);const i=n||{};this.M=!0,this.C=this.S,this.H=-1,this.F=e(this.t,this.i,this.H),this.g=l,this.I=function(t){return t.slice()},this.L=E,this.Y=A,this.m=[1732584193,4023233417,2562383102,271733878,3285377520],this.T=512,this.B=160,this.v=!1,i.hmacKey&&this.N(function(t,r,n,i){const s=t+\" must include a value and format\";if(!r){if(!i)throw new Error(s);return i}if(void 0===r.value||!r.format)throw new Error(s);return e(r.format,r.encoding||\"UTF8\",n)(r.value)}(\"hmacKey\",i.hmacKey,this.H))}}export{p as default};\n","/**\n * Known potential responses from the remote API.\n *\n * https://haveibeenpwned.com/api/v3#PwnedPasswords\n *\n */\n\n/** @internal */\nexport interface PwnedPasswordsApiResponse {\n status: number;\n body?: string;\n}\n\n/** @internal */\nexport const BAD_REQUEST: PwnedPasswordsApiResponse = {\n status: 400,\n body: 'The hash prefix was not in a valid format',\n};\n","import { installUndiciOnNode18 } from '../fetch-polyfill.js';\nimport { BAD_REQUEST } from './responses.js';\n\ninstallUndiciOnNode18();\n\n/**\n * Fetches data from the supplied API endpoint.\n *\n * HTTP status code 200 returns plain text (data found).\n * HTTP status code 400 throws an Error (bad request).\n *\n * @internal\n * @private\n * @param {string} endpoint the API endpoint to query\n * @param {object} [options] a configuration object\n * @param {string} [options.baseUrl] a custom base URL for the\n * pwnedpasswords.com API endpoints (default: `https://api.pwnedpasswords.com`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @param {boolean} [options.addPadding] ask the remote API to add padding to\n * the response to obscure the password prefix (default: `false`)\n * @param {'sha1' | 'ntlm'} [options.mode] return SHA-1 or NTLM hashes\n * (default: `sha1`)\n * @returns {Promise<string>} a Promise which resolves to the data resulting\n * from the query, or rejects with an Error\n */\nexport async function fetchFromApi(\n endpoint: string,\n options: {\n baseUrl?: string;\n timeoutMs?: number;\n userAgent?: string;\n addPadding?: boolean;\n mode?: 'sha1' | 'ntlm';\n } = {},\n): Promise<string> {\n const {\n baseUrl = 'https://api.pwnedpasswords.com',\n timeoutMs,\n userAgent,\n addPadding = false,\n mode = 'sha1',\n } = options;\n\n const config: RequestInit = {\n headers: {\n ...(userAgent ? { 'User-Agent': userAgent } : {}),\n ...(addPadding ? { 'Add-Padding': 'true' } : {}),\n },\n ...(timeoutMs ? { signal: AbortSignal.timeout(timeoutMs) } : {}),\n };\n const url = `${baseUrl.replace(/\\/$/g, '')}${endpoint}?mode=${mode}`;\n const response = await fetch(url, config);\n\n if (response.ok) return response.text();\n\n if (response.status === BAD_REQUEST.status) {\n const text = await response.text();\n throw new Error(text);\n }\n\n throw new Error(response.statusText);\n}\n"],"names":["breachName","options","fetchFromApi","concat","encodeURIComponent","arguments","length","undefined","domain","baseUrl","timeoutMs","userAgent","params","push","join","_x4","_pwnedPassword","apply","this","_x5","_search","_subscriptionStatus","installUndiciOnNode18","process","versions","node","startsWith","_require","require","undiciFetch","fetch","UndiciFormData","FormData","UndiciHeaders","Headers","UndiciRequest","Request","UndiciResponse","Response","global","File","emptyHeaders","Map","BAD_REQUEST","headers","status","statusText","UNAUTHORIZED","body","statusCode","message","FORBIDDEN","NOT_FOUND","TOO_MANY_REQUESTS","RateLimitError","_exports","_Error","retryAfter","_this","_classCallCheck","_defineProperty","_callSuper","name","constructor","retryAfterSeconds","Number","parseInt","_inherits","_createClass","_wrapNativeSuper","Error","blockedWithRayId","rayId","_x","_fetchFromApi$","_asyncToGenerator","_regeneratorRuntime","mark","_callee","endpoint","apiKey","_options$baseUrl","config","url","response","_body","_args","wrap","_context","prev","next","navigator","version","_objectSpread","signal","AbortSignal","timeout","replace","sent","ok","abrupt","json","t0","get","stop","breachedAccount","account","_options$includeUnver","includeUnverified","_options$truncate","truncate","pasteAccount","email","t","r","n","i","e","s","o","h","u","f","value","binLen","c","substr","isNaN","a","w","E","l","A","charCodeAt","p","indexOf","search","charAt","ArrayBuffer","Uint8Array","outputUpper","toUpperCase","b64Pad","String","fromCharCode","outputLen","shakeLen","encoding","numRounds","U","R","key","T","F","m","g","slice","getHash","B","v","H","C","Y","I","L","M","N","getHMAC","S","_h3","_this2","hmacKey","format","_x2","_fetchFromApi","_callee2","_options$baseUrl2","_options$addPadding","addPadding","_options$mode","mode","_args2","_context2","text","pwnedPasswordRange","_x3","_pwnedPasswordRange","_callee3","prefix","_options$addPadding2","_options$mode2","results","_args3","_context3","split","filter","Boolean","reduce","acc","row","_row$split2","_slicedToArray","_callee4","password","sha1","hash","suffix","_args4","_context4","JSSHA","update","_callee5","_options$truncate2","_yield$Promise$all2","_args5","_context5","Promise","all","test","breaches","pastes","_callee6","_args6","_context6"],"mappings":"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","x_google_ignoreList":[12]}
|
|
1
|
+
{"version":3,"file":"hibp.umd.js","sources":["../../src/breach.ts","../../src/breaches.ts","../../src/data-classes.ts","../../src/pwned-password-range.ts","../../src/pwned-password.ts","../../src/search.ts","../../src/subscription-status.ts","../../src/api/fetch-polyfill.ts","../../src/api/haveibeenpwned/responses.ts","../../src/api/haveibeenpwned/fetch-from-api.ts","../../src/breached-account.ts","../../src/paste-account.ts","../../node_modules/jssha/dist/sha1.mjs","../../src/api/pwnedpasswords/responses.ts","../../src/api/pwnedpasswords/fetch-from-api.ts"],"sourcesContent":["import type { Breach } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * An object representing a breach.\n *\n * @typedef {object} Breach\n * @property {string} Name\n * @property {string} Title\n * @property {string} Domain\n * @property {string} BreachDate\n * @property {string} AddedDate\n * @property {string} ModifiedDate\n * @property {number} PwnCount\n * @property {string} Description\n * @property {string[]} DataClasses\n * @property {boolean} IsVerified\n * @property {boolean} IsFabricated\n * @property {boolean} IsSensitive\n * @property {boolean} IsRetired\n * @property {boolean} IsSpamList\n * @property {boolean} IsMalware\n * @property {boolean} IsSubscriptionFree\n * @property {string} LogoPath\n */\n\n/**\n * Fetches data for a specific breach event.\n *\n * @param {string} breachName the name of a breach in the system\n * @param {object} [options] a configuration object\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<Breach>|Promise<null>)} a Promise which resolves to an\n * object representing a breach (or null if no breach was found), or rejects\n * with an Error\n * @example\n * try {\n * const data = await breach(\"Adobe\");\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function breach(\n breachName: string,\n options: {\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Breach | null> {\n return fetchFromApi(\n `/breach/${encodeURIComponent(breachName)}`,\n options,\n ) as Promise<Breach | null>;\n}\n","import type { Breach } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * Fetches all breach events in the system.\n *\n * @param {object} [options] a configuration object\n * @param {string} [options.domain] a domain by which to filter the results\n * (default: all domains)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<Breach[]>} a Promise which resolves to an array of breach\n * objects (an empty array if no breaches were found), or rejects with an Error\n * @example\n * try {\n * const data = await breaches();\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await breaches({ domain: \"adobe.com\" });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function breaches(\n options: {\n /**\n * a domain by which to filter the results (default: all domains)\n */\n domain?: string;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Breach[]> {\n const { domain, baseUrl, timeoutMs, userAgent } = options;\n const endpoint = '/breaches?';\n const params: string[] = [];\n\n if (domain) {\n params.push(`domain=${encodeURIComponent(domain)}`);\n }\n\n return fetchFromApi(`${endpoint}${params.join('&')}`, {\n baseUrl,\n timeoutMs,\n userAgent,\n }) as Promise<Breach[]>;\n}\n","import { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * Fetches all data classes in the system.\n *\n * @param {object} [options] a configuration object\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<string[]> | Promise<null>)} a Promise which resolves to an\n * array of strings (or null if no data classes were found), or rejects with an\n * Error\n * @example\n * try {\n * const data = await dataClasses();\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function dataClasses(\n options: {\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<string[] | null> {\n return fetchFromApi('/dataclasses', options) as Promise<string[] | null>;\n}\n","import { fetchFromApi } from './api/pwnedpasswords/fetch-from-api.js';\n\nexport type PwnedPasswordSuffixes = Record<string, number>;\n\n/**\n * An object mapping an exposed password hash suffix (corresponding to a given\n * hash prefix) to how many times it occurred in the Pwned Passwords repository.\n *\n * @typedef {Object.<string, number>} PwnedPasswordSuffixes\n */\n\n/**\n * Fetches the SHA-1 or NTLM hash suffixes for the given 5-character hash\n * prefix.\n *\n * When a password hash with the same first 5 characters is found in the Pwned\n * Passwords repository, the API will respond with an HTTP 200 and include the\n * suffix of every hash beginning with the specified prefix, followed by a count\n * of how many times it appears in the data set. This function parses the\n * response and returns a more structured format.\n *\n * @param {string} prefix the first 5 characters of a password hash (case\n * insensitive)\n * @param {object} [options] a configuration object\n * @param {boolean} [options.addPadding] ask the remote API to add padding to\n * the response to obscure the password prefix (default: `false`)\n * @param {'sha1' | 'ntlm'} [options.mode] return SHA-1 or NTLM hashes\n * (default: `sha1`)\n * @param {string} [options.baseUrl] a custom base URL for the\n * pwnedpasswords.com API endpoints (default: `https://api.pwnedpasswords.com`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<PwnedPasswordSuffixes>} a Promise which resolves to an\n * object mapping the `suffix` that when matched with the prefix composes the\n * complete hash, to the `count` of how many times it appears in the breached\n * password data set, or rejects with an Error\n *\n * @example\n * try {\n * const results = await pwnedPasswordRange(\"5BAA6\");\n * // results will have the following shape:\n * // {\n * // \"003D68EB55068C33ACE09247EE4C639306B\": 3,\n * // \"012C192B2F16F82EA0EB9EF18D9D539B0DD\": 1,\n * // ...\n * // }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const suffix = \"1E4C9B93F3F0682250B6CF8331B7EE68FD8\";\n * const results = await pwnedPasswordRange(\"5BAA6\");\n * const numPwns = results[suffix] || 0;\n * } catch (err) {\n * // ...\n * }\n * @see https://haveibeenpwned.com/api/v3#SearchingPwnedPasswordsByRange\n */\nexport async function pwnedPasswordRange(\n prefix: string,\n options: {\n /**\n * ask the remote API to add padding to the response to obscure the password\n * prefix (default: `false`)\n */\n addPadding?: boolean;\n /**\n * return SHA-1 or NTLM hashes (default: `sha1`)\n */\n mode?: 'sha1' | 'ntlm';\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<PwnedPasswordSuffixes> {\n const {\n baseUrl,\n timeoutMs,\n userAgent,\n addPadding = false,\n mode = 'sha1',\n } = options;\n\n const data = await fetchFromApi(`/range/${encodeURIComponent(prefix)}`, {\n baseUrl,\n timeoutMs,\n userAgent,\n addPadding,\n mode,\n });\n\n // create array from lines of text in response body\n const results = data.split('\\n').filter(Boolean);\n\n // convert into an object mapping suffix to count for each line\n return results.reduce<PwnedPasswordSuffixes>((acc, row) => {\n const [suffix, countString] = row.split(':');\n acc[suffix] = Number.parseInt(countString, 10);\n return acc;\n }, {});\n}\n","import JSSHA from 'jssha/dist/sha1';\nimport { pwnedPasswordRange } from './pwned-password-range.js';\n\n/**\n * Fetches the number of times the the given password has been exposed in a\n * breach (0 indicating no exposure). The password is given in plain text, but\n * only the first 5 characters of its SHA-1 hash will be submitted to the API.\n *\n * @param {string} password a password in plain text\n * @param {object} [options] a configuration object\n * @param {boolean} [options.addPadding] ask the remote API to add padding to\n * the response to obscure the password prefix (default: `false`)\n * @param {string} [options.baseUrl] a custom base URL for the\n * pwnedpasswords.com API endpoints (default: `https://api.pwnedpasswords.com`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<number>} a Promise which resolves to the number of times\n * the password has been exposed in a breach, or rejects with an Error\n * @example\n * try {\n * const numPwns = await pwnedPassword(\"f00b4r\");\n * // truthy check or numeric condition\n * if (numPwns) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @see https://haveibeenpwned.com/api/v3#PwnedPasswords\n */\nexport async function pwnedPassword(\n password: string,\n options: {\n /**\n * ask the remote API to add padding to the response to obscure the password\n * prefix (default: `false`)\n */\n addPadding?: boolean;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<number> {\n /* eslint-disable */\n // @ts-expect-error: JSSHA types are busted\n const sha1 = new JSSHA('SHA-1', 'TEXT');\n sha1.update(password);\n const hash = sha1.getHash('HEX', { outputUpper: true });\n const prefix = hash.slice(0, 5);\n const suffix = hash.slice(5);\n\n const range = await pwnedPasswordRange(prefix, options);\n return range[suffix] || 0;\n /* eslint-enable */\n}\n","import type { Breach, Paste } from './api/haveibeenpwned/types.js';\nimport { breachedAccount } from './breached-account.js';\nimport { pasteAccount } from './paste-account.js';\n\nexport interface SearchResults {\n breaches: Breach[] | null;\n pastes: Paste[] | null;\n}\n\n/**\n * An object representing search results.\n *\n * @typedef {object} SearchResults\n * @property {(Breach[] | null)} breaches\n * @property {(Paste[] | null)} pastes\n */\n\n/**\n * Fetches all breaches and all pastes associated with the provided account\n * (email address or username). Note that the remote API does not support\n * querying pastes by username (only email addresses), so in the event the\n * provided account is not a valid email address, only breach data is queried\n * and the \"pastes\" field of the resulting object will always be null. This is\n * exactly how searching via the current web interface behaves, which this\n * convenience method is designed to mimic.\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `breachedaccount` and\n * `pasteaccount` endpoints. The `apiKey` option here is not explicitly\n * required, but direct requests made without it will fail (unless you specify a\n * `baseUrl` to a proxy that inserts a valid API key on your behalf).\n *\n * @param {string} account an email address or username\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.domain] a domain by which to filter the breach\n * results (default: all domains)\n * @param {boolean} [options.truncate] truncate the breach results to only\n * include the name of each breach (default: true)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the\n * User-Agent field in the request headers (default: `hibp <version>`)\n * @returns {Promise<SearchResults>} a Promise which resolves to an object\n * containing a \"breaches\" key (which can be null or an array of breach objects)\n * and a \"pastes\" key (which can be null or an array of paste objects), or\n * rejects with an Error\n * @example\n * try {\n * const data = await search(\"foo\", { apiKey: \"my-api-key\" });\n * if (data.breaches || data.pastes) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await search(\"nobody@nowhere.com\", {\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * truncate: false,\n * });\n * if (data.breaches || data.pastes) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @see https://haveibeenpwned.com/\n */\nexport async function search(\n account: string,\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a domain by which to filter the results (default: all domains)\n */\n domain?: string;\n /**\n * truncate the results to only include the name of each breach (default:\n * true)\n */\n truncate?: boolean;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<SearchResults> {\n const {\n apiKey,\n domain,\n truncate = true,\n baseUrl,\n timeoutMs,\n userAgent,\n } = options;\n\n const [breaches, pastes] = await Promise.all([\n breachedAccount(account, {\n apiKey,\n domain,\n truncate,\n baseUrl,\n timeoutMs,\n userAgent,\n }),\n // This email regex is garbage but it seems to be what the API uses:\n /^.+@.+$/.test(account)\n ? pasteAccount(account, { apiKey, baseUrl, timeoutMs, userAgent })\n : null,\n ]);\n\n return { breaches, pastes };\n}\n","import type { SubscriptionStatus } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * An object representing the status of your HIBP subscription.\n *\n * @typedef {object} SubscriptionStatus\n * @property {string} SubscriptionName\n * @property {string} Description\n * @property {string} SubscribedUntil\n * @property {number} Rpm\n * @property {number} DomainSearchMaxBreachedAccounts\n */\n\n/**\n * Fetches the current status of your HIBP subscription (API key).\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `subscription/status` endpoint.\n * The `apiKey` option here is not explicitly required, but direct requests made\n * without it will fail (unless you specify a `baseUrl` to a proxy that inserts\n * a valid API key on your behalf).\n *\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<SubscriptionStatus>} a Promise which resolves to a\n * subscription status object, or rejects with an Error\n * @example\n * try {\n * const data = await subscriptionStatus({ apiKey: \"my-api-key\" });\n * // ...\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await subscriptionStatus({\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * });\n * // ...\n * } catch (err) {\n * // ...\n * }\n */\nexport async function subscriptionStatus(\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n) {\n const endpoint = '/subscription/status';\n\n return fetchFromApi(endpoint, options) as Promise<SubscriptionStatus>;\n}\n","/* eslint-disable global-require */\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unnecessary-condition */\n\n// This can probably be removed in favor of Node's native fetch once we drop\n// support for v18. https://x.com/ebey_jacob/status/1709975146939973909?s=20\n\n/* c8 ignore start */\nexport function installUndiciOnNode18() {\n if (\n typeof process !== 'undefined' &&\n process.versions?.node?.startsWith('18.')\n ) {\n const {\n File: UndiciFile,\n fetch: undiciFetch,\n FormData: UndiciFormData,\n Headers: UndiciHeaders,\n Request: UndiciRequest,\n Response: UndiciResponse,\n } = require('undici');\n global.File = UndiciFile as unknown as typeof File;\n global.Headers = UndiciHeaders;\n global.Request = UndiciRequest;\n global.Response = UndiciResponse;\n global.fetch = undiciFetch;\n global.FormData = UndiciFormData;\n }\n}\n/* c8 ignore stop */\n","/**\n * Known potential responses from the remote API.\n *\n * Unfortunately, the API does not send a decent human-readable message back\n * with each response, but they are documented on the website:\n * https://haveibeenpwned.com/api/v3#ResponseCodes\n *\n * These objects simply provide a mapping between the HTTP response status code\n * and the corresponding human-readable message so we can throw a more\n * descriptive error for the consumer. (They are also leveraged in our tests.)\n */\n\nimport type { ResponseBody } from './types.js';\n\n/** @internal */\nexport interface HaveIBeenPwnedApiResponse {\n headers: Map<string, string>;\n status: number;\n statusText?: string;\n body?: ResponseBody;\n}\n\nconst emptyHeaders = new Map<string, string>();\n\n/** @internal */\nexport const BAD_REQUEST: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 400,\n statusText:\n 'Bad request — the account does not comply with an acceptable format.',\n};\n\n/**\n * This response has unique behavior. For some reason, the API includes an\n * object in the response body for this one, containing a human-readable\n * message. Manually populating the message here purely for use in tests.\n *\n * @internal\n */\nexport const UNAUTHORIZED: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 401,\n body: {\n statusCode: 401,\n message: 'Access denied due to missing hibp-api-key.',\n },\n};\n\n/** @internal */\nexport const FORBIDDEN: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 403,\n statusText: 'Forbidden - access denied.',\n};\n\n/** @internal */\nexport const BLOCKED: HaveIBeenPwnedApiResponse = {\n headers: new Map([['cf-ray', 'someRayId']]),\n status: 403,\n};\n\n/** @internal */\nexport const NOT_FOUND: HaveIBeenPwnedApiResponse = {\n headers: emptyHeaders,\n status: 404,\n};\n\n/**\n * This response has unique behavior. For some reason, the API includes an\n * object in the response body for this one, containing a human-readable\n * message. Manually populating the message here purely for use in tests.\n *\n * @internal\n */\nexport const TOO_MANY_REQUESTS: HaveIBeenPwnedApiResponse = {\n headers: new Map([['retry-after', '2']]),\n status: 429,\n body: {\n statusCode: 429,\n message: 'Rate limit is exceeded. Try again in 2 seconds.',\n },\n};\n","import { name, version } from '../../../package.json';\nimport { installUndiciOnNode18 } from '../fetch-polyfill.js';\nimport {\n BAD_REQUEST,\n UNAUTHORIZED,\n FORBIDDEN,\n NOT_FOUND,\n TOO_MANY_REQUESTS,\n} from './responses.js';\nimport type { ApiData, ErrorData } from './types.js';\n\ninstallUndiciOnNode18();\n\n/**\n * Custom error thrown when the haveibeenpwned.com API responds with 429 Too\n * Many Requests. See the `retryAfterSeconds` property for the number of seconds\n * to wait before attempting the request again.\n *\n * @see https://haveibeenpwned.com/API/v3#RateLimiting\n */\nexport class RateLimitError extends Error {\n /**\n * The number of seconds to wait before attempting the request again. May be\n * `undefined` if the API does not provide a `retry-after` header, but this\n * should never happen.\n */\n public retryAfterSeconds: number | undefined;\n\n constructor(\n retryAfter: ReturnType<Headers['get']>,\n message: string | undefined,\n options?: ErrorOptions,\n ) {\n super(message, options);\n this.name = this.constructor.name;\n this.retryAfterSeconds =\n typeof retryAfter === 'string'\n ? Number.parseInt(retryAfter, 10) /* c8 ignore start */\n : undefined; /* c8 ignore stop */\n }\n}\n\nfunction blockedWithRayId(rayId: string) {\n return `Request blocked, contact haveibeenpwned.com if this continues (Ray ID: ${rayId})`;\n}\n\n/**\n * Fetches data from the supplied API endpoint.\n *\n * HTTP status code 200 returns an Object (data found).\n * HTTP status code 404 returns null (no data found).\n * HTTP status code 400 throws an Error (bad request).\n * HTTP status code 401 throws an Error (unauthorized).\n * HTTP status code 403 throws an Error (forbidden).\n * HTTP status code 429 throws an Error (too many requests).\n *\n * @internal\n * @private\n * @param {string} endpoint the API endpoint to query\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {Promise<ApiData>} a Promise which resolves to the data resulting\n * from the query (or null for 404 Not Found responses), or rejects with an\n * Error\n */\nexport async function fetchFromApi(\n endpoint: string,\n options: {\n apiKey?: string;\n baseUrl?: string;\n timeoutMs?: number;\n userAgent?: string;\n } = {},\n): Promise<ApiData> {\n const {\n apiKey,\n baseUrl = 'https://haveibeenpwned.com/api/v3',\n timeoutMs,\n userAgent,\n } = options;\n const headers: Record<string, string> = {};\n\n if (apiKey) {\n headers['HIBP-API-Key'] = apiKey;\n }\n\n if (userAgent) {\n headers['User-Agent'] = userAgent;\n }\n\n // Provide a default User-Agent when running outside the browser\n if (!userAgent && typeof navigator === 'undefined') {\n headers['User-Agent'] = `${name} ${version}`;\n }\n\n const config: RequestInit = {\n headers,\n ...(timeoutMs ? { signal: AbortSignal.timeout(timeoutMs) } : {}),\n };\n const url = `${baseUrl.replace(/\\/$/g, '')}${endpoint}`;\n const response = await fetch(url, config);\n\n if (response.ok) return response.json() as Promise<ApiData>;\n\n switch (response.status) {\n case BAD_REQUEST.status: {\n throw new Error(BAD_REQUEST.statusText);\n }\n case UNAUTHORIZED.status: {\n const body = (await response.json()) as unknown as ErrorData;\n throw new Error(body.message);\n }\n case FORBIDDEN.status: {\n const rayId = response.headers.get('cf-ray');\n if (rayId) throw new Error(blockedWithRayId(rayId));\n throw new Error(FORBIDDEN.statusText);\n }\n case NOT_FOUND.status: {\n return null;\n }\n case TOO_MANY_REQUESTS.status: {\n const body = (await response.json()) as unknown as ErrorData;\n const retryAfter = response.headers.get('retry-after');\n throw new RateLimitError(retryAfter, body.message);\n }\n default: {\n throw new Error(response.statusText);\n }\n }\n}\n","import type { Breach } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * Fetches breach data for a specific account.\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `breachedaccount` endpoint. The\n * `apiKey` option here is not explicitly required, but direct requests made\n * without it will fail (unless you specify a `baseUrl` to a proxy that inserts\n * a valid API key on your behalf).\n *\n * @param {string} account a username or email address\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.domain] a domain by which to filter the results\n * (default: all domains)\n * @param {boolean} [options.includeUnverified] include \"unverified\" breaches in\n * the results (default: true)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {boolean} [options.truncate] truncate the results to only include\n * the name of each breach (default: true)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<Breach[]> | Promise<null>)} a Promise which resolves to an\n * array of breach objects (or null if no breaches were found), or rejects with\n * an Error\n * @example\n * try {\n * const data = await breachedAccount(\"foo\", { apiKey: \"my-api-key\" });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await breachedAccount(\"bar\", {\n * includeUnverified: false,\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await breachedAccount(\"baz\", {\n * apiKey: \"my-api-key\",\n * domain: \"adobe.com\",\n * truncate: false,\n * userAgent: \"my-app 1.0\",\n * });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function breachedAccount(\n account: string,\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a domain by which to filter the results (default: all domains)\n */\n domain?: string;\n /**\n * include \"unverified\" breaches in the results (default: true)\n */\n includeUnverified?: boolean;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * truncate the results to only include the name of each breach (default:\n * true)\n */\n truncate?: boolean;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Breach[] | null> {\n const {\n apiKey,\n domain,\n includeUnverified = true,\n timeoutMs,\n truncate = true,\n baseUrl,\n userAgent,\n } = options;\n const endpoint = `/breachedaccount/${encodeURIComponent(account)}?`;\n const params: string[] = [];\n\n if (domain) {\n params.push(`domain=${encodeURIComponent(domain)}`);\n }\n\n if (!includeUnverified) {\n params.push('includeUnverified=false');\n }\n\n if (!truncate) {\n params.push('truncateResponse=false');\n }\n\n return fetchFromApi(`${endpoint}${params.join('&')}`, {\n apiKey,\n baseUrl,\n timeoutMs,\n userAgent,\n }) as Promise<Breach[] | null>;\n}\n","import type { Paste } from './api/haveibeenpwned/types.js';\nimport { fetchFromApi } from './api/haveibeenpwned/fetch-from-api.js';\n\n/**\n * An object representing a paste.\n *\n * @typedef {object} Paste\n * @property {string} Id\n * @property {string} Source\n * @property {string} Title\n * @property {string} Date\n * @property {number} EmailCount\n */\n\n/**\n * Fetches paste data for a specific account (email address).\n *\n * 🔑 `haveibeenpwned.com` requires an API key from\n * https://haveibeenpwned.com/API/Key for the `pasteaccount` endpoint. The\n * `apiKey` option here is not explicitly required, but direct requests made\n * without it will fail (unless you specify a `baseUrl` to a proxy that inserts\n * a valid API key on your behalf).\n *\n * @param {string} email the email address to query\n * @param {object} [options] a configuration object\n * @param {string} [options.apiKey] an API key from\n * https://haveibeenpwned.com/API/Key (default: undefined)\n * @param {string} [options.baseUrl] a custom base URL for the\n * haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @returns {(Promise<Paste[]> | Promise<null>)} a Promise which resolves to an\n * array of paste objects (or null if no pastes were found), or rejects with an\n * Error\n * @example\n * try {\n * const data = await pasteAccount(\"foo@bar.com\", { apiKey: \"my-api-key\" });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n * @example\n * try {\n * const data = await pasteAccount(\"foo@bar.com\", {\n * baseUrl: \"https://my-hibp-proxy:8080\",\n * });\n * if (data) {\n * // ...\n * } else {\n * // ...\n * }\n * } catch (err) {\n * // ...\n * }\n */\nexport function pasteAccount(\n email: string,\n options: {\n /**\n * an API key from https://haveibeenpwned.com/API/Key (default: undefined)\n */\n apiKey?: string;\n /**\n * a custom base URL for the haveibeenpwned.com API endpoints (default:\n * `https://haveibeenpwned.com/api/v3`)\n */\n baseUrl?: string;\n /**\n * timeout for the request in milliseconds (default: none)\n */\n timeoutMs?: number;\n /**\n * a custom string to send as the User-Agent field in the request headers\n * (default: `hibp <version>`)\n */\n userAgent?: string;\n } = {},\n): Promise<Paste[] | null> {\n return fetchFromApi(\n `/pasteaccount/${encodeURIComponent(email)}`,\n options,\n ) as Promise<Paste[] | null>;\n}\n","/**\n * A JavaScript implementation of the SHA family of hashes - defined in FIPS PUB 180-4, FIPS PUB 202,\n * and SP 800-185 - as well as the corresponding HMAC implementation as defined in FIPS PUB 198-1.\n *\n * Copyright 2008-2023 Brian Turek, 1998-2009 Paul Johnston & Contributors\n * Distributed under the BSD License\n * See http://caligatio.github.com/jsSHA/ for more information\n */\nconst t=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",r=\"ARRAYBUFFER not supported by this environment\",n=\"UINT8ARRAY not supported by this environment\";function i(t,r,n,i){let e,s,o;const h=r||[0],u=(n=n||0)>>>3,f=-1===i?3:0;for(e=0;e<t.length;e+=1)o=e+u,s=o>>>2,h.length<=s&&h.push(0),h[s]|=t[e]<<8*(f+i*(o%4));return{value:h,binLen:8*t.length+n}}function e(e,s,o){switch(s){case\"UTF8\":case\"UTF16BE\":case\"UTF16LE\":break;default:throw new Error(\"encoding must be UTF8, UTF16BE, or UTF16LE\")}switch(e){case\"HEX\":return function(t,r,n){return function(t,r,n,i){let e,s,o,h;if(0!=t.length%2)throw new Error(\"String of HEX type must be in byte increments\");const u=r||[0],f=(n=n||0)>>>3,c=-1===i?3:0;for(e=0;e<t.length;e+=2){if(s=parseInt(t.substr(e,2),16),isNaN(s))throw new Error(\"String of HEX type contains invalid characters\");for(h=(e>>>1)+f,o=h>>>2;u.length<=o;)u.push(0);u[o]|=s<<8*(c+i*(h%4))}return{value:u,binLen:4*t.length+n}}(t,r,n,o)};case\"TEXT\":return function(t,r,n){return function(t,r,n,i,e){let s,o,h,u,f,c,a,w,E=0;const l=n||[0],A=(i=i||0)>>>3;if(\"UTF8\"===r)for(a=-1===e?3:0,h=0;h<t.length;h+=1)for(s=t.charCodeAt(h),o=[],128>s?o.push(s):2048>s?(o.push(192|s>>>6),o.push(128|63&s)):55296>s||57344<=s?o.push(224|s>>>12,128|s>>>6&63,128|63&s):(h+=1,s=65536+((1023&s)<<10|1023&t.charCodeAt(h)),o.push(240|s>>>18,128|s>>>12&63,128|s>>>6&63,128|63&s)),u=0;u<o.length;u+=1){for(c=E+A,f=c>>>2;l.length<=f;)l.push(0);l[f]|=o[u]<<8*(a+e*(c%4)),E+=1}else for(a=-1===e?2:0,w=\"UTF16LE\"===r&&1!==e||\"UTF16LE\"!==r&&1===e,h=0;h<t.length;h+=1){for(s=t.charCodeAt(h),!0===w&&(u=255&s,s=u<<8|s>>>8),c=E+A,f=c>>>2;l.length<=f;)l.push(0);l[f]|=s<<8*(a+e*(c%4)),E+=2}return{value:l,binLen:8*E+i}}(t,s,r,n,o)};case\"B64\":return function(r,n,i){return function(r,n,i,e){let s,o,h,u,f,c,a,w=0;const E=n||[0],l=(i=i||0)>>>3,A=-1===e?3:0,p=r.indexOf(\"=\");if(-1===r.search(/^[a-zA-Z0-9=+/]+$/))throw new Error(\"Invalid character in base-64 string\");if(r=r.replace(/=/g,\"\"),-1!==p&&p<r.length)throw new Error(\"Invalid '=' found in base-64 string\");for(o=0;o<r.length;o+=4){for(f=r.substr(o,4),u=0,h=0;h<f.length;h+=1)s=t.indexOf(f.charAt(h)),u|=s<<18-6*h;for(h=0;h<f.length-1;h+=1){for(a=w+l,c=a>>>2;E.length<=c;)E.push(0);E[c]|=(u>>>16-8*h&255)<<8*(A+e*(a%4)),w+=1}}return{value:E,binLen:8*w+i}}(r,n,i,o)};case\"BYTES\":return function(t,r,n){return function(t,r,n,i){let e,s,o,h;const u=r||[0],f=(n=n||0)>>>3,c=-1===i?3:0;for(s=0;s<t.length;s+=1)e=t.charCodeAt(s),h=s+f,o=h>>>2,u.length<=o&&u.push(0),u[o]|=e<<8*(c+i*(h%4));return{value:u,binLen:8*t.length+n}}(t,r,n,o)};case\"ARRAYBUFFER\":try{new ArrayBuffer(0)}catch(t){throw new Error(r)}return function(t,r,n){return function(t,r,n,e){return i(new Uint8Array(t),r,n,e)}(t,r,n,o)};case\"UINT8ARRAY\":try{new Uint8Array(0)}catch(t){throw new Error(n)}return function(t,r,n){return i(t,r,n,o)};default:throw new Error(\"format must be HEX, TEXT, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY\")}}function s(i,e,s,o){switch(i){case\"HEX\":return function(t){return function(t,r,n,i){const e=\"0123456789abcdef\";let s,o,h=\"\";const u=r/8,f=-1===n?3:0;for(s=0;s<u;s+=1)o=t[s>>>2]>>>8*(f+n*(s%4)),h+=e.charAt(o>>>4&15)+e.charAt(15&o);return i.outputUpper?h.toUpperCase():h}(t,e,s,o)};case\"B64\":return function(r){return function(r,n,i,e){let s,o,h,u,f,c=\"\";const a=n/8,w=-1===i?3:0;for(s=0;s<a;s+=3)for(u=s+1<a?r[s+1>>>2]:0,f=s+2<a?r[s+2>>>2]:0,h=(r[s>>>2]>>>8*(w+i*(s%4))&255)<<16|(u>>>8*(w+i*((s+1)%4))&255)<<8|f>>>8*(w+i*((s+2)%4))&255,o=0;o<4;o+=1)c+=8*s+6*o<=n?t.charAt(h>>>6*(3-o)&63):e.b64Pad;return c}(r,e,s,o)};case\"BYTES\":return function(t){return function(t,r,n){let i,e,s=\"\";const o=r/8,h=-1===n?3:0;for(i=0;i<o;i+=1)e=t[i>>>2]>>>8*(h+n*(i%4))&255,s+=String.fromCharCode(e);return s}(t,e,s)};case\"ARRAYBUFFER\":try{new ArrayBuffer(0)}catch(t){throw new Error(r)}return function(t){return function(t,r,n){let i;const e=r/8,s=new ArrayBuffer(e),o=new Uint8Array(s),h=-1===n?3:0;for(i=0;i<e;i+=1)o[i]=t[i>>>2]>>>8*(h+n*(i%4))&255;return s}(t,e,s)};case\"UINT8ARRAY\":try{new Uint8Array(0)}catch(t){throw new Error(n)}return function(t){return function(t,r,n){let i;const e=r/8,s=-1===n?3:0,o=new Uint8Array(e);for(i=0;i<e;i+=1)o[i]=t[i>>>2]>>>8*(s+n*(i%4))&255;return o}(t,e,s)};default:throw new Error(\"format must be HEX, B64, BYTES, ARRAYBUFFER, or UINT8ARRAY\")}}function o(t){const r={outputUpper:!1,b64Pad:\"=\",outputLen:-1},n=t||{},i=\"Output length must be a multiple of 8\";if(r.outputUpper=n.outputUpper||!1,n.b64Pad&&(r.b64Pad=n.b64Pad),n.outputLen){if(n.outputLen%8!=0)throw new Error(i);r.outputLen=n.outputLen}else if(n.shakeLen){if(n.shakeLen%8!=0)throw new Error(i);r.outputLen=n.shakeLen}if(\"boolean\"!=typeof r.outputUpper)throw new Error(\"Invalid outputUpper formatting option\");if(\"string\"!=typeof r.b64Pad)throw new Error(\"Invalid b64Pad formatting option\");return r}class h{constructor(t,r,n){const i=n||{};if(this.t=r,this.i=i.encoding||\"UTF8\",this.numRounds=i.numRounds||1,isNaN(this.numRounds)||this.numRounds!==parseInt(this.numRounds,10)||1>this.numRounds)throw new Error(\"numRounds must a integer >= 1\");this.o=t,this.h=[],this.u=0,this.l=!1,this.A=0,this.p=!1,this.U=[],this.R=[]}update(t){let r,n=0;const i=this.T>>>5,e=this.F(t,this.h,this.u),s=e.binLen,o=e.value,h=s>>>5;for(r=0;r<h;r+=i)n+this.T<=s&&(this.m=this.g(o.slice(r,r+i),this.m),n+=this.T);return this.A+=n,this.h=o.slice(n>>>5),this.u=s%this.T,this.l=!0,this}getHash(t,r){let n,i,e=this.B;const h=o(r);if(this.v){if(-1===h.outputLen)throw new Error(\"Output length must be specified in options\");e=h.outputLen}const u=s(t,e,this.H,h);if(this.p&&this.C)return u(this.C(h));for(i=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),e),n=1;n<this.numRounds;n+=1)this.v&&e%32!=0&&(i[i.length-1]&=16777215>>>24-e%32),i=this.Y(i,e,0,this.L(this.o),e);return u(i)}setHMACKey(t,r,n){if(!this.M)throw new Error(\"Variant does not support HMAC\");if(this.l)throw new Error(\"Cannot set MAC key after calling update\");const i=e(r,(n||{}).encoding||\"UTF8\",this.H);this.N(i(t))}N(t){const r=this.T>>>3,n=r/4-1;let i;if(1!==this.numRounds)throw new Error(\"Cannot set numRounds with MAC\");if(this.p)throw new Error(\"MAC key already set\");for(r<t.binLen/8&&(t.value=this.Y(t.value,t.binLen,0,this.L(this.o),this.B));t.value.length<=n;)t.value.push(0);for(i=0;i<=n;i+=1)this.U[i]=909522486^t.value[i],this.R[i]=1549556828^t.value[i];this.m=this.g(this.U,this.m),this.A=this.T,this.p=!0}getHMAC(t,r){const n=o(r);return s(t,this.B,this.H,n)(this.S())}S(){let t;if(!this.p)throw new Error(\"Cannot call getHMAC without first setting MAC key\");const r=this.Y(this.h.slice(),this.u,this.A,this.I(this.m),this.B);return t=this.g(this.R,this.L(this.o)),t=this.Y(r,this.B,this.T,t,this.B),t}}function u(t,r){return t<<r|t>>>32-r}function f(t,r,n){return t^r^n}function c(t,r,n){return t&r^t&n^r&n}function a(t,r){const n=(65535&t)+(65535&r);return(65535&(t>>>16)+(r>>>16)+(n>>>16))<<16|65535&n}function w(t,r,n,i,e){const s=(65535&t)+(65535&r)+(65535&n)+(65535&i)+(65535&e);return(65535&(t>>>16)+(r>>>16)+(n>>>16)+(i>>>16)+(e>>>16)+(s>>>16))<<16|65535&s}function E(t){return[1732584193,4023233417,2562383102,271733878,3285377520]}function l(t,r){let n,i,e,s,o,h,E;const l=[];for(n=r[0],i=r[1],e=r[2],s=r[3],o=r[4],E=0;E<80;E+=1)l[E]=E<16?t[E]:u(l[E-3]^l[E-8]^l[E-14]^l[E-16],1),h=E<20?w(u(n,5),(A=i)&e^~A&s,o,1518500249,l[E]):E<40?w(u(n,5),f(i,e,s),o,1859775393,l[E]):E<60?w(u(n,5),c(i,e,s),o,2400959708,l[E]):w(u(n,5),f(i,e,s),o,3395469782,l[E]),o=s,s=e,e=u(i,30),i=n,n=h;var A;return r[0]=a(n,r[0]),r[1]=a(i,r[1]),r[2]=a(e,r[2]),r[3]=a(s,r[3]),r[4]=a(o,r[4]),r}function A(t,r,n,i){let e;const s=15+(r+65>>>9<<4),o=r+n;for(;t.length<=s;)t.push(0);for(t[r>>>5]|=128<<24-r%32,t[s]=4294967295&o,t[s-1]=o/4294967296|0,e=0;e<t.length;e+=16)i=l(t.slice(e,e+16),i);return i}class p extends h{constructor(t,r,n){if(\"SHA-1\"!==t)throw new Error(\"Chosen SHA variant is not supported\");super(t,r,n);const i=n||{};this.M=!0,this.C=this.S,this.H=-1,this.F=e(this.t,this.i,this.H),this.g=l,this.I=function(t){return t.slice()},this.L=E,this.Y=A,this.m=[1732584193,4023233417,2562383102,271733878,3285377520],this.T=512,this.B=160,this.v=!1,i.hmacKey&&this.N(function(t,r,n,i){const s=t+\" must include a value and format\";if(!r){if(!i)throw new Error(s);return i}if(void 0===r.value||!r.format)throw new Error(s);return e(r.format,r.encoding||\"UTF8\",n)(r.value)}(\"hmacKey\",i.hmacKey,this.H))}}export{p as default};\n","/**\n * Known potential responses from the remote API.\n *\n * https://haveibeenpwned.com/api/v3#PwnedPasswords\n *\n */\n\n/** @internal */\nexport interface PwnedPasswordsApiResponse {\n status: number;\n body?: string;\n}\n\n/** @internal */\nexport const BAD_REQUEST: PwnedPasswordsApiResponse = {\n status: 400,\n body: 'The hash prefix was not in a valid format',\n};\n","import { installUndiciOnNode18 } from '../fetch-polyfill.js';\nimport { BAD_REQUEST } from './responses.js';\n\ninstallUndiciOnNode18();\n\n/**\n * Fetches data from the supplied API endpoint.\n *\n * HTTP status code 200 returns plain text (data found).\n * HTTP status code 400 throws an Error (bad request).\n *\n * @internal\n * @private\n * @param {string} endpoint the API endpoint to query\n * @param {object} [options] a configuration object\n * @param {string} [options.baseUrl] a custom base URL for the\n * pwnedpasswords.com API endpoints (default: `https://api.pwnedpasswords.com`)\n * @param {number} [options.timeoutMs] timeout for the request in milliseconds\n * (default: none)\n * @param {string} [options.userAgent] a custom string to send as the User-Agent\n * field in the request headers (default: `hibp <version>`)\n * @param {boolean} [options.addPadding] ask the remote API to add padding to\n * the response to obscure the password prefix (default: `false`)\n * @param {'sha1' | 'ntlm'} [options.mode] return SHA-1 or NTLM hashes\n * (default: `sha1`)\n * @returns {Promise<string>} a Promise which resolves to the data resulting\n * from the query, or rejects with an Error\n */\nexport async function fetchFromApi(\n endpoint: string,\n options: {\n baseUrl?: string;\n timeoutMs?: number;\n userAgent?: string;\n addPadding?: boolean;\n mode?: 'sha1' | 'ntlm';\n } = {},\n): Promise<string> {\n const {\n baseUrl = 'https://api.pwnedpasswords.com',\n timeoutMs,\n userAgent,\n addPadding = false,\n mode = 'sha1',\n } = options;\n\n const config: RequestInit = {\n headers: {\n ...(userAgent ? { 'User-Agent': userAgent } : {}),\n ...(addPadding ? { 'Add-Padding': 'true' } : {}),\n },\n ...(timeoutMs ? { signal: AbortSignal.timeout(timeoutMs) } : {}),\n };\n const url = `${baseUrl.replace(/\\/$/g, '')}${endpoint}?mode=${mode}`;\n const response = await fetch(url, config);\n\n if (response.ok) return response.text();\n\n if (response.status === BAD_REQUEST.status) {\n const text = await response.text();\n throw new Error(text);\n }\n\n throw new Error(response.statusText);\n}\n"],"names":["breachName","options","fetchFromApi","concat","encodeURIComponent","arguments","length","undefined","domain","baseUrl","timeoutMs","userAgent","params","push","join","_x4","_pwnedPassword","apply","this","_x5","_search","_subscriptionStatus","installUndiciOnNode18","_process$versions","process","versions","node","startsWith","_require","require","undiciFetch","fetch","UndiciFormData","FormData","UndiciHeaders","Headers","UndiciRequest","Request","UndiciResponse","Response","global","File","emptyHeaders","Map","BAD_REQUEST","headers","status","statusText","UNAUTHORIZED","body","statusCode","message","FORBIDDEN","NOT_FOUND","TOO_MANY_REQUESTS","RateLimitError","_exports","_Error","retryAfter","_this","_classCallCheck","_defineProperty","_callSuper","name","constructor","retryAfterSeconds","Number","parseInt","_inherits","_createClass","_wrapNativeSuper","Error","blockedWithRayId","rayId","_x","_fetchFromApi$","_asyncToGenerator","_regeneratorRuntime","mark","_callee","endpoint","apiKey","_options$baseUrl","config","url","response","_body","_args","wrap","_context","prev","next","navigator","version","_objectSpread","signal","AbortSignal","timeout","replace","sent","ok","abrupt","json","t0","get","stop","breachedAccount","account","_options$includeUnver","includeUnverified","_options$truncate","truncate","pasteAccount","email","t","r","n","i","e","s","o","h","u","f","value","binLen","c","substr","isNaN","a","w","E","l","A","charCodeAt","p","indexOf","search","charAt","ArrayBuffer","Uint8Array","outputUpper","toUpperCase","b64Pad","String","fromCharCode","outputLen","shakeLen","encoding","numRounds","U","R","key","T","F","m","g","slice","getHash","B","v","H","C","Y","I","L","M","N","getHMAC","S","_h3","_this2","hmacKey","format","_x2","_fetchFromApi","_callee2","_options$baseUrl2","_options$addPadding","addPadding","_options$mode","mode","_args2","_context2","text","pwnedPasswordRange","_x3","_pwnedPasswordRange","_callee3","prefix","_options$addPadding2","_options$mode2","results","_args3","_context3","split","filter","Boolean","reduce","acc","row","_row$split2","_slicedToArray","_callee4","password","sha1","hash","suffix","_args4","_context4","JSSHA","update","_callee5","_options$truncate2","_yield$Promise$all2","_args5","_context5","Promise","all","test","breaches","pastes","_callee6","_args6","_context6"],"mappings":"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","x_google_ignoreList":[12]}
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
/* eslint-disable global-require */
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
5
5
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
6
|
+
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
|
6
7
|
// This can probably be removed in favor of Node's native fetch once we drop
|
|
7
8
|
// support for v18. https://x.com/ebey_jacob/status/1709975146939973909?s=20
|
|
8
9
|
/* c8 ignore start */
|
|
9
10
|
function installUndiciOnNode18() {
|
|
10
|
-
if (typeof process !== 'undefined' && process.versions
|
|
11
|
+
if (typeof process !== 'undefined' && process.versions?.node?.startsWith('18.')) {
|
|
11
12
|
const {
|
|
12
13
|
File: UndiciFile,
|
|
13
14
|
fetch: undiciFetch,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-polyfill.cjs","sources":["../../../src/api/fetch-polyfill.ts"],"sourcesContent":["/* eslint-disable global-require */\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n\n// This can probably be removed in favor of Node's native fetch once we drop\n// support for v18. https://x.com/ebey_jacob/status/1709975146939973909?s=20\n\n/* c8 ignore start */\nexport function installUndiciOnNode18() {\n if (\n typeof process !== 'undefined' &&\n process.versions
|
|
1
|
+
{"version":3,"file":"fetch-polyfill.cjs","sources":["../../../src/api/fetch-polyfill.ts"],"sourcesContent":["/* eslint-disable global-require */\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unnecessary-condition */\n\n// This can probably be removed in favor of Node's native fetch once we drop\n// support for v18. https://x.com/ebey_jacob/status/1709975146939973909?s=20\n\n/* c8 ignore start */\nexport function installUndiciOnNode18() {\n if (\n typeof process !== 'undefined' &&\n process.versions?.node?.startsWith('18.')\n ) {\n const {\n File: UndiciFile,\n fetch: undiciFetch,\n FormData: UndiciFormData,\n Headers: UndiciHeaders,\n Request: UndiciRequest,\n Response: UndiciResponse,\n } = require('undici');\n global.File = UndiciFile as unknown as typeof File;\n global.Headers = UndiciHeaders;\n global.Request = UndiciRequest;\n global.Response = UndiciResponse;\n global.fetch = undiciFetch;\n global.FormData = UndiciFormData;\n }\n}\n/* c8 ignore stop */\n"],"names":["installUndiciOnNode18","process","versions","node","startsWith","File","UndiciFile","fetch","undiciFetch","FormData","UndiciFormData","Headers","UndiciHeaders","Request","UndiciRequest","Response","UndiciResponse","require","global"],"mappings":";;AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;SACgBA,qBAAqBA,CAAA,EAAA;EACnC,IACE,OAAOC,OAAO,KAAK,WAAW,IAC9BA,OAAO,CAACC,QAAQ,EAAEC,IAAI,EAAEC,UAAU,CAAC,KAAK,CAAC,EACzC;IACA,MAAM;MACJC,IAAI,EAAEC,UAAU;MAChBC,KAAK,EAAEC,WAAW;MAClBC,QAAQ,EAAEC,cAAc;MACxBC,OAAO,EAAEC,aAAa;MACtBC,OAAO,EAAEC,aAAa;MACtBC,QAAQ,EAAEC;IAAc,CACzB,GAAGC,OAAO,CAAC,QAAQ,CAAC;IACrBC,MAAM,CAACb,IAAI,GAAGC,UAAoC;IAClDY,MAAM,CAACP,OAAO,GAAGC,aAAa;IAC9BM,MAAM,CAACL,OAAO,GAAGC,aAAa;IAC9BI,MAAM,CAACH,QAAQ,GAAGC,cAAc;IAChCE,MAAM,CAACX,KAAK,GAAGC,WAAW;IAC1BU,MAAM,CAACT,QAAQ,GAAGC,cAAc;EACjC;AACH;AACA;;"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/* eslint-disable global-require */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-unnecessary-condition */
|
|
4
5
|
// This can probably be removed in favor of Node's native fetch once we drop
|
|
5
6
|
// support for v18. https://x.com/ebey_jacob/status/1709975146939973909?s=20
|
|
6
7
|
/* c8 ignore start */
|
|
7
8
|
function installUndiciOnNode18() {
|
|
8
|
-
if (typeof process !== 'undefined' && process.versions
|
|
9
|
+
if (typeof process !== 'undefined' && process.versions?.node?.startsWith('18.')) {
|
|
9
10
|
const {
|
|
10
11
|
File: UndiciFile,
|
|
11
12
|
fetch: undiciFetch,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-polyfill.js","sources":["../../../src/api/fetch-polyfill.ts"],"sourcesContent":["/* eslint-disable global-require */\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n\n// This can probably be removed in favor of Node's native fetch once we drop\n// support for v18. https://x.com/ebey_jacob/status/1709975146939973909?s=20\n\n/* c8 ignore start */\nexport function installUndiciOnNode18() {\n if (\n typeof process !== 'undefined' &&\n process.versions
|
|
1
|
+
{"version":3,"file":"fetch-polyfill.js","sources":["../../../src/api/fetch-polyfill.ts"],"sourcesContent":["/* eslint-disable global-require */\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unnecessary-condition */\n\n// This can probably be removed in favor of Node's native fetch once we drop\n// support for v18. https://x.com/ebey_jacob/status/1709975146939973909?s=20\n\n/* c8 ignore start */\nexport function installUndiciOnNode18() {\n if (\n typeof process !== 'undefined' &&\n process.versions?.node?.startsWith('18.')\n ) {\n const {\n File: UndiciFile,\n fetch: undiciFetch,\n FormData: UndiciFormData,\n Headers: UndiciHeaders,\n Request: UndiciRequest,\n Response: UndiciResponse,\n } = require('undici');\n global.File = UndiciFile as unknown as typeof File;\n global.Headers = UndiciHeaders;\n global.Request = UndiciRequest;\n global.Response = UndiciResponse;\n global.fetch = undiciFetch;\n global.FormData = UndiciFormData;\n }\n}\n/* c8 ignore stop */\n"],"names":["installUndiciOnNode18","process","versions","node","startsWith","File","UndiciFile","fetch","undiciFetch","FormData","UndiciFormData","Headers","UndiciHeaders","Request","UndiciRequest","Response","UndiciResponse","require","global"],"mappings":"AAAA;AACA;AACA;AACA;AAEA;AACA;AAEA;SACgBA,qBAAqBA,CAAA,EAAA;EACnC,IACE,OAAOC,OAAO,KAAK,WAAW,IAC9BA,OAAO,CAACC,QAAQ,EAAEC,IAAI,EAAEC,UAAU,CAAC,KAAK,CAAC,EACzC;IACA,MAAM;MACJC,IAAI,EAAEC,UAAU;MAChBC,KAAK,EAAEC,WAAW;MAClBC,QAAQ,EAAEC,cAAc;MACxBC,OAAO,EAAEC,aAAa;MACtBC,OAAO,EAAEC,aAAa;MACtBC,QAAQ,EAAEC;IAAc,CACzB,GAAGC,OAAO,CAAC,QAAQ,CAAC;IACrBC,MAAM,CAACb,IAAI,GAAGC,UAAoC;IAClDY,MAAM,CAACP,OAAO,GAAGC,aAAa;IAC9BM,MAAM,CAACL,OAAO,GAAGC,aAAa;IAC9BI,MAAM,CAACH,QAAQ,GAAGC,cAAc;IAChCE,MAAM,CAACX,KAAK,GAAGC,WAAW;IAC1BU,MAAM,CAACT,QAAQ,GAAGC,cAAc;EACjC;AACH;AACA;;"}
|
package/dist/esm/package.json.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hibp",
|
|
3
|
-
"version": "14.1.
|
|
3
|
+
"version": "14.1.1",
|
|
4
4
|
"description": "An unofficial TypeScript SDK for the 'Have I been pwned?' service.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"haveibeenpwned",
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
"dts-bundle-generator": "9.5.1",
|
|
117
117
|
"eslint": "8.57.0",
|
|
118
118
|
"eslint-plugin-playwright": "1.6.0",
|
|
119
|
-
"eslint-plugin-wkovacs64": "16.
|
|
119
|
+
"eslint-plugin-wkovacs64": "16.2.0",
|
|
120
120
|
"glob": "10.3.12",
|
|
121
121
|
"jsdoc-babel": "0.5.0",
|
|
122
122
|
"jsdoc-to-markdown": "8.0.1",
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
"npm-run-all2": "6.1.2",
|
|
125
125
|
"prettier": "3.2.5",
|
|
126
126
|
"rimraf": "5.0.5",
|
|
127
|
-
"rollup": "4.17.
|
|
127
|
+
"rollup": "4.17.1",
|
|
128
128
|
"serve": "14.2.3",
|
|
129
129
|
"tslib": "2.6.2",
|
|
130
130
|
"typescript": "5.4.5",
|