react-native-network-lens 0.0.0-stage → 0.1.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 (180) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +208 -2
  3. package/lib/module/backHandler.js +31 -0
  4. package/lib/module/backHandler.js.map +1 -0
  5. package/lib/module/components/BodyViewer.js +213 -0
  6. package/lib/module/components/BodyViewer.js.map +1 -0
  7. package/lib/module/components/CodeList.js +104 -0
  8. package/lib/module/components/CodeList.js.map +1 -0
  9. package/lib/module/components/JsonTree/JsonTreeView.js +206 -0
  10. package/lib/module/components/JsonTree/JsonTreeView.js.map +1 -0
  11. package/lib/module/components/JsonTree/model.js +196 -0
  12. package/lib/module/components/JsonTree/model.js.map +1 -0
  13. package/lib/module/components/NetworkLens.js +110 -0
  14. package/lib/module/components/NetworkLens.js.map +1 -0
  15. package/lib/module/components/NetworkLensOverlay.js +158 -0
  16. package/lib/module/components/NetworkLensOverlay.js.map +1 -0
  17. package/lib/module/components/RawTextView.js +119 -0
  18. package/lib/module/components/RawTextView.js.map +1 -0
  19. package/lib/module/components/RequestDetails/RequestDetails.js +256 -0
  20. package/lib/module/components/RequestDetails/RequestDetails.js.map +1 -0
  21. package/lib/module/components/RequestList/FilterBar.js +138 -0
  22. package/lib/module/components/RequestList/FilterBar.js.map +1 -0
  23. package/lib/module/components/RequestList/RequestList.js +163 -0
  24. package/lib/module/components/RequestList/RequestList.js.map +1 -0
  25. package/lib/module/components/RequestList/RequestRow.js +161 -0
  26. package/lib/module/components/RequestList/RequestRow.js.map +1 -0
  27. package/lib/module/components/RequestList/filters.js +57 -0
  28. package/lib/module/components/RequestList/filters.js.map +1 -0
  29. package/lib/module/components/ui/ActionSheet.js +94 -0
  30. package/lib/module/components/ui/ActionSheet.js.map +1 -0
  31. package/lib/module/components/ui/Button.js +104 -0
  32. package/lib/module/components/ui/Button.js.map +1 -0
  33. package/lib/module/components/ui/Pill.js +53 -0
  34. package/lib/module/components/ui/Pill.js.map +1 -0
  35. package/lib/module/components/ui/SearchInput.js +77 -0
  36. package/lib/module/components/ui/SearchInput.js.map +1 -0
  37. package/lib/module/components/ui/Section.js +147 -0
  38. package/lib/module/components/ui/Section.js.map +1 -0
  39. package/lib/module/components/ui/SegmentedControl.js +65 -0
  40. package/lib/module/components/ui/SegmentedControl.js.map +1 -0
  41. package/lib/module/components/ui/index.js +9 -0
  42. package/lib/module/components/ui/index.js.map +1 -0
  43. package/lib/module/core/Logger.js +230 -0
  44. package/lib/module/core/Logger.js.map +1 -0
  45. package/lib/module/core/NetworkRequest.js +155 -0
  46. package/lib/module/core/NetworkRequest.js.map +1 -0
  47. package/lib/module/core/XHRInterceptor.js +104 -0
  48. package/lib/module/core/XHRInterceptor.js.map +1 -0
  49. package/lib/module/core/har.js +72 -0
  50. package/lib/module/core/har.js.map +1 -0
  51. package/lib/module/core/loggerSingleton.js +12 -0
  52. package/lib/module/core/loggerSingleton.js.map +1 -0
  53. package/lib/module/hooks.js +42 -0
  54. package/lib/module/hooks.js.map +1 -0
  55. package/lib/module/index.js +34 -0
  56. package/lib/module/index.js.map +1 -0
  57. package/lib/module/package.json +1 -0
  58. package/lib/module/theme.js +136 -0
  59. package/lib/module/theme.js.map +1 -0
  60. package/lib/module/types.js +2 -0
  61. package/lib/module/types.js.map +1 -0
  62. package/lib/module/utils/body.js +179 -0
  63. package/lib/module/utils/body.js.map +1 -0
  64. package/lib/module/utils/debounce.js +18 -0
  65. package/lib/module/utils/debounce.js.map +1 -0
  66. package/lib/module/utils/format.js +45 -0
  67. package/lib/module/utils/format.js.map +1 -0
  68. package/lib/module/utils/logger.js +6 -0
  69. package/lib/module/utils/logger.js.map +1 -0
  70. package/lib/module/utils/search.js +70 -0
  71. package/lib/module/utils/search.js.map +1 -0
  72. package/lib/module/utils/url.js +50 -0
  73. package/lib/module/utils/url.js.map +1 -0
  74. package/lib/typescript/package.json +1 -0
  75. package/lib/typescript/src/backHandler.d.ts +15 -0
  76. package/lib/typescript/src/backHandler.d.ts.map +1 -0
  77. package/lib/typescript/src/components/BodyViewer.d.ts +16 -0
  78. package/lib/typescript/src/components/BodyViewer.d.ts.map +1 -0
  79. package/lib/typescript/src/components/CodeList.d.ts +21 -0
  80. package/lib/typescript/src/components/CodeList.d.ts.map +1 -0
  81. package/lib/typescript/src/components/JsonTree/JsonTreeView.d.ts +21 -0
  82. package/lib/typescript/src/components/JsonTree/JsonTreeView.d.ts.map +1 -0
  83. package/lib/typescript/src/components/JsonTree/model.d.ts +53 -0
  84. package/lib/typescript/src/components/JsonTree/model.d.ts.map +1 -0
  85. package/lib/typescript/src/components/NetworkLens.d.ts +31 -0
  86. package/lib/typescript/src/components/NetworkLens.d.ts.map +1 -0
  87. package/lib/typescript/src/components/NetworkLensOverlay.d.ts +32 -0
  88. package/lib/typescript/src/components/NetworkLensOverlay.d.ts.map +1 -0
  89. package/lib/typescript/src/components/RawTextView.d.ts +14 -0
  90. package/lib/typescript/src/components/RawTextView.d.ts.map +1 -0
  91. package/lib/typescript/src/components/RequestDetails/RequestDetails.d.ts +9 -0
  92. package/lib/typescript/src/components/RequestDetails/RequestDetails.d.ts.map +1 -0
  93. package/lib/typescript/src/components/RequestList/FilterBar.d.ts +12 -0
  94. package/lib/typescript/src/components/RequestList/FilterBar.d.ts.map +1 -0
  95. package/lib/typescript/src/components/RequestList/RequestList.d.ts +18 -0
  96. package/lib/typescript/src/components/RequestList/RequestList.d.ts.map +1 -0
  97. package/lib/typescript/src/components/RequestList/RequestRow.d.ts +11 -0
  98. package/lib/typescript/src/components/RequestList/RequestRow.d.ts.map +1 -0
  99. package/lib/typescript/src/components/RequestList/filters.d.ts +17 -0
  100. package/lib/typescript/src/components/RequestList/filters.d.ts.map +1 -0
  101. package/lib/typescript/src/components/ui/ActionSheet.d.ts +15 -0
  102. package/lib/typescript/src/components/ui/ActionSheet.d.ts.map +1 -0
  103. package/lib/typescript/src/components/ui/Button.d.ts +21 -0
  104. package/lib/typescript/src/components/ui/Button.d.ts.map +1 -0
  105. package/lib/typescript/src/components/ui/Pill.d.ts +11 -0
  106. package/lib/typescript/src/components/ui/Pill.d.ts.map +1 -0
  107. package/lib/typescript/src/components/ui/SearchInput.d.ts +17 -0
  108. package/lib/typescript/src/components/ui/SearchInput.d.ts.map +1 -0
  109. package/lib/typescript/src/components/ui/Section.d.ts +16 -0
  110. package/lib/typescript/src/components/ui/Section.d.ts.map +1 -0
  111. package/lib/typescript/src/components/ui/SegmentedControl.d.ts +14 -0
  112. package/lib/typescript/src/components/ui/SegmentedControl.d.ts.map +1 -0
  113. package/lib/typescript/src/components/ui/index.d.ts +7 -0
  114. package/lib/typescript/src/components/ui/index.d.ts.map +1 -0
  115. package/lib/typescript/src/core/Logger.d.ts +48 -0
  116. package/lib/typescript/src/core/Logger.d.ts.map +1 -0
  117. package/lib/typescript/src/core/NetworkRequest.d.ts +48 -0
  118. package/lib/typescript/src/core/NetworkRequest.d.ts.map +1 -0
  119. package/lib/typescript/src/core/XHRInterceptor.d.ts +29 -0
  120. package/lib/typescript/src/core/XHRInterceptor.d.ts.map +1 -0
  121. package/lib/typescript/src/core/har.d.ts +65 -0
  122. package/lib/typescript/src/core/har.d.ts.map +1 -0
  123. package/lib/typescript/src/core/loggerSingleton.d.ts +9 -0
  124. package/lib/typescript/src/core/loggerSingleton.d.ts.map +1 -0
  125. package/lib/typescript/src/hooks.d.ts +11 -0
  126. package/lib/typescript/src/hooks.d.ts.map +1 -0
  127. package/lib/typescript/src/index.d.ts +33 -0
  128. package/lib/typescript/src/index.d.ts.map +1 -0
  129. package/lib/typescript/src/theme.d.ts +49 -0
  130. package/lib/typescript/src/theme.d.ts.map +1 -0
  131. package/lib/typescript/src/types.d.ts +80 -0
  132. package/lib/typescript/src/types.d.ts.map +1 -0
  133. package/lib/typescript/src/utils/body.d.ts +19 -0
  134. package/lib/typescript/src/utils/body.d.ts.map +1 -0
  135. package/lib/typescript/src/utils/debounce.d.ts +4 -0
  136. package/lib/typescript/src/utils/debounce.d.ts.map +1 -0
  137. package/lib/typescript/src/utils/format.d.ts +7 -0
  138. package/lib/typescript/src/utils/format.d.ts.map +1 -0
  139. package/lib/typescript/src/utils/logger.d.ts +2 -0
  140. package/lib/typescript/src/utils/logger.d.ts.map +1 -0
  141. package/lib/typescript/src/utils/search.d.ts +17 -0
  142. package/lib/typescript/src/utils/search.d.ts.map +1 -0
  143. package/lib/typescript/src/utils/url.d.ts +15 -0
  144. package/lib/typescript/src/utils/url.d.ts.map +1 -0
  145. package/package.json +186 -4
  146. package/src/backHandler.ts +29 -0
  147. package/src/components/BodyViewer.tsx +250 -0
  148. package/src/components/CodeList.tsx +120 -0
  149. package/src/components/JsonTree/JsonTreeView.tsx +304 -0
  150. package/src/components/JsonTree/model.ts +266 -0
  151. package/src/components/NetworkLens.tsx +176 -0
  152. package/src/components/NetworkLensOverlay.tsx +187 -0
  153. package/src/components/RawTextView.tsx +163 -0
  154. package/src/components/RequestDetails/RequestDetails.tsx +315 -0
  155. package/src/components/RequestList/FilterBar.tsx +168 -0
  156. package/src/components/RequestList/RequestList.tsx +226 -0
  157. package/src/components/RequestList/RequestRow.tsx +150 -0
  158. package/src/components/RequestList/filters.ts +98 -0
  159. package/src/components/ui/ActionSheet.tsx +109 -0
  160. package/src/components/ui/Button.tsx +124 -0
  161. package/src/components/ui/Pill.tsx +53 -0
  162. package/src/components/ui/SearchInput.tsx +97 -0
  163. package/src/components/ui/Section.tsx +133 -0
  164. package/src/components/ui/SegmentedControl.tsx +79 -0
  165. package/src/components/ui/index.ts +6 -0
  166. package/src/core/Logger.ts +293 -0
  167. package/src/core/NetworkRequest.ts +216 -0
  168. package/src/core/XHRInterceptor.ts +179 -0
  169. package/src/core/har.ts +71 -0
  170. package/src/core/loggerSingleton.ts +14 -0
  171. package/src/hooks.ts +51 -0
  172. package/src/index.tsx +56 -0
  173. package/src/theme.ts +174 -0
  174. package/src/types.ts +83 -0
  175. package/src/utils/body.ts +194 -0
  176. package/src/utils/debounce.ts +18 -0
  177. package/src/utils/format.ts +50 -0
  178. package/src/utils/logger.ts +3 -0
  179. package/src/utils/search.ts +72 -0
  180. package/src/utils/url.ts +59 -0
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+
3
+ import { useRef, useState } from 'react';
4
+ import { Modal, Platform, Pressable, StatusBar, StyleSheet, Text, View } from 'react-native';
5
+ import { useLoggerEnabled, useNetworkRequests } from "../hooks.js";
6
+ import { ThemeContext, useTheme } from "../theme.js";
7
+ import NetworkLens from "./NetworkLens.js";
8
+ import { IconButton } from "./ui/index.js";
9
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
10
+ /**
11
+ * Drop-in overlay: a floating badge with the number of captured requests that
12
+ * opens the inspector in a modal. Place it once near the root of your app.
13
+ */
14
+ const NetworkLensOverlay = ({
15
+ enabled = true,
16
+ theme = 'auto',
17
+ ...props
18
+ }) => {
19
+ if (!enabled) return null;
20
+ return /*#__PURE__*/_jsx(ThemeContext.Provider, {
21
+ value: theme,
22
+ children: /*#__PURE__*/_jsx(Overlay, {
23
+ ...props,
24
+ theme: theme
25
+ })
26
+ });
27
+ };
28
+ const Overlay = ({
29
+ theme,
30
+ position = 'bottom-right',
31
+ offset,
32
+ visible,
33
+ onVisibleChange,
34
+ hideButton,
35
+ title = 'Network',
36
+ ...lensProps
37
+ }) => {
38
+ const t = useTheme();
39
+ const lensRef = useRef(null);
40
+ const [internalVisible, setInternalVisible] = useState(false);
41
+ const open = visible ?? internalVisible;
42
+ const setOpen = next => {
43
+ if (visible === undefined) setInternalVisible(next);
44
+ onVisibleChange?.(next);
45
+ };
46
+ const requests = useNetworkRequests();
47
+ const loggingEnabled = useLoggerEnabled();
48
+ const hasErrors = requests.some(r => r.state === 'failed' || r.status >= 400);
49
+ const placement = {
50
+ [position.startsWith('bottom') ? 'bottom' : 'top']: offset?.y ?? 32,
51
+ [position.endsWith('right') ? 'right' : 'left']: offset?.x ?? 16
52
+ };
53
+ const header = /*#__PURE__*/_jsxs(View, {
54
+ style: styles.header,
55
+ children: [/*#__PURE__*/_jsx(Text, {
56
+ style: [styles.title, {
57
+ color: t.colors.text
58
+ }],
59
+ children: title
60
+ }), /*#__PURE__*/_jsx(IconButton, {
61
+ glyph: "\u2715",
62
+ accessibilityLabel: "Close network inspector",
63
+ onPress: () => setOpen(false)
64
+ })]
65
+ });
66
+ return /*#__PURE__*/_jsxs(_Fragment, {
67
+ children: [!hideButton && /*#__PURE__*/_jsxs(Pressable, {
68
+ accessibilityRole: "button",
69
+ accessibilityLabel: `Open network inspector, ${requests.length} requests`,
70
+ onPress: () => setOpen(true),
71
+ style: ({
72
+ pressed
73
+ }) => [styles.fab, placement, {
74
+ backgroundColor: hasErrors ? t.colors.statusBad : t.colors.primary
75
+ }, pressed && styles.fabPressed],
76
+ children: [/*#__PURE__*/_jsx(Text, {
77
+ style: [styles.fabCount, {
78
+ color: t.colors.onPrimary
79
+ }],
80
+ children: loggingEnabled ? requests.length : '•'
81
+ }), /*#__PURE__*/_jsx(Text, {
82
+ style: [styles.fabCaption, {
83
+ color: t.colors.onPrimary
84
+ }],
85
+ children: "NET"
86
+ })]
87
+ }), /*#__PURE__*/_jsx(Modal, {
88
+ visible: open,
89
+ animationType: "slide",
90
+ presentationStyle: Platform.OS === 'ios' ? 'pageSheet' : 'fullScreen',
91
+ onRequestClose: () => {
92
+ // Android back button: step back inside the inspector first, then close.
93
+ if (!lensRef.current?.goBack()) setOpen(false);
94
+ },
95
+ children: /*#__PURE__*/_jsx(View, {
96
+ style: [styles.sheet, {
97
+ backgroundColor: t.colors.surface
98
+ }],
99
+ children: /*#__PURE__*/_jsx(NetworkLens, {
100
+ ref: lensRef,
101
+ ...lensProps,
102
+ theme: theme,
103
+ header: header
104
+ })
105
+ })
106
+ })]
107
+ });
108
+ };
109
+ const styles = StyleSheet.create({
110
+ fab: {
111
+ position: 'absolute',
112
+ width: 56,
113
+ height: 56,
114
+ borderRadius: 28,
115
+ alignItems: 'center',
116
+ justifyContent: 'center',
117
+ elevation: 6,
118
+ shadowColor: '#000',
119
+ shadowOpacity: 0.25,
120
+ shadowRadius: 6,
121
+ shadowOffset: {
122
+ width: 0,
123
+ height: 3
124
+ },
125
+ zIndex: 9999
126
+ },
127
+ fabPressed: {
128
+ opacity: 0.8
129
+ },
130
+ fabCount: {
131
+ fontSize: 15,
132
+ fontWeight: '800',
133
+ fontVariant: ['tabular-nums']
134
+ },
135
+ fabCaption: {
136
+ fontSize: 9,
137
+ fontWeight: '700',
138
+ letterSpacing: 1,
139
+ marginTop: -2
140
+ },
141
+ sheet: {
142
+ flex: 1,
143
+ paddingTop: Platform.OS === 'android' ? StatusBar.currentHeight ?? 0 : 0
144
+ },
145
+ header: {
146
+ flexDirection: 'row',
147
+ alignItems: 'center',
148
+ justifyContent: 'space-between',
149
+ paddingLeft: 8,
150
+ paddingBottom: 6
151
+ },
152
+ title: {
153
+ fontSize: 17,
154
+ fontWeight: '700'
155
+ }
156
+ });
157
+ export default NetworkLensOverlay;
158
+ //# sourceMappingURL=NetworkLensOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useRef","useState","Modal","Platform","Pressable","StatusBar","StyleSheet","Text","View","useLoggerEnabled","useNetworkRequests","ThemeContext","useTheme","NetworkLens","IconButton","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","NetworkLensOverlay","enabled","theme","props","Provider","value","children","Overlay","position","offset","visible","onVisibleChange","hideButton","title","lensProps","t","lensRef","internalVisible","setInternalVisible","open","setOpen","next","undefined","requests","loggingEnabled","hasErrors","some","r","state","status","placement","startsWith","y","endsWith","x","header","style","styles","color","colors","text","glyph","accessibilityLabel","onPress","accessibilityRole","length","pressed","fab","backgroundColor","statusBad","primary","fabPressed","fabCount","onPrimary","fabCaption","animationType","presentationStyle","OS","onRequestClose","current","goBack","sheet","surface","ref","create","width","height","borderRadius","alignItems","justifyContent","elevation","shadowColor","shadowOpacity","shadowRadius","shadowOffset","zIndex","opacity","fontSize","fontWeight","fontVariant","letterSpacing","marginTop","flex","paddingTop","currentHeight","flexDirection","paddingLeft","paddingBottom"],"sourceRoot":"../../../src","sources":["components/NetworkLensOverlay.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ import React, { useCallback, useEffect, useMemo } from 'react';
4
+ import { StyleSheet, Text, View } from 'react-native';
5
+ import { useTheme } from "../theme.js";
6
+ import { findLineMatches, splitHighlights, toLines } from "../utils/search.js";
7
+ import { CodeList } from "./CodeList.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ /**
10
+ * Renders text one line per row with line numbers, no wrapping and horizontal
11
+ * scrolling, so pretty-printed JSON keeps its indentation structure intact.
12
+ */
13
+ const RawTextView = ({
14
+ text,
15
+ query = '',
16
+ activeMatch = 0,
17
+ onMatchCountChange
18
+ }) => {
19
+ const theme = useTheme();
20
+ const lines = useMemo(() => toLines(text), [text]);
21
+ const matches = useMemo(() => findLineMatches(lines, query), [lines, query]);
22
+ useEffect(() => {
23
+ onMatchCountChange?.(matches.length);
24
+ }, [matches.length, onMatchCountChange]);
25
+ const matchedLines = useMemo(() => new Set(matches.map(m => m.line)), [matches]);
26
+ const activeLine = matches[Math.min(activeMatch, Math.max(matches.length - 1, 0))]?.line;
27
+ const gutterChars = String(lines.length).length;
28
+ const charWidth = theme.sizes.codeFontSize * 0.62;
29
+ const contentWidth = useMemo(() => {
30
+ let max = 0;
31
+ for (const line of lines) if (line.length > max) max = line.length;
32
+ return (max + gutterChars + 3) * charWidth + 32;
33
+ }, [lines, gutterChars, charWidth]);
34
+ const rowHeight = theme.sizes.codeLineHeight;
35
+ const renderItem = useCallback(({
36
+ item,
37
+ index
38
+ }) => /*#__PURE__*/_jsx(Line, {
39
+ text: item,
40
+ index: index,
41
+ gutterChars: gutterChars,
42
+ theme: theme,
43
+ query: query,
44
+ matched: matchedLines.has(index),
45
+ active: index === activeLine,
46
+ height: rowHeight
47
+ }), [gutterChars, theme, query, matchedLines, activeLine, rowHeight]);
48
+ return /*#__PURE__*/_jsx(CodeList, {
49
+ data: lines,
50
+ renderItem: renderItem,
51
+ keyExtractor: keyExtractor,
52
+ contentWidth: contentWidth,
53
+ rowHeight: rowHeight,
54
+ activeIndex: activeLine,
55
+ extraData: `${query}:${activeLine ?? ''}`
56
+ });
57
+ };
58
+ const keyExtractor = (_, index) => String(index);
59
+ const Line = /*#__PURE__*/React.memo(function LineInner({
60
+ text,
61
+ index,
62
+ gutterChars,
63
+ theme,
64
+ query,
65
+ matched,
66
+ active,
67
+ height
68
+ }) {
69
+ const codeStyle = {
70
+ fontFamily: theme.fonts.mono,
71
+ fontSize: theme.sizes.codeFontSize,
72
+ lineHeight: theme.sizes.codeLineHeight
73
+ };
74
+ const segments = matched ? splitHighlights(text, query) : null;
75
+ return /*#__PURE__*/_jsxs(View, {
76
+ style: [styles.line, {
77
+ height
78
+ }, active ? {
79
+ backgroundColor: `${theme.colors.highlightActive}33`
80
+ } : matched ? {
81
+ backgroundColor: `${theme.colors.highlight}55`
82
+ } : null],
83
+ children: [/*#__PURE__*/_jsx(Text, {
84
+ style: [codeStyle, styles.gutter, {
85
+ color: theme.colors.textMuted,
86
+ width: (gutterChars + 1) * theme.sizes.codeFontSize * 0.62 + 8
87
+ }],
88
+ children: index + 1
89
+ }), /*#__PURE__*/_jsx(Text, {
90
+ numberOfLines: 1,
91
+ selectable: true,
92
+ style: [codeStyle, {
93
+ color: theme.colors.text
94
+ }],
95
+ children: segments ? segments.map((segment, i) => /*#__PURE__*/_jsx(Text, {
96
+ style: segment.highlighted ? {
97
+ backgroundColor: active ? theme.colors.highlightActive : theme.colors.highlight,
98
+ color: theme.colors.onHighlight
99
+ } : undefined,
100
+ children: segment.text
101
+ }, i)) : text
102
+ })]
103
+ });
104
+ });
105
+ const styles = StyleSheet.create({
106
+ line: {
107
+ flexDirection: 'row',
108
+ alignItems: 'center',
109
+ paddingRight: 16
110
+ },
111
+ gutter: {
112
+ textAlign: 'right',
113
+ paddingRight: 8,
114
+ marginRight: 8,
115
+ opacity: 0.8
116
+ }
117
+ });
118
+ export default RawTextView;
119
+ //# sourceMappingURL=RawTextView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","StyleSheet","Text","View","useTheme","findLineMatches","splitHighlights","toLines","CodeList","jsx","_jsx","jsxs","_jsxs","RawTextView","text","query","activeMatch","onMatchCountChange","theme","lines","matches","length","matchedLines","Set","map","m","line","activeLine","Math","min","max","gutterChars","String","charWidth","sizes","codeFontSize","contentWidth","rowHeight","codeLineHeight","renderItem","item","index","Line","matched","has","active","height","data","keyExtractor","activeIndex","extraData","_","memo","LineInner","codeStyle","fontFamily","fonts","mono","fontSize","lineHeight","segments","style","styles","backgroundColor","colors","highlightActive","highlight","children","gutter","color","textMuted","width","numberOfLines","selectable","segment","i","highlighted","onHighlight","undefined","create","flexDirection","alignItems","paddingRight","textAlign","marginRight","opacity"],"sourceRoot":"../../../src","sources":["components/RawTextView.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+
3
+ import { useState } from 'react';
4
+ import { Pressable, ScrollView, Share, StyleSheet, Text, View } from 'react-native';
5
+ import { useAsyncValue } from "../../hooks.js";
6
+ import { methodColor, statusColor, useTheme } from "../../theme.js";
7
+ import { formatBytes, formatDateTime, formatDuration, formatTime } from "../../utils/format.js";
8
+ import BodyViewer from "../BodyViewer.js";
9
+ import { IconButton, KeyValueList, Pill, Section, SegmentedControl, TextButton } from "../ui/index.js";
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ const share = text => Share.share({
12
+ message: text
13
+ }).catch(() => undefined);
14
+ const statusLabel = request => {
15
+ if (request.state === 'failed') return (request.failureReason ?? 'failed').toUpperCase();
16
+ return request.status > 0 ? String(request.status) : 'PENDING';
17
+ };
18
+ const RequestDetails = ({
19
+ request,
20
+ onClose,
21
+ copyToClipboard
22
+ }) => {
23
+ const theme = useTheme();
24
+ const [tab, setTab] = useState('overview');
25
+ const [urlExpanded, setUrlExpanded] = useState(false);
26
+ const failed = request.state === 'failed';
27
+ const requestBody = request.getRequestBody();
28
+ const {
29
+ value: responseBody,
30
+ loading
31
+ } = useAsyncValue(() => request.getResponseBody(), [request, request.updatedAt]);
32
+ const summary = [request.duration >= 0 && formatDuration(request.duration), request.responseSize > 0 && formatBytes(request.responseSize), formatTime(request.startTime, true)].filter(Boolean).join(' · ');
33
+ return /*#__PURE__*/_jsxs(View, {
34
+ style: [styles.container, {
35
+ backgroundColor: theme.colors.background
36
+ }],
37
+ children: [/*#__PURE__*/_jsxs(View, {
38
+ style: [styles.header, {
39
+ backgroundColor: theme.colors.surface,
40
+ borderBottomColor: theme.colors.border
41
+ }],
42
+ children: [/*#__PURE__*/_jsxs(View, {
43
+ style: styles.headerRow,
44
+ children: [/*#__PURE__*/_jsx(Pill, {
45
+ label: request.method,
46
+ color: methodColor(theme, request.method),
47
+ filled: true,
48
+ style: styles.headerPill
49
+ }), /*#__PURE__*/_jsx(Pill, {
50
+ label: statusLabel(request),
51
+ color: statusColor(theme, request.status, failed),
52
+ style: styles.headerPill
53
+ }), /*#__PURE__*/_jsx(Text, {
54
+ style: [styles.summary, {
55
+ color: theme.colors.textMuted
56
+ }],
57
+ numberOfLines: 1,
58
+ children: summary
59
+ }), /*#__PURE__*/_jsx(IconButton, {
60
+ glyph: "\u2715",
61
+ accessibilityLabel: "Back to list",
62
+ onPress: onClose
63
+ })]
64
+ }), /*#__PURE__*/_jsx(Pressable, {
65
+ onPress: () => setUrlExpanded(v => !v),
66
+ accessibilityRole: "button",
67
+ accessibilityLabel: "Toggle full URL",
68
+ children: /*#__PURE__*/_jsx(Text, {
69
+ selectable: true,
70
+ numberOfLines: urlExpanded ? undefined : 2,
71
+ style: [styles.url, {
72
+ color: theme.colors.text
73
+ }],
74
+ children: request.url
75
+ })
76
+ }), request.gqlOperation ? /*#__PURE__*/_jsxs(Text, {
77
+ style: [styles.gql, {
78
+ color: theme.colors.primary
79
+ }],
80
+ children: ["gql: ", request.gqlOperation]
81
+ }) : null, /*#__PURE__*/_jsx(SegmentedControl, {
82
+ value: tab,
83
+ onChange: setTab,
84
+ style: styles.tabs,
85
+ options: [{
86
+ value: 'overview',
87
+ label: 'Overview'
88
+ }, {
89
+ value: 'request',
90
+ label: 'Request',
91
+ badge: requestBody.kind !== 'empty'
92
+ }, {
93
+ value: 'response',
94
+ label: 'Response',
95
+ badge: !!responseBody && responseBody.kind !== 'empty'
96
+ }]
97
+ })]
98
+ }), tab === 'overview' && /*#__PURE__*/_jsx(OverviewTab, {
99
+ request: request,
100
+ copyToClipboard: copyToClipboard
101
+ }), tab === 'request' && /*#__PURE__*/_jsx(BodyViewer, {
102
+ body: requestBody,
103
+ emptyTitle: "No request body",
104
+ emptySubtitle: `${request.method} requests usually carry no payload.`,
105
+ copyToClipboard: copyToClipboard
106
+ }), tab === 'response' && /*#__PURE__*/_jsx(BodyViewer, {
107
+ body: responseBody,
108
+ loading: loading || request.state === 'pending',
109
+ emptyTitle: failed ? `Request ${request.failureReason ?? 'failed'}` : 'No response body',
110
+ emptySubtitle: failed ? 'The server never answered, so there is nothing to show.' : undefined,
111
+ copyToClipboard: copyToClipboard
112
+ })]
113
+ });
114
+ };
115
+ const OverviewTab = ({
116
+ request,
117
+ copyToClipboard
118
+ }) => {
119
+ const theme = useTheme();
120
+ const query = Object.entries(request.parsedUrl.query);
121
+ const general = [['URL', request.url], ['Method', request.method], ['Status', request.state === 'failed' ? `Failed (${request.failureReason ?? 'error'})` : statusLabel(request)], ['Duration', request.duration >= 0 ? formatDuration(request.duration) : '—'], ['Started', request.startTime ? formatDateTime(request.startTime) : '—'], ['Response size', request.responseSize > 0 ? formatBytes(request.responseSize) : '—'], ['Content type', request.responseContentType || '—']];
122
+ if (request.responseURL && request.responseURL !== request.url) {
123
+ general.push(['Final URL', request.responseURL]);
124
+ }
125
+ const actions = text => /*#__PURE__*/_jsxs(View, {
126
+ style: styles.sectionActions,
127
+ children: [copyToClipboard && /*#__PURE__*/_jsx(TextButton, {
128
+ label: "Copy",
129
+ onPress: () => copyToClipboard(text),
130
+ style: styles.smallButton
131
+ }), /*#__PURE__*/_jsx(TextButton, {
132
+ label: "Share",
133
+ onPress: () => share(text),
134
+ style: styles.smallButton
135
+ })]
136
+ });
137
+ return /*#__PURE__*/_jsxs(ScrollView, {
138
+ contentContainerStyle: styles.overview,
139
+ keyboardShouldPersistTaps: "handled",
140
+ children: [/*#__PURE__*/_jsx(Section, {
141
+ title: "General",
142
+ children: /*#__PURE__*/_jsx(KeyValueList, {
143
+ entries: general
144
+ })
145
+ }), query.length > 0 && /*#__PURE__*/_jsx(Section, {
146
+ title: "Query parameters",
147
+ right: actions(JSON.stringify(request.parsedUrl.query, null, 2)),
148
+ children: /*#__PURE__*/_jsx(KeyValueList, {
149
+ entries: query,
150
+ mono: true
151
+ })
152
+ }), /*#__PURE__*/_jsx(Section, {
153
+ title: `Request headers (${Object.keys(request.requestHeaders).length})`,
154
+ right: actions(JSON.stringify(request.requestHeaders, null, 2)),
155
+ children: /*#__PURE__*/_jsx(KeyValueList, {
156
+ entries: Object.entries(request.requestHeaders),
157
+ mono: true,
158
+ emptyLabel: "No request headers"
159
+ })
160
+ }), /*#__PURE__*/_jsx(Section, {
161
+ title: `Response headers (${Object.keys(request.responseHeaders).length})`,
162
+ right: actions(JSON.stringify(request.responseHeaders, null, 2)),
163
+ children: /*#__PURE__*/_jsx(KeyValueList, {
164
+ entries: Object.entries(request.responseHeaders),
165
+ mono: true,
166
+ emptyLabel: "No response headers yet"
167
+ })
168
+ }), /*#__PURE__*/_jsx(Section, {
169
+ title: "Export",
170
+ children: /*#__PURE__*/_jsxs(View, {
171
+ style: styles.exportRow,
172
+ children: [/*#__PURE__*/_jsx(TextButton, {
173
+ label: "Share as cURL",
174
+ onPress: () => share(request.curl),
175
+ style: styles.exportButton
176
+ }), /*#__PURE__*/_jsx(TextButton, {
177
+ label: "Share full request",
178
+ onPress: async () => share(JSON.stringify(await request.toJSON(), null, 2)),
179
+ style: styles.exportButton
180
+ }), copyToClipboard && /*#__PURE__*/_jsx(TextButton, {
181
+ label: "Copy cURL",
182
+ onPress: () => copyToClipboard(request.curl),
183
+ style: styles.exportButton
184
+ })]
185
+ })
186
+ }), /*#__PURE__*/_jsxs(Text, {
187
+ style: [styles.footer, {
188
+ color: theme.colors.textMuted
189
+ }],
190
+ children: ["Request #", request.id]
191
+ })]
192
+ });
193
+ };
194
+ const styles = StyleSheet.create({
195
+ container: {
196
+ flex: 1
197
+ },
198
+ header: {
199
+ paddingHorizontal: 12,
200
+ paddingVertical: 10,
201
+ borderBottomWidth: StyleSheet.hairlineWidth
202
+ },
203
+ headerRow: {
204
+ flexDirection: 'row',
205
+ alignItems: 'center'
206
+ },
207
+ headerPill: {
208
+ marginRight: 8
209
+ },
210
+ summary: {
211
+ flex: 1,
212
+ fontSize: 12,
213
+ fontVariant: ['tabular-nums']
214
+ },
215
+ url: {
216
+ fontSize: 14,
217
+ marginTop: 8,
218
+ lineHeight: 19
219
+ },
220
+ gql: {
221
+ fontSize: 12,
222
+ marginTop: 4,
223
+ fontWeight: '600'
224
+ },
225
+ tabs: {
226
+ marginTop: 10
227
+ },
228
+ overview: {
229
+ paddingBottom: 24
230
+ },
231
+ sectionActions: {
232
+ flexDirection: 'row'
233
+ },
234
+ smallButton: {
235
+ paddingVertical: 3,
236
+ paddingHorizontal: 8,
237
+ marginLeft: 6
238
+ },
239
+ exportRow: {
240
+ flexDirection: 'row',
241
+ flexWrap: 'wrap',
242
+ paddingVertical: 8
243
+ },
244
+ exportButton: {
245
+ paddingVertical: 8,
246
+ marginRight: 8,
247
+ marginBottom: 8
248
+ },
249
+ footer: {
250
+ textAlign: 'center',
251
+ fontSize: 11,
252
+ marginTop: 20
253
+ }
254
+ });
255
+ export default RequestDetails;
256
+ //# sourceMappingURL=RequestDetails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","Pressable","ScrollView","Share","StyleSheet","Text","View","useAsyncValue","methodColor","statusColor","useTheme","formatBytes","formatDateTime","formatDuration","formatTime","BodyViewer","IconButton","KeyValueList","Pill","Section","SegmentedControl","TextButton","jsx","_jsx","jsxs","_jsxs","share","text","message","catch","undefined","statusLabel","request","state","failureReason","toUpperCase","status","String","RequestDetails","onClose","copyToClipboard","theme","tab","setTab","urlExpanded","setUrlExpanded","failed","requestBody","getRequestBody","value","responseBody","loading","getResponseBody","updatedAt","summary","duration","responseSize","startTime","filter","Boolean","join","style","styles","container","backgroundColor","colors","background","children","header","surface","borderBottomColor","border","headerRow","label","method","color","filled","headerPill","textMuted","numberOfLines","glyph","accessibilityLabel","onPress","v","accessibilityRole","selectable","url","gqlOperation","gql","primary","onChange","tabs","options","badge","kind","OverviewTab","body","emptyTitle","emptySubtitle","query","Object","entries","parsedUrl","general","responseContentType","responseURL","push","actions","sectionActions","smallButton","contentContainerStyle","overview","keyboardShouldPersistTaps","title","length","right","JSON","stringify","mono","keys","requestHeaders","emptyLabel","responseHeaders","exportRow","curl","exportButton","toJSON","footer","id","create","flex","paddingHorizontal","paddingVertical","borderBottomWidth","hairlineWidth","flexDirection","alignItems","marginRight","fontSize","fontVariant","marginTop","lineHeight","fontWeight","paddingBottom","marginLeft","flexWrap","marginBottom","textAlign"],"sourceRoot":"../../../../src","sources":["components/RequestDetails/RequestDetails.tsx"],"mappings":"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","ignoreList":[]}