市场夺宝奇兵
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1171 lines
44 KiB

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