@api.global/typedserver
Version:
A TypeScript-based project for easy serving of static files with support for live reloading, compression, and typed requests.
94 lines (93 loc) • 3.33 kB
TypeScript
import { LitElement } from './plugins.js';
import type { CSSResult, TemplateResult } from './plugins.js';
import type { IMetricsData } from './sw-dash-overview.js';
import type { ICachedResource } from './sw-dash-urls.js';
import type { IDomainStats } from './sw-dash-domains.js';
import type { IContentTypeStats } from './sw-dash-types.js';
import type { serviceworker } from '../dist_ts_interfaces/index.js';
import './sw-dash-overview.js';
import './sw-dash-urls.js';
import './sw-dash-domains.js';
import './sw-dash-types.js';
import './sw-dash-events.js';
import './sw-dash-requests.js';
import './sw-dash-table.js';
type ViewType = 'overview' | 'urls' | 'domains' | 'types' | 'events' | 'requests';
interface IResourceData {
resources: ICachedResource[];
domains: IDomainStats[];
contentTypes: IContentTypeStats[];
resourceCount: number;
}
/**
* Main SW Dashboard application shell
*
* Architecture:
* - ONE initial HTTP seed request to /sw-dash/metrics (provides ALL data)
* - HTTP heartbeat every 30s for SW health check
* - Everything else via DeesComms (push from SW, requests to SW)
*/
export declare class SwDashApp extends LitElement {
static styles: CSSResult[];
accessor currentView: ViewType;
accessor metrics: IMetricsData | null;
accessor lastRefresh: string;
accessor isConnected: boolean;
accessor resourceData: IResourceData;
accessor events: serviceworker.IEventLogEntry[];
accessor eventTotalCount: number;
accessor eventCountLastHour: number;
accessor requestLogs: serviceworker.ITypedRequestLogEntry[];
accessor requestTotalCount: number;
accessor requestStats: serviceworker.ITypedRequestStats | null;
accessor requestMethods: string[];
private comms;
private heartbeatInterval;
private readonly HEARTBEAT_INTERVAL_MS;
connectedCallback(): void;
disconnectedCallback(): void;
/**
* Initial HTTP request to seed ALL data and wake up service worker
* This is the ONE HTTP request that provides everything:
* - Core metrics
* - Resources, domains, content types
* - Events (initial 50)
* - Request logs (initial 50), stats, methods
*/
private loadInitialData;
/**
* Setup DeesComms handlers for receiving push updates from SW
* All real-time updates come through here
*/
private setupPushListeners;
/**
* Heartbeat to check SW health periodically (HTTP)
* This is the ONLY periodic HTTP request
*/
private startHeartbeat;
/**
* Handle "load more events" request from sw-dash-events component
* Uses DeesComms to request older events from SW
*/
private handleLoadMoreEvents;
/**
* Handle "clear events" request from sw-dash-events component
* Uses DeesComms to clear event log in SW
*/
private handleClearEvents;
/**
* Handle "load more requests" from sw-dash-requests component
* Uses DeesComms to request older request logs from SW
*/
private handleLoadMoreRequests;
/**
* Handle "clear requests" from sw-dash-requests component
* Uses DeesComms to clear request logs in SW
*/
private handleClearRequests;
private setView;
private handleSpeedtestComplete;
private formatUptime;
render(): TemplateResult;
}
export {};