flow-debugger 1.9.3 → 1.9.4
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.
- package/EXAMPLES.md +38 -0
- package/README.md +391 -266
- package/dist/cjs/index.js +10 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react_native.js +308 -0
- package/dist/cjs/react_native.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/react_native.js +298 -0
- package/dist/esm/react_native.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/react_native.d.ts +54 -0
- package/dist/types/react_native.d.ts.map +1 -0
- package/package.json +126 -121
- package/python-sdk/fastapi_middleware.py +217 -0
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,gEAAgE;AAChE,mCAAmC;AACnC,gEAAgE;;;AAEhE,OAAO;AACP,kDAAgE;AAAvD,0GAAA,WAAW,OAAA;AAAE,4GAAA,aAAa,OAAA;AACnC,gDAA2E;AAAlE,sGAAA,QAAQ,OAAA;AAAE,2GAAA,aAAa,OAAA;AAAE,2GAAA,aAAa,OAAA;AAC/C,8CAAmD;AAA1C,4GAAA,eAAe,OAAA;AACxB,8CAA6C;AAApC,sGAAA,SAAS,OAAA;AAClB,sDAAqD;AAA5C,8GAAA,aAAa,OAAA;AACtB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,4CAAgE;AAAvD,0GAAA,cAAc,OAAA;AAAE,yGAAA,aAAa,OAAA;AAkBtC,sCAA8C;AAArC,uGAAA,cAAc,OAAA;AAEvB,eAAe;AACf,8CAAsE;AAA7D,oGAAA,WAAW,OAAA;AAAE,0GAAA,iBAAiB,OAAA;AACvC,8CAAmD;AAA1C,oGAAA,WAAW,OAAA;AACpB,oDAAmD;AAA1C,oGAAA,QAAQ,OAAA;AACjB,8CAAmD;AAA1C,oGAAA,WAAW,OAAA;AACpB,8CAAsE;AAA7D,oGAAA,WAAW,OAAA;AAAE,0GAAA,iBAAiB,OAAA;AACvC,8CAAmD;AAA1C,oGAAA,WAAW,OAAA;AAEpB,aAAa;AACb,gDAAoD;AAA3C,uGAAA,YAAY,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,gEAAgE;AAChE,mCAAmC;AACnC,gEAAgE;;;AAEhE,OAAO;AACP,kDAAgE;AAAvD,0GAAA,WAAW,OAAA;AAAE,4GAAA,aAAa,OAAA;AACnC,gDAA2E;AAAlE,sGAAA,QAAQ,OAAA;AAAE,2GAAA,aAAa,OAAA;AAAE,2GAAA,aAAa,OAAA;AAC/C,8CAAmD;AAA1C,4GAAA,eAAe,OAAA;AACxB,8CAA6C;AAApC,sGAAA,SAAS,OAAA;AAClB,sDAAqD;AAA5C,8GAAA,aAAa,OAAA;AACtB,0CAAyC;AAAhC,kGAAA,OAAO,OAAA;AAChB,4CAAgE;AAAvD,0GAAA,cAAc,OAAA;AAAE,yGAAA,aAAa,OAAA;AAkBtC,sCAA8C;AAArC,uGAAA,cAAc,OAAA;AAEvB,eAAe;AACf,8CAAsE;AAA7D,oGAAA,WAAW,OAAA;AAAE,0GAAA,iBAAiB,OAAA;AACvC,8CAAmD;AAA1C,oGAAA,WAAW,OAAA;AACpB,oDAAmD;AAA1C,oGAAA,QAAQ,OAAA;AACjB,8CAAmD;AAA1C,oGAAA,WAAW,OAAA;AACpB,8CAAsE;AAA7D,oGAAA,WAAW,OAAA;AAAE,0GAAA,iBAAiB,OAAA;AACvC,8CAAmD;AAA1C,oGAAA,WAAW,OAAA;AAEpB,aAAa;AACb,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAGrB,eAAe;AACf,+CAQwB;AAPpB,gHAAA,gBAAgB,OAAA;AAChB,2GAAA,WAAW,OAAA;AACX,6HAAA,6BAA6B,OAAA;AAC7B,sHAAA,sBAAsB,OAAA;AACtB,sHAAA,sBAAsB,OAAA;AACtB,mHAAA,mBAAmB,OAAA;AACnB,4GAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ─────────────────────────────────────────────────────────────
|
|
3
|
+
// flow-debugger — React Native Integration
|
|
4
|
+
// Provides request tracing and manual step tracking for React Native apps
|
|
5
|
+
// ─────────────────────────────────────────────────────────────
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.useDebugger = exports.DebuggerProvider = void 0;
|
|
8
|
+
exports.initializeReactNativeDebugger = initializeReactNativeDebugger;
|
|
9
|
+
exports.getReactNativeDebugger = getReactNativeDebugger;
|
|
10
|
+
exports.withDebugger = withDebugger;
|
|
11
|
+
exports.createFetchInterceptor = createFetchInterceptor;
|
|
12
|
+
exports.traceAsyncOperation = traceAsyncOperation;
|
|
13
|
+
// Conditional React imports to avoid build errors when React is not available
|
|
14
|
+
let React;
|
|
15
|
+
let useState;
|
|
16
|
+
let useEffect;
|
|
17
|
+
let createContext;
|
|
18
|
+
let useContext;
|
|
19
|
+
let useCallback;
|
|
20
|
+
let AsyncStorage;
|
|
21
|
+
try {
|
|
22
|
+
const reactModule = require('react');
|
|
23
|
+
React = reactModule;
|
|
24
|
+
useState = reactModule.useState;
|
|
25
|
+
useEffect = reactModule.useEffect;
|
|
26
|
+
createContext = reactModule.createContext;
|
|
27
|
+
useContext = reactModule.useContext;
|
|
28
|
+
useCallback = reactModule.useCallback;
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
// React not available, define stubs
|
|
32
|
+
useState = () => [null, () => { }];
|
|
33
|
+
useEffect = () => { };
|
|
34
|
+
createContext = () => ({ Provider: () => null, Consumer: () => null });
|
|
35
|
+
useContext = () => undefined;
|
|
36
|
+
useCallback = (fn) => fn;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
AsyncStorage = require('@react-native-async-storage/async-storage');
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
// AsyncStorage not available, create a mock
|
|
43
|
+
AsyncStorage = {
|
|
44
|
+
getItem: async (_key) => null,
|
|
45
|
+
setItem: async (_key, _value) => { },
|
|
46
|
+
removeItem: async (_key) => { }
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// Global storage for traces
|
|
50
|
+
const traceStorageKey = '@flow_debugger_traces';
|
|
51
|
+
// Generate a unique trace ID
|
|
52
|
+
function generateTraceId() {
|
|
53
|
+
const ts = Date.now().toString(36);
|
|
54
|
+
const rand = Math.random().toString(36).substring(2, 8);
|
|
55
|
+
return `rn_${ts}_${rand}`;
|
|
56
|
+
}
|
|
57
|
+
// Context for the debugger
|
|
58
|
+
const DebuggerContext = createContext(undefined);
|
|
59
|
+
// Main React Native Debugger class
|
|
60
|
+
class ReactNativeDebugger {
|
|
61
|
+
constructor(debuggerUrl = 'http://localhost:3500/__debugger', enabled = true) {
|
|
62
|
+
this.traces = new Map();
|
|
63
|
+
this.debuggerUrl = debuggerUrl;
|
|
64
|
+
this.enabled = enabled;
|
|
65
|
+
this.loadTracesFromStorage();
|
|
66
|
+
}
|
|
67
|
+
async loadTracesFromStorage() {
|
|
68
|
+
try {
|
|
69
|
+
const stored = await AsyncStorage.getItem(traceStorageKey);
|
|
70
|
+
if (stored) {
|
|
71
|
+
const parsed = JSON.parse(stored);
|
|
72
|
+
// Convert to Map
|
|
73
|
+
this.traces = new Map(parsed.map((trace) => [trace.traceId, { ...trace, timestamp: new Date(trace.timestamp) }]));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.warn('Failed to load traces from storage:', error);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async saveTracesToStorage() {
|
|
81
|
+
try {
|
|
82
|
+
const tracesArray = Array.from(this.traces.values()).map(trace => ({
|
|
83
|
+
...trace,
|
|
84
|
+
timestamp: trace.timestamp.toISOString()
|
|
85
|
+
}));
|
|
86
|
+
await AsyncStorage.setItem(traceStorageKey, JSON.stringify(tracesArray));
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.warn('Failed to save traces to storage:', error);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
startTrace(endpoint, method = 'GET') {
|
|
93
|
+
if (!this.enabled)
|
|
94
|
+
return '';
|
|
95
|
+
const traceId = generateTraceId();
|
|
96
|
+
const newTrace = {
|
|
97
|
+
traceId,
|
|
98
|
+
endpoint,
|
|
99
|
+
method,
|
|
100
|
+
steps: [],
|
|
101
|
+
totalDuration: 0,
|
|
102
|
+
timestamp: new Date(),
|
|
103
|
+
platform: 'react-native'
|
|
104
|
+
};
|
|
105
|
+
this.traces.set(traceId, newTrace);
|
|
106
|
+
this.saveTracesToStorage();
|
|
107
|
+
return traceId;
|
|
108
|
+
}
|
|
109
|
+
async step(traceId, name, fn, options = {}) {
|
|
110
|
+
if (!this.enabled)
|
|
111
|
+
return fn();
|
|
112
|
+
const trace = this.traces.get(traceId);
|
|
113
|
+
if (!trace) {
|
|
114
|
+
console.warn(`Trace with ID ${traceId} not found`);
|
|
115
|
+
return fn();
|
|
116
|
+
}
|
|
117
|
+
const startTime = Date.now();
|
|
118
|
+
const stepStartOffset = startTime - trace.timestamp.getTime();
|
|
119
|
+
try {
|
|
120
|
+
const result = await fn();
|
|
121
|
+
// Record successful step
|
|
122
|
+
const endTime = Date.now();
|
|
123
|
+
const step = {
|
|
124
|
+
name,
|
|
125
|
+
service: options.service || 'internal',
|
|
126
|
+
status: 'success',
|
|
127
|
+
startTime: startTime - trace.timestamp.getTime(),
|
|
128
|
+
endTime: endTime - trace.timestamp.getTime(),
|
|
129
|
+
duration: endTime - startTime,
|
|
130
|
+
offset: stepStartOffset,
|
|
131
|
+
metadata: options.metadata
|
|
132
|
+
};
|
|
133
|
+
trace.steps.push(step);
|
|
134
|
+
this.saveTracesToStorage();
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
// Record failed step
|
|
139
|
+
const endTime = Date.now();
|
|
140
|
+
const step = {
|
|
141
|
+
name,
|
|
142
|
+
service: options.service || 'internal',
|
|
143
|
+
status: 'error',
|
|
144
|
+
startTime: startTime - trace.timestamp.getTime(),
|
|
145
|
+
endTime: endTime - trace.timestamp.getTime(),
|
|
146
|
+
duration: endTime - startTime,
|
|
147
|
+
offset: stepStartOffset,
|
|
148
|
+
error: error instanceof Error ? error.message : String(error),
|
|
149
|
+
metadata: options.metadata
|
|
150
|
+
};
|
|
151
|
+
trace.steps.push(step);
|
|
152
|
+
this.saveTracesToStorage();
|
|
153
|
+
throw error;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
addManualStep(traceId, name, duration, options = {}) {
|
|
157
|
+
if (!this.enabled)
|
|
158
|
+
return;
|
|
159
|
+
const trace = this.traces.get(traceId);
|
|
160
|
+
if (!trace) {
|
|
161
|
+
console.warn(`Trace with ID ${traceId} not found`);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const currentTime = Date.now();
|
|
165
|
+
const step = {
|
|
166
|
+
name,
|
|
167
|
+
service: options.service || 'internal',
|
|
168
|
+
status: 'success',
|
|
169
|
+
startTime: currentTime - trace.timestamp.getTime(),
|
|
170
|
+
endTime: currentTime - trace.timestamp.getTime() + duration,
|
|
171
|
+
duration,
|
|
172
|
+
offset: currentTime - trace.timestamp.getTime(),
|
|
173
|
+
metadata: options.metadata
|
|
174
|
+
};
|
|
175
|
+
trace.steps.push(step);
|
|
176
|
+
this.saveTracesToStorage();
|
|
177
|
+
}
|
|
178
|
+
async sendTrace(traceId) {
|
|
179
|
+
if (!this.enabled)
|
|
180
|
+
return;
|
|
181
|
+
const trace = this.traces.get(traceId);
|
|
182
|
+
if (!trace) {
|
|
183
|
+
console.warn(`Trace with ID ${traceId} not found`);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
// Calculate total duration
|
|
187
|
+
trace.totalDuration = trace.steps.reduce((sum, step) => sum + step.duration, 0);
|
|
188
|
+
try {
|
|
189
|
+
// Send trace to the main debugger service
|
|
190
|
+
const response = await fetch(this.debuggerUrl, {
|
|
191
|
+
method: 'POST',
|
|
192
|
+
headers: {
|
|
193
|
+
'Content-Type': 'application/json',
|
|
194
|
+
},
|
|
195
|
+
body: JSON.stringify(trace),
|
|
196
|
+
});
|
|
197
|
+
if (!response.ok) {
|
|
198
|
+
console.warn(`Failed to send trace to debugger: ${response.status}`);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
// Remove the trace after successful sending
|
|
202
|
+
this.traces.delete(traceId);
|
|
203
|
+
this.saveTracesToStorage();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
console.warn('Failed to send trace to debugger:', error);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
async getTraces() {
|
|
211
|
+
return Array.from(this.traces.values());
|
|
212
|
+
}
|
|
213
|
+
async clearTraces() {
|
|
214
|
+
this.traces.clear();
|
|
215
|
+
await AsyncStorage.removeItem(traceStorageKey);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// Global instance
|
|
219
|
+
let rnDebugger = null;
|
|
220
|
+
function initializeReactNativeDebugger(debuggerUrl, enabled = true) {
|
|
221
|
+
if (!rnDebugger) {
|
|
222
|
+
rnDebugger = new ReactNativeDebugger(debuggerUrl, enabled);
|
|
223
|
+
}
|
|
224
|
+
return rnDebugger;
|
|
225
|
+
}
|
|
226
|
+
function getReactNativeDebugger() {
|
|
227
|
+
return rnDebugger;
|
|
228
|
+
}
|
|
229
|
+
// React Native Debugger Provider Component
|
|
230
|
+
const DebuggerProvider = ({ children, debuggerUrl, enabled = true }) => {
|
|
231
|
+
const [debuggerInstance] = useState(() => initializeReactNativeDebugger(debuggerUrl, enabled));
|
|
232
|
+
const contextValue = {
|
|
233
|
+
startTrace: useCallback((endpoint, method = 'GET') => {
|
|
234
|
+
return debuggerInstance.startTrace(endpoint, method);
|
|
235
|
+
}, [debuggerInstance]),
|
|
236
|
+
step: useCallback(async (traceId, name, fn, options = {}) => {
|
|
237
|
+
return debuggerInstance.step(traceId, name, fn, options);
|
|
238
|
+
}, [debuggerInstance]),
|
|
239
|
+
addManualStep: useCallback((traceId, name, duration, options = {}) => {
|
|
240
|
+
debuggerInstance.addManualStep(traceId, name, duration, options);
|
|
241
|
+
}, [debuggerInstance]),
|
|
242
|
+
sendTrace: useCallback(async (traceId) => {
|
|
243
|
+
return debuggerInstance.sendTrace(traceId);
|
|
244
|
+
}, [debuggerInstance]),
|
|
245
|
+
getTraces: useCallback(async () => {
|
|
246
|
+
return debuggerInstance.getTraces();
|
|
247
|
+
}, [debuggerInstance])
|
|
248
|
+
};
|
|
249
|
+
return React.createElement(DebuggerContext.Provider, { value: contextValue }, children);
|
|
250
|
+
};
|
|
251
|
+
exports.DebuggerProvider = DebuggerProvider;
|
|
252
|
+
// Hook to use the debugger in components
|
|
253
|
+
const useDebugger = () => {
|
|
254
|
+
const context = useContext(DebuggerContext);
|
|
255
|
+
if (context === undefined) {
|
|
256
|
+
throw new Error('useDebugger must be used within a DebuggerProvider');
|
|
257
|
+
}
|
|
258
|
+
return context;
|
|
259
|
+
};
|
|
260
|
+
exports.useDebugger = useDebugger;
|
|
261
|
+
// Higher-order component for wrapping components with debugger context
|
|
262
|
+
function withDebugger(Component) {
|
|
263
|
+
return function WrappedComponent(props) {
|
|
264
|
+
const debuggerContext = (0, exports.useDebugger)();
|
|
265
|
+
return React.createElement(Component, { ...props, debugger: debuggerContext });
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
// Interceptor for fetch requests to automatically trace them
|
|
269
|
+
function createFetchInterceptor(debuggerUrl) {
|
|
270
|
+
const originalFetch = global.fetch;
|
|
271
|
+
return async (url, options) => {
|
|
272
|
+
if (!rnDebugger) {
|
|
273
|
+
rnDebugger = new ReactNativeDebugger(debuggerUrl);
|
|
274
|
+
}
|
|
275
|
+
// Start a trace for this fetch request
|
|
276
|
+
const traceId = rnDebugger.startTrace(url.toString(), options?.method || 'GET');
|
|
277
|
+
try {
|
|
278
|
+
// Execute the fetch request with tracing
|
|
279
|
+
const result = await rnDebugger.step(traceId, `FETCH ${url.toString()}`, () => originalFetch(url, options), { service: 'external' });
|
|
280
|
+
// Send the trace to the debugger service
|
|
281
|
+
await rnDebugger.sendTrace(traceId);
|
|
282
|
+
return result;
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
// Send the trace even if the request failed
|
|
286
|
+
await rnDebugger.sendTrace(traceId);
|
|
287
|
+
throw error;
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
// Utility function to trace async operations manually
|
|
292
|
+
async function traceAsyncOperation(endpoint, operationName, operation, service = 'internal') {
|
|
293
|
+
if (!rnDebugger) {
|
|
294
|
+
// If not initialized, just run the operation without tracing
|
|
295
|
+
return operation();
|
|
296
|
+
}
|
|
297
|
+
const traceId = rnDebugger.startTrace(endpoint);
|
|
298
|
+
try {
|
|
299
|
+
const result = await rnDebugger.step(traceId, operationName, operation, { service });
|
|
300
|
+
await rnDebugger.sendTrace(traceId);
|
|
301
|
+
return result;
|
|
302
|
+
}
|
|
303
|
+
catch (error) {
|
|
304
|
+
await rnDebugger.sendTrace(traceId);
|
|
305
|
+
throw error;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=react_native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react_native.js","sourceRoot":"","sources":["../../src/react_native.ts"],"names":[],"mappings":";AAAA,gEAAgE;AAChE,2CAA2C;AAC3C,0EAA0E;AAC1E,gEAAgE;;;AAwRhE,sEAKC;AAED,wDAEC;AAyDD,oCAQC;AAGD,wDA8BC;AAGD,kDAqBC;AArXD,8EAA8E;AAC9E,IAAI,KAAU,CAAC;AACf,IAAI,QAAa,CAAC;AAClB,IAAI,SAAc,CAAC;AACnB,IAAI,aAAkB,CAAC;AACvB,IAAI,UAAe,CAAC;AACpB,IAAI,WAAgB,CAAC;AACrB,IAAI,YAAiB,CAAC;AAEtB,IAAI,CAAC;IACH,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,KAAK,GAAG,WAAW,CAAC;IACpB,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IAChC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;IAClC,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC;IAC1C,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IACpC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;AACxC,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,oCAAoC;IACpC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAClC,SAAS,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACrB,aAAa,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACvE,UAAU,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;IAC7B,WAAW,GAAG,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC;AAChC,CAAC;AAED,IAAI,CAAC;IACH,YAAY,GAAG,OAAO,CAAC,2CAA2C,CAAC,CAAC;AACtE,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,4CAA4C;IAC5C,YAAY,GAAG;QACb,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,IAAI;QACrC,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,MAAc,EAAE,EAAE,GAAE,CAAC;QACnD,UAAU,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE,GAAE,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,4BAA4B;AAC5B,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEhD,6BAA6B;AAC7B,SAAS,eAAe;IACtB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,2BAA2B;AAC3B,MAAM,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;AAEjD,mCAAmC;AACnC,MAAM,mBAAmB;IAKvB,YAAY,cAAsB,kCAAkC,EAAE,UAAmB,IAAI;QAJrF,WAAM,GAAuB,IAAI,GAAG,EAAE,CAAC;QAK7C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC3D,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClC,iBAAiB;gBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACjE,GAAG,KAAK;gBACR,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;aACzC,CAAC,CAAC,CAAC;YACJ,MAAM,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAEM,UAAU,CAAC,QAAgB,EAAE,SAAiB,KAAK;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAU;YACtB,OAAO;YACP,QAAQ;YACR,MAAM;YACN,KAAK,EAAE,EAAE;YACT,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ,EAAE,cAAc;SACzB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,OAAe,EACf,IAAY,EACZ,EAAoB,EACpB,UAAuB,EAAE;QAEzB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,EAAE,CAAC;QAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,OAAO,YAAY,CAAC,CAAC;YACnD,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,eAAe,GAAG,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAE1B,yBAAyB;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAc;gBACtB,IAAI;gBACJ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,UAAU;gBACtC,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;gBAChD,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;gBAC5C,QAAQ,EAAE,OAAO,GAAG,SAAS;gBAC7B,MAAM,EAAE,eAAe;gBACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC;YAEF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE3B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB;YACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAc;gBACtB,IAAI;gBACJ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,UAAU;gBACtC,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;gBAChD,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;gBAC5C,QAAQ,EAAE,OAAO,GAAG,SAAS;gBAC7B,MAAM,EAAE,eAAe;gBACvB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC;YAEF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE3B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEM,aAAa,CAClB,OAAe,EACf,IAAY,EACZ,QAAgB,EAChB,UAAuB,EAAE;QAEzB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,OAAO,YAAY,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAc;YACtB,IAAI;YACJ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,UAAU;YACtC,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;YAClD,OAAO,EAAE,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,QAAQ;YAC3D,QAAQ;YACR,MAAM,EAAE,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;YAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;QAEF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,OAAe;QACpC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,OAAO,YAAY,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEhF,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;gBAC7C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAC5B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,qCAAqC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,4CAA4C;gBAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACjD,CAAC;CACF;AAED,kBAAkB;AAClB,IAAI,UAAU,GAA+B,IAAI,CAAC;AAElD,SAAgB,6BAA6B,CAAC,WAAoB,EAAE,UAAmB,IAAI;IACzF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,IAAI,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,sBAAsB;IACpC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,2CAA2C;AACpC,MAAM,gBAAgB,GAAQ,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,EAI5E,EAAE,EAAE;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,6BAA6B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAE/F,MAAM,YAAY,GAAwB;QACxC,UAAU,EAAE,WAAW,CAAC,CAAC,QAAgB,EAAE,SAAiB,KAAK,EAAE,EAAE;YACnE,OAAO,gBAAgB,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;QAEtB,IAAI,EAAE,WAAW,CACf,KAAK,EAAE,OAAe,EAAE,IAAY,EAAE,EAAsB,EAAE,UAAuB,EAAE,EAAE,EAAE;YACzF,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC,EACD,CAAC,gBAAgB,CAAC,CACZ;QAER,aAAa,EAAE,WAAW,CAAC,CACzB,OAAe,EACf,IAAY,EACZ,QAAgB,EAChB,UAAuB,EAAE,EACzB,EAAE;YACF,gBAAgB,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;QAEtB,SAAS,EAAE,WAAW,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;YAC/C,OAAO,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;QAEtB,SAAS,EAAE,WAAW,CAAC,KAAK,IAAI,EAAE;YAChC,OAAO,gBAAgB,CAAC,SAAS,EAAE,CAAC;QACtC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;KACvB,CAAC;IAEF,OAAO,KAAK,CAAC,aAAa,CACxB,eAAe,CAAC,QAAQ,EACxB,EAAE,KAAK,EAAE,YAAY,EAAE,EACvB,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AA1CW,QAAA,gBAAgB,oBA0C3B;AAEF,yCAAyC;AAClC,MAAM,WAAW,GAAG,GAAwB,EAAE;IACnD,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAC5C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB;AAEF,uEAAuE;AACvE,SAAgB,YAAY,CAC1B,SAAc;IAEd,OAAO,SAAS,gBAAgB,CAAC,KAAQ;QACvC,MAAM,eAAe,GAAG,IAAA,mBAAW,GAAE,CAAC;QAEtC,OAAO,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,SAAgB,sBAAsB,CAAC,WAAoB;IACzD,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;IAEnC,OAAO,KAAK,EAAE,GAA2B,EAAE,OAAqB,EAAE,EAAE;QAClE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,UAAU,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACpD,CAAC;QAED,uCAAuC;QACvC,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC;QAEhF,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAClC,OAAO,EACP,SAAS,GAAG,CAAC,QAAQ,EAAE,EAAE,EACzB,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,EACjC,EAAE,OAAO,EAAE,UAAU,EAAE,CACxB,CAAC;YAEF,yCAAyC;YACzC,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAEpC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,4CAA4C;YAC5C,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,sDAAsD;AAC/C,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,aAAqB,EACrB,SAA2B,EAC3B,UAAkB,UAAU;IAE5B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,6DAA6D;QAC7D,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACrF,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -19,4 +19,6 @@ export { fetchTracer, removeFetchTracer } from './integrations/fetch';
|
|
|
19
19
|
export { axiosTracer } from './integrations/axios';
|
|
20
20
|
// Middleware
|
|
21
21
|
export { flowDebugger } from './middleware/express';
|
|
22
|
+
// React Native
|
|
23
|
+
export { DebuggerProvider, useDebugger, initializeReactNativeDebugger, getReactNativeDebugger, createFetchInterceptor, traceAsyncOperation, withDebugger } from './react_native';
|
|
22
24
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,mCAAmC;AACnC,gEAAgE;AAEhE,OAAO;AACP,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAkBhE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,aAAa;AACb,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,mCAAmC;AACnC,gEAAgE;AAEhE,OAAO;AACP,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAkBhE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,aAAa;AACb,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,eAAe;AACf,OAAO,EACH,gBAAgB,EAChB,WAAW,EACX,6BAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACf,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
// ─────────────────────────────────────────────────────────────
|
|
2
|
+
// flow-debugger — React Native Integration
|
|
3
|
+
// Provides request tracing and manual step tracking for React Native apps
|
|
4
|
+
// ─────────────────────────────────────────────────────────────
|
|
5
|
+
// Conditional React imports to avoid build errors when React is not available
|
|
6
|
+
let React;
|
|
7
|
+
let useState;
|
|
8
|
+
let useEffect;
|
|
9
|
+
let createContext;
|
|
10
|
+
let useContext;
|
|
11
|
+
let useCallback;
|
|
12
|
+
let AsyncStorage;
|
|
13
|
+
try {
|
|
14
|
+
const reactModule = require('react');
|
|
15
|
+
React = reactModule;
|
|
16
|
+
useState = reactModule.useState;
|
|
17
|
+
useEffect = reactModule.useEffect;
|
|
18
|
+
createContext = reactModule.createContext;
|
|
19
|
+
useContext = reactModule.useContext;
|
|
20
|
+
useCallback = reactModule.useCallback;
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
// React not available, define stubs
|
|
24
|
+
useState = () => [null, () => { }];
|
|
25
|
+
useEffect = () => { };
|
|
26
|
+
createContext = () => ({ Provider: () => null, Consumer: () => null });
|
|
27
|
+
useContext = () => undefined;
|
|
28
|
+
useCallback = (fn) => fn;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
AsyncStorage = require('@react-native-async-storage/async-storage');
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
// AsyncStorage not available, create a mock
|
|
35
|
+
AsyncStorage = {
|
|
36
|
+
getItem: async (_key) => null,
|
|
37
|
+
setItem: async (_key, _value) => { },
|
|
38
|
+
removeItem: async (_key) => { }
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Global storage for traces
|
|
42
|
+
const traceStorageKey = '@flow_debugger_traces';
|
|
43
|
+
// Generate a unique trace ID
|
|
44
|
+
function generateTraceId() {
|
|
45
|
+
const ts = Date.now().toString(36);
|
|
46
|
+
const rand = Math.random().toString(36).substring(2, 8);
|
|
47
|
+
return `rn_${ts}_${rand}`;
|
|
48
|
+
}
|
|
49
|
+
// Context for the debugger
|
|
50
|
+
const DebuggerContext = createContext(undefined);
|
|
51
|
+
// Main React Native Debugger class
|
|
52
|
+
class ReactNativeDebugger {
|
|
53
|
+
constructor(debuggerUrl = 'http://localhost:3500/__debugger', enabled = true) {
|
|
54
|
+
this.traces = new Map();
|
|
55
|
+
this.debuggerUrl = debuggerUrl;
|
|
56
|
+
this.enabled = enabled;
|
|
57
|
+
this.loadTracesFromStorage();
|
|
58
|
+
}
|
|
59
|
+
async loadTracesFromStorage() {
|
|
60
|
+
try {
|
|
61
|
+
const stored = await AsyncStorage.getItem(traceStorageKey);
|
|
62
|
+
if (stored) {
|
|
63
|
+
const parsed = JSON.parse(stored);
|
|
64
|
+
// Convert to Map
|
|
65
|
+
this.traces = new Map(parsed.map((trace) => [trace.traceId, { ...trace, timestamp: new Date(trace.timestamp) }]));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
console.warn('Failed to load traces from storage:', error);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async saveTracesToStorage() {
|
|
73
|
+
try {
|
|
74
|
+
const tracesArray = Array.from(this.traces.values()).map(trace => ({
|
|
75
|
+
...trace,
|
|
76
|
+
timestamp: trace.timestamp.toISOString()
|
|
77
|
+
}));
|
|
78
|
+
await AsyncStorage.setItem(traceStorageKey, JSON.stringify(tracesArray));
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
console.warn('Failed to save traces to storage:', error);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
startTrace(endpoint, method = 'GET') {
|
|
85
|
+
if (!this.enabled)
|
|
86
|
+
return '';
|
|
87
|
+
const traceId = generateTraceId();
|
|
88
|
+
const newTrace = {
|
|
89
|
+
traceId,
|
|
90
|
+
endpoint,
|
|
91
|
+
method,
|
|
92
|
+
steps: [],
|
|
93
|
+
totalDuration: 0,
|
|
94
|
+
timestamp: new Date(),
|
|
95
|
+
platform: 'react-native'
|
|
96
|
+
};
|
|
97
|
+
this.traces.set(traceId, newTrace);
|
|
98
|
+
this.saveTracesToStorage();
|
|
99
|
+
return traceId;
|
|
100
|
+
}
|
|
101
|
+
async step(traceId, name, fn, options = {}) {
|
|
102
|
+
if (!this.enabled)
|
|
103
|
+
return fn();
|
|
104
|
+
const trace = this.traces.get(traceId);
|
|
105
|
+
if (!trace) {
|
|
106
|
+
console.warn(`Trace with ID ${traceId} not found`);
|
|
107
|
+
return fn();
|
|
108
|
+
}
|
|
109
|
+
const startTime = Date.now();
|
|
110
|
+
const stepStartOffset = startTime - trace.timestamp.getTime();
|
|
111
|
+
try {
|
|
112
|
+
const result = await fn();
|
|
113
|
+
// Record successful step
|
|
114
|
+
const endTime = Date.now();
|
|
115
|
+
const step = {
|
|
116
|
+
name,
|
|
117
|
+
service: options.service || 'internal',
|
|
118
|
+
status: 'success',
|
|
119
|
+
startTime: startTime - trace.timestamp.getTime(),
|
|
120
|
+
endTime: endTime - trace.timestamp.getTime(),
|
|
121
|
+
duration: endTime - startTime,
|
|
122
|
+
offset: stepStartOffset,
|
|
123
|
+
metadata: options.metadata
|
|
124
|
+
};
|
|
125
|
+
trace.steps.push(step);
|
|
126
|
+
this.saveTracesToStorage();
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
// Record failed step
|
|
131
|
+
const endTime = Date.now();
|
|
132
|
+
const step = {
|
|
133
|
+
name,
|
|
134
|
+
service: options.service || 'internal',
|
|
135
|
+
status: 'error',
|
|
136
|
+
startTime: startTime - trace.timestamp.getTime(),
|
|
137
|
+
endTime: endTime - trace.timestamp.getTime(),
|
|
138
|
+
duration: endTime - startTime,
|
|
139
|
+
offset: stepStartOffset,
|
|
140
|
+
error: error instanceof Error ? error.message : String(error),
|
|
141
|
+
metadata: options.metadata
|
|
142
|
+
};
|
|
143
|
+
trace.steps.push(step);
|
|
144
|
+
this.saveTracesToStorage();
|
|
145
|
+
throw error;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
addManualStep(traceId, name, duration, options = {}) {
|
|
149
|
+
if (!this.enabled)
|
|
150
|
+
return;
|
|
151
|
+
const trace = this.traces.get(traceId);
|
|
152
|
+
if (!trace) {
|
|
153
|
+
console.warn(`Trace with ID ${traceId} not found`);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const currentTime = Date.now();
|
|
157
|
+
const step = {
|
|
158
|
+
name,
|
|
159
|
+
service: options.service || 'internal',
|
|
160
|
+
status: 'success',
|
|
161
|
+
startTime: currentTime - trace.timestamp.getTime(),
|
|
162
|
+
endTime: currentTime - trace.timestamp.getTime() + duration,
|
|
163
|
+
duration,
|
|
164
|
+
offset: currentTime - trace.timestamp.getTime(),
|
|
165
|
+
metadata: options.metadata
|
|
166
|
+
};
|
|
167
|
+
trace.steps.push(step);
|
|
168
|
+
this.saveTracesToStorage();
|
|
169
|
+
}
|
|
170
|
+
async sendTrace(traceId) {
|
|
171
|
+
if (!this.enabled)
|
|
172
|
+
return;
|
|
173
|
+
const trace = this.traces.get(traceId);
|
|
174
|
+
if (!trace) {
|
|
175
|
+
console.warn(`Trace with ID ${traceId} not found`);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
// Calculate total duration
|
|
179
|
+
trace.totalDuration = trace.steps.reduce((sum, step) => sum + step.duration, 0);
|
|
180
|
+
try {
|
|
181
|
+
// Send trace to the main debugger service
|
|
182
|
+
const response = await fetch(this.debuggerUrl, {
|
|
183
|
+
method: 'POST',
|
|
184
|
+
headers: {
|
|
185
|
+
'Content-Type': 'application/json',
|
|
186
|
+
},
|
|
187
|
+
body: JSON.stringify(trace),
|
|
188
|
+
});
|
|
189
|
+
if (!response.ok) {
|
|
190
|
+
console.warn(`Failed to send trace to debugger: ${response.status}`);
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
// Remove the trace after successful sending
|
|
194
|
+
this.traces.delete(traceId);
|
|
195
|
+
this.saveTracesToStorage();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
console.warn('Failed to send trace to debugger:', error);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
async getTraces() {
|
|
203
|
+
return Array.from(this.traces.values());
|
|
204
|
+
}
|
|
205
|
+
async clearTraces() {
|
|
206
|
+
this.traces.clear();
|
|
207
|
+
await AsyncStorage.removeItem(traceStorageKey);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Global instance
|
|
211
|
+
let rnDebugger = null;
|
|
212
|
+
export function initializeReactNativeDebugger(debuggerUrl, enabled = true) {
|
|
213
|
+
if (!rnDebugger) {
|
|
214
|
+
rnDebugger = new ReactNativeDebugger(debuggerUrl, enabled);
|
|
215
|
+
}
|
|
216
|
+
return rnDebugger;
|
|
217
|
+
}
|
|
218
|
+
export function getReactNativeDebugger() {
|
|
219
|
+
return rnDebugger;
|
|
220
|
+
}
|
|
221
|
+
// React Native Debugger Provider Component
|
|
222
|
+
export const DebuggerProvider = ({ children, debuggerUrl, enabled = true }) => {
|
|
223
|
+
const [debuggerInstance] = useState(() => initializeReactNativeDebugger(debuggerUrl, enabled));
|
|
224
|
+
const contextValue = {
|
|
225
|
+
startTrace: useCallback((endpoint, method = 'GET') => {
|
|
226
|
+
return debuggerInstance.startTrace(endpoint, method);
|
|
227
|
+
}, [debuggerInstance]),
|
|
228
|
+
step: useCallback(async (traceId, name, fn, options = {}) => {
|
|
229
|
+
return debuggerInstance.step(traceId, name, fn, options);
|
|
230
|
+
}, [debuggerInstance]),
|
|
231
|
+
addManualStep: useCallback((traceId, name, duration, options = {}) => {
|
|
232
|
+
debuggerInstance.addManualStep(traceId, name, duration, options);
|
|
233
|
+
}, [debuggerInstance]),
|
|
234
|
+
sendTrace: useCallback(async (traceId) => {
|
|
235
|
+
return debuggerInstance.sendTrace(traceId);
|
|
236
|
+
}, [debuggerInstance]),
|
|
237
|
+
getTraces: useCallback(async () => {
|
|
238
|
+
return debuggerInstance.getTraces();
|
|
239
|
+
}, [debuggerInstance])
|
|
240
|
+
};
|
|
241
|
+
return React.createElement(DebuggerContext.Provider, { value: contextValue }, children);
|
|
242
|
+
};
|
|
243
|
+
// Hook to use the debugger in components
|
|
244
|
+
export const useDebugger = () => {
|
|
245
|
+
const context = useContext(DebuggerContext);
|
|
246
|
+
if (context === undefined) {
|
|
247
|
+
throw new Error('useDebugger must be used within a DebuggerProvider');
|
|
248
|
+
}
|
|
249
|
+
return context;
|
|
250
|
+
};
|
|
251
|
+
// Higher-order component for wrapping components with debugger context
|
|
252
|
+
export function withDebugger(Component) {
|
|
253
|
+
return function WrappedComponent(props) {
|
|
254
|
+
const debuggerContext = useDebugger();
|
|
255
|
+
return React.createElement(Component, { ...props, debugger: debuggerContext });
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
// Interceptor for fetch requests to automatically trace them
|
|
259
|
+
export function createFetchInterceptor(debuggerUrl) {
|
|
260
|
+
const originalFetch = global.fetch;
|
|
261
|
+
return async (url, options) => {
|
|
262
|
+
if (!rnDebugger) {
|
|
263
|
+
rnDebugger = new ReactNativeDebugger(debuggerUrl);
|
|
264
|
+
}
|
|
265
|
+
// Start a trace for this fetch request
|
|
266
|
+
const traceId = rnDebugger.startTrace(url.toString(), options?.method || 'GET');
|
|
267
|
+
try {
|
|
268
|
+
// Execute the fetch request with tracing
|
|
269
|
+
const result = await rnDebugger.step(traceId, `FETCH ${url.toString()}`, () => originalFetch(url, options), { service: 'external' });
|
|
270
|
+
// Send the trace to the debugger service
|
|
271
|
+
await rnDebugger.sendTrace(traceId);
|
|
272
|
+
return result;
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
// Send the trace even if the request failed
|
|
276
|
+
await rnDebugger.sendTrace(traceId);
|
|
277
|
+
throw error;
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
// Utility function to trace async operations manually
|
|
282
|
+
export async function traceAsyncOperation(endpoint, operationName, operation, service = 'internal') {
|
|
283
|
+
if (!rnDebugger) {
|
|
284
|
+
// If not initialized, just run the operation without tracing
|
|
285
|
+
return operation();
|
|
286
|
+
}
|
|
287
|
+
const traceId = rnDebugger.startTrace(endpoint);
|
|
288
|
+
try {
|
|
289
|
+
const result = await rnDebugger.step(traceId, operationName, operation, { service });
|
|
290
|
+
await rnDebugger.sendTrace(traceId);
|
|
291
|
+
return result;
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
await rnDebugger.sendTrace(traceId);
|
|
295
|
+
throw error;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=react_native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react_native.js","sourceRoot":"","sources":["../../src/react_native.ts"],"names":[],"mappings":"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"}
|