index.d.ts 44 KB

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