tressi
Version:
Deterministic load testing for API performance validation.
2 lines (1 loc) • 1.49 kB
JavaScript
import{a as t}from"./chunk-RQPLME55.js";import{R as s,e as n}from"./chunk-W6IDPYNF.js";var o=class a{_url="/api/metrics/stream";_eventSource=null;_metricsSubject=new n;_testEventsSubject=new n;_connectedSubject=new n;_errorSubject=new n;getMetricsStream(){return this._ensureConnected(),this._metricsSubject.asObservable()}getTestEventsStream(){return this._ensureConnected(),this._testEventsSubject.asObservable()}getConnectedStream(){return this._ensureConnected(),this._connectedSubject.asObservable()}getErrorStream(){return this._errorSubject.asObservable()}_ensureConnected(){this._eventSource||this.connectToEventStream()}connectToEventStream(){this._eventSource&&this.disconnectFromEventStream(),this._eventSource=new EventSource(this._url),this._eventSource.onmessage=r=>{try{let e=JSON.parse(r.data);switch(e.event){case t.METRICS:this._metricsSubject.next(e.data);break;case t.TEST.STARTED:case t.TEST.COMPLETED:case t.TEST.FAILED:case t.TEST.CANCELLED:this._testEventsSubject.next(e.data);break;case t.CONNECTED:this._connectedSubject.next(e.data);break}}catch(e){console.error("Failed to parse event message:",e)}},this._eventSource.onerror=r=>{console.error("EventSource error:",r),this._errorSubject.next(r),this.disconnectFromEventStream()}}disconnectFromEventStream(){this._eventSource&&(this._eventSource.close(),this._eventSource=null)}static \u0275fac=function(e){return new(e||a)};static \u0275prov=s({token:a,factory:a.\u0275fac,providedIn:"root"})};export{o as a};