(traceId: string)
| 52 | } |
| 53 | |
| 54 | const trace$ = (traceId: string) => { |
| 55 | // eslint-disable-next-line @typescript-eslint/prefer-optional-chain |
| 56 | if (typeof window !== 'undefined' && window.performance?.mark) { |
| 57 | const entries = window.performance.getEntriesByName(traceId, 'measure') || []; |
| 58 | const startMarkName = `_${traceId}Start[${entries.length}]`; |
| 59 | const endMarkName = `_${traceId}End[${entries.length}]`; |
| 60 | return new Observable<void>(emitter => { |
| 61 | window.performance.mark(startMarkName); |
| 62 | emitter.next(); |
| 63 | return { |
| 64 | unsubscribe: () => { |
| 65 | window.performance.mark(endMarkName); |
| 66 | window.performance.measure(traceId, startMarkName, endMarkName); |
| 67 | } |
| 68 | }; |
| 69 | }); |
| 70 | } else { |
| 71 | return EMPTY; |
| 72 | } |
| 73 | }; |
| 74 | |
| 75 | export const traceUntil = <T = any>( |
| 76 | name: string, |
no outgoing calls
no test coverage detected