PageSourceSearch

https://thumpergames.com/chunk-2O5IRPQW.js

js thumpergames.com collected 2026-10-05 19:03:27 UTC 6,909 bytes, 1 lines download raw bytes

vendor: 1,269 bytes, line 1
1import{a as O}from"./chunk-ZLGIXWDI.js";import{a as y}from"./chunk-LASTWSDF.js";import{l as b,n as _}from"./chunk-FLCZYL7Y.js";import"./chunk-ED6QQHWQ.js";import{a as I}from"./chunk-KHD3Z7S5.js";import{m as E,p as M}from"./chunk-N7DXIMIH.js";import{$a as i,Ea as a,Fa as c,G as u,N as f,Sa as p,Va as o,Ya as l,Za as S,ab as e,ba as h,bb as s,ib as k,j as v,jb as g,pb as t,qb as x,rb as C,zb as A}from"./chunk-W5EIO26L.js";function w(n,r){if(n&1&&(i(0,"div",11),t(1),e()),n&2){let d=g();a(),x(d.adminStatusMessage)}}function L(n,r){n&1&&s(0,"span",12)}function R(n,r){n&1&&s(0,"i",13)}function T(n,r){n&1&&(i(0,"div",14),s(1,"span",15),t(2," Checking admin access... "),e())}function D(n,r){if(n&1&&(i(0,"div",16),t(1),e()),n&2){let d=g();a(),C(" ",d.accessErrorMessage," ")}}function z(n,r){if(n&1&&(i(0,"div",17)(1,"a",18)(2,"div",19),s(3,"i",20),e(),i(4,"div")(5,"h2",21),t(6,"Applications"),e(),i(7,"div",11),t(8,"Search, add, edit, and remove configured applications."),e()()(),i(9,"a",22)(10,"div",19),s(11,"i"),e(),i(12,"div")(13,"h2",21),t(14,"Matchmaking"),e(),i(15,"div",11),t(16,"View queue state, game server VMs, game mode instances, and match creation state."),e()()(),i(17,"a",23)(18,"div",19),s(19,"i"),e(),i(20,"div")(21,"h2",21),t(22,"Game Modes"),e(
1),i(23,"div",11),t(24,"Edit game mode scaling, queue settings, launch levels, instances, and game results."),e()()(),i(25,"a",24)(26,"div",19),s(27,"i"),e(),i(28,"div")(29,"h2",21),t(30,"Release Pipeline"),e(),i(31,"div",11),t(32,"Review storage builds and remove retired dedicated server zips."),e()()(),i(33,"a",25)(34,"div",19),s(35,"i",26),e(),i(36,"div")(37,"h2",21),t(38,"Users"),e(),i(39,"div",11),t(40,"Manage users, roles, and manual verification emails."),e()()(),i(41,"a",27)(42,"div",19),s(43,"i"),e(),i(44,"div")(45,"h2",21),t(46,"Dashboard"),e(),i(47,"div",11),t(48,"Monitor service health and search logs by application, level, path, user, and message."),e()()(),i(49,"a",28)(50,"div",19),s(51,"i"),e(),i(52,"div")(53,"h2",21),t(54,"Polling Tick Rates"),e(),i(55,"div",11),t(56,"Manage service, admin view, and heartbeat timing rules."),e()()(),i(57,"a",29)(58,"div",19),s(59,"i"),e(),i(60,"div")(61,"h2",21),t(62,"Rate Limit Counters"),e(),i(63,"div",11),t(64,"View and reset authentication throttle counters."),e()()()()),n&2){let d=g();a(11),l(d.iconService.getIconClass("Matchmaking")),a(8),l(d.iconService.getIconClass("Game Modes")),a(8),l(d.iconService.getIconClass("Release Pipeline")),a(16),l(d.iconService.getIconClass("Dashboard")),a(8),l(d.iconService.getIconClass("Polling Tick Rates")),a(8),l(d.iconService.getIconClass("Rate Limit Counters"))}}var P=class n{constructor(r,d,m){this.adminService=r;this.notificationService=d;this.iconService=m}destroy$=new v;isCheckingAccess=!0;isAdminAuthorized=!1;adminStatusMessage=null;accessErrorMessage=null;ngOnInit(){this.checkAdminAccess()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}checkAdminAccess(){this.isCheckingAccess=!0,this.accessErrorMessage=null,this.adminService.getAdminStatus().pipe(f(this.destroy$),u(()=>{this.isCheckingAccess=!1})).subscribe({next:r=>{this.isAdminAuthorized=!0,this.adminStatusMessage=r.message},error:r=>{this.isAdminAuthorized=!1,this.accessErrorMessage=this.getAccessErrorMessage(r)}})}getAccessErrorMessage(r){return r?.status===401?"Sign in with an admin account to open the admin panel.":r?.status===403?"Your account is signed in, but it does not have the Admin role.":this.notificationService.extractServerErrors(r).join(" ")}static \u0275fac=function(d){return new(d||n)(c(O),c(y),c(I))};static \u0275cmp=h({type:n,selectors:[["app-admin"]],standalone:!0,features:[A],decls:15,vars:10,consts:[[1,"container-fluid","py-4"],[1,"admin-shell","bg-dark-subtle","p-4"],[1,"admin-header"],[1,"h2","mb-1"],["class","text-muted",4,"ngIf"],["type","button",1,"btn","btn-outline-info",3,"click","disabled"],["class","spinner-border spinner-border-sm me-1","role","status","aria-hidden","true",4,"ngIf"],["class","fa-solid fa-rotate me-1",4,"ngIf"],["class","admin-loading mt-4",4,"ngIf"],["class","alert alert-danger mt-4","role","alert",4,"ngIf"],["class","admin-link-grid mt-4",4,"ngIf"],[1,"text-muted"],["role","status","aria-hidden","true",1,"spinner-border","spinner-border-sm","me-1"],[1,"fa-solid","fa-rotate","me-1"],[1,"admin-loading","mt-4"],["role","status","aria-hidden","true",1,"spinner-border","spinner-border-sm","me-2"],["role","alert",1,"alert","alert-danger","mt-4"],[1,"admin-link-grid","mt-4"],["routerLink","/admin/applications",1,"admin-link-card"],[1,"admin-link-icon"],[1,"fa-solid","fa-layer-group"],[1,"h4","mb-1"],["routerLink","/admin/matchmaking",1,"admin-link-card"],["routerLink","/admin/game-modes",1,"admin-link-card"],["routerLink","/admin/release-pipeline",1,"admin-link-card"],["routerLink","/admin/users",1,"admin-link-card"],[1,"fa-solid","fa-users"],["routerLink","/admin/dashboard",1,"admin-link-card"],["routerLink","/admin/polling-tick-rates",1,"admin-link-card"],["routerLink","/admin/rate-limit-counters",1,"admin-link-card"]],template:function(d,m){d&1&&(i(0,"div",0)(1,"section",1)(2,"div",2)(3,"div")(4,"h1",3),s(5,"i"),t(6,"Admin "),e(),p(7,w,2,1,"div",4),e(),i(8,"button",5),k("click",function(){return m.checkAdminAccess()}),p(9,L,1,0,"span",6)(10,R,1,0,"i",7),t(11,"Refresh "),e()(),p(12,T,3,0,"div",8)(13,D,2,1,"div",9)(14,z,65,18,"div",10),e()()),d&2&&(a(5),S("",m.iconService.getIconClass("Admin")," me-2"),a(2),o("ngIf",m.adminStatusMessage),a(),o("disabled",m.isCheckingAccess),a(),o("ngIf",m.isCheckingAccess),a(),o("ngIf",!m.isCheckingAccess),a(2),o("ngIf",m.isCheckingAccess),a(),o("ngIf",m.accessErrorMessage&&!m.isCheckingAccess),a(),o("ngIf",m.isAdminAuthorized))},dependencies:[M,E,_,b],styles:[".admin-shell[_ngcontent-%COMP%]{border-radius:8px}.admin-header[_ngcontent-%COMP%]{display:flex;align-items:start;justify-content:space-between;gap:1rem}.admin-link-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.admin-link-card[_ngcontent-%COMP%]{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:1rem;min-height:8rem;padding:1rem;color:inherit;text-decoration:none;background:#00000038;border:1px solid rgba(255,255,255,.08);border-radius:8px}.admin-link-card[_ngcontent-%COMP%]:hover{color:inherit;border-color:#0dcaf0a6}.admin-link-icon[_ngcontent-%COMP%]{display:grid;place-items:center;width:3rem;height:3rem;border-radius:8px;background:#0dcaf01f;color:#0dcaf0;font-size:1.35rem}.admin-loading[_ngcontent-%COMP%]{color:var(--bs-secondary-color)}@media (max-width: 767.98px){.admin-header[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr}.admin-link-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}@media (min-width: 768px) and (max-width: 1199.98px){.admin-link-grid[_ngcontent-%COMP%]{grid-template-columns:repeat(2,minmax(0,1fr))}}"]})};export{P as AdminComponent};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.