@wrongstack/webui-hq 0.306.4 → 0.307.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.
Files changed (30) hide show
  1. package/dist/assets/{alerts-C0ahAgyj.js → alerts-C-4owVcM.js} +1 -1
  2. package/dist/assets/{brain-DxZxkdy0.js → brain-BUOCa96U.js} +1 -1
  3. package/dist/assets/cockpit-OP4yQwS4.js +1 -0
  4. package/dist/assets/{control-D4n1t2nX.js → control-C3SGEP-R.js} +1 -1
  5. package/dist/assets/{cost-qSQMT1ZD.js → cost-Cd0pDl0a.js} +1 -1
  6. package/dist/assets/fleet-map-CcRX7LX_.js +7 -0
  7. package/dist/assets/fleet-topology-cIT_bGay.js +16 -0
  8. package/dist/assets/{icons-C4ljWs50.js → icons-I81S_8cW.js} +1 -1
  9. package/dist/assets/index-CtnLdVpJ.js +2 -0
  10. package/dist/assets/kanban-BsCH5Io4.js +1 -0
  11. package/dist/assets/live-console-CLAhiqkJ.js +1 -0
  12. package/dist/assets/mailbox-6luloMZ5.js +1 -0
  13. package/dist/assets/{markdown--Y3iks7c.js → markdown-C4I0Caum.js} +9 -9
  14. package/dist/assets/{rolldown-runtime-QTnfLwEv.js → rolldown-runtime-hePW80VL.js} +1 -1
  15. package/dist/assets/{settings-CiwxymER.js → settings-eFYHpbjD.js} +4 -4
  16. package/dist/assets/trends-Cki-3d1n.js +1 -0
  17. package/dist/assets/{use-backfilled-events-B4G6jrJe.js → use-backfilled-events-BPn7tZun.js} +1 -1
  18. package/dist/assets/vendor-CWm0VQZ2.js +9 -0
  19. package/dist/assets/{worktree-CC8bd1Ev.js → worktree-CZndpeWB.js} +1 -1
  20. package/dist/index.html +5 -5
  21. package/package.json +13 -13
  22. package/dist/assets/cockpit-CnFi0HLk.js +0 -1
  23. package/dist/assets/fleet-map-CjeZ6E-P.js +0 -7
  24. package/dist/assets/fleet-topology-BcXKnYKF.js +0 -16
  25. package/dist/assets/index-Ch5wZYYG.js +0 -2
  26. package/dist/assets/kanban-CsIHI3Wr.js +0 -1
  27. package/dist/assets/live-console-CIxhBhTg.js +0 -1
  28. package/dist/assets/mailbox-DnJYghSf.js +0 -1
  29. package/dist/assets/trends-C8_-duaz.js +0 -1
  30. package/dist/assets/vendor-BwY1EM_9.js +0 -9
@@ -1 +1 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));export{s as n,l as r,o as t};
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));export{s as n,l as r,o as t};
@@ -1,8 +1,8 @@
1
- import{r as e,t}from"./rolldown-runtime-QTnfLwEv.js";import{Ct as n,D as r,I as i,U as a,W as o,Zt as s,et as c,h as l,m as u,p as d}from"./icons-C4ljWs50.js";import{i as f}from"./markdown--Y3iks7c.js";import{d as p,f as m,t as h}from"./index-Ch5wZYYG.js";var g=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),_=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),v=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),y=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),b=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),x=t((e=>{var t=_().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),S=t((e=>{var t=_().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),C=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),w=t((e=>{var t=v(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),T=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),E=t((e=>{var t=T();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),D=t(((e,t)=>{var n=E();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),O=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),k=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
2
- ]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^[0-9]+$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),A=t((e=>{var t=O(),n=k();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),j=t((e=>{var t=_(),n=w(),r=v(),i=A(),a=O(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<<t.getBCHDigit(n)-s;return e<<12|n}})),M=t((e=>{var t=_(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<<t.getBCHDigit(s)-i;return(o<<10|s)^r}})),N=t(((e,t)=>{var n=A();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),P=t(((e,t)=>{var n=A(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),F=t(((e,t)=>{var n=A();function r(e){this.mode=n.BYTE,typeof e==`string`?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)},t.exports=r})),I=t(((e,t)=>{var n=A(),r=_();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let n=r.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+`
1
+ import{r as e,t}from"./rolldown-runtime-hePW80VL.js";import{Ct as n,G as r,L as i,O as a,W as o,Zt as s,h as c,m as l,p as u,tt as d}from"./icons-I81S_8cW.js";import{i as f}from"./markdown-C4I0Caum.js";import{d as p,f as m,t as h}from"./index-CtnLdVpJ.js";var g=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),_=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),v=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),y=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),b=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),x=t((e=>{var t=_().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),S=t((e=>{var t=_().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),C=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),w=t((e=>{var t=v(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),T=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),E=t((e=>{var t=T();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),D=t(((e,t)=>{var n=E();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),O=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),k=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
2
+ ]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^[0-9]+$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),A=t((e=>{var t=O(),n=k();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),j=t((e=>{var t=_(),n=w(),r=v(),i=A(),a=O(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<<t.getBCHDigit(n)-s;return e<<12|n}})),M=t((e=>{var t=_(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<<t.getBCHDigit(s)-i;return(o<<10|s)^r}})),N=t(((e,t)=>{var n=A();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),P=t(((e,t)=>{var n=A(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),F=t(((e,t)=>{var n=A();function r(e){this.mode=n.BYTE,this.data=typeof e==`string`?new TextEncoder().encode(e):new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)},t.exports=r})),I=t(((e,t)=>{var n=A(),r=_();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let n=r.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+`
3
3
  Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),L=t(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),R=t((e=>{var t=A(),n=N(),r=P(),i=F(),a=I(),o=k(),s=_(),c=L();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function m(e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];switch(i.mode){case t.NUMERIC:n.push([i,{data:i.data,mode:t.ALPHANUMERIC,length:i.length},{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.ALPHANUMERIC:n.push([i,{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.KANJI:n.push([i,{data:i.data,mode:t.BYTE,length:l(i.data)}]);break;case t.BYTE:n.push([{data:i.data,mode:t.BYTE,length:l(i.data)}])}}return n}function h(e,n){let r={},i={start:{}},a=[`start`];for(let o=0;o<e.length;o++){let s=e[o],c=[];for(let e=0;e<s.length;e++){let l=s[e],u=``+o+e;c.push(u),r[u]={node:l,lastCount:0},i[u]={};for(let e=0;e<a.length;e++){let o=a[e];r[o]&&r[o].node.mode===l.mode?(i[o][u]=f(r[o].lastCount+l.length,l.mode)-f(r[o].lastCount,l.mode),r[o].lastCount+=l.length):(r[o]&&(r[o].lastCount=l.length),i[o][u]=f(l.length,l.mode)+4+t.getCharCountIndicator(l.mode,n))}}a=c}for(let e=0;e<a.length;e++)i[a[e]].end=0;return{map:i,table:r}}function g(e,o){let c,l=t.getBestModeForData(e);if(c=t.from(o,l),c!==t.BYTE&&c.bit<l.bit)throw Error(`"`+e+`" cannot be encoded with mode `+t.toString(c)+`.
4
4
  Suggested mode is: `+t.toString(l));switch(c===t.KANJI&&!s.isKanjiModeEnabled()&&(c=t.BYTE),c){case t.NUMERIC:return new n(e);case t.ALPHANUMERIC:return new r(e);case t.KANJI:return new a(e);case t.BYTE:return new i(e)}}e.fromArray=function(e){return e.reduce(function(e,t){return typeof t==`string`?e.push(g(t,null)):t.data&&e.push(g(t.data,t.mode)),e},[])},e.fromString=function(t,n){let r=h(m(d(t,s.isKanjiModeEnabled())),n),i=c.find_path(r.map,`start`,`end`),a=[];for(let e=1;e<i.length-1;e++)a.push(r.table[i[e]].node);return e.fromArray(p(a))},e.rawSplit=function(t){return e.fromArray(d(t,s.isKanjiModeEnabled()))}})),z=t((e=>{var t=_(),n=v(),r=y(),i=b(),a=x(),o=S(),s=C(),c=w(),l=D(),u=j(),d=M(),f=A(),p=R();function m(e,t){let n=e.size,r=o.getPositions(t);for(let t=0;t<r.length;t++){let i=r[t][0],a=r[t][1];for(let t=-1;t<=7;t++)if(!(i+t<=-1||n<=i+t))for(let r=-1;r<=7;r++)a+r<=-1||n<=a+r||(t>=0&&t<=6&&(r===0||r===6)||r>=0&&r<=6&&(t===0||t===6)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,a+r,!0,!0):e.set(i+t,a+r,!1,!0))}}function h(e){let t=e.size;for(let n=8;n<t-8;n++){let t=n%2==0;e.set(n,6,t,!0),e.set(6,n,t,!0)}}function g(e,t){let n=a.getPositions(t);for(let t=0;t<n.length;t++){let r=n[t][0],i=n[t][1];for(let t=-2;t<=2;t++)for(let n=-2;n<=2;n++)t===-2||t===2||n===-2||n===2||t===0&&n===0?e.set(r+t,i+n,!0,!0):e.set(r+t,i+n,!1,!0)}}function T(e,t){let n=e.size,r=u.getEncodedBits(t),i,a,o;for(let t=0;t<18;t++)i=Math.floor(t/3),a=t%3+n-8-3,o=(r>>t&1)==1,e.set(i,a,o,!0),e.set(a,i,o,!0)}function E(e,t,n){let r=e.size,i=d.getEncodedBits(t,n),a,o;for(a=0;a<15;a++)o=(i>>a&1)==1,a<6?e.set(a,8,o,!0):a<8?e.set(a+1,8,o,!0):e.set(r-15+a,8,o,!0),a<8?e.set(8,r-a-1,o,!0):a<9?e.set(8,15-a-1+1,o,!0):e.set(8,15-a-1,o,!0);e.set(r-8,8,1,!0)}function O(e,t){let n=e.size,r=-1,i=n-1,a=7,o=0;for(let s=n-1;s>0;s-=2)for(s===6&&s--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,s-n)){let r=!1;o<t.length&&(r=(t[o]>>>a&1)==1),e.set(i,s-n,r),a--,a===-1&&(o++,a=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}function k(e,n,i){let a=new r;i.forEach(function(t){a.put(t.mode.bit,4),a.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(a)});let o=(t.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n))*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(0);let s=(o-a.getLengthInBits())/8;for(let e=0;e<s;e++)a.put(e%2?17:236,8);return N(a,e,n)}function N(e,n,r){let i=t.getSymbolTotalCodewords(n),a=i-c.getTotalCodewordsCount(n,r),o=c.getBlocksCount(n,r),s=o-i%o,u=Math.floor(i/o),d=Math.floor(a/o),f=d+1,p=u-d,m=new l(p),h=0,g=Array(o),_=Array(o),v=0,y=new Uint8Array(e.buffer);for(let e=0;e<o;e++){let t=e<s?d:f;g[e]=y.slice(h,h+t),_[e]=m.encode(g[e]),h+=t,v=Math.max(v,t)}let b=new Uint8Array(i),x=0,S,C;for(S=0;S<v;S++)for(C=0;C<o;C++)S<g[C].length&&(b[x++]=g[C][S]);for(S=0;S<p;S++)for(C=0;C<o;C++)b[x++]=_[C][S];return b}function P(e,n,r,a){let o;if(Array.isArray(e))o=p.fromArray(e);else if(typeof e==`string`){let t=n;if(!t){let n=p.rawSplit(e);t=u.getBestVersionForData(n,r)}o=p.fromString(e,t||40)}else throw Error(`Invalid data`);let c=u.getBestVersionForData(o,r);if(!c)throw Error(`The amount of data is too big to be stored in a QR Code`);if(!n)n=c;else if(n<c)throw Error(`
5
5
  The chosen QR Code version cannot contain this amount of data.
6
6
  Minimum version required to store current data is: `+c+`.
7
- `);let l=k(n,r,o),d=new i(t.getSymbolSize(n));return m(d,n),h(d),g(d,n),E(d,r,0),n>=7&&T(d,n),O(d,l),isNaN(a)&&(a=s.getBestMask(d,E.bind(null,d,r))),s.applyMask(a,d),E(d,r,a),{modules:d,version:n,errorCorrectionLevel:r,maskPattern:a,segments:o}}e.create=function(e,r){if(e===void 0||e===``)throw Error(`No input text`);let i=n.M,a,o;return r!==void 0&&(i=n.from(r.errorCorrectionLevel,n.M),a=u.from(r.version),o=s.from(r.maskPattern),r.toSJISFunc&&t.setToSJISFunction(r.toSJISFunc)),P(e,a,i,o)}})),B=t((e=>{function t(e){if(typeof e==`number`&&(e=e.toString()),typeof e!=`string`)throw Error(`Color should be defined as hex string`);let t=e.slice().replace(`#`,``).split(``);if(t.length<3||t.length===5||t.length>8)throw Error(`Invalid hex color: `+e);(t.length===3||t.length===4)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),t.length===6&&t.push(`F`,`F`);let n=parseInt(t.join(``),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:`#`+t.slice(0,6).join(``)}}e.getOptions=function(e){e||={},e.color||={};let n=e.margin===void 0||e.margin===null||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:r,scale:r?4:i,margin:n,color:{dark:t(e.color.dark||`#000000ff`),light:t(e.color.light||`#ffffffff`)},type:e.type,rendererOpts:e.rendererOpts||{}}},e.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale},e.getImageWidth=function(t,n){let r=e.getScale(t,n);return Math.floor((t+n.margin*2)*r)},e.qrToImageData=function(t,n,r){let i=n.modules.size,a=n.modules.data,o=e.getScale(i,r),s=Math.floor((i+r.margin*2)*o),c=r.margin*o,l=[r.color.light,r.color.dark];for(let e=0;e<s;e++)for(let n=0;n<s;n++){let u=(e*s+n)*4,d=r.color.light;if(e>=c&&n>=c&&e<s-c&&n<s-c){let t=Math.floor((e-c)/o),r=Math.floor((n-c)/o);d=l[+!!a[t*i+r]]}t[u++]=d.r,t[u++]=d.g,t[u++]=d.b,t[u]=d.a}}})),V=t((e=>{var t=B();function n(e,t,n){e.clearRect(0,0,t.width,t.height),t.style||={},t.height=n,t.width=n,t.style.height=n+`px`,t.style.width=n+`px`}function r(){try{return document.createElement(`canvas`)}catch{throw Error(`You need to specify a canvas element`)}}e.render=function(e,i,a){let o=a,s=i;o===void 0&&(!i||!i.getContext)&&(o=i,i=void 0),i||(s=r()),o=t.getOptions(o);let c=t.getImageWidth(e.modules.size,o),l=s.getContext(`2d`),u=l.createImageData(c,c);return t.qrToImageData(u.data,e,o),n(l,s,c),l.putImageData(u,0,0),s},e.renderToDataURL=function(t,n,r){let i=r;i===void 0&&(!n||!n.getContext)&&(i=n,n=void 0),i||={};let a=e.render(t,n,i),o=i.type||`image/png`,s=i.rendererOpts||{};return a.toDataURL(o,s.quality)}})),H=t((e=>{var t=B();function n(e,t){let n=e.a/255,r=t+`="`+e.hex+`"`;return n<1?r+` `+t+`-opacity="`+n.toFixed(2).slice(1)+`"`:r}function r(e,t,n){let r=e+t;return n!==void 0&&(r+=` `+n),r}function i(e,t,n){let i=``,a=0,o=!1,s=0;for(let c=0;c<e.length;c++){let l=Math.floor(c%t),u=Math.floor(c/t);!l&&!o&&(o=!0),e[c]?(s++,c>0&&l>0&&e[c-1]||(i+=o?r(`M`,l+n,.5+u+n):r(`m`,a,0),a=0,o=!1),l+1<t&&e[c+1]||(i+=r(`h`,s),s=0)):a++}return i}e.render=function(e,r,a){let o=t.getOptions(r),s=e.modules.size,c=e.modules.data,l=s+o.margin*2,u=o.color.light.a?`<path `+n(o.color.light,`fill`)+` d="M0 0h`+l+`v`+l+`H0z"/>`:``,d=`<path `+n(o.color.dark,`stroke`)+` d="`+i(c,s,o.margin)+`"/>`,f=`viewBox="0 0 `+l+` `+l+`"`,p=`<svg xmlns="http://www.w3.org/2000/svg" `+(o.width?`width="`+o.width+`" height="`+o.width+`" `:``)+f+` shape-rendering="crispEdges">`+u+d+`</svg>
8
- `;return typeof a==`function`&&a(null,p),p}})),U=t((e=>{var t=g(),n=z(),r=V(),i=H();function a(e,r,i,a,o){let s=[].slice.call(arguments,1),c=s.length,l=typeof s[c-1]==`function`;if(!l&&!t())throw Error(`Callback required as last argument`);if(l){if(c<2)throw Error(`Too few arguments provided`);c===2?(o=i,i=r,r=a=void 0):c===3&&(r.getContext&&o===void 0?(o=a,a=void 0):(o=a,a=i,i=r,r=void 0))}else{if(c<1)throw Error(`Too few arguments provided`);return c===1?(i=r,r=a=void 0):c===2&&!r.getContext&&(a=i,i=r,r=void 0),new Promise(function(t,o){try{t(e(n.create(i,a),r,a))}catch(e){o(e)}})}try{let t=n.create(i,a);o(null,e(t,r,a))}catch(e){o(e)}}e.create=n.create,e.toCanvas=a.bind(null,r.render),e.toDataURL=a.bind(null,r.renderToDataURL),e.toString=a.bind(null,function(e,t,n){return i.render(e,n)})})),W=e(s(),1),G=e(U(),1),K=f();async function q(e){let t=e.statusText||`HTTP ${e.status}`;try{let n=await e.json();return typeof n.error==`string`?n.error:n.error?.message??t}catch{return t}}var J=new Set([`password`,`12345678`,`123456789`,`qwerty123`,`abc12345`,`letmein1`,`welcome1`,`admin123`,`monkey123`,`iloveyou1`]);function Y(e){if(e.length===0)return{level:`empty`,score:0,label:``};let t=0;e.length>=8&&(t+=20),e.length>=12&&(t+=15),e.length>=16&&(t+=15),/[a-z]/.test(e)&&(t+=10),/[A-Z]/.test(e)&&(t+=10),/\d/.test(e)&&(t+=10),/[^a-zA-Z0-9]/.test(e)&&(t+=15),/(.)\1{2,}/.test(e)&&(t-=10),/(?:0123|1234|2345|3456|4567|5678|6789|abcd|qwer|asdf)/i.test(e)&&(t-=10),J.has(e.toLowerCase())&&(t=0),t=Math.max(0,Math.min(100,t));let n,r;return t<30?(n=`weak`,r=`Weak`):t<55?(n=`fair`,r=`Fair`):t<80?(n=`good`,r=`Good`):(n=`strong`,r=`Strong`),{level:n,score:t,label:r}}function X({password:e}){let{level:t,score:n,label:r}=Y(e);return t===`empty`?null:(0,K.jsxs)(`div`,{className:`hq-password-strength`,"data-level":t,children:[(0,K.jsx)(`div`,{className:`hq-password-strength-bar`,children:(0,K.jsx)(`div`,{className:`hq-password-strength-fill`,style:{width:`${n}%`}})}),(0,K.jsx)(`span`,{className:`hq-password-strength-label`,children:r})]})}function Z(){let[e,t]=(0,W.useState)(null),[s,f]=(0,W.useState)(``),[g,_]=(0,W.useState)(``),[v,y]=(0,W.useState)(``),[b,x]=(0,W.useState)(!1),[S,C]=(0,W.useState)(null),[w,T]=(0,W.useState)(!1),E=async()=>{let e=await p(`/api/auth/status`);if(!e.ok)throw Error(await q(e));t(await e.json())};(0,W.useEffect)(()=>{E().catch(e=>{C({tone:`error`,text:e instanceof Error?e.message:String(e)})})},[]);let D=e?.passwordMode===!0,O=g.length>=8&&g.length<=1024,k=g===v,A=O&&k&&(!D||s.length>0)&&!b,j=async()=>{if(A){x(!0),C(null);try{let n=await p(`/api/auth/password`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...D?{currentPassword:s}:{},newPassword:g})});if(!n.ok)throw Error(await q(n));t(await n.json()),f(``),_(``),y(``),C({tone:`ok`,text:e?.passwordMode?`Password changed.`:`Password enabled.`})}catch(e){C({tone:`error`,text:e instanceof Error?e.message:String(e)})}finally{x(!1)}}},M=async()=>{x(!0),C(null);try{let e=await p(`/api/auth/password`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...D?{currentPassword:s}:{}})});if(!e.ok)throw Error(await q(e));t(await e.json()),f(``),T(!1),C({tone:`ok`,text:`Password protection removed.`})}catch(e){C({tone:`error`,text:e instanceof Error?e.message:String(e)})}finally{x(!1)}},N=async()=>{x(!0);try{await p(`/api/logout`,{method:`POST`})}finally{m(),window.location.reload()}},P=async()=>{if(!(!e?.publicOrigin||!e.passwordMode))try{await navigator.clipboard.writeText(e.publicOrigin),C({tone:`ok`,text:`Public tunnel URL copied.`})}catch{C({tone:`error`,text:`Could not copy the public tunnel URL.`})}};return(0,K.jsxs)(`div`,{className:`hq-security-page`,children:[(0,K.jsxs)(`section`,{className:`hq-security-summary`,"aria-label":`Authentication status`,children:[(0,K.jsxs)(`div`,{className:`hq-security-card`,children:[(0,K.jsx)(l,{size:18}),(0,K.jsx)(`span`,{children:`Browser access`}),(0,K.jsx)(`strong`,{children:e?.loggedIn?`Authenticated`:`Checking…`})]}),(0,K.jsxs)(`div`,{className:`hq-security-card`,children:[(0,K.jsx)(c,{size:18}),(0,K.jsx)(`span`,{children:`Browser tokens`}),(0,K.jsx)(`strong`,{children:e?.tokenMode?`Enabled`:`Disabled`})]}),(0,K.jsxs)(`div`,{className:`hq-security-card`,children:[(0,K.jsx)(o,{size:18}),(0,K.jsx)(`span`,{children:`Password login`}),(0,K.jsx)(`strong`,{children:e?.passwordMode?`Enabled`:`Disabled`})]}),(0,K.jsxs)(`div`,{className:`hq-security-card`,children:[(0,K.jsx)(r,{size:18}),(0,K.jsx)(`span`,{children:`Public tunnel`}),(0,K.jsx)(`strong`,{children:e?.publicRelay?`Active`:`Disabled`}),e?.publicOrigin&&e.passwordMode?(0,K.jsxs)(`button`,{type:`button`,className:`hq-security-copy`,"aria-label":`Copy public tunnel URL`,title:e.publicOrigin,onClick:()=>void P(),children:[(0,K.jsx)(n,{size:12}),`Copy URL`]}):null]})]}),(0,K.jsxs)(`section`,{className:`hq-security-panel`,children:[(0,K.jsxs)(`div`,{className:`hq-security-panel-head`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Browser credential`}),(0,K.jsx)(`h2`,{children:e?.passwordMode?`Change HQ password`:`Enable HQ password`}),(0,K.jsx)(`p`,{children:`Passwords are stored as salted scrypt hashes. Changing the password invalidates older password sessions.`})]}),(0,K.jsx)(o,{size:22})]}),S?(0,K.jsx)(`div`,{className:`hq-security-message`,"data-tone":S.tone,role:`status`,children:S.text}):null,(0,K.jsxs)(`div`,{className:`hq-security-form`,children:[D?(0,K.jsxs)(`label`,{htmlFor:`hq-current-password`,children:[(0,K.jsx)(`span`,{children:`Current password`}),(0,K.jsx)(h,{id:`hq-current-password`,value:s,onChange:f,autoComplete:`current-password`})]}):null,(0,K.jsxs)(`label`,{htmlFor:`hq-new-password`,children:[(0,K.jsx)(`span`,{children:`New password`}),(0,K.jsx)(h,{id:`hq-new-password`,value:g,onChange:_,autoComplete:`new-password`,minLength:8,maxLength:1024}),(0,K.jsx)(`small`,{children:`Minimum 8 characters.`})]}),(0,K.jsx)(X,{password:g}),(0,K.jsxs)(`label`,{htmlFor:`hq-confirm-password`,children:[(0,K.jsx)(`span`,{children:`Confirm new password`}),(0,K.jsx)(h,{id:`hq-confirm-password`,value:v,onChange:y,autoComplete:`new-password`,minLength:8,maxLength:1024,onKeyDown:e=>{e.key===`Enter`&&j()}}),v&&!k?(0,K.jsx)(`small`,{"data-error":!0,children:`Passwords do not match.`}):null]}),(0,K.jsx)(`div`,{className:`hq-security-actions`,children:(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn`,disabled:!A,onClick:()=>void j(),children:[(0,K.jsx)(l,{size:14}),b?`Saving…`:e?.passwordMode?`Change password`:`Enable password`]})})]})]}),(0,K.jsxs)(`section`,{className:`hq-security-panel`,children:[(0,K.jsxs)(`div`,{className:`hq-security-panel-head`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Two-factor authentication`}),(0,K.jsx)(`h2`,{children:e?.totpEnabled?`2FA is active`:`Enable 2FA (TOTP)`}),(0,K.jsx)(`p`,{children:e?.totpEnabled?`Authenticator required for password login. ${e.recoveryCodesRemaining??0} recovery codes remaining.`:`Add a TOTP authenticator as a second factor for password login. Recommended for public tunnel deployments.`})]}),(0,K.jsx)(d,{size:22})]}),S?(0,K.jsx)(`div`,{className:`hq-security-message`,"data-tone":S.tone,role:`status`,children:S.text}):null,e?.totpEnabled?(0,K.jsx)($,{busy:b,setBusy:x,setMessage:C,hasPassword:e?.passwordMode===!0}):(0,K.jsx)(Q,{busy:b,setBusy:x,setMessage:C})]}),(0,K.jsxs)(`section`,{className:`hq-security-panel`,children:[(0,K.jsxs)(`div`,{className:`hq-security-panel-head`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Active sessions`}),(0,K.jsx)(`h2`,{children:`Session management`}),(0,K.jsx)(`p`,{children:`Browser sessions expire after 30 min of inactivity or 7 days absolute. Revoke individual sessions or sign out everywhere.`})]}),(0,K.jsx)(i,{size:22})]}),(0,K.jsx)(ee,{})]}),(0,K.jsxs)(`section`,{className:`hq-security-panel`,children:[(0,K.jsxs)(`div`,{className:`hq-security-panel-head`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Security audit log`}),(0,K.jsx)(`h2`,{children:`Recent auth events`}),(0,K.jsx)(`p`,{children:`Token lifecycle, password changes, and 2FA events from the audit trail.`})]}),(0,K.jsx)(l,{size:22})]}),(0,K.jsx)(ne,{})]}),(0,K.jsxs)(`section`,{className:`hq-security-panel danger-zone`,children:[(0,K.jsxs)(`div`,{className:`hq-security-panel-head`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Session and recovery`}),(0,K.jsx)(`h2`,{children:`Access controls`}),(0,K.jsx)(`p`,{children:`Browser tokens remain available as a recovery path. Public tunnel mode will refuse to remove the last browser authentication method.`})]}),(0,K.jsx)(u,{size:22})]}),e?.publicRelay?(0,K.jsxs)(`div`,{className:`hq-security-recovery-info`,children:[(0,K.jsx)(`strong`,{children:`Lost your password?`}),(0,K.jsxs)(`p`,{children:[`If you forget the HQ password, you can reset it from the machine running`,` `,(0,K.jsx)(`code`,{children:`wstack hq`}),`:`]}),(0,K.jsxs)(`ol`,{children:[(0,K.jsxs)(`li`,{children:[`Stop the HQ server (`,(0,K.jsx)(`code`,{children:`Ctrl+C`}),` or `,(0,K.jsx)(`code`,{children:`wstack hq stop`}),`).`]}),(0,K.jsxs)(`li`,{children:[`Edit `,(0,K.jsx)(`code`,{children:`~/.wrongstack/hq/auth.json`}),` — remove the`,` `,(0,K.jsx)(`code`,{children:`passwordHash`}),` and `,(0,K.jsx)(`code`,{children:`cookieSecret`}),` fields. Also remove`,` `,(0,K.jsx)(`code`,{children:`totpSecret`}),` / `,(0,K.jsx)(`code`,{children:`totpRecoveryCodes`}),` if 2FA is enabled.`]}),(0,K.jsxs)(`li`,{children:[`Restart: `,(0,K.jsx)(`code`,{children:`wstack hq --password <new-password>`}),`.`]})]}),(0,K.jsxs)(`p`,{children:[`This requires shell access to the host machine. If the machine is also lost, the data dir at `,(0,K.jsx)(`code`,{children:`~/.wrongstack/hq/`}),` contains all credentials.`]})]}):null,(0,K.jsxs)(`div`,{className:`hq-security-actions split`,children:[(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn secondary`,disabled:b,onClick:()=>void N(),children:[(0,K.jsx)(a,{size:14}),`Log out this browser`]}),e?.passwordMode?w?(0,K.jsxs)(`div`,{className:`hq-security-confirm-remove`,children:[(0,K.jsx)(`span`,{children:`Remove password protection?`}),(0,K.jsx)(`button`,{type:`button`,className:`hq-btn secondary`,disabled:b,onClick:()=>T(!1),children:`Cancel`}),(0,K.jsx)(`button`,{type:`button`,className:`hq-btn danger`,disabled:b||D&&!s,onClick:()=>void M(),children:`Remove password`})]}):(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn danger`,disabled:b,onClick:()=>T(!0),children:[(0,K.jsx)(u,{size:14}),`Remove password`]}):null]})]})]})}function Q({busy:e,setBusy:t,setMessage:n}){let[r,i]=(0,W.useState)(`idle`),[a,o]=(0,W.useState)(``),[s,c]=(0,W.useState)(``),[u,f]=(0,W.useState)(``),[m,h]=(0,W.useState)(``),[g,_]=(0,W.useState)([]);(0,W.useEffect)(()=>{if(!s){f(``);return}let e=!1;return G.toDataURL(s,{width:200,margin:1,errorCorrectionLevel:`M`}).then(t=>{e||f(t)}).catch(()=>{e||f(``)}),()=>{e=!0}},[s]);let v=async()=>{t(!0),n({tone:`ok`,text:``});try{let e=await p(`/api/auth/totp/setup`,{method:`POST`});if(!e.ok)throw Error(await q(e));let t=await e.json();o(t.secret),c(t.uri),i(`pending`),n({tone:`ok`,text:`Enter this secret in your authenticator app, then provide the 6-digit code below.`})}catch(e){n({tone:`error`,text:e instanceof Error?e.message:String(e)})}finally{t(!1)}},y=async()=>{if(m.length===6){t(!0),n({tone:`ok`,text:``});try{let e=await p(`/api/auth/totp/enable`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:m})});if(!e.ok)throw Error(await q(e));let t=await e.json();_(t.recoveryCodes),i(`recovery`),n({tone:`ok`,text:`2FA enabled. Save your recovery codes — they are shown only once.`})}catch(e){n({tone:`error`,text:e instanceof Error?e.message:String(e)})}finally{t(!1)}}};return r===`idle`?(0,K.jsx)(`div`,{className:`hq-security-actions`,children:(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn`,disabled:e,onClick:()=>void v(),children:[(0,K.jsx)(d,{size:14}),e?`Setting up…`:`Start 2FA enrollment`]})}):r===`pending`?(0,K.jsxs)(`div`,{className:`hq-security-form`,children:[u?(0,K.jsx)(`div`,{className:`hq-totp-qr`,children:(0,K.jsx)(`img`,{src:u,alt:`Scan this QR code with your authenticator app`,width:200,height:200})}):null,(0,K.jsxs)(`div`,{className:`hq-totp-secret`,children:[(0,K.jsx)(`span`,{children:`Secret (manual entry):`}),(0,K.jsx)(`code`,{children:a})]}),(0,K.jsx)(`p`,{className:`hq-totp-uri-hint`,children:(0,K.jsx)(`small`,{children:`Scan the QR code or enter the secret manually, then provide the 6-digit code below.`})}),(0,K.jsxs)(`label`,{children:[(0,K.jsx)(`span`,{children:`Verification code`}),(0,K.jsx)(`input`,{type:`text`,inputMode:`numeric`,pattern:`[0-9]*`,maxLength:6,placeholder:`000000`,autoComplete:`one-time-code`,value:m,onChange:e=>h(e.target.value.replace(/\D/g,``).slice(0,6)),onKeyDown:e=>{e.key===`Enter`&&y()}})]}),(0,K.jsx)(`div`,{className:`hq-security-actions`,children:(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn`,disabled:m.length!==6||e,onClick:()=>void y(),children:[(0,K.jsx)(l,{size:14}),e?`Enabling…`:`Confirm and enable 2FA`]})})]}):(0,K.jsxs)(`div`,{className:`hq-security-form`,children:[(0,K.jsxs)(`div`,{className:`hq-totp-recovery`,children:[(0,K.jsx)(`p`,{className:`hq-totp-recovery-title`,children:`Recovery codes`}),(0,K.jsx)(`ul`,{className:`hq-totp-recovery-list`,children:g.map(e=>(0,K.jsx)(`li`,{children:(0,K.jsx)(`code`,{children:e})},e))}),(0,K.jsx)(`p`,{className:`hq-totp-recovery-hint`,children:`Store these in a safe place. Each can be used once instead of a TOTP code if you lose your device.`})]}),(0,K.jsx)(`div`,{className:`hq-security-actions`,children:(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn`,onClick:()=>{window.location.reload()},children:[(0,K.jsx)(l,{size:14}),`I've saved my recovery codes`]})})]})}function $({busy:e,setBusy:t,setMessage:n,hasPassword:r}){let[i,a]=(0,W.useState)(``),[o,s]=(0,W.useState)(``),[c,l]=(0,W.useState)(!1),d=async()=>{t(!0),n({tone:`ok`,text:``});try{let e={};i&&(e.password=i),o&&(e.code=o);let t=await p(`/api/auth/totp/disable`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)throw Error(await q(t));n({tone:`ok`,text:`2FA disabled.`}),a(``),s(``),l(!1),window.location.reload()}catch(e){n({tone:`error`,text:e instanceof Error?e.message:String(e)})}finally{t(!1)}},f=r?i.length>0:o.length===6;return c?(0,K.jsxs)(`div`,{className:`hq-security-form`,children:[r?(0,K.jsxs)(`label`,{children:[(0,K.jsx)(`span`,{children:`Current password`}),(0,K.jsx)(`input`,{type:`password`,autoComplete:`current-password`,placeholder:`confirm with password`,value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`&&f&&d()}})]}):(0,K.jsxs)(`label`,{children:[(0,K.jsx)(`span`,{children:`Authenticator code`}),(0,K.jsx)(`input`,{type:`text`,inputMode:`numeric`,pattern:`[0-9]*`,maxLength:6,placeholder:`000000`,autoComplete:`one-time-code`,value:o,onChange:e=>s(e.target.value.replace(/\D/g,``).slice(0,6)),onKeyDown:e=>{e.key===`Enter`&&f&&d()}})]}),(0,K.jsxs)(`div`,{className:`hq-security-actions`,children:[(0,K.jsx)(`button`,{type:`button`,className:`hq-btn secondary`,disabled:e,onClick:()=>l(!1),children:`Cancel`}),(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn danger`,disabled:!f||e,onClick:()=>void d(),children:[(0,K.jsx)(u,{size:14}),`Confirm disable`]})]})]}):(0,K.jsx)(`div`,{className:`hq-security-actions`,children:(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn danger`,disabled:e,onClick:()=>l(!0),children:[(0,K.jsx)(u,{size:14}),`Disable 2FA`]})})}function ee(){let[e,t]=(0,W.useState)([]),[n,r]=(0,W.useState)(!0),[i,o]=(0,W.useState)(null),s=async()=>{try{let e=await p(`/api/auth/sessions`);if(!e.ok)throw Error(await q(e));let n=await e.json();t(n.sessions??[]),o(null)}catch(e){o(e instanceof Error?e.message:String(e))}finally{r(!1)}};(0,W.useEffect)(()=>{s()},[]);let c=async e=>{try{let t=await p(`/api/auth/sessions/${e}`,{method:`DELETE`});if(!t.ok)throw Error(await q(t));await s()}catch(e){o(e instanceof Error?e.message:String(e))}},l=async()=>{try{let e=await p(`/api/auth/sessions`,{method:`DELETE`});if(!e.ok)throw Error(await q(e));window.location.reload()}catch(e){o(e instanceof Error?e.message:String(e))}};return n?(0,K.jsx)(`p`,{className:`hq-security-hint`,children:`Loading sessions…`}):i?(0,K.jsx)(`p`,{className:`hq-security-message`,"data-tone":`error`,children:i}):e.length===0?(0,K.jsx)(`p`,{className:`hq-security-hint`,children:`No active sessions.`}):(0,K.jsxs)(`div`,{className:`hq-sessions-list`,children:[e.map(e=>(0,K.jsxs)(`div`,{className:`hq-session-row`,children:[(0,K.jsxs)(`div`,{className:`hq-session-info`,children:[(0,K.jsx)(`span`,{className:`hq-session-id`,children:e.shortId}),(0,K.jsx)(`span`,{className:`hq-session-kind`,children:e.kind}),(0,K.jsx)(`span`,{className:`hq-session-age`,children:e.ageMinutes<60?`${e.ageMinutes}m ago`:`${Math.round(e.ageMinutes/60)}h ago`}),(0,K.jsx)(`span`,{className:`hq-session-idle`,children:e.idleMinutes<1?`active now`:`idle ${e.idleMinutes}m`})]}),(0,K.jsx)(`button`,{type:`button`,className:`hq-btn small danger`,onClick:()=>void c(e.id),children:`Revoke`})]},e.id)),(0,K.jsx)(`div`,{className:`hq-security-actions`,style:{marginTop:`0.75rem`},children:(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn danger`,onClick:()=>void l(),children:[(0,K.jsx)(a,{size:14}),`Sign out everywhere`]})})]})}var te={create:`Token created`,revoke:`Token revoked`,"first-run":`First-run bootstrap`,"expired-prune":`Expired tokens pruned`,"password-rotate":`Password rotated`};function ne(){let[e,t]=(0,W.useState)([]),[n,r]=(0,W.useState)(!0),[i,a]=(0,W.useState)(null);return(0,W.useEffect)(()=>{let e=!1;return(async()=>{try{let n=await p(`/api/auth/audit`);if(!n.ok)throw Error(await q(n));let r=await n.json();e||(t(r.entries??[]),a(null))}catch(t){e||a(t instanceof Error?t.message:String(t))}finally{e||r(!1)}})(),()=>{e=!0}},[]),n?(0,K.jsx)(`p`,{className:`hq-security-hint`,children:`Loading audit log…`}):i?(0,K.jsx)(`p`,{className:`hq-security-message`,"data-tone":`error`,children:i}):e.length===0?(0,K.jsx)(`p`,{className:`hq-security-hint`,children:`No auth events recorded.`}):(0,K.jsx)(`div`,{className:`hq-audit-list`,children:e.map((e,t)=>{let n=Math.round((Date.now()-e.at)/6e4),r=n<1?`just now`:n<60?`${n}m ago`:`${Math.round(n/60)}h ago`;return(0,K.jsxs)(`div`,{className:`hq-audit-row`,children:[(0,K.jsx)(`span`,{className:`hq-audit-kind`,children:te[e.kind]??e.kind}),(0,K.jsx)(`span`,{className:`hq-audit-scope`,children:e.scope}),(0,K.jsx)(`span`,{className:`hq-audit-token`,children:e.tokenId===`(password-rotation)`?`—`:e.tokenId.slice(0,8)}),e.actor?(0,K.jsx)(`span`,{className:`hq-audit-actor`,children:e.actor}):null,(0,K.jsx)(`span`,{className:`hq-audit-time`,children:r})]},`${e.at}-${t}`)})})}export{Z as SettingsView};
7
+ `);let l=k(n,r,o),d=new i(t.getSymbolSize(n));return m(d,n),h(d),g(d,n),E(d,r,0),n>=7&&T(d,n),O(d,l),isNaN(a)&&(a=s.getBestMask(d,E.bind(null,d,r))),s.applyMask(a,d),E(d,r,a),{modules:d,version:n,errorCorrectionLevel:r,maskPattern:a,segments:o}}e.create=function(e,r){if(e===void 0||e===``)throw Error(`No input text`);let i=n.M,a,o;return r!==void 0&&(i=n.from(r.errorCorrectionLevel,n.M),a=u.from(r.version),o=s.from(r.maskPattern),r.toSJISFunc&&t.setToSJISFunction(r.toSJISFunc)),P(e,a,i,o)}})),B=t((e=>{function t(e){if(typeof e==`number`&&(e=e.toString()),typeof e!=`string`)throw Error(`Color should be defined as hex string`);let t=e.slice().replace(`#`,``).split(``);if(t.length<3||t.length===5||t.length>8)throw Error(`Invalid hex color: `+e);(t.length===3||t.length===4)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),t.length===6&&t.push(`F`,`F`);let n=parseInt(t.join(``),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:`#`+t.slice(0,6).join(``)}}e.getOptions=function(e){e||={},e.color||(e.color={});let n=e.margin===void 0||e.margin===null||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:r,scale:r?4:i,margin:n,color:{dark:t(e.color.dark||`#000000ff`),light:t(e.color.light||`#ffffffff`)},type:e.type,rendererOpts:e.rendererOpts||{}}},e.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale},e.getImageWidth=function(t,n){let r=e.getScale(t,n);return Math.floor((t+n.margin*2)*r)},e.qrToImageData=function(t,n,r){let i=n.modules.size,a=n.modules.data,o=e.getScale(i,r),s=Math.floor((i+r.margin*2)*o),c=r.margin*o,l=[r.color.light,r.color.dark];for(let e=0;e<s;e++)for(let n=0;n<s;n++){let u=(e*s+n)*4,d=r.color.light;if(e>=c&&n>=c&&e<s-c&&n<s-c){let t=Math.floor((e-c)/o),r=Math.floor((n-c)/o);d=l[+!!a[t*i+r]]}t[u++]=d.r,t[u++]=d.g,t[u++]=d.b,t[u]=d.a}}})),V=t((e=>{var t=B();function n(e,t,n){e.clearRect(0,0,t.width,t.height),t.style||={},t.height=n,t.width=n,t.style.height=n+`px`,t.style.width=n+`px`}function r(){try{return document.createElement(`canvas`)}catch{throw Error(`You need to specify a canvas element`)}}e.render=function(e,i,a){let o=a,s=i;o===void 0&&(!i||!i.getContext)&&(o=i,i=void 0),i||(s=r()),o=t.getOptions(o);let c=t.getImageWidth(e.modules.size,o),l=s.getContext(`2d`),u=l.createImageData(c,c);return t.qrToImageData(u.data,e,o),n(l,s,c),l.putImageData(u,0,0),s},e.renderToDataURL=function(t,n,r){let i=r;i===void 0&&(!n||!n.getContext)&&(i=n,n=void 0),i||={};let a=e.render(t,n,i),o=i.type||`image/png`,s=i.rendererOpts||{};return a.toDataURL(o,s.quality)}})),H=t((e=>{var t=B();function n(e,t){let n=e.a/255,r=t+`="`+e.hex+`"`;return n<1?r+` `+t+`-opacity="`+n.toFixed(2).slice(1)+`"`:r}function r(e,t,n){let r=e+t;return n!==void 0&&(r+=` `+n),r}function i(e,t,n){let i=``,a=0,o=!1,s=0;for(let c=0;c<e.length;c++){let l=Math.floor(c%t),u=Math.floor(c/t);!l&&!o&&(o=!0),e[c]?(s++,c>0&&l>0&&e[c-1]||(i+=o?r(`M`,l+n,.5+u+n):r(`m`,a,0),a=0,o=!1),l+1<t&&e[c+1]||(i+=r(`h`,s),s=0)):a++}return i}e.render=function(e,r,a){let o=t.getOptions(r),s=e.modules.size,c=e.modules.data,l=s+o.margin*2,u=o.color.light.a?`<path `+n(o.color.light,`fill`)+` d="M0 0h`+l+`v`+l+`H0z"/>`:``,d=`<path `+n(o.color.dark,`stroke`)+` d="`+i(c,s,o.margin)+`"/>`,f=`viewBox="0 0 `+l+` `+l+`"`,p=`<svg xmlns="http://www.w3.org/2000/svg" `+(o.width?`width="`+o.width+`" height="`+o.width+`" `:``)+f+` shape-rendering="crispEdges">`+u+d+`</svg>
8
+ `;return typeof a==`function`&&a(null,p),p}})),U=t((e=>{var t=g(),n=z(),r=V(),i=H();function a(e,r,i,a,o){let s=[].slice.call(arguments,1),c=s.length,l=typeof s[c-1]==`function`;if(!l&&!t())throw Error(`Callback required as last argument`);if(l){if(c<2)throw Error(`Too few arguments provided`);c===2?(o=i,i=r,r=a=void 0):c===3&&(r.getContext&&o===void 0?(o=a,a=void 0):(o=a,a=i,i=r,r=void 0))}else{if(c<1)throw Error(`Too few arguments provided`);return c===1?(i=r,r=a=void 0):c===2&&!r.getContext&&(a=i,i=r,r=void 0),new Promise(function(t,o){try{t(e(n.create(i,a),r,a))}catch(e){o(e)}})}try{let t=n.create(i,a);o(null,e(t,r,a))}catch(e){o(e)}}e.create=n.create,e.toCanvas=a.bind(null,r.render),e.toDataURL=a.bind(null,r.renderToDataURL),e.toString=a.bind(null,function(e,t,n){return i.render(e,n)})})),W=e(s(),1),G=e(U(),1),K=f();async function q(e){let t=e.statusText||`HTTP ${e.status}`;try{let n=await e.json();return typeof n.error==`string`?n.error:n.error?.message??t}catch{return t}}var J=new Set([`password`,`12345678`,`123456789`,`qwerty123`,`abc12345`,`letmein1`,`welcome1`,`admin123`,`monkey123`,`iloveyou1`]);function Y(e){if(e.length===0)return{level:`empty`,score:0,label:``};let t=0;e.length>=8&&(t+=20),e.length>=12&&(t+=15),e.length>=16&&(t+=15),/[a-z]/.test(e)&&(t+=10),/[A-Z]/.test(e)&&(t+=10),/\d/.test(e)&&(t+=10),/[^a-zA-Z0-9]/.test(e)&&(t+=15),/(.)\1{2,}/.test(e)&&(t-=10),/(?:0123|1234|2345|3456|4567|5678|6789|abcd|qwer|asdf)/i.test(e)&&(t-=10),J.has(e.toLowerCase())&&(t=0),t=Math.max(0,Math.min(100,t));let n,r;return t<30?(n=`weak`,r=`Weak`):t<55?(n=`fair`,r=`Fair`):t<80?(n=`good`,r=`Good`):(n=`strong`,r=`Strong`),{level:n,score:t,label:r}}function X({password:e}){let{level:t,score:n,label:r}=Y(e);return t===`empty`?null:(0,K.jsxs)(`div`,{className:`hq-password-strength`,"data-level":t,children:[(0,K.jsx)(`div`,{className:`hq-password-strength-bar`,children:(0,K.jsx)(`div`,{className:`hq-password-strength-fill`,style:{width:`${n}%`}})}),(0,K.jsx)(`span`,{className:`hq-password-strength-label`,children:r})]})}function Z(){let[e,t]=(0,W.useState)(null),[s,f]=(0,W.useState)(``),[g,_]=(0,W.useState)(``),[v,y]=(0,W.useState)(``),[b,x]=(0,W.useState)(!1),[S,C]=(0,W.useState)(null),[w,T]=(0,W.useState)(!1),E=async()=>{let e=await p(`/api/auth/status`);if(!e.ok)throw Error(await q(e));t(await e.json())};(0,W.useEffect)(()=>{E().catch(e=>{C({tone:`error`,text:e instanceof Error?e.message:String(e)})})},[]);let D=e?.passwordMode===!0,O=g.length>=8&&g.length<=1024,k=g===v,A=O&&k&&(!D||s.length>0)&&!b,j=async()=>{if(A){x(!0),C(null);try{let n=await p(`/api/auth/password`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...D?{currentPassword:s}:{},newPassword:g})});if(!n.ok)throw Error(await q(n));t(await n.json()),f(``),_(``),y(``),C({tone:`ok`,text:e?.passwordMode?`Password changed.`:`Password enabled.`})}catch(e){C({tone:`error`,text:e instanceof Error?e.message:String(e)})}finally{x(!1)}}},M=async()=>{x(!0),C(null);try{let e=await p(`/api/auth/password`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...D?{currentPassword:s}:{}})});if(!e.ok)throw Error(await q(e));t(await e.json()),f(``),T(!1),C({tone:`ok`,text:`Password protection removed.`})}catch(e){C({tone:`error`,text:e instanceof Error?e.message:String(e)})}finally{x(!1)}},N=async()=>{x(!0);try{await p(`/api/logout`,{method:`POST`})}finally{m(),window.location.reload()}},P=async()=>{if(!(!e?.publicOrigin||!e.passwordMode))try{await navigator.clipboard.writeText(e.publicOrigin),C({tone:`ok`,text:`Public tunnel URL copied.`})}catch{C({tone:`error`,text:`Could not copy the public tunnel URL.`})}};return(0,K.jsxs)(`div`,{className:`hq-security-page`,children:[(0,K.jsxs)(`section`,{className:`hq-security-summary`,"aria-label":`Authentication status`,children:[(0,K.jsxs)(`div`,{className:`hq-security-card`,children:[(0,K.jsx)(c,{size:18}),(0,K.jsx)(`span`,{children:`Browser access`}),(0,K.jsx)(`strong`,{children:e?.loggedIn?`Authenticated`:`Checking…`})]}),(0,K.jsxs)(`div`,{className:`hq-security-card`,children:[(0,K.jsx)(d,{size:18}),(0,K.jsx)(`span`,{children:`Browser tokens`}),(0,K.jsx)(`strong`,{children:e?.tokenMode?`Enabled`:`Disabled`})]}),(0,K.jsxs)(`div`,{className:`hq-security-card`,children:[(0,K.jsx)(r,{size:18}),(0,K.jsx)(`span`,{children:`Password login`}),(0,K.jsx)(`strong`,{children:e?.passwordMode?`Enabled`:`Disabled`})]}),(0,K.jsxs)(`div`,{className:`hq-security-card`,children:[(0,K.jsx)(a,{size:18}),(0,K.jsx)(`span`,{children:`Public tunnel`}),(0,K.jsx)(`strong`,{children:e?.publicRelay?`Active`:`Disabled`}),e?.publicOrigin&&e.passwordMode?(0,K.jsxs)(`button`,{type:`button`,className:`hq-security-copy`,"aria-label":`Copy public tunnel URL`,title:e.publicOrigin,onClick:()=>void P(),children:[(0,K.jsx)(n,{size:12}),`Copy URL`]}):null]})]}),(0,K.jsxs)(`section`,{className:`hq-security-panel`,children:[(0,K.jsxs)(`div`,{className:`hq-security-panel-head`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Browser credential`}),(0,K.jsx)(`h2`,{children:e?.passwordMode?`Change HQ password`:`Enable HQ password`}),(0,K.jsx)(`p`,{children:`Passwords are stored as salted scrypt hashes. Changing the password invalidates older password sessions.`})]}),(0,K.jsx)(r,{size:22})]}),S?(0,K.jsx)(`div`,{className:`hq-security-message`,"data-tone":S.tone,role:`status`,children:S.text}):null,(0,K.jsxs)(`div`,{className:`hq-security-form`,children:[D?(0,K.jsxs)(`label`,{htmlFor:`hq-current-password`,children:[(0,K.jsx)(`span`,{children:`Current password`}),(0,K.jsx)(h,{id:`hq-current-password`,value:s,onChange:f,autoComplete:`current-password`})]}):null,(0,K.jsxs)(`label`,{htmlFor:`hq-new-password`,children:[(0,K.jsx)(`span`,{children:`New password`}),(0,K.jsx)(h,{id:`hq-new-password`,value:g,onChange:_,autoComplete:`new-password`,minLength:8,maxLength:1024}),(0,K.jsx)(`small`,{children:`Minimum 8 characters.`})]}),(0,K.jsx)(X,{password:g}),(0,K.jsxs)(`label`,{htmlFor:`hq-confirm-password`,children:[(0,K.jsx)(`span`,{children:`Confirm new password`}),(0,K.jsx)(h,{id:`hq-confirm-password`,value:v,onChange:y,autoComplete:`new-password`,minLength:8,maxLength:1024,onKeyDown:e=>{e.key===`Enter`&&j()}}),v&&!k?(0,K.jsx)(`small`,{"data-error":!0,children:`Passwords do not match.`}):null]}),(0,K.jsx)(`div`,{className:`hq-security-actions`,children:(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn`,disabled:!A,onClick:()=>void j(),children:[(0,K.jsx)(c,{size:14}),b?`Saving…`:e?.passwordMode?`Change password`:`Enable password`]})})]})]}),(0,K.jsxs)(`section`,{className:`hq-security-panel`,children:[(0,K.jsxs)(`div`,{className:`hq-security-panel-head`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Two-factor authentication`}),(0,K.jsx)(`h2`,{children:e?.totpEnabled?`2FA is active`:`Enable 2FA (TOTP)`}),(0,K.jsx)(`p`,{children:e?.totpEnabled?`Authenticator required for password login. ${e.recoveryCodesRemaining??0} recovery codes remaining.`:`Add a TOTP authenticator as a second factor for password login. Recommended for public tunnel deployments.`})]}),(0,K.jsx)(u,{size:22})]}),S?(0,K.jsx)(`div`,{className:`hq-security-message`,"data-tone":S.tone,role:`status`,children:S.text}):null,e?.totpEnabled?(0,K.jsx)($,{busy:b,setBusy:x,setMessage:C,hasPassword:e?.passwordMode===!0}):(0,K.jsx)(Q,{busy:b,setBusy:x,setMessage:C})]}),(0,K.jsxs)(`section`,{className:`hq-security-panel`,children:[(0,K.jsxs)(`div`,{className:`hq-security-panel-head`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Active sessions`}),(0,K.jsx)(`h2`,{children:`Session management`}),(0,K.jsx)(`p`,{children:`Browser sessions expire after 30 min of inactivity or 7 days absolute. Revoke individual sessions or sign out everywhere.`})]}),(0,K.jsx)(i,{size:22})]}),(0,K.jsx)(ee,{})]}),(0,K.jsxs)(`section`,{className:`hq-security-panel`,children:[(0,K.jsxs)(`div`,{className:`hq-security-panel-head`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Security audit log`}),(0,K.jsx)(`h2`,{children:`Recent auth events`}),(0,K.jsx)(`p`,{children:`Token lifecycle, password changes, and 2FA events from the audit trail.`})]}),(0,K.jsx)(c,{size:22})]}),(0,K.jsx)(ne,{})]}),(0,K.jsxs)(`section`,{className:`hq-security-panel danger-zone`,children:[(0,K.jsxs)(`div`,{className:`hq-security-panel-head`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{children:`Session and recovery`}),(0,K.jsx)(`h2`,{children:`Access controls`}),(0,K.jsx)(`p`,{children:`Browser tokens remain available as a recovery path. Public tunnel mode will refuse to remove the last browser authentication method.`})]}),(0,K.jsx)(l,{size:22})]}),e?.publicRelay?(0,K.jsxs)(`div`,{className:`hq-security-recovery-info`,children:[(0,K.jsx)(`strong`,{children:`Lost your password?`}),(0,K.jsxs)(`p`,{children:[`If you forget the HQ password, you can reset it from the machine running`,` `,(0,K.jsx)(`code`,{children:`wstack hq`}),`:`]}),(0,K.jsxs)(`ol`,{children:[(0,K.jsxs)(`li`,{children:[`Stop the HQ server (`,(0,K.jsx)(`code`,{children:`Ctrl+C`}),` or `,(0,K.jsx)(`code`,{children:`wstack hq stop`}),`).`]}),(0,K.jsxs)(`li`,{children:[`Edit `,(0,K.jsx)(`code`,{children:`~/.wrongstack/hq/auth.json`}),` — remove the`,` `,(0,K.jsx)(`code`,{children:`passwordHash`}),` and `,(0,K.jsx)(`code`,{children:`cookieSecret`}),` fields. Also remove`,` `,(0,K.jsx)(`code`,{children:`totpSecret`}),` / `,(0,K.jsx)(`code`,{children:`totpRecoveryCodes`}),` if 2FA is enabled.`]}),(0,K.jsxs)(`li`,{children:[`Restart: `,(0,K.jsx)(`code`,{children:`wstack hq --password <new-password>`}),`.`]})]}),(0,K.jsxs)(`p`,{children:[`This requires shell access to the host machine. If the machine is also lost, the data dir at `,(0,K.jsx)(`code`,{children:`~/.wrongstack/hq/`}),` contains all credentials.`]})]}):null,(0,K.jsxs)(`div`,{className:`hq-security-actions split`,children:[(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn secondary`,disabled:b,onClick:()=>void N(),children:[(0,K.jsx)(o,{size:14}),`Log out this browser`]}),e?.passwordMode?w?(0,K.jsxs)(`div`,{className:`hq-security-confirm-remove`,children:[(0,K.jsx)(`span`,{children:`Remove password protection?`}),(0,K.jsx)(`button`,{type:`button`,className:`hq-btn secondary`,disabled:b,onClick:()=>T(!1),children:`Cancel`}),(0,K.jsx)(`button`,{type:`button`,className:`hq-btn danger`,disabled:b||D&&!s,onClick:()=>void M(),children:`Remove password`})]}):(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn danger`,disabled:b,onClick:()=>T(!0),children:[(0,K.jsx)(l,{size:14}),`Remove password`]}):null]})]})]})}function Q({busy:e,setBusy:t,setMessage:n}){let[r,i]=(0,W.useState)(`idle`),[a,o]=(0,W.useState)(``),[s,l]=(0,W.useState)(``),[d,f]=(0,W.useState)(``),[m,h]=(0,W.useState)(``),[g,_]=(0,W.useState)([]);(0,W.useEffect)(()=>{if(!s){f(``);return}let e=!1;return G.toDataURL(s,{width:200,margin:1,errorCorrectionLevel:`M`}).then(t=>{e||f(t)}).catch(()=>{e||f(``)}),()=>{e=!0}},[s]);let v=async()=>{t(!0),n({tone:`ok`,text:``});try{let e=await p(`/api/auth/totp/setup`,{method:`POST`});if(!e.ok)throw Error(await q(e));let t=await e.json();o(t.secret),l(t.uri),i(`pending`),n({tone:`ok`,text:`Enter this secret in your authenticator app, then provide the 6-digit code below.`})}catch(e){n({tone:`error`,text:e instanceof Error?e.message:String(e)})}finally{t(!1)}},y=async()=>{if(m.length===6){t(!0),n({tone:`ok`,text:``});try{let e=await p(`/api/auth/totp/enable`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:m})});if(!e.ok)throw Error(await q(e));let t=await e.json();_(t.recoveryCodes),i(`recovery`),n({tone:`ok`,text:`2FA enabled. Save your recovery codes — they are shown only once.`})}catch(e){n({tone:`error`,text:e instanceof Error?e.message:String(e)})}finally{t(!1)}}};return r===`idle`?(0,K.jsx)(`div`,{className:`hq-security-actions`,children:(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn`,disabled:e,onClick:()=>void v(),children:[(0,K.jsx)(u,{size:14}),e?`Setting up…`:`Start 2FA enrollment`]})}):r===`pending`?(0,K.jsxs)(`div`,{className:`hq-security-form`,children:[d?(0,K.jsx)(`div`,{className:`hq-totp-qr`,children:(0,K.jsx)(`img`,{src:d,alt:`Scan this QR code with your authenticator app`,width:200,height:200})}):null,(0,K.jsxs)(`div`,{className:`hq-totp-secret`,children:[(0,K.jsx)(`span`,{children:`Secret (manual entry):`}),(0,K.jsx)(`code`,{children:a})]}),(0,K.jsx)(`p`,{className:`hq-totp-uri-hint`,children:(0,K.jsx)(`small`,{children:`Scan the QR code or enter the secret manually, then provide the 6-digit code below.`})}),(0,K.jsxs)(`label`,{children:[(0,K.jsx)(`span`,{children:`Verification code`}),(0,K.jsx)(`input`,{type:`text`,inputMode:`numeric`,pattern:`[0-9]*`,maxLength:6,placeholder:`000000`,autoComplete:`one-time-code`,value:m,onChange:e=>h(e.target.value.replace(/\D/g,``).slice(0,6)),onKeyDown:e=>{e.key===`Enter`&&y()}})]}),(0,K.jsx)(`div`,{className:`hq-security-actions`,children:(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn`,disabled:m.length!==6||e,onClick:()=>void y(),children:[(0,K.jsx)(c,{size:14}),e?`Enabling…`:`Confirm and enable 2FA`]})})]}):(0,K.jsxs)(`div`,{className:`hq-security-form`,children:[(0,K.jsxs)(`div`,{className:`hq-totp-recovery`,children:[(0,K.jsx)(`p`,{className:`hq-totp-recovery-title`,children:`Recovery codes`}),(0,K.jsx)(`ul`,{className:`hq-totp-recovery-list`,children:g.map(e=>(0,K.jsx)(`li`,{children:(0,K.jsx)(`code`,{children:e})},e))}),(0,K.jsx)(`p`,{className:`hq-totp-recovery-hint`,children:`Store these in a safe place. Each can be used once instead of a TOTP code if you lose your device.`})]}),(0,K.jsx)(`div`,{className:`hq-security-actions`,children:(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn`,onClick:()=>{window.location.reload()},children:[(0,K.jsx)(c,{size:14}),`I've saved my recovery codes`]})})]})}function $({busy:e,setBusy:t,setMessage:n,hasPassword:r}){let[i,a]=(0,W.useState)(``),[o,s]=(0,W.useState)(``),[c,u]=(0,W.useState)(!1),d=async()=>{t(!0),n({tone:`ok`,text:``});try{let e={};i&&(e.password=i),o&&(e.code=o);let t=await p(`/api/auth/totp/disable`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)throw Error(await q(t));n({tone:`ok`,text:`2FA disabled.`}),a(``),s(``),u(!1),window.location.reload()}catch(e){n({tone:`error`,text:e instanceof Error?e.message:String(e)})}finally{t(!1)}},f=r?i.length>0:o.length===6;return c?(0,K.jsxs)(`div`,{className:`hq-security-form`,children:[r?(0,K.jsxs)(`label`,{children:[(0,K.jsx)(`span`,{children:`Current password`}),(0,K.jsx)(`input`,{type:`password`,autoComplete:`current-password`,placeholder:`confirm with password`,value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`&&f&&d()}})]}):(0,K.jsxs)(`label`,{children:[(0,K.jsx)(`span`,{children:`Authenticator code`}),(0,K.jsx)(`input`,{type:`text`,inputMode:`numeric`,pattern:`[0-9]*`,maxLength:6,placeholder:`000000`,autoComplete:`one-time-code`,value:o,onChange:e=>s(e.target.value.replace(/\D/g,``).slice(0,6)),onKeyDown:e=>{e.key===`Enter`&&f&&d()}})]}),(0,K.jsxs)(`div`,{className:`hq-security-actions`,children:[(0,K.jsx)(`button`,{type:`button`,className:`hq-btn secondary`,disabled:e,onClick:()=>u(!1),children:`Cancel`}),(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn danger`,disabled:!f||e,onClick:()=>void d(),children:[(0,K.jsx)(l,{size:14}),`Confirm disable`]})]})]}):(0,K.jsx)(`div`,{className:`hq-security-actions`,children:(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn danger`,disabled:e,onClick:()=>u(!0),children:[(0,K.jsx)(l,{size:14}),`Disable 2FA`]})})}function ee(){let[e,t]=(0,W.useState)([]),[n,r]=(0,W.useState)(!0),[i,a]=(0,W.useState)(null),s=async()=>{try{let e=await p(`/api/auth/sessions`);if(!e.ok)throw Error(await q(e));let n=await e.json();t(n.sessions??[]),a(null)}catch(e){a(e instanceof Error?e.message:String(e))}finally{r(!1)}};(0,W.useEffect)(()=>{s()},[]);let c=async e=>{try{let t=await p(`/api/auth/sessions/${e}`,{method:`DELETE`});if(!t.ok)throw Error(await q(t));await s()}catch(e){a(e instanceof Error?e.message:String(e))}},l=async()=>{try{let e=await p(`/api/auth/sessions`,{method:`DELETE`});if(!e.ok)throw Error(await q(e));window.location.reload()}catch(e){a(e instanceof Error?e.message:String(e))}};return n?(0,K.jsx)(`p`,{className:`hq-security-hint`,children:`Loading sessions…`}):i?(0,K.jsx)(`p`,{className:`hq-security-message`,"data-tone":`error`,children:i}):e.length===0?(0,K.jsx)(`p`,{className:`hq-security-hint`,children:`No active sessions.`}):(0,K.jsxs)(`div`,{className:`hq-sessions-list`,children:[e.map(e=>(0,K.jsxs)(`div`,{className:`hq-session-row`,children:[(0,K.jsxs)(`div`,{className:`hq-session-info`,children:[(0,K.jsx)(`span`,{className:`hq-session-id`,children:e.shortId}),(0,K.jsx)(`span`,{className:`hq-session-kind`,children:e.kind}),(0,K.jsx)(`span`,{className:`hq-session-age`,children:e.ageMinutes<60?`${e.ageMinutes}m ago`:`${Math.round(e.ageMinutes/60)}h ago`}),(0,K.jsx)(`span`,{className:`hq-session-idle`,children:e.idleMinutes<1?`active now`:`idle ${e.idleMinutes}m`})]}),(0,K.jsx)(`button`,{type:`button`,className:`hq-btn small danger`,onClick:()=>void c(e.id),children:`Revoke`})]},e.id)),(0,K.jsx)(`div`,{className:`hq-security-actions`,style:{marginTop:`0.75rem`},children:(0,K.jsxs)(`button`,{type:`button`,className:`hq-btn danger`,onClick:()=>void l(),children:[(0,K.jsx)(o,{size:14}),`Sign out everywhere`]})})]})}var te={create:`Token created`,revoke:`Token revoked`,"first-run":`First-run bootstrap`,"expired-prune":`Expired tokens pruned`,"password-rotate":`Password rotated`};function ne(){let[e,t]=(0,W.useState)([]),[n,r]=(0,W.useState)(!0),[i,a]=(0,W.useState)(null);return(0,W.useEffect)(()=>{let e=!1;return(async()=>{try{let n=await p(`/api/auth/audit`);if(!n.ok)throw Error(await q(n));let r=await n.json();e||(t(r.entries??[]),a(null))}catch(t){e||a(t instanceof Error?t.message:String(t))}finally{e||r(!1)}})(),()=>{e=!0}},[]),n?(0,K.jsx)(`p`,{className:`hq-security-hint`,children:`Loading audit log…`}):i?(0,K.jsx)(`p`,{className:`hq-security-message`,"data-tone":`error`,children:i}):e.length===0?(0,K.jsx)(`p`,{className:`hq-security-hint`,children:`No auth events recorded.`}):(0,K.jsx)(`div`,{className:`hq-audit-list`,children:e.map((e,t)=>{let n=Math.round((Date.now()-e.at)/6e4),r=n<1?`just now`:n<60?`${n}m ago`:`${Math.round(n/60)}h ago`;return(0,K.jsxs)(`div`,{className:`hq-audit-row`,children:[(0,K.jsx)(`span`,{className:`hq-audit-kind`,children:te[e.kind]??e.kind}),(0,K.jsx)(`span`,{className:`hq-audit-scope`,children:e.scope}),(0,K.jsx)(`span`,{className:`hq-audit-token`,children:e.tokenId===`(password-rotation)`?`—`:e.tokenId.slice(0,8)}),e.actor?(0,K.jsx)(`span`,{className:`hq-audit-actor`,children:e.actor}):null,(0,K.jsx)(`span`,{className:`hq-audit-time`,children:r})]},`${e.at}-${t}`)})})}export{Z as SettingsView};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Zt as t}from"./icons-I81S_8cW.js";import{i as n}from"./markdown-C4I0Caum.js";import{s as r}from"./index-CtnLdVpJ.js";var i=e(t(),1),a=n();function o({points:e,color:t,height:n=140,format:r,emptyLabel:o=`no data`}){let[s,c]=(0,i.useState)(null),l=(0,i.useId)(),u=n,d=u-10-22,f=(0,i.useMemo)(()=>Math.max(...e.map(e=>e.value),0),[e]);if(e.length===0||f<=0)return(0,a.jsx)(`div`,{className:`hq-chart-empty`,children:o});let p=e.length,m=666/p,h=Math.max(2,Math.min(18,m-2)),g=e=>10+d*(1-e/f),_=[f*.25,f*.5,f*.75,f],v=Math.max(1,Math.round(p/5)),y=e=>new Date(e).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}),b=s===null?void 0:e[s];return(0,a.jsxs)(`div`,{className:`hq-chart`,children:[(0,a.jsxs)(`svg`,{viewBox:`0 0 720 ${u}`,className:`hq-chart-svg`,role:`img`,"aria-label":`Time series chart with ${e.length} data points`,onMouseLeave:()=>c(null),onMouseMove:t=>{let n=t.currentTarget.getBoundingClientRect(),r=(t.clientX-n.left)/n.width*720,i=Math.floor((r-46)/m);c(i>=0&&i<e.length?i:null)},children:[(0,a.jsx)(`clipPath`,{id:l,children:(0,a.jsx)(`rect`,{x:46,y:10,width:666,height:d})}),_.map((e,t)=>(0,a.jsxs)(`g`,{children:[(0,a.jsx)(`line`,{x1:46,x2:712,y1:g(e),y2:g(e),className:`hq-chart-grid`}),(0,a.jsx)(`text`,{x:40,y:g(e)+3,className:`hq-chart-ytick`,textAnchor:`end`,children:r(e)})]},t)),(0,a.jsx)(`line`,{x1:46,x2:712,y1:10+d,y2:10+d,className:`hq-chart-axis`}),(0,a.jsx)(`g`,{clipPath:`url(#${l})`,children:e.map((e,n)=>{let r=46+n*m+(m-h)/2,i=g(e.value),o=10+d-i;return o<=0?null:(0,a.jsx)(`rect`,{x:r,y:i,width:h,height:o,rx:Math.min(3,h/2),fill:t,opacity:s===null||s===n?1:.45},n)})}),e.map((e,t)=>t%v===0?(0,a.jsx)(`text`,{x:46+t*m+m/2,y:u-6,className:`hq-chart-xtick`,textAnchor:`middle`,children:y(e.ts)},t):null),(0,a.jsx)(`rect`,{x:46,y:10,width:666,height:d,fill:`transparent`})]}),b!==void 0&&(0,a.jsxs)(`div`,{className:`hq-chart-tooltip`,children:[(0,a.jsx)(`span`,{className:`hq-chart-tooltip-swatch`,style:{background:t}}),(0,a.jsx)(`span`,{className:`hq-chart-tooltip-value`,children:r(b.value)}),(0,a.jsx)(`span`,{className:`hq-chart-tooltip-time`,children:y(b.ts)})]})]})}var s=[{label:`1h`,ms:36e5},{label:`6h`,ms:216e5},{label:`24h`,ms:864e5},{label:`7d`,ms:6048e5}];function c(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(Math.round(e))}function l(e,t){let n=new Map;for(let r of e){let e=r[t];if(e!==void 0)for(let[t,r]of Object.entries(e)){let e=n.get(t);e===void 0?n.set(t,{...r}):(e.costUsd+=r.costUsd,e.inputTokens+=r.inputTokens,e.outputTokens+=r.outputTokens,e.cacheRead=(e.cacheRead??0)+(r.cacheRead??0),e.cacheWrite=(e.cacheWrite??0)+(r.cacheWrite??0))}}return[...n.entries()].map(([e,t])=>({key:e,entry:t})).sort((e,t)=>t.entry.costUsd-e.entry.costUsd)}function u(){let[e,t]=(0,i.useState)([]),[n,u]=(0,i.useState)(null),[f,p]=(0,i.useState)(s[2].ms);(0,i.useEffect)(()=>{let e=!1,n=()=>{r(`/api/trends/cost`).then(n=>{e||(t(n.samples),u(null))}).catch(t=>{e||u(t.message)})};n();let i=setInterval(n,3e4);return()=>{e=!0,clearInterval(i)}},[]);let{shown:m,totalCost:h,totalTokens:g,totalTools:_,byModel:v,byProvider:y,totalCacheRead:b,totalCacheWrite:x}=(0,i.useMemo)(()=>{let t=Date.now()-f,n=e.filter(e=>e.ts>=t),r=n.length>0?n:e.slice(-24),i=r.reduce((e,t)=>e+t.costUsd,0),a=r.reduce((e,t)=>e+t.inputTokens+t.outputTokens,0),o=r.reduce((e,t)=>e+t.toolCalls,0),s=l(r,`byModel`);return{shown:r,totalCost:i,totalTokens:a,totalTools:o,byModel:s,byProvider:l(r,`byProvider`),totalCacheRead:s.reduce((e,t)=>e+(t.entry.cacheRead??0),0),totalCacheWrite:s.reduce((e,t)=>e+(t.entry.cacheWrite??0),0)}},[e,f]);if(n!==null)return(0,a.jsxs)(`div`,{className:`hq-empty hq-empty-ornate`,children:[`Error loading trends: `,n]});if(e.length===0)return(0,a.jsx)(`div`,{className:`hq-empty hq-empty-ornate`,children:`No trend data yet. Trends accumulate as cost signals arrive.`});let S=v.length>0,C=b+x>0?b/(b+x)*100:null,w=s.find(e=>e.ms===f)?.label??`custom`;return(0,a.jsxs)(`div`,{className:`hq-screen hq-trends-screen`,children:[(0,a.jsxs)(`section`,{className:`hq-screen-hero hq-trends-hero`,"aria-label":`Telemetry trend summary`,children:[(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`span`,{className:`hq-section-kicker`,children:`Telemetry runway`}),(0,a.jsxs)(`h2`,{children:[w,` signal window`]}),(0,a.jsx)(`p`,{children:`Cost, tokens and tool activity are split into single-purpose charts so spikes stay attributable without dual-axis ambiguity.`})]}),(0,a.jsxs)(`div`,{className:`hq-hero-metrics`,children:[(0,a.jsx)(d,{label:`cost`,value:`$${h.toFixed(4)}`}),(0,a.jsx)(d,{label:`tokens`,value:c(g),tone:`warn`}),(0,a.jsx)(d,{label:`tool calls`,value:_.toLocaleString(),tone:`ok`}),C===null?null:(0,a.jsx)(d,{label:`cache hit`,value:`${C.toFixed(0)}%`})]})]}),(0,a.jsxs)(`div`,{className:`hq-filter-row hq-trends-filter-row`,children:[s.map(e=>(0,a.jsx)(`button`,{type:`button`,className:`hq-pill hq-filter-chip${f===e.ms?` selected`:``}`,onClick:()=>p(e.ms),children:e.label},e.label)),(0,a.jsxs)(`span`,{className:`hq-mono hq-row-subtle hq-ml-auto`,children:[m.length,` × 5-min buckets`]})]}),(0,a.jsxs)(`section`,{className:`hq-chart-gallery`,"aria-label":`Trend charts`,children:[(0,a.jsxs)(`div`,{className:`hq-card hq-chart-card primary`,children:[(0,a.jsx)(`div`,{className:`hq-section-head compact`,children:(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`span`,{className:`hq-section-kicker`,children:`Spend`}),(0,a.jsx)(`h3`,{children:`Cost (USD)`})]})}),(0,a.jsx)(o,{points:m.map(e=>({ts:e.ts,value:e.costUsd})),color:`var(--chart-1)`,format:e=>`$${e>=1?e.toFixed(2):e.toFixed(4)}`})]}),(0,a.jsxs)(`div`,{className:`hq-card hq-chart-card`,children:[(0,a.jsx)(`div`,{className:`hq-section-head compact`,children:(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`span`,{className:`hq-section-kicker`,children:`Volume`}),(0,a.jsx)(`h3`,{children:`Tokens (in + out)`})]})}),(0,a.jsx)(o,{points:m.map(e=>({ts:e.ts,value:e.inputTokens+e.outputTokens})),color:`var(--chart-2)`,format:c})]}),(0,a.jsxs)(`div`,{className:`hq-card hq-chart-card`,children:[(0,a.jsx)(`div`,{className:`hq-section-head compact`,children:(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`span`,{className:`hq-section-kicker`,children:`Activity`}),(0,a.jsx)(`h3`,{children:`Tool calls`})]})}),(0,a.jsx)(o,{points:m.map(e=>({ts:e.ts,value:e.toolCalls})),color:`var(--chart-3)`,format:e=>String(Math.round(e))})]})]}),S&&(0,a.jsxs)(`section`,{className:`hq-two-column hq-trends-breakdowns`,children:[(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`div`,{className:`hq-section-head compact`,children:(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`span`,{className:`hq-section-kicker`,children:`Model economics`}),(0,a.jsx)(`h3`,{children:`By Model`})]})}),(0,a.jsx)(`div`,{className:`hq-card hq-breakdown-card`,children:v.map(({key:e,entry:t})=>{let n=h>0?t.costUsd/h*100:0;return(0,a.jsxs)(`div`,{className:`hq-row hq-breakdown-row`,children:[(0,a.jsx)(`span`,{className:`hq-text-bright`,children:e}),(0,a.jsxs)(`span`,{className:`hq-mono hq-row-subtle`,children:[c(t.inputTokens),`→`,c(t.outputTokens),t.cacheRead!==void 0||t.cacheWrite!==void 0?` · cache ${c((t.cacheRead??0)+(t.cacheWrite??0))}`:``]}),(0,a.jsxs)(`span`,{className:`hq-cost-amount hq-ml-auto`,children:[`$`,t.costUsd.toFixed(4)]}),(0,a.jsxs)(`span`,{className:`hq-mono hq-row-subtle`,children:[n.toFixed(1),`%`]})]},e)})})]}),y.length>1&&(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`div`,{className:`hq-section-head compact`,children:(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`span`,{className:`hq-section-kicker`,children:`Provider split`}),(0,a.jsx)(`h3`,{children:`By Provider`})]})}),(0,a.jsx)(`div`,{className:`hq-card hq-breakdown-card`,children:y.map(({key:e,entry:t})=>{let n=h>0?t.costUsd/h*100:0;return(0,a.jsxs)(`div`,{className:`hq-row hq-breakdown-row`,children:[(0,a.jsx)(`span`,{className:`hq-text-bright`,children:e}),(0,a.jsxs)(`span`,{className:`hq-cost-amount hq-ml-auto`,children:[`$`,t.costUsd.toFixed(4)]}),(0,a.jsxs)(`span`,{className:`hq-mono hq-row-subtle`,children:[n.toFixed(1),`%`]})]},e)})})]})]})]})}function d({label:e,value:t,tone:n}){return(0,a.jsxs)(`div`,{className:`hq-hero-metric`,"data-tone":n,children:[(0,a.jsx)(`strong`,{children:t}),(0,a.jsx)(`span`,{children:e})]})}export{u as TrendsView};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Zt as t}from"./icons-C4ljWs50.js";import{s as n,u as r}from"./index-Ch5wZYYG.js";var i=e(t(),1);function a(e,t=200){let a=r(e=>e.events),[o,s]=(0,i.useState)([]),[c,l]=(0,i.useState)(!0);return(0,i.useEffect)(()=>{let r=!1;return n(`/api/events?type=${encodeURIComponent(e)}&limit=${t}`).then(e=>{r||(s([...e.events??[]].reverse()),l(!1))}).catch(()=>{r||l(!1)}),()=>{r=!0}},[e,t]),{events:(0,i.useMemo)(()=>{let t=new Set,n=[];for(let r of o)r.type!==e||t.has(r.id)||(t.add(r.id),n.push(r));for(let r of a)r.type!==e||t.has(r.id)||(t.add(r.id),n.push(r));return n},[o,a,e]),loading:c}}export{a as t};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{Zt as t}from"./icons-I81S_8cW.js";import{s as n,u as r}from"./index-CtnLdVpJ.js";var i=e(t(),1);function a(e,t=200){let a=r(e=>e.events),[o,s]=(0,i.useState)([]),[c,l]=(0,i.useState)(!0);return(0,i.useEffect)(()=>{let r=!1;return n(`/api/events?type=${encodeURIComponent(e)}&limit=${t}`).then(e=>{r||(s([...e.events??[]].reverse()),l(!1))}).catch(()=>{r||l(!1)}),()=>{r=!0}},[e,t]),{events:(0,i.useMemo)(()=>{let t=new Set,n=[];for(let r of o)r.type!==e||t.has(r.id)||(t.add(r.id),n.push(r));for(let r of a)r.type!==e||t.has(r.id)||(t.add(r.id),n.push(r));return n},[o,a,e]),loading:c}}export{a as t};