sussudio
Version:
An unofficial VS Code Internal API
96 lines (95 loc) • 2.8 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import type { IV8Profile, IV8ProfileNode } from "./profiling.mjs";
export interface IProfileModel {
nodes: ReadonlyArray<IComputedNode>;
locations: ReadonlyArray<ILocation>;
samples: ReadonlyArray<number>;
timeDeltas: ReadonlyArray<number>;
rootPath?: string;
duration: number;
}
export interface IComputedNode {
id: number;
selfTime: number;
aggregateTime: number;
children: number[];
parent?: number;
locationId: number;
}
export interface ISourceLocation {
lineNumber: number;
columnNumber: number;
relativePath?: string;
}
export interface CdpCallFrame {
functionName: string;
scriptId: string;
url: string;
lineNumber: number;
columnNumber: number;
}
export interface CdpPositionTickInfo {
line: number;
ticks: number;
}
export interface INode {
id: number;
callFrame: CdpCallFrame;
src?: ISourceLocation;
}
export interface ILocation extends INode {
selfTime: number;
aggregateTime: number;
ticks: number;
}
export interface IAnnotationLocation {
callFrame: CdpCallFrame;
locations: ISourceLocation[];
}
export interface IProfileNode extends IV8ProfileNode {
locationId?: number;
positionTicks?: (CdpPositionTickInfo & {
startLocationId?: number;
endLocationId?: number;
})[];
}
export interface ICpuProfileRaw extends IV8Profile {
nodes: IProfileNode[];
}
/**
* Computes the model for the given profile.
*/
export declare const buildModel: (profile: ICpuProfileRaw) => IProfileModel;
export declare class BottomUpNode {
readonly location: ILocation;
readonly parent?: BottomUpNode | undefined;
static root(): BottomUpNode;
children: {
[id: number]: BottomUpNode;
};
aggregateTime: number;
selfTime: number;
ticks: number;
childrenSize: number;
get id(): number;
get callFrame(): CdpCallFrame;
get src(): ISourceLocation | undefined;
constructor(location: ILocation, parent?: BottomUpNode | undefined);
addNode(node: IComputedNode): void;
}
export declare const processNode: (aggregate: BottomUpNode, node: IComputedNode, model: IProfileModel, initialNode?: IComputedNode) => void;
export interface BottomUpSample {
selfTime: number;
totalTime: number;
location: string;
url: string;
caller: {
percentage: number;
location: string;
}[];
percentage: number;
isSpecial: boolean;
}