react-native-debug-toolkit 3.2.1 → 3.2.3

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 (66) hide show
  1. package/README.md +13 -2
  2. package/README.zh-CN.md +13 -2
  3. package/android/build.gradle +34 -0
  4. package/android/src/main/AndroidManifest.xml +1 -0
  5. package/android/src/main/java/com/reactnativedebugtoolkit/DebugToolkitDevConnectModule.java +154 -0
  6. package/android/src/main/java/com/reactnativedebugtoolkit/ReactNativeDebugToolkitPackage.java +25 -0
  7. package/ios/DebugToolkitDevConnect.mm +81 -0
  8. package/lib/commonjs/features/devConnect/DevConnectQrScanner.js +115 -70
  9. package/lib/commonjs/features/devConnect/DevConnectQrScanner.js.map +1 -1
  10. package/lib/commonjs/features/devConnect/DevConnectTab.js +232 -161
  11. package/lib/commonjs/features/devConnect/DevConnectTab.js.map +1 -1
  12. package/lib/commonjs/features/devConnect/devConnectPreferences.js +35 -5
  13. package/lib/commonjs/features/devConnect/devConnectPreferences.js.map +1 -1
  14. package/lib/commonjs/features/devConnect/devConnectUtils.js +99 -15
  15. package/lib/commonjs/features/devConnect/devConnectUtils.js.map +1 -1
  16. package/lib/commonjs/features/devConnect/index.js +39 -2
  17. package/lib/commonjs/features/devConnect/index.js.map +1 -1
  18. package/lib/commonjs/features/devConnect/nativeDevConnect.js +108 -0
  19. package/lib/commonjs/features/devConnect/nativeDevConnect.js.map +1 -0
  20. package/lib/commonjs/features/devConnect/platformDetect.js +7 -11
  21. package/lib/commonjs/features/devConnect/platformDetect.js.map +1 -1
  22. package/lib/commonjs/utils/debugPreferences.js +43 -6
  23. package/lib/commonjs/utils/debugPreferences.js.map +1 -1
  24. package/lib/module/features/devConnect/DevConnectQrScanner.js +116 -71
  25. package/lib/module/features/devConnect/DevConnectQrScanner.js.map +1 -1
  26. package/lib/module/features/devConnect/DevConnectTab.js +235 -164
  27. package/lib/module/features/devConnect/DevConnectTab.js.map +1 -1
  28. package/lib/module/features/devConnect/devConnectPreferences.js +33 -6
  29. package/lib/module/features/devConnect/devConnectPreferences.js.map +1 -1
  30. package/lib/module/features/devConnect/devConnectUtils.js +94 -15
  31. package/lib/module/features/devConnect/devConnectUtils.js.map +1 -1
  32. package/lib/module/features/devConnect/index.js +11 -3
  33. package/lib/module/features/devConnect/index.js.map +1 -1
  34. package/lib/module/features/devConnect/nativeDevConnect.js +102 -0
  35. package/lib/module/features/devConnect/nativeDevConnect.js.map +1 -0
  36. package/lib/module/features/devConnect/platformDetect.js +8 -12
  37. package/lib/module/features/devConnect/platformDetect.js.map +1 -1
  38. package/lib/module/utils/debugPreferences.js +43 -6
  39. package/lib/module/utils/debugPreferences.js.map +1 -1
  40. package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts +3 -2
  41. package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts.map +1 -1
  42. package/lib/typescript/src/features/devConnect/DevConnectTab.d.ts.map +1 -1
  43. package/lib/typescript/src/features/devConnect/devConnectPreferences.d.ts +6 -0
  44. package/lib/typescript/src/features/devConnect/devConnectPreferences.d.ts.map +1 -1
  45. package/lib/typescript/src/features/devConnect/devConnectUtils.d.ts +18 -1
  46. package/lib/typescript/src/features/devConnect/devConnectUtils.d.ts.map +1 -1
  47. package/lib/typescript/src/features/devConnect/index.d.ts +2 -2
  48. package/lib/typescript/src/features/devConnect/index.d.ts.map +1 -1
  49. package/lib/typescript/src/features/devConnect/nativeDevConnect.d.ts +17 -0
  50. package/lib/typescript/src/features/devConnect/nativeDevConnect.d.ts.map +1 -0
  51. package/lib/typescript/src/features/devConnect/platformDetect.d.ts.map +1 -1
  52. package/lib/typescript/src/features/devConnect/types.d.ts +3 -0
  53. package/lib/typescript/src/features/devConnect/types.d.ts.map +1 -1
  54. package/lib/typescript/src/utils/debugPreferences.d.ts +2 -0
  55. package/lib/typescript/src/utils/debugPreferences.d.ts.map +1 -1
  56. package/package.json +4 -1
  57. package/react-native-debug-toolkit.podspec +18 -0
  58. package/src/features/devConnect/DevConnectQrScanner.tsx +101 -60
  59. package/src/features/devConnect/DevConnectTab.tsx +227 -105
  60. package/src/features/devConnect/devConnectPreferences.ts +50 -5
  61. package/src/features/devConnect/devConnectUtils.ts +122 -15
  62. package/src/features/devConnect/index.ts +13 -0
  63. package/src/features/devConnect/nativeDevConnect.ts +126 -0
  64. package/src/features/devConnect/platformDetect.ts +8 -13
  65. package/src/features/devConnect/types.ts +3 -0
  66. package/src/utils/debugPreferences.ts +49 -4
@@ -2,18 +2,45 @@
2
2
 
3
3
  import { daemonClient } from '../../utils/DaemonClient';
4
4
  import { getPreference, KEYS, setPreference } from '../../utils/debugPreferences';
5
- import { normalizeComputerHost } from './devConnectUtils';
5
+ import { DEFAULT_DAEMON_PORT, DEFAULT_METRO_PORT, buildDaemonDeviceHost, normalizeComputerHost, normalizePort, parseComputerTarget } from './devConnectUtils';
6
6
  import { isSimulator } from './platformDetect';
7
7
  export async function loadDevConnectPreferences() {
8
8
  const storedHost = await getPreference(KEYS.computerHost);
9
+ const storedMetroPort = await getPreference(KEYS.metroPort);
10
+ const storedDaemonPort = await getPreference(KEYS.daemonPort);
9
11
  return {
10
- computerHost: storedHost ? normalizeComputerHost(storedHost) ?? '' : ''
12
+ computerHost: storedHost ? normalizeComputerHost(storedHost) ?? '' : '',
13
+ metroPort: storedMetroPort ? normalizePort(storedMetroPort) ?? DEFAULT_METRO_PORT : DEFAULT_METRO_PORT,
14
+ daemonPort: storedDaemonPort ? normalizePort(storedDaemonPort) ?? DEFAULT_DAEMON_PORT : DEFAULT_DAEMON_PORT
11
15
  };
12
16
  }
17
+ export async function saveComputerTarget(value) {
18
+ const target = parseComputerTarget(value);
19
+ if (!target) {
20
+ return null;
21
+ }
22
+ await setPreference(KEYS.computerHost, target.computerHost);
23
+ await setPreference(KEYS.metroPort, target.metroPort);
24
+ return target;
25
+ }
13
26
  export async function saveComputerHost(value) {
14
- const normalized = normalizeComputerHost(value);
15
- if (!normalized) return null;
16
- await setPreference(KEYS.computerHost, normalized);
27
+ const target = await saveComputerTarget(value);
28
+ return target?.computerHost ?? null;
29
+ }
30
+ export async function saveMetroPort(value) {
31
+ const normalized = normalizePort(value);
32
+ if (!normalized) {
33
+ return null;
34
+ }
35
+ await setPreference(KEYS.metroPort, normalized);
36
+ return normalized;
37
+ }
38
+ export async function saveDaemonPort(value) {
39
+ const normalized = normalizePort(value);
40
+ if (!normalized) {
41
+ return null;
42
+ }
43
+ await setPreference(KEYS.daemonPort, normalized);
17
44
  return normalized;
18
45
  }
19
46
  export async function restoreDevConnectSettingsToDaemon() {
@@ -22,7 +49,7 @@ export async function restoreDevConnectSettingsToDaemon() {
22
49
  daemonClient.configure({
23
50
  mode,
24
51
  endpoint: '',
25
- deviceHost: mode === 'simulator' ? '' : preferences.computerHost,
52
+ deviceHost: mode === 'simulator' ? '' : buildDaemonDeviceHost(preferences.computerHost, preferences.daemonPort),
26
53
  token: ''
27
54
  });
28
55
  }
@@ -1 +1 @@
1
- {"version":3,"names":["daemonClient","getPreference","KEYS","setPreference","normalizeComputerHost","isSimulator","loadDevConnectPreferences","storedHost","computerHost","saveComputerHost","value","normalized","restoreDevConnectSettingsToDaemon","preferences","mode","configure","endpoint","deviceHost","token"],"sourceRoot":"../../../../src","sources":["features/devConnect/devConnectPreferences.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,0BAA0B;AACvD,SAASC,aAAa,EAAEC,IAAI,EAAEC,aAAa,QAAQ,8BAA8B;AACjF,SAASC,qBAAqB,QAAQ,mBAAmB;AACzD,SAASC,WAAW,QAAQ,kBAAkB;AAM9C,OAAO,eAAeC,yBAAyBA,CAAA,EAAmC;EAChF,MAAMC,UAAU,GAAG,MAAMN,aAAa,CAACC,IAAI,CAACM,YAAY,CAAC;EACzD,OAAO;IACLA,YAAY,EAAED,UAAU,GAAGH,qBAAqB,CAACG,UAAU,CAAC,IAAI,EAAE,GAAG;EACvE,CAAC;AACH;AAEA,OAAO,eAAeE,gBAAgBA,CAACC,KAAa,EAA0B;EAC5E,MAAMC,UAAU,GAAGP,qBAAqB,CAACM,KAAK,CAAC;EAC/C,IAAI,CAACC,UAAU,EAAE,OAAO,IAAI;EAC5B,MAAMR,aAAa,CAACD,IAAI,CAACM,YAAY,EAAEG,UAAU,CAAC;EAClD,OAAOA,UAAU;AACnB;AAEA,OAAO,eAAeC,iCAAiCA,CAAA,EAAkB;EACvE,MAAMC,WAAW,GAAG,MAAMP,yBAAyB,CAAC,CAAC;EACrD,MAAMQ,IAAI,GAAGT,WAAW,CAAC,CAAC,GAAG,WAAW,GAAY,QAAiB;EACrEL,YAAY,CAACe,SAAS,CAAC;IACrBD,IAAI;IACJE,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAEH,IAAI,KAAK,WAAW,GAAG,EAAE,GAAGD,WAAW,CAACL,YAAY;IAChEU,KAAK,EAAE;EACT,CAAC,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["daemonClient","getPreference","KEYS","setPreference","DEFAULT_DAEMON_PORT","DEFAULT_METRO_PORT","buildDaemonDeviceHost","normalizeComputerHost","normalizePort","parseComputerTarget","isSimulator","loadDevConnectPreferences","storedHost","computerHost","storedMetroPort","metroPort","storedDaemonPort","daemonPort","saveComputerTarget","value","target","saveComputerHost","saveMetroPort","normalized","saveDaemonPort","restoreDevConnectSettingsToDaemon","preferences","mode","configure","endpoint","deviceHost","token"],"sourceRoot":"../../../../src","sources":["features/devConnect/devConnectPreferences.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,0BAA0B;AACvD,SAASC,aAAa,EAAEC,IAAI,EAAEC,aAAa,QAAQ,8BAA8B;AACjF,SACEC,mBAAmB,EACnBC,kBAAkB,EAClBC,qBAAqB,EACrBC,qBAAqB,EACrBC,aAAa,EACbC,mBAAmB,QAEd,mBAAmB;AAC1B,SAASC,WAAW,QAAQ,kBAAkB;AAQ9C,OAAO,eAAeC,yBAAyBA,CAAA,EAAmC;EAChF,MAAMC,UAAU,GAAG,MAAMX,aAAa,CAACC,IAAI,CAACW,YAAY,CAAC;EACzD,MAAMC,eAAe,GAAG,MAAMb,aAAa,CAACC,IAAI,CAACa,SAAS,CAAC;EAC3D,MAAMC,gBAAgB,GAAG,MAAMf,aAAa,CAACC,IAAI,CAACe,UAAU,CAAC;EAC7D,OAAO;IACLJ,YAAY,EAAED,UAAU,GAAGL,qBAAqB,CAACK,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;IACvEG,SAAS,EAAED,eAAe,GAAGN,aAAa,CAACM,eAAe,CAAC,IAAIT,kBAAkB,GAAGA,kBAAkB;IACtGY,UAAU,EAAED,gBAAgB,GAAGR,aAAa,CAACQ,gBAAgB,CAAC,IAAIZ,mBAAmB,GAAGA;EAC1F,CAAC;AACH;AAEA,OAAO,eAAec,kBAAkBA,CAACC,KAAa,EAAwC;EAC5F,MAAMC,MAAM,GAAGX,mBAAmB,CAACU,KAAK,CAAC;EACzC,IAAI,CAACC,MAAM,EAAE;IACX,OAAO,IAAI;EACb;EAEA,MAAMjB,aAAa,CAACD,IAAI,CAACW,YAAY,EAAEO,MAAM,CAACP,YAAY,CAAC;EAC3D,MAAMV,aAAa,CAACD,IAAI,CAACa,SAAS,EAAEK,MAAM,CAACL,SAAS,CAAC;EACrD,OAAOK,MAAM;AACf;AAEA,OAAO,eAAeC,gBAAgBA,CAACF,KAAa,EAA0B;EAC5E,MAAMC,MAAM,GAAG,MAAMF,kBAAkB,CAACC,KAAK,CAAC;EAC9C,OAAOC,MAAM,EAAEP,YAAY,IAAI,IAAI;AACrC;AAEA,OAAO,eAAeS,aAAaA,CAACH,KAAa,EAA0B;EACzE,MAAMI,UAAU,GAAGf,aAAa,CAACW,KAAK,CAAC;EACvC,IAAI,CAACI,UAAU,EAAE;IACf,OAAO,IAAI;EACb;EAEA,MAAMpB,aAAa,CAACD,IAAI,CAACa,SAAS,EAAEQ,UAAU,CAAC;EAC/C,OAAOA,UAAU;AACnB;AAEA,OAAO,eAAeC,cAAcA,CAACL,KAAa,EAA0B;EAC1E,MAAMI,UAAU,GAAGf,aAAa,CAACW,KAAK,CAAC;EACvC,IAAI,CAACI,UAAU,EAAE;IACf,OAAO,IAAI;EACb;EAEA,MAAMpB,aAAa,CAACD,IAAI,CAACe,UAAU,EAAEM,UAAU,CAAC;EAChD,OAAOA,UAAU;AACnB;AAEA,OAAO,eAAeE,iCAAiCA,CAAA,EAAkB;EACvE,MAAMC,WAAW,GAAG,MAAMf,yBAAyB,CAAC,CAAC;EACrD,MAAMgB,IAAI,GAAGjB,WAAW,CAAC,CAAC,GAAG,WAAW,GAAY,QAAiB;EACrEV,YAAY,CAAC4B,SAAS,CAAC;IACrBD,IAAI;IACJE,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAEH,IAAI,KAAK,WAAW,GAC5B,EAAE,GACFrB,qBAAqB,CAACoB,WAAW,CAACb,YAAY,EAAEa,WAAW,CAACT,UAAU,CAAC;IAC3Ec,KAAK,EAAE;EACT,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -1,11 +1,16 @@
1
1
  "use strict";
2
2
 
3
- const METRO_PORT = '8081';
3
+ export const DEFAULT_METRO_PORT = '8081';
4
+ export const DEFAULT_DAEMON_PORT = '3799';
4
5
  function isValidIpv4(host) {
5
6
  const parts = host.split('.');
6
- if (parts.length !== 4) return false;
7
+ if (parts.length !== 4) {
8
+ return false;
9
+ }
7
10
  return parts.every(part => {
8
- if (!/^\d{1,3}$/.test(part)) return false;
11
+ if (!/^\d{1,3}$/.test(part)) {
12
+ return false;
13
+ }
9
14
  const value = Number(part);
10
15
  return value >= 0 && value <= 255 && String(value) === part;
11
16
  });
@@ -17,31 +22,105 @@ function toUrlInput(raw) {
17
22
  }
18
23
  return `http://${trimmed}`;
19
24
  }
20
- export function normalizeComputerHost(raw) {
25
+ function parseHostAndPort(raw) {
21
26
  const trimmed = raw.trim();
22
- if (!trimmed) return null;
27
+ if (!trimmed) {
28
+ return null;
29
+ }
23
30
  try {
24
31
  const parsed = new URL(toUrlInput(trimmed));
25
- const host = parsed.hostname.trim();
26
- return isValidIpv4(host) ? host : null;
32
+ return {
33
+ host: parsed.hostname.trim(),
34
+ port: parsed.port.trim()
35
+ };
27
36
  } catch {
28
37
  return null;
29
38
  }
30
39
  }
31
- export function buildMetroUrls(rawHost) {
32
- const host = normalizeComputerHost(rawHost);
33
- if (!host) return null;
40
+ export function normalizeComputerHost(raw) {
41
+ const parsed = parseHostAndPort(raw);
42
+ if (!parsed) {
43
+ return null;
44
+ }
45
+ return isValidIpv4(parsed.host) ? parsed.host : null;
46
+ }
47
+ export function normalizePort(raw) {
48
+ const trimmed = raw.trim();
49
+ if (!/^\d+$/.test(trimmed)) {
50
+ return null;
51
+ }
52
+ const value = Number(trimmed);
53
+ if (!Number.isInteger(value) || value < 1 || value > 65535) {
54
+ return null;
55
+ }
56
+ return String(value);
57
+ }
58
+ export function parseComputerTarget(raw) {
59
+ const parsed = parseHostAndPort(raw);
60
+ if (!parsed || !isValidIpv4(parsed.host)) {
61
+ return null;
62
+ }
63
+ const metroPort = parsed.port ? normalizePort(parsed.port) : DEFAULT_METRO_PORT;
64
+ if (!metroPort) {
65
+ return null;
66
+ }
67
+ return {
68
+ computerHost: parsed.host,
69
+ metroPort
70
+ };
71
+ }
72
+ function normalizeMetroHost(rawHost) {
73
+ const parsed = parseHostAndPort(rawHost);
74
+ if (!parsed) {
75
+ return null;
76
+ }
77
+ if (parsed.host === 'localhost') {
78
+ return parsed.host;
79
+ }
80
+ return isValidIpv4(parsed.host) ? parsed.host : null;
81
+ }
82
+ export function buildMetroTarget(rawHost, rawPort = DEFAULT_METRO_PORT) {
83
+ const host = normalizeMetroHost(rawHost);
84
+ if (!host) {
85
+ return null;
86
+ }
87
+ const port = normalizePort(rawPort);
88
+ if (!port) {
89
+ return null;
90
+ }
34
91
  return {
35
- expUrl: `exp://${host}:${METRO_PORT}`,
36
- httpUrl: `http://${host}:${METRO_PORT}`
92
+ host,
93
+ port,
94
+ hostPort: `${host}:${port}`,
95
+ statusUrl: `http://${host}:${port}/status`
96
+ };
97
+ }
98
+ export function buildMetroUrls(rawHost, rawPort = DEFAULT_METRO_PORT) {
99
+ const target = buildMetroTarget(rawHost, rawPort);
100
+ if (!target) {
101
+ return null;
102
+ }
103
+ return {
104
+ expUrl: `exp://${target.hostPort}`,
105
+ httpUrl: `http://${target.hostPort}`
37
106
  };
38
107
  }
39
108
  export function parseMetroQrPayload(payload) {
40
- const computerHost = normalizeComputerHost(payload);
41
- if (!computerHost) return null;
109
+ const target = parseComputerTarget(payload);
110
+ if (!target) {
111
+ return null;
112
+ }
42
113
  return {
43
- computerHost,
114
+ ...target,
44
115
  source: payload
45
116
  };
46
117
  }
118
+ export function buildDaemonDeviceHost(computerHost, daemonPort) {
119
+ const host = normalizeComputerHost(computerHost);
120
+ if (!host) {
121
+ return '';
122
+ }
123
+ const port = normalizePort(daemonPort) ?? DEFAULT_DAEMON_PORT;
124
+ return port === DEFAULT_DAEMON_PORT ? host : `${host}:${port}`;
125
+ }
47
126
  //# sourceMappingURL=devConnectUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["METRO_PORT","isValidIpv4","host","parts","split","length","every","part","test","value","Number","String","toUrlInput","raw","trimmed","trim","normalizeComputerHost","parsed","URL","hostname","buildMetroUrls","rawHost","expUrl","httpUrl","parseMetroQrPayload","payload","computerHost","source"],"sourceRoot":"../../../../src","sources":["features/devConnect/devConnectUtils.ts"],"mappings":";;AAAA,MAAMA,UAAU,GAAG,MAAM;AAYzB,SAASC,WAAWA,CAACC,IAAY,EAAW;EAC1C,MAAMC,KAAK,GAAGD,IAAI,CAACE,KAAK,CAAC,GAAG,CAAC;EAC7B,IAAID,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;EAEpC,OAAOF,KAAK,CAACG,KAAK,CAAEC,IAAI,IAAK;IAC3B,IAAI,CAAC,WAAW,CAACC,IAAI,CAACD,IAAI,CAAC,EAAE,OAAO,KAAK;IACzC,MAAME,KAAK,GAAGC,MAAM,CAACH,IAAI,CAAC;IAC1B,OAAOE,KAAK,IAAI,CAAC,IAAIA,KAAK,IAAI,GAAG,IAAIE,MAAM,CAACF,KAAK,CAAC,KAAKF,IAAI;EAC7D,CAAC,CAAC;AACJ;AAEA,SAASK,UAAUA,CAACC,GAAW,EAAU;EACvC,MAAMC,OAAO,GAAGD,GAAG,CAACE,IAAI,CAAC,CAAC;EAC1B,IAAI,8BAA8B,CAACP,IAAI,CAACM,OAAO,CAAC,EAAE;IAChD,OAAOA,OAAO;EAChB;EACA,OAAO,UAAUA,OAAO,EAAE;AAC5B;AAEA,OAAO,SAASE,qBAAqBA,CAACH,GAAW,EAAiB;EAChE,MAAMC,OAAO,GAAGD,GAAG,CAACE,IAAI,CAAC,CAAC;EAC1B,IAAI,CAACD,OAAO,EAAE,OAAO,IAAI;EAEzB,IAAI;IACF,MAAMG,MAAM,GAAG,IAAIC,GAAG,CAACN,UAAU,CAACE,OAAO,CAAC,CAAC;IAC3C,MAAMZ,IAAI,GAAGe,MAAM,CAACE,QAAQ,CAACJ,IAAI,CAAC,CAAC;IACnC,OAAOd,WAAW,CAACC,IAAI,CAAC,GAAGA,IAAI,GAAG,IAAI;EACxC,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF;AAEA,OAAO,SAASkB,cAAcA,CAACC,OAAe,EAAoB;EAChE,MAAMnB,IAAI,GAAGc,qBAAqB,CAACK,OAAO,CAAC;EAC3C,IAAI,CAACnB,IAAI,EAAE,OAAO,IAAI;EAEtB,OAAO;IACLoB,MAAM,EAAE,SAASpB,IAAI,IAAIF,UAAU,EAAE;IACrCuB,OAAO,EAAE,UAAUrB,IAAI,IAAIF,UAAU;EACvC,CAAC;AACH;AAEA,OAAO,SAASwB,mBAAmBA,CAACC,OAAe,EAA+B;EAChF,MAAMC,YAAY,GAAGV,qBAAqB,CAACS,OAAO,CAAC;EACnD,IAAI,CAACC,YAAY,EAAE,OAAO,IAAI;EAC9B,OAAO;IAAEA,YAAY;IAAEC,MAAM,EAAEF;EAAQ,CAAC;AAC1C","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_METRO_PORT","DEFAULT_DAEMON_PORT","isValidIpv4","host","parts","split","length","every","part","test","value","Number","String","toUrlInput","raw","trimmed","trim","parseHostAndPort","parsed","URL","hostname","port","normalizeComputerHost","normalizePort","isInteger","parseComputerTarget","metroPort","computerHost","normalizeMetroHost","rawHost","buildMetroTarget","rawPort","hostPort","statusUrl","buildMetroUrls","target","expUrl","httpUrl","parseMetroQrPayload","payload","source","buildDaemonDeviceHost","daemonPort"],"sourceRoot":"../../../../src","sources":["features/devConnect/devConnectUtils.ts"],"mappings":"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","ignoreList":[]}
@@ -3,16 +3,21 @@
3
3
  import { DevConnectTab } from './DevConnectTab';
4
4
  import { isCameraKitAvailable } from './cameraKit';
5
5
  import { loadDevConnectPreferences } from './devConnectPreferences';
6
+ import { DEFAULT_DAEMON_PORT, DEFAULT_METRO_PORT } from './devConnectUtils';
7
+ import { isNativeDevConnectAvailable } from './nativeDevConnect';
6
8
  import { isSimulator } from './platformDetect';
7
9
  import { daemonClient } from '../../utils/DaemonClient';
8
- export { buildMetroUrls, normalizeComputerHost, parseMetroQrPayload } from './devConnectUtils';
9
- export { loadDevConnectPreferences, restoreDevConnectSettingsToDaemon, saveComputerHost } from './devConnectPreferences';
10
+ export { buildMetroUrls, normalizeComputerHost, normalizePort, parseComputerTarget, parseMetroQrPayload } from './devConnectUtils';
11
+ export { loadDevConnectPreferences, restoreDevConnectSettingsToDaemon, saveComputerHost, saveComputerTarget, saveDaemonPort, saveMetroPort } from './devConnectPreferences';
10
12
  export const createDevConnectFeature = () => {
11
13
  const listeners = new Set();
12
14
  let state = {
13
15
  isSimulator: isSimulator(),
14
16
  computerHost: '',
17
+ metroPort: DEFAULT_METRO_PORT,
18
+ daemonPort: DEFAULT_DAEMON_PORT,
15
19
  qrAvailable: isCameraKitAvailable(),
20
+ nativeMetroAvailable: isNativeDevConnectAvailable(),
16
21
  streaming: daemonClient.isConnected()
17
22
  };
18
23
  const notify = () => {
@@ -30,7 +35,10 @@ export const createDevConnectFeature = () => {
30
35
  loadDevConnectPreferences().then(preferences => {
31
36
  state = {
32
37
  ...state,
33
- computerHost: preferences.computerHost
38
+ computerHost: preferences.computerHost,
39
+ metroPort: preferences.metroPort,
40
+ daemonPort: preferences.daemonPort,
41
+ nativeMetroAvailable: isNativeDevConnectAvailable()
34
42
  };
35
43
  notify();
36
44
  }).catch(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["DevConnectTab","isCameraKitAvailable","loadDevConnectPreferences","isSimulator","daemonClient","buildMetroUrls","normalizeComputerHost","parseMetroQrPayload","restoreDevConnectSettingsToDaemon","saveComputerHost","createDevConnectFeature","listeners","Set","state","computerHost","qrAvailable","streaming","isConnected","notify","forEach","listener","name","label","renderContent","setup","then","preferences","catch","getSnapshot","cleanup","clear","subscribe","add","delete"],"sourceRoot":"../../../../src","sources":["features/devConnect/index.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,oBAAoB,QAAQ,aAAa;AAClD,SAASC,yBAAyB,QAAQ,yBAAyB;AACnE,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,YAAY,QAAQ,0BAA0B;AAKvD,SACEC,cAAc,EACdC,qBAAqB,EACrBC,mBAAmB,QACd,mBAAmB;AAC1B,SACEL,yBAAyB,EACzBM,iCAAiC,EACjCC,gBAAgB,QACX,yBAAyB;AAEhC,OAAO,MAAMC,uBAAuB,GAAGA,CAAA,KAAqC;EAC1E,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAuB,CAAC;EACjD,IAAIC,KAAsB,GAAG;IAC3BV,WAAW,EAAEA,WAAW,CAAC,CAAC;IAC1BW,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAEd,oBAAoB,CAAC,CAAC;IACnCe,SAAS,EAAEZ,YAAY,CAACa,WAAW,CAAC;EACtC,CAAC;EAED,MAAMC,MAAM,GAAGA,CAAA,KAAM;IACnBL,KAAK,GAAG;MACN,GAAGA,KAAK;MACRG,SAAS,EAAEZ,YAAY,CAACa,WAAW,CAAC;IACtC,CAAC;IACDN,SAAS,CAACQ,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAAC,CAAC,CAAC;EAC7C,CAAC;EAED,OAAO;IACLC,IAAI,EAAE,YAAY;IAClBC,KAAK,EAAE,YAAY;IACnBC,aAAa,EAAEvB,aAAa;IAC5BwB,KAAKA,CAAA,EAAG;MACNtB,yBAAyB,CAAC,CAAC,CAACuB,IAAI,CAAEC,WAAW,IAAK;QAChDb,KAAK,GAAG;UACN,GAAGA,KAAK;UACRC,YAAY,EAAEY,WAAW,CAACZ;QAC5B,CAAC;QACDI,MAAM,CAAC,CAAC;MACV,CAAC,CAAC,CAACS,KAAK,CAAC,MAAM;QACbT,MAAM,CAAC,CAAC;MACV,CAAC,CAAC;IACJ,CAAC;IACDU,WAAW,EAAEA,CAAA,KAAMf,KAAK;IACxBgB,OAAOA,CAAA,EAAG;MACRlB,SAAS,CAACmB,KAAK,CAAC,CAAC;IACnB,CAAC;IACDC,SAASA,CAACX,QAAQ,EAAE;MAClBT,SAAS,CAACqB,GAAG,CAACZ,QAAQ,CAAC;MACvB,OAAO,MAAM;QACXT,SAAS,CAACsB,MAAM,CAACb,QAAQ,CAAC;MAC5B,CAAC;IACH;EACF,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["DevConnectTab","isCameraKitAvailable","loadDevConnectPreferences","DEFAULT_DAEMON_PORT","DEFAULT_METRO_PORT","isNativeDevConnectAvailable","isSimulator","daemonClient","buildMetroUrls","normalizeComputerHost","normalizePort","parseComputerTarget","parseMetroQrPayload","restoreDevConnectSettingsToDaemon","saveComputerHost","saveComputerTarget","saveDaemonPort","saveMetroPort","createDevConnectFeature","listeners","Set","state","computerHost","metroPort","daemonPort","qrAvailable","nativeMetroAvailable","streaming","isConnected","notify","forEach","listener","name","label","renderContent","setup","then","preferences","catch","getSnapshot","cleanup","clear","subscribe","add","delete"],"sourceRoot":"../../../../src","sources":["features/devConnect/index.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,oBAAoB,QAAQ,aAAa;AAClD,SAASC,yBAAyB,QAAQ,yBAAyB;AACnE,SAASC,mBAAmB,EAAEC,kBAAkB,QAAQ,mBAAmB;AAC3E,SAASC,2BAA2B,QAAQ,oBAAoB;AAChE,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,YAAY,QAAQ,0BAA0B;AAKvD,SACEC,cAAc,EACdC,qBAAqB,EACrBC,aAAa,EACbC,mBAAmB,EACnBC,mBAAmB,QACd,mBAAmB;AAC1B,SACEV,yBAAyB,EACzBW,iCAAiC,EACjCC,gBAAgB,EAChBC,kBAAkB,EAClBC,cAAc,EACdC,aAAa,QACR,yBAAyB;AAEhC,OAAO,MAAMC,uBAAuB,GAAGA,CAAA,KAAqC;EAC1E,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAuB,CAAC;EACjD,IAAIC,KAAsB,GAAG;IAC3Bf,WAAW,EAAEA,WAAW,CAAC,CAAC;IAC1BgB,YAAY,EAAE,EAAE;IAChBC,SAAS,EAAEnB,kBAAkB;IAC7BoB,UAAU,EAAErB,mBAAmB;IAC/BsB,WAAW,EAAExB,oBAAoB,CAAC,CAAC;IACnCyB,oBAAoB,EAAErB,2BAA2B,CAAC,CAAC;IACnDsB,SAAS,EAAEpB,YAAY,CAACqB,WAAW,CAAC;EACtC,CAAC;EAED,MAAMC,MAAM,GAAGA,CAAA,KAAM;IACnBR,KAAK,GAAG;MACN,GAAGA,KAAK;MACRM,SAAS,EAAEpB,YAAY,CAACqB,WAAW,CAAC;IACtC,CAAC;IACDT,SAAS,CAACW,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAAC,CAAC,CAAC;EAC7C,CAAC;EAED,OAAO;IACLC,IAAI,EAAE,YAAY;IAClBC,KAAK,EAAE,YAAY;IACnBC,aAAa,EAAElC,aAAa;IAC5BmC,KAAKA,CAAA,EAAG;MACNjC,yBAAyB,CAAC,CAAC,CAACkC,IAAI,CAAEC,WAAW,IAAK;QAChDhB,KAAK,GAAG;UACN,GAAGA,KAAK;UACRC,YAAY,EAAEe,WAAW,CAACf,YAAY;UACtCC,SAAS,EAAEc,WAAW,CAACd,SAAS;UAChCC,UAAU,EAAEa,WAAW,CAACb,UAAU;UAClCE,oBAAoB,EAAErB,2BAA2B,CAAC;QACpD,CAAC;QACDwB,MAAM,CAAC,CAAC;MACV,CAAC,CAAC,CAACS,KAAK,CAAC,MAAM;QACbT,MAAM,CAAC,CAAC;MACV,CAAC,CAAC;IACJ,CAAC;IACDU,WAAW,EAAEA,CAAA,KAAMlB,KAAK;IACxBmB,OAAOA,CAAA,EAAG;MACRrB,SAAS,CAACsB,KAAK,CAAC,CAAC;IACnB,CAAC;IACDC,SAASA,CAACX,QAAQ,EAAE;MAClBZ,SAAS,CAACwB,GAAG,CAACZ,QAAQ,CAAC;MACvB,OAAO,MAAM;QACXZ,SAAS,CAACyB,MAAM,CAACb,QAAQ,CAAC;MAC5B,CAAC;IACH;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ import { NativeModules } from 'react-native';
4
+ import { buildMetroTarget } from './devConnectUtils';
5
+ function getNativeModule() {
6
+ const nativeModule = NativeModules.DebugToolkitDevConnect;
7
+ if (nativeModule && typeof nativeModule.applyMetroHost === 'function' && typeof nativeModule.resetMetroHost === 'function') {
8
+ return nativeModule;
9
+ }
10
+ return null;
11
+ }
12
+ export function isNativeDevConnectAvailable() {
13
+ return getNativeModule() !== null;
14
+ }
15
+ async function checkMetroStatus(statusUrl) {
16
+ const fetchImpl = globalThis.fetch;
17
+ if (!fetchImpl) {
18
+ return {
19
+ ok: false,
20
+ reason: 'fetch_unavailable',
21
+ statusUrl,
22
+ error: 'global fetch is not available'
23
+ };
24
+ }
25
+ try {
26
+ const response = await fetchImpl(statusUrl, {
27
+ method: 'GET'
28
+ });
29
+ const body = typeof response.text === 'function' ? await response.text() : '';
30
+ if (response.ok === false || !body.includes('packager-status:running')) {
31
+ return {
32
+ ok: false,
33
+ reason: 'metro_unreachable',
34
+ statusUrl,
35
+ error: body || 'Metro status endpoint did not report running'
36
+ };
37
+ }
38
+ return null;
39
+ } catch (error) {
40
+ return {
41
+ ok: false,
42
+ reason: 'metro_unreachable',
43
+ statusUrl,
44
+ error: error instanceof Error ? error.message : String(error)
45
+ };
46
+ }
47
+ }
48
+ export async function applyMetroBundle(host, port) {
49
+ const target = buildMetroTarget(host, port);
50
+ if (!target) {
51
+ return {
52
+ ok: false,
53
+ reason: 'invalid_target'
54
+ };
55
+ }
56
+ const nativeModule = getNativeModule();
57
+ if (!nativeModule) {
58
+ return {
59
+ ok: false,
60
+ reason: 'native_unavailable'
61
+ };
62
+ }
63
+ const statusError = await checkMetroStatus(target.statusUrl);
64
+ if (statusError) {
65
+ return statusError;
66
+ }
67
+ try {
68
+ const result = await nativeModule.applyMetroHost(target.hostPort);
69
+ return {
70
+ ok: true,
71
+ hostPort: result && typeof result.hostPort === 'string' ? result.hostPort : target.hostPort
72
+ };
73
+ } catch (error) {
74
+ return {
75
+ ok: false,
76
+ reason: 'native_error',
77
+ error: error instanceof Error ? error.message : String(error)
78
+ };
79
+ }
80
+ }
81
+ export async function resetMetroBundle() {
82
+ const nativeModule = getNativeModule();
83
+ if (!nativeModule) {
84
+ return {
85
+ ok: false,
86
+ reason: 'native_unavailable'
87
+ };
88
+ }
89
+ try {
90
+ await nativeModule.resetMetroHost();
91
+ return {
92
+ ok: true
93
+ };
94
+ } catch (error) {
95
+ return {
96
+ ok: false,
97
+ reason: 'native_error',
98
+ error: error instanceof Error ? error.message : String(error)
99
+ };
100
+ }
101
+ }
102
+ //# sourceMappingURL=nativeDevConnect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeModules","buildMetroTarget","getNativeModule","nativeModule","DebugToolkitDevConnect","applyMetroHost","resetMetroHost","isNativeDevConnectAvailable","checkMetroStatus","statusUrl","fetchImpl","globalThis","fetch","ok","reason","error","response","method","body","text","includes","Error","message","String","applyMetroBundle","host","port","target","statusError","result","hostPort","resetMetroBundle"],"sourceRoot":"../../../../src","sources":["features/devConnect/nativeDevConnect.ts"],"mappings":"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","ignoreList":[]}
@@ -1,25 +1,21 @@
1
1
  "use strict";
2
2
 
3
- import { NativeModules, Platform } from 'react-native';
3
+ import { Platform } from 'react-native';
4
4
  export function isSimulator() {
5
5
  const {
6
6
  OS
7
7
  } = Platform;
8
+ const constants = Platform.constants ?? {};
8
9
  if (OS === 'android') {
9
- const constants = Platform.constants;
10
- if (constants.isEmulator === true) return true;
11
- const model = String(constants.Model ?? '').toLowerCase();
10
+ if (constants.isEmulator === true) {
11
+ return true;
12
+ }
13
+ const model = String(constants.Model ?? constants.model ?? '').toLowerCase();
12
14
  return model.includes('sdk') || model.includes('emulator') || model.includes('google_sdk');
13
15
  }
14
16
  if (OS === 'ios') {
15
- // NativeModules.KCKFCSupportManager is absent on simulator,
16
- // but the most reliable check is the DeviceInfo model name.
17
- const deviceInfo = NativeModules.DeviceInfo ?? NativeModules.PlatformConstants;
18
- if (deviceInfo) {
19
- const model = String(deviceInfo.model ?? '').toLowerCase();
20
- if (model.includes('simulator')) return true;
21
- }
22
- return false;
17
+ const model = String(constants.model ?? '').toLowerCase();
18
+ return model.includes('simulator');
23
19
  }
24
20
  return false;
25
21
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","isSimulator","OS","constants","isEmulator","model","String","Model","toLowerCase","includes","deviceInfo","DeviceInfo","PlatformConstants"],"sourceRoot":"../../../../src","sources":["features/devConnect/platformDetect.ts"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,OAAO,SAASC,WAAWA,CAAA,EAAY;EACrC,MAAM;IAAEC;EAAG,CAAC,GAAGF,QAAQ;EAEvB,IAAIE,EAAE,KAAK,SAAS,EAAE;IACpB,MAAMC,SAAS,GAAGH,QAAQ,CAACG,SAAoC;IAC/D,IAAIA,SAAS,CAACC,UAAU,KAAK,IAAI,EAAE,OAAO,IAAI;IAC9C,MAAMC,KAAK,GAAGC,MAAM,CAACH,SAAS,CAACI,KAAK,IAAI,EAAE,CAAC,CAACC,WAAW,CAAC,CAAC;IACzD,OAAOH,KAAK,CAACI,QAAQ,CAAC,KAAK,CAAC,IAAIJ,KAAK,CAACI,QAAQ,CAAC,UAAU,CAAC,IAAIJ,KAAK,CAACI,QAAQ,CAAC,YAAY,CAAC;EAC5F;EAEA,IAAIP,EAAE,KAAK,KAAK,EAAE;IAChB;IACA;IACA,MAAMQ,UAAU,GAAGX,aAAa,CAACY,UAAU,IACtCZ,aAAa,CAACa,iBAAiB;IACpC,IAAIF,UAAU,EAAE;MACd,MAAML,KAAK,GAAGC,MAAM,CAACI,UAAU,CAACL,KAAK,IAAI,EAAE,CAAC,CAACG,WAAW,CAAC,CAAC;MAC1D,IAAIH,KAAK,CAACI,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,IAAI;IAC9C;IACA,OAAO,KAAK;EACd;EAEA,OAAO,KAAK;AACd","ignoreList":[]}
1
+ {"version":3,"names":["Platform","isSimulator","OS","constants","isEmulator","model","String","Model","toLowerCase","includes"],"sourceRoot":"../../../../src","sources":["features/devConnect/platformDetect.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AAEvC,OAAO,SAASC,WAAWA,CAAA,EAAY;EACrC,MAAM;IAAEC;EAAG,CAAC,GAAGF,QAAQ;EACvB,MAAMG,SAAS,GAAIH,QAAQ,CAACG,SAAS,IAAI,CAAC,CAA6B;EAEvE,IAAID,EAAE,KAAK,SAAS,EAAE;IACpB,IAAIC,SAAS,CAACC,UAAU,KAAK,IAAI,EAAE;MACjC,OAAO,IAAI;IACb;IACA,MAAMC,KAAK,GAAGC,MAAM,CAACH,SAAS,CAACI,KAAK,IAAIJ,SAAS,CAACE,KAAK,IAAI,EAAE,CAAC,CAACG,WAAW,CAAC,CAAC;IAC5E,OAAOH,KAAK,CAACI,QAAQ,CAAC,KAAK,CAAC,IAAIJ,KAAK,CAACI,QAAQ,CAAC,UAAU,CAAC,IAAIJ,KAAK,CAACI,QAAQ,CAAC,YAAY,CAAC;EAC5F;EAEA,IAAIP,EAAE,KAAK,KAAK,EAAE;IAChB,MAAMG,KAAK,GAAGC,MAAM,CAACH,SAAS,CAACE,KAAK,IAAI,EAAE,CAAC,CAACG,WAAW,CAAC,CAAC;IACzD,OAAOH,KAAK,CAACI,QAAQ,CAAC,WAAW,CAAC;EACpC;EAEA,OAAO,KAAK;AACd","ignoreList":[]}
@@ -1,13 +1,26 @@
1
1
  "use strict";
2
2
 
3
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
-
5
3
  const memoryStore = new Map();
6
4
  function loadAsyncStorage() {
7
5
  try {
8
- // eslint-disable-next-line @typescript-eslint/no-require-imports
9
6
  const mod = require('@react-native-async-storage/async-storage');
10
- if (mod && typeof mod.getItem === 'function') return mod;
7
+ if (mod && typeof mod.getItem === 'function') {
8
+ return mod;
9
+ }
10
+ return null;
11
+ } catch {
12
+ return null;
13
+ }
14
+ }
15
+ function loadNativePreferences() {
16
+ try {
17
+ const {
18
+ NativeModules
19
+ } = require('react-native');
20
+ const mod = NativeModules?.DebugToolkitDevConnect;
21
+ if (mod && typeof mod.getPreference === 'function' && typeof mod.setPreference === 'function') {
22
+ return mod;
23
+ }
11
24
  return null;
12
25
  } catch {
13
26
  return null;
@@ -19,6 +32,15 @@ export async function setPreference(key, value) {
19
32
  if (AsyncStorage) {
20
33
  try {
21
34
  await AsyncStorage.setItem(key, value);
35
+ return;
36
+ } catch {
37
+ // degrade to memory only
38
+ }
39
+ }
40
+ const nativePreferences = loadNativePreferences();
41
+ if (nativePreferences) {
42
+ try {
43
+ await nativePreferences.setPreference(key, value);
22
44
  } catch {
23
45
  // degrade to memory only
24
46
  }
@@ -29,7 +51,20 @@ export async function getPreference(key) {
29
51
  if (AsyncStorage) {
30
52
  try {
31
53
  const val = await AsyncStorage.getItem(key);
32
- if (val !== null) return val;
54
+ if (val !== null) {
55
+ return val;
56
+ }
57
+ } catch {
58
+ // fall through to memory
59
+ }
60
+ }
61
+ const nativePreferences = loadNativePreferences();
62
+ if (nativePreferences) {
63
+ try {
64
+ const val = await nativePreferences.getPreference(key);
65
+ if (val !== null) {
66
+ return val;
67
+ }
33
68
  } catch {
34
69
  // fall through to memory
35
70
  }
@@ -42,6 +77,8 @@ export const KEYS = {
42
77
  consoleLogs: '@react_native_debug_toolkit/console_logs',
43
78
  networkLogs: '@react_native_debug_toolkit/network_logs',
44
79
  trackLogs: '@react_native_debug_toolkit/track_logs',
45
- computerHost: '@react_native_debug_toolkit/computer_host'
80
+ computerHost: '@react_native_debug_toolkit/computer_host',
81
+ metroPort: '@react_native_debug_toolkit/metro_port',
82
+ daemonPort: '@react_native_debug_toolkit/daemon_port'
46
83
  };
47
84
  //# sourceMappingURL=debugPreferences.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["memoryStore","Map","loadAsyncStorage","mod","require","getItem","setPreference","key","value","set","AsyncStorage","setItem","getPreference","val","get","KEYS","fabPosition","lastTab","consoleLogs","networkLogs","trackLogs","computerHost"],"sourceRoot":"../../../src","sources":["utils/debugPreferences.ts"],"mappings":";;AAAA;;AAGA,MAAMA,WAAW,GAAG,IAAIC,GAAG,CAAiB,CAAC;AAE7C,SAASC,gBAAgBA,CAAA,EAA4B;EACnD,IAAI;IACF;IACA,MAAMC,GAAG,GAAGC,OAAO,CAAC,2CAA2C,CAAC;IAChE,IAAID,GAAG,IAAI,OAAOA,GAAG,CAACE,OAAO,KAAK,UAAU,EAAE,OAAOF,GAAG;IACxD,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF;AAEA,OAAO,eAAeG,aAAaA,CAACC,GAAW,EAAEC,KAAa,EAAiB;EAC7ER,WAAW,CAACS,GAAG,CAACF,GAAG,EAAEC,KAAK,CAAC;EAC3B,MAAME,YAAY,GAAGR,gBAAgB,CAAC,CAAC;EACvC,IAAIQ,YAAY,EAAE;IAChB,IAAI;MACF,MAAMA,YAAY,CAACC,OAAO,CAACJ,GAAG,EAAEC,KAAK,CAAC;IACxC,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;AACF;AAEA,OAAO,eAAeI,aAAaA,CAACL,GAAW,EAA0B;EACvE,MAAMG,YAAY,GAAGR,gBAAgB,CAAC,CAAC;EACvC,IAAIQ,YAAY,EAAE;IAChB,IAAI;MACF,MAAMG,GAAG,GAAG,MAAMH,YAAY,CAACL,OAAO,CAACE,GAAG,CAAC;MAC3C,IAAIM,GAAG,KAAK,IAAI,EAAE,OAAOA,GAAG;IAC9B,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;EACA,OAAOb,WAAW,CAACc,GAAG,CAACP,GAAG,CAAC,IAAI,IAAI;AACrC;AAEA,OAAO,MAAMQ,IAAI,GAAG;EAClBC,WAAW,EAAE,0CAA0C;EACvDC,OAAO,EAAE,sCAAsC;EAC/CC,WAAW,EAAE,0CAA0C;EACvDC,WAAW,EAAE,0CAA0C;EACvDC,SAAS,EAAE,wCAAwC;EACnDC,YAAY,EAAE;AAChB,CAAU","ignoreList":[]}
1
+ {"version":3,"names":["memoryStore","Map","loadAsyncStorage","mod","require","getItem","loadNativePreferences","NativeModules","DebugToolkitDevConnect","getPreference","setPreference","key","value","set","AsyncStorage","setItem","nativePreferences","val","get","KEYS","fabPosition","lastTab","consoleLogs","networkLogs","trackLogs","computerHost","metroPort","daemonPort"],"sourceRoot":"../../../src","sources":["utils/debugPreferences.ts"],"mappings":";;AAGA,MAAMA,WAAW,GAAG,IAAIC,GAAG,CAAiB,CAAC;AAE7C,SAASC,gBAAgBA,CAAA,EAA4B;EACnD,IAAI;IACF,MAAMC,GAAG,GAAGC,OAAO,CAAC,2CAA2C,CAAC;IAChE,IAAID,GAAG,IAAI,OAAOA,GAAG,CAACE,OAAO,KAAK,UAAU,EAAE;MAC5C,OAAOF,GAAG;IACZ;IACA,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF;AAEA,SAASG,qBAAqBA,CAAA,EAAiC;EAC7D,IAAI;IACF,MAAM;MAAEC;IAAc,CAAC,GAAGH,OAAO,CAAC,cAAc,CAAoF;IACpI,MAAMD,GAAG,GAAGI,aAAa,EAAEC,sBAAsB;IACjD,IACEL,GAAG,IACH,OAAOA,GAAG,CAACM,aAAa,KAAK,UAAU,IACvC,OAAON,GAAG,CAACO,aAAa,KAAK,UAAU,EACvC;MACA,OAAOP,GAAG;IACZ;IACA,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF;AAEA,OAAO,eAAeO,aAAaA,CAACC,GAAW,EAAEC,KAAa,EAAiB;EAC7EZ,WAAW,CAACa,GAAG,CAACF,GAAG,EAAEC,KAAK,CAAC;EAC3B,MAAME,YAAY,GAAGZ,gBAAgB,CAAC,CAAC;EACvC,IAAIY,YAAY,EAAE;IAChB,IAAI;MACF,MAAMA,YAAY,CAACC,OAAO,CAACJ,GAAG,EAAEC,KAAK,CAAC;MACtC;IACF,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;EAEA,MAAMI,iBAAiB,GAAGV,qBAAqB,CAAC,CAAC;EACjD,IAAIU,iBAAiB,EAAE;IACrB,IAAI;MACF,MAAMA,iBAAiB,CAACN,aAAa,CAACC,GAAG,EAAEC,KAAK,CAAC;IACnD,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;AACF;AAEA,OAAO,eAAeH,aAAaA,CAACE,GAAW,EAA0B;EACvE,MAAMG,YAAY,GAAGZ,gBAAgB,CAAC,CAAC;EACvC,IAAIY,YAAY,EAAE;IAChB,IAAI;MACF,MAAMG,GAAG,GAAG,MAAMH,YAAY,CAACT,OAAO,CAACM,GAAG,CAAC;MAC3C,IAAIM,GAAG,KAAK,IAAI,EAAE;QAChB,OAAOA,GAAG;MACZ;IACF,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;EAEA,MAAMD,iBAAiB,GAAGV,qBAAqB,CAAC,CAAC;EACjD,IAAIU,iBAAiB,EAAE;IACrB,IAAI;MACF,MAAMC,GAAG,GAAG,MAAMD,iBAAiB,CAACP,aAAa,CAACE,GAAG,CAAC;MACtD,IAAIM,GAAG,KAAK,IAAI,EAAE;QAChB,OAAOA,GAAG;MACZ;IACF,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;EAEA,OAAOjB,WAAW,CAACkB,GAAG,CAACP,GAAG,CAAC,IAAI,IAAI;AACrC;AAEA,OAAO,MAAMQ,IAAI,GAAG;EAClBC,WAAW,EAAE,0CAA0C;EACvDC,OAAO,EAAE,sCAAsC;EAC/CC,WAAW,EAAE,0CAA0C;EACvDC,WAAW,EAAE,0CAA0C;EACvDC,SAAS,EAAE,wCAAwC;EACnDC,YAAY,EAAE,2CAA2C;EACzDC,SAAS,EAAE,wCAAwC;EACnDC,UAAU,EAAE;AACd,CAAU","ignoreList":[]}
@@ -1,9 +1,10 @@
1
1
  import React from 'react';
2
+ import { type ParsedComputerTarget } from './devConnectUtils';
2
3
  interface DevConnectQrScannerProps {
3
4
  visible: boolean;
4
5
  onClose: () => void;
5
- onScanHost: (host: string) => void;
6
+ onScanTarget: (target: ParsedComputerTarget) => void;
6
7
  }
7
- export declare function DevConnectQrScanner({ visible, onClose, onScanHost }: DevConnectQrScannerProps): React.JSX.Element | null;
8
+ export declare function DevConnectQrScanner({ visible, onClose, onScanTarget }: DevConnectQrScannerProps): React.JSX.Element | null;
8
9
  export {};
9
10
  //# sourceMappingURL=DevConnectQrScanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DevConnectQrScanner.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/DevConnectQrScanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAiDnF,UAAU,wBAAwB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,wBAAwB,4BAwF7F"}
1
+ {"version":3,"file":"DevConnectQrScanner.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/DevConnectQrScanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAenF,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAmCnF,UAAU,wBAAwB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACtD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,wBAAwB,4BAyG/F"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevConnectTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/DevConnectTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAYjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAY3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQ/C,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,uBAAuB,CAAC,eAAe,CAAC,qBA8RnF"}
1
+ {"version":3,"file":"DevConnectTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/DevConnectTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAYjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AA0B3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA2B/C,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,uBAAuB,CAAC,eAAe,CAAC,qBA8XnF"}
@@ -1,7 +1,13 @@
1
+ import { type ParsedComputerTarget } from './devConnectUtils';
1
2
  export interface DevConnectPreferences {
2
3
  computerHost: string;
4
+ metroPort: string;
5
+ daemonPort: string;
3
6
  }
4
7
  export declare function loadDevConnectPreferences(): Promise<DevConnectPreferences>;
8
+ export declare function saveComputerTarget(value: string): Promise<ParsedComputerTarget | null>;
5
9
  export declare function saveComputerHost(value: string): Promise<string | null>;
10
+ export declare function saveMetroPort(value: string): Promise<string | null>;
11
+ export declare function saveDaemonPort(value: string): Promise<string | null>;
6
12
  export declare function restoreDevConnectSettingsToDaemon(): Promise<void>;
7
13
  //# sourceMappingURL=devConnectPreferences.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"devConnectPreferences.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/devConnectPreferences.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAKhF;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAK5E;AAED,wBAAsB,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC,CASvE"}
1
+ {"version":3,"file":"devConnectPreferences.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/devConnectPreferences.ts"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAShF;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAS5F;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAG5E;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQzE;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQ1E;AAED,wBAAsB,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC,CAWvE"}
@@ -1,12 +1,29 @@
1
+ export declare const DEFAULT_METRO_PORT = "8081";
2
+ export declare const DEFAULT_DAEMON_PORT = "3799";
1
3
  export interface MetroUrls {
2
4
  expUrl: string;
3
5
  httpUrl: string;
4
6
  }
7
+ export interface MetroTarget {
8
+ host: string;
9
+ port: string;
10
+ hostPort: string;
11
+ statusUrl: string;
12
+ }
13
+ export interface ParsedComputerTarget {
14
+ computerHost: string;
15
+ metroPort: string;
16
+ }
5
17
  export interface ParsedMetroQrPayload {
6
18
  computerHost: string;
19
+ metroPort: string;
7
20
  source: string;
8
21
  }
9
22
  export declare function normalizeComputerHost(raw: string): string | null;
10
- export declare function buildMetroUrls(rawHost: string): MetroUrls | null;
23
+ export declare function normalizePort(raw: string): string | null;
24
+ export declare function parseComputerTarget(raw: string): ParsedComputerTarget | null;
25
+ export declare function buildMetroTarget(rawHost: string, rawPort?: string): MetroTarget | null;
26
+ export declare function buildMetroUrls(rawHost: string, rawPort?: string): MetroUrls | null;
11
27
  export declare function parseMetroQrPayload(payload: string): ParsedMetroQrPayload | null;
28
+ export declare function buildDaemonDeviceHost(computerHost: string, daemonPort: string): string;
12
29
  //# sourceMappingURL=devConnectUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"devConnectUtils.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/devConnectUtils.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAqBD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWhE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAQhE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAIhF"}
1
+ {"version":3,"file":"devConnectUtils.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/devConnectUtils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAE1C,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AA0CD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOhE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWxD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAiB5E;AAaD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,SAAqB,GAAG,WAAW,GAAG,IAAI,CAiBlG;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,SAAqB,GAAG,SAAS,GAAG,IAAI,CAU9F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAMhF;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAQtF"}
@@ -1,7 +1,7 @@
1
1
  import type { DebugFeature } from '../../types';
2
2
  import type { DevConnectState } from './types';
3
3
  export type { DevConnectState } from './types';
4
- export { buildMetroUrls, normalizeComputerHost, parseMetroQrPayload, } from './devConnectUtils';
5
- export { loadDevConnectPreferences, restoreDevConnectSettingsToDaemon, saveComputerHost, } from './devConnectPreferences';
4
+ export { buildMetroUrls, normalizeComputerHost, normalizePort, parseComputerTarget, parseMetroQrPayload, } from './devConnectUtils';
5
+ export { loadDevConnectPreferences, restoreDevConnectSettingsToDaemon, saveComputerHost, saveComputerTarget, saveDaemonPort, saveMetroPort, } from './devConnectPreferences';
6
6
  export declare const createDevConnectFeature: () => DebugFeature<DevConnectState>;
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,uBAAuB,QAAO,YAAY,CAAC,eAAe,CA2CtE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,aAAa,GACd,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,uBAAuB,QAAO,YAAY,CAAC,eAAe,CAiDtE,CAAC"}