vite-uni-dev-tool 1.1.0 → 1.2.1

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 (195) hide show
  1. package/README.md +21 -1
  2. package/dist/const.cjs +1 -1
  3. package/dist/const.d.ts +2 -1
  4. package/dist/const.js +1 -1
  5. package/dist/core-shared.d.ts +2 -3
  6. package/dist/core.d.ts +8 -8
  7. package/dist/core.js +2 -2
  8. package/dist/i18n/index.d.ts +0 -1
  9. package/dist/i18n/instance.d.ts +0 -1
  10. package/dist/i18n/locales/en.cjs +1 -1
  11. package/dist/i18n/locales/en.d.ts +6 -1
  12. package/dist/i18n/locales/en.js +1 -1
  13. package/dist/i18n/locales/zh-Hans.cjs +1 -1
  14. package/dist/i18n/locales/zh-Hans.d.ts +6 -1
  15. package/dist/i18n/locales/zh-Hans.js +1 -1
  16. package/dist/index.d.ts +0 -1
  17. package/dist/modules/devConsole/index.cjs +4 -4
  18. package/dist/modules/devConsole/index.d.ts +6 -107
  19. package/dist/modules/devConsole/index.js +4 -4
  20. package/dist/modules/devEvent/index.cjs +3 -3
  21. package/dist/modules/devEvent/index.d.ts +2 -3
  22. package/dist/modules/devEvent/index.js +3 -3
  23. package/dist/modules/devIntercept/index.cjs +14 -14
  24. package/dist/modules/devIntercept/index.d.ts +34 -6
  25. package/dist/modules/devIntercept/index.js +14 -14
  26. package/dist/modules/devStore/index.cjs +1 -1
  27. package/dist/modules/devStore/index.d.ts +48 -40
  28. package/dist/modules/devStore/index.js +1 -1
  29. package/dist/modules/devToolInfo/index.cjs +1 -1
  30. package/dist/modules/devToolInfo/index.d.ts +6 -25
  31. package/dist/modules/devToolInfo/index.js +1 -1
  32. package/dist/plugins/uniDevTool/transform/transformApp.d.ts +0 -1
  33. package/dist/plugins/uniDevTool/transform/transformMain.cjs +3 -3
  34. package/dist/plugins/uniDevTool/transform/transformMain.d.ts +2 -2
  35. package/dist/plugins/uniDevTool/transform/transformMain.js +3 -3
  36. package/dist/plugins/uniDevTool/transform/transformVue.cjs +31 -25
  37. package/dist/plugins/uniDevTool/transform/transformVue.d.ts +2 -2
  38. package/dist/plugins/uniDevTool/transform/transformVue.js +30 -24
  39. package/dist/plugins/uniDevTool/uniDevTool.cjs +3 -3
  40. package/dist/plugins/uniDevTool/uniDevTool.d.ts +3 -2
  41. package/dist/plugins/uniDevTool/uniDevTool.js +3 -3
  42. package/dist/plugins/uniGlobalComponents/uniGlobalComponents.d.ts +0 -1
  43. package/dist/plugins/utils/index.d.ts +0 -1
  44. package/dist/shims-uni.d.ts +26 -22
  45. package/dist/type.d.ts +47 -43
  46. package/dist/utils/array.d.ts +0 -1
  47. package/dist/utils/date.d.ts +0 -1
  48. package/dist/utils/file.d.ts +0 -1
  49. package/dist/utils/function.d.ts +0 -1
  50. package/dist/utils/index.d.ts +0 -1
  51. package/dist/utils/ip.d.ts +0 -1
  52. package/dist/utils/language.d.ts +14 -15
  53. package/dist/utils/object.cjs +1 -1
  54. package/dist/utils/object.d.ts +7 -8
  55. package/dist/utils/object.js +1 -1
  56. package/dist/utils/openLink.d.ts +0 -1
  57. package/dist/utils/page.d.ts +0 -1
  58. package/dist/utils/platform.d.ts +0 -1
  59. package/dist/utils/string.d.ts +0 -1
  60. package/dist/utils/utils.d.ts +0 -1
  61. package/dist/v3/DevTool/components/BluetoothList/BluetoothItem.vue +199 -199
  62. package/dist/v3/DevTool/components/BluetoothList/BluetoothTool.vue +730 -730
  63. package/dist/v3/DevTool/components/BluetoothList/index.vue +167 -167
  64. package/dist/v3/DevTool/components/CaptureScreen/index.vue +109 -109
  65. package/dist/v3/DevTool/components/ConsoleList/ConsoleItem.vue +230 -225
  66. package/dist/v3/DevTool/components/ConsoleList/RunJSInput.vue +247 -247
  67. package/dist/v3/DevTool/components/ConsoleList/index.vue +171 -171
  68. package/dist/v3/DevTool/components/ConsoleList/staticTips.ts +1145 -1145
  69. package/dist/v3/DevTool/components/DevToolButton/index.vue +42 -6
  70. package/dist/v3/DevTool/components/DevToolTitle/index.vue +24 -24
  71. package/dist/v3/DevTool/components/DevToolWindow/DevToolOverlay.vue +197 -197
  72. package/dist/v3/DevTool/components/DevToolWindow/hooks/dataUtils.ts +48 -48
  73. package/dist/v3/DevTool/components/DevToolWindow/hooks/useDevToolData.ts +411 -387
  74. package/dist/v3/DevTool/components/DevToolWindow/hooks/useDevToolHandlers.ts +644 -629
  75. package/dist/v3/DevTool/components/DevToolWindow/hooks/useDevToolOverlay.ts +201 -197
  76. package/dist/v3/DevTool/components/DevToolWindow/index.vue +27 -64
  77. package/dist/v3/DevTool/components/ElEvent/ElEventItem.vue +105 -105
  78. package/dist/v3/DevTool/components/ElEvent/index.vue +106 -106
  79. package/dist/v3/DevTool/components/Instance/components/InstanceTreeNode.vue +265 -265
  80. package/dist/v3/DevTool/components/Instance/flatten.ts +226 -226
  81. package/dist/v3/DevTool/components/Instance/index.vue +94 -94
  82. package/dist/v3/DevTool/components/Instance/registry.ts +49 -49
  83. package/dist/v3/DevTool/components/Instance/transformTree.ts +393 -375
  84. package/dist/v3/DevTool/components/Instance/transformTreeCtx.ts +268 -268
  85. package/dist/v3/DevTool/components/Instance/typing.d.ts +43 -43
  86. package/dist/v3/DevTool/components/InstanceDetail/index.vue +485 -485
  87. package/dist/v3/DevTool/components/JsonDetail/index.vue +70 -70
  88. package/dist/v3/DevTool/components/NFCList/NFCItem.vue +112 -112
  89. package/dist/v3/DevTool/components/NFCList/NFCTool.vue +454 -454
  90. package/dist/v3/DevTool/components/NFCList/const.ts +56 -56
  91. package/dist/v3/DevTool/components/NFCList/index.vue +94 -94
  92. package/dist/v3/DevTool/components/NetworkList/InterceptConfig.vue +624 -624
  93. package/dist/v3/DevTool/components/NetworkList/InterceptItem.vue +140 -140
  94. package/dist/v3/DevTool/components/NetworkList/NetworkDetail.vue +287 -287
  95. package/dist/v3/DevTool/components/NetworkList/NetworkIntercept.vue +88 -88
  96. package/dist/v3/DevTool/components/NetworkList/NetworkItem.vue +163 -163
  97. package/dist/v3/DevTool/components/NetworkList/NetworkSend.vue +589 -589
  98. package/dist/v3/DevTool/components/NetworkList/const.ts +4 -4
  99. package/dist/v3/DevTool/components/NetworkList/hooks/useNetworkForm.ts +86 -86
  100. package/dist/v3/DevTool/components/NetworkList/index.vue +160 -160
  101. package/dist/v3/DevTool/components/NetworkList/utils.ts +101 -101
  102. package/dist/v3/DevTool/components/Performance/index.vue +498 -498
  103. package/dist/v3/DevTool/components/Performance/modules/PerformanceMetrics.vue +153 -153
  104. package/dist/v3/DevTool/components/Performance/modules/usePerformanceChart.ts +460 -460
  105. package/dist/v3/DevTool/components/Performance/modules/usePerformanceData.ts +258 -258
  106. package/dist/v3/DevTool/components/PiniaList/index.vue +93 -93
  107. package/dist/v3/DevTool/components/RunJS/index.vue +148 -148
  108. package/dist/v3/DevTool/components/ScanCodeList/ScanCodeItem.vue +97 -97
  109. package/dist/v3/DevTool/components/ScanCodeList/index.vue +100 -100
  110. package/dist/v3/DevTool/components/SettingButton/index.vue +45 -45
  111. package/dist/v3/DevTool/components/SettingList/index.vue +226 -218
  112. package/dist/v3/DevTool/components/SettingList/modules/SettingBarrage.vue +320 -304
  113. package/dist/v3/DevTool/components/SettingList/modules/SettingDevTool.vue +212 -212
  114. package/dist/v3/DevTool/components/SettingList/modules/SettingInfo.vue +157 -157
  115. package/dist/v3/DevTool/components/SettingList/modules/SettingLanguage.vue +74 -74
  116. package/dist/v3/DevTool/components/SettingList/modules/SettingLog.vue +230 -230
  117. package/dist/v3/DevTool/components/SettingList/typing.d.ts +2 -2
  118. package/dist/v3/DevTool/components/SourceCode/Line.vue +127 -127
  119. package/dist/v3/DevTool/components/SourceCode/parseCode.ts +609 -609
  120. package/dist/v3/DevTool/components/StorageList/index.vue +174 -174
  121. package/dist/v3/DevTool/components/TransferList/TransferDetail.vue +268 -268
  122. package/dist/v3/DevTool/components/VuexList/index.vue +84 -84
  123. package/dist/v3/DevTool/index.vue +85 -138
  124. package/dist/v3/components/AppTransition/index.vue +156 -176
  125. package/dist/v3/components/AutoSizer/index.vue +192 -192
  126. package/dist/v3/components/AutoSizer/index1.vue +184 -184
  127. package/dist/v3/components/AutoSizer/utils.ts +49 -49
  128. package/dist/v3/components/Barrage/BarrageItem.vue +194 -137
  129. package/dist/v3/components/Barrage/index.vue +205 -202
  130. package/dist/v3/components/CircularButton/index.vue +84 -84
  131. package/dist/v3/components/CustomSwiper/CustomSwiperItem.vue +49 -49
  132. package/dist/v3/components/CustomSwiper/index.vue +104 -104
  133. package/dist/v3/components/DevErrorBoundary/index.vue +388 -0
  134. package/dist/v3/components/DraggableContainer/index.vue +186 -73
  135. package/dist/v3/components/Empty/index.vue +29 -29
  136. package/dist/v3/components/FilterSelect/index.vue +179 -179
  137. package/dist/v3/components/JsonPretty/components/Brackets/index.vue +27 -27
  138. package/dist/v3/components/JsonPretty/components/Carets/index.vue +59 -59
  139. package/dist/v3/components/JsonPretty/components/CheckController/index.vue +136 -136
  140. package/dist/v3/components/JsonPretty/components/TreeNode/index.vue +387 -387
  141. package/dist/v3/components/JsonPretty/hooks/useClipboard.ts +21 -21
  142. package/dist/v3/components/JsonPretty/hooks/useError.ts +21 -21
  143. package/dist/v3/components/JsonPretty/type.ts +127 -127
  144. package/dist/v3/components/JsonPretty/utils/index.ts +169 -169
  145. package/dist/v3/components/MovableContainer/index.vue +10 -4
  146. package/dist/v3/components/Pick/index.vue +321 -322
  147. package/dist/v3/components/Tag/index.vue +113 -113
  148. package/dist/v3/components/VirtualList/AutoSize.vue +40 -40
  149. package/dist/v3/components/VirtualList/index.vue +416 -416
  150. package/dist/v3/hooks/useBluetooth/index.ts +561 -561
  151. package/dist/v3/hooks/useContainerStyle.ts +95 -153
  152. package/dist/v3/hooks/useNFC/index.ts +107 -107
  153. package/dist/v3/hooks/useNFC/typing.d.ts +396 -396
  154. package/dist/v3/hooks/useNFC/useNFCAndroid.ts +966 -966
  155. package/dist/v3/hooks/useNFC/useNFCMpWeiXin.ts +812 -812
  156. package/dist/v3/hooks/useNFC/utils.ts +754 -754
  157. package/dist/v3/hooks/useRequest/index.ts +586 -586
  158. package/dist/v3/hooks/useRequest/utils.ts +267 -267
  159. package/dist/v3/hooks/useScanCode/index.ts +206 -206
  160. package/dist/v3/hooks/useWebsocket/index.ts +253 -253
  161. package/dist/v3/styles/theme.ts +12 -12
  162. package/package.json +70 -59
  163. package/dist/const.d.ts.map +0 -1
  164. package/dist/core-shared.d.ts.map +0 -1
  165. package/dist/core.d.ts.map +0 -1
  166. package/dist/i18n/index.d.ts.map +0 -1
  167. package/dist/i18n/instance.d.ts.map +0 -1
  168. package/dist/i18n/locales/en.d.ts.map +0 -1
  169. package/dist/i18n/locales/zh-Hans.d.ts.map +0 -1
  170. package/dist/index.d.ts.map +0 -1
  171. package/dist/modules/devConsole/index.d.ts.map +0 -1
  172. package/dist/modules/devEvent/index.d.ts.map +0 -1
  173. package/dist/modules/devIntercept/index.d.ts.map +0 -1
  174. package/dist/modules/devStore/index.d.ts.map +0 -1
  175. package/dist/modules/devToolInfo/index.d.ts.map +0 -1
  176. package/dist/plugins/uniDevTool/transform/transformApp.d.ts.map +0 -1
  177. package/dist/plugins/uniDevTool/transform/transformMain.d.ts.map +0 -1
  178. package/dist/plugins/uniDevTool/transform/transformVue.d.ts.map +0 -1
  179. package/dist/plugins/uniDevTool/uniDevTool.d.ts.map +0 -1
  180. package/dist/plugins/uniGlobalComponents/uniGlobalComponents.d.ts.map +0 -1
  181. package/dist/plugins/utils/index.d.ts.map +0 -1
  182. package/dist/type.d.ts.map +0 -1
  183. package/dist/utils/array.d.ts.map +0 -1
  184. package/dist/utils/date.d.ts.map +0 -1
  185. package/dist/utils/file.d.ts.map +0 -1
  186. package/dist/utils/function.d.ts.map +0 -1
  187. package/dist/utils/index.d.ts.map +0 -1
  188. package/dist/utils/ip.d.ts.map +0 -1
  189. package/dist/utils/language.d.ts.map +0 -1
  190. package/dist/utils/object.d.ts.map +0 -1
  191. package/dist/utils/openLink.d.ts.map +0 -1
  192. package/dist/utils/page.d.ts.map +0 -1
  193. package/dist/utils/platform.d.ts.map +0 -1
  194. package/dist/utils/string.d.ts.map +0 -1
  195. package/dist/utils/utils.d.ts.map +0 -1
@@ -1,287 +1,287 @@
1
- <template>
2
- <view class="network-detail" :style="customStyle">
3
- <view class="network-detail-control">
4
- <DevToolTitle>{{ t('network.requestDetail') }}</DevToolTitle>
5
- <Tag
6
- mode="info"
7
- v-for="item in translatedSelectItems"
8
- :active="item.value === currentSelect"
9
- :key="item.value"
10
- customStyle="margin-left: 16px"
11
- @click="onSelect(item)">
12
- {{ item.label }}
13
- </Tag>
14
- <CircularButton
15
- style="margin-left: auto"
16
- text="×"
17
- @click="emit('close')" />
18
- </view>
19
-
20
- <scroll-view
21
- scroll-y
22
- class="network-detail-base"
23
- :style="{ height: contentHeight - 32 + 'px' }"
24
- v-if="currentSelect === 'base'"
25
- @touchmove.stop>
26
- <!--
27
- @touchmove.stop
28
- [Intervention] Ignored attempt to cancel a touchmove event with cancelable=false, for example because scrolling is in progress and cannot be interrupted.
29
- -->
30
- <DevToolTitle>{{ t('network.general') }}</DevToolTitle>
31
- <view class="net-detail-item">
32
- <view class="net-detail-item-key">{{ t('network.requestUrl') }}:</view>
33
- <view class="net-detail-url" @click="onClickUrl">
34
- {{ network.url }}
35
- </view>
36
- </view>
37
- <view class="net-detail-item">
38
- <view class="net-detail-item-key">{{ t('network.method') }}:</view>
39
- <Tag mode="info">{{ network.method }}</Tag>
40
- </view>
41
- <view class="net-detail-item">
42
- <view class="net-detail-item-key">{{ t('network.statusCode') }}:</view>
43
- {{ network.status }}
44
-
45
- <Tag v-if="network.intercepted" mode="error" style="margin-left: 6px">
46
- {{ t('network.intercepted') }}
47
- </Tag>
48
- </view>
49
- <view class="net-detail-item">
50
- <view class="net-detail-item-key">{{ t('common.startTime') }}:</view>
51
- {{
52
- network.startTime
53
- ? formatDate(network.startTime, 'HH:mm:ss:SS')
54
- : '--:--:--'
55
- }}
56
- </view>
57
- <view class="net-detail-item">
58
- <view class="net-detail-item-key">{{ t('common.endTime') }}:</view>
59
- {{
60
- network.endTime
61
- ? formatDate(network.endTime, 'HH:mm:ss:SS')
62
- : '--:--:--'
63
- }}
64
- </view>
65
- <view class="net-detail-item">
66
- <view class="net-detail-item-key">{{ t('network.duration') }}:</view>
67
- {{ network.time ?? '--' }}
68
- </view>
69
- <view class="net-detail-item">
70
- <view class="net-detail-item-key">{{ t('network.size') }}:</view>
71
- {{ network.size ?? '--' }}
72
- </view>
73
-
74
- <view class="net-detail-item">
75
- <view class="net-detail-item-key">{{ t('network.sponsor') }}:</view>
76
- {{ network.sponsor }}
77
- </view>
78
-
79
- <DevToolTitle>{{ t('network.requestHeaders') }}</DevToolTitle>
80
- <template v-if="network.headers.requestHeader.length > 0">
81
- <view
82
- class="net-detail-item"
83
- v-for="item in network.headers.requestHeader"
84
- :key="item.key">
85
- <view class="net-detail-item-key">{{ item.key }}:</view>
86
- {{ item.value }}
87
- </view>
88
- </template>
89
- <view v-else>
90
- <Empty :text="t('network.noRequestHeaders')" />
91
- </view>
92
-
93
- <DevToolTitle>{{ t('network.responseHeaders') }}</DevToolTitle>
94
- <template v-if="network.headers.responseHeader.length > 0">
95
- <view
96
- class="net-detail-item"
97
- v-for="item in network.headers.responseHeader"
98
- :key="item.key">
99
- <view class="net-detail-item-key">{{ item.key }}:</view>
100
- {{ item.value }}
101
- </view>
102
- </template>
103
- <view v-else>
104
- <Empty :text="t('network.noResponseHeaders')" />
105
- </view>
106
- </scroll-view>
107
- <template v-if="currentSelect === 'payload'">
108
- <template v-if="payload?.type === 'object'">
109
- <JsonPretty
110
- virtual
111
- :data="payload.value"
112
- :height="contentHeight - 32"
113
- :nodeSelectable="() => false"
114
- :pathCollapsible="() => false" />
115
- </template>
116
- <view
117
- v-else-if="payload?.type === 'string'"
118
- class="network-detail-payload">
119
- {{ payload.value }}
120
- </view>
121
- <Empty v-else />
122
- </template>
123
-
124
- <template v-if="currentSelect === 'response'">
125
- <template v-if="response?.type === 'object'">
126
- <JsonPretty
127
- virtual
128
- :data="response.value"
129
- :height="contentHeight - 32"
130
- :nodeSelectable="() => false"
131
- :pathCollapsible="() => false" />
132
- </template>
133
- <view
134
- v-else-if="response?.type === 'string'"
135
- class="network-detail-payload">
136
- {{ response.value }}
137
- </view>
138
- <Empty v-else />
139
- </template>
140
- </view>
141
- </template>
142
- <script lang="ts" setup>
143
- import { ref, computed } from 'vue';
144
- import JsonPretty from '../../../components/JsonPretty/index.vue';
145
- import Tag from '../../../components/Tag/index.vue';
146
- import Empty from '../../../components/Empty/index.vue';
147
- import CircularButton from '../../../components/CircularButton/index.vue';
148
- import DevToolTitle from '../DevToolTitle/index.vue';
149
- import type { DevTool } from '../../../../type';
150
- import { formatDate } from '../../../../utils';
151
- import { useI18n } from '../../../../i18n';
152
-
153
- const { t } = useI18n();
154
- const props = defineProps<{
155
- network: DevTool.NetworkItem;
156
- zIndex?: number;
157
- contentHeight: number;
158
- customStyle?: Record<string, any>;
159
- }>();
160
- const emit = defineEmits<{ (e: 'close'): void }>();
161
- const translatedSelectItems = computed(() => [
162
- {
163
- label: t('common.base'),
164
- value: 'base',
165
- },
166
- {
167
- label: t('common.payload'),
168
- value: 'payload',
169
- },
170
- {
171
- label: t('common.response'),
172
- value: 'response',
173
- },
174
- ]);
175
-
176
- const currentSelect = ref('base');
177
-
178
- const payload = computed(() => {
179
- try {
180
- if (props.network.payload) {
181
- return {
182
- value: JSON.parse(props.network.payload),
183
- type: 'object',
184
- };
185
- }
186
- return {
187
- value: {},
188
- type: 'empty',
189
- };
190
- } catch (_error) {
191
- return {
192
- value: props.network.payload,
193
- type: props.network.payload ? 'string' : 'empty',
194
- };
195
- }
196
- });
197
-
198
- const response = computed(() => {
199
- try {
200
- if (props.network.response) {
201
- return {
202
- value: JSON.parse(JSON.stringify(props.network.response)),
203
- type: 'object',
204
- };
205
- }
206
- return {
207
- value: {},
208
- type: 'empty',
209
- };
210
- } catch (_error) {
211
- return {
212
- value: props.network.response,
213
- type: props.network.response ? 'string' : 'empty',
214
- };
215
- }
216
- });
217
-
218
- function onSelect(item: { label: string; value: string }) {
219
- currentSelect.value = item.value;
220
- }
221
-
222
- function onClickUrl() {
223
- uni.setClipboardData({
224
- data: props.network.url,
225
- success() {
226
- uni.showToast({
227
- title: t('common.copySuccess'),
228
- icon: 'none',
229
- });
230
- },
231
- fail() {
232
- uni.showToast({
233
- title: t('common.copyFail'),
234
- icon: 'none',
235
- });
236
- },
237
- });
238
- }
239
- </script>
240
- <style scoped>
241
- .network-detail {
242
- position: fixed;
243
- width: 100vw;
244
- height: 100%;
245
- top: 0;
246
- left: 0;
247
- padding: 0 16px;
248
- background-color: var(--dev-tool-bg3-color);
249
- box-sizing: border-box;
250
- }
251
-
252
- .network-detail-control {
253
- display: flex;
254
- align-items: center;
255
-
256
- /* margin-bottom: 4px; */
257
- height: 32px;
258
- border-bottom: 1px solid transparent;
259
- box-sizing: border-box;
260
- }
261
-
262
- .net-detail-url {
263
- text-decoration: underline;
264
- }
265
-
266
- .net-detail-item {
267
- display: flex;
268
- align-items: center;
269
- min-height: 28px;
270
- word-break: break-all;
271
- }
272
-
273
- .network-detail-base {
274
- overflow: auto;
275
- }
276
-
277
- .net-detail-item-key {
278
- white-space: nowrap;
279
- margin-right: 8px;
280
- color: var(--dev-tool-info-color);
281
- }
282
-
283
- .network-detail-payload {
284
- word-break: break-all;
285
- max-width: 100%;
286
- }
287
- </style>
1
+ <template>
2
+ <view class="network-detail" :style="customStyle">
3
+ <view class="network-detail-control">
4
+ <DevToolTitle>{{ t('network.requestDetail') }}</DevToolTitle>
5
+ <Tag
6
+ mode="info"
7
+ v-for="item in translatedSelectItems"
8
+ :active="item.value === currentSelect"
9
+ :key="item.value"
10
+ customStyle="margin-left: 16px"
11
+ @click="onSelect(item)">
12
+ {{ item.label }}
13
+ </Tag>
14
+ <CircularButton
15
+ style="margin-left: auto"
16
+ text="×"
17
+ @click="emit('close')" />
18
+ </view>
19
+
20
+ <scroll-view
21
+ scroll-y
22
+ class="network-detail-base"
23
+ :style="{ height: contentHeight - 32 + 'px' }"
24
+ v-if="currentSelect === 'base'"
25
+ @touchmove.stop>
26
+ <!--
27
+ @touchmove.stop
28
+ [Intervention] Ignored attempt to cancel a touchmove event with cancelable=false, for example because scrolling is in progress and cannot be interrupted.
29
+ -->
30
+ <DevToolTitle>{{ t('network.general') }}</DevToolTitle>
31
+ <view class="net-detail-item">
32
+ <view class="net-detail-item-key">{{ t('network.requestUrl') }}:</view>
33
+ <view class="net-detail-url" @click="onClickUrl">
34
+ {{ network.url }}
35
+ </view>
36
+ </view>
37
+ <view class="net-detail-item">
38
+ <view class="net-detail-item-key">{{ t('network.method') }}:</view>
39
+ <Tag mode="info">{{ network.method }}</Tag>
40
+ </view>
41
+ <view class="net-detail-item">
42
+ <view class="net-detail-item-key">{{ t('network.statusCode') }}:</view>
43
+ {{ network.status }}
44
+
45
+ <Tag v-if="network.intercepted" mode="error" style="margin-left: 6px">
46
+ {{ t('network.intercepted') }}
47
+ </Tag>
48
+ </view>
49
+ <view class="net-detail-item">
50
+ <view class="net-detail-item-key">{{ t('common.startTime') }}:</view>
51
+ {{
52
+ network.startTime
53
+ ? formatDate(network.startTime, 'HH:mm:ss:SS')
54
+ : '--:--:--'
55
+ }}
56
+ </view>
57
+ <view class="net-detail-item">
58
+ <view class="net-detail-item-key">{{ t('common.endTime') }}:</view>
59
+ {{
60
+ network.endTime
61
+ ? formatDate(network.endTime, 'HH:mm:ss:SS')
62
+ : '--:--:--'
63
+ }}
64
+ </view>
65
+ <view class="net-detail-item">
66
+ <view class="net-detail-item-key">{{ t('network.duration') }}:</view>
67
+ {{ network.time ?? '--' }}
68
+ </view>
69
+ <view class="net-detail-item">
70
+ <view class="net-detail-item-key">{{ t('network.size') }}:</view>
71
+ {{ network.size ?? '--' }}
72
+ </view>
73
+
74
+ <view class="net-detail-item">
75
+ <view class="net-detail-item-key">{{ t('network.sponsor') }}:</view>
76
+ {{ network.sponsor }}
77
+ </view>
78
+
79
+ <DevToolTitle>{{ t('network.requestHeaders') }}</DevToolTitle>
80
+ <template v-if="network.headers.requestHeader.length > 0">
81
+ <view
82
+ class="net-detail-item"
83
+ v-for="item in network.headers.requestHeader"
84
+ :key="item.key">
85
+ <view class="net-detail-item-key">{{ item.key }}:</view>
86
+ {{ item.value }}
87
+ </view>
88
+ </template>
89
+ <view v-else>
90
+ <Empty :text="t('network.noRequestHeaders')" />
91
+ </view>
92
+
93
+ <DevToolTitle>{{ t('network.responseHeaders') }}</DevToolTitle>
94
+ <template v-if="network.headers.responseHeader.length > 0">
95
+ <view
96
+ class="net-detail-item"
97
+ v-for="item in network.headers.responseHeader"
98
+ :key="item.key">
99
+ <view class="net-detail-item-key">{{ item.key }}:</view>
100
+ {{ item.value }}
101
+ </view>
102
+ </template>
103
+ <view v-else>
104
+ <Empty :text="t('network.noResponseHeaders')" />
105
+ </view>
106
+ </scroll-view>
107
+ <template v-if="currentSelect === 'payload'">
108
+ <template v-if="payload?.type === 'object'">
109
+ <JsonPretty
110
+ virtual
111
+ :data="payload.value"
112
+ :height="contentHeight - 32"
113
+ :nodeSelectable="() => false"
114
+ :pathCollapsible="() => false" />
115
+ </template>
116
+ <view
117
+ v-else-if="payload?.type === 'string'"
118
+ class="network-detail-payload">
119
+ {{ payload.value }}
120
+ </view>
121
+ <Empty v-else />
122
+ </template>
123
+
124
+ <template v-if="currentSelect === 'response'">
125
+ <template v-if="response?.type === 'object'">
126
+ <JsonPretty
127
+ virtual
128
+ :data="response.value"
129
+ :height="contentHeight - 32"
130
+ :nodeSelectable="() => false"
131
+ :pathCollapsible="() => false" />
132
+ </template>
133
+ <view
134
+ v-else-if="response?.type === 'string'"
135
+ class="network-detail-payload">
136
+ {{ response.value }}
137
+ </view>
138
+ <Empty v-else />
139
+ </template>
140
+ </view>
141
+ </template>
142
+ <script lang="ts" setup>
143
+ import { ref, computed } from 'vue';
144
+ import JsonPretty from '../../../components/JsonPretty/index.vue';
145
+ import Tag from '../../../components/Tag/index.vue';
146
+ import Empty from '../../../components/Empty/index.vue';
147
+ import CircularButton from '../../../components/CircularButton/index.vue';
148
+ import DevToolTitle from '../DevToolTitle/index.vue';
149
+ import type { DevTool } from '../../../../type';
150
+ import { formatDate } from '../../../../utils';
151
+ import { useI18n } from '../../../../i18n';
152
+
153
+ const { t } = useI18n();
154
+ const props = defineProps<{
155
+ network: DevTool.NetworkItem;
156
+ zIndex?: number;
157
+ contentHeight: number;
158
+ customStyle?: Record<string, any>;
159
+ }>();
160
+ const emit = defineEmits<{ (e: 'close'): void }>();
161
+ const translatedSelectItems = computed(() => [
162
+ {
163
+ label: t('common.base'),
164
+ value: 'base',
165
+ },
166
+ {
167
+ label: t('common.payload'),
168
+ value: 'payload',
169
+ },
170
+ {
171
+ label: t('common.response'),
172
+ value: 'response',
173
+ },
174
+ ]);
175
+
176
+ const currentSelect = ref('base');
177
+
178
+ const payload = computed(() => {
179
+ try {
180
+ if (props.network.payload) {
181
+ return {
182
+ value: JSON.parse(props.network.payload),
183
+ type: 'object',
184
+ };
185
+ }
186
+ return {
187
+ value: {},
188
+ type: 'empty',
189
+ };
190
+ } catch (_error) {
191
+ return {
192
+ value: props.network.payload,
193
+ type: props.network.payload ? 'string' : 'empty',
194
+ };
195
+ }
196
+ });
197
+
198
+ const response = computed(() => {
199
+ try {
200
+ if (props.network.response) {
201
+ return {
202
+ value: JSON.parse(JSON.stringify(props.network.response)),
203
+ type: 'object',
204
+ };
205
+ }
206
+ return {
207
+ value: {},
208
+ type: 'empty',
209
+ };
210
+ } catch (_error) {
211
+ return {
212
+ value: props.network.response,
213
+ type: props.network.response ? 'string' : 'empty',
214
+ };
215
+ }
216
+ });
217
+
218
+ function onSelect(item: { label: string; value: string }) {
219
+ currentSelect.value = item.value;
220
+ }
221
+
222
+ function onClickUrl() {
223
+ uni.setClipboardData({
224
+ data: props.network.url,
225
+ success() {
226
+ uni.showToast({
227
+ title: t('common.copySuccess'),
228
+ icon: 'none',
229
+ });
230
+ },
231
+ fail() {
232
+ uni.showToast({
233
+ title: t('common.copyFail'),
234
+ icon: 'none',
235
+ });
236
+ },
237
+ });
238
+ }
239
+ </script>
240
+ <style scoped>
241
+ .network-detail {
242
+ position: fixed;
243
+ width: 100vw;
244
+ height: 100%;
245
+ top: 0;
246
+ left: 0;
247
+ padding: 0 16px;
248
+ background-color: var(--dev-tool-bg3-color);
249
+ box-sizing: border-box;
250
+ }
251
+
252
+ .network-detail-control {
253
+ display: flex;
254
+ align-items: center;
255
+
256
+ /* margin-bottom: 4px; */
257
+ height: 32px;
258
+ border-bottom: 1px solid transparent;
259
+ box-sizing: border-box;
260
+ }
261
+
262
+ .net-detail-url {
263
+ text-decoration: underline;
264
+ }
265
+
266
+ .net-detail-item {
267
+ display: flex;
268
+ align-items: center;
269
+ min-height: 28px;
270
+ word-break: break-all;
271
+ }
272
+
273
+ .network-detail-base {
274
+ overflow: auto;
275
+ }
276
+
277
+ .net-detail-item-key {
278
+ white-space: nowrap;
279
+ margin-right: 8px;
280
+ color: var(--dev-tool-info-color);
281
+ }
282
+
283
+ .network-detail-payload {
284
+ word-break: break-all;
285
+ max-width: 100%;
286
+ }
287
+ </style>