react-native-debug-toolkit 3.2.0 → 3.2.2
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/README.md +13 -2
- package/README.zh-CN.md +13 -2
- package/android/build.gradle +34 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/java/com/reactnativedebugtoolkit/DebugToolkitDevConnectModule.java +70 -0
- package/android/src/main/java/com/reactnativedebugtoolkit/ReactNativeDebugToolkitPackage.java +25 -0
- package/ios/DebugToolkitDevConnect.mm +67 -0
- package/lib/commonjs/features/devConnect/DevConnectQrScanner.js +94 -26
- package/lib/commonjs/features/devConnect/DevConnectQrScanner.js.map +1 -1
- package/lib/commonjs/features/devConnect/DevConnectTab.js +261 -75
- package/lib/commonjs/features/devConnect/DevConnectTab.js.map +1 -1
- package/lib/commonjs/features/devConnect/devConnectPreferences.js +35 -5
- package/lib/commonjs/features/devConnect/devConnectPreferences.js.map +1 -1
- package/lib/commonjs/features/devConnect/devConnectUtils.js +99 -15
- package/lib/commonjs/features/devConnect/devConnectUtils.js.map +1 -1
- package/lib/commonjs/features/devConnect/index.js +39 -2
- package/lib/commonjs/features/devConnect/index.js.map +1 -1
- package/lib/commonjs/features/devConnect/nativeDevConnect.js +110 -0
- package/lib/commonjs/features/devConnect/nativeDevConnect.js.map +1 -0
- package/lib/commonjs/features/devConnect/platformDetect.js +7 -11
- package/lib/commonjs/features/devConnect/platformDetect.js.map +1 -1
- package/lib/commonjs/utils/debugPreferences.js +43 -6
- package/lib/commonjs/utils/debugPreferences.js.map +1 -1
- package/lib/module/features/devConnect/DevConnectQrScanner.js +95 -27
- package/lib/module/features/devConnect/DevConnectQrScanner.js.map +1 -1
- package/lib/module/features/devConnect/DevConnectTab.js +265 -79
- package/lib/module/features/devConnect/DevConnectTab.js.map +1 -1
- package/lib/module/features/devConnect/devConnectPreferences.js +33 -6
- package/lib/module/features/devConnect/devConnectPreferences.js.map +1 -1
- package/lib/module/features/devConnect/devConnectUtils.js +94 -15
- package/lib/module/features/devConnect/devConnectUtils.js.map +1 -1
- package/lib/module/features/devConnect/index.js +11 -3
- package/lib/module/features/devConnect/index.js.map +1 -1
- package/lib/module/features/devConnect/nativeDevConnect.js +104 -0
- package/lib/module/features/devConnect/nativeDevConnect.js.map +1 -0
- package/lib/module/features/devConnect/platformDetect.js +8 -12
- package/lib/module/features/devConnect/platformDetect.js.map +1 -1
- package/lib/module/utils/debugPreferences.js +43 -6
- package/lib/module/utils/debugPreferences.js.map +1 -1
- package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts +3 -2
- package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts.map +1 -1
- package/lib/typescript/src/features/devConnect/DevConnectTab.d.ts.map +1 -1
- package/lib/typescript/src/features/devConnect/devConnectPreferences.d.ts +6 -0
- package/lib/typescript/src/features/devConnect/devConnectPreferences.d.ts.map +1 -1
- package/lib/typescript/src/features/devConnect/devConnectUtils.d.ts +18 -1
- package/lib/typescript/src/features/devConnect/devConnectUtils.d.ts.map +1 -1
- package/lib/typescript/src/features/devConnect/index.d.ts +2 -2
- package/lib/typescript/src/features/devConnect/index.d.ts.map +1 -1
- package/lib/typescript/src/features/devConnect/nativeDevConnect.d.ts +17 -0
- package/lib/typescript/src/features/devConnect/nativeDevConnect.d.ts.map +1 -0
- package/lib/typescript/src/features/devConnect/platformDetect.d.ts.map +1 -1
- package/lib/typescript/src/features/devConnect/types.d.ts +3 -0
- package/lib/typescript/src/features/devConnect/types.d.ts.map +1 -1
- package/lib/typescript/src/utils/debugPreferences.d.ts +2 -0
- package/lib/typescript/src/utils/debugPreferences.d.ts.map +1 -1
- package/package.json +4 -1
- package/react-native-debug-toolkit.podspec +18 -0
- package/src/features/devConnect/DevConnectQrScanner.tsx +90 -28
- package/src/features/devConnect/DevConnectTab.tsx +257 -55
- package/src/features/devConnect/devConnectPreferences.ts +50 -5
- package/src/features/devConnect/devConnectUtils.ts +122 -15
- package/src/features/devConnect/index.ts +13 -0
- package/src/features/devConnect/nativeDevConnect.ts +128 -0
- package/src/features/devConnect/platformDetect.ts +8 -13
- package/src/features/devConnect/types.ts +3 -0
- package/src/utils/debugPreferences.ts +49 -4
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const
|
|
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)
|
|
7
|
+
if (parts.length !== 4) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
7
10
|
return parts.every(part => {
|
|
8
|
-
if (!/^\d{1,3}$/.test(part))
|
|
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
|
-
|
|
25
|
+
function parseHostAndPort(raw) {
|
|
21
26
|
const trimmed = raw.trim();
|
|
22
|
-
if (!trimmed)
|
|
27
|
+
if (!trimmed) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
23
30
|
try {
|
|
24
31
|
const parsed = new URL(toUrlInput(trimmed));
|
|
25
|
-
|
|
26
|
-
|
|
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
|
|
32
|
-
const
|
|
33
|
-
if (!
|
|
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
|
-
|
|
36
|
-
|
|
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
|
|
41
|
-
if (!
|
|
109
|
+
const target = parseComputerTarget(payload);
|
|
110
|
+
if (!target) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
42
113
|
return {
|
|
43
|
-
|
|
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":["
|
|
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,
|
|
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,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { DevSettings, 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
|
+
DevSettings.reload?.('DebugToolkit DevConnect Metro host changed');
|
|
70
|
+
return {
|
|
71
|
+
ok: true,
|
|
72
|
+
hostPort: result && typeof result.hostPort === 'string' ? result.hostPort : target.hostPort
|
|
73
|
+
};
|
|
74
|
+
} catch (error) {
|
|
75
|
+
return {
|
|
76
|
+
ok: false,
|
|
77
|
+
reason: 'native_error',
|
|
78
|
+
error: error instanceof Error ? error.message : String(error)
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export async function resetMetroBundle() {
|
|
83
|
+
const nativeModule = getNativeModule();
|
|
84
|
+
if (!nativeModule) {
|
|
85
|
+
return {
|
|
86
|
+
ok: false,
|
|
87
|
+
reason: 'native_unavailable'
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
await nativeModule.resetMetroHost();
|
|
92
|
+
DevSettings.reload?.('DebugToolkit DevConnect Metro host reset');
|
|
93
|
+
return {
|
|
94
|
+
ok: true
|
|
95
|
+
};
|
|
96
|
+
} catch (error) {
|
|
97
|
+
return {
|
|
98
|
+
ok: false,
|
|
99
|
+
reason: 'native_error',
|
|
100
|
+
error: error instanceof Error ? error.message : String(error)
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=nativeDevConnect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DevSettings","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","reload","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 {
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
16
|
-
|
|
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":["
|
|
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')
|
|
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)
|
|
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","
|
|
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
|
-
|
|
6
|
+
onScanTarget: (target: ParsedComputerTarget) => void;
|
|
6
7
|
}
|
|
7
|
-
export declare function DevConnectQrScanner({ visible, onClose,
|
|
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,
|
|
1
|
+
{"version":3,"file":"DevConnectQrScanner.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/DevConnectQrScanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAgBnF,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,4BAiG/F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevConnectTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/DevConnectTab.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
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":"
|
|
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
|
|
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":"
|
|
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":"
|
|
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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type MetroBundleFailureReason = 'invalid_target' | 'native_unavailable' | 'fetch_unavailable' | 'metro_unreachable' | 'native_error';
|
|
2
|
+
export type MetroBundleResult = {
|
|
3
|
+
ok: true;
|
|
4
|
+
hostPort: string;
|
|
5
|
+
} | {
|
|
6
|
+
ok: false;
|
|
7
|
+
reason: MetroBundleFailureReason;
|
|
8
|
+
error?: string;
|
|
9
|
+
statusUrl?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function isNativeDevConnectAvailable(): boolean;
|
|
12
|
+
export declare function applyMetroBundle(host: string, port: string): Promise<MetroBundleResult>;
|
|
13
|
+
export declare function resetMetroBundle(): Promise<MetroBundleResult | {
|
|
14
|
+
ok: true;
|
|
15
|
+
}>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=nativeDevConnect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nativeDevConnect.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/nativeDevConnect.ts"],"names":[],"mappings":"AAUA,KAAK,wBAAwB,GACzB,gBAAgB,GAChB,oBAAoB,GACpB,mBAAmB,GACnB,mBAAmB,GACnB,cAAc,CAAC;AAEnB,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,wBAAwB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAsBxF,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAmCD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8B7F;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,CAiBlF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformDetect.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/platformDetect.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"platformDetect.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/platformDetect.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,IAAI,OAAO,CAkBrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;CACpB"}
|
|
@@ -7,5 +7,7 @@ export declare const KEYS: {
|
|
|
7
7
|
readonly networkLogs: "@react_native_debug_toolkit/network_logs";
|
|
8
8
|
readonly trackLogs: "@react_native_debug_toolkit/track_logs";
|
|
9
9
|
readonly computerHost: "@react_native_debug_toolkit/computer_host";
|
|
10
|
+
readonly metroPort: "@react_native_debug_toolkit/metro_port";
|
|
11
|
+
readonly daemonPort: "@react_native_debug_toolkit/daemon_port";
|
|
10
12
|
};
|
|
11
13
|
//# sourceMappingURL=debugPreferences.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debugPreferences.d.ts","sourceRoot":"","sources":["../../../../src/utils/debugPreferences.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"debugPreferences.d.ts","sourceRoot":"","sources":["../../../../src/utils/debugPreferences.ts"],"names":[],"mappings":"AAkCA,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB7E;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0BvE;AAED,eAAO,MAAM,IAAI;;;;;;;;;CASP,CAAC"}
|