react-native-debug-toolkit 3.2.2 → 3.2.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.
Files changed (67) hide show
  1. package/android/src/main/java/com/reactnativedebugtoolkit/DebugToolkitDevConnectModule.java +123 -4
  2. package/ios/DebugToolkitDevConnect.mm +69 -2
  3. package/lib/commonjs/core/initialize.js +15 -3
  4. package/lib/commonjs/core/initialize.js.map +1 -1
  5. package/lib/commonjs/features/devConnect/DevConnectTab.js +30 -47
  6. package/lib/commonjs/features/devConnect/DevConnectTab.js.map +1 -1
  7. package/lib/commonjs/features/devConnect/devConnectUtils.js +8 -0
  8. package/lib/commonjs/features/devConnect/devConnectUtils.js.map +1 -1
  9. package/lib/commonjs/features/devConnect/index.js +22 -3
  10. package/lib/commonjs/features/devConnect/index.js.map +1 -1
  11. package/lib/commonjs/features/devConnect/nativeDevConnect.js +26 -2
  12. package/lib/commonjs/features/devConnect/nativeDevConnect.js.map +1 -1
  13. package/lib/commonjs/ui/DebugView.js +10 -2
  14. package/lib/commonjs/ui/DebugView.js.map +1 -1
  15. package/lib/commonjs/utils/DaemonClient.js +5 -0
  16. package/lib/commonjs/utils/DaemonClient.js.map +1 -1
  17. package/lib/module/core/initialize.js +16 -4
  18. package/lib/module/core/initialize.js.map +1 -1
  19. package/lib/module/features/devConnect/DevConnectTab.js +30 -47
  20. package/lib/module/features/devConnect/DevConnectTab.js.map +1 -1
  21. package/lib/module/features/devConnect/devConnectUtils.js +7 -0
  22. package/lib/module/features/devConnect/devConnectUtils.js.map +1 -1
  23. package/lib/module/features/devConnect/index.js +19 -5
  24. package/lib/module/features/devConnect/index.js.map +1 -1
  25. package/lib/module/features/devConnect/nativeDevConnect.js +25 -3
  26. package/lib/module/features/devConnect/nativeDevConnect.js.map +1 -1
  27. package/lib/module/ui/DebugView.js +11 -3
  28. package/lib/module/ui/DebugView.js.map +1 -1
  29. package/lib/module/utils/DaemonClient.js +5 -0
  30. package/lib/module/utils/DaemonClient.js.map +1 -1
  31. package/lib/typescript/src/core/initialize.d.ts +4 -2
  32. package/lib/typescript/src/core/initialize.d.ts.map +1 -1
  33. package/lib/typescript/src/features/devConnect/DevConnectTab.d.ts.map +1 -1
  34. package/lib/typescript/src/features/devConnect/devConnectUtils.d.ts +1 -0
  35. package/lib/typescript/src/features/devConnect/devConnectUtils.d.ts.map +1 -1
  36. package/lib/typescript/src/features/devConnect/index.d.ts +1 -0
  37. package/lib/typescript/src/features/devConnect/index.d.ts.map +1 -1
  38. package/lib/typescript/src/features/devConnect/nativeDevConnect.d.ts +2 -0
  39. package/lib/typescript/src/features/devConnect/nativeDevConnect.d.ts.map +1 -1
  40. package/lib/typescript/src/features/devConnect/types.d.ts +1 -1
  41. package/lib/typescript/src/features/devConnect/types.d.ts.map +1 -1
  42. package/lib/typescript/src/ui/DebugView.d.ts.map +1 -1
  43. package/lib/typescript/src/utils/DaemonClient.d.ts +2 -0
  44. package/lib/typescript/src/utils/DaemonClient.d.ts.map +1 -1
  45. package/package.json +2 -10
  46. package/src/core/initialize.ts +17 -5
  47. package/src/features/devConnect/DevConnectTab.tsx +18 -34
  48. package/src/features/devConnect/devConnectUtils.ts +8 -0
  49. package/src/features/devConnect/index.ts +18 -5
  50. package/src/features/devConnect/nativeDevConnect.ts +29 -3
  51. package/src/features/devConnect/types.ts +1 -1
  52. package/src/ui/DebugView.tsx +12 -3
  53. package/src/utils/DaemonClient.ts +7 -0
  54. package/lib/commonjs/features/devConnect/DevConnectQrScanner.js +0 -214
  55. package/lib/commonjs/features/devConnect/DevConnectQrScanner.js.map +0 -1
  56. package/lib/commonjs/features/devConnect/cameraKit.js +0 -54
  57. package/lib/commonjs/features/devConnect/cameraKit.js.map +0 -1
  58. package/lib/module/features/devConnect/DevConnectQrScanner.js +0 -209
  59. package/lib/module/features/devConnect/DevConnectQrScanner.js.map +0 -1
  60. package/lib/module/features/devConnect/cameraKit.js +0 -49
  61. package/lib/module/features/devConnect/cameraKit.js.map +0 -1
  62. package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts +0 -10
  63. package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts.map +0 -1
  64. package/lib/typescript/src/features/devConnect/cameraKit.d.ts +0 -47
  65. package/lib/typescript/src/features/devConnect/cameraKit.d.ts.map +0 -1
  66. package/src/features/devConnect/DevConnectQrScanner.tsx +0 -184
  67. package/src/features/devConnect/cameraKit.ts +0 -93
@@ -97,6 +97,7 @@ export declare class DaemonClient {
97
97
  private _onEndpointDetected;
98
98
  private _restorePromise;
99
99
  private _sessionId;
100
+ private _onConnectionChange;
100
101
  constructor(options: DaemonClientOptions);
101
102
  getSettings(): DaemonSettings;
102
103
  configure(settings: DaemonSettings): void;
@@ -107,6 +108,7 @@ export declare class DaemonClient {
107
108
  getStatus(): StreamStatus | null;
108
109
  setStreamingEnabled(enabled: boolean): void;
109
110
  setEndpointDetector(callback: (url: string) => void): void;
111
+ setOnConnectionChange(callback: (() => void) | undefined): void;
110
112
  restore(): Promise<void>;
111
113
  private doRestore;
112
114
  reportOnce(options?: ReportToDaemonOptions): Promise<ReportResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"DaemonClient.d.ts","sourceRoot":"","sources":["../../../../src/utils/DaemonClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DaemonClient.d.ts","sourceRoot":"","sources":["../../../../src/utils/DaemonClient.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-debug-toolkit",
3
- "version": "3.2.2",
3
+ "version": "3.2.4",
4
4
  "description": "A local-first React Native debug toolkit with Web Console, HTTP API, and MCP support for AI-readable app logs",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -55,19 +55,11 @@
55
55
  "peerDependencies": {
56
56
  "@react-native-clipboard/clipboard": ">=1.0.0",
57
57
  "react": ">=18.0.0",
58
- "react-native": ">=0.72.0",
59
- "react-native-camera-kit": ">=18.0.0",
60
- "expo-camera": ">=15.0.0"
58
+ "react-native": ">=0.72.0"
61
59
  },
62
60
  "peerDependenciesMeta": {
63
61
  "@react-native-clipboard/clipboard": {
64
62
  "optional": true
65
- },
66
- "react-native-camera-kit": {
67
- "optional": true
68
- },
69
- "expo-camera": {
70
- "optional": true
71
63
  }
72
64
  },
73
65
  "devDependencies": {
@@ -11,7 +11,7 @@ import { createTrackFeature } from '../features/track';
11
11
  import type { TrackFeatureConfig } from '../features/track';
12
12
  import { createEnvironmentFeature } from '../features/environment';
13
13
  import { createClipboardFeature } from '../features/clipboard';
14
- import { createDevConnectFeature, restoreDevConnectSettingsToDaemon } from '../features/devConnect';
14
+ import { createDevConnectFeature, restoreDevConnectSettingsToDaemon, nativeIsDebugBuild } from '../features/devConnect';
15
15
  import { daemonClient } from '../utils/DaemonClient';
16
16
  import type { AnyDebugFeature, BuiltInFeatureName } from '../types';
17
17
 
@@ -88,16 +88,28 @@ function resolveDefaultFeatures(): AnyDebugFeature[] {
88
88
  /**
89
89
  * Initialize the debug toolkit.
90
90
  *
91
+ * Detects debug/release mode via native bridge first, falls back to `__DEV__`.
92
+ *
91
93
  * @example
92
- * initializeDebugToolkit({
94
+ * await initializeDebugToolkit({
93
95
  * features: { network: true, console: true },
94
96
  * enabled: true,
95
97
  * });
96
98
  */
97
- export function initializeDebugToolkit(
99
+ export async function initializeDebugToolkit(
98
100
  options?: InitializeOptions,
99
- ): typeof DebugToolkit {
100
- const enabled = options?.enabled ?? isDebugMode;
101
+ ): Promise<typeof DebugToolkit> {
102
+ let enabled: boolean;
103
+ if (options?.enabled !== undefined) {
104
+ enabled = options.enabled;
105
+ } else {
106
+ try {
107
+ const nativeResult = await nativeIsDebugBuild();
108
+ enabled = nativeResult !== null ? nativeResult : isDebugMode;
109
+ } catch {
110
+ enabled = isDebugMode;
111
+ }
112
+ }
101
113
 
102
114
  const resolvedFeatures = options?.features
103
115
  ? resolveFeatureConfigs(options.features)
@@ -28,7 +28,6 @@ import {
28
28
  normalizeComputerHost,
29
29
  normalizePort,
30
30
  parseComputerTarget,
31
- type ParsedComputerTarget,
32
31
  } from './devConnectUtils';
33
32
  import {
34
33
  saveComputerTarget,
@@ -37,7 +36,6 @@ import {
37
36
  } from './devConnectPreferences';
38
37
  import { applyMetroBundle, resetMetroBundle } from './nativeDevConnect';
39
38
  import type { DevConnectState } from './types';
40
- import { DevConnectQrScanner } from './DevConnectQrScanner';
41
39
 
42
40
  const CONNECTION_TIMEOUT_MS = 2000;
43
41
 
@@ -73,7 +71,6 @@ export function DevConnectTab({ snapshot }: DebugFeatureRenderProps<DevConnectSt
73
71
  const [message, setMessage] = useState<string | null>(null);
74
72
  const [sending, setSending] = useState(false);
75
73
  const [metroBusy, setMetroBusy] = useState(false);
76
- const [qrVisible, setQrVisible] = useState(false);
77
74
 
78
75
  const isSim = snapshot.isSimulator;
79
76
 
@@ -124,13 +121,6 @@ export function DevConnectTab({ snapshot }: DebugFeatureRenderProps<DevConnectSt
124
121
  setMessage(null);
125
122
  }, []);
126
123
 
127
- const handleQrTarget = useCallback((target: ParsedComputerTarget) => {
128
- setComputerHost(target.computerHost);
129
- setMetroPort(target.metroPort);
130
- saveComputerTarget(`${target.computerHost}:${target.metroPort}`).catch(() => {});
131
- setMessage('Computer IP updated from QR code.');
132
- }, []);
133
-
134
124
  const validateSettings = useCallback((): boolean => {
135
125
  if (!isSim && !normalizeComputerHost(computerHost)) {
136
126
  setMessage('Enter your computer IP first.');
@@ -294,6 +284,8 @@ export function DevConnectTab({ snapshot }: DebugFeatureRenderProps<DevConnectSt
294
284
  const canConnect = isSim || (Boolean(normalizeComputerHost(computerHost)) && Boolean(normalizePort(daemonPort)));
295
285
  const canUseMetro = Boolean(metroTarget) && snapshot.nativeMetroAvailable && !metroBusy;
296
286
  const busy = sending || syncState === 'checking';
287
+ const subnetPrefix = snapshot.subnetPrefix;
288
+ const ipPlaceholder = subnetPrefix ? `${subnetPrefix}...` : '192.168.1.10';
297
289
 
298
290
  return (
299
291
  <KeyboardAvoidingView style={styles.container} behavior={Platform.OS === 'ios' ? 'padding' : undefined}>
@@ -312,7 +304,7 @@ export function DevConnectTab({ snapshot }: DebugFeatureRenderProps<DevConnectSt
312
304
  style={styles.input}
313
305
  value={computerHost}
314
306
  onChangeText={handleHostChange}
315
- placeholder="192.168.1.10"
307
+ placeholder={ipPlaceholder}
316
308
  placeholderTextColor={Colors.textLight}
317
309
  autoCapitalize="none"
318
310
  autoCorrect={false}
@@ -321,12 +313,19 @@ export function DevConnectTab({ snapshot }: DebugFeatureRenderProps<DevConnectSt
321
313
  onSubmitEditing={() => inputRef.current?.blur()}
322
314
  editable={!streaming}
323
315
  />
324
- {snapshot.qrAvailable ? (
325
- <TouchableOpacity style={styles.scanButton} onPress={() => setQrVisible(true)} disabled={streaming} activeOpacity={0.7}>
326
- <Text style={styles.scanButtonText}>Scan</Text>
327
- </TouchableOpacity>
328
- ) : null}
329
316
  </View>
317
+ {subnetPrefix && !computerHost ? (
318
+ <TouchableOpacity
319
+ style={styles.subnetHint}
320
+ onPress={() => {
321
+ setComputerHost(subnetPrefix);
322
+ inputRef.current?.focus();
323
+ }}
324
+ activeOpacity={0.6}
325
+ >
326
+ <Text style={styles.subnetHintText}>Tap to fill: {subnetPrefix}</Text>
327
+ </TouchableOpacity>
328
+ ) : null}
330
329
  </View>
331
330
  )}
332
331
 
@@ -438,11 +437,6 @@ export function DevConnectTab({ snapshot }: DebugFeatureRenderProps<DevConnectSt
438
437
  ) : null}
439
438
  </View>
440
439
  </ScrollView>
441
- <DevConnectQrScanner
442
- visible={qrVisible}
443
- onClose={() => setQrVisible(false)}
444
- onScanTarget={handleQrTarget}
445
- />
446
440
  </KeyboardAvoidingView>
447
441
  );
448
442
  }
@@ -464,7 +458,9 @@ const styles = StyleSheet.create({
464
458
  sectionTitle: { fontSize: 14, fontWeight: '600', color: Colors.text, marginBottom: 4 },
465
459
  sectionDesc: { fontSize: 12, color: Colors.textSecondary, marginBottom: 10, lineHeight: 17 },
466
460
  label: { fontSize: 13, fontWeight: '500', color: Colors.textSecondary, marginBottom: 6 },
467
- inputRow: { flexDirection: 'row', alignItems: 'center', gap: 8 },
461
+ inputRow: { flexDirection: 'row', alignItems: 'center' },
462
+ subnetHint: { marginTop: 6 },
463
+ subnetHintText: { fontSize: 12, color: Colors.primary, fontWeight: '500' },
468
464
  input: {
469
465
  flex: 1,
470
466
  backgroundColor: Colors.surface,
@@ -477,18 +473,6 @@ const styles = StyleSheet.create({
477
473
  color: Colors.text,
478
474
  fontFamily: 'Courier',
479
475
  },
480
- scanButton: {
481
- minWidth: 62,
482
- alignItems: 'center',
483
- justifyContent: 'center',
484
- paddingHorizontal: 12,
485
- paddingVertical: 10,
486
- borderRadius: 8,
487
- backgroundColor: Colors.surface,
488
- borderWidth: 1,
489
- borderColor: Colors.primary,
490
- },
491
- scanButtonText: { color: Colors.primary, fontSize: 13, fontWeight: '600' },
492
476
  portRow: { flexDirection: 'row', gap: 10 },
493
477
  portField: { flex: 1 },
494
478
  portLabel: { fontSize: 11, color: Colors.textSecondary, marginBottom: 4 },
@@ -164,3 +164,11 @@ export function buildDaemonDeviceHost(computerHost: string, daemonPort: string):
164
164
  const port = normalizePort(daemonPort) ?? DEFAULT_DAEMON_PORT;
165
165
  return port === DEFAULT_DAEMON_PORT ? host : `${host}:${port}`;
166
166
  }
167
+
168
+ export function extractSubnetPrefix(ip: string): string | null {
169
+ if (!isValidIpv4(ip)) {
170
+ return null;
171
+ }
172
+ const parts = ip.split('.');
173
+ return `${parts[0]}.${parts[1]}.${parts[2]}.`;
174
+ }
@@ -1,8 +1,7 @@
1
1
  import { DevConnectTab } from './DevConnectTab';
2
- import { isCameraKitAvailable } from './cameraKit';
3
2
  import { loadDevConnectPreferences } from './devConnectPreferences';
4
- import { DEFAULT_DAEMON_PORT, DEFAULT_METRO_PORT } from './devConnectUtils';
5
- import { isNativeDevConnectAvailable } from './nativeDevConnect';
3
+ import { DEFAULT_DAEMON_PORT, DEFAULT_METRO_PORT, extractSubnetPrefix } from './devConnectUtils';
4
+ import { getDeviceLocalIp, isNativeDevConnectAvailable } from './nativeDevConnect';
6
5
  import { isSimulator } from './platformDetect';
7
6
  import { daemonClient } from '../../utils/DaemonClient';
8
7
  import type { DebugFeature, DebugFeatureListener } from '../../types';
@@ -24,6 +23,7 @@ export {
24
23
  saveDaemonPort,
25
24
  saveMetroPort,
26
25
  } from './devConnectPreferences';
26
+ export { nativeIsDebugBuild } from './nativeDevConnect';
27
27
 
28
28
  export const createDevConnectFeature = (): DebugFeature<DevConnectState> => {
29
29
  const listeners = new Set<DebugFeatureListener>();
@@ -32,7 +32,6 @@ export const createDevConnectFeature = (): DebugFeature<DevConnectState> => {
32
32
  computerHost: '',
33
33
  metroPort: DEFAULT_METRO_PORT,
34
34
  daemonPort: DEFAULT_DAEMON_PORT,
35
- qrAvailable: isCameraKitAvailable(),
36
35
  nativeMetroAvailable: isNativeDevConnectAvailable(),
37
36
  streaming: daemonClient.isConnected(),
38
37
  };
@@ -50,7 +49,8 @@ export const createDevConnectFeature = (): DebugFeature<DevConnectState> => {
50
49
  label: 'DevConnect',
51
50
  renderContent: DevConnectTab,
52
51
  setup() {
53
- loadDevConnectPreferences().then((preferences) => {
52
+ daemonClient.setOnConnectionChange(() => notify());
53
+ loadDevConnectPreferences().then(async (preferences) => {
54
54
  state = {
55
55
  ...state,
56
56
  computerHost: preferences.computerHost,
@@ -58,6 +58,19 @@ export const createDevConnectFeature = (): DebugFeature<DevConnectState> => {
58
58
  daemonPort: preferences.daemonPort,
59
59
  nativeMetroAvailable: isNativeDevConnectAvailable(),
60
60
  };
61
+
62
+ if (!state.isSimulator) {
63
+ try {
64
+ const localIp = await getDeviceLocalIp();
65
+ if (localIp) {
66
+ const prefix = extractSubnetPrefix(localIp);
67
+ if (prefix) {
68
+ state = { ...state, subnetPrefix: prefix };
69
+ }
70
+ }
71
+ } catch { /* subnetPrefix stays undefined */ }
72
+ }
73
+
61
74
  notify();
62
75
  }).catch(() => {
63
76
  notify();
@@ -1,4 +1,4 @@
1
- import { DevSettings, NativeModules } from 'react-native';
1
+ import { NativeModules } from 'react-native';
2
2
 
3
3
  import { buildMetroTarget } from './devConnectUtils';
4
4
 
@@ -6,6 +6,8 @@ interface DebugToolkitDevConnectNativeModule {
6
6
  applyMetroHost: (hostPort: string) => Promise<{ hostPort?: string } | void>;
7
7
  resetMetroHost: () => Promise<void>;
8
8
  getMetroHost?: () => Promise<string | null>;
9
+ getLocalIp?: () => Promise<string | null>;
10
+ isDebugBuild?: () => Promise<boolean>;
9
11
  }
10
12
 
11
13
  type MetroBundleFailureReason =
@@ -94,7 +96,6 @@ export async function applyMetroBundle(host: string, port: string): Promise<Metr
94
96
 
95
97
  try {
96
98
  const result = await nativeModule.applyMetroHost(target.hostPort);
97
- DevSettings.reload?.('DebugToolkit DevConnect Metro host changed');
98
99
  return {
99
100
  ok: true,
100
101
  hostPort: result && typeof result.hostPort === 'string' ? result.hostPort : target.hostPort,
@@ -116,7 +117,6 @@ export async function resetMetroBundle(): Promise<MetroBundleResult | { ok: true
116
117
 
117
118
  try {
118
119
  await nativeModule.resetMetroHost();
119
- DevSettings.reload?.('DebugToolkit DevConnect Metro host reset');
120
120
  return { ok: true };
121
121
  } catch (error) {
122
122
  return {
@@ -126,3 +126,29 @@ export async function resetMetroBundle(): Promise<MetroBundleResult | { ok: true
126
126
  };
127
127
  }
128
128
  }
129
+
130
+ export async function getDeviceLocalIp(): Promise<string | null> {
131
+ const nativeModule = getNativeModule();
132
+ if (!nativeModule?.getLocalIp) {
133
+ return null;
134
+ }
135
+ try {
136
+ const ip = await nativeModule.getLocalIp();
137
+ return typeof ip === 'string' ? ip : null;
138
+ } catch {
139
+ return null;
140
+ }
141
+ }
142
+
143
+ export async function nativeIsDebugBuild(): Promise<boolean | null> {
144
+ const nativeModule = getNativeModule();
145
+ if (!nativeModule?.isDebugBuild) {
146
+ return null;
147
+ }
148
+ try {
149
+ const result = await nativeModule.isDebugBuild();
150
+ return typeof result === 'boolean' ? result : null;
151
+ } catch {
152
+ return null;
153
+ }
154
+ }
@@ -3,7 +3,7 @@ export interface DevConnectState {
3
3
  computerHost: string;
4
4
  metroPort: string;
5
5
  daemonPort: string;
6
- qrAvailable: boolean;
6
+ subnetPrefix?: string;
7
7
  nativeMetroAvailable: boolean;
8
8
  streaming: boolean;
9
9
  }
@@ -1,4 +1,4 @@
1
- import React, { useEffect } from 'react';
1
+ import React, { useEffect, useRef } from 'react';
2
2
  import { DebugToolkitProvider } from '../core/DebugToolkitProvider';
3
3
  import { initializeDebugToolkit } from '../core/initialize';
4
4
  import type { FeatureConfigs } from '../core/initialize';
@@ -42,6 +42,8 @@ export function DebugView({
42
42
  environments,
43
43
  enabled,
44
44
  }: DebugViewProps) {
45
+ const destroyRef = useRef<(() => void) | null>(null);
46
+
45
47
  useEffect(() => {
46
48
  // Build feature config: all enabled by default, user overrides take precedence
47
49
  const resolvedFeatures: FeatureConfigs = {
@@ -61,13 +63,20 @@ export function DebugView({
61
63
  }
62
64
 
63
65
  // Initialize toolkit
64
- const toolkit = initializeDebugToolkit({
66
+ let cancelled = false;
67
+ initializeDebugToolkit({
65
68
  features: resolvedFeatures,
66
69
  enabled,
70
+ }).then((toolkit) => {
71
+ if (!cancelled) {
72
+ destroyRef.current = () => toolkit.destroy();
73
+ }
67
74
  });
68
75
 
69
76
  return () => {
70
- toolkit.destroy();
77
+ cancelled = true;
78
+ destroyRef.current?.();
79
+ destroyRef.current = null;
71
80
  };
72
81
  // eslint-disable-next-line react-hooks/exhaustive-deps
73
82
  }, []);
@@ -186,6 +186,7 @@ export class DaemonClient {
186
186
  private _onEndpointDetected: ((url: string) => void) | undefined;
187
187
  private _restorePromise: Promise<void> | null = null;
188
188
  private _sessionId: SessionInfo | null = null;
189
+ private _onConnectionChange: (() => void) | undefined;
189
190
 
190
191
  constructor(options: DaemonClientOptions) {
191
192
  this._fetch = options.fetch;
@@ -315,6 +316,7 @@ export class DaemonClient {
315
316
  ).remove;
316
317
 
317
318
  this._stream = state;
319
+ this._onConnectionChange?.();
318
320
  this.emitStatus({ state: 'connecting' });
319
321
  this.enqueueSendFullReport();
320
322
  }
@@ -324,6 +326,7 @@ export class DaemonClient {
324
326
  const state = this._stream;
325
327
  this._stream = null;
326
328
  this._sessionId = null;
329
+ this._onConnectionChange?.();
327
330
 
328
331
  if (state.debounceTimer) clearTimeout(state.debounceTimer);
329
332
  if (state.retryTimer) clearTimeout(state.retryTimer);
@@ -360,6 +363,10 @@ export class DaemonClient {
360
363
  this._onEndpointDetected = callback;
361
364
  }
362
365
 
366
+ setOnConnectionChange(callback: (() => void) | undefined): void {
367
+ this._onConnectionChange = callback;
368
+ }
369
+
363
370
  // --- Restore (init-time reconnect) ---
364
371
 
365
372
  async restore(): Promise<void> {
@@ -1,214 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.DevConnectQrScanner = DevConnectQrScanner;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _reactNative = require("react-native");
9
- var _colors = require("../../ui/theme/colors");
10
- var _cameraKit = require("./cameraKit");
11
- var _devConnectUtils = require("./devConnectUtils");
12
- var _jsxRuntime = require("react/jsx-runtime");
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
- // ─── Camera Error Boundary ─────────────────────────────────
15
-
16
- class CameraErrorBoundary extends _react.Component {
17
- state = {
18
- hasError: false
19
- };
20
- static getDerivedStateFromError() {
21
- return {
22
- hasError: true
23
- };
24
- }
25
- componentDidCatch(error) {
26
- console.warn('[DevConnect] Camera error:', error.message);
27
- this.props.onCameraError(error.message || 'Camera failed to initialize.');
28
- }
29
- render() {
30
- if (this.state.hasError) {
31
- return null;
32
- }
33
- return this.props.children;
34
- }
35
- }
36
-
37
- // ─── QR Scanner ─────────────────────────────────────────────
38
-
39
- function DevConnectQrScanner({
40
- visible,
41
- onClose,
42
- onScanTarget
43
- }) {
44
- const scannedRef = (0, _react.useRef)(false);
45
- const [error, setError] = (0, _react.useState)(null);
46
- const [cameraFailed, setCameraFailed] = (0, _react.useState)(false);
47
- const scanner = (0, _cameraKit.getScannerModule)();
48
- (0, _react.useEffect)(() => {
49
- if (visible) {
50
- scannedRef.current = false;
51
- setError(null);
52
- setCameraFailed(false);
53
- }
54
- }, [visible]);
55
- const handleScanned = (0, _react.useCallback)(rawValue => {
56
- if (scannedRef.current) {
57
- return;
58
- }
59
- if (typeof rawValue !== 'string') {
60
- return;
61
- }
62
- const parsed = (0, _devConnectUtils.parseMetroQrPayload)(rawValue);
63
- if (!parsed) {
64
- setError('QR code does not contain a supported Metro URL.');
65
- return;
66
- }
67
- scannedRef.current = true;
68
- setError(null);
69
- onScanTarget({
70
- computerHost: parsed.computerHost,
71
- metroPort: parsed.metroPort
72
- });
73
- onClose();
74
- }, [onClose, onScanTarget]);
75
- const handleCameraKitRead = (0, _react.useCallback)(event => {
76
- handleScanned(event.nativeEvent?.codeStringValue ?? '');
77
- }, [handleScanned]);
78
- const handleExpoScanned = (0, _react.useCallback)(result => {
79
- handleScanned(result.value ?? '');
80
- }, [handleScanned]);
81
- const handleCameraError = (0, _react.useCallback)(_msg => {
82
- setCameraFailed(true);
83
- }, []);
84
- if (!visible || !scanner) {
85
- return null;
86
- }
87
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Modal, {
88
- visible: visible,
89
- animationType: "slide",
90
- onRequestClose: onClose,
91
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
92
- style: styles.container,
93
- children: [!cameraFailed && /*#__PURE__*/(0, _jsxRuntime.jsx)(CameraErrorBoundary, {
94
- onCameraError: handleCameraError,
95
- children: scanner.kind === 'camera-kit' && scanner.CameraKit ? /*#__PURE__*/(0, _jsxRuntime.jsx)(scanner.CameraKit.Camera, {
96
- style: styles.camera,
97
- cameraType: scanner.CameraKit.CameraType?.Back,
98
- scanBarcode: true,
99
- onReadCode: handleCameraKitRead,
100
- showFrame: true,
101
- laserColor: _colors.Colors.primary,
102
- frameColor: _colors.Colors.primary,
103
- allowedBarcodeTypes: ['qr']
104
- }) : scanner.kind === 'expo-camera' && scanner.ExpoCamera ? /*#__PURE__*/(0, _jsxRuntime.jsx)(scanner.ExpoCamera.Camera, {
105
- style: styles.camera,
106
- onBarCodeScanned: handleExpoScanned,
107
- barCodeScannerSettings: {
108
- barCodeTypes: ['qr']
109
- }
110
- }) : null
111
- }), cameraFailed && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
112
- style: styles.cameraFallback,
113
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
114
- style: styles.cameraFallbackText,
115
- children: "Camera unavailable."
116
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
117
- style: styles.cameraFallbackHint,
118
- children: "Please enter computer IP manually."
119
- })]
120
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
121
- style: styles.footer,
122
- children: [!cameraFailed && !error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
123
- style: styles.hint,
124
- children: "Scan a Metro QR code."
125
- }), error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
126
- style: styles.error,
127
- children: error
128
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
129
- style: styles.closeButton,
130
- onPress: onClose,
131
- activeOpacity: 0.7,
132
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
133
- style: styles.closeButtonText,
134
- children: "Close"
135
- })
136
- })]
137
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
138
- style: styles.topClose,
139
- onPress: onClose,
140
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
141
- style: styles.topCloseText,
142
- children: "Close"
143
- })
144
- })]
145
- })
146
- });
147
- }
148
- const styles = _reactNative.StyleSheet.create({
149
- container: {
150
- flex: 1,
151
- backgroundColor: '#000'
152
- },
153
- camera: {
154
- flex: 1
155
- },
156
- cameraFallback: {
157
- flex: 1,
158
- justifyContent: 'center',
159
- alignItems: 'center',
160
- padding: 24
161
- },
162
- cameraFallbackText: {
163
- fontSize: 16,
164
- color: '#fff',
165
- fontWeight: '600',
166
- marginBottom: 8
167
- },
168
- cameraFallbackHint: {
169
- fontSize: 13,
170
- color: 'rgba(255,255,255,0.6)',
171
- textAlign: 'center'
172
- },
173
- footer: {
174
- padding: 16,
175
- backgroundColor: _colors.Colors.surface
176
- },
177
- hint: {
178
- fontSize: 13,
179
- color: _colors.Colors.textSecondary,
180
- marginBottom: 12
181
- },
182
- error: {
183
- fontSize: 13,
184
- color: _colors.Colors.error,
185
- marginBottom: 12
186
- },
187
- closeButton: {
188
- alignItems: 'center',
189
- justifyContent: 'center',
190
- paddingVertical: 11,
191
- borderRadius: 10,
192
- backgroundColor: _colors.Colors.primary
193
- },
194
- closeButtonText: {
195
- color: '#fff',
196
- fontSize: 14,
197
- fontWeight: '600'
198
- },
199
- topClose: {
200
- position: 'absolute',
201
- top: 48,
202
- right: 16,
203
- paddingHorizontal: 12,
204
- paddingVertical: 8,
205
- borderRadius: 8,
206
- backgroundColor: 'rgba(0,0,0,0.55)'
207
- },
208
- topCloseText: {
209
- color: '#fff',
210
- fontSize: 13,
211
- fontWeight: '600'
212
- }
213
- });
214
- //# sourceMappingURL=DevConnectQrScanner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_colors","_cameraKit","_devConnectUtils","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CameraErrorBoundary","Component","state","hasError","getDerivedStateFromError","componentDidCatch","error","console","warn","message","props","onCameraError","render","children","DevConnectQrScanner","visible","onClose","onScanTarget","scannedRef","useRef","setError","useState","cameraFailed","setCameraFailed","scanner","getScannerModule","useEffect","current","handleScanned","useCallback","rawValue","parsed","parseMetroQrPayload","computerHost","metroPort","handleCameraKitRead","event","nativeEvent","codeStringValue","handleExpoScanned","result","value","handleCameraError","_msg","jsx","Modal","animationType","onRequestClose","jsxs","View","style","styles","container","kind","CameraKit","Camera","camera","cameraType","CameraType","Back","scanBarcode","onReadCode","showFrame","laserColor","Colors","primary","frameColor","allowedBarcodeTypes","ExpoCamera","onBarCodeScanned","barCodeScannerSettings","barCodeTypes","cameraFallback","Text","cameraFallbackText","cameraFallbackHint","footer","hint","TouchableOpacity","closeButton","onPress","activeOpacity","closeButtonText","Pressable","topClose","topCloseText","StyleSheet","create","flex","backgroundColor","justifyContent","alignItems","padding","fontSize","color","fontWeight","marginBottom","textAlign","surface","textSecondary","paddingVertical","borderRadius","position","top","right","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["features/devConnect/DevConnectQrScanner.tsx"],"mappings":"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","ignoreList":[]}