index.d.cts 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120
  1. import { ComponentInternalInstance, ComponentOptions, SuspenseBoundary, App as App$1, VNode } from 'vue';
  2. import * as hookable from 'hookable';
  3. import { Hookable, HookKeys } from 'hookable';
  4. import { Router, RouteLocationNormalizedLoaded, RouteRecordNormalized } from 'vue-router';
  5. export { Router } from 'vue-router';
  6. import { BirpcOptions, ChannelOptions, BirpcGroup, BirpcReturn } from 'birpc';
  7. type App = any;
  8. type VueAppInstance = ComponentInternalInstance & {
  9. type: {
  10. _componentTag: string | undefined;
  11. components: Record<string, ComponentInternalInstance['type']>;
  12. __VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__: string;
  13. __isKeepAlive: boolean;
  14. devtools: {
  15. hide: boolean;
  16. };
  17. mixins: ComponentOptions[];
  18. extends: ComponentOptions;
  19. vuex: {
  20. getters: Record<string, unknown>;
  21. };
  22. computed: Record<string, unknown>;
  23. };
  24. __v_cache: Cache;
  25. __VUE_DEVTOOLS_NEXT_UID__: string;
  26. _isBeingDestroyed: boolean;
  27. _instance: VueAppInstance;
  28. _container: {
  29. _vnode: {
  30. component: VueAppInstance;
  31. };
  32. };
  33. isUnmounted: boolean;
  34. parent: VueAppInstance;
  35. appContext: {
  36. app: VueAppInstance & App & {
  37. __VUE_DEVTOOLS_NEXT_APP_RECORD_ID__: string;
  38. __VUE_DEVTOOLS_NEXT_APP_RECORD__: AppRecord;
  39. };
  40. };
  41. __VUE_DEVTOOLS_NEXT_APP_RECORD__: AppRecord;
  42. suspense: SuspenseBoundary & {
  43. suspenseKey: string;
  44. };
  45. renderContext: Record<string, unknown>;
  46. devtoolsRawSetupState: Record<string, unknown>;
  47. setupState: Record<string, unknown>;
  48. provides: Record<string | symbol, unknown>;
  49. ctx: Record<string, unknown>;
  50. } & App;
  51. interface AppRecord {
  52. id: string;
  53. name: string;
  54. app?: App;
  55. version?: string;
  56. types?: Record<string, string | symbol>;
  57. instanceMap: Map<string, VueAppInstance>;
  58. perfGroupIds: Map<string, {
  59. groupId: number;
  60. time: number;
  61. }>;
  62. rootInstance: VueAppInstance;
  63. routerId?: string;
  64. }
  65. interface CustomCommandAction {
  66. type: 'url';
  67. /**
  68. * Url of the action, if set, execute the action will open the url
  69. */
  70. src: string;
  71. }
  72. interface CustomCommand {
  73. /**
  74. * The id of the command, should be unique
  75. */
  76. id: string;
  77. title: string;
  78. description?: string;
  79. /**
  80. * Order of the command, bigger number will be shown first
  81. * @default 0
  82. */
  83. order?: number;
  84. /**
  85. * Icon of the tab, support any Iconify icons, or a url to an image
  86. */
  87. icon?: string;
  88. /**
  89. * - action of the command
  90. * - __NOTE__: This will be ignored if `children` is set
  91. */
  92. action?: CustomCommandAction;
  93. /**
  94. * - children of action, if set, execute the action will show the children
  95. */
  96. children?: Omit<CustomCommand, 'children'>[];
  97. }
  98. interface CustomInspectorOptions {
  99. id: string;
  100. label: string;
  101. icon?: string;
  102. treeFilterPlaceholder?: string;
  103. stateFilterPlaceholder?: string;
  104. noSelectionText?: string;
  105. actions?: {
  106. icon: string;
  107. tooltip?: string;
  108. action: () => void | Promise<void>;
  109. }[];
  110. nodeActions?: {
  111. icon: string;
  112. tooltip?: string;
  113. action: (nodeId: string) => void | Promise<void>;
  114. }[];
  115. }
  116. interface InspectorNodeTag {
  117. label: string;
  118. textColor: number;
  119. backgroundColor: number;
  120. tooltip?: string;
  121. }
  122. type EditStatePayload = {
  123. value: any;
  124. newKey?: string | null;
  125. remove?: undefined | false;
  126. } | {
  127. value?: undefined;
  128. newKey?: undefined;
  129. remove: true;
  130. };
  131. interface CustomInspectorNode {
  132. id: string;
  133. label: string;
  134. children?: CustomInspectorNode[];
  135. tags?: InspectorNodeTag[];
  136. name?: string;
  137. file?: string;
  138. }
  139. interface CustomInspectorState {
  140. [key: string]: (StateBase | Omit<ComponentState, 'type'>)[];
  141. }
  142. type ComponentInstance = any;
  143. interface ComponentTreeNode {
  144. uid: string | number;
  145. id: string;
  146. name: string;
  147. renderKey: string | number;
  148. inactive: boolean;
  149. isFragment: boolean;
  150. hasChildren: boolean;
  151. children: ComponentTreeNode[];
  152. domOrder?: number[];
  153. consoleId?: string;
  154. isRouterView?: boolean;
  155. macthedRouteSegment?: string;
  156. tags: InspectorNodeTag[];
  157. autoOpen: boolean;
  158. meta?: any;
  159. }
  160. type ComponentBuiltinCustomStateTypes = 'function' | 'map' | 'set' | 'reference' | 'component' | 'component-definition' | 'router' | 'store';
  161. interface ComponentCustomState extends ComponentStateBase {
  162. value: CustomState;
  163. }
  164. interface StateBase {
  165. key: string;
  166. value: any;
  167. editable?: boolean;
  168. objectType?: 'ref' | 'reactive' | 'computed' | 'other';
  169. raw?: string;
  170. }
  171. interface ComponentStateBase extends StateBase {
  172. type: string;
  173. }
  174. interface ComponentPropState extends ComponentStateBase {
  175. meta?: {
  176. type: string;
  177. required: boolean;
  178. /** Vue 1 only */
  179. mode?: 'default' | 'sync' | 'once';
  180. };
  181. }
  182. interface CustomState {
  183. _custom: {
  184. type: ComponentBuiltinCustomStateTypes | string;
  185. objectType?: string;
  186. display?: string;
  187. tooltip?: string;
  188. value?: any;
  189. abstract?: boolean;
  190. file?: string;
  191. uid?: number;
  192. readOnly?: boolean;
  193. /** Configure immediate child fields */
  194. fields?: {
  195. abstract?: boolean;
  196. };
  197. id?: any;
  198. actions?: {
  199. icon: string;
  200. tooltip?: string;
  201. action: () => void | Promise<void>;
  202. }[];
  203. /** internal */
  204. _reviveId?: number;
  205. };
  206. }
  207. type ComponentState = ComponentStateBase | ComponentPropState | ComponentCustomState;
  208. interface InspectedComponentData {
  209. id: string;
  210. name: string;
  211. file: string;
  212. state: ComponentState[];
  213. functional?: boolean;
  214. }
  215. interface ComponentBounds {
  216. left: number;
  217. top: number;
  218. width: number;
  219. height: number;
  220. }
  221. interface DevToolsAppRecords extends AppRecord {
  222. }
  223. interface DevToolsState {
  224. connected: boolean;
  225. clientConnected: boolean;
  226. vitePluginDetected: boolean;
  227. appRecords: DevToolsAppRecords[];
  228. activeAppRecordId: string;
  229. tabs: CustomTab[];
  230. commands: CustomCommand[];
  231. highPerfModeEnabled: boolean;
  232. devtoolsClientDetected: {
  233. [key: string]: boolean;
  234. };
  235. perfUniqueGroupId: number;
  236. timelineLayersState: Record<string, boolean>;
  237. }
  238. declare const callStateUpdatedHook: (state: DevToolsState) => Promise<void>;
  239. declare const callConnectedUpdatedHook: (state: DevToolsState, oldState: DevToolsState) => Promise<void>;
  240. declare const devtoolsAppRecords: DevToolsAppRecords[] & {
  241. value: DevToolsAppRecords[];
  242. };
  243. declare const addDevToolsAppRecord: (app: AppRecord) => void;
  244. declare const removeDevToolsAppRecord: (app: AppRecord["app"]) => void;
  245. declare const activeAppRecord: AppRecord & {
  246. value: AppRecord;
  247. id: string;
  248. };
  249. declare function setActiveAppRecord(app: AppRecord): void;
  250. declare function setActiveAppRecordId(id: string): void;
  251. declare const devtoolsState: DevToolsState;
  252. declare function resetDevToolsState(): void;
  253. declare function updateDevToolsState(state: Partial<DevToolsState>): void;
  254. declare function onDevToolsConnected(fn: () => void): Promise<void>;
  255. declare function addCustomTab(tab: CustomTab): void;
  256. declare function addCustomCommand(action: CustomCommand): void;
  257. declare function removeCustomCommand(actionId: string): void;
  258. declare function toggleClientConnected(state: boolean): void;
  259. declare enum DevToolsV6PluginAPIHookKeys {
  260. VISIT_COMPONENT_TREE = "visitComponentTree",
  261. INSPECT_COMPONENT = "inspectComponent",
  262. EDIT_COMPONENT_STATE = "editComponentState",
  263. GET_INSPECTOR_TREE = "getInspectorTree",
  264. GET_INSPECTOR_STATE = "getInspectorState",
  265. EDIT_INSPECTOR_STATE = "editInspectorState",
  266. INSPECT_TIMELINE_EVENT = "inspectTimelineEvent",
  267. TIMELINE_CLEARED = "timelineCleared",
  268. SET_PLUGIN_SETTINGS = "setPluginSettings"
  269. }
  270. interface DevToolsV6PluginAPIHookPayloads {
  271. [DevToolsV6PluginAPIHookKeys.VISIT_COMPONENT_TREE]: {
  272. app: App;
  273. componentInstance: ComponentInstance;
  274. treeNode: ComponentTreeNode;
  275. filter: string;
  276. };
  277. [DevToolsV6PluginAPIHookKeys.INSPECT_COMPONENT]: {
  278. app: App;
  279. componentInstance: ComponentInstance;
  280. instanceData: InspectedComponentData;
  281. };
  282. [DevToolsV6PluginAPIHookKeys.EDIT_COMPONENT_STATE]: {
  283. app: App;
  284. inspectorId: string;
  285. nodeId: string;
  286. path: string[];
  287. type: string;
  288. state: EditStatePayload;
  289. set: (object: any, path?: string | (string[]), value?: any, cb?: (object: any, field: string, value: any) => void) => void;
  290. };
  291. [DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE]: {
  292. app: App;
  293. inspectorId: string;
  294. filter: string;
  295. rootNodes: CustomInspectorNode[];
  296. };
  297. [DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE]: {
  298. app: App;
  299. inspectorId: string;
  300. nodeId: string;
  301. state: CustomInspectorState;
  302. };
  303. [DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE]: {
  304. app: App;
  305. inspectorId: string;
  306. nodeId: string;
  307. path: string[];
  308. type: string;
  309. state: EditStatePayload;
  310. set: (object: any, path?: string | (string[]), value?: any, cb?: (object: any, field: string, value: any) => void) => void;
  311. };
  312. [DevToolsV6PluginAPIHookKeys.INSPECT_TIMELINE_EVENT]: {
  313. app: App;
  314. layerId: string;
  315. event: TimelineEvent;
  316. all?: boolean;
  317. data: any;
  318. };
  319. [DevToolsV6PluginAPIHookKeys.TIMELINE_CLEARED]: Record<string, never>;
  320. [DevToolsV6PluginAPIHookKeys.SET_PLUGIN_SETTINGS]: {
  321. app: App;
  322. pluginId: string;
  323. key: string;
  324. newValue: any;
  325. oldValue: any;
  326. settings: any;
  327. };
  328. }
  329. interface DevToolsV6PluginAPIHooks {
  330. [DevToolsV6PluginAPIHookKeys.VISIT_COMPONENT_TREE]: (payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.VISIT_COMPONENT_TREE]) => void;
  331. [DevToolsV6PluginAPIHookKeys.INSPECT_COMPONENT]: (payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.INSPECT_COMPONENT]) => void;
  332. [DevToolsV6PluginAPIHookKeys.EDIT_COMPONENT_STATE]: (payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.EDIT_COMPONENT_STATE]) => void;
  333. [DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE]: (payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE]) => void;
  334. [DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE]: (payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE]) => void;
  335. [DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE]: (payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE]) => void;
  336. [DevToolsV6PluginAPIHookKeys.INSPECT_TIMELINE_EVENT]: (payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.INSPECT_TIMELINE_EVENT]) => void;
  337. [DevToolsV6PluginAPIHookKeys.TIMELINE_CLEARED]: (payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.TIMELINE_CLEARED]) => void;
  338. [DevToolsV6PluginAPIHookKeys.SET_PLUGIN_SETTINGS]: (payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.SET_PLUGIN_SETTINGS]) => void;
  339. }
  340. declare enum DevToolsContextHookKeys {
  341. ADD_INSPECTOR = "addInspector",
  342. SEND_INSPECTOR_TREE = "sendInspectorTree",
  343. SEND_INSPECTOR_STATE = "sendInspectorState",
  344. CUSTOM_INSPECTOR_SELECT_NODE = "customInspectorSelectNode",
  345. TIMELINE_LAYER_ADDED = "timelineLayerAdded",
  346. TIMELINE_EVENT_ADDED = "timelineEventAdded",
  347. GET_COMPONENT_INSTANCES = "getComponentInstances",
  348. GET_COMPONENT_BOUNDS = "getComponentBounds",
  349. GET_COMPONENT_NAME = "getComponentName",
  350. COMPONENT_HIGHLIGHT = "componentHighlight",
  351. COMPONENT_UNHIGHLIGHT = "componentUnhighlight"
  352. }
  353. interface DevToolsContextHookPayloads {
  354. [DevToolsContextHookKeys.ADD_INSPECTOR]: {
  355. inspector: CustomInspectorOptions;
  356. plugin: DevToolsPlugin;
  357. };
  358. [DevToolsContextHookKeys.SEND_INSPECTOR_TREE]: {
  359. inspectorId: string;
  360. plugin: DevToolsPlugin;
  361. };
  362. [DevToolsContextHookKeys.SEND_INSPECTOR_STATE]: {
  363. inspectorId: string;
  364. plugin: DevToolsPlugin;
  365. };
  366. [DevToolsContextHookKeys.CUSTOM_INSPECTOR_SELECT_NODE]: {
  367. inspectorId: string;
  368. nodeId: string;
  369. plugin: DevToolsPlugin;
  370. };
  371. [DevToolsContextHookKeys.TIMELINE_LAYER_ADDED]: {
  372. options: TimelineLayerOptions;
  373. plugin: DevToolsPlugin;
  374. };
  375. [DevToolsContextHookKeys.TIMELINE_EVENT_ADDED]: {
  376. options: TimelineEventOptions;
  377. plugin: DevToolsPlugin;
  378. };
  379. [DevToolsContextHookKeys.GET_COMPONENT_INSTANCES]: {
  380. app: App;
  381. };
  382. [DevToolsContextHookKeys.GET_COMPONENT_BOUNDS]: {
  383. instance: ComponentInstance;
  384. };
  385. [DevToolsContextHookKeys.GET_COMPONENT_NAME]: {
  386. instance: ComponentInstance;
  387. };
  388. [DevToolsContextHookKeys.COMPONENT_HIGHLIGHT]: {
  389. uid: string;
  390. };
  391. [DevToolsContextHookKeys.COMPONENT_UNHIGHLIGHT]: Record<string, never>;
  392. }
  393. declare enum DevToolsMessagingHookKeys {
  394. SEND_INSPECTOR_TREE_TO_CLIENT = "sendInspectorTreeToClient",
  395. SEND_INSPECTOR_STATE_TO_CLIENT = "sendInspectorStateToClient",
  396. SEND_TIMELINE_EVENT_TO_CLIENT = "sendTimelineEventToClient",
  397. SEND_INSPECTOR_TO_CLIENT = "sendInspectorToClient",
  398. SEND_ACTIVE_APP_UNMOUNTED_TO_CLIENT = "sendActiveAppUpdatedToClient",
  399. DEVTOOLS_STATE_UPDATED = "devtoolsStateUpdated",
  400. DEVTOOLS_CONNECTED_UPDATED = "devtoolsConnectedUpdated",
  401. ROUTER_INFO_UPDATED = "routerInfoUpdated"
  402. }
  403. interface DevToolsMessagingHookPayloads {
  404. [DevToolsMessagingHookKeys.SEND_INSPECTOR_TREE_TO_CLIENT]: {
  405. inspectorId: string;
  406. rootNodes: CustomInspectorNode[];
  407. };
  408. [DevToolsMessagingHookKeys.SEND_INSPECTOR_STATE_TO_CLIENT]: {
  409. inspectorId: string;
  410. nodeId: string;
  411. state: CustomInspectorState;
  412. };
  413. [DevToolsMessagingHookKeys.SEND_TIMELINE_EVENT_TO_CLIENT]: TimelineEventOptions;
  414. [DevToolsMessagingHookKeys.SEND_INSPECTOR_TO_CLIENT]: {
  415. id: string;
  416. label: string;
  417. logo: string;
  418. icon: string;
  419. packageName: string | undefined;
  420. homepage: string | undefined;
  421. }[];
  422. [DevToolsMessagingHookKeys.DEVTOOLS_STATE_UPDATED]: {
  423. state: DevToolsState;
  424. };
  425. [DevToolsMessagingHookKeys.DEVTOOLS_CONNECTED_UPDATED]: {
  426. state: DevToolsState;
  427. oldState: DevToolsState;
  428. };
  429. [DevToolsMessagingHookKeys.ROUTER_INFO_UPDATED]: {
  430. state: RouterInfo;
  431. };
  432. }
  433. interface DevToolsMessagingHooks {
  434. [DevToolsMessagingHookKeys.SEND_INSPECTOR_TREE_TO_CLIENT]: (payload: DevToolsMessagingHookPayloads[DevToolsMessagingHookKeys.SEND_INSPECTOR_TREE_TO_CLIENT]) => void;
  435. [DevToolsMessagingHookKeys.SEND_INSPECTOR_STATE_TO_CLIENT]: (payload: DevToolsMessagingHookPayloads[DevToolsMessagingHookKeys.SEND_INSPECTOR_STATE_TO_CLIENT]) => void;
  436. [DevToolsMessagingHookKeys.SEND_TIMELINE_EVENT_TO_CLIENT]: (payload: DevToolsMessagingHookPayloads[DevToolsMessagingHookKeys.SEND_TIMELINE_EVENT_TO_CLIENT]) => void;
  437. [DevToolsMessagingHookKeys.SEND_ACTIVE_APP_UNMOUNTED_TO_CLIENT]: () => void;
  438. [DevToolsMessagingHookKeys.SEND_INSPECTOR_TO_CLIENT]: (payload: DevToolsMessagingHookPayloads[DevToolsMessagingHookKeys.SEND_INSPECTOR_TO_CLIENT]) => void;
  439. [DevToolsMessagingHookKeys.DEVTOOLS_STATE_UPDATED]: (payload: DevToolsMessagingHookPayloads[DevToolsMessagingHookKeys.DEVTOOLS_STATE_UPDATED]) => void;
  440. [DevToolsMessagingHookKeys.DEVTOOLS_CONNECTED_UPDATED]: (payload: DevToolsMessagingHookPayloads[DevToolsMessagingHookKeys.DEVTOOLS_CONNECTED_UPDATED]) => void;
  441. [DevToolsMessagingHookKeys.ROUTER_INFO_UPDATED]: (payload: DevToolsMessagingHookPayloads[DevToolsMessagingHookKeys.ROUTER_INFO_UPDATED]) => void;
  442. }
  443. interface DevToolsContextHooks extends DevToolsV6PluginAPIHooks {
  444. [DevToolsContextHookKeys.ADD_INSPECTOR]: (payload: DevToolsContextHookPayloads[DevToolsContextHookKeys.ADD_INSPECTOR]) => void;
  445. [DevToolsContextHookKeys.SEND_INSPECTOR_TREE]: (payload: DevToolsContextHookPayloads[DevToolsContextHookKeys.SEND_INSPECTOR_TREE]) => void;
  446. [DevToolsContextHookKeys.SEND_INSPECTOR_STATE]: (payload: DevToolsContextHookPayloads[DevToolsContextHookKeys.SEND_INSPECTOR_STATE]) => void;
  447. [DevToolsContextHookKeys.CUSTOM_INSPECTOR_SELECT_NODE]: (payload: DevToolsContextHookPayloads[DevToolsContextHookKeys.CUSTOM_INSPECTOR_SELECT_NODE]) => void;
  448. [DevToolsContextHookKeys.TIMELINE_LAYER_ADDED]: (payload: DevToolsContextHookPayloads[DevToolsContextHookKeys.TIMELINE_LAYER_ADDED]) => void;
  449. [DevToolsContextHookKeys.TIMELINE_EVENT_ADDED]: (payload: DevToolsContextHookPayloads[DevToolsContextHookKeys.TIMELINE_EVENT_ADDED]) => void;
  450. [DevToolsContextHookKeys.GET_COMPONENT_INSTANCES]: (payload: DevToolsContextHookPayloads[DevToolsContextHookKeys.GET_COMPONENT_INSTANCES]) => void;
  451. [DevToolsContextHookKeys.GET_COMPONENT_BOUNDS]: (payload: DevToolsContextHookPayloads[DevToolsContextHookKeys.GET_COMPONENT_BOUNDS]) => void;
  452. [DevToolsContextHookKeys.GET_COMPONENT_NAME]: (payload: DevToolsContextHookPayloads[DevToolsContextHookKeys.GET_COMPONENT_NAME]) => void;
  453. [DevToolsContextHookKeys.COMPONENT_HIGHLIGHT]: (payload: DevToolsContextHookPayloads[DevToolsContextHookKeys.COMPONENT_HIGHLIGHT]) => void;
  454. [DevToolsContextHookKeys.COMPONENT_UNHIGHLIGHT]: () => void;
  455. }
  456. declare function createDevToolsCtxHooks(): hookable.Hookable<DevToolsContextHooks & DevToolsMessagingHooks, hookable.HookKeys<DevToolsContextHooks & DevToolsMessagingHooks>>;
  457. interface ComponentInspector {
  458. enabled: boolean;
  459. position: {
  460. x: number;
  461. y: number;
  462. };
  463. linkParams: {
  464. file: string;
  465. line: number;
  466. column: number;
  467. };
  468. enable: () => void;
  469. disable: () => void;
  470. toggleEnabled: () => void;
  471. openInEditor: (baseUrl: string, file: string, line: number, column: number) => void;
  472. onUpdated: () => void;
  473. }
  474. declare function toggleComponentInspectorEnabled(enabled: boolean): void;
  475. declare function getComponentInspector(): Promise<ComponentInspector>;
  476. interface OpenInEditorOptions {
  477. baseUrl?: string;
  478. file?: string;
  479. line?: number;
  480. column?: number;
  481. host?: string;
  482. }
  483. declare function setOpenInEditorBaseUrl(url: string): void;
  484. declare function openInEditor(options?: OpenInEditorOptions): void;
  485. declare function createDevToolsApi(hooks: Hookable<DevToolsContextHooks & DevToolsMessagingHooks, HookKeys<DevToolsContextHooks & DevToolsMessagingHooks>>): {
  486. getInspectorTree(payload: Pick<DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE], "inspectorId" | "filter">): Promise<never[]>;
  487. getInspectorState(payload: Pick<DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE], "inspectorId" | "nodeId">): Promise<CustomInspectorState>;
  488. editInspectorState(payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE]): void;
  489. sendInspectorState(inspectorId: string): void;
  490. inspectComponentInspector(): Promise<string>;
  491. cancelInspectComponentInspector(): void;
  492. getComponentRenderCode(id: string): any;
  493. scrollToComponent(id: string): void;
  494. openInEditor: typeof openInEditor;
  495. getVueInspector: typeof getComponentInspector;
  496. toggleApp(id: string, options?: {
  497. inspectingComponent?: boolean;
  498. }): void;
  499. inspectDOM(instanceId: string): void;
  500. updatePluginSettings(pluginId: string, key: string, value: string): void;
  501. getPluginSettings(pluginId: string): {
  502. options: Record<string, {
  503. label: string;
  504. description?: string;
  505. } & ({
  506. type: "boolean";
  507. defaultValue: boolean;
  508. } | {
  509. type: "choice";
  510. defaultValue: string | number;
  511. options: {
  512. value: string | number;
  513. label: string;
  514. }[];
  515. component?: "select" | "button-group";
  516. } | {
  517. type: "text";
  518. defaultValue: string;
  519. })> | null;
  520. values: any;
  521. };
  522. };
  523. type DevToolsApiType = ReturnType<typeof createDevToolsApi>;
  524. declare function getDevToolsEnv(): {
  525. vitePluginDetected: boolean;
  526. };
  527. declare function setDevToolsEnv(env: Partial<any>): void;
  528. interface DevToolsKitInspector {
  529. options: CustomInspectorOptions;
  530. descriptor: PluginDescriptor;
  531. treeFilterPlaceholder: string;
  532. stateFilterPlaceholder: string;
  533. treeFilter: string;
  534. selectedNodeId: string;
  535. appRecord: unknown;
  536. }
  537. declare const devtoolsInspector: DevToolsKitInspector[];
  538. declare const callInspectorUpdatedHook: () => Promise<void>;
  539. declare function addInspector(inspector: CustomInspectorOptions, descriptor: PluginDescriptor): void;
  540. declare function getActiveInspectors(): {
  541. id: string;
  542. label: string;
  543. logo: string;
  544. icon: string;
  545. packageName: string | undefined;
  546. homepage: string | undefined;
  547. pluginId: string;
  548. }[];
  549. declare function getInspectorInfo(id: string): {
  550. id: string;
  551. label: string;
  552. logo: string | undefined;
  553. packageName: string | undefined;
  554. homepage: string | undefined;
  555. timelineLayers: {
  556. id: string;
  557. label: string;
  558. color: number;
  559. }[];
  560. treeFilterPlaceholder: string;
  561. stateFilterPlaceholder: string;
  562. } | undefined;
  563. declare function getInspector(id: string, app?: App$1): DevToolsKitInspector | undefined;
  564. declare function getInspectorActions(id: string): {
  565. icon: string;
  566. tooltip?: string;
  567. action: () => void | Promise<void>;
  568. }[] | undefined;
  569. declare function getInspectorNodeActions(id: string): {
  570. icon: string;
  571. tooltip?: string;
  572. action: (nodeId: string) => void | Promise<void>;
  573. }[] | undefined;
  574. type DevToolsKitPluginBuffer = [PluginDescriptor, PluginSetupFunction];
  575. declare const devtoolsPluginBuffer: DevToolsKitPluginBuffer[];
  576. declare function addDevToolsPluginToBuffer(pluginDescriptor: PluginDescriptor, setupFn: PluginSetupFunction): void;
  577. declare const ROUTER_KEY = "__VUE_DEVTOOLS_ROUTER__";
  578. declare const ROUTER_INFO_KEY = "__VUE_DEVTOOLS_ROUTER_INFO__";
  579. declare const devtoolsRouterInfo: RouterInfo;
  580. declare const devtoolsRouter: {
  581. value: Router;
  582. };
  583. declare function updateTimelineLayersState(state: Record<string, boolean>): void;
  584. interface DevtoolsContext {
  585. hooks: Hookable<DevToolsContextHooks & DevToolsMessagingHooks, HookKeys<DevToolsContextHooks & DevToolsMessagingHooks>>;
  586. state: DevToolsState & {
  587. activeAppRecordId: string;
  588. activeAppRecord: DevToolsAppRecords;
  589. appRecords: DevToolsAppRecords[];
  590. };
  591. api: DevToolsApiType;
  592. }
  593. declare const devtoolsContext: DevtoolsContext;
  594. declare class DevToolsV6PluginAPI {
  595. private plugin;
  596. private hooks;
  597. constructor({ plugin, ctx }: {
  598. plugin: DevToolsPlugin;
  599. ctx: DevtoolsContext;
  600. });
  601. get on(): {
  602. visitComponentTree: (handler: DevToolsV6PluginAPIHooks[DevToolsV6PluginAPIHookKeys.VISIT_COMPONENT_TREE]) => void;
  603. inspectComponent: (handler: DevToolsV6PluginAPIHooks[DevToolsV6PluginAPIHookKeys.INSPECT_COMPONENT]) => void;
  604. editComponentState: (handler: DevToolsV6PluginAPIHooks[DevToolsV6PluginAPIHookKeys.EDIT_COMPONENT_STATE]) => void;
  605. getInspectorTree: (handler: DevToolsV6PluginAPIHooks[DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE]) => void;
  606. getInspectorState: (handler: DevToolsV6PluginAPIHooks[DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE]) => void;
  607. editInspectorState: (handler: DevToolsV6PluginAPIHooks[DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE]) => void;
  608. inspectTimelineEvent: (handler: DevToolsV6PluginAPIHooks[DevToolsV6PluginAPIHookKeys.INSPECT_TIMELINE_EVENT]) => void;
  609. timelineCleared: (handler: DevToolsV6PluginAPIHooks[DevToolsV6PluginAPIHookKeys.TIMELINE_CLEARED]) => void;
  610. setPluginSettings: (handler: DevToolsV6PluginAPIHooks[DevToolsV6PluginAPIHookKeys.SET_PLUGIN_SETTINGS]) => void;
  611. };
  612. notifyComponentUpdate(instance?: ComponentInstance): void;
  613. addInspector(options: CustomInspectorOptions): void;
  614. sendInspectorTree(inspectorId: string): void;
  615. sendInspectorState(inspectorId: string): void;
  616. selectInspectorNode(inspectorId: string, nodeId: string): void;
  617. visitComponentTree(payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.VISIT_COMPONENT_TREE]): Promise<any>;
  618. now(): number;
  619. addTimelineLayer(options: TimelineLayerOptions): void;
  620. addTimelineEvent(options: TimelineEventOptions): void;
  621. getSettings(pluginId?: string): any;
  622. getComponentInstances(app: App): Promise<ComponentInstance[]>;
  623. getComponentBounds(instance: ComponentInstance): Promise<ComponentBounds>;
  624. getComponentName(instance: ComponentInstance): Promise<string>;
  625. highlightElement(instance: ComponentInstance): Promise<any>;
  626. unhighlightElement(): Promise<any>;
  627. }
  628. declare const DevToolsPluginAPI: typeof DevToolsV6PluginAPI;
  629. type PluginSettingsItem = {
  630. label: string;
  631. description?: string;
  632. } & ({
  633. type: 'boolean';
  634. defaultValue: boolean;
  635. } | {
  636. type: 'choice';
  637. defaultValue: string | number;
  638. options: {
  639. value: string | number;
  640. label: string;
  641. }[];
  642. component?: 'select' | 'button-group';
  643. } | {
  644. type: 'text';
  645. defaultValue: string;
  646. });
  647. type PluginSetupFunction = (api: InstanceType<typeof DevToolsPluginAPI>) => void;
  648. interface PluginDescriptor {
  649. id: string;
  650. label: string;
  651. app: App$1<any>;
  652. packageName?: string;
  653. homepage?: string;
  654. componentStateTypes?: string[];
  655. logo?: string;
  656. disableAppScope?: boolean;
  657. disablePluginScope?: boolean;
  658. /**
  659. * Run the plugin setup and expose the api even if the devtools is not opened yet.
  660. * Useful to record timeline events early.
  661. */
  662. enableEarlyProxy?: boolean;
  663. settings?: Record<string, PluginSettingsItem>;
  664. }
  665. interface DevToolsPlugin {
  666. descriptor: PluginDescriptor;
  667. setupFn: PluginSetupFunction;
  668. }
  669. type HookAppInstance = App$1 & VueAppInstance;
  670. declare enum DevToolsHooks {
  671. APP_INIT = "app:init",
  672. APP_UNMOUNT = "app:unmount",
  673. COMPONENT_UPDATED = "component:updated",
  674. COMPONENT_ADDED = "component:added",
  675. COMPONENT_REMOVED = "component:removed",
  676. COMPONENT_EMIT = "component:emit",
  677. PERFORMANCE_START = "perf:start",
  678. PERFORMANCE_END = "perf:end",
  679. ADD_ROUTE = "router:add-route",
  680. REMOVE_ROUTE = "router:remove-route",
  681. RENDER_TRACKED = "render:tracked",
  682. RENDER_TRIGGERED = "render:triggered",
  683. APP_CONNECTED = "app:connected",
  684. SETUP_DEVTOOLS_PLUGIN = "devtools-plugin:setup"
  685. }
  686. interface DevToolsEvent {
  687. [DevToolsHooks.APP_INIT]: (app: VueAppInstance['appContext']['app'], version: string, types: Record<string, string | symbol>) => void | Promise<void>;
  688. [DevToolsHooks.APP_CONNECTED]: () => void;
  689. [DevToolsHooks.APP_UNMOUNT]: (app: VueAppInstance['appContext']['app']) => void | Promise<void>;
  690. [DevToolsHooks.COMPONENT_ADDED]: (app: HookAppInstance, uid: number, parentUid: number, component: VueAppInstance) => void | Promise<void>;
  691. [DevToolsHooks.COMPONENT_EMIT]: (app: HookAppInstance, instance: VueAppInstance, event: string, params: unknown) => void | Promise<void>;
  692. [DevToolsHooks.COMPONENT_UPDATED]: DevToolsEvent['component:added'];
  693. [DevToolsHooks.COMPONENT_REMOVED]: DevToolsEvent['component:added'];
  694. [DevToolsHooks.SETUP_DEVTOOLS_PLUGIN]: (pluginDescriptor: PluginDescriptor, setupFn: PluginSetupFunction, options?: {
  695. target?: string;
  696. }) => void;
  697. [DevToolsHooks.PERFORMANCE_START]: (app: App$1, uid: number, vm: HookAppInstance, type: string, time: number) => void;
  698. [DevToolsHooks.PERFORMANCE_END]: (app: App$1, uid: number, vm: HookAppInstance, type: string, time: number) => void;
  699. }
  700. interface DevToolsHook {
  701. id: string;
  702. enabled?: boolean;
  703. devtoolsVersion: string;
  704. events: Map<DevToolsHooks, Function[]>;
  705. emit: (event: DevToolsHooks, ...payload: any[]) => void;
  706. on: <T extends Function>(event: DevToolsHooks, handler: T) => () => void;
  707. once: <T extends Function>(event: DevToolsHooks, handler: T) => void;
  708. off: <T extends Function>(event: DevToolsHooks, handler: T) => void;
  709. appRecords: AppRecord[];
  710. apps: any;
  711. cleanupBuffer?: (matchArg: unknown) => boolean;
  712. }
  713. interface VueHooks {
  714. on: {
  715. vueAppInit: (fn: DevToolsEvent[DevToolsHooks.APP_INIT]) => void;
  716. vueAppUnmount: (fn: DevToolsEvent[DevToolsHooks.APP_UNMOUNT]) => void;
  717. vueAppConnected: (fn: DevToolsEvent[DevToolsHooks.APP_CONNECTED]) => void;
  718. componentAdded: (fn: DevToolsEvent[DevToolsHooks.COMPONENT_ADDED]) => () => void;
  719. componentEmit: (fn: DevToolsEvent[DevToolsHooks.COMPONENT_EMIT]) => () => void;
  720. componentUpdated: (fn: DevToolsEvent[DevToolsHooks.COMPONENT_UPDATED]) => () => void;
  721. componentRemoved: (fn: DevToolsEvent[DevToolsHooks.COMPONENT_REMOVED]) => () => void;
  722. setupDevtoolsPlugin: (fn: DevToolsEvent[DevToolsHooks.SETUP_DEVTOOLS_PLUGIN]) => void;
  723. perfStart: (fn: DevToolsEvent[DevToolsHooks.PERFORMANCE_START]) => void;
  724. perfEnd: (fn: DevToolsEvent[DevToolsHooks.PERFORMANCE_END]) => void;
  725. };
  726. setupDevToolsPlugin: (pluginDescriptor: PluginDescriptor, setupFn: PluginSetupFunction) => void;
  727. }
  728. interface RouterInfo {
  729. currentRoute: RouteLocationNormalizedLoaded | null | Record<string, any>;
  730. routes: RouteRecordNormalized[];
  731. }
  732. type TabCategory = 'pinned' | 'app' | 'modules' | 'advanced';
  733. type ModuleView = ModuleIframeView | ModuleVNodeView | ModuleSFCView;
  734. interface ModuleIframeView {
  735. /**
  736. * Iframe view
  737. */
  738. type: 'iframe';
  739. /**
  740. * Url of the iframe
  741. */
  742. src: string;
  743. /**
  744. * Persist the iframe instance even if the tab is not active
  745. *
  746. * @default true
  747. */
  748. persistent?: boolean;
  749. }
  750. interface ModuleVNodeView {
  751. /**
  752. * Vue's VNode view
  753. */
  754. type: 'vnode';
  755. /**
  756. * Send vnode to the client, they must be static and serializable
  757. */
  758. vnode: VNode;
  759. }
  760. interface ModuleSFCView {
  761. /**
  762. * SFC view
  763. */
  764. type: 'sfc';
  765. /**
  766. * SFC component
  767. */
  768. sfc: string;
  769. }
  770. interface CustomTab {
  771. /**
  772. * The name of the tab, must be unique
  773. */
  774. name: string;
  775. /**
  776. * Icon of the tab, support any Iconify icons, or a url to an image
  777. */
  778. icon?: string;
  779. /**
  780. * Title of the tab
  781. */
  782. title: string;
  783. /**
  784. * Main view of the tab
  785. */
  786. view: ModuleView;
  787. /**
  788. * Category of the tab
  789. * @default 'app'
  790. */
  791. category?: TabCategory;
  792. }
  793. interface TimelineEvent<TData = any, TMeta = any> {
  794. time: number;
  795. data: TData;
  796. logType?: 'default' | 'warning' | 'error';
  797. meta?: TMeta;
  798. groupId?: number | string;
  799. title?: string;
  800. subtitle?: string;
  801. }
  802. interface ScreenshotOverlayEvent {
  803. layerId: string;
  804. renderMeta: any;
  805. }
  806. interface ScreenshotOverlayRenderContext<TData = any, TMeta = any> {
  807. screenshot: ScreenshotData;
  808. events: (TimelineEvent<TData, TMeta> & ScreenshotOverlayEvent)[];
  809. index: number;
  810. }
  811. type ScreenshotOverlayRenderResult = HTMLElement | string | false;
  812. interface ScreenshotData {
  813. time: number;
  814. }
  815. interface TimelineLayerOptions<TData = any, TMeta = any> {
  816. id: string;
  817. label: string;
  818. color: number;
  819. skipScreenshots?: boolean;
  820. groupsOnly?: boolean;
  821. ignoreNoDurationGroups?: boolean;
  822. screenshotOverlayRender?: (event: TimelineEvent<TData, TMeta> & ScreenshotOverlayEvent, ctx: ScreenshotOverlayRenderContext) => ScreenshotOverlayRenderResult | Promise<ScreenshotOverlayRenderResult>;
  823. }
  824. interface TimelineEventOptions {
  825. layerId: string;
  826. event: TimelineEvent;
  827. all?: boolean;
  828. }
  829. declare function initDevTools(): void;
  830. declare function onDevToolsClientConnected(fn: () => void): Promise<void>;
  831. declare function toggleHighPerfMode(state?: boolean): void;
  832. declare function createComponentsDevToolsPlugin(app: App): [PluginDescriptor, PluginSetupFunction];
  833. declare function setupDevToolsPlugin(pluginDescriptor: PluginDescriptor, setupFn: PluginSetupFunction): void;
  834. declare function callDevToolsPluginSetupFn(plugin: [PluginDescriptor, PluginSetupFunction], app: App): void;
  835. declare function removeRegisteredPluginApp(app: App): void;
  836. declare function registerDevToolsPlugin(app: App, options?: {
  837. inspectingComponent?: boolean;
  838. }): void;
  839. interface ComponentBoundingRect {
  840. left: number;
  841. top: number;
  842. right: number;
  843. bottom: number;
  844. width: number;
  845. height: number;
  846. }
  847. interface ComponentBoundingRectApiPayload {
  848. app?: VueAppInstance;
  849. inspectorId?: string;
  850. instanceId?: string;
  851. rect?: ComponentBoundingRect;
  852. }
  853. type customTypeEnums = 'function' | 'bigint' | 'map' | 'set' | 'store' | 'router' | 'component' | 'component-definition' | 'HTMLElement' | 'component-definition' | 'date';
  854. type Recordable = Record<PropertyKey, any>;
  855. type PropPath = string | string[];
  856. interface InspectorStateEditorPayload {
  857. app?: AppRecord['app'];
  858. inspectorId: string;
  859. nodeId: string;
  860. type: string;
  861. path: PropPath;
  862. state: {
  863. value: unknown;
  864. newKey: string;
  865. remove?: boolean;
  866. type: string;
  867. };
  868. set?: (obj: Recordable, path: PropPath, value: unknown, cb?: (object: Recordable, field: string, value: unknown) => void) => unknown;
  869. }
  870. interface InspectorCustomState {
  871. _custom?: {
  872. type?: string;
  873. displayText?: string;
  874. tooltipText?: string;
  875. value?: string | InspectorCustomState;
  876. stateTypeName?: string;
  877. fields?: {
  878. abstract?: boolean;
  879. };
  880. };
  881. }
  882. interface InspectorState {
  883. key: string;
  884. value: string | number | boolean | null | Record<string, unknown> | InspectorCustomState | Array<unknown>;
  885. type: string;
  886. path?: string[];
  887. stateType?: string;
  888. stateTypeName?: string;
  889. meta?: Record<string, boolean | string>;
  890. raw?: string;
  891. editable?: boolean;
  892. children?: {
  893. key: string;
  894. value: string | number;
  895. type: string;
  896. }[];
  897. }
  898. interface InspectorStateApiPayload {
  899. app: VueAppInstance;
  900. inspectorId: string;
  901. nodeId: string;
  902. state: {
  903. id: string;
  904. name: string;
  905. file: string | undefined;
  906. state: InspectorState[];
  907. instance: VueAppInstance | undefined;
  908. };
  909. }
  910. interface AddInspectorApiPayload {
  911. id: string;
  912. label: string;
  913. icon?: string;
  914. treeFilterPlaceholder?: string;
  915. actions?: {
  916. icon: string;
  917. tooltip: string;
  918. action: (payload: unknown) => void;
  919. }[];
  920. }
  921. interface InspectorTreeApiPayload {
  922. app?: VueAppInstance;
  923. inspectorId?: string;
  924. filter?: string;
  925. instanceId?: string;
  926. rootNodes?: ComponentTreeNode[];
  927. }
  928. interface InspectorTree {
  929. id: string;
  930. label: string;
  931. tags?: InspectorNodeTag[];
  932. children?: InspectorTree[];
  933. }
  934. interface ComponentHighLighterOptions {
  935. bounds: ComponentBoundingRect;
  936. name?: string;
  937. id?: string;
  938. visible?: boolean;
  939. }
  940. interface ScrollToComponentOptions {
  941. id?: string;
  942. }
  943. declare function toggleComponentHighLighter(options: ComponentHighLighterOptions): void;
  944. declare function highlight(instance: VueAppInstance): void;
  945. declare function unhighlight(): void;
  946. declare function cancelInspectComponentHighLighter(): void;
  947. declare function inspectComponentHighLighter(): Promise<string>;
  948. declare function scrollToComponent(options: ScrollToComponentOptions): void;
  949. declare const UNDEFINED = "__vue_devtool_undefined__";
  950. declare const INFINITY = "__vue_devtool_infinity__";
  951. declare const NEGATIVE_INFINITY = "__vue_devtool_negative_infinity__";
  952. declare const NAN = "__vue_devtool_nan__";
  953. declare function getInspectorStateValueType(value: any, raw?: boolean): string;
  954. declare function formatInspectorStateValue(value: any, quotes?: boolean, options?: {
  955. customClass?: Partial<Record<'string', string>>;
  956. }): any;
  957. declare function getRaw(value: InspectorState['value']): {
  958. value: object | string | number | boolean | null;
  959. inherit: Record<string, any> | {
  960. abstract: true;
  961. };
  962. customType?: customTypeEnums;
  963. };
  964. declare function toEdit(value: unknown, customType?: customTypeEnums): string;
  965. declare function toSubmit(value: string, customType?: customTypeEnums): any;
  966. declare function isPlainObject(obj: unknown): obj is object;
  967. declare function escape(s: string): string;
  968. declare function updateDevToolsClientDetected(params: Record<string, boolean>): void;
  969. interface EventEmitter$2 {
  970. on: (name: string, handler: (data: any) => void) => void;
  971. send: (name: string, ...args: any[]) => void;
  972. emit: (name: string, ...args: any[]) => void;
  973. }
  974. interface ElectronClientContext extends EventEmitter$2 {
  975. }
  976. interface ElectronProxyContext extends EventEmitter$2 {
  977. }
  978. interface ElectronServerContext extends EventEmitter$2 {
  979. }
  980. declare function setElectronClientContext(context: ElectronClientContext): void;
  981. declare function setElectronProxyContext(context: ElectronProxyContext): void;
  982. declare function setElectronServerContext(context: ElectronServerContext): void;
  983. interface EventEmitter$1 {
  984. onMessage: {
  985. addListener: (listener: (name: string, ...args: any[]) => void) => void;
  986. };
  987. postMessage: (name: string, ...args: any[]) => void;
  988. }
  989. interface ExtensionClientContext extends EventEmitter$1 {
  990. }
  991. declare function getExtensionClientContext(): ExtensionClientContext;
  992. declare function setExtensionClientContext(context: ExtensionClientContext): void;
  993. declare function setIframeServerContext(context: HTMLIFrameElement): void;
  994. interface EventEmitter {
  995. on: (name: string, handler: (data: any) => void) => void;
  996. send: (name: string, ...args: any[]) => void;
  997. }
  998. interface ViteClientContext extends EventEmitter {
  999. }
  1000. interface ViteDevServer {
  1001. hot?: EventEmitter;
  1002. ws?: EventEmitter;
  1003. }
  1004. declare function setViteClientContext(context: ViteClientContext): void;
  1005. declare function setViteServerContext(context: ViteDevServer): void;
  1006. type Presets = 'iframe' | 'electron' | 'vite' | 'broadcast' | 'extension';
  1007. interface CreateRpcClientOptions<RemoteFunctions> {
  1008. options?: BirpcOptions<RemoteFunctions>;
  1009. preset?: Presets;
  1010. channel?: ChannelOptions;
  1011. }
  1012. interface CreateRpcServerOptions<RemoteFunctions> {
  1013. options?: BirpcOptions<RemoteFunctions>;
  1014. preset?: Presets;
  1015. channel?: ChannelOptions;
  1016. }
  1017. declare function setRpcServerToGlobal<R, L>(rpc: BirpcGroup<R, L>): void;
  1018. declare function getRpcClient<R, L extends object = Record<string, never>>(): BirpcReturn<R, L>;
  1019. declare function getRpcServer<R, L extends object = Record<string, never>>(): BirpcGroup<R, L>;
  1020. declare function setViteRpcClientToGlobal<R, L>(rpc: BirpcReturn<R, L>): void;
  1021. declare function setViteRpcServerToGlobal<R, L>(rpc: BirpcGroup<R, L>): void;
  1022. declare function getViteRpcClient<R, L extends object = Record<string, never>>(): BirpcReturn<R, L>;
  1023. declare function getViteRpcServer<R, L extends object = Record<string, never>>(): BirpcGroup<R, L>;
  1024. declare function createRpcClient<RemoteFunctions = Record<string, never>, LocalFunctions extends object = Record<string, never>>(functions: LocalFunctions, options?: CreateRpcClientOptions<RemoteFunctions>): BirpcReturn<RemoteFunctions, LocalFunctions> | undefined;
  1025. declare function createRpcServer<RemoteFunctions = Record<string, never>, LocalFunctions extends object = Record<string, never>>(functions: LocalFunctions, options?: CreateRpcServerOptions<RemoteFunctions>): void;
  1026. declare function createRpcProxy<RemoteFunctions = Record<string, never>, LocalFunctions extends object = Record<string, never>>(options?: CreateRpcClientOptions<RemoteFunctions>): BirpcReturn<RemoteFunctions, LocalFunctions>;
  1027. declare function stringify<T extends object = Record<string, unknown>>(data: T): string | string[];
  1028. declare function parse(data: string, revive?: boolean): any;
  1029. declare const devtools: {
  1030. hook: VueHooks;
  1031. init: () => void;
  1032. readonly ctx: DevtoolsContext;
  1033. readonly api: {
  1034. getInspectorTree(payload: Pick<DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_TREE], "inspectorId" | "filter">): Promise<never[]>;
  1035. getInspectorState(payload: Pick<DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.GET_INSPECTOR_STATE], "inspectorId" | "nodeId">): Promise<CustomInspectorState>;
  1036. editInspectorState(payload: DevToolsV6PluginAPIHookPayloads[DevToolsV6PluginAPIHookKeys.EDIT_INSPECTOR_STATE]): void;
  1037. sendInspectorState(inspectorId: string): void;
  1038. inspectComponentInspector(): Promise<string>;
  1039. cancelInspectComponentInspector(): void;
  1040. getComponentRenderCode(id: string): any;
  1041. scrollToComponent(id: string): void;
  1042. openInEditor: typeof openInEditor;
  1043. getVueInspector: typeof getComponentInspector;
  1044. toggleApp(id: string, options?: {
  1045. inspectingComponent?: boolean;
  1046. }): void;
  1047. inspectDOM(instanceId: string): void;
  1048. updatePluginSettings(pluginId: string, key: string, value: string): void;
  1049. getPluginSettings(pluginId: string): {
  1050. options: Record<string, {
  1051. label: string;
  1052. description?: string;
  1053. } & ({
  1054. type: "boolean";
  1055. defaultValue: boolean;
  1056. } | {
  1057. type: "choice";
  1058. defaultValue: string | number;
  1059. options: {
  1060. value: string | number;
  1061. label: string;
  1062. }[];
  1063. component?: "select" | "button-group";
  1064. } | {
  1065. type: "text";
  1066. defaultValue: string;
  1067. })> | null;
  1068. values: any;
  1069. };
  1070. };
  1071. };
  1072. export { type AddInspectorApiPayload, type App, type AppRecord, type ComponentBoundingRect, type ComponentBoundingRectApiPayload, type ComponentBounds, type ComponentHighLighterOptions, type ComponentInspector, type ComponentInstance, type ComponentState, type ComponentTreeNode, type CreateRpcClientOptions, type CreateRpcServerOptions, type CustomCommand, type CustomCommandAction, type CustomInspectorNode, type CustomInspectorOptions, type CustomInspectorState, type CustomTab, type DevToolsApiType, type DevToolsAppRecords, DevToolsContextHookKeys, type DevToolsContextHookPayloads, type DevToolsContextHooks, type DevToolsEvent, type DevToolsHook, DevToolsHooks, DevToolsMessagingHookKeys, type DevToolsMessagingHookPayloads, type DevToolsMessagingHooks, type DevToolsPlugin, type DevToolsState, DevToolsV6PluginAPIHookKeys, type DevToolsV6PluginAPIHookPayloads, type DevToolsV6PluginAPIHooks, type DevtoolsContext, type EditStatePayload, INFINITY, type InspectedComponentData, type InspectorCustomState, type InspectorNodeTag, type InspectorState, type InspectorStateApiPayload, type InspectorStateEditorPayload, type InspectorTree, type InspectorTreeApiPayload, type ModuleIframeView, type ModuleSFCView, type ModuleVNodeView, type ModuleView, NAN, NEGATIVE_INFINITY, type OpenInEditorOptions, type PluginDescriptor, type PluginSetupFunction, type Presets, type PropPath, ROUTER_INFO_KEY, ROUTER_KEY, type RouterInfo, type ScreenshotData, type ScreenshotOverlayEvent, type ScreenshotOverlayRenderContext, type ScreenshotOverlayRenderResult, type ScrollToComponentOptions, type StateBase, type TimelineEvent, type TimelineEventOptions, type TimelineLayerOptions, UNDEFINED, type VueAppInstance, type VueHooks, activeAppRecord, addCustomCommand, addCustomTab, addDevToolsAppRecord, addDevToolsPluginToBuffer, addInspector, callConnectedUpdatedHook, callDevToolsPluginSetupFn, callInspectorUpdatedHook, callStateUpdatedHook, cancelInspectComponentHighLighter, createComponentsDevToolsPlugin, createDevToolsApi, createDevToolsCtxHooks, createRpcClient, createRpcProxy, createRpcServer, type customTypeEnums, devtools, devtoolsAppRecords, devtoolsContext, devtoolsInspector, devtoolsPluginBuffer, devtoolsRouter, devtoolsRouterInfo, devtoolsState, escape, formatInspectorStateValue, getActiveInspectors, getComponentInspector, getDevToolsEnv, getExtensionClientContext, getInspector, getInspectorActions, getInspectorInfo, getInspectorNodeActions, getInspectorStateValueType, getRaw, getRpcClient, getRpcServer, getViteRpcClient, getViteRpcServer, highlight, initDevTools, inspectComponentHighLighter, isPlainObject, onDevToolsClientConnected, onDevToolsConnected, openInEditor, parse, registerDevToolsPlugin, removeCustomCommand, removeDevToolsAppRecord, removeRegisteredPluginApp, resetDevToolsState, scrollToComponent, setActiveAppRecord, setActiveAppRecordId, setDevToolsEnv, setElectronClientContext, setElectronProxyContext, setElectronServerContext, setExtensionClientContext, setIframeServerContext, setOpenInEditorBaseUrl, setRpcServerToGlobal, setViteClientContext, setViteRpcClientToGlobal, setViteRpcServerToGlobal, setViteServerContext, setupDevToolsPlugin, stringify, toEdit, toSubmit, toggleClientConnected, toggleComponentHighLighter, toggleComponentInspectorEnabled, toggleHighPerfMode, unhighlight, updateDevToolsClientDetected, updateDevToolsState, updateTimelineLayersState };