@react-native/dev-middleware 0.84.0-nightly-20251210-3e9083b42 → 0.84.0-nightly-20251212-dd390dbbe
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/dist/createDevMiddleware.d.ts +3 -0
- package/dist/createDevMiddleware.js +4 -0
- package/dist/createDevMiddleware.js.flow +3 -0
- package/dist/inspector-proxy/InspectorProxy.d.ts +6 -0
- package/dist/inspector-proxy/InspectorProxy.js +17 -0
- package/dist/inspector-proxy/InspectorProxy.js.flow +8 -0
- package/dist/utils/DefaultBrowserLauncher.d.ts +3 -1
- package/dist/utils/DefaultBrowserLauncher.js +6 -11
- package/dist/utils/DefaultBrowserLauncher.js.flow +3 -1
- package/package.json +4 -4
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import type { CreateCustomMessageHandlerFn } from "./inspector-proxy/CustomMessageHandler";
|
|
12
|
+
import type { HasConnectedDevicesListener } from "./inspector-proxy/InspectorProxy";
|
|
12
13
|
import type { BrowserLauncher } from "./types/BrowserLauncher";
|
|
13
14
|
import type { EventReporter } from "./types/EventReporter";
|
|
14
15
|
import type { ExperimentsConfig } from "./types/Experiments";
|
|
@@ -57,6 +58,8 @@ type Options = Readonly<{
|
|
|
57
58
|
type DevMiddlewareAPI = Readonly<{
|
|
58
59
|
middleware: NextHandleFunction;
|
|
59
60
|
websocketEndpoints: { [path: string]: ws$WebSocketServer };
|
|
61
|
+
unstable_hasConnectedDevices(): boolean;
|
|
62
|
+
unstable_addHasConnectedDevicesListener: HasConnectedDevicesListener;
|
|
60
63
|
}>;
|
|
61
64
|
declare function createDevMiddleware($$PARAM_0$$: Options): DevMiddlewareAPI;
|
|
62
65
|
export default createDevMiddleware;
|
|
@@ -74,6 +74,10 @@ function createDevMiddleware({
|
|
|
74
74
|
return {
|
|
75
75
|
middleware,
|
|
76
76
|
websocketEndpoints: inspectorProxy.createWebSocketListeners(),
|
|
77
|
+
unstable_hasConnectedDevices: () =>
|
|
78
|
+
inspectorProxy.unstable_hasConnectedDevices(),
|
|
79
|
+
unstable_addHasConnectedDevicesListener: (cb) =>
|
|
80
|
+
inspectorProxy.unstable_addHasConnectedDevicesListener(cb),
|
|
77
81
|
};
|
|
78
82
|
}
|
|
79
83
|
function getExperiments(config) {
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import type { CreateCustomMessageHandlerFn } from "./inspector-proxy/CustomMessageHandler";
|
|
12
|
+
import type { HasConnectedDevicesListener } from "./inspector-proxy/InspectorProxy";
|
|
12
13
|
import type { BrowserLauncher } from "./types/BrowserLauncher";
|
|
13
14
|
import type { EventReporter } from "./types/EventReporter";
|
|
14
15
|
import type { ExperimentsConfig } from "./types/Experiments";
|
|
@@ -65,6 +66,8 @@ type Options = $ReadOnly<{
|
|
|
65
66
|
type DevMiddlewareAPI = $ReadOnly<{
|
|
66
67
|
middleware: NextHandleFunction,
|
|
67
68
|
websocketEndpoints: { [path: string]: ws$WebSocketServer },
|
|
69
|
+
unstable_hasConnectedDevices(): boolean,
|
|
70
|
+
unstable_addHasConnectedDevicesListener: HasConnectedDevicesListener,
|
|
68
71
|
}>;
|
|
69
72
|
|
|
70
73
|
declare export default function createDevMiddleware(
|
|
@@ -28,6 +28,10 @@ export interface InspectorProxyQueries {
|
|
|
28
28
|
config: GetPageDescriptionsConfig,
|
|
29
29
|
): Array<PageDescription>;
|
|
30
30
|
}
|
|
31
|
+
export type RemoveHasConnectedDevicesListener = () => void;
|
|
32
|
+
export type HasConnectedDevicesListener = (
|
|
33
|
+
callback: (hasConnectedDevices: boolean) => void,
|
|
34
|
+
) => RemoveHasConnectedDevicesListener;
|
|
31
35
|
/**
|
|
32
36
|
* Main Inspector Proxy class that connects JavaScript VM inside Android/iOS apps and JS debugger.
|
|
33
37
|
*/
|
|
@@ -40,6 +44,8 @@ declare class InspectorProxy implements InspectorProxyQueries {
|
|
|
40
44
|
customMessageHandler: null | undefined | CreateCustomMessageHandlerFn,
|
|
41
45
|
trackEventLoopPerf?: boolean,
|
|
42
46
|
);
|
|
47
|
+
unstable_hasConnectedDevices(): boolean;
|
|
48
|
+
unstable_addHasConnectedDevicesListener: HasConnectedDevicesListener;
|
|
43
49
|
getPageDescriptions(
|
|
44
50
|
$$PARAM_0$$: GetPageDescriptionsConfig,
|
|
45
51
|
): Array<PageDescription>;
|
|
@@ -51,6 +51,7 @@ class InspectorProxy {
|
|
|
51
51
|
#logger;
|
|
52
52
|
#lastMessageTimestamp = null;
|
|
53
53
|
#eventLoopPerfTracker;
|
|
54
|
+
#onHasConnectedDevicesChangedFns;
|
|
54
55
|
constructor(
|
|
55
56
|
serverBaseUrl,
|
|
56
57
|
eventReporter,
|
|
@@ -65,6 +66,7 @@ class InspectorProxy {
|
|
|
65
66
|
this.#experiments = experiments;
|
|
66
67
|
this.#logger = logger;
|
|
67
68
|
this.#customMessageHandler = customMessageHandler;
|
|
69
|
+
this.#onHasConnectedDevicesChangedFns = new Set();
|
|
68
70
|
if (trackEventLoopPerf) {
|
|
69
71
|
this.#eventLoopPerfTracker = new _EventLoopPerfTracker.default({
|
|
70
72
|
perfMeasurementDuration: EVENT_LOOP_PERF_MEASUREMENT_MS,
|
|
@@ -94,6 +96,15 @@ class InspectorProxy {
|
|
|
94
96
|
});
|
|
95
97
|
}
|
|
96
98
|
}
|
|
99
|
+
unstable_hasConnectedDevices() {
|
|
100
|
+
return this.#devices.size > 0;
|
|
101
|
+
}
|
|
102
|
+
unstable_addHasConnectedDevicesListener = (onDevicesChanged) => {
|
|
103
|
+
this.#onHasConnectedDevicesChangedFns.add(onDevicesChanged);
|
|
104
|
+
return () => {
|
|
105
|
+
this.#onHasConnectedDevicesChangedFns.delete(onDevicesChanged);
|
|
106
|
+
};
|
|
107
|
+
};
|
|
97
108
|
getPageDescriptions({
|
|
98
109
|
requestorRelativeBaseUrl,
|
|
99
110
|
logNoPagesForConnectedDevice = false,
|
|
@@ -266,6 +277,9 @@ class InspectorProxy {
|
|
|
266
277
|
newDevice = new _Device.default(deviceOptions);
|
|
267
278
|
}
|
|
268
279
|
this.#devices.set(deviceId, newDevice);
|
|
280
|
+
if (this.#devices.size === 1) {
|
|
281
|
+
this.#onHasConnectedDevicesChangedFns.forEach((cb) => cb(true));
|
|
282
|
+
}
|
|
269
283
|
debug(
|
|
270
284
|
"Got new device connection: name='%s', app=%s, device=%s, via=%s",
|
|
271
285
|
deviceName,
|
|
@@ -342,6 +356,9 @@ class InspectorProxy {
|
|
|
342
356
|
});
|
|
343
357
|
if (this.#devices.get(deviceId)?.dangerouslyGetSocket() === socket) {
|
|
344
358
|
this.#devices.delete(deviceId);
|
|
359
|
+
if (this.#devices.size === 0) {
|
|
360
|
+
this.#onHasConnectedDevicesChangedFns.forEach((cb) => cb(false));
|
|
361
|
+
}
|
|
345
362
|
}
|
|
346
363
|
});
|
|
347
364
|
} catch (error) {
|
|
@@ -32,6 +32,12 @@ export interface InspectorProxyQueries {
|
|
|
32
32
|
): Array<PageDescription>;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
export type RemoveHasConnectedDevicesListener = () => void;
|
|
36
|
+
|
|
37
|
+
export type HasConnectedDevicesListener = (
|
|
38
|
+
callback: (hasConnectedDevices: boolean) => void,
|
|
39
|
+
) => RemoveHasConnectedDevicesListener;
|
|
40
|
+
|
|
35
41
|
/**
|
|
36
42
|
* Main Inspector Proxy class that connects JavaScript VM inside Android/iOS apps and JS debugger.
|
|
37
43
|
*/
|
|
@@ -44,6 +50,8 @@ declare export default class InspectorProxy implements InspectorProxyQueries {
|
|
|
44
50
|
customMessageHandler: ?CreateCustomMessageHandlerFn,
|
|
45
51
|
trackEventLoopPerf?: boolean,
|
|
46
52
|
): void;
|
|
53
|
+
unstable_hasConnectedDevices(): boolean;
|
|
54
|
+
unstable_addHasConnectedDevicesListener: HasConnectedDevicesListener;
|
|
47
55
|
getPageDescriptions(
|
|
48
56
|
$$PARAM_0$$: GetPageDescriptionsConfig,
|
|
49
57
|
): Array<PageDescription>;
|
|
@@ -20,7 +20,9 @@ declare const DefaultBrowserLauncher: {
|
|
|
20
20
|
*/
|
|
21
21
|
launchDebuggerAppWindow: (url: string) => Promise<void>;
|
|
22
22
|
unstable_showFuseboxShell(url: string, windowKey: string): Promise<void>;
|
|
23
|
-
unstable_prepareFuseboxShell(
|
|
23
|
+
unstable_prepareFuseboxShell(
|
|
24
|
+
prebuiltBinaryPath?: null | undefined | string,
|
|
25
|
+
): Promise<DebuggerShellPreparationResult>;
|
|
24
26
|
};
|
|
25
27
|
declare const $$EXPORT_DEFAULT_DECLARATION$$: typeof DefaultBrowserLauncher;
|
|
26
28
|
declare type $$EXPORT_DEFAULT_DECLARATION$$ =
|
|
@@ -45,18 +45,13 @@ const DefaultBrowserLauncher = {
|
|
|
45
45
|
});
|
|
46
46
|
},
|
|
47
47
|
async unstable_showFuseboxShell(url, windowKey) {
|
|
48
|
-
return await unstable_spawnDebuggerShellWithArgs(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
flavor: process.env.RNDT_DEV === "1" ? "dev" : "prebuilt",
|
|
53
|
-
},
|
|
54
|
-
);
|
|
48
|
+
return await unstable_spawnDebuggerShellWithArgs([
|
|
49
|
+
"--frontendUrl=" + url,
|
|
50
|
+
"--windowKey=" + windowKey,
|
|
51
|
+
]);
|
|
55
52
|
},
|
|
56
|
-
async unstable_prepareFuseboxShell() {
|
|
57
|
-
return await unstable_prepareDebuggerShell(
|
|
58
|
-
process.env.RNDT_DEV === "1" ? "dev" : "prebuilt",
|
|
59
|
-
);
|
|
53
|
+
async unstable_prepareFuseboxShell(prebuiltBinaryPath) {
|
|
54
|
+
return await unstable_prepareDebuggerShell();
|
|
60
55
|
},
|
|
61
56
|
};
|
|
62
57
|
var _default = (exports.default = DefaultBrowserLauncher);
|
|
@@ -21,7 +21,9 @@ declare const DefaultBrowserLauncher: {
|
|
|
21
21
|
*/
|
|
22
22
|
launchDebuggerAppWindow: (url: string) => Promise<void>,
|
|
23
23
|
unstable_showFuseboxShell(url: string, windowKey: string): Promise<void>,
|
|
24
|
-
unstable_prepareFuseboxShell(
|
|
24
|
+
unstable_prepareFuseboxShell(
|
|
25
|
+
prebuiltBinaryPath?: ?string,
|
|
26
|
+
): Promise<DebuggerShellPreparationResult>,
|
|
25
27
|
};
|
|
26
28
|
|
|
27
29
|
declare export default typeof DefaultBrowserLauncher;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-native/dev-middleware",
|
|
3
|
-
"version": "0.84.0-nightly-
|
|
3
|
+
"version": "0.84.0-nightly-20251212-dd390dbbe",
|
|
4
4
|
"description": "Dev server middleware for React Native",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@isaacs/ttlcache": "^1.4.1",
|
|
26
|
-
"@react-native/debugger-frontend": "0.84.0-nightly-
|
|
27
|
-
"@react-native/debugger-shell": "0.84.0-nightly-
|
|
26
|
+
"@react-native/debugger-frontend": "0.84.0-nightly-20251212-dd390dbbe",
|
|
27
|
+
"@react-native/debugger-shell": "0.84.0-nightly-20251212-dd390dbbe",
|
|
28
28
|
"chrome-launcher": "^0.15.2",
|
|
29
29
|
"chromium-edge-launcher": "^0.2.0",
|
|
30
30
|
"connect": "^3.6.5",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"node": ">= 20.19.4"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@react-native/debugger-shell": "0.84.0-nightly-
|
|
42
|
+
"@react-native/debugger-shell": "0.84.0-nightly-20251212-dd390dbbe",
|
|
43
43
|
"selfsigned": "^4.0.0",
|
|
44
44
|
"undici": "^5.29.0",
|
|
45
45
|
"wait-for-expect": "^3.0.2"
|