2021-12-10 02:37:01 +00:00
|
|
|
/**
|
|
|
|
|
* @license
|
|
|
|
|
* Copyright Google LLC All Rights Reserved.
|
|
|
|
|
*
|
|
|
|
|
* Use of this source code is governed by an MIT-style license that can be
|
2024-09-20 15:23:15 +00:00
|
|
|
* found in the LICENSE file at https://angular.dev/license
|
2021-12-10 02:37:01 +00:00
|
|
|
*/
|
|
|
|
|
|
2025-03-07 00:49:41 +00:00
|
|
|
import {
|
2026-04-02 18:37:34 +00:00
|
|
|
ɵAcxChangeDetectionStrategy as AcxChangeDetectionStrategy,
|
2025-03-07 00:49:41 +00:00
|
|
|
ɵAcxViewEncapsulation as AcxViewEncapsulation,
|
2026-04-02 18:37:34 +00:00
|
|
|
ChangeDetectionStrategy as AngularChangeDetectionStrategy,
|
2026-02-10 19:30:50 +00:00
|
|
|
ViewEncapsulation as AngularViewEncapsulation,
|
|
|
|
|
ɵFramework as Framework,
|
2025-03-07 00:49:41 +00:00
|
|
|
InjectionToken,
|
|
|
|
|
InjectOptions,
|
|
|
|
|
Injector,
|
|
|
|
|
Type,
|
|
|
|
|
} from '@angular/core';
|
2020-04-08 18:35:50 +00:00
|
|
|
|
2025-05-20 01:53:12 +00:00
|
|
|
export interface DebugSignalGraphNode {
|
|
|
|
|
id: string;
|
2025-09-29 07:43:25 +00:00
|
|
|
kind:
|
|
|
|
|
| 'signal'
|
|
|
|
|
| 'computed'
|
|
|
|
|
| 'effect'
|
|
|
|
|
| 'template'
|
|
|
|
|
| 'linkedSignal'
|
|
|
|
|
| 'afterRenderEffectPhase'
|
2026-02-10 23:13:58 +00:00
|
|
|
| 'childSignalProp' // Represents a signal passed as a prop to a child component in a CoW app
|
2025-09-29 07:43:25 +00:00
|
|
|
| 'unknown';
|
2025-05-20 01:53:12 +00:00
|
|
|
epoch: number;
|
|
|
|
|
label?: string;
|
|
|
|
|
preview: Descriptor;
|
2025-07-17 05:30:49 +00:00
|
|
|
debuggable: boolean;
|
2025-05-20 01:53:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface DebugSignalGraphEdge {
|
|
|
|
|
/**
|
|
|
|
|
* Index of a signal node in the `nodes` array that is a consumer of the signal produced by the producer node.
|
|
|
|
|
*/
|
|
|
|
|
consumer: number;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Index of a signal node in the `nodes` array that is a producer of the signal consumed by the consumer node.
|
|
|
|
|
*/
|
|
|
|
|
producer: number;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* A debug representation of the signal graph.
|
|
|
|
|
*/
|
|
|
|
|
export interface DebugSignalGraph {
|
|
|
|
|
nodes: DebugSignalGraphNode[];
|
|
|
|
|
edges: DebugSignalGraphEdge[];
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-20 01:39:32 +00:00
|
|
|
export interface SignalNodePosition {
|
|
|
|
|
element: ElementPosition;
|
|
|
|
|
signalId: string;
|
|
|
|
|
}
|
|
|
|
|
|
2020-01-27 18:40:18 +00:00
|
|
|
export interface DirectiveType {
|
|
|
|
|
name: string;
|
2020-02-20 01:33:54 +00:00
|
|
|
id: number;
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ComponentType {
|
|
|
|
|
name: string;
|
2020-03-09 23:13:34 +00:00
|
|
|
isElement: boolean;
|
2020-02-20 01:33:54 +00:00
|
|
|
id: number;
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|
|
|
|
|
|
2024-01-19 19:29:24 +00:00
|
|
|
export type HydrationStatus =
|
2025-04-16 11:13:12 +00:00
|
|
|
// null represent the absence of hydration status (a node created via CSR)
|
2024-01-19 19:29:24 +00:00
|
|
|
| null
|
2025-04-16 11:13:12 +00:00
|
|
|
| {status: 'hydrated' | 'skipped' | 'dehydrated'}
|
2024-01-19 19:29:24 +00:00
|
|
|
| {
|
|
|
|
|
status: 'mismatched';
|
|
|
|
|
expectedNodeDetails: string | null;
|
|
|
|
|
actualNodeDetails: string | null;
|
|
|
|
|
};
|
|
|
|
|
|
2026-02-16 16:18:02 +00:00
|
|
|
export enum ControlFlowBlockType {
|
|
|
|
|
Defer,
|
|
|
|
|
For,
|
|
|
|
|
}
|
2025-04-16 11:13:12 +00:00
|
|
|
|
2026-02-16 16:18:02 +00:00
|
|
|
export interface ControlFlowBlock {
|
2025-04-16 11:13:12 +00:00
|
|
|
id: string;
|
2026-02-16 16:18:02 +00:00
|
|
|
type: ControlFlowBlockType;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface DeferBlock extends ControlFlowBlock {
|
|
|
|
|
type: ControlFlowBlockType.Defer;
|
2025-04-16 11:13:12 +00:00
|
|
|
state: 'placeholder' | 'loading' | 'complete' | 'error' | 'initial';
|
2026-01-14 15:40:23 +00:00
|
|
|
renderedBlock: RenderedDeferBlock | null;
|
2025-04-16 11:13:12 +00:00
|
|
|
triggers: {
|
|
|
|
|
defer: string[];
|
|
|
|
|
hydrate: string[];
|
|
|
|
|
prefetch: string[];
|
|
|
|
|
};
|
2026-02-16 16:18:02 +00:00
|
|
|
blocks: DeferBlockDetails;
|
2025-04-16 11:13:12 +00:00
|
|
|
}
|
|
|
|
|
|
2026-02-16 16:18:02 +00:00
|
|
|
export type RenderedDeferBlock = 'defer' | 'placeholder' | 'loading' | 'error';
|
|
|
|
|
|
|
|
|
|
export interface DeferBlockDetails {
|
2025-04-16 11:13:12 +00:00
|
|
|
hasErrorBlock: boolean;
|
2026-01-14 15:40:23 +00:00
|
|
|
placeholderBlock: {exists: boolean; minimumTime: number | null};
|
|
|
|
|
loadingBlock: {exists: boolean; minimumTime: number | null; afterTime: number | null};
|
2025-04-16 11:13:12 +00:00
|
|
|
}
|
|
|
|
|
|
2026-02-16 16:18:02 +00:00
|
|
|
export interface ForLoopBlock extends ControlFlowBlock {
|
|
|
|
|
type: ControlFlowBlockType.For;
|
2025-12-18 16:42:02 +00:00
|
|
|
hasEmptyBlock: boolean;
|
|
|
|
|
items: Descriptor[];
|
|
|
|
|
trackExpression: string;
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-02 18:37:34 +00:00
|
|
|
export type ChangeDetection = 'ng-on-push' | 'ng-eager' | 'acx-on-push' | 'acx-default';
|
|
|
|
|
|
2025-04-16 11:13:12 +00:00
|
|
|
// TODO: refactor to remove nativeElement as it is not serializable
|
|
|
|
|
// and only really exists on the ng-devtools-backend
|
2020-02-21 00:34:52 +00:00
|
|
|
export interface DevToolsNode<DirType = DirectiveType, CmpType = ComponentType> {
|
2026-04-17 19:35:39 +00:00
|
|
|
element?: string;
|
2026-04-17 21:37:20 +00:00
|
|
|
directives?: DirType[];
|
2021-12-09 05:44:17 +00:00
|
|
|
component: CmpType | null;
|
2020-02-21 00:34:52 +00:00
|
|
|
children: DevToolsNode<DirType, CmpType>[];
|
|
|
|
|
nativeElement?: Node;
|
2023-10-05 08:00:31 +00:00
|
|
|
resolutionPath?: SerializedInjector[];
|
2024-01-19 19:29:24 +00:00
|
|
|
hydration: HydrationStatus;
|
2026-02-16 16:18:02 +00:00
|
|
|
controlFlowBlock: ControlFlowBlock | null;
|
2026-04-02 18:37:34 +00:00
|
|
|
changeDetection?: ChangeDetection;
|
2026-04-01 22:21:22 +00:00
|
|
|
injector?: Injector;
|
2023-10-05 08:00:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface SerializedInjector {
|
|
|
|
|
id: string;
|
|
|
|
|
name: string;
|
2025-02-19 13:53:23 +00:00
|
|
|
type: 'imported-module' | 'environment' | 'element' | 'null' | 'hidden';
|
2023-10-05 08:00:31 +00:00
|
|
|
node?: DevToolsNode;
|
2023-11-02 05:50:48 +00:00
|
|
|
providers?: number;
|
2023-10-05 08:00:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface SerializedProviderRecord {
|
|
|
|
|
token: string;
|
2026-01-04 19:39:48 +00:00
|
|
|
type: 'type' | 'existing' | 'class' | 'value' | 'factory' | 'multi' | 'internal';
|
2023-10-05 08:00:31 +00:00
|
|
|
multi: boolean;
|
|
|
|
|
isViewProvider: boolean;
|
2023-11-02 05:50:48 +00:00
|
|
|
index?: number | number[];
|
2023-10-05 08:00:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Duplicate of the InjectedService interface from Angular framework to prevent
|
2023-11-25 19:26:37 +00:00
|
|
|
* needing to publicly expose the interface from the framework.
|
2023-10-05 08:00:31 +00:00
|
|
|
*/
|
|
|
|
|
export interface InjectedService {
|
|
|
|
|
token?: Type<unknown> | InjectionToken<unknown>;
|
|
|
|
|
value: unknown;
|
|
|
|
|
flags?: InjectOptions;
|
|
|
|
|
providedIn: Injector;
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|
|
|
|
|
|
2023-12-06 16:02:03 +00:00
|
|
|
export type ContainerType = 'WritableSignal' | 'ReadonlySignal' | null;
|
|
|
|
|
|
2020-01-27 18:40:18 +00:00
|
|
|
export enum PropType {
|
|
|
|
|
Number,
|
|
|
|
|
String,
|
|
|
|
|
Null,
|
|
|
|
|
Undefined,
|
|
|
|
|
Symbol,
|
2020-03-20 23:40:01 +00:00
|
|
|
HTMLNode,
|
2020-01-27 18:40:18 +00:00
|
|
|
Boolean,
|
|
|
|
|
BigInt,
|
|
|
|
|
Function,
|
|
|
|
|
Object,
|
|
|
|
|
Date,
|
|
|
|
|
Array,
|
2023-03-20 13:41:19 +00:00
|
|
|
Set,
|
2023-11-25 19:26:37 +00:00
|
|
|
Map,
|
2020-01-27 18:40:18 +00:00
|
|
|
Unknown,
|
2025-09-29 16:41:24 +00:00
|
|
|
|
|
|
|
|
// Special Type when an error occurs during property access
|
|
|
|
|
Error,
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface Descriptor {
|
|
|
|
|
expandable: boolean;
|
|
|
|
|
value?: any;
|
|
|
|
|
editable: boolean;
|
|
|
|
|
type: PropType;
|
|
|
|
|
preview: string;
|
2023-12-06 16:02:03 +00:00
|
|
|
containerType: ContainerType;
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface DirectivesProperties {
|
|
|
|
|
[name: string]: Properties;
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-07 00:49:41 +00:00
|
|
|
/** Directive metadata shared by all frameworks. */
|
|
|
|
|
export interface BaseDirectiveMetadata {
|
|
|
|
|
framework: Framework;
|
|
|
|
|
name?: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** Directive metadata specific to Angular. */
|
|
|
|
|
export interface AngularDirectiveMetadata extends BaseDirectiveMetadata {
|
|
|
|
|
framework: Framework.Angular;
|
2021-12-09 05:44:17 +00:00
|
|
|
inputs: {[name: string]: string};
|
|
|
|
|
outputs: {[name: string]: string};
|
2025-03-07 00:49:41 +00:00
|
|
|
encapsulation?: AngularViewEncapsulation;
|
2026-04-02 18:37:34 +00:00
|
|
|
changeDetection?: AngularChangeDetectionStrategy;
|
2023-10-05 08:00:31 +00:00
|
|
|
dependencies?: SerializedInjectedService[];
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-07 00:49:41 +00:00
|
|
|
/** Directive metadata specific to ACX. */
|
|
|
|
|
export interface AcxDirectiveMetadata extends BaseDirectiveMetadata {
|
|
|
|
|
framework: Framework.ACX;
|
|
|
|
|
inputs: {[name: string]: string};
|
|
|
|
|
outputs: {[name: string]: string};
|
|
|
|
|
encapsulation?: AcxViewEncapsulation;
|
2026-04-02 18:37:34 +00:00
|
|
|
changeDetection?: AcxChangeDetectionStrategy;
|
2025-03-07 00:49:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** Directive metadata specific to Wiz. */
|
|
|
|
|
export interface WizComponentMetadata extends BaseDirectiveMetadata {
|
|
|
|
|
framework: Framework.Wiz;
|
|
|
|
|
props: {[name: string]: string};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** Directive metadata for all supported frameworks. */
|
|
|
|
|
export type DirectiveMetadata =
|
|
|
|
|
| AngularDirectiveMetadata
|
|
|
|
|
| AcxDirectiveMetadata
|
|
|
|
|
| WizComponentMetadata;
|
|
|
|
|
|
2023-10-05 08:00:31 +00:00
|
|
|
export interface SerializedInjectedService {
|
|
|
|
|
token: string;
|
|
|
|
|
value: string;
|
|
|
|
|
position: number[];
|
|
|
|
|
flags?: InjectOptions;
|
2023-11-02 07:09:20 +00:00
|
|
|
resolutionPath?: SerializedInjector[];
|
2020-04-08 18:35:50 +00:00
|
|
|
}
|
|
|
|
|
|
2020-01-27 18:40:18 +00:00
|
|
|
export interface Properties {
|
2021-12-09 05:44:17 +00:00
|
|
|
props: {[name: string]: Descriptor};
|
2020-04-08 18:35:50 +00:00
|
|
|
metadata?: DirectiveMetadata;
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|
|
|
|
|
|
2020-02-19 21:39:32 +00:00
|
|
|
export type ElementPosition = number[];
|
2020-01-27 18:40:18 +00:00
|
|
|
|
2020-02-19 21:39:32 +00:00
|
|
|
export interface DirectivePosition {
|
|
|
|
|
element: ElementPosition;
|
2020-01-27 18:40:18 +00:00
|
|
|
directive?: number;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface NestedProp {
|
2021-12-09 05:44:17 +00:00
|
|
|
name: string | number;
|
2020-01-27 18:40:18 +00:00
|
|
|
children: NestedProp[];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ComponentExplorerViewProperties {
|
2020-03-20 23:02:11 +00:00
|
|
|
[directive: string]: NestedProp[];
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|
|
|
|
|
|
2020-03-20 23:02:11 +00:00
|
|
|
export enum PropertyQueryTypes {
|
|
|
|
|
All,
|
|
|
|
|
Specified,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface AllPropertiesQuery {
|
|
|
|
|
type: PropertyQueryTypes.All;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface SelectedPropertiesQuery {
|
|
|
|
|
type: PropertyQueryTypes.Specified;
|
|
|
|
|
properties: ComponentExplorerViewProperties;
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-09 05:44:17 +00:00
|
|
|
export type PropertyQuery = AllPropertiesQuery | SelectedPropertiesQuery;
|
2020-03-20 23:02:11 +00:00
|
|
|
|
2020-01-27 18:40:18 +00:00
|
|
|
export interface ComponentExplorerViewQuery {
|
2020-03-20 23:02:11 +00:00
|
|
|
selectedElement: ElementPosition;
|
|
|
|
|
propertyQuery: PropertyQuery;
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ComponentExplorerView {
|
2020-02-21 00:34:52 +00:00
|
|
|
forest: DevToolsNode[];
|
2020-03-20 23:02:11 +00:00
|
|
|
properties?: DirectivesProperties;
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|
|
|
|
|
|
2020-02-20 20:48:53 +00:00
|
|
|
export interface LifecycleProfile {
|
|
|
|
|
ngOnInit?: number;
|
|
|
|
|
ngOnDestroy?: number;
|
|
|
|
|
ngOnChanges?: number;
|
|
|
|
|
ngDoCheck?: number;
|
|
|
|
|
ngAfterContentInit?: number;
|
|
|
|
|
ngAfterContentChecked?: number;
|
|
|
|
|
ngAfterViewInit?: number;
|
|
|
|
|
ngAfterViewChecked?: number;
|
|
|
|
|
}
|
|
|
|
|
|
2021-04-29 00:20:20 +00:00
|
|
|
export interface OutputProfile {
|
|
|
|
|
[outputName: string]: number;
|
|
|
|
|
}
|
|
|
|
|
|
2020-02-20 19:49:08 +00:00
|
|
|
export interface DirectiveProfile {
|
|
|
|
|
name: string;
|
2020-03-09 23:13:34 +00:00
|
|
|
isElement: boolean;
|
2020-02-20 19:49:08 +00:00
|
|
|
isComponent: boolean;
|
2020-02-20 20:48:53 +00:00
|
|
|
lifecycle: LifecycleProfile;
|
2021-04-29 00:20:20 +00:00
|
|
|
outputs: OutputProfile;
|
2020-03-31 17:44:59 +00:00
|
|
|
changeDetection?: number;
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|
|
|
|
|
|
2020-02-20 19:49:08 +00:00
|
|
|
export interface ElementProfile {
|
|
|
|
|
directives: DirectiveProfile[];
|
|
|
|
|
children: ElementProfile[];
|
2026-02-16 16:18:02 +00:00
|
|
|
type: 'element' | 'defer' | 'for';
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|
|
|
|
|
|
2020-02-20 19:49:08 +00:00
|
|
|
export interface ProfilerFrame {
|
2020-01-27 18:40:18 +00:00
|
|
|
source: string;
|
2020-03-31 19:01:03 +00:00
|
|
|
duration: number;
|
2020-02-20 19:49:08 +00:00
|
|
|
directives: ElementProfile[];
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|
|
|
|
|
|
2020-02-19 20:07:01 +00:00
|
|
|
export interface UpdatedStateData {
|
2020-02-24 17:38:22 +00:00
|
|
|
directiveId: DirectivePosition;
|
2020-02-19 20:07:01 +00:00
|
|
|
keyPath: string[];
|
|
|
|
|
newValue: any;
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-07 13:15:42 +00:00
|
|
|
export interface Route {
|
2024-10-15 18:39:26 +00:00
|
|
|
name?: string;
|
2025-02-24 16:11:05 +00:00
|
|
|
hash?: string;
|
|
|
|
|
specificity?: string;
|
2024-10-15 18:39:26 +00:00
|
|
|
handler?: string;
|
|
|
|
|
pathMatch?: 'prefix' | 'full';
|
2025-02-24 16:11:05 +00:00
|
|
|
canActivateGuards?: string[];
|
|
|
|
|
canActivateChildGuards?: string[];
|
|
|
|
|
canMatchGuards?: string[];
|
|
|
|
|
canDeactivateGuards?: string[];
|
|
|
|
|
providers?: string[];
|
2024-10-15 18:39:26 +00:00
|
|
|
title?: string;
|
2021-02-07 13:15:42 +00:00
|
|
|
children?: Array<Route>;
|
2025-12-04 19:44:00 +00:00
|
|
|
data?: {[key: string | symbol]: any};
|
|
|
|
|
resolvers?: {[key: string]: string};
|
2024-10-15 18:39:26 +00:00
|
|
|
path: string;
|
|
|
|
|
component: string;
|
2025-10-31 16:48:02 +00:00
|
|
|
redirectTo?: string;
|
2024-10-15 18:39:26 +00:00
|
|
|
isActive: boolean;
|
2021-02-07 13:15:42 +00:00
|
|
|
isAux: boolean;
|
2024-10-15 18:39:26 +00:00
|
|
|
isLazy: boolean;
|
2025-11-17 17:17:57 +00:00
|
|
|
matcher?: string;
|
|
|
|
|
runGuardsAndResolvers?:
|
|
|
|
|
| 'pathParamsChange'
|
|
|
|
|
| 'pathParamsOrQueryParamsChange'
|
|
|
|
|
| 'paramsChange'
|
|
|
|
|
| 'paramsOrQueryParamsChange'
|
|
|
|
|
| 'always'
|
|
|
|
|
| (string & {});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type OnlyLiterals<T> = T extends string ? (string extends T ? never : T) : never;
|
|
|
|
|
export type RunGuardsAndResolvers = OnlyLiterals<Route['runGuardsAndResolvers']>;
|
2021-02-07 13:15:42 +00:00
|
|
|
|
2024-03-05 03:54:58 +00:00
|
|
|
export interface AngularDetection {
|
|
|
|
|
// This is necessary because the runtime
|
|
|
|
|
// message listener handles messages globally
|
|
|
|
|
// including from other extensions. We don't
|
|
|
|
|
// want to set icon and/or popup based on
|
|
|
|
|
// a message coming from an unrelated extension.
|
|
|
|
|
isAngularDevTools: true;
|
|
|
|
|
isIvy: boolean;
|
|
|
|
|
isAngular: boolean;
|
|
|
|
|
isDebugMode: boolean;
|
|
|
|
|
isSupportedAngularVersion: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
2020-03-23 23:35:02 +00:00
|
|
|
export type Topic = keyof Events;
|
|
|
|
|
|
2025-03-27 15:26:53 +00:00
|
|
|
export interface SupportedApis {
|
|
|
|
|
profiler: boolean;
|
|
|
|
|
dependencyInjection: boolean;
|
|
|
|
|
routes: boolean;
|
2025-05-20 01:50:36 +00:00
|
|
|
signals: boolean;
|
2025-07-18 12:15:07 +00:00
|
|
|
transferState: boolean;
|
2025-05-13 16:19:35 +00:00
|
|
|
signalPropertiesInspection: boolean;
|
2025-03-27 15:26:53 +00:00
|
|
|
}
|
|
|
|
|
|
2025-07-18 12:15:07 +00:00
|
|
|
export type TransferStateValue =
|
|
|
|
|
| string
|
|
|
|
|
| number
|
|
|
|
|
| boolean
|
|
|
|
|
| null
|
|
|
|
|
| undefined
|
|
|
|
|
| Record<string, unknown>
|
|
|
|
|
| unknown[];
|
|
|
|
|
|
2020-01-27 18:40:18 +00:00
|
|
|
export interface Events {
|
|
|
|
|
handshake: () => void;
|
|
|
|
|
shutdown: () => void;
|
|
|
|
|
queryNgAvailability: () => void;
|
2021-12-09 05:44:17 +00:00
|
|
|
ngAvailability: (config: {
|
2024-04-05 22:24:43 +00:00
|
|
|
version: string | undefined;
|
2021-12-09 05:44:17 +00:00
|
|
|
devMode: boolean;
|
|
|
|
|
ivy: boolean;
|
2024-01-19 19:29:24 +00:00
|
|
|
hydration: boolean;
|
2025-12-03 15:55:03 +00:00
|
|
|
supportedApis: SupportedApis | null;
|
2021-12-09 05:44:17 +00:00
|
|
|
}) => void;
|
2020-01-27 18:40:18 +00:00
|
|
|
|
|
|
|
|
inspectorStart: () => void;
|
|
|
|
|
inspectorEnd: () => void;
|
|
|
|
|
|
2025-05-20 01:53:12 +00:00
|
|
|
getSignalGraph: (query: ElementPosition) => void;
|
2025-11-12 14:28:42 +00:00
|
|
|
latestSignalGraph: (graph: DebugSignalGraph | null) => void;
|
2025-05-20 01:53:12 +00:00
|
|
|
|
2025-06-06 02:49:38 +00:00
|
|
|
getSignalNestedProperties: (position: SignalNodePosition, path: string[]) => void;
|
|
|
|
|
signalNestedProperties: (position: SignalNodePosition, data: Properties, path: string[]) => void;
|
|
|
|
|
|
2020-02-19 21:39:32 +00:00
|
|
|
getNestedProperties: (position: DirectivePosition, path: string[]) => void;
|
|
|
|
|
nestedProperties: (position: DirectivePosition, data: Properties, path: string[]) => void;
|
2020-01-27 18:40:18 +00:00
|
|
|
|
2020-02-19 21:39:32 +00:00
|
|
|
setSelectedComponent: (position: ElementPosition) => void;
|
2021-02-26 05:25:47 +00:00
|
|
|
getRoutes: () => void;
|
2021-02-07 13:15:42 +00:00
|
|
|
updateRouterTree: (routes: Route[]) => void;
|
2024-12-12 00:17:03 +00:00
|
|
|
navigateRoute: (route: string) => void;
|
2020-01-31 18:54:51 +00:00
|
|
|
|
2020-01-27 18:40:18 +00:00
|
|
|
componentTreeDirty: () => void;
|
2020-03-20 23:02:11 +00:00
|
|
|
getLatestComponentExplorerView: (query?: ComponentExplorerViewQuery) => void;
|
2020-01-27 18:40:18 +00:00
|
|
|
latestComponentExplorerView: (view: ComponentExplorerView) => void;
|
|
|
|
|
|
2020-02-19 20:07:01 +00:00
|
|
|
updateState: (value: UpdatedStateData) => void;
|
2025-09-30 00:26:01 +00:00
|
|
|
logValue: (value: {directiveId: DirectivePosition; keyPath: string[] | null}) => void;
|
2020-02-19 20:07:01 +00:00
|
|
|
|
2020-01-27 18:40:18 +00:00
|
|
|
startProfiling: () => void;
|
|
|
|
|
stopProfiling: () => void;
|
2020-02-20 19:49:08 +00:00
|
|
|
sendProfilerChunk: (results: ProfilerFrame) => void;
|
|
|
|
|
profilerResults: (results: ProfilerFrame) => void;
|
2020-04-14 22:27:59 +00:00
|
|
|
|
|
|
|
|
createHighlightOverlay: (position: ElementPosition) => void;
|
|
|
|
|
removeHighlightOverlay: () => void;
|
|
|
|
|
|
2024-01-19 19:29:24 +00:00
|
|
|
createHydrationOverlay: () => void;
|
|
|
|
|
removeHydrationOverlay: () => void;
|
|
|
|
|
|
2020-04-14 22:27:59 +00:00
|
|
|
highlightComponent: (id: number) => void;
|
|
|
|
|
selectComponent: (id: number) => void;
|
|
|
|
|
removeComponentHighlight: () => void;
|
2020-05-07 03:21:32 +00:00
|
|
|
|
|
|
|
|
enableTimingAPI: () => void;
|
|
|
|
|
disableTimingAPI: () => void;
|
2023-10-05 08:00:31 +00:00
|
|
|
|
|
|
|
|
// todo: type properly
|
|
|
|
|
getInjectorProviders: (injector: SerializedInjector) => void;
|
|
|
|
|
latestInjectorProviders: (
|
|
|
|
|
injector: SerializedInjector,
|
|
|
|
|
providers: SerializedProviderRecord[],
|
|
|
|
|
) => void;
|
2023-11-02 05:50:48 +00:00
|
|
|
|
|
|
|
|
logProvider: (injector: SerializedInjector, providers: SerializedProviderRecord) => void;
|
2024-03-05 03:54:58 +00:00
|
|
|
|
2025-07-18 12:15:07 +00:00
|
|
|
getTransferState: () => void;
|
|
|
|
|
transferStateData: (data: Record<string, TransferStateValue> | null) => void;
|
|
|
|
|
|
2024-03-05 03:54:58 +00:00
|
|
|
contentScriptConnected: (frameId: number, name: string, url: string) => void;
|
|
|
|
|
contentScriptDisconnected: (frameId: number, name: string, url: string) => void;
|
|
|
|
|
enableFrameConnection: (frameId: number, tabId: number) => void;
|
|
|
|
|
frameConnected: (frameId: number) => void;
|
|
|
|
|
detectAngular: (detectionResult: AngularDetection) => void;
|
2026-02-10 19:30:50 +00:00
|
|
|
backendInstalled: (detectionResult: AngularDetection) => void;
|
2024-03-05 03:54:58 +00:00
|
|
|
backendReady: () => void;
|
|
|
|
|
|
|
|
|
|
log: (logEvent: {message: string; level: 'log' | 'warn' | 'debug' | 'error'}) => void;
|
2020-01-27 18:40:18 +00:00
|
|
|
}
|