UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 3.41 kB
import*as Platform from"../../../core/platform/platform.js";import*as Types from"../types/types.js";import{getNavigationForTraceEvent}from"./Trace.js";export const millisecondsToMicroseconds=e=>Types.Timing.MicroSeconds(1e3*e);export const secondsToMilliseconds=e=>Types.Timing.MilliSeconds(1e3*e);export const secondsToMicroseconds=e=>millisecondsToMicroseconds(secondsToMilliseconds(e));export const microSecondsToMilliseconds=e=>Types.Timing.MilliSeconds(e/1e3);export const microSecondsToSeconds=e=>Types.Timing.Seconds(e/1e3/1e3);export function detectBestTimeUnit(e){if(e<1e3)return 0;const t=e/1e3;if(t<1e3)return 1;return t/1e3<60?2:3}const defaultFormatOptions={style:"unit",unit:"millisecond",unitDisplay:"narrow"},serialize=e=>JSON.stringify(e),formatterFactory=e=>new Intl.NumberFormat(navigator.language,e?JSON.parse(e):{}),formatters=new Map;Platform.MapUtilities.getWithDefault(formatters,serialize({style:"decimal"}),formatterFactory),Platform.MapUtilities.getWithDefault(formatters,serialize(defaultFormatOptions),formatterFactory),Platform.MapUtilities.getWithDefault(formatters,serialize({...defaultFormatOptions,unit:"second"}),formatterFactory),Platform.MapUtilities.getWithDefault(formatters,serialize({...defaultFormatOptions,unit:"minute"}),formatterFactory);export function formatMicrosecondsTime(e,t={}){t.format||(t.format=detectBestTimeUnit(e));const o=e/1e3,i=o/1e3,r={...defaultFormatOptions,...t};switch(t.format){case 0:return`${Platform.MapUtilities.getWithDefault(formatters,serialize({style:"decimal"}),formatterFactory).format(e)}μs`;case 1:return Platform.MapUtilities.getWithDefault(formatters,serialize(r),formatterFactory).format(o);case 2:return Platform.MapUtilities.getWithDefault(formatters,serialize({...r,unit:"second"}),formatterFactory).format(i);default:{const e=Platform.MapUtilities.getWithDefault(formatters,serialize({...r,unit:"minute"}),formatterFactory),t=Platform.MapUtilities.getWithDefault(formatters,serialize({...r,unit:"second"}),formatterFactory),o=i/60,[s,n,a]=e.formatToParts(o);let c=0;return n&&a&&(c=Math.round(60*Number(`0.${a.value}`))),`${e.format(Number(s.value))} ${t.format(c)}`}}}export function timeStampForEventAdjustedByClosestNavigation(e,t,o,i){let r=e.ts-t.min;if(e.args?.data?.navigationId){const t=o.get(e.args.data.navigationId);t&&(r=e.ts-t.ts)}else if(e.args?.data?.frame){const t=getNavigationForTraceEvent(e,e.args.data.frame,i);t&&(r=e.ts-t.ts)}return Types.Timing.MicroSeconds(r)}export function eventTimingsMicroSeconds(e){return{startTime:e.ts,endTime:Types.Timing.MicroSeconds(e.ts+(e.dur||Types.Timing.MicroSeconds(0))),duration:Types.Timing.MicroSeconds(e.dur||0),selfTime:Types.Timing.MicroSeconds(e.dur||0)}}export function eventTimingsMilliSeconds(e){const t=eventTimingsMicroSeconds(e);return{startTime:microSecondsToMilliseconds(t.startTime),endTime:microSecondsToMilliseconds(t.endTime),duration:microSecondsToMilliseconds(t.duration),selfTime:microSecondsToMilliseconds(t.selfTime)}}export function eventTimingsSeconds(e){const t=eventTimingsMicroSeconds(e);return{startTime:microSecondsToSeconds(t.startTime),endTime:microSecondsToSeconds(t.endTime),duration:microSecondsToSeconds(t.duration),selfTime:microSecondsToSeconds(t.selfTime)}}export function traceBoundsMilliseconds(e){return{min:microSecondsToMilliseconds(e.min),max:microSecondsToMilliseconds(e.max),range:microSecondsToMilliseconds(e.range)}}