vite-uni-dev-tool 0.0.48 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/README.md +20 -0
  2. package/dist/const.cjs +1 -0
  3. package/dist/const.d.ts +78 -161
  4. package/dist/const.d.ts.map +1 -1
  5. package/dist/const.js +1 -47
  6. package/dist/core-shared.d.ts +44 -0
  7. package/dist/core-shared.d.ts.map +1 -0
  8. package/dist/core-shared.js +1 -0
  9. package/dist/core.d.ts +2 -40
  10. package/dist/core.d.ts.map +1 -1
  11. package/dist/core.js +4 -159
  12. package/dist/i18n/index.cjs +1 -0
  13. package/dist/i18n/index.d.ts +9 -0
  14. package/dist/i18n/index.d.ts.map +1 -0
  15. package/dist/i18n/index.js +1 -0
  16. package/dist/i18n/instance.cjs +1 -0
  17. package/dist/i18n/instance.d.ts +15 -0
  18. package/dist/i18n/instance.d.ts.map +1 -0
  19. package/dist/i18n/instance.js +1 -0
  20. package/dist/i18n/locales/en.cjs +1 -0
  21. package/dist/i18n/locales/en.d.ts +470 -0
  22. package/dist/i18n/locales/en.d.ts.map +1 -0
  23. package/dist/i18n/locales/en.js +1 -0
  24. package/dist/i18n/locales/zh-Hans.cjs +1 -0
  25. package/dist/i18n/locales/zh-Hans.d.ts +476 -0
  26. package/dist/i18n/locales/zh-Hans.d.ts.map +1 -0
  27. package/dist/i18n/locales/zh-Hans.js +1 -0
  28. package/dist/index.cjs +1 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -1
  31. package/dist/modules/devConsole/index.cjs +4 -0
  32. package/dist/{devConsole → modules/devConsole}/index.d.ts +1 -1
  33. package/dist/modules/devConsole/index.d.ts.map +1 -0
  34. package/dist/modules/devConsole/index.js +4 -0
  35. package/dist/modules/devEvent/index.cjs +5 -0
  36. package/dist/modules/devEvent/index.d.ts +115 -0
  37. package/dist/modules/devEvent/index.d.ts.map +1 -0
  38. package/dist/modules/devEvent/index.js +5 -0
  39. package/dist/modules/devIntercept/index.cjs +13 -0
  40. package/dist/modules/devIntercept/index.d.ts +71 -0
  41. package/dist/modules/devIntercept/index.d.ts.map +1 -0
  42. package/dist/modules/devIntercept/index.js +13 -0
  43. package/dist/modules/devStore/index.cjs +1 -0
  44. package/dist/modules/devStore/index.d.ts +159 -0
  45. package/dist/modules/devStore/index.d.ts.map +1 -0
  46. package/dist/modules/devStore/index.js +1 -0
  47. package/dist/modules/devToolInfo/index.cjs +1 -0
  48. package/dist/modules/devToolInfo/index.d.ts +27 -0
  49. package/dist/modules/devToolInfo/index.d.ts.map +1 -0
  50. package/dist/modules/devToolInfo/index.js +1 -0
  51. package/dist/plugins/uniDevTool/transform/transformApp.cjs +44 -0
  52. package/dist/plugins/uniDevTool/transform/transformApp.d.ts.map +1 -1
  53. package/dist/plugins/uniDevTool/transform/transformApp.js +17 -17
  54. package/dist/plugins/uniDevTool/transform/transformMain.cjs +3 -0
  55. package/dist/plugins/uniDevTool/transform/transformMain.d.ts.map +1 -1
  56. package/dist/plugins/uniDevTool/transform/transformMain.js +3 -3
  57. package/dist/plugins/uniDevTool/transform/transformVue.cjs +41 -0
  58. package/dist/plugins/uniDevTool/transform/transformVue.d.ts +1 -2
  59. package/dist/plugins/uniDevTool/transform/transformVue.d.ts.map +1 -1
  60. package/dist/plugins/uniDevTool/transform/transformVue.js +32 -19
  61. package/dist/plugins/uniDevTool/uniDevTool.cjs +5 -0
  62. package/dist/plugins/uniDevTool/uniDevTool.d.ts +3 -11
  63. package/dist/plugins/uniDevTool/uniDevTool.d.ts.map +1 -1
  64. package/dist/plugins/uniDevTool/uniDevTool.js +3 -3
  65. package/dist/plugins/uniGlobalComponents/uniGlobalComponents.cjs +19 -0
  66. package/dist/plugins/uniGlobalComponents/uniGlobalComponents.d.ts.map +1 -1
  67. package/dist/plugins/uniGlobalComponents/uniGlobalComponents.js +11 -19
  68. package/dist/plugins/uniParseStock/index.d.ts +10 -0
  69. package/dist/plugins/uniParseStock/index.d.ts.map +1 -0
  70. package/dist/plugins/utils/index.cjs +2 -0
  71. package/dist/plugins/utils/index.d.ts +1 -3
  72. package/dist/plugins/utils/index.d.ts.map +1 -1
  73. package/dist/plugins/utils/index.js +2 -2
  74. package/dist/shims-uni.d.ts +140 -0
  75. package/dist/type.d.ts +174 -16
  76. package/dist/type.d.ts.map +1 -1
  77. package/dist/utils/array.cjs +1 -0
  78. package/dist/utils/array.d.ts.map +1 -1
  79. package/dist/utils/array.js +1 -12
  80. package/dist/utils/date.cjs +1 -0
  81. package/dist/utils/date.d.ts.map +1 -1
  82. package/dist/utils/date.js +1 -59
  83. package/dist/utils/file.cjs +1 -0
  84. package/dist/utils/file.d.ts.map +1 -1
  85. package/dist/utils/file.js +1 -85
  86. package/dist/utils/function.cjs +1 -0
  87. package/dist/utils/function.d.ts +13 -0
  88. package/dist/utils/function.d.ts.map +1 -1
  89. package/dist/utils/function.js +1 -68
  90. package/dist/utils/index.cjs +1 -0
  91. package/dist/utils/index.d.ts.map +1 -1
  92. package/dist/utils/index.js +1 -63
  93. package/dist/utils/ip.cjs +1 -0
  94. package/dist/utils/ip.d.ts +1 -1
  95. package/dist/utils/ip.d.ts.map +1 -1
  96. package/dist/utils/ip.js +1 -45
  97. package/dist/utils/language.cjs +1 -0
  98. package/dist/utils/language.d.ts +2 -1
  99. package/dist/utils/language.d.ts.map +1 -1
  100. package/dist/utils/language.js +1 -63
  101. package/dist/utils/object.cjs +1 -0
  102. package/dist/utils/object.d.ts +4 -5
  103. package/dist/utils/object.d.ts.map +1 -1
  104. package/dist/utils/object.js +1 -136
  105. package/dist/utils/openLink.cjs +1 -0
  106. package/dist/utils/openLink.d.ts.map +1 -1
  107. package/dist/utils/openLink.js +1 -28
  108. package/dist/utils/page.cjs +1 -0
  109. package/dist/utils/page.d.ts.map +1 -1
  110. package/dist/utils/page.js +1 -7
  111. package/dist/utils/platform.cjs +1 -0
  112. package/dist/utils/platform.d.ts.map +1 -1
  113. package/dist/utils/platform.js +1 -17
  114. package/dist/utils/string.cjs +1 -0
  115. package/dist/utils/string.d.ts.map +1 -1
  116. package/dist/utils/string.js +1 -114
  117. package/dist/utils/utils.cjs +1 -0
  118. package/dist/utils/utils.d.ts +1 -1
  119. package/dist/utils/utils.d.ts.map +1 -1
  120. package/dist/utils/utils.js +1 -126
  121. package/dist/v3/AppTransition/index.vue +170 -0
  122. package/dist/v3/AutoSizer/index.vue +4 -5
  123. package/dist/v3/AutoSizer/index1.vue +4 -6
  124. package/dist/v3/AutoSizer/utils.ts +1 -1
  125. package/dist/v3/CaptureScreen/index.vue +19 -8
  126. package/dist/v3/CircularButton/index.vue +64 -13
  127. package/dist/v3/ConsoleList/ConsoleItem.vue +56 -5
  128. package/dist/v3/ConsoleList/RunJSInput.vue +10 -6
  129. package/dist/v3/ConsoleList/index.vue +51 -35
  130. package/dist/v3/CustomSwiper/CustomSwiperItem.vue +49 -0
  131. package/dist/v3/CustomSwiper/index.vue +104 -0
  132. package/dist/v3/DevTool/fps-collector.render.ts +148 -0
  133. package/dist/v3/DevTool/index.vue +209 -102
  134. package/dist/v3/DevToolButton/index.vue +40 -59
  135. package/dist/v3/DevToolTitle/index.vue +4 -1
  136. package/dist/v3/DevToolWindow/DevToolOverlay.vue +182 -0
  137. package/dist/v3/DevToolWindow/const.ts +47 -69
  138. package/dist/v3/DevToolWindow/hooks/dataUtils.ts +48 -0
  139. package/dist/v3/DevToolWindow/hooks/useDevToolData.ts +338 -0
  140. package/dist/v3/DevToolWindow/hooks/useDevToolHandlers.ts +549 -0
  141. package/dist/v3/DevToolWindow/hooks/useDevToolOverlay.ts +184 -0
  142. package/dist/v3/DevToolWindow/index.css +89 -0
  143. package/dist/v3/DevToolWindow/index.vue +800 -1450
  144. package/dist/v3/DraggableContainer/index.vue +456 -0
  145. package/dist/v3/ElEvent/ElEventItem.vue +4 -3
  146. package/dist/v3/ElEvent/index.vue +26 -9
  147. package/dist/v3/Empty/index.vue +1 -0
  148. package/dist/v3/FilterInput/index.vue +8 -22
  149. package/dist/v3/FilterSelect/index.vue +37 -24
  150. package/dist/v3/Instance/components/InstanceTreeNode.vue +265 -0
  151. package/dist/v3/Instance/flatten.ts +226 -0
  152. package/dist/v3/Instance/index.vue +94 -0
  153. package/dist/v3/Instance/registry.ts +49 -0
  154. package/dist/v3/Instance/transformTree.ts +375 -0
  155. package/dist/v3/Instance/transformTreeCtx.ts +268 -0
  156. package/dist/v3/{InstanceTree → Instance}/typing.d.ts +15 -2
  157. package/dist/v3/InstanceDetail/index.vue +433 -44
  158. package/dist/v3/JsonDetail/index.vue +12 -8
  159. package/dist/v3/JsonPretty/components/Brackets/index.vue +1 -0
  160. package/dist/v3/JsonPretty/components/Carets/index.vue +2 -1
  161. package/dist/v3/JsonPretty/components/CheckController/index.vue +26 -15
  162. package/dist/v3/JsonPretty/components/TreeNode/index.vue +42 -20
  163. package/dist/v3/JsonPretty/index.vue +60 -37
  164. package/dist/v3/JsonPretty/utils/index.ts +41 -44
  165. package/dist/v3/MovableContainer/index.vue +89 -0
  166. package/dist/v3/NFCList/NFCItem.vue +14 -14
  167. package/dist/v3/NFCList/NFCTool.vue +99 -81
  168. package/dist/v3/NFCList/index.vue +14 -10
  169. package/dist/v3/NetworkList/InterceptConfig.vue +154 -364
  170. package/dist/v3/NetworkList/InterceptItem.vue +14 -6
  171. package/dist/v3/NetworkList/NetworkDetail.vue +34 -29
  172. package/dist/v3/NetworkList/NetworkIntercept.vue +11 -8
  173. package/dist/v3/NetworkList/NetworkItem.vue +27 -11
  174. package/dist/v3/NetworkList/NetworkSend.vue +132 -290
  175. package/dist/v3/NetworkList/hooks/useNetworkForm.ts +86 -0
  176. package/dist/v3/NetworkList/index.vue +32 -24
  177. package/dist/v3/NetworkList/utils.ts +101 -0
  178. package/dist/v3/Performance/index.vue +495 -0
  179. package/dist/v3/Performance/modules/PerformanceMetrics.vue +153 -0
  180. package/dist/v3/Performance/modules/PerformanceWidget.vue +249 -0
  181. package/dist/v3/Performance/modules/usePerformanceChart.ts +460 -0
  182. package/dist/v3/Performance/modules/usePerformanceData.ts +258 -0
  183. package/dist/v3/Pick/index.vue +322 -0
  184. package/dist/v3/PiniaList/index.vue +38 -17
  185. package/dist/v3/RouteList/index.vue +32 -15
  186. package/dist/v3/RunJS/index.vue +30 -10
  187. package/dist/v3/ScanCodeList/ScanCodeItem.vue +2 -9
  188. package/dist/v3/ScanCodeList/index.vue +12 -9
  189. package/dist/v3/SettingButton/index.vue +45 -0
  190. package/dist/v3/SettingList/index.css +120 -0
  191. package/dist/v3/SettingList/index.vue +96 -537
  192. package/dist/v3/SettingList/modules/SettingDevTool.vue +208 -0
  193. package/dist/v3/SettingList/modules/SettingInfo.vue +119 -0
  194. package/dist/v3/SettingList/modules/SettingLanguage.vue +74 -0
  195. package/dist/v3/SettingList/modules/SettingLog.vue +230 -0
  196. package/dist/v3/SettingList/modules/SettingNetwork.vue +120 -0
  197. package/dist/v3/SettingList/modules/SettingTheme.vue +312 -0
  198. package/dist/v3/SourceCode/Line.vue +15 -2
  199. package/dist/v3/SourceCode/index.vue +25 -24
  200. package/dist/v3/SourceCode/parseCode.ts +114 -56
  201. package/dist/v3/StorageList/index.vue +33 -33
  202. package/dist/v3/Tabs/index.vue +31 -28
  203. package/dist/v3/Tag/index.vue +39 -20
  204. package/dist/v3/TransferList/TransferDetail.vue +268 -0
  205. package/dist/v3/TransferList/TransferItem.vue +125 -0
  206. package/dist/v3/TransferList/index.vue +181 -0
  207. package/dist/v3/UniEvent/UniEventItem.vue +1 -0
  208. package/dist/v3/UniEvent/index.vue +28 -29
  209. package/dist/v3/{VirtualListPro → VirtualList}/AutoSize.vue +1 -1
  210. package/dist/v3/VirtualList/index.vue +382 -82
  211. package/dist/v3/VuexList/index.vue +38 -17
  212. package/dist/v3/WebSocket/WebSocketDetail.vue +142 -80
  213. package/dist/v3/WebSocket/WebSocketItem.vue +10 -4
  214. package/dist/v3/WebSocket/index.vue +44 -30
  215. package/dist/v3/hooks/useNFC/index.ts +6 -6
  216. package/dist/v3/hooks/useNFC/typing.d.ts +2 -2
  217. package/dist/v3/hooks/useNFC/useNFCAndroid.ts +215 -626
  218. package/dist/v3/hooks/useNFC/useNFCMpWeiXin.ts +54 -85
  219. package/dist/v3/hooks/useNFC/utils.ts +3 -3
  220. package/dist/v3/hooks/useRequest/index.ts +2 -2
  221. package/dist/v3/hooks/useScanCode/index.ts +10 -8
  222. package/dist/v3/styles/theme.css +290 -0
  223. package/dist/v3/styles/theme.ts +12 -0
  224. package/package.json +25 -5
  225. package/dist/devConsole/index.d.ts.map +0 -1
  226. package/dist/devConsole/index.js +0 -273
  227. package/dist/devEvent/index.d.ts +0 -328
  228. package/dist/devEvent/index.d.ts.map +0 -1
  229. package/dist/devEvent/index.js +0 -697
  230. package/dist/devEventBus/index.d.ts +0 -42
  231. package/dist/devEventBus/index.d.ts.map +0 -1
  232. package/dist/devEventBus/index.js +0 -70
  233. package/dist/devIntercept/index.d.ts +0 -281
  234. package/dist/devIntercept/index.d.ts.map +0 -1
  235. package/dist/devIntercept/index.js +0 -949
  236. package/dist/devRunJS/index.d.ts +0 -67
  237. package/dist/devRunJS/index.d.ts.map +0 -1
  238. package/dist/devStore/index.d.ts +0 -199
  239. package/dist/devStore/index.d.ts.map +0 -1
  240. package/dist/devStore/index.js +0 -562
  241. package/dist/devToolInfo/index.d.ts +0 -17
  242. package/dist/devToolInfo/index.d.ts.map +0 -1
  243. package/dist/devToolInfo/index.js +0 -15
  244. package/dist/v3/AutoSizer/utils.d.ts +0 -5
  245. package/dist/v3/AutoSizer/utils.d.ts.map +0 -1
  246. package/dist/v3/ConsoleList/staticTips.d.ts +0 -13
  247. package/dist/v3/ConsoleList/staticTips.d.ts.map +0 -1
  248. package/dist/v3/DevToolWindow/const.d.ts +0 -46
  249. package/dist/v3/DevToolWindow/const.d.ts.map +0 -1
  250. package/dist/v3/InstanceTree/components/InstanceTreeNode.vue +0 -81
  251. package/dist/v3/InstanceTree/flatten.d.ts +0 -10
  252. package/dist/v3/InstanceTree/flatten.d.ts.map +0 -1
  253. package/dist/v3/InstanceTree/flatten.ts +0 -75
  254. package/dist/v3/InstanceTree/index.vue +0 -51
  255. package/dist/v3/InstanceTree/transformTree.d.ts +0 -17
  256. package/dist/v3/InstanceTree/transformTree.d.ts.map +0 -1
  257. package/dist/v3/InstanceTree/transformTree.ts +0 -237
  258. package/dist/v3/JsonPretty/hooks/useClipboard.d.ts +0 -4
  259. package/dist/v3/JsonPretty/hooks/useClipboard.d.ts.map +0 -1
  260. package/dist/v3/JsonPretty/hooks/useError.d.ts +0 -8
  261. package/dist/v3/JsonPretty/hooks/useError.d.ts.map +0 -1
  262. package/dist/v3/JsonPretty/type.d.ts +0 -94
  263. package/dist/v3/JsonPretty/type.d.ts.map +0 -1
  264. package/dist/v3/JsonPretty/utils/index.d.ts +0 -10
  265. package/dist/v3/JsonPretty/utils/index.d.ts.map +0 -1
  266. package/dist/v3/NFCList/const.d.ts +0 -13
  267. package/dist/v3/NFCList/const.d.ts.map +0 -1
  268. package/dist/v3/NetworkList/const.d.ts +0 -5
  269. package/dist/v3/NetworkList/const.d.ts.map +0 -1
  270. package/dist/v3/SourceCode/parseCode.d.ts +0 -27
  271. package/dist/v3/SourceCode/parseCode.d.ts.map +0 -1
  272. package/dist/v3/UploadList/UploadDetail.vue +0 -255
  273. package/dist/v3/UploadList/UploadItem.vue +0 -122
  274. package/dist/v3/UploadList/index.vue +0 -125
  275. package/dist/v3/VirtualListPro/index.vue +0 -229
  276. package/dist/v3/hooks/useContainerStyle.d.ts +0 -15
  277. package/dist/v3/hooks/useContainerStyle.d.ts.map +0 -1
  278. package/dist/v3/hooks/useNFC/index.d.ts +0 -5
  279. package/dist/v3/hooks/useNFC/index.d.ts.map +0 -1
  280. package/dist/v3/hooks/useNFC/useNFCAndroid.d.ts +0 -2
  281. package/dist/v3/hooks/useNFC/useNFCAndroid.d.ts.map +0 -1
  282. package/dist/v3/hooks/useNFC/useNFCMpWeiXin.d.ts +0 -2
  283. package/dist/v3/hooks/useNFC/useNFCMpWeiXin.d.ts.map +0 -1
  284. package/dist/v3/hooks/useNFC/utils.d.ts +0 -95
  285. package/dist/v3/hooks/useNFC/utils.d.ts.map +0 -1
  286. package/dist/v3/hooks/useRequest/index.d.ts +0 -126
  287. package/dist/v3/hooks/useRequest/index.d.ts.map +0 -1
  288. package/dist/v3/hooks/useRequest/utils.d.ts +0 -35
  289. package/dist/v3/hooks/useRequest/utils.d.ts.map +0 -1
  290. package/dist/v3/hooks/useScanCode/index.d.ts +0 -36
  291. package/dist/v3/hooks/useScanCode/index.d.ts.map +0 -1
  292. /package/dist/v3/{VirtualListPro → VirtualList}/readme.md +0 -0
@@ -0,0 +1,268 @@
1
+ import { isArray, isObject, isString } from '../../utils';
2
+ import { isRef, isReactive } from 'vue';
3
+ import { getRecordedChildren } from './registry';
4
+
5
+ /**
6
+ * 分类提取属性 (基于 Instance 属性而非 VNode)
7
+ */
8
+ function extractInstanceData(instance: any): {
9
+ props: Record<string, any>;
10
+ styles: Record<string, any>;
11
+ other: Record<string, any>;
12
+ provides: Record<string, any>;
13
+ data: Record<string, any>;
14
+ functions: Record<string, any>;
15
+ emits: Record<string, any>;
16
+ } {
17
+ const styles: any = {};
18
+ const props: any = {};
19
+ const other: any = {};
20
+ const provides: any = {};
21
+ const data: any = {};
22
+ const functions: any = {};
23
+ const emits: any = {};
24
+
25
+ // 1. 提取元数据
26
+ other.uid = instance.uid;
27
+ if (instance.type) {
28
+ other.type = isString(instance.type)
29
+ ? instance.type
30
+ : isObject(instance.type)
31
+ ? (instance.type as any).name ||
32
+ (instance.type as any).__name ||
33
+ 'Component'
34
+ : String(instance.type);
35
+
36
+ if (isObject(instance.type) && (instance.type as any).__file) {
37
+ other.file = (instance.type as any).__file;
38
+ }
39
+ }
40
+
41
+ // 2. 提取 Props (从 instance.props)
42
+ if (instance.props) {
43
+ Object.keys(instance.props).forEach((key) => {
44
+ // 排除内部属性
45
+ if (key.startsWith('__v')) return;
46
+
47
+ const val = instance.props[key];
48
+ if (key === 'style' || key === 'id') {
49
+ styles[key] = val;
50
+ } else {
51
+ props[key] = val;
52
+ }
53
+ });
54
+ }
55
+
56
+ // 3. 提取 provides
57
+ if (instance.provides) {
58
+ Reflect.ownKeys(instance.provides).forEach((key) => {
59
+ if (typeof key === 'string' && key.startsWith('__v')) return;
60
+ const value = instance.provides[key];
61
+ const keyStr = typeof key === 'symbol' ? String(key) : key;
62
+ provides[keyStr] = value;
63
+ });
64
+ }
65
+
66
+ // 4. 提取 data 和 setupState
67
+ const allData: any = {};
68
+
69
+ // 处理 setupState (Composition API)
70
+ if (isObject(instance.setupState)) {
71
+ Object.assign(allData, instance.setupState);
72
+ }
73
+
74
+ // 处理 Options API data
75
+ if (isObject(instance.data)) {
76
+ Object.assign(allData, instance.data);
77
+ }
78
+
79
+ // 处理提取到 allData 中的项
80
+ Reflect.ownKeys(allData).forEach((key) => {
81
+ if (
82
+ typeof key === 'string' &&
83
+ (key.startsWith('__v') || key.startsWith('$') || key.startsWith('_'))
84
+ )
85
+ return;
86
+
87
+ const value = allData[key];
88
+ let keyStr = typeof key === 'symbol' ? String(key) : key;
89
+
90
+ // 标记 Ref 和 Reactive
91
+ const rawSetupState = instance.devtoolsRawSetupState || {};
92
+ const rawValue = rawSetupState[key];
93
+
94
+ if (rawValue && isRef(rawValue)) {
95
+ keyStr += ' (Ref)';
96
+ } else if (isReactive(value)) {
97
+ keyStr += ' (Reactive)';
98
+ }
99
+
100
+ if (typeof value === 'function') {
101
+ functions[keyStr] = value;
102
+ } else {
103
+ data[keyStr] = value;
104
+ }
105
+ });
106
+
107
+ // 5. 提取 emits
108
+ const emitsOptions = instance.emitsOptions || instance.type?.emits;
109
+ if (emitsOptions) {
110
+ if (isArray(emitsOptions)) {
111
+ emitsOptions.forEach((emit: string) => {
112
+ emits[emit] = 'function(...args) {...}';
113
+ });
114
+ } else if (isObject(emitsOptions)) {
115
+ Reflect.ownKeys(emitsOptions).forEach((key) => {
116
+ if (typeof key === 'string') {
117
+ emits[key] = 'function(...args) {...}';
118
+ }
119
+ });
120
+ }
121
+ }
122
+
123
+ return { props, styles, other, provides, data, functions, emits };
124
+ }
125
+
126
+ function extractNameFromFile(file: string): string | undefined {
127
+ if (!file) return undefined;
128
+ const match = file.match(/([^/|\\]+)\.[^.]+$/);
129
+ return match ? match[1] : undefined;
130
+ }
131
+
132
+ function getComponentName(type: any): string {
133
+ if (!type) return 'Anonymous';
134
+ if (typeof type === 'string') return type;
135
+ if (typeof type === 'object') {
136
+ // 依次尝试各种可能的命名字段
137
+ const name =
138
+ type.name ||
139
+ type.__name ||
140
+ type.displayName ||
141
+ type.__displayName ||
142
+ (type.__file ? extractNameFromFile(type.__file) : undefined);
143
+
144
+ if (name) return name;
145
+
146
+ // 如果是小程序环境中的页面
147
+ if (type.mpType === 'page') {
148
+ return 'Page';
149
+ }
150
+ if (type.mpType === 'component') {
151
+ return 'Component';
152
+ }
153
+ }
154
+ return 'Anonymous';
155
+ }
156
+
157
+ const BLACKLIST_COMPONENTS = [
158
+ 'DevTool',
159
+ 'DevToolButton',
160
+ 'DevToolWindow',
161
+ 'DevToolOverlay',
162
+ 'PerformanceWidget',
163
+ 'Instance',
164
+ 'InstanceDetail',
165
+ 'VirtualList',
166
+ 'InstanceTreeNode',
167
+ 'AppTransition',
168
+ 'SourceCode',
169
+ 'NetworkList',
170
+ 'NetworkSend',
171
+ 'NetworkDetail',
172
+ 'NetworkIntercept',
173
+ 'InterceptConfig',
174
+ 'TransferList',
175
+ 'TransferDetail',
176
+ 'WebSocketDetail',
177
+ 'JsonDetail',
178
+ 'NFCTool',
179
+ 'Profiler',
180
+ 'Performance',
181
+ 'Timeline',
182
+ 'MovableContainer',
183
+ 'Tabs',
184
+ 'CustomSwiper',
185
+ 'CustomSwiperItem',
186
+ 'ConsoleList',
187
+ 'RouteList',
188
+ 'UniEvent',
189
+ 'ElEvent',
190
+ 'StorageList',
191
+ 'VuexList',
192
+ 'PiniaList',
193
+ 'SettingList',
194
+ 'CaptureScreen',
195
+ 'ScanCodeList',
196
+ 'NFCList',
197
+ ];
198
+
199
+ let uidCount = 0;
200
+ export function resetUidCount() {
201
+ uidCount = 0;
202
+ }
203
+
204
+ function getNextUid() {
205
+ return `manual-${++uidCount}`;
206
+ }
207
+
208
+ /**
209
+ * 基于 Instance 的树构建逻辑 (Ctx mode)
210
+ * 优先使用 registry.ts 中记录的父子关系,这在小程序环境下更稳定
211
+ */
212
+ export function simpleTreeCtx(
213
+ instance?: any,
214
+ depth = 0,
215
+ ): InstanceTree.TreeNode | null {
216
+ if (!instance || typeof instance !== 'object' || depth > 40) {
217
+ return null;
218
+ }
219
+
220
+ // 1. 检查组件类型和名字
221
+ const typeName = getComponentName(instance.type);
222
+
223
+ // 2. 排除开发工具自身的组件
224
+ if (BLACKLIST_COMPONENTS.includes(typeName)) {
225
+ return null;
226
+ }
227
+
228
+ // 3. 也可以通过特殊标记排除 (如果以后在组件定义中加入 __devTool: true)
229
+ if (instance.type && (instance.type as any).__devTool) {
230
+ return null;
231
+ }
232
+
233
+ // 4. 通过 props 或 type 属性排除
234
+ if (
235
+ (instance.type && (instance.type as any)['data-dev-tool']) ||
236
+ (instance.props && instance.props['data-dev-tool'])
237
+ ) {
238
+ return null;
239
+ }
240
+
241
+ // 5. 过滤逻辑 (此处预留,当前保持原始结构)
242
+
243
+ const children: InstanceTree.TreeNode[] = [];
244
+
245
+ // 核心逻辑:使用 registry 记录的子组件
246
+ // 这种方式在小程序中避开了复杂的 subTree/vnode 结构
247
+ const recordedChildren = getRecordedChildren(instance.uid);
248
+ if (recordedChildren && recordedChildren.length > 0) {
249
+ recordedChildren.forEach((childInst) => {
250
+ const childTree = simpleTreeCtx(childInst, depth + 1);
251
+ if (childTree) {
252
+ children.push(childTree);
253
+ }
254
+ });
255
+ }
256
+
257
+ const uid = instance.uid !== undefined ? instance.uid : getNextUid();
258
+
259
+ const nodeInfo: InstanceTree.TreeNode = {
260
+ type: typeName,
261
+ uid,
262
+ children,
263
+ hasChildren: children.length > 0,
264
+ ...extractInstanceData(instance),
265
+ };
266
+
267
+ return nodeInfo;
268
+ }
@@ -1,20 +1,33 @@
1
1
  declare namespace InstanceTree {
2
2
  interface TreeNode {
3
3
  type: string;
4
- uid?: number;
4
+ uid?: string | number;
5
5
  children?: TreeNode[];
6
6
  content?: string;
7
+ hasChildren?: boolean;
8
+ props?: Record<string, any>;
9
+ styles?: Record<string, any>;
10
+ other?: Record<string, any>;
11
+ provides?: Record<string, any>;
12
+ data?: Record<string, any>;
13
+ functions?: Record<string, any>;
14
+ emits?: Record<string, any>;
7
15
  }
8
16
 
9
17
  interface FlattenedNodeWithEnd extends TreeNode {
10
18
  level: number; // 当前层级
11
- parentUid?: number; // 父节点UID
19
+ parentUid?: string | number; // 父节点UID
12
20
  endLevel?: number; // 闭合层级(该节点及其子节点结束的层级)
13
21
  childrenCount?: number; // 子节点数量
14
22
  isLastChild?: boolean; // 是否为同级最后一个子节点
15
23
  isStartNode?: boolean; // 是否为开始节点
16
24
  isEndNode?: boolean; // 是否为结束节点
17
25
  isContentNode?: boolean; // 是否为内容节点
26
+ hasChildren?: boolean; // 是否有子节点
27
+ isCollapsed?: boolean; // 是否已收起
28
+ isEmptyTag?: boolean; // 是否为空标签(无子节点且无内容)
29
+ isInline?: boolean; // 是否为内联展示(只有文本子节点)
30
+ inlineContent?: string; // 内联展示的内容
18
31
  }
19
32
 
20
33
  /**