af360 0.1.14 → 0.1.15

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 (173) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/app-build-manifest.json +131 -133
  3. package/dist/.next/app-path-routes-manifest.json +21 -21
  4. package/dist/.next/build-manifest.json +5 -5
  5. package/dist/.next/prerender-manifest.json +43 -43
  6. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  7. package/dist/.next/server/app/_not-found.html +1 -1
  8. package/dist/.next/server/app/_not-found.rsc +3 -3
  9. package/dist/.next/server/app/ahead/page.js +1 -1
  10. package/dist/.next/server/app/ahead/page_client-reference-manifest.js +1 -1
  11. package/dist/.next/server/app/ahead.html +1 -1
  12. package/dist/.next/server/app/ahead.rsc +4 -4
  13. package/dist/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  14. package/dist/.next/server/app/api/card/route.js +1 -1
  15. package/dist/.next/server/app/api/card/route.js.nft.json +1 -1
  16. package/dist/.next/server/app/api/card/route_client-reference-manifest.js +1 -1
  17. package/dist/.next/server/app/api/check/route_client-reference-manifest.js +1 -1
  18. package/dist/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
  19. package/dist/.next/server/app/api/connections/route_client-reference-manifest.js +1 -1
  20. package/dist/.next/server/app/api/connectors/github/route_client-reference-manifest.js +1 -1
  21. package/dist/.next/server/app/api/consent/route_client-reference-manifest.js +1 -1
  22. package/dist/.next/server/app/api/context/route_client-reference-manifest.js +1 -1
  23. package/dist/.next/server/app/api/discover/route_client-reference-manifest.js +1 -1
  24. package/dist/.next/server/app/api/expiry/route_client-reference-manifest.js +1 -1
  25. package/dist/.next/server/app/api/first-light/route_client-reference-manifest.js +1 -1
  26. package/dist/.next/server/app/api/handoff/route_client-reference-manifest.js +1 -1
  27. package/dist/.next/server/app/api/health/route.js +1 -1
  28. package/dist/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  29. package/dist/.next/server/app/api/incidents/route_client-reference-manifest.js +1 -1
  30. package/dist/.next/server/app/api/insights/route.js +1 -1
  31. package/dist/.next/server/app/api/insights/route.js.nft.json +1 -1
  32. package/dist/.next/server/app/api/insights/route_client-reference-manifest.js +1 -1
  33. package/dist/.next/server/app/api/log/route.js +1 -1
  34. package/dist/.next/server/app/api/log/route_client-reference-manifest.js +1 -1
  35. package/dist/.next/server/app/api/pulse/route_client-reference-manifest.js +1 -1
  36. package/dist/.next/server/app/api/radar/route.js +1 -1
  37. package/dist/.next/server/app/api/radar/route_client-reference-manifest.js +1 -1
  38. package/dist/.next/server/app/api/report/route.js +1 -1
  39. package/dist/.next/server/app/api/report/route.js.nft.json +1 -1
  40. package/dist/.next/server/app/api/report/route_client-reference-manifest.js +1 -1
  41. package/dist/.next/server/app/api/services/route_client-reference-manifest.js +1 -1
  42. package/dist/.next/server/app/api/status/route.js +1 -1
  43. package/dist/.next/server/app/api/status/route.js.nft.json +1 -1
  44. package/dist/.next/server/app/api/status/route_client-reference-manifest.js +1 -1
  45. package/dist/.next/server/app/connections/page.js +2 -2
  46. package/dist/.next/server/app/connections/page_client-reference-manifest.js +1 -1
  47. package/dist/.next/server/app/connections.html +1 -1
  48. package/dist/.next/server/app/connections.rsc +4 -4
  49. package/dist/.next/server/app/dashboard/page_client-reference-manifest.js +1 -1
  50. package/dist/.next/server/app/dashboard.html +1 -1
  51. package/dist/.next/server/app/dashboard.rsc +3 -3
  52. package/dist/.next/server/app/discoveries/page.js +1 -1
  53. package/dist/.next/server/app/discoveries/page_client-reference-manifest.js +1 -1
  54. package/dist/.next/server/app/discoveries.html +1 -1
  55. package/dist/.next/server/app/discoveries.rsc +4 -4
  56. package/dist/.next/server/app/expiry/page_client-reference-manifest.js +1 -1
  57. package/dist/.next/server/app/expiry.html +1 -1
  58. package/dist/.next/server/app/expiry.rsc +3 -3
  59. package/dist/.next/server/app/fleet/page_client-reference-manifest.js +1 -1
  60. package/dist/.next/server/app/fleet.html +1 -1
  61. package/dist/.next/server/app/fleet.rsc +3 -3
  62. package/dist/.next/server/app/home/page_client-reference-manifest.js +1 -1
  63. package/dist/.next/server/app/home.html +1 -1
  64. package/dist/.next/server/app/home.rsc +3 -3
  65. package/dist/.next/server/app/legal/privacy/page_client-reference-manifest.js +1 -1
  66. package/dist/.next/server/app/legal/terms/page_client-reference-manifest.js +1 -1
  67. package/dist/.next/server/app/log/page.js +1 -1
  68. package/dist/.next/server/app/log/page_client-reference-manifest.js +1 -1
  69. package/dist/.next/server/app/log.html +1 -1
  70. package/dist/.next/server/app/log.rsc +4 -4
  71. package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
  72. package/dist/.next/server/app/projects/page.js +1 -1
  73. package/dist/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  74. package/dist/.next/server/app/projects.html +1 -1
  75. package/dist/.next/server/app/projects.rsc +4 -4
  76. package/dist/.next/server/app/radar/page.js +1 -64
  77. package/dist/.next/server/app/radar/page.js.nft.json +1 -1
  78. package/dist/.next/server/app/radar/page_client-reference-manifest.js +1 -1
  79. package/dist/.next/server/app/radar.html +1 -1
  80. package/dist/.next/server/app/radar.rsc +4 -4
  81. package/dist/.next/server/app/report/page.js +2 -2
  82. package/dist/.next/server/app/report/page.js.nft.json +1 -1
  83. package/dist/.next/server/app/report/page_client-reference-manifest.js +1 -1
  84. package/dist/.next/server/app/report.html +1 -1
  85. package/dist/.next/server/app/report.rsc +4 -4
  86. package/dist/.next/server/app/settings/page.js +1 -1
  87. package/dist/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  88. package/dist/.next/server/app/settings.html +1 -1
  89. package/dist/.next/server/app/settings.rsc +4 -4
  90. package/dist/.next/server/app/sites/page.js +1 -1
  91. package/dist/.next/server/app/sites/page_client-reference-manifest.js +1 -1
  92. package/dist/.next/server/app/sites.html +1 -1
  93. package/dist/.next/server/app/sites.rsc +4 -4
  94. package/dist/.next/server/app/welcome/page_client-reference-manifest.js +1 -1
  95. package/dist/.next/server/app/welcome.html +1 -1
  96. package/dist/.next/server/app/welcome.rsc +4 -4
  97. package/dist/.next/server/app-paths-manifest.json +21 -21
  98. package/dist/.next/server/chunks/2346.js +1 -1
  99. package/dist/.next/server/chunks/2465.js +64 -1
  100. package/dist/.next/server/chunks/2817.js +1 -1
  101. package/dist/.next/server/chunks/4825.js +1 -0
  102. package/dist/.next/server/chunks/572.js +1 -1
  103. package/dist/.next/server/chunks/6992.js +1 -1
  104. package/dist/.next/server/chunks/7511.js +1 -1
  105. package/dist/.next/server/chunks/7719.js +1 -1
  106. package/dist/.next/server/chunks/8134.js +1 -1
  107. package/dist/.next/server/chunks/876.js +1 -1
  108. package/dist/.next/server/chunks/9170.js +1 -1
  109. package/dist/.next/server/middleware-build-manifest.js +1 -1
  110. package/dist/.next/server/middleware-manifest.json +1 -1
  111. package/dist/.next/server/pages/404.html +1 -1
  112. package/dist/.next/server/pages/500.html +1 -1
  113. package/dist/.next/static/chunks/{1255-612df69cb02f2021.js → 1255-fc6c00ab2f765339.js} +1 -1
  114. package/dist/.next/static/chunks/3192-40ade9877c89ec45.js +1 -0
  115. package/dist/.next/static/chunks/5623-53fb7cea5de0afef.js +1 -0
  116. package/dist/.next/static/chunks/7897-b9c15e8805df61ef.js +1 -0
  117. package/dist/.next/static/chunks/8050-a75457e83cd8be0f.js +1 -0
  118. package/dist/.next/static/chunks/app/ahead/page-75602559f92be6c4.js +1 -0
  119. package/dist/.next/static/chunks/app/connections/page-ff9d0b4e4fcf5ebe.js +1 -0
  120. package/dist/.next/static/chunks/app/discoveries/{page-52696e6ee0c8d3d5.js → page-6b06c0c2a94f3b94.js} +1 -1
  121. package/dist/.next/static/chunks/app/{error-37987420de14c10c.js → error-c67c297ef2dd70de.js} +1 -1
  122. package/dist/.next/static/chunks/app/log/page-842048c36f071dd6.js +1 -0
  123. package/dist/.next/static/chunks/app/projects/{page-75a41d4a90675d93.js → page-1d6b330842a2ff80.js} +1 -1
  124. package/dist/.next/static/chunks/app/radar/page-584b42327baac21b.js +1 -0
  125. package/dist/.next/static/chunks/app/report/page-9dc52d7f76569e42.js +1 -0
  126. package/dist/.next/static/chunks/app/settings/{page-a38c457b7c57567b.js → page-582279bf3fe509d4.js} +1 -1
  127. package/dist/.next/static/chunks/app/sites/page-3dcc5a0990fae677.js +1 -0
  128. package/dist/.next/static/chunks/{main-6828c74376f2b965.js → main-574ae5bf2f2165c4.js} +1 -1
  129. package/dist/.next/static/css/fbb4cf81dde34731.css +1 -0
  130. package/dist/build-id.json +140 -142
  131. package/dist/node_modules/@next/env/package.json +1 -1
  132. package/dist/node_modules/next/dist/build/swc/index.js +1 -1
  133. package/dist/node_modules/next/dist/build/webpack-config.js +2 -2
  134. package/dist/node_modules/next/dist/compiled/next-server/app-page-experimental.runtime.prod.js +2 -2
  135. package/dist/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +2 -2
  136. package/dist/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +2 -2
  137. package/dist/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js +2 -2
  138. package/dist/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js +1 -1
  139. package/dist/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +7 -7
  140. package/dist/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js +2 -2
  141. package/dist/node_modules/next/dist/lib/has-necessary-dependencies.js +2 -0
  142. package/dist/node_modules/next/dist/lib/verify-typescript-setup.js +19 -0
  143. package/dist/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +1 -1
  144. package/dist/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  145. package/dist/node_modules/next/dist/server/image-optimizer.js +22 -2
  146. package/dist/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  147. package/dist/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +17 -4
  148. package/dist/node_modules/next/dist/server/lib/start-server.js +1 -1
  149. package/dist/node_modules/next/dist/shared/lib/canary-only.js +1 -1
  150. package/dist/node_modules/next/dist/shared/lib/router/utils/escape-path-delimiters.js +1 -1
  151. package/dist/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  152. package/dist/node_modules/next/dist/telemetry/events/version.js +2 -2
  153. package/dist/node_modules/next/package.json +11 -11
  154. package/dist/package.json +2 -2
  155. package/dist/shell/bin/af360-bridge.exe +0 -0
  156. package/package.json +2 -2
  157. package/shell/bin/af360-bridge.exe +0 -0
  158. package/dist/.next/server/chunks/1155.js +0 -1
  159. package/dist/.next/server/chunks/6584.js +0 -1
  160. package/dist/.next/static/chunks/1681-b233404f9ec2fc2e.js +0 -1
  161. package/dist/.next/static/chunks/2036-e29441d605c493a4.js +0 -1
  162. package/dist/.next/static/chunks/3192-6b341d547a49fa85.js +0 -1
  163. package/dist/.next/static/chunks/5623-ec4f1a6f7695d8d1.js +0 -1
  164. package/dist/.next/static/chunks/7897-6e6c509aea495560.js +0 -1
  165. package/dist/.next/static/chunks/app/ahead/page-e72bed448dd40bd5.js +0 -1
  166. package/dist/.next/static/chunks/app/connections/page-5d6cae02e6f2b49a.js +0 -1
  167. package/dist/.next/static/chunks/app/log/page-45b4cfd8f1a29d09.js +0 -1
  168. package/dist/.next/static/chunks/app/radar/page-4b4aad549dffcd3a.js +0 -1
  169. package/dist/.next/static/chunks/app/report/page-145496e8f0d5bc86.js +0 -1
  170. package/dist/.next/static/chunks/app/sites/page-96a7dcf3c1e9aa19.js +0 -1
  171. package/dist/.next/static/css/94d302c686de7e23.css +0 -1
  172. /package/dist/.next/static/{0b943e6aa8d5ffe860588 → 4602553707d90d0fadeba}/_buildManifest.js +0 -0
  173. /package/dist/.next/static/{0b943e6aa8d5ffe860588 → 4602553707d90d0fadeba}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=7511,exports.ids=[7511],exports.modules={27511:(a,b,c)=>{c.d(b,{cc:()=>u,Uj:()=>B,ou:()=>C,ct:()=>K,kc:()=>L,aA:()=>t,G2:()=>F,yn:()=>w,j4:()=>N,Wj:()=>s});var d=c(21124),e=c(38301),f=c(73450),g=c(60521),h=c(7240),i=c(71322),j=c(99511),k=c(31296),l=c(78530),m=c(72338),n=c(40850),o=c(95938);let p={unreachable:"no connection",down:"GitHub down",expired:"token expired",unauthorized:"token refused",forbidden:"not granted",ratelimited:"rate limit",timeout:"no answer",moved:"remote moved","past-ceiling":"past the scan limit"},q=Object.fromEntries(Object.keys(p).map(a=>[a,`GitHub not checked (${p[a]})`]));var r=c(80891);function s(a){let b=(0,l.kj)();(0,l.cO)();let[c,f]=(0,e.useState)(null),[g,h]=(0,e.useState)(null),i=(0,l.Je)(),j=a=>{h(a),setTimeout(()=>h(b=>b===a?null:b),4500)},m=async(c,d,e,f)=>{let g=await a.doIgnore(c,d,e,f);j(g.ok?i((0,n.ph)("toast.ignored",k.UI.radar.ignoredToast,e)):g.message??b("common.somethingWrong",k.UI.common.somethingWrong))},o=(0,d.jsxs)(d.Fragment,{children:[g&&(0,d.jsx)("div",{className:"toast",role:"status",children:g}),c&&(0,d.jsx)("div",{className:"confirm-overlay",role:"dialog","aria-modal":"true",children:(0,d.jsxs)("div",{className:"confirm",children:[(0,d.jsx)("p",{children:c.message}),(0,d.jsxs)("div",{className:"setup-actions",children:[(0,d.jsx)("button",{className:"b",onClick:()=>{m(c.id,c.kind,c.label,c.snapshot),f(null)},children:b("act.ignoreIt",k.UI.radar.ignoreIt)}),(0,d.jsx)("button",{className:"b accent",onClick:()=>f(null),children:b("act.keepWatching",k.UI.radar.keepWatching)})]})]})})]});return{requestIgnore:(a,b,c,d,e,g)=>{d?f({id:a,kind:b,label:c,message:e,snapshot:g}):m(a,b,c,g)},ignoreThen:m,showToast:j,overlays:o}}function t({view:a,onChange:b}){return(0,d.jsx)(j.fn,{view:a,onChange:b})}function u({value:a,onChange:b,showLabel:c=k.UI.common.show,hideLabel:e=k.UI.common.collapse,showKey:f="btn.show",hideKey:g="btn.collapse"}){return(0,d.jsx)("button",{className:"collapse","aria-expanded":!a,onClick:()=>b(!a),children:a?(0,d.jsx)(l.T,{k:f,en:c}):(0,d.jsx)(l.T,{k:g,en:e})})}function v({pinned:a,onPin:b,onIgnore:c}){let e=(0,l.kj)(),f=(0,l.cO)();return(0,d.jsx)(j.ob,{actions:[{label:a?e("act.unpin",k.UI.radar.unpin):e("act.pin",k.UI.radar.pinLabel),title:f.pin,onClick:b,effect:a?e("eff.unpin",k.UI.radar.effUnpin):e("eff.pin",k.UI.radar.effPin)},{label:e("act.ignore",k.UI.radar.ignoreLabel),title:f.ignore,onClick:c,effect:e("eff.ignore",k.UI.radar.effIgnore)}]})}let w=a=>a.path.toLowerCase();function x(a){if(!a)return null;let b=new Date(a).getTime();if(!Number.isFinite(b))return null;let c=Date.now()-b;return c<0?null:Math.floor(c/864e5)}function y({p:a,tone:b,cockpit:c}){let e=(0,l.kj)(),i=null!==b&&"clean"!==b,j=(0,l.cO)(),n=x(a.lastActivity),o=c.isDupe(a.name)&&("dormant"===a.staleness||"forgotten"===a.staleness)?(0,g.ih)(a,c.projects):null,p=o&&"unproven"!==o.kind?o.others:[],q=p.length>0?p.map(a=>(0,h.oV)(a.path,26)).join(", "):null,s=null!==q,t=[];return a.changedTotal>0&&t.push((0,d.jsxs)("b",{...(0,r.uN)(j.unsaved),children:[a.changedTotal," unsaved"]},"u")),a.deleted>0&&t.push((0,d.jsxs)("b",{...(0,r.uN)(j.deleted),children:[a.deleted," deleted"]},"del")),(a.ahead??0)>0&&t.push(a.uncommitted>0?(0,d.jsxs)("span",{...(0,r.uN)(j.unpushed),children:[a.ahead," unpushed"]},"a"):(0,d.jsxs)("b",{...(0,r.uN)(j.unpushed),children:[a.ahead," unpushed"]},"a")),(0,g.ze)(a)&&t.push((0,d.jsx)("b",{...(0,r.uN)(j.onlyHere),children:"only on this machine"},"nr")),a.isGit||a.looksDownloaded||t.push((0,d.jsx)("span",{...(0,r.uN)(j.noHistory),children:"no git history"},"ng")),s&&0===a.uncommitted&&null!==n&&t.push((0,d.jsxs)("span",{...(0,r.uN)(j.dormant),children:["dormant ",n,"d"]},"d")),q&&o?.kind==="duplicate"?t.push((0,d.jsxs)("span",{...(0,r.uN)(j.duplicate),children:["duplicate of ",q]},"dup")):q&&o?.kind==="sharesName"&&t.push((0,d.jsxs)("span",{...(0,r.uN)(j.sharesName),children:["shares a name with ",q]},"dup")),null===b?t.push((0,d.jsx)("span",{className:"dim-t",children:(0,d.jsx)(m.h,{children:e("common.checking",k.UI.common.checking)})},"chk")):i||t.push((0,d.jsx)("span",{className:"okw",...(0,r.uN)(j.clean),children:"clean ✓"},"ok")),a.looksDownloaded?t.push((0,d.jsx)("span",{...(0,r.uN)(j.downloadedCopy),children:"looks downloaded"},"dl")):a.lastActivity&&!(s&&0===a.uncommitted)&&t.push((0,d.jsxs)("span",{children:[a.lastCommit?i?"last commit ":"committed ":"touched ",(0,d.jsx)(f.fV,{ts:a.lastActivity})]},"t")),(0,d.jsx)("div",{className:"c-fact",children:t.map((a,b)=>(0,d.jsxs)("span",{children:[b>0&&" \xb7 ",a]},b))})}function z(a,b=(a,b)=>b){return[w(a),"project",a.name,(0,g.ze)(a),b("confirm.projectShort",k.UI.radar.confirmProjectShort),{uncommitted:a.uncommitted,hasRemote:a.hasRemote}]}function A({p:a,cockpit:b}){let c=(0,e.useContext)(f.vC),h=(0,l.kj)(),i=(0,l.cO)(),j=(b.cfg?.roots??[]).find(b=>b.toLowerCase()===w(a));return(0,d.jsxs)(d.Fragment,{children:[a.looksDownloaded?(0,d.jsx)("span",{children:"Looks like something downloaded rather than something you wrote."}):(0,g.ze)(a)?(0,d.jsx)("span",{children:"No remote copy exists - one disk failure and it's gone."}):a.hasRemote?(0,d.jsxs)("span",{...(0,r.uN)(i.remote),children:["Backed up to a remote ✓",(a.ahead??0)>0&&(0,d.jsxs)(d.Fragment,{children:[" - ",a.ahead," commit",1===a.ahead?"":"s"," not pushed yet"]})]}):null,c&&a.isGit&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{className:"mono",children:["branch ",a.branch??"-"," \xb7 remote ",a.remoteUrl??a.remoteName??"-",null!=a.ahead&&null!=a.behind&&(0,d.jsxs)(d.Fragment,{children:[" \xb7 ",a.ahead," ahead / ",a.behind," behind"]}),null!=a.commitCount&&(0,d.jsxs)(d.Fragment,{children:[" \xb7 ",a.commitCount," commits"]})]}),a.dirtyFiles.length>0&&(0,d.jsxs)("span",{className:"mono",children:["changed: ",a.dirtyFiles.join(", "),a.changedTotal>a.dirtyFiles.length?` … +${a.changedTotal-a.dirtyFiles.length} more`:""]}),a.deletedFiles.length>0&&(0,d.jsxs)("span",{className:"mono",children:["deleted: ",a.deletedFiles.join(", "),a.deleted>a.deletedFiles.length?` … +${a.deleted-a.deletedFiles.length} more`:""]})]}),c&&(0,d.jsx)("span",{className:"mono",children:a.path}),j&&(0,d.jsx)("button",{className:"b danger",style:{justifySelf:"start"},...(0,r.uN)(i.unwatch),onClick:()=>b.post({action:"removeRoot",path:j}).then(a=>{a.ok&&b.resolveRow(j)}),children:h("act.stopWatchingFolder",k.UI.radar.stopWatchingFolder)})]})}function B({p:a,tone:b,cockpit:c,change:e,open:f,onToggle:g,onIgnoreRequest:j,onToast:m}){let n=null!==b&&"clean"!==b,o=c.isPinned(w(a)),p=(0,l.kj)();return(0,l.cO)(),(0,d.jsxs)("div",{[i.J6]:w(a),className:`card${n?" warn":""}${o?" pinned":""}`,children:[(0,d.jsxs)("div",{className:"c-top",children:[(0,d.jsx)("span",{className:`dot ${null===b?"u":n?"a":"g"}`,"aria-hidden":!0}),(0,d.jsx)("b",{children:a.name}),e&&(0,d.jsx)("span",{className:"chg",children:e})]}),(0,d.jsx)(y,{p:a,tone:b,cockpit:c}),(0,d.jsx)(D,{p:a,cockpit:c}),(0,d.jsx)("div",{className:"c-path",children:(0,h.oV)(a.path,40)}),(0,d.jsxs)("div",{className:"c-foot",children:[(0,d.jsx)("button",{className:"b2 q",onClick:g,"aria-expanded":f,children:f?(0,d.jsx)(l.T,{k:"btn.hide",en:k.UI.common.hide}):(0,d.jsx)(l.T,{k:"btn.details",en:k.UI.common.details})}),!c.demo&&(0,d.jsx)(i.Fb,{cockpit:c,project:a,onToast:m,link:!0}),!c.demo&&(0,d.jsx)(i.r8,{path:a.path}),(0,d.jsx)(v,{pinned:o,onPin:()=>c.togglePin(w(a)),onIgnore:()=>j(...z(a,p))})]}),f&&(0,d.jsx)("div",{className:"c-detail",children:(0,d.jsx)(A,{p:a,cockpit:c})})]})}function C({p:a,tone:b,cockpit:c,change:e,open:f,onToggle:g,onIgnoreRequest:j}){let k=null!==b&&"clean"!==b,m=c.isPinned(w(a)),n=c.isDupe(a.name),o=(0,l.kj)();return(0,l.cO)(),(0,d.jsxs)("div",{[i.J6]:w(a),className:`irow${k?" warn":""}`,children:[(0,d.jsxs)("div",{className:"irow-line",children:[(0,d.jsxs)("button",{className:"irow-main",onClick:g,"aria-expanded":f,children:[(0,d.jsx)("span",{className:`dot ${null===b?"u":k?"a":"g"}`,"aria-hidden":!0}),(0,d.jsxs)("span",{className:"irow-name",children:[a.name,n&&(0,d.jsxs)("span",{className:"irow-parent",children:[" (",function(a){let b=a.split(/[\\/]/).filter(Boolean);return b.length>1?b[b.length-2]:a}(a.path),")"]})]}),e&&(0,d.jsx)("span",{className:"chg",children:e}),(0,d.jsx)("span",{className:`irow-truth${k?" warn":""}`,children:(0,d.jsx)(E,{p:a,tone:b,cockpit:c})}),(0,d.jsx)("span",{className:"irow-path",children:(0,h.oV)(a.path,40)})]}),(0,d.jsx)(D,{p:a,cockpit:c}),(0,d.jsxs)("span",{className:"qk",children:[!c.demo&&(0,d.jsx)(i.r8,{path:a.path}),(0,d.jsx)(v,{pinned:m,onPin:()=>c.togglePin(w(a)),onIgnore:()=>j(...z(a,o))})]})]}),f&&(0,d.jsx)("div",{className:"irow-detail",children:(0,d.jsx)(A,{p:a,cockpit:c})})]})}function D({p:a,cockpit:b}){var c;let e=(0,l.kj)(),g=b.radar?.github??null;if(!g)return null;let h=(c=a.path,g?g.byPath[c.toLowerCase()]??null:null),i=function(a){if(!a)return null;let b=/[/@]github\.com[:/]+([^/]+)\/([^/]+?)(?:\.git)?\/?$/.exec(a);return b?`${b[1]}/${b[2]}`:null}(a.remoteUrl),j=i?(0,d.jsxs)("span",{className:"gh-prov",children:[(0,d.jsx)(o.En,{children:i}),h?.ok?(0,d.jsxs)(d.Fragment,{children:[" \xb7 ",e("connections.ghCardChecked",k.UI.connections.ghCardChecked)," ",(0,d.jsx)(f.fV,{ts:g.at})]}):h?null:(0,d.jsxs)(d.Fragment,{children:[" \xb7 ",e("connections.ghCardNever",k.UI.connections.ghCardNever)]})]}):null;if(!h)return g.outage?(0,d.jsxs)("span",{className:"gh-chips",children:[j,(0,d.jsx)(o.En,{children:(0,d.jsx)("span",{className:"chip plain",children:"GitHub not checked yet"})})]}):null;if(!h.ok)return(0,d.jsxs)("span",{className:"gh-chips",children:[j,(0,d.jsx)(o.En,{children:(0,d.jsx)("span",{className:"chip plain",children:q[h.kind]})})]});let m=h.value,n=[];if(m.ci.ok&&m.ci.value){let a=m.ci.value,b="passing"===a.state?"calm":"failing"===a.state?"bad":"plain",c="passing"===a.state?"✓":"failing"===a.state?"✗":"\xb7";n.push((0,d.jsxs)("span",{className:`chip ${b}`,children:["CI ",c," ",a.branch]},"ci"))}else{let a;m.ci.ok||n.push((0,d.jsx)("span",{className:"chip plain",children:(a=m.ci.kind,`CI not checked (${p[a]})`)},"ci"))}if(m.prCount.ok&&m.prCount.value>0){let a=m.prCount.value;n.push((0,d.jsxs)("span",{className:"chip plain",children:[a,m.prCapped?"+":""," PR",1!==a||m.prCapped?"s":""]},"pr"))}if(m.issueCount.ok&&m.issueCount.value>0){let a=m.issueCount.value;n.push((0,d.jsxs)("span",{className:"chip plain",children:[a," issue",1===a?"":"s"]},"is"))}return("confirmed"===m.backup.verdict&&n.push((0,d.jsx)("span",{className:"chip calm",...(0,r.uN)("af360 asked GitHub, and GitHub has this exact commit"),children:"GitHub confirms"},"bk")),0===n.length)?j?(0,d.jsx)("span",{className:"gh-chips",children:j}):null:(0,d.jsxs)("span",{className:"gh-chips",children:[j,(0,d.jsx)(o.En,{children:n})]})}function E({p:a,tone:b,cockpit:c}){let e=(0,l.cO)(),h=c.isDupe(a.name)&&("dormant"===a.staleness||"forgotten"===a.staleness)?(0,g.ih)(a,c.projects):null,i=h?.kind==="duplicate",j=x(a.lastActivity);return a.looksDownloaded?(0,d.jsx)("span",{...(0,r.uN)(e.downloadedCopy),children:"looks downloaded"}):a.uncommitted>0?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{...(0,r.uN)(e.unsaved),children:[a.uncommitted," unsaved"]})," \xb7 last commit ",a.lastActivity?(0,d.jsx)(f.fV,{ts:a.lastActivity}):"never"]}):(0,g.ze)(a)?(0,d.jsx)("span",{...(0,r.uN)(e.onlyHere),children:"only on this machine"}):(a.ahead??0)>0?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{...(0,r.uN)(e.unpushed),children:[a.ahead," unpushed"]})," \xb7 committed ",a.lastActivity?(0,d.jsx)(f.fV,{ts:a.lastActivity}):"-"]}):"clean"!==b&&i&&null!==j?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{...(0,r.uN)(e.dormant),children:["dormant ",j,"d"]})," \xb7 ",(0,d.jsx)("span",{...(0,r.uN)(e.duplicate),children:"duplicate"})]}):a.lastActivity?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{...(0,r.uN)(e.clean),children:"clean ✓"})," \xb7 committed ",(0,d.jsx)(f.fV,{ts:a.lastActivity})]}):(0,d.jsx)("span",{...(0,r.uN)(e.noHistory),children:"no history"})}function F(a,b){return a.find(a=>a.subjectId===b)??null}function G(a){let b=a.entry.label||P(a.entry.url),c=!!a.current&&!a.current.ok;return[a.entry.id,"url",b,c,k.UI.radar.confirmSite,{down:c}]}function H({u:a,incident:b}){let c=(0,e.useContext)(f.vC),g=(0,l.kj)();(0,l.cO)();let h=a.current;if(!h)return(0,d.jsx)("span",{children:(0,d.jsx)(m.h,{children:g("site.firstCheck",k.UI.radar.firstCheck)})});if(!h.ok)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("b",{children:Q(a.sinceText)}),c&&h.status?` \xb7 HTTP ${h.status}`:"",b?.acknowledged?" \xb7 being handled ✓":""]});let i=Q(a.sinceText).replace(/^up for /,"up "),j=b?.endedTs?(0,d.jsxs)(d.Fragment,{children:["last incident ",(0,d.jsx)(f.fV,{ts:b.endedTs})]}):(0,d.jsx)(d.Fragment,{children:"no incidents while watching"});return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"okw",children:i})," \xb7 ","number"==typeof h.ms?`${h.ms} ms`:"-",c&&h.status?` \xb7 HTTP ${h.status}`:""," \xb7 ",j]})}function I({u:a,cockpit:b}){let c=a.current,e=P(a.entry.url),f=b.expiry?.items.find(a=>"ssl"===a.kind&&a.name===e),g=Object.entries(c?.headers??{}),h=["strict-transport-security","content-security-policy"].filter(a=>!(c?.headers??{})[a]);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{className:"mono",children:["HTTP ",c?.status??"-"," \xb7 total ","number"==typeof c?.ms?`${c.ms} ms`:"-"," \xb7 checked ",c?new Date(c.ts).toLocaleTimeString():"-"]}),f&&(0,d.jsxs)("span",{className:"mono",children:["cert: ",f.issuer??"unknown issuer",f.serial?` \xb7 serial ${f.serial}`:""]}),g.length>0&&(0,d.jsxs)("span",{className:"mono",children:["headers: ",g.map(([a,b])=>`${a}: ${b}`).join(" \xb7 ")]}),h.length>0&&(0,d.jsxs)("span",{className:"mono",children:["missing: ",h.join(", ")]})]})}function J({u:a,cockpit:b,incident:c}){let g=(0,l.kj)(),h=(0,l.cO)(),i=(0,e.useContext)(f.vC);return(0,d.jsxs)(d.Fragment,{children:[c&&!c.endedTs&&(0,d.jsxs)("span",{children:["Ongoing: down since ",(0,d.jsx)(f.fV,{ts:c.startedTs,skewForm:"core"}),c.acknowledged?" \xb7 being handled ✓":""]}),i&&(0,d.jsx)(I,{u:a,cockpit:b}),(0,d.jsx)("a",{href:a.entry.url,target:"_blank",rel:"noreferrer",children:a.entry.url}),(0,d.jsx)("button",{className:"b danger",style:{justifySelf:"start"},...(0,r.uN)(h.unwatch),onClick:()=>b.post({action:"removeUrl",id:a.entry.id}).then(c=>{c.ok&&b.resolveRow(a.entry.id)}),children:g("act.stopWatchingSite",k.UI.radar.stopWatchingSite)})]})}function K({u:a,tone:b,cockpit:c,incident:e,open:f,onToggle:g,onIgnoreRequest:j,extra:m}){let n=a.current,o="red"===b;(0,l.kj)(),(0,l.cO)();let p=c.isPinned(a.entry.id),q=a.entry.label||P(a.entry.url);return(0,d.jsxs)("div",{className:`card site${o?" bad":""}${p?" pinned":""}`,children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"c-top",children:[(0,d.jsx)("span",{className:`dot ${null===b||!n?"u":o?"r":"g"}`,"aria-hidden":!0}),(0,d.jsx)("b",{children:q})]}),(0,d.jsx)("div",{className:"c-fact",children:(0,d.jsx)(H,{u:a,incident:e})}),(0,d.jsx)("div",{className:"c-path",children:(0,h.oV)(a.entry.url,44)}),(0,d.jsxs)("div",{className:"c-foot",children:[(0,d.jsx)("button",{className:"b2 q",onClick:g,"aria-expanded":f,children:f?(0,d.jsx)(l.T,{k:"btn.hide",en:k.UI.common.hide}):(0,d.jsx)(l.T,{k:"btn.details",en:k.UI.common.details})}),(0,d.jsx)(i.r8,{path:a.entry.url,label:k.UI.radar.copyAddress,labelKey:"btn.copyAddress"}),(0,d.jsx)(v,{pinned:p,onPin:()=>c.togglePin(a.entry.id),onIgnore:()=>j(...G(a))}),m]})]}),(0,d.jsx)(M,{history:a.history}),f&&(0,d.jsx)("div",{className:"c-detail",style:{gridColumn:"1 / -1"},children:(0,d.jsx)(J,{u:a,cockpit:c,incident:e})})]})}function L({u:a,tone:b,cockpit:c,incident:e,open:f,onToggle:g,onIgnoreRequest:j,extra:n}){let o=a.current,p="red"===b,q=(0,l.kj)();(0,l.cO)();let r=c.isPinned(a.entry.id),s=a.entry.label||P(a.entry.url);return(0,d.jsxs)("div",{className:`irow${p?" bad":""}`,children:[(0,d.jsxs)("div",{className:"irow-line",children:[(0,d.jsxs)("button",{className:"irow-main",onClick:g,"aria-expanded":f,children:[(0,d.jsx)("span",{className:`dot ${null===b||!o?"u":p?"r":"g"}`,"aria-hidden":!0}),(0,d.jsx)("span",{className:"irow-name",children:s}),(0,d.jsx)("span",{className:`irow-truth${p?" bad":""}`,children:o?p?Q(a.sinceText):`${Q(a.sinceText).replace(/^up for /,"up ")} \xb7 ${o.ms} ms`:(0,d.jsx)(m.h,{children:q("site.firstCheck",k.UI.radar.firstCheck)})}),(0,d.jsx)("span",{className:"irow-path",children:(0,h.oV)(a.entry.url,36)})]}),(0,d.jsxs)("span",{className:"qk",children:[(0,d.jsx)(i.r8,{path:a.entry.url,label:k.UI.radar.copyAddress,labelKey:"btn.copyAddress"}),(0,d.jsx)(v,{pinned:r,onPin:()=>c.togglePin(a.entry.id),onIgnore:()=>j(...G(a))}),n]})]}),f&&(0,d.jsxs)("div",{className:"irow-detail",children:[(0,d.jsx)("div",{style:{maxInlineSize:260},children:(0,d.jsx)(M,{history:a.history})}),(0,d.jsx)(J,{u:a,cockpit:c,incident:e})]})]})}function M({history:a}){let b=(0,l.kj)();if((0,l.cO)(),a.length<10){let c=a.length>0?Math.round((Date.now()-a[0].ts)/6e4):0,e=c>0?c:0;return(0,d.jsx)("div",{className:"spark",children:(0,d.jsxs)("span",{className:"spark-wait",children:[b("site.historyBuilds",k.UI.radar.historyBuilds),e>0?` \xb7 ${e}m watched`:(0,d.jsx)(m.g,{})]})})}let c=a.length>40?function(a,b){let c=[];for(let d=0;d<40;d++)c.push(a[Math.round(d*(a.length-1)/(b-1))]);return c}(a,40):a,e=c.filter(a=>a.ok&&"number"==typeof a.ms).map(a=>a.ms),f=Math.max(...e,1),g=Math.min(...e),h=a=>130*a/(c.length-1),i=c.map((a,b)=>a.ok&&"number"==typeof a.ms?`${h(b).toFixed(1)},${(30-(a.ms-g)/Math.max(1,f-g)*20).toFixed(1)}`:null).filter(Boolean);return(0,d.jsxs)("div",{className:"spark",children:[(0,d.jsxs)("svg",{viewBox:"0 0 130 34",preserveAspectRatio:"none",role:"img","aria-label":b("site.sparkAria",k.UI.radar.sparkAria),children:[(0,d.jsx)("polygon",{points:`0,34 ${i.join(" ")} 130,34`,fill:"color-mix(in srgb, var(--ok) 12%, transparent)"}),(0,d.jsx)("polyline",{points:i.join(" "),fill:"none",stroke:"var(--ok)",strokeWidth:"1.5"}),c.map((a,b)=>!a.ok&&(0,d.jsx)("rect",{x:h(b)-1.2,y:29,width:2.4,height:4,fill:"var(--bad)"},b))]}),(0,d.jsxs)("span",{className:"cap",children:["24h \xb7 ",g,"-",f," ms"]})]})}function N(a,b,c,d=[]){let[f,g]=(0,e.useState)(null);return O(()=>{let d=()=>{let d=a.current;if(!d||0===b)return;let e=d.firstElementChild;if(!e)return;let f=getComputedStyle(d),h=f.gridTemplateColumns.split(" ").filter(a=>"none"!==a&&""!==a).length||1,i=parseFloat(f.rowGap)||0,j=parseFloat(f.columnGap)||0,k=e.getBoundingClientRect(),l=k.height+i;if(l<=0)return;let m=(d.getBoundingClientRect().width-(h-1)*j)/h,n=Math.max(1,Math.floor(h/Math.max(1,Math.round((k.width+j)/(m+j))))),o=d.getBoundingClientRect().top,p=Math.min(b,Math.max(1,Math.floor((window.innerHeight-o-c+i)/l))*n);g(a=>a===p?a:p)};d();let e=setTimeout(d,120);return window.addEventListener("resize",d),()=>{clearTimeout(e),window.removeEventListener("resize",d)}},[b,c,...d]),null==f?b:Math.min(f,b)}let O=e.useEffect;function P(a){try{return new URL(a).hostname}catch{return a}}function Q(a){return a.charAt(0).toLowerCase()+a.slice(1)}},99511:(a,b,c)=>{c.d(b,{fn:()=>m,hf:()=>l,ob:()=>k,tU:()=>n});var d=c(21124),e=c(38301),f=c(23312),g=c(31296),h=c(78530),i=c(95938),j=c(80891);function k({actions:a,label:b}){let[c,i]=(0,e.useState)(!1),[k,l]=(0,e.useState)(null),m=(0,e.useRef)(null),n=(0,e.useRef)(null),o=(0,e.useId)(),p=(0,h.kj)(),q=(0,h.cO)();return((0,e.useCallback)(()=>{let a=m.current?.firstElementChild;if(!a)return;let b=a.getBoundingClientRect(),c=n.current?.offsetHeight??0,d=window.innerHeight-b.bottom,e=c>0&&d<c+8&&b.top>d;l({top:e?b.top-c-4:b.bottom+4,end:Math.max(4,window.innerWidth-b.right),flip:e})},[]),0===a.length)?null:(0,d.jsxs)("div",{className:"ovf",ref:m,children:[(0,d.jsxs)("button",{className:"ovf-btn",type:"button","aria-haspopup":"menu","aria-expanded":c,"aria-controls":o,...(0,j.uN)(q.moreActions),onClick:()=>i(a=>!a),children:[(0,d.jsx)(h.T,{k:"btn.more",en:b??g.UI.radar.moreActions})," ",(0,d.jsx)("span",{"aria-hidden":!0,children:"▾"})]}),c&&"undefined"!=typeof document&&(0,f.createPortal)((0,d.jsx)("div",{className:"ovf-menu",id:o,role:"menu",ref:n,"aria-label":p("act.moreAria",g.UI.radar.moreActionsAria),style:k?{insetBlockStart:k.top,insetInlineEnd:k.end}:{visibility:"hidden"},children:a.map(a=>(0,d.jsxs)("button",{role:"menuitem",type:"button",...(0,j.uN)(a.title),className:a.danger?"danger":void 0,onClick:()=>{i(!1),a.onClick()},children:[a.label,a.effect&&(0,d.jsx)("span",{children:a.effect})]},a.label))}),document.body)]})}function l({done:a,total:b,working:c}){let e=(0,h.kj)();(0,h.cO)();let f="ar"===(0,h.uU)();return b>0&&a<b?(0,d.jsxs)("div",{className:"streamline",role:"status","aria-live":"polite",children:[(0,d.jsx)("i",{"aria-hidden":!0}),f?(0,d.jsxs)(d.Fragment,{children:[e("stream.countingLead","")," ",(0,d.jsx)(i.V,{n:a})," ",e("stream.countingMid","")," ",(0,d.jsx)(i.V,{n:b})," ",e("stream.countingTail","")]}):g.UI.stream.counting(a,b)]}):c?(0,d.jsxs)("div",{className:"streamline",role:"status","aria-live":"polite",children:[(0,d.jsx)("i",{"aria-hidden":!0}),e("stream.starting",g.UI.stream.starting)]}):null}function m({view:a,onChange:b}){let c=(0,h.kj)();return(0,h.cO)(),(0,d.jsxs)("div",{className:"viewseg",role:"group","aria-label":c("radar.viewAria",g.UI.radar.viewAria),children:[(0,d.jsx)("button",{type:"button",className:"cards"===a?"on":"","aria-pressed":"cards"===a,onClick:()=>b("cards"),children:(0,d.jsx)(h.T,{k:"btn.grid",en:g.UI.radar.viewGrid})}),(0,d.jsx)("button",{type:"button",className:"rows"===a?"on":"","aria-pressed":"rows"===a,onClick:()=>b("rows"),children:(0,d.jsx)(h.T,{k:"btn.rows",en:g.UI.radar.viewRows})})]})}function n({tabs:a,active:b,onChange:c,label:e,vertical:f}){return(0,d.jsx)("div",{className:`tabs${f?" tabs-v":""}`,role:"tablist","aria-orientation":f?"vertical":void 0,"aria-label":e,children:a.map(a=>(0,d.jsxs)("button",{type:"button",role:"tab",id:`tab-${a.id}`,className:a.id===b?"on":"","aria-selected":a.id===b,"aria-controls":`panel-${a.id}`,onClick:()=>c(a.id),children:[a.label,void 0!==a.count&&(0,d.jsx)("span",{className:"tabn",children:a.count})]},a.id))})}}};
1
+ "use strict";exports.id=7511,exports.ids=[7511],exports.modules={27511:(a,b,c)=>{c.d(b,{cc:()=>u,Uj:()=>B,ou:()=>C,ct:()=>K,kc:()=>L,aA:()=>t,G2:()=>F,yn:()=>w,j4:()=>N,Wj:()=>s});var d=c(21124),e=c(38301),f=c(96197),g=c(60521),h=c(7240),i=c(71322),j=c(99511),k=c(31296),l=c(78530),m=c(72338),n=c(40850),o=c(95938);let p={unreachable:"no connection",down:"GitHub down",expired:"token expired",unauthorized:"token refused",forbidden:"not granted",ratelimited:"rate limit",timeout:"no answer",moved:"remote moved","past-ceiling":"past the scan limit"},q=Object.fromEntries(Object.keys(p).map(a=>[a,`GitHub not checked (${p[a]})`]));var r=c(80891);function s(a){let b=(0,l.kj)();(0,l.cO)();let[c,f]=(0,e.useState)(null),[g,h]=(0,e.useState)(null),i=(0,l.Je)(),j=a=>{h(a),setTimeout(()=>h(b=>b===a?null:b),4500)},m=async(c,d,e,f)=>{let g=await a.doIgnore(c,d,e,f);j(g.ok?i((0,n.ph)("toast.ignored",k.UI.radar.ignoredToast,e)):g.message??b("common.somethingWrong",k.UI.common.somethingWrong))},o=(0,d.jsxs)(d.Fragment,{children:[g&&(0,d.jsx)("div",{className:"toast",role:"status",children:g}),c&&(0,d.jsx)("div",{className:"confirm-overlay",role:"dialog","aria-modal":"true",children:(0,d.jsxs)("div",{className:"confirm",children:[(0,d.jsx)("p",{children:c.message}),(0,d.jsxs)("div",{className:"setup-actions",children:[(0,d.jsx)("button",{className:"b",onClick:()=>{m(c.id,c.kind,c.label,c.snapshot),f(null)},children:b("act.ignoreIt",k.UI.radar.ignoreIt)}),(0,d.jsx)("button",{className:"b accent",onClick:()=>f(null),children:b("act.keepWatching",k.UI.radar.keepWatching)})]})]})})]});return{requestIgnore:(a,b,c,d,e,g)=>{d?f({id:a,kind:b,label:c,message:e,snapshot:g}):m(a,b,c,g)},ignoreThen:m,showToast:j,overlays:o}}function t({view:a,onChange:b}){return(0,d.jsx)(j.fn,{view:a,onChange:b})}function u({value:a,onChange:b,showLabel:c=k.UI.common.show,hideLabel:e=k.UI.common.collapse,showKey:f="btn.show",hideKey:g="btn.collapse"}){return(0,d.jsx)("button",{className:"collapse","aria-expanded":!a,onClick:()=>b(!a),children:a?(0,d.jsx)(l.T,{k:f,en:c}):(0,d.jsx)(l.T,{k:g,en:e})})}function v({pinned:a,onPin:b,onIgnore:c}){let e=(0,l.kj)(),f=(0,l.cO)();return(0,d.jsx)(j.ob,{actions:[{label:a?e("act.unpin",k.UI.radar.unpin):e("act.pin",k.UI.radar.pinLabel),title:f.pin,onClick:b,effect:a?e("eff.unpin",k.UI.radar.effUnpin):e("eff.pin",k.UI.radar.effPin)},{label:e("act.ignore",k.UI.radar.ignoreLabel),title:f.ignore,onClick:c,effect:e("eff.ignore",k.UI.radar.effIgnore)}]})}let w=a=>a.path.toLowerCase();function x(a){if(!a)return null;let b=new Date(a).getTime();if(!Number.isFinite(b))return null;let c=Date.now()-b;return c<0?null:Math.floor(c/864e5)}function y({p:a,tone:b,cockpit:c}){let e=(0,l.kj)(),i=null!==b&&"clean"!==b,j=(0,l.cO)(),n=x(a.lastActivity),o=c.isDupe(a.name)&&("dormant"===a.staleness||"forgotten"===a.staleness)?(0,g.ih)(a,c.projects):null,p=o&&"unproven"!==o.kind?o.others:[],q=p.length>0?p.map(a=>(0,h.oV)(a.path,26)).join(", "):null,s=null!==q,t=[];return a.changedTotal>0&&t.push((0,d.jsxs)("b",{...(0,r.uN)(j.unsaved),children:[a.changedTotal," unsaved"]},"u")),a.deleted>0&&t.push((0,d.jsxs)("b",{...(0,r.uN)(j.deleted),children:[a.deleted," deleted"]},"del")),(a.ahead??0)>0&&t.push(a.uncommitted>0?(0,d.jsxs)("span",{...(0,r.uN)(j.unpushed),children:[a.ahead," unpushed"]},"a"):(0,d.jsxs)("b",{...(0,r.uN)(j.unpushed),children:[a.ahead," unpushed"]},"a")),(0,g.ze)(a)&&t.push((0,d.jsx)("b",{...(0,r.uN)(j.onlyHere),children:"only on this machine"},"nr")),a.isGit||a.looksDownloaded||t.push((0,d.jsx)("span",{...(0,r.uN)(j.noHistory),children:"no git history"},"ng")),s&&0===a.uncommitted&&null!==n&&t.push((0,d.jsxs)("span",{...(0,r.uN)(j.dormant),children:["dormant ",n,"d"]},"d")),q&&o?.kind==="duplicate"?t.push((0,d.jsxs)("span",{...(0,r.uN)(j.duplicate),children:["duplicate of ",q]},"dup")):q&&o?.kind==="sharesName"&&t.push((0,d.jsxs)("span",{...(0,r.uN)(j.sharesName),children:["shares a name with ",q]},"dup")),null===b?t.push((0,d.jsx)("span",{className:"dim-t",children:(0,d.jsx)(m.hI,{children:e("common.checking",k.UI.common.checking)})},"chk")):i||t.push((0,d.jsx)("span",{className:"okw",...(0,r.uN)(j.clean),children:"clean ✓"},"ok")),a.looksDownloaded?t.push((0,d.jsx)("span",{...(0,r.uN)(j.downloadedCopy),children:"looks downloaded"},"dl")):a.lastActivity&&!(s&&0===a.uncommitted)&&t.push((0,d.jsxs)("span",{children:[a.lastCommit?i?"last commit ":"committed ":"touched ",(0,d.jsx)(f.fV,{ts:a.lastActivity})]},"t")),(0,d.jsx)("div",{className:"c-fact",children:t.map((a,b)=>(0,d.jsxs)("span",{children:[b>0&&" \xb7 ",a]},b))})}function z(a,b=(a,b)=>b){return[w(a),"project",a.name,(0,g.ze)(a),b("confirm.projectShort",k.UI.radar.confirmProjectShort),{uncommitted:a.uncommitted,hasRemote:a.hasRemote}]}function A({p:a,cockpit:b}){let c=(0,e.useContext)(f.vC),h=(0,l.kj)(),i=(0,l.cO)(),j=(b.cfg?.roots??[]).find(b=>b.toLowerCase()===w(a));return(0,d.jsxs)(d.Fragment,{children:[a.looksDownloaded?(0,d.jsx)("span",{children:"Looks like something downloaded rather than something you wrote."}):(0,g.ze)(a)?(0,d.jsx)("span",{children:"No remote copy exists - one disk failure and it's gone."}):a.hasRemote?(0,d.jsxs)("span",{...(0,r.uN)(i.remote),children:["Backed up to a remote ✓",(a.ahead??0)>0&&(0,d.jsxs)(d.Fragment,{children:[" - ",a.ahead," commit",1===a.ahead?"":"s"," not pushed yet"]})]}):null,c&&a.isGit&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{className:"mono",children:["branch ",a.branch??"-"," \xb7 remote ",a.remoteUrl??a.remoteName??"-",null!=a.ahead&&null!=a.behind&&(0,d.jsxs)(d.Fragment,{children:[" \xb7 ",a.ahead," ahead / ",a.behind," behind"]}),null!=a.commitCount&&(0,d.jsxs)(d.Fragment,{children:[" \xb7 ",a.commitCount," commits"]})]}),a.dirtyFiles.length>0&&(0,d.jsxs)("span",{className:"mono",children:["changed: ",a.dirtyFiles.join(", "),a.changedTotal>a.dirtyFiles.length?` … +${a.changedTotal-a.dirtyFiles.length} more`:""]}),a.deletedFiles.length>0&&(0,d.jsxs)("span",{className:"mono",children:["deleted: ",a.deletedFiles.join(", "),a.deleted>a.deletedFiles.length?` … +${a.deleted-a.deletedFiles.length} more`:""]})]}),c&&(0,d.jsx)("span",{className:"mono",children:a.path}),j&&(0,d.jsx)("button",{className:"b danger",style:{justifySelf:"start"},...(0,r.uN)(i.unwatch),onClick:()=>b.post({action:"removeRoot",path:j}).then(a=>{a.ok&&b.resolveRow(j)}),children:h("act.stopWatchingFolder",k.UI.radar.stopWatchingFolder)})]})}function B({p:a,tone:b,cockpit:c,change:e,open:f,onToggle:g,onIgnoreRequest:j,onToast:m}){let n=null!==b&&"clean"!==b,o=c.isPinned(w(a)),p=(0,l.kj)();return(0,l.cO)(),(0,d.jsxs)("div",{[i.J6]:w(a),className:`card${n?" warn":""}${o?" pinned":""}`,children:[(0,d.jsxs)("div",{className:"c-top",children:[(0,d.jsx)("span",{className:`dot ${null===b?"u":n?"a":"g"}`,"aria-hidden":!0}),(0,d.jsx)("b",{children:a.name}),e&&(0,d.jsx)("span",{className:"chg",children:e})]}),(0,d.jsx)(y,{p:a,tone:b,cockpit:c}),(0,d.jsx)(D,{p:a,cockpit:c}),(0,d.jsx)("div",{className:"c-path",children:(0,h.oV)(a.path,40)}),(0,d.jsxs)("div",{className:"c-foot",children:[(0,d.jsx)("button",{className:"b2 q",onClick:g,"aria-expanded":f,children:f?(0,d.jsx)(l.T,{k:"btn.hide",en:k.UI.common.hide}):(0,d.jsx)(l.T,{k:"btn.details",en:k.UI.common.details})}),!c.demo&&(0,d.jsx)(i.Fb,{cockpit:c,project:a,onToast:m,link:!0}),!c.demo&&(0,d.jsx)(i.r8,{path:a.path}),(0,d.jsx)(v,{pinned:o,onPin:()=>c.togglePin(w(a)),onIgnore:()=>j(...z(a,p))})]}),f&&(0,d.jsx)("div",{className:"c-detail",children:(0,d.jsx)(A,{p:a,cockpit:c})})]})}function C({p:a,tone:b,cockpit:c,change:e,open:f,onToggle:g,onIgnoreRequest:j}){let k=null!==b&&"clean"!==b,m=c.isPinned(w(a)),n=c.isDupe(a.name),o=(0,l.kj)();return(0,l.cO)(),(0,d.jsxs)("div",{[i.J6]:w(a),className:`irow${k?" warn":""}`,children:[(0,d.jsxs)("div",{className:"irow-line",children:[(0,d.jsxs)("button",{className:"irow-main",onClick:g,"aria-expanded":f,children:[(0,d.jsx)("span",{className:`dot ${null===b?"u":k?"a":"g"}`,"aria-hidden":!0}),(0,d.jsxs)("span",{className:"irow-name",children:[a.name,n&&(0,d.jsxs)("span",{className:"irow-parent",children:[" (",function(a){let b=a.split(/[\\/]/).filter(Boolean);return b.length>1?b[b.length-2]:a}(a.path),")"]})]}),e&&(0,d.jsx)("span",{className:"chg",children:e}),(0,d.jsx)("span",{className:`irow-truth${k?" warn":""}`,children:(0,d.jsx)(E,{p:a,tone:b,cockpit:c})}),(0,d.jsx)("span",{className:"irow-path",children:(0,h.oV)(a.path,40)})]}),(0,d.jsx)(D,{p:a,cockpit:c}),(0,d.jsxs)("span",{className:"qk",children:[!c.demo&&(0,d.jsx)(i.r8,{path:a.path}),(0,d.jsx)(v,{pinned:m,onPin:()=>c.togglePin(w(a)),onIgnore:()=>j(...z(a,o))})]})]}),f&&(0,d.jsx)("div",{className:"irow-detail",children:(0,d.jsx)(A,{p:a,cockpit:c})})]})}function D({p:a,cockpit:b}){var c;let e=(0,l.kj)(),g=b.radar?.github??null;if(!g)return null;let h=(c=a.path,g?g.byPath[c.toLowerCase()]??null:null),i=function(a){if(!a)return null;let b=/[/@]github\.com[:/]+([^/]+)\/([^/]+?)(?:\.git)?\/?$/.exec(a);return b?`${b[1]}/${b[2]}`:null}(a.remoteUrl),j=i?(0,d.jsxs)("span",{className:"gh-prov",children:[(0,d.jsx)(o.En,{children:i}),h?.ok?(0,d.jsxs)(d.Fragment,{children:[" \xb7 ",e("connections.ghCardChecked",k.UI.connections.ghCardChecked)," ",(0,d.jsx)(f.fV,{ts:g.at})]}):h?null:(0,d.jsxs)(d.Fragment,{children:[" \xb7 ",e("connections.ghCardNever",k.UI.connections.ghCardNever)]})]}):null;if(!h)return g.outage?(0,d.jsxs)("span",{className:"gh-chips",children:[j,(0,d.jsx)(o.En,{children:(0,d.jsx)("span",{className:"chip plain",children:"GitHub not checked yet"})})]}):null;if(!h.ok)return(0,d.jsxs)("span",{className:"gh-chips",children:[j,(0,d.jsx)(o.En,{children:(0,d.jsx)("span",{className:"chip plain",children:q[h.kind]})})]});let m=h.value,n=[];if(m.ci.ok&&m.ci.value){let a=m.ci.value,b="passing"===a.state?"calm":"failing"===a.state?"bad":"plain",c="passing"===a.state?"✓":"failing"===a.state?"✗":"\xb7";n.push((0,d.jsxs)("span",{className:`chip ${b}`,children:["CI ",c," ",a.branch]},"ci"))}else{let a;m.ci.ok||n.push((0,d.jsx)("span",{className:"chip plain",children:(a=m.ci.kind,`CI not checked (${p[a]})`)},"ci"))}if(m.prCount.ok&&m.prCount.value>0){let a=m.prCount.value;n.push((0,d.jsxs)("span",{className:"chip plain",children:[a,m.prCapped?"+":""," PR",1!==a||m.prCapped?"s":""]},"pr"))}if(m.issueCount.ok&&m.issueCount.value>0){let a=m.issueCount.value;n.push((0,d.jsxs)("span",{className:"chip plain",children:[a," issue",1===a?"":"s"]},"is"))}return("confirmed"===m.backup.verdict&&n.push((0,d.jsx)("span",{className:"chip calm",...(0,r.uN)("af360 asked GitHub, and GitHub has this exact commit"),children:"GitHub confirms"},"bk")),0===n.length)?j?(0,d.jsx)("span",{className:"gh-chips",children:j}):null:(0,d.jsxs)("span",{className:"gh-chips",children:[j,(0,d.jsx)(o.En,{children:n})]})}function E({p:a,tone:b,cockpit:c}){let e=(0,l.cO)(),h=c.isDupe(a.name)&&("dormant"===a.staleness||"forgotten"===a.staleness)?(0,g.ih)(a,c.projects):null,i=h?.kind==="duplicate",j=x(a.lastActivity);return a.looksDownloaded?(0,d.jsx)("span",{...(0,r.uN)(e.downloadedCopy),children:"looks downloaded"}):a.uncommitted>0?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{...(0,r.uN)(e.unsaved),children:[a.uncommitted," unsaved"]})," \xb7 last commit ",a.lastActivity?(0,d.jsx)(f.fV,{ts:a.lastActivity}):"never"]}):(0,g.ze)(a)?(0,d.jsx)("span",{...(0,r.uN)(e.onlyHere),children:"only on this machine"}):(a.ahead??0)>0?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{...(0,r.uN)(e.unpushed),children:[a.ahead," unpushed"]})," \xb7 committed ",a.lastActivity?(0,d.jsx)(f.fV,{ts:a.lastActivity}):"-"]}):"clean"!==b&&i&&null!==j?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{...(0,r.uN)(e.dormant),children:["dormant ",j,"d"]})," \xb7 ",(0,d.jsx)("span",{...(0,r.uN)(e.duplicate),children:"duplicate"})]}):a.lastActivity?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{...(0,r.uN)(e.clean),children:"clean ✓"})," \xb7 committed ",(0,d.jsx)(f.fV,{ts:a.lastActivity})]}):(0,d.jsx)("span",{...(0,r.uN)(e.noHistory),children:"no history"})}function F(a,b){return a.find(a=>a.subjectId===b)??null}function G(a){let b=a.entry.label||P(a.entry.url),c=!!a.current&&!a.current.ok;return[a.entry.id,"url",b,c,k.UI.radar.confirmSite,{down:c}]}function H({u:a,incident:b}){let c=(0,e.useContext)(f.vC),g=(0,l.kj)();(0,l.cO)();let h=a.current;if(!h)return(0,d.jsx)("span",{children:(0,d.jsx)(m.hI,{children:g("site.firstCheck",k.UI.radar.firstCheck)})});if(!h.ok)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("b",{children:Q(a.sinceText)}),c&&h.status?` \xb7 HTTP ${h.status}`:"",b?.acknowledged?" \xb7 being handled ✓":""]});let i=Q(a.sinceText).replace(/^up for /,"up "),j=b?.endedTs?(0,d.jsxs)(d.Fragment,{children:["last incident ",(0,d.jsx)(f.fV,{ts:b.endedTs})]}):(0,d.jsx)(d.Fragment,{children:"no incidents while watching"});return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"okw",children:i})," \xb7 ","number"==typeof h.ms?`${h.ms} ms`:"-",c&&h.status?` \xb7 HTTP ${h.status}`:""," \xb7 ",j]})}function I({u:a,cockpit:b}){let c=a.current,e=P(a.entry.url),f=b.expiry?.items.find(a=>"ssl"===a.kind&&a.name===e),g=Object.entries(c?.headers??{}),h=["strict-transport-security","content-security-policy"].filter(a=>!(c?.headers??{})[a]);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{className:"mono",children:["HTTP ",c?.status??"-"," \xb7 total ","number"==typeof c?.ms?`${c.ms} ms`:"-"," \xb7 checked ",c?new Date(c.ts).toLocaleTimeString():"-"]}),f&&(0,d.jsxs)("span",{className:"mono",children:["cert: ",f.issuer??"unknown issuer",f.serial?` \xb7 serial ${f.serial}`:""]}),g.length>0&&(0,d.jsxs)("span",{className:"mono",children:["headers: ",g.map(([a,b])=>`${a}: ${b}`).join(" \xb7 ")]}),h.length>0&&(0,d.jsxs)("span",{className:"mono",children:["missing: ",h.join(", ")]})]})}function J({u:a,cockpit:b,incident:c}){let g=(0,l.kj)(),h=(0,l.cO)(),i=(0,e.useContext)(f.vC);return(0,d.jsxs)(d.Fragment,{children:[c&&!c.endedTs&&(0,d.jsxs)("span",{children:["Ongoing: down since ",(0,d.jsx)(f.fV,{ts:c.startedTs,skewForm:"core"}),c.acknowledged?" \xb7 being handled ✓":""]}),i&&(0,d.jsx)(I,{u:a,cockpit:b}),(0,d.jsx)("a",{href:a.entry.url,target:"_blank",rel:"noreferrer",children:a.entry.url}),(0,d.jsx)("button",{className:"b danger",style:{justifySelf:"start"},...(0,r.uN)(h.unwatch),onClick:()=>b.post({action:"removeUrl",id:a.entry.id}).then(c=>{c.ok&&b.resolveRow(a.entry.id)}),children:g("act.stopWatchingSite",k.UI.radar.stopWatchingSite)})]})}function K({u:a,tone:b,cockpit:c,incident:e,open:f,onToggle:g,onIgnoreRequest:j,extra:m}){let n=a.current,o="red"===b;(0,l.kj)(),(0,l.cO)();let p=c.isPinned(a.entry.id),q=a.entry.label||P(a.entry.url);return(0,d.jsxs)("div",{className:`card site${o?" bad":""}${p?" pinned":""}`,children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"c-top",children:[(0,d.jsx)("span",{className:`dot ${null===b||!n?"u":o?"r":"g"}`,"aria-hidden":!0}),(0,d.jsx)("b",{children:q})]}),(0,d.jsx)("div",{className:"c-fact",children:(0,d.jsx)(H,{u:a,incident:e})}),(0,d.jsx)("div",{className:"c-path",children:(0,h.oV)(a.entry.url,44)}),(0,d.jsxs)("div",{className:"c-foot",children:[(0,d.jsx)("button",{className:"b2 q",onClick:g,"aria-expanded":f,children:f?(0,d.jsx)(l.T,{k:"btn.hide",en:k.UI.common.hide}):(0,d.jsx)(l.T,{k:"btn.details",en:k.UI.common.details})}),(0,d.jsx)(i.r8,{path:a.entry.url,label:k.UI.radar.copyAddress,labelKey:"btn.copyAddress"}),(0,d.jsx)(v,{pinned:p,onPin:()=>c.togglePin(a.entry.id),onIgnore:()=>j(...G(a))}),m]})]}),(0,d.jsx)(M,{history:a.history}),f&&(0,d.jsx)("div",{className:"c-detail",style:{gridColumn:"1 / -1"},children:(0,d.jsx)(J,{u:a,cockpit:c,incident:e})})]})}function L({u:a,tone:b,cockpit:c,incident:e,open:f,onToggle:g,onIgnoreRequest:j,extra:n}){let o=a.current,p="red"===b,q=(0,l.kj)();(0,l.cO)();let r=c.isPinned(a.entry.id),s=a.entry.label||P(a.entry.url);return(0,d.jsxs)("div",{className:`irow${p?" bad":""}`,children:[(0,d.jsxs)("div",{className:"irow-line",children:[(0,d.jsxs)("button",{className:"irow-main",onClick:g,"aria-expanded":f,children:[(0,d.jsx)("span",{className:`dot ${null===b||!o?"u":p?"r":"g"}`,"aria-hidden":!0}),(0,d.jsx)("span",{className:"irow-name",children:s}),(0,d.jsx)("span",{className:`irow-truth${p?" bad":""}`,children:o?p?Q(a.sinceText):`${Q(a.sinceText).replace(/^up for /,"up ")} \xb7 ${o.ms} ms`:(0,d.jsx)(m.hI,{children:q("site.firstCheck",k.UI.radar.firstCheck)})}),(0,d.jsx)("span",{className:"irow-path",children:(0,h.oV)(a.entry.url,36)})]}),(0,d.jsxs)("span",{className:"qk",children:[(0,d.jsx)(i.r8,{path:a.entry.url,label:k.UI.radar.copyAddress,labelKey:"btn.copyAddress"}),(0,d.jsx)(v,{pinned:r,onPin:()=>c.togglePin(a.entry.id),onIgnore:()=>j(...G(a))}),n]})]}),f&&(0,d.jsxs)("div",{className:"irow-detail",children:[(0,d.jsx)("div",{style:{maxInlineSize:260},children:(0,d.jsx)(M,{history:a.history})}),(0,d.jsx)(J,{u:a,cockpit:c,incident:e})]})]})}function M({history:a}){let b=(0,l.kj)();if((0,l.cO)(),a.length<10){let c=a.length>0?Math.round((Date.now()-a[0].ts)/6e4):0,e=c>0?c:0;return(0,d.jsx)("div",{className:"spark",children:(0,d.jsxs)("span",{className:"spark-wait",children:[b("site.historyBuilds",k.UI.radar.historyBuilds),e>0?` \xb7 ${e}m watched`:(0,d.jsx)(m.gy,{})]})})}let c=a.length>40?function(a,b){let c=[];for(let d=0;d<40;d++)c.push(a[Math.round(d*(a.length-1)/(b-1))]);return c}(a,40):a,e=c.filter(a=>a.ok&&"number"==typeof a.ms).map(a=>a.ms),f=Math.max(...e,1),g=Math.min(...e),h=a=>130*a/(c.length-1),i=c.map((a,b)=>a.ok&&"number"==typeof a.ms?`${h(b).toFixed(1)},${(30-(a.ms-g)/Math.max(1,f-g)*20).toFixed(1)}`:null).filter(Boolean);return(0,d.jsxs)("div",{className:"spark",children:[(0,d.jsxs)("svg",{viewBox:"0 0 130 34",preserveAspectRatio:"none",role:"img","aria-label":b("site.sparkAria",k.UI.radar.sparkAria),children:[(0,d.jsx)("polygon",{points:`0,34 ${i.join(" ")} 130,34`,fill:"color-mix(in srgb, var(--ok) 12%, transparent)"}),(0,d.jsx)("polyline",{points:i.join(" "),fill:"none",stroke:"var(--ok)",strokeWidth:"1.5"}),c.map((a,b)=>!a.ok&&(0,d.jsx)("rect",{x:h(b)-1.2,y:29,width:2.4,height:4,fill:"var(--bad)"},b))]}),(0,d.jsxs)("span",{className:"cap",children:["24h \xb7 ",g,"-",f," ms"]})]})}function N(a,b,c,d=[]){let[f,g]=(0,e.useState)(null);return O(()=>{let d=()=>{let d=a.current;if(!d||0===b)return;let e=d.firstElementChild;if(!e)return;let f=getComputedStyle(d),h=f.gridTemplateColumns.split(" ").filter(a=>"none"!==a&&""!==a).length||1,i=parseFloat(f.rowGap)||0,j=parseFloat(f.columnGap)||0,k=e.getBoundingClientRect(),l=k.height+i;if(l<=0)return;let m=(d.getBoundingClientRect().width-(h-1)*j)/h,n=Math.max(1,Math.floor(h/Math.max(1,Math.round((k.width+j)/(m+j))))),o=d.getBoundingClientRect().top,p=Math.min(b,Math.max(1,Math.floor((window.innerHeight-o-c+i)/l))*n);g(a=>a===p?a:p)};d();let e=setTimeout(d,120);return window.addEventListener("resize",d),()=>{clearTimeout(e),window.removeEventListener("resize",d)}},[b,c,...d]),null==f?b:Math.min(f,b)}let O=e.useEffect;function P(a){try{return new URL(a).hostname}catch{return a}}function Q(a){return a.charAt(0).toLowerCase()+a.slice(1)}},99511:(a,b,c)=>{c.d(b,{fn:()=>m,hf:()=>l,ob:()=>k,tU:()=>n});var d=c(21124),e=c(38301),f=c(23312),g=c(31296),h=c(78530),i=c(95938),j=c(80891);function k({actions:a,label:b}){let[c,i]=(0,e.useState)(!1),[k,l]=(0,e.useState)(null),m=(0,e.useRef)(null),n=(0,e.useRef)(null),o=(0,e.useId)(),p=(0,h.kj)(),q=(0,h.cO)();return((0,e.useCallback)(()=>{let a=m.current?.firstElementChild;if(!a)return;let b=a.getBoundingClientRect(),c=n.current?.offsetHeight??0,d=window.innerHeight-b.bottom,e=c>0&&d<c+8&&b.top>d;l({top:e?b.top-c-4:b.bottom+4,end:Math.max(4,window.innerWidth-b.right),flip:e})},[]),0===a.length)?null:(0,d.jsxs)("div",{className:"ovf",ref:m,children:[(0,d.jsxs)("button",{className:"ovf-btn",type:"button","aria-haspopup":"menu","aria-expanded":c,"aria-controls":o,...(0,j.uN)(q.moreActions),onClick:()=>i(a=>!a),children:[(0,d.jsx)(h.T,{k:"btn.more",en:b??g.UI.radar.moreActions})," ",(0,d.jsx)("span",{"aria-hidden":!0,children:"▾"})]}),c&&"undefined"!=typeof document&&(0,f.createPortal)((0,d.jsx)("div",{className:"ovf-menu",id:o,role:"menu",ref:n,"aria-label":p("act.moreAria",g.UI.radar.moreActionsAria),style:k?{insetBlockStart:k.top,insetInlineEnd:k.end}:{visibility:"hidden"},children:a.map(a=>(0,d.jsxs)("button",{role:"menuitem",type:"button",...(0,j.uN)(a.title),className:a.danger?"danger":void 0,onClick:()=>{i(!1),a.onClick()},children:[a.label,a.effect&&(0,d.jsx)("span",{children:a.effect})]},a.label))}),document.body)]})}function l({done:a,total:b,working:c}){let e=(0,h.kj)();(0,h.cO)();let f="ar"===(0,h.uU)();return b>0&&a<b?(0,d.jsxs)("div",{className:"streamline",role:"status","aria-live":"polite",children:[(0,d.jsx)("i",{"aria-hidden":!0}),f?(0,d.jsxs)(d.Fragment,{children:[e("stream.countingLead","")," ",(0,d.jsx)(i.V,{n:a})," ",e("stream.countingMid","")," ",(0,d.jsx)(i.V,{n:b})," ",e("stream.countingTail","")]}):g.UI.stream.counting(a,b)]}):c?(0,d.jsxs)("div",{className:"streamline",role:"status","aria-live":"polite",children:[(0,d.jsx)("i",{"aria-hidden":!0}),e("stream.starting",g.UI.stream.starting)]}):null}function m({view:a,onChange:b}){let c=(0,h.kj)();return(0,h.cO)(),(0,d.jsxs)("div",{className:"viewseg",role:"group","aria-label":c("radar.viewAria",g.UI.radar.viewAria),children:[(0,d.jsx)("button",{type:"button",className:"cards"===a?"on":"","aria-pressed":"cards"===a,onClick:()=>b("cards"),children:(0,d.jsx)(h.T,{k:"btn.grid",en:g.UI.radar.viewGrid})}),(0,d.jsx)("button",{type:"button",className:"rows"===a?"on":"","aria-pressed":"rows"===a,onClick:()=>b("rows"),children:(0,d.jsx)(h.T,{k:"btn.rows",en:g.UI.radar.viewRows})})]})}function n({tabs:a,active:b,onChange:c,label:e,vertical:f}){return(0,d.jsx)("div",{className:`tabs${f?" tabs-v":""}`,role:"tablist","aria-orientation":f?"vertical":void 0,"aria-label":e,children:a.map(a=>(0,d.jsxs)("button",{type:"button",role:"tab",id:`tab-${a.id}`,className:a.id===b?"on":"","aria-selected":a.id===b,"aria-controls":`panel-${a.id}`,onClick:()=>c(a.id),children:[a.label,void 0!==a.count&&(0,d.jsx)("span",{className:"tabn",children:a.count})]},a.id))})}}};
@@ -1 +1 @@
1
- "use strict";exports.id=7719,exports.ids=[7719],exports.modules={7719:(a,b,c)=>{c.d(b,{jC:()=>G,eK:()=>E,RF:()=>u,f0:()=>l,KX:()=>r,hE:()=>v});var d=c(29021),e=c(35060),f=c(21820),g=c.n(f),h=c(33873),i=c.n(h),j=c(22191),k=c(35919);function l(a){return"string"==typeof a&&!!a&&a.toLowerCase().split(/[\\/]+/).includes("windowsapps")}c(79551);let m=e.EO;function n(a){if(a.split(/[\\/]/).some(a=>"downloads"===a.toLowerCase()))return!0;let b=i().basename(a);return/-(main|master)$/i.test(b)||/\(\d+\)$/.test(b)||/[-_]v?\d+(\.\d+)+$/i.test(b)}let o=globalThis,p=o.__af360Changes??(o.__af360Changes=new Map);function q(){return Object.fromEntries([...p].map(([a,b])=>[a,b.text]))}function r(a){for(let b of a)p.delete(b.toLowerCase())}let s=new Set(["node_modules",".git",".next","dist","build","out",".venv","venv","__pycache__"]),t=globalThis;function u(a,b){let c=a.toLowerCase();return b.some(a=>{let b=a.toLowerCase().replace(/[\\/]+$/,"");return c===b||c.startsWith(b+"\\")||c.startsWith(b+"/")})}async function v(a,b={}){let c=b.exclude??[],d=a.join("|")+"::x:"+c.join("|"),e=t.__af360Radar,f=Math.min(b.maxAgeMs??864e5,864e5);if(e&&e.key===d&&!b.fresh){let a=Date.now()-e.ts;if(a<3e4||a<f)return{...e.result,changes:q()}}let g=[],h=[];for(let b of a)if(!u(b,c)){if(!await K(b)){g.push(b);continue}await w(b,0,h,c)}let i=(await A(h,4,x)).sort((a,b)=>(b.lastActivity??"").localeCompare(a.lastActivity??""));if(e&&e.key===d){let a=new Map(e.result.projects.map(a=>[a.path.toLowerCase(),a]));for(let b of i){let c=b.path.toLowerCase(),d=a.get(c);if(!d){p.set(c,{text:"New since last look",ts:Date.now()});continue}d.remoteKnown&&b.remoteKnown?!d.hasRemote||b.hasRemote||b.looksDownloaded?!d.hasRemote&&b.hasRemote?((0,j.logEvent)(`${b.name} is now backed up.`,"closed"),p.set(c,{text:"Now backed up ✓",ts:Date.now()})):d.uncommitted!==b.uncommitted&&d.statusKnown&&b.statusKnown&&p.set(c,{text:`Uncommitted changes ${d.uncommitted} → ${b.uncommitted}`,ts:Date.now()}):((0,j.logEvent)(`New risk: ${b.name} isn't backed up anywhere.`),p.set(c,{text:"Lost its remote since last look",ts:Date.now()})):d.uncommitted!==b.uncommitted&&d.statusKnown&&b.statusKnown&&p.set(c,{text:`Uncommitted changes ${d.uncommitted} → ${b.uncommitted}`,ts:Date.now()})}}let k={projects:i,missingRoots:g,scannedAt:Date.now(),changes:q()};return t.__af360Radar={key:d,ts:Date.now(),result:k},a.length>0&&(0,j.logEvent)(`Scanned ${a.length} folder${1===a.length?"":"s"} - found ${i.length} project${1===i.length?"":"s"}.`),k}async function w(a,b,c,e=[]){let f;if(!(u(a,e)||l(a))){if(await I(a))return void c.push(a);if(!(b>=3)){try{f=await d.promises.readdir(a,{withFileTypes:!0})}catch{return}for(let d of f)d.isSymbolicLink()||!d.isDirectory()||d.name.startsWith(".")||s.has(d.name)||await w(i().join(a,d.name),b+1,c,e)}}}async function x(a){let b=await J(a),c=!1,e=0,f=null,g=null,h=null,j=null,l=null,m=null,o=null,p=null,q=[],r=0,s=0,t=[],u=!1,v=!1,w=null,x=!1;if(b){let b=await y(a),d=await z(a);w=d.sha,x=d.known;let[i,n,A,C,D,E]=await Promise.all([B(a,["remote"]),B(a,["status","--porcelain","--branch"]),B(a,["log","-1","--format=%cI"]),B(a,["rev-parse","--abbrev-ref","HEAD"]),B(a,["log","--max-parents=0","-1","--format=%aI"]),B(a,["rev-list","--count","HEAD"])]);u=null!==b,c=null!==b&&b.length>0||!!i,l=b?.[0]?.name??(i?i.split("\n")[0].trim():null),m=b?.[0]?.url??null,l&&!m&&(m=await B(a,["remote","get-url",l]));let F=(0,k.d2)(n);if(F.complete||(F=(0,k.d2)(await B(a,["status","--porcelain","--branch"]))),v=F.complete,F.complete){e=F.entries.length;let a=a=>a.includes("D"),b=F.entries.filter(b=>a(b.xy)),c=F.entries.filter(b=>!a(b.xy));r=b.length,s=c.length,q=c.slice(0,10).map(a=>a.path),t=b.slice(0,10).map(a=>a.path),o=F.ahead,p=F.behind}f=A||null,g=D||null,h=E&&parseInt(E,10)||null,j=C||null}let A=f;if(!A)try{A=(await d.promises.stat(a)).mtime.toISOString()}catch{}return{name:i().basename(a),path:a,isGit:b,hasRemote:c,uncommitted:e,lastCommit:f,firstCommit:g,commitCount:h,lastActivity:A,staleness:A?function(a){let b=(Date.now()-new Date(a).getTime())/864e5;return b<7?"active":b<30?"quiet":b<90?"dormant":"forgotten"}(A):null,looksDownloaded:n(a),remoteKnown:u,statusKnown:v,headSha:w,headShaKnown:x,branch:j,remoteName:l,remoteUrl:m,ahead:o,behind:p,dirtyFiles:q,deleted:r,deletedFiles:t,changedTotal:s}}async function y(a){let b,c=(0,e.hQ)(a);if(null===c)return null;try{b=await d.promises.readFile(i().join(c,"config"),"utf8")}catch{return null}let f=[],g=!1;for(let a of b.split(/\r?\n/)){let b=a.trim();if(b.startsWith("[")){let a=/^\[remote\s+"([^"]+)"\]/.exec(b);g=!!a,a&&f.push({name:a[1],url:null});continue}if(!g||0===f.length)continue;let c=/^url\s*=\s*(.+)$/.exec(b);c&&(f[f.length-1].url=c[1].trim())}return f}async function z(a){let b,c=(0,e.hQ)(a);if(null===c)return{sha:null,known:!1};try{b=await d.promises.readFile(i().join(c,"HEAD"),"utf8")}catch{return{sha:null,known:!1}}let f=a=>/^[0-9a-f]{40}$|^[0-9a-f]{64}$/i.test(a),g=b.trim();if(f(g))return{sha:g.toLowerCase(),known:!0};let h=/^ref:\s*(.+)$/.exec(g);if(!h)return{sha:null,known:!1};let j=h[1].trim();try{let a=(await d.promises.readFile(i().join(c,...j.split("/")),"utf8")).trim();if(f(a))return{sha:a.toLowerCase(),known:!0}}catch{}try{for(let a of(await d.promises.readFile(i().join(c,"packed-refs"),"utf8")).split(/\r?\n/)){let b=a.trim();if(!b||b.startsWith("#")||b.startsWith("^"))continue;let c=b.indexOf(" ");if(!(c<0)&&b.slice(c+1).trim()===j){let a=b.slice(0,c).trim();if(f(a))return{sha:a.toLowerCase(),known:!0}}}return{sha:null,known:!0}}catch{return{sha:null,known:!0}}}async function A(a,b,c){let d=Array(a.length),e=0,f=Array.from({length:Math.min(b,a.length)},async()=>{for(;e<a.length;){let b=e++;d[b]=await c(a[b])}});return await Promise.all(f),d}async function B(a,b){try{let{stdout:c}=await m("git",(0,e.tQ)(b,a),{cwd:a,timeout:8e3,windowsHide:!0,env:(0,e.tl)()});return c.trim()}catch{return null}}let C=new Set([...s,"AppData","Application Data","Program Files","Program Files (x86)","Windows","Library","Music","Pictures","Videos","Saved Games"]),D=["dev","projects","code","src","repos","sites"];async function E(a=[],b=[],c){let d=g().homedir(),e=[d,...["Desktop","Documents","Downloads"].map(a=>i().join(d,a))];for(let a of"CDEFGHIJKLMNOPQRSTUVWXYZ"){let b=`${a}:\\`;if(await K(b))for(let a of D)e.push(i().join(b,a))}let f=new Set(a.map(a=>a.toLowerCase())),h=new Set,k=[],l=[],m=!1,o=[];for(let a of e){if(u(a,b)||!await K(a)||h.has(a.toLowerCase()))continue;if(m){o.push(a);continue}let d=[];await H(a,0,h,d,b);let g=d.filter(a=>!f.has(a.toLowerCase())),j={path:a,found:g.length};l.push(j);let p=g.map(a=>({name:i().basename(a),path:a,looksDownloaded:n(a)}));if(k.push(...p),c)try{c({place:j,found:p,placesDone:l.length,placesPlanned:e.length})}catch{}k.length>=100&&(m=!0)}k.sort((a,b)=>Number(a.looksDownloaded)-Number(b.looksDownloaded)),(0,j.logEvent)(`Searched ${l.length} places - found ${k.length} project${1===k.length?"":"s"}.`);let p={candidates:k,places:l,unvisited:o,capped:m,cap:100};return F.__af360Discover={ts:Date.now(),result:p},p}let F=globalThis;function G(){return F.__af360Discover?.result??null}async function H(a,b,c,e,f=[]){let g;if(!(e.length>=100)){try{g=await d.promises.readdir(a,{withFileTypes:!0})}catch{return}for(let d of g){if(e.length>=100)return;if(d.isSymbolicLink()||!d.isDirectory()||d.name.startsWith(".")||C.has(d.name))continue;let g=i().join(a,d.name);if(u(g,f))continue;let h=g.toLowerCase();if(!c.has(h)){if(await I(g)){c.add(h),e.push(g);continue}b+1<3&&await H(g,b+1,c,e,f)}}}}async function I(a){return await J(a)||await L(i().join(a,"package.json"))}async function J(a){let b=i().join(a,".git");return await K(b)||await L(b)}async function K(a){try{return(await d.promises.stat(a)).isDirectory()}catch{return!1}}async function L(a){try{return(await d.promises.stat(a)).isFile()}catch{return!1}}}};
1
+ "use strict";exports.id=7719,exports.ids=[7719],exports.modules={7719:(a,b,c)=>{c.d(b,{jC:()=>G,eK:()=>E,RF:()=>u,f0:()=>l,KX:()=>r,hE:()=>v});var d=c(29021),e=c(35060),f=c(21820),g=c.n(f),h=c(33873),i=c.n(h),j=c(22191),k=c(35919);function l(a){return"string"==typeof a&&!!a&&a.toLowerCase().split(/[\\/]+/).includes("windowsapps")}c(79551);let m=e.EO;function n(a){if(a.split(/[\\/]/).some(a=>"downloads"===a.toLowerCase()))return!0;let b=i().basename(a);return/-(main|master)$/i.test(b)||/\(\d+\)$/.test(b)||/[-_]v?\d+(\.\d+)+$/i.test(b)}let o=globalThis,p=o.__af360Changes??(o.__af360Changes=new Map);function q(){return Object.fromEntries([...p].map(([a,b])=>[a,b.text]))}function r(a){for(let b of a)p.delete(b.toLowerCase())}let s=new Set(["node_modules",".git",".next","dist","build","out",".venv","venv","__pycache__"]),t=globalThis;function u(a,b){let c=a.toLowerCase();return b.some(a=>{let b=a.toLowerCase().replace(/[\\/]+$/,"");return c===b||c.startsWith(b+"\\")||c.startsWith(b+"/")})}async function v(a,b={}){let c=b.exclude??[],d=a.join("|")+"::x:"+c.join("|"),e=t.__af360Radar,f=Math.min(b.maxAgeMs??864e5,864e5);if(e&&e.key===d&&!b.fresh){let a=Date.now()-e.ts;if(a<3e4||a<f)return{...e.result,changes:q()}}let g=[],h=[];for(let b of a)if(!u(b,c)){if(!await K(b)){g.push(b);continue}await w(b,0,h,c)}let i=(await A(h,4,x)).sort((a,b)=>(b.lastActivity??"").localeCompare(a.lastActivity??""));if(e&&e.key===d){let a=new Map(e.result.projects.map(a=>[a.path.toLowerCase(),a]));for(let b of i){let c=b.path.toLowerCase(),d=a.get(c);if(!d){p.set(c,{text:"New since last look",ts:Date.now()});continue}d.remoteKnown&&b.remoteKnown?!d.hasRemote||b.hasRemote||b.looksDownloaded?!d.hasRemote&&b.hasRemote?((0,j.logEvent)(`${b.name} is now backed up.`,"closed"),p.set(c,{text:"Now backed up ✓",ts:Date.now()})):d.uncommitted!==b.uncommitted&&d.statusKnown&&b.statusKnown&&p.set(c,{text:`Uncommitted changes ${d.uncommitted} → ${b.uncommitted}`,ts:Date.now()}):((0,j.logEvent)(`New risk: ${b.name} isn't backed up anywhere.`,"change"),p.set(c,{text:"Lost its remote since last look",ts:Date.now()})):d.uncommitted!==b.uncommitted&&d.statusKnown&&b.statusKnown&&p.set(c,{text:`Uncommitted changes ${d.uncommitted} → ${b.uncommitted}`,ts:Date.now()})}}let k={projects:i,missingRoots:g,scannedAt:Date.now(),changes:q()};return t.__af360Radar={key:d,ts:Date.now(),result:k},a.length>0&&(0,j.logEvent)(`Scanned ${a.length} folder${1===a.length?"":"s"} - found ${i.length} project${1===i.length?"":"s"}.`,"look"),k}async function w(a,b,c,e=[]){let f;if(!(u(a,e)||l(a))){if(await I(a))return void c.push(a);if(!(b>=3)){try{f=await d.promises.readdir(a,{withFileTypes:!0})}catch{return}for(let d of f)d.isSymbolicLink()||!d.isDirectory()||d.name.startsWith(".")||s.has(d.name)||await w(i().join(a,d.name),b+1,c,e)}}}async function x(a){let b=await J(a),c=!1,e=0,f=null,g=null,h=null,j=null,l=null,m=null,o=null,p=null,q=[],r=0,s=0,t=[],u=!1,v=!1,w=null,x=!1;if(b){let b=await y(a),d=await z(a);w=d.sha,x=d.known;let[i,n,A,C,D,E]=await Promise.all([B(a,["remote"]),B(a,["status","--porcelain","--branch"]),B(a,["log","-1","--format=%cI"]),B(a,["rev-parse","--abbrev-ref","HEAD"]),B(a,["log","--max-parents=0","-1","--format=%aI"]),B(a,["rev-list","--count","HEAD"])]);u=null!==b,c=null!==b&&b.length>0||!!i,l=b?.[0]?.name??(i?i.split("\n")[0].trim():null),m=b?.[0]?.url??null,l&&!m&&(m=await B(a,["remote","get-url",l]));let F=(0,k.d2)(n);if(F.complete||(F=(0,k.d2)(await B(a,["status","--porcelain","--branch"]))),v=F.complete,F.complete){e=F.entries.length;let a=a=>a.includes("D"),b=F.entries.filter(b=>a(b.xy)),c=F.entries.filter(b=>!a(b.xy));r=b.length,s=c.length,q=c.slice(0,10).map(a=>a.path),t=b.slice(0,10).map(a=>a.path),o=F.ahead,p=F.behind}f=A||null,g=D||null,h=E&&parseInt(E,10)||null,j=C||null}let A=f;if(!A)try{A=(await d.promises.stat(a)).mtime.toISOString()}catch{}return{name:i().basename(a),path:a,isGit:b,hasRemote:c,uncommitted:e,lastCommit:f,firstCommit:g,commitCount:h,lastActivity:A,staleness:A?function(a){let b=(Date.now()-new Date(a).getTime())/864e5;return b<7?"active":b<30?"quiet":b<90?"dormant":"forgotten"}(A):null,looksDownloaded:n(a),remoteKnown:u,statusKnown:v,headSha:w,headShaKnown:x,branch:j,remoteName:l,remoteUrl:m,ahead:o,behind:p,dirtyFiles:q,deleted:r,deletedFiles:t,changedTotal:s}}async function y(a){let b,c=(0,e.hQ)(a);if(null===c)return null;try{b=await d.promises.readFile(i().join(c,"config"),"utf8")}catch{return null}let f=[],g=!1;for(let a of b.split(/\r?\n/)){let b=a.trim();if(b.startsWith("[")){let a=/^\[remote\s+"([^"]+)"\]/.exec(b);g=!!a,a&&f.push({name:a[1],url:null});continue}if(!g||0===f.length)continue;let c=/^url\s*=\s*(.+)$/.exec(b);c&&(f[f.length-1].url=c[1].trim())}return f}async function z(a){let b,c=(0,e.hQ)(a);if(null===c)return{sha:null,known:!1};try{b=await d.promises.readFile(i().join(c,"HEAD"),"utf8")}catch{return{sha:null,known:!1}}let f=a=>/^[0-9a-f]{40}$|^[0-9a-f]{64}$/i.test(a),g=b.trim();if(f(g))return{sha:g.toLowerCase(),known:!0};let h=/^ref:\s*(.+)$/.exec(g);if(!h)return{sha:null,known:!1};let j=h[1].trim();try{let a=(await d.promises.readFile(i().join(c,...j.split("/")),"utf8")).trim();if(f(a))return{sha:a.toLowerCase(),known:!0}}catch{}try{for(let a of(await d.promises.readFile(i().join(c,"packed-refs"),"utf8")).split(/\r?\n/)){let b=a.trim();if(!b||b.startsWith("#")||b.startsWith("^"))continue;let c=b.indexOf(" ");if(!(c<0)&&b.slice(c+1).trim()===j){let a=b.slice(0,c).trim();if(f(a))return{sha:a.toLowerCase(),known:!0}}}return{sha:null,known:!0}}catch{return{sha:null,known:!0}}}async function A(a,b,c){let d=Array(a.length),e=0,f=Array.from({length:Math.min(b,a.length)},async()=>{for(;e<a.length;){let b=e++;d[b]=await c(a[b])}});return await Promise.all(f),d}async function B(a,b){try{let{stdout:c}=await m("git",(0,e.tQ)(b,a),{cwd:a,timeout:8e3,windowsHide:!0,env:(0,e.tl)()});return c.trim()}catch{return null}}let C=new Set([...s,"AppData","Application Data","Program Files","Program Files (x86)","Windows","Library","Music","Pictures","Videos","Saved Games"]),D=["dev","projects","code","src","repos","sites"];async function E(a=[],b=[],c){let d=g().homedir(),e=[d,...["Desktop","Documents","Downloads"].map(a=>i().join(d,a))];for(let a of"CDEFGHIJKLMNOPQRSTUVWXYZ"){let b=`${a}:\\`;if(await K(b))for(let a of D)e.push(i().join(b,a))}let f=new Set(a.map(a=>a.toLowerCase())),h=new Set,k=[],l=[],m=!1,o=[];for(let a of e){if(u(a,b)||!await K(a)||h.has(a.toLowerCase()))continue;if(m){o.push(a);continue}let d=[];await H(a,0,h,d,b);let g=d.filter(a=>!f.has(a.toLowerCase())),j={path:a,found:g.length};l.push(j);let p=g.map(a=>({name:i().basename(a),path:a,looksDownloaded:n(a)}));if(k.push(...p),c)try{c({place:j,found:p,placesDone:l.length,placesPlanned:e.length})}catch{}k.length>=100&&(m=!0)}k.sort((a,b)=>Number(a.looksDownloaded)-Number(b.looksDownloaded)),(0,j.logEvent)(`Searched ${l.length} places - found ${k.length} project${1===k.length?"":"s"}.`,"look");let p={candidates:k,places:l,unvisited:o,capped:m,cap:100};return F.__af360Discover={ts:Date.now(),result:p},p}let F=globalThis;function G(){return F.__af360Discover?.result??null}async function H(a,b,c,e,f=[]){let g;if(!(e.length>=100)){try{g=await d.promises.readdir(a,{withFileTypes:!0})}catch{return}for(let d of g){if(e.length>=100)return;if(d.isSymbolicLink()||!d.isDirectory()||d.name.startsWith(".")||C.has(d.name))continue;let g=i().join(a,d.name);if(u(g,f))continue;let h=g.toLowerCase();if(!c.has(h)){if(await I(g)){c.add(h),e.push(g);continue}b+1<3&&await H(g,b+1,c,e,f)}}}}async function I(a){return await J(a)||await L(i().join(a,"package.json"))}async function J(a){let b=i().join(a,".git");return await K(b)||await L(b)}async function K(a){try{return(await d.promises.stat(a)).isDirectory()}catch{return!1}}async function L(a){try{return(await d.promises.stat(a)).isFile()}catch{return!1}}}};