123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- export function isSchema(input: any): input is Profiling.Schema {
- return (
- typeof input === 'object' &&
- 'transactionName' in input &&
- 'profiles' in input &&
- Array.isArray(input.profiles) &&
- 'shared' in input
- );
- }
- export function isEventedProfile(profile: any): profile is Profiling.EventedProfile {
- return 'type' in profile && profile.type === 'evented';
- }
- export function isSampledProfile(profile: any): profile is Profiling.SampledProfile {
- return 'type' in profile && profile.type === 'sampled';
- }
- export function isJSProfile(profile: any): profile is JSSelfProfiling.Trace {
- return !('type' in profile) && Array.isArray(profile.resources);
- }
- export function isChromeTraceObjectFormat(input: any): input is ChromeTrace.ObjectFormat {
- return typeof input === 'object' && 'traceEvents' in input;
- }
- // We check for the presence of at least one ProfileChunk event in the trace
- export function isChromeTraceArrayFormat(input: any): input is ChromeTrace.ProfileType {
- return (
- Array.isArray(input) && input.some(p => p.ph === 'P' && p.name === 'ProfileChunk')
- );
- }
- // Typescript uses only a subset of the event types (only B and E cat),
- // so we need to inspect the contents of the trace to determine the type of the profile.
- // The TS trace can still contain other event types like metadata events, meaning we cannot
- // use array.every() and need to check all the events to make sure no P events are present
- export function isTypescriptChromeTraceArrayFormat(
- input: any
- ): input is ChromeTrace.ArrayFormat {
- return (
- Array.isArray(input) && !input.some(p => p.ph === 'P' && p.name === 'ProfileChunk')
- );
- }
- export function isChromeTraceFormat(input: any): input is ChromeTrace.ArrayFormat {
- return (
- isTypescriptChromeTraceArrayFormat(input) ||
- isChromeTraceObjectFormat(input) ||
- isChromeTraceArrayFormat(input)
- );
- }
|