@teardown/cli 1.2.39 → 2.0.41
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/bin/teardown.js +11 -1
- package/package.json +77 -57
- package/src/cli/commands/init.ts +254 -0
- package/src/cli/commands/plugins.ts +93 -0
- package/src/cli/commands/prebuild.ts +168 -0
- package/src/cli/commands/run.ts +727 -0
- package/src/cli/commands/start.ts +87 -0
- package/src/cli/commands/validate.ts +62 -0
- package/src/cli/index.ts +59 -0
- package/src/config/index.ts +45 -0
- package/src/config/loader.ts +366 -0
- package/src/config/schema.ts +235 -0
- package/src/config/types.ts +322 -0
- package/src/index.ts +177 -0
- package/src/pipeline/cache.ts +179 -0
- package/src/pipeline/index.ts +10 -0
- package/src/pipeline/stages.ts +692 -0
- package/src/plugins/base.ts +370 -0
- package/src/plugins/capabilities/biometrics.ts +64 -0
- package/src/plugins/capabilities/bluetooth.ts +86 -0
- package/src/plugins/capabilities/calendar.ts +57 -0
- package/src/plugins/capabilities/camera.ts +77 -0
- package/src/plugins/capabilities/contacts.ts +57 -0
- package/src/plugins/capabilities/deep-linking.ts +124 -0
- package/src/plugins/capabilities/firebase.ts +138 -0
- package/src/plugins/capabilities/index.ts +96 -0
- package/src/plugins/capabilities/location.ts +87 -0
- package/src/plugins/capabilities/photo-library.ts +80 -0
- package/src/plugins/capabilities/push-notifications.ts +98 -0
- package/src/plugins/capabilities/sign-in-with-apple.ts +53 -0
- package/src/plugins/context.ts +220 -0
- package/src/plugins/index.ts +26 -0
- package/src/plugins/resolver.ts +321 -0
- package/src/templates/generator.ts +507 -0
- package/src/templates/index.ts +9 -0
- package/src/templates/paths.ts +25 -0
- package/src/transformers/android/gradle.ts +400 -0
- package/src/transformers/android/index.ts +19 -0
- package/src/transformers/android/manifest.ts +506 -0
- package/src/transformers/index.ts +39 -0
- package/src/transformers/ios/entitlements.ts +283 -0
- package/src/transformers/ios/index.ts +10 -0
- package/src/transformers/ios/pbxproj.ts +267 -0
- package/src/transformers/ios/plist.ts +198 -0
- package/src/utils/fs.ts +429 -0
- package/src/utils/index.ts +21 -0
- package/src/utils/logger.ts +203 -0
- package/templates/.gitignore +63 -0
- package/templates/Gemfile +3 -0
- package/templates/android/app/build.gradle.kts +97 -0
- package/templates/android/app/proguard-rules.pro +10 -0
- package/templates/android/app/src/main/AndroidManifest.xml +26 -0
- package/templates/android/app/src/main/java/com/appname/MainActivity.kt +22 -0
- package/templates/android/app/src/main/java/com/appname/MainApplication.kt +44 -0
- package/templates/android/app/src/main/res/values/strings.xml +3 -0
- package/templates/android/app/src/main/res/values/styles.xml +7 -0
- package/templates/android/build.gradle.kts +44 -0
- package/templates/android/gradle.properties +39 -0
- package/templates/android/settings.gradle.kts +12 -0
- package/templates/babel.config.js +15 -0
- package/templates/index.js +7 -0
- package/templates/ios/.xcode.env +11 -0
- package/templates/ios/AppName/AppDelegate.swift +25 -0
- package/templates/ios/AppName/AppName-Bridging-Header.h +4 -0
- package/templates/ios/AppName/AppName.entitlements +6 -0
- package/templates/ios/AppName/Images.xcassets/AppIcon.appiconset/Contents.json +35 -0
- package/templates/ios/AppName/Images.xcassets/Contents.json +6 -0
- package/templates/ios/AppName/Info.plist +49 -0
- package/templates/ios/AppName/LaunchScreen.storyboard +38 -0
- package/templates/ios/AppName.xcodeproj/project.pbxproj +402 -0
- package/templates/ios/AppName.xcodeproj/xcshareddata/xcschemes/AppName.xcscheme +78 -0
- package/templates/ios/Podfile +35 -0
- package/templates/metro.config.js +41 -0
- package/templates/package.json +57 -0
- package/templates/react-native.config.js +8 -0
- package/templates/src/app/index.tsx +34 -0
- package/templates/src/assets/fonts/.gitkeep +1 -0
- package/templates/src/assets/images/.gitkeep +1 -0
- package/templates/src/components/ui/accordion.tsx +114 -0
- package/templates/src/components/ui/avatar.tsx +75 -0
- package/templates/src/components/ui/button.tsx +93 -0
- package/templates/src/components/ui/card.tsx +120 -0
- package/templates/src/components/ui/checkbox.tsx +133 -0
- package/templates/src/components/ui/chip.tsx +95 -0
- package/templates/src/components/ui/dialog.tsx +134 -0
- package/templates/src/components/ui/divider.tsx +67 -0
- package/templates/src/components/ui/error-view.tsx +82 -0
- package/templates/src/components/ui/form-field.tsx +101 -0
- package/templates/src/components/ui/index.ts +100 -0
- package/templates/src/components/ui/popover.tsx +92 -0
- package/templates/src/components/ui/pressable-feedback.tsx +88 -0
- package/templates/src/components/ui/radio-group.tsx +153 -0
- package/templates/src/components/ui/scroll-shadow.tsx +108 -0
- package/templates/src/components/ui/select.tsx +165 -0
- package/templates/src/components/ui/skeleton-group.tsx +97 -0
- package/templates/src/components/ui/skeleton.tsx +87 -0
- package/templates/src/components/ui/spinner.tsx +87 -0
- package/templates/src/components/ui/surface.tsx +95 -0
- package/templates/src/components/ui/switch.tsx +124 -0
- package/templates/src/components/ui/tabs.tsx +154 -0
- package/templates/src/components/ui/text-field.tsx +106 -0
- package/templates/src/components/ui/toast.tsx +129 -0
- package/templates/src/contexts/.gitkeep +2 -0
- package/templates/src/core/clients/api/api.client.ts +113 -0
- package/templates/src/core/clients/api/index.ts +1 -0
- package/templates/src/core/clients/storage/index.ts +1 -0
- package/templates/src/core/clients/storage/storage.client.ts +121 -0
- package/templates/src/core/constants/index.ts +19 -0
- package/templates/src/core/core.ts +40 -0
- package/templates/src/core/index.ts +10 -0
- package/templates/src/global.css +87 -0
- package/templates/src/hooks/index.ts +6 -0
- package/templates/src/hooks/use-debounce.ts +23 -0
- package/templates/src/hooks/use-mounted.ts +21 -0
- package/templates/src/index.ts +28 -0
- package/templates/src/lib/index.ts +5 -0
- package/templates/src/lib/utils.ts +115 -0
- package/templates/src/modules/.gitkeep +6 -0
- package/templates/src/navigation/index.ts +8 -0
- package/templates/src/navigation/navigation-provider.tsx +36 -0
- package/templates/src/navigation/router.tsx +137 -0
- package/templates/src/providers/app.provider.tsx +29 -0
- package/templates/src/providers/index.ts +5 -0
- package/templates/src/routes/(tabs)/_layout.tsx +42 -0
- package/templates/src/routes/(tabs)/explore.tsx +161 -0
- package/templates/src/routes/(tabs)/home.tsx +138 -0
- package/templates/src/routes/(tabs)/profile.tsx +151 -0
- package/templates/src/routes/_layout.tsx +18 -0
- package/templates/src/routes/settings.tsx +194 -0
- package/templates/src/screens/auth/index.ts +6 -0
- package/templates/src/screens/auth/login.tsx +165 -0
- package/templates/src/screens/auth/register.tsx +203 -0
- package/templates/src/screens/home.tsx +204 -0
- package/templates/src/screens/index.ts +17 -0
- package/templates/src/screens/profile.tsx +210 -0
- package/templates/src/screens/settings.tsx +216 -0
- package/templates/src/screens/welcome.tsx +101 -0
- package/templates/src/styles/index.ts +103 -0
- package/templates/src/types/common.ts +71 -0
- package/templates/src/types/index.ts +5 -0
- package/templates/tsconfig.json +14 -0
- package/README.md +0 -15
- package/assets/favicon.ico +0 -0
- package/dist/commands/dev/dev.d.ts +0 -22
- package/dist/commands/dev/dev.js +0 -56
- package/dist/commands/dev/dev.js.map +0 -1
- package/dist/commands/init/init-teardown.d.ts +0 -9
- package/dist/commands/init/init-teardown.js +0 -27
- package/dist/commands/init/init-teardown.js.map +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -21
- package/dist/index.js.map +0 -1
- package/dist/modules/dev/dev-menu/keyboard-handler.d.ts +0 -21
- package/dist/modules/dev/dev-menu/keyboard-handler.js +0 -139
- package/dist/modules/dev/dev-menu/keyboard-handler.js.map +0 -1
- package/dist/modules/dev/dev-menu/open-debugger-keyboard-handler.d.ts +0 -18
- package/dist/modules/dev/dev-menu/open-debugger-keyboard-handler.js +0 -106
- package/dist/modules/dev/dev-menu/open-debugger-keyboard-handler.js.map +0 -1
- package/dist/modules/dev/dev-server/cdp/cdp.adapter.d.ts +0 -6
- package/dist/modules/dev/dev-server/cdp/cdp.adapter.js +0 -13
- package/dist/modules/dev/dev-server/cdp/cdp.adapter.js.map +0 -1
- package/dist/modules/dev/dev-server/cdp/index.d.ts +0 -2
- package/dist/modules/dev/dev-server/cdp/index.js +0 -19
- package/dist/modules/dev/dev-server/cdp/index.js.map +0 -1
- package/dist/modules/dev/dev-server/cdp/types.d.ts +0 -107
- package/dist/modules/dev/dev-server/cdp/types.js +0 -3
- package/dist/modules/dev/dev-server/cdp/types.js.map +0 -1
- package/dist/modules/dev/dev-server/dev-server-checker.d.ts +0 -22
- package/dist/modules/dev/dev-server/dev-server-checker.js +0 -73
- package/dist/modules/dev/dev-server/dev-server-checker.js.map +0 -1
- package/dist/modules/dev/dev-server/dev-server.d.ts +0 -74
- package/dist/modules/dev/dev-server/dev-server.js +0 -272
- package/dist/modules/dev/dev-server/dev-server.js.map +0 -1
- package/dist/modules/dev/dev-server/inspector/device.d.ts +0 -46
- package/dist/modules/dev/dev-server/inspector/device.event-reporter.d.ts +0 -37
- package/dist/modules/dev/dev-server/inspector/device.event-reporter.js +0 -166
- package/dist/modules/dev/dev-server/inspector/device.event-reporter.js.map +0 -1
- package/dist/modules/dev/dev-server/inspector/device.js +0 -578
- package/dist/modules/dev/dev-server/inspector/device.js.map +0 -1
- package/dist/modules/dev/dev-server/inspector/inspector.d.ts +0 -27
- package/dist/modules/dev/dev-server/inspector/inspector.js +0 -225
- package/dist/modules/dev/dev-server/inspector/inspector.js.map +0 -1
- package/dist/modules/dev/dev-server/inspector/types.d.ts +0 -156
- package/dist/modules/dev/dev-server/inspector/types.js +0 -3
- package/dist/modules/dev/dev-server/inspector/types.js.map +0 -1
- package/dist/modules/dev/dev-server/inspector/wss/servers/debugger-connection.server.d.ts +0 -14
- package/dist/modules/dev/dev-server/inspector/wss/servers/debugger-connection.server.js +0 -63
- package/dist/modules/dev/dev-server/inspector/wss/servers/debugger-connection.server.js.map +0 -1
- package/dist/modules/dev/dev-server/inspector/wss/servers/device-connection.server.d.ts +0 -19
- package/dist/modules/dev/dev-server/inspector/wss/servers/device-connection.server.js +0 -66
- package/dist/modules/dev/dev-server/inspector/wss/servers/device-connection.server.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/devtools.plugin.d.ts +0 -1
- package/dist/modules/dev/dev-server/plugins/devtools.plugin.js +0 -51
- package/dist/modules/dev/dev-server/plugins/devtools.plugin.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/favicon.plugin.d.ts +0 -1
- package/dist/modules/dev/dev-server/plugins/favicon.plugin.js +0 -19
- package/dist/modules/dev/dev-server/plugins/favicon.plugin.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/multipart.plugin.d.ts +0 -1
- package/dist/modules/dev/dev-server/plugins/multipart.plugin.js +0 -63
- package/dist/modules/dev/dev-server/plugins/multipart.plugin.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/systrace.plugin.d.ts +0 -1
- package/dist/modules/dev/dev-server/plugins/systrace.plugin.js +0 -29
- package/dist/modules/dev/dev-server/plugins/systrace.plugin.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/types.d.ts +0 -11
- package/dist/modules/dev/dev-server/plugins/types.js +0 -3
- package/dist/modules/dev/dev-server/plugins/types.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/wss/index.d.ts +0 -3
- package/dist/modules/dev/dev-server/plugins/wss/index.js +0 -20
- package/dist/modules/dev/dev-server/plugins/wss/index.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-api.server.d.ts +0 -37
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-api.server.js +0 -67
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-api.server.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-debugger.server.d.ts +0 -63
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-debugger.server.js +0 -129
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-debugger.server.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-dev-client.server.d.ts +0 -32
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-dev-client.server.js +0 -76
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-dev-client.server.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-events.server.d.ts +0 -75
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-events.server.js +0 -199
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-events.server.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-hmr.server.d.ts +0 -44
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-hmr.server.js +0 -121
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-hmr.server.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-message.server.d.ts +0 -135
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-message.server.js +0 -364
- package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-message.server.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/wss/types.d.ts +0 -6
- package/dist/modules/dev/dev-server/plugins/wss/types.js +0 -3
- package/dist/modules/dev/dev-server/plugins/wss/types.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/wss/web-socket-router.d.ts +0 -32
- package/dist/modules/dev/dev-server/plugins/wss/web-socket-router.js +0 -58
- package/dist/modules/dev/dev-server/plugins/wss/web-socket-router.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/wss/web-socket-server-adapter.d.ts +0 -13
- package/dist/modules/dev/dev-server/plugins/wss/web-socket-server-adapter.js +0 -27
- package/dist/modules/dev/dev-server/plugins/wss/web-socket-server-adapter.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/wss/web-socket-server.d.ts +0 -39
- package/dist/modules/dev/dev-server/plugins/wss/web-socket-server.js +0 -47
- package/dist/modules/dev/dev-server/plugins/wss/web-socket-server.js.map +0 -1
- package/dist/modules/dev/dev-server/plugins/wss/wss.plugin.d.ts +0 -24
- package/dist/modules/dev/dev-server/plugins/wss/wss.plugin.js +0 -56
- package/dist/modules/dev/dev-server/plugins/wss/wss.plugin.js.map +0 -1
- package/dist/modules/dev/dev-server/sybmolicate/sybmolicate.plugin.d.ts +0 -7
- package/dist/modules/dev/dev-server/sybmolicate/sybmolicate.plugin.js +0 -41
- package/dist/modules/dev/dev-server/sybmolicate/sybmolicate.plugin.js.map +0 -1
- package/dist/modules/dev/dev-server/sybmolicate/types.d.ts +0 -64
- package/dist/modules/dev/dev-server/sybmolicate/types.js +0 -3
- package/dist/modules/dev/dev-server/sybmolicate/types.js.map +0 -1
- package/dist/modules/dev/terminal/base.terminal.reporter.d.ts +0 -25
- package/dist/modules/dev/terminal/base.terminal.reporter.js +0 -79
- package/dist/modules/dev/terminal/base.terminal.reporter.js.map +0 -1
- package/dist/modules/dev/terminal/terminal.reporter.d.ts +0 -13
- package/dist/modules/dev/terminal/terminal.reporter.js +0 -83
- package/dist/modules/dev/terminal/terminal.reporter.js.map +0 -1
- package/dist/modules/dev/types.d.ts +0 -20
- package/dist/modules/dev/types.js +0 -3
- package/dist/modules/dev/types.js.map +0 -1
- package/dist/modules/dev/utils/log.d.ts +0 -23
- package/dist/modules/dev/utils/log.js +0 -74
- package/dist/modules/dev/utils/log.js.map +0 -1
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Inspector = void 0;
|
|
7
|
-
const ws_1 = require("ws");
|
|
8
|
-
const node_url_1 = require("node:url");
|
|
9
|
-
const node_url_2 = __importDefault(require("node:url"));
|
|
10
|
-
const device_1 = require("./device");
|
|
11
|
-
const WS_DEVICE_PATH = "/inspector/device";
|
|
12
|
-
const WS_DEBUGGER_PATH = "/inspector/debug";
|
|
13
|
-
const JSON_VERSION_PATH = "/json/version";
|
|
14
|
-
const JSON_LIST_PATH = "/json";
|
|
15
|
-
const JSON_LIST_PATH_2 = "/json/list";
|
|
16
|
-
const HEARTBEAT_INTERVAL = 10000;
|
|
17
|
-
const MAX_PONG_TIMEOUT = 15000;
|
|
18
|
-
const INTERNAL_ERROR_CODE = 1011;
|
|
19
|
-
class Inspector {
|
|
20
|
-
devices = new Map();
|
|
21
|
-
deviceCounter = 0;
|
|
22
|
-
projectRoot;
|
|
23
|
-
serverBaseUrl;
|
|
24
|
-
eventReporter;
|
|
25
|
-
cdpAdapter;
|
|
26
|
-
constructor(options) {
|
|
27
|
-
this.projectRoot = options.projectRoot;
|
|
28
|
-
this.serverBaseUrl = options.serverBaseUrl;
|
|
29
|
-
this.eventReporter = options.eventReporter;
|
|
30
|
-
this.cdpAdapter = options.cdpAdapter;
|
|
31
|
-
}
|
|
32
|
-
getPageDescriptions() {
|
|
33
|
-
const descriptions = [];
|
|
34
|
-
for (const [deviceId, device] of this.devices.entries()) {
|
|
35
|
-
const devicePages = device
|
|
36
|
-
.getPagesList()
|
|
37
|
-
.map((page) => this.createPageDescription(deviceId, device, page));
|
|
38
|
-
descriptions.push(...devicePages);
|
|
39
|
-
}
|
|
40
|
-
return descriptions;
|
|
41
|
-
}
|
|
42
|
-
handleHttpRequest(req, res, next) {
|
|
43
|
-
const pathname = new node_url_1.URL(req.url || "", "http://localhost").pathname;
|
|
44
|
-
if (pathname === JSON_LIST_PATH || pathname === JSON_LIST_PATH_2) {
|
|
45
|
-
this.sendJsonResponse(res, this.getPageDescriptions());
|
|
46
|
-
}
|
|
47
|
-
else if (pathname === JSON_VERSION_PATH) {
|
|
48
|
-
this.sendJsonResponse(res, {
|
|
49
|
-
Browser: "Mobile JavaScript",
|
|
50
|
-
"Protocol-Version": "1.1",
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
next();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
createWebSocketServers() {
|
|
58
|
-
return {
|
|
59
|
-
[WS_DEVICE_PATH]: this.createDeviceWebSocketServer(),
|
|
60
|
-
[WS_DEBUGGER_PATH]: this.createDebuggerWebSocketServer(),
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
createPageDescription(deviceId, device, page) {
|
|
64
|
-
const { host, protocol } = new node_url_1.URL(this.serverBaseUrl);
|
|
65
|
-
const wsProtocol = protocol === "https:" ? "wss" : "ws";
|
|
66
|
-
const wsPath = `${host}${WS_DEBUGGER_PATH}?device=${deviceId}&page=${page.id}`;
|
|
67
|
-
return {
|
|
68
|
-
id: `${deviceId}-${page.id}`,
|
|
69
|
-
title: page.title,
|
|
70
|
-
// @ts-ignore
|
|
71
|
-
description: page.description || page.app,
|
|
72
|
-
type: "node",
|
|
73
|
-
webSocketDebuggerUrl: `${wsProtocol}://${wsPath}`,
|
|
74
|
-
devtoolsFrontendUrl: `devtools://devtools/bundled/js_app.html?experiments=true&v8only=true&${wsProtocol}=${encodeURIComponent(wsPath)}`,
|
|
75
|
-
deviceName: device.getName(),
|
|
76
|
-
appId: page.app,
|
|
77
|
-
vm: page.vm,
|
|
78
|
-
reactNative: {
|
|
79
|
-
logicalDeviceId: deviceId,
|
|
80
|
-
capabilities: page.capabilities,
|
|
81
|
-
},
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
createDeviceWebSocketServer() {
|
|
85
|
-
const wss = new ws_1.WebSocketServer({
|
|
86
|
-
noServer: true,
|
|
87
|
-
perMessageDeflate: true,
|
|
88
|
-
maxPayload: 0,
|
|
89
|
-
});
|
|
90
|
-
wss.on("connection", (socket, req) => {
|
|
91
|
-
try {
|
|
92
|
-
const fallbackDeviceId = String(this.deviceCounter++);
|
|
93
|
-
const query = node_url_2.default.parse(req.url || "", true).query || {};
|
|
94
|
-
const deviceId = query.device || fallbackDeviceId;
|
|
95
|
-
const deviceName = query.name || "Unknown";
|
|
96
|
-
const appName = query.app || "Unknown";
|
|
97
|
-
const actualDeviceId = Array.isArray(deviceId) ? deviceId[0] : deviceId;
|
|
98
|
-
const actualDeviceName = Array.isArray(deviceName)
|
|
99
|
-
? deviceName[0]
|
|
100
|
-
: deviceName;
|
|
101
|
-
const actualAppName = Array.isArray(appName) ? appName[0] : appName;
|
|
102
|
-
const oldDevice = this.devices.get(actualDeviceId);
|
|
103
|
-
let newDevice;
|
|
104
|
-
if (oldDevice) {
|
|
105
|
-
oldDevice.dangerouslyRecreateDevice(actualDeviceId, actualDeviceName, actualAppName, socket, this.projectRoot, this.eventReporter);
|
|
106
|
-
newDevice = oldDevice;
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
newDevice = new device_1.Device(actualDeviceId, actualDeviceName, actualAppName, socket, this.projectRoot, this.eventReporter);
|
|
110
|
-
}
|
|
111
|
-
this.devices.set(actualDeviceId, newDevice);
|
|
112
|
-
socket.on("close", () => {
|
|
113
|
-
if (this.devices.get(actualDeviceId)?.dangerouslyGetSocket() === socket) {
|
|
114
|
-
this.devices.delete(actualDeviceId);
|
|
115
|
-
}
|
|
116
|
-
// debug(`Device ${deviceName} disconnected.`);
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
catch (e) {
|
|
120
|
-
console.error("error", e);
|
|
121
|
-
socket.close(INTERNAL_ERROR_CODE, e?.toString() ?? "Unknown error");
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
return wss;
|
|
125
|
-
}
|
|
126
|
-
createDebuggerWebSocketServer() {
|
|
127
|
-
const wss = new ws_1.WebSocketServer({
|
|
128
|
-
noServer: true,
|
|
129
|
-
maxPayload: 0,
|
|
130
|
-
});
|
|
131
|
-
wss.on("open", () => {
|
|
132
|
-
console.info("open");
|
|
133
|
-
});
|
|
134
|
-
wss.on("connection", (ws, req) => {
|
|
135
|
-
try {
|
|
136
|
-
const query = new node_url_1.URL(req.url || "", "http://localhost").searchParams;
|
|
137
|
-
const deviceId = query.get("device");
|
|
138
|
-
const pageId = query.get("page");
|
|
139
|
-
if (!deviceId || !pageId) {
|
|
140
|
-
console.info("missing device or page id", deviceId, pageId);
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
const device = this.devices.get(deviceId);
|
|
144
|
-
if (!device) {
|
|
145
|
-
console.info("device not found", deviceId);
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
this.setupHeartbeat(ws);
|
|
149
|
-
device.handleDebuggerConnection(ws, pageId, {
|
|
150
|
-
userAgent: req.headers["user-agent"] || null,
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
catch (err) {
|
|
154
|
-
console.error(err);
|
|
155
|
-
ws.close(INTERNAL_ERROR_CODE, err instanceof Error ? err.message : "Unknown error");
|
|
156
|
-
this.eventReporter?.logEvent({
|
|
157
|
-
type: "connect_debugger_frontend",
|
|
158
|
-
status: "error",
|
|
159
|
-
error: err,
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
return wss;
|
|
164
|
-
}
|
|
165
|
-
setupHeartbeat(ws) {
|
|
166
|
-
let pendingHeartbeat = false;
|
|
167
|
-
let terminateTimeout = null;
|
|
168
|
-
const heartbeat = setInterval(() => {
|
|
169
|
-
if (ws.readyState !== ws_1.WebSocket.OPEN) {
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
pendingHeartbeat = true;
|
|
173
|
-
// Send a heartbeat message instead of ping
|
|
174
|
-
ws.send(JSON.stringify({ method: "_heartbeat" }));
|
|
175
|
-
terminateTimeout = setTimeout(() => {
|
|
176
|
-
if (ws.readyState === ws_1.WebSocket.OPEN) {
|
|
177
|
-
try {
|
|
178
|
-
ws.terminate();
|
|
179
|
-
}
|
|
180
|
-
catch (e) {
|
|
181
|
-
ws.close(INTERNAL_ERROR_CODE, "Termination failed");
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}, MAX_PONG_TIMEOUT);
|
|
185
|
-
}, HEARTBEAT_INTERVAL);
|
|
186
|
-
const resetHeartbeat = () => {
|
|
187
|
-
pendingHeartbeat = false;
|
|
188
|
-
if (terminateTimeout) {
|
|
189
|
-
clearTimeout(terminateTimeout);
|
|
190
|
-
terminateTimeout = null;
|
|
191
|
-
}
|
|
192
|
-
};
|
|
193
|
-
ws.on("message", (data) => {
|
|
194
|
-
try {
|
|
195
|
-
const message = JSON.parse(data.toString());
|
|
196
|
-
// Check for heartbeat response
|
|
197
|
-
if (message.method === "_heartbeat_response") {
|
|
198
|
-
resetHeartbeat();
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
catch (e) {
|
|
203
|
-
// If message isn't JSON or doesn't have expected format,
|
|
204
|
-
// treat it as regular message for heartbeat purposes
|
|
205
|
-
resetHeartbeat();
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
ws.on("close", () => {
|
|
209
|
-
clearInterval(heartbeat);
|
|
210
|
-
resetHeartbeat();
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
sendJsonResponse(res, data) {
|
|
214
|
-
const json = JSON.stringify(data, null, 2);
|
|
215
|
-
res.writeHead(200, {
|
|
216
|
-
"Content-Type": "application/json; charset=UTF-8",
|
|
217
|
-
"Cache-Control": "no-cache",
|
|
218
|
-
"Content-Length": Buffer.byteLength(json),
|
|
219
|
-
Connection: "close",
|
|
220
|
-
});
|
|
221
|
-
res.end(json);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
exports.Inspector = Inspector;
|
|
225
|
-
//# sourceMappingURL=inspector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../../../../src/modules/dev/dev-server/inspector/inspector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import type WS from "ws";
|
|
2
|
-
export type JSONSerializable = boolean | number | string | null | ReadonlyArray<JSONSerializable> | {
|
|
3
|
-
[key: string]: JSONSerializable;
|
|
4
|
-
};
|
|
5
|
-
export interface PageFromDevice {
|
|
6
|
-
id: string;
|
|
7
|
-
title: string;
|
|
8
|
-
vm: string;
|
|
9
|
-
app: string;
|
|
10
|
-
capabilities: Record<string, boolean>;
|
|
11
|
-
}
|
|
12
|
-
export type Page = Omit<PageFromDevice, "capabilities"> & {
|
|
13
|
-
capabilities: NonNullable<PageFromDevice["capabilities"]>;
|
|
14
|
-
};
|
|
15
|
-
export type WrappedEvent = {
|
|
16
|
-
event: "wrappedEvent";
|
|
17
|
-
payload: {
|
|
18
|
-
pageId: string;
|
|
19
|
-
wrappedEvent: string;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
export type ConnectRequest = {
|
|
23
|
-
event: "connect";
|
|
24
|
-
payload: {
|
|
25
|
-
pageId: string;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
export type DisconnectRequest = {
|
|
29
|
-
event: "disconnect";
|
|
30
|
-
payload: {
|
|
31
|
-
pageId: string;
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
export type GetPagesRequest = {
|
|
35
|
-
event: "getPages";
|
|
36
|
-
};
|
|
37
|
-
export type GetPagesResponse = {
|
|
38
|
-
event: "getPages";
|
|
39
|
-
payload: ReadonlyArray<PageFromDevice>;
|
|
40
|
-
};
|
|
41
|
-
export type MessageFromDevice = GetPagesResponse | WrappedEvent | DisconnectRequest;
|
|
42
|
-
export type MessageToDevice = GetPagesRequest | WrappedEvent | ConnectRequest | DisconnectRequest;
|
|
43
|
-
export type PageDescription = {
|
|
44
|
-
id: string;
|
|
45
|
-
title: string;
|
|
46
|
-
appId: string;
|
|
47
|
-
description: string;
|
|
48
|
-
type: string;
|
|
49
|
-
devtoolsFrontendUrl: string;
|
|
50
|
-
webSocketDebuggerUrl: string;
|
|
51
|
-
/** @deprecated Prefer `title` */
|
|
52
|
-
deviceName: string;
|
|
53
|
-
/** @deprecated This is sent from legacy targets only */
|
|
54
|
-
vm?: string;
|
|
55
|
-
reactNative: {
|
|
56
|
-
logicalDeviceId: string;
|
|
57
|
-
capabilities: Page["capabilities"];
|
|
58
|
-
};
|
|
59
|
-
};
|
|
60
|
-
export interface CDPMessage {
|
|
61
|
-
id?: number;
|
|
62
|
-
method?: string;
|
|
63
|
-
params?: any;
|
|
64
|
-
result?: any;
|
|
65
|
-
}
|
|
66
|
-
export interface DebuggerConnection {
|
|
67
|
-
socket: WS;
|
|
68
|
-
originalSourceURLAddress?: string;
|
|
69
|
-
prependedFilePrefix: boolean;
|
|
70
|
-
pageId: string;
|
|
71
|
-
userAgent: string | null;
|
|
72
|
-
customHandler: any | null;
|
|
73
|
-
}
|
|
74
|
-
type SuccessResult<Props extends Record<string, any> = {}> = {
|
|
75
|
-
status: "success";
|
|
76
|
-
} & Props;
|
|
77
|
-
type ErrorResult<ErrorT = unknown> = {
|
|
78
|
-
status: "error";
|
|
79
|
-
error: ErrorT;
|
|
80
|
-
prefersFuseboxFrontend?: boolean | null;
|
|
81
|
-
};
|
|
82
|
-
type CodedErrorResult<ErrorCode extends string> = {
|
|
83
|
-
status: "coded_error";
|
|
84
|
-
errorCode: ErrorCode;
|
|
85
|
-
errorDetails?: string;
|
|
86
|
-
};
|
|
87
|
-
type DebuggerSessionIDs = {
|
|
88
|
-
appId: string;
|
|
89
|
-
deviceName: string;
|
|
90
|
-
deviceId: string;
|
|
91
|
-
pageId: string | null;
|
|
92
|
-
};
|
|
93
|
-
export type ReportableEvent = ({
|
|
94
|
-
type: "launch_debugger_frontend";
|
|
95
|
-
launchType: "launch" | "redirect";
|
|
96
|
-
} & (SuccessResult<{
|
|
97
|
-
appId: string | null;
|
|
98
|
-
deviceId: string | null;
|
|
99
|
-
resolvedTargetDescription: string;
|
|
100
|
-
resolvedTargetAppId: string;
|
|
101
|
-
prefersFuseboxFrontend: boolean;
|
|
102
|
-
}> | ErrorResult | CodedErrorResult<"NO_APPS_FOUND">)) | ({
|
|
103
|
-
type: "connect_debugger_frontend";
|
|
104
|
-
} & (SuccessResult<{
|
|
105
|
-
frontendUserAgent: string | null;
|
|
106
|
-
} & DebuggerSessionIDs> | ErrorResult)) | ({
|
|
107
|
-
type: "debugger_command";
|
|
108
|
-
protocol: "CDP";
|
|
109
|
-
method: string | null;
|
|
110
|
-
requestOrigin: "proxy" | "debugger" | null;
|
|
111
|
-
responseOrigin: "proxy" | "device";
|
|
112
|
-
timeSinceStart: number | null;
|
|
113
|
-
frontendUserAgent: string | null;
|
|
114
|
-
prefersFuseboxFrontend: boolean | null;
|
|
115
|
-
} & DebuggerSessionIDs & (SuccessResult | CodedErrorResult<"TIMED_OUT" | "DEVICE_DISCONNECTED" | "DEBUGGER_DISCONNECTED" | "UNMATCHED_REQUEST_ID" | "PROTOCOL_ERROR">)) | ({
|
|
116
|
-
type: "proxy_error";
|
|
117
|
-
status: "error";
|
|
118
|
-
messageOrigin: "debugger" | "device";
|
|
119
|
-
message: string;
|
|
120
|
-
error: string;
|
|
121
|
-
errorStack: string;
|
|
122
|
-
} & DebuggerSessionIDs);
|
|
123
|
-
export interface EventReporter {
|
|
124
|
-
logEvent(event: ReportableEvent): void;
|
|
125
|
-
}
|
|
126
|
-
export type ExposedDevice = {
|
|
127
|
-
appId: string;
|
|
128
|
-
id: string;
|
|
129
|
-
name: string;
|
|
130
|
-
sendMessage: (message: JSONSerializable) => void;
|
|
131
|
-
};
|
|
132
|
-
export type ExposedDebugger = {
|
|
133
|
-
userAgent: string | null;
|
|
134
|
-
sendMessage: (message: JSONSerializable) => void;
|
|
135
|
-
};
|
|
136
|
-
export type CustomMessageHandlerConnection = {
|
|
137
|
-
page: Page;
|
|
138
|
-
device: ExposedDevice;
|
|
139
|
-
debugger: ExposedDebugger;
|
|
140
|
-
};
|
|
141
|
-
export type CreateCustomMessageHandlerFn = (connection: CustomMessageHandlerConnection) => CustomMessageHandler;
|
|
142
|
-
export interface CustomMessageHandler {
|
|
143
|
-
/**
|
|
144
|
-
* Handle a CDP message coming from the device.
|
|
145
|
-
* This is invoked before the message is sent to the debugger.
|
|
146
|
-
* When returning true, the message is considered handled and will not be sent to the debugger.
|
|
147
|
-
*/
|
|
148
|
-
handleDeviceMessage(message: JSONSerializable): boolean;
|
|
149
|
-
/**
|
|
150
|
-
* Handle a CDP message coming from the debugger.
|
|
151
|
-
* This is invoked before the message is sent to the device.
|
|
152
|
-
* When returning true, the message is considered handled and will not be sent to the device.
|
|
153
|
-
*/
|
|
154
|
-
handleDebuggerMessage(message: JSONSerializable): boolean;
|
|
155
|
-
}
|
|
156
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/modules/dev/dev-server/inspector/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import WS from "ws";
|
|
2
|
-
import type { EventReporter } from "../../types";
|
|
3
|
-
import type { Device } from "../../device";
|
|
4
|
-
interface DebuggerConnectionServerConfig {
|
|
5
|
-
devices: Map<string, Device>;
|
|
6
|
-
eventReporter: EventReporter | null;
|
|
7
|
-
startHeartbeat: (socket: WS, intervalMs: number) => void;
|
|
8
|
-
}
|
|
9
|
-
export default class DebuggerConnectionServer {
|
|
10
|
-
#private;
|
|
11
|
-
constructor({ devices, eventReporter, startHeartbeat, }: DebuggerConnectionServerConfig);
|
|
12
|
-
createServer(): WS.Server;
|
|
13
|
-
}
|
|
14
|
-
export {};
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_url_1 = __importDefault(require("node:url"));
|
|
7
|
-
const ws_1 = __importDefault(require("ws"));
|
|
8
|
-
const debug = require("debug")("Metro:InspectorProxy");
|
|
9
|
-
const INTERNAL_ERROR_CODE = 1011;
|
|
10
|
-
const DEBUGGER_HEARTBEAT_INTERVAL_MS = 10000;
|
|
11
|
-
const MAX_PONG_LATENCY_MS = 5000;
|
|
12
|
-
class DebuggerConnectionServer {
|
|
13
|
-
#devices;
|
|
14
|
-
#eventReporter;
|
|
15
|
-
#startHeartbeat;
|
|
16
|
-
constructor({ devices, eventReporter, startHeartbeat, }) {
|
|
17
|
-
this.#devices = devices;
|
|
18
|
-
this.#eventReporter = eventReporter;
|
|
19
|
-
this.#startHeartbeat = startHeartbeat;
|
|
20
|
-
}
|
|
21
|
-
createServer() {
|
|
22
|
-
const wss = new ws_1.default.Server({
|
|
23
|
-
noServer: true,
|
|
24
|
-
perMessageDeflate: false,
|
|
25
|
-
// Don't crash on exceptionally large messages - assume the debugger is
|
|
26
|
-
// well-behaved and the device is prepared to handle large messages.
|
|
27
|
-
maxPayload: 0,
|
|
28
|
-
});
|
|
29
|
-
wss.on("connection", async (socket, req) => {
|
|
30
|
-
console.log("debugger-connection onConnection", req.url);
|
|
31
|
-
try {
|
|
32
|
-
const query = node_url_1.default.parse(req.url || "", true).query || {};
|
|
33
|
-
const deviceId = query.device;
|
|
34
|
-
const pageId = query.page;
|
|
35
|
-
if (deviceId == null || pageId == null) {
|
|
36
|
-
throw new Error("Incorrect URL - must provide device and page IDs");
|
|
37
|
-
}
|
|
38
|
-
const device = this.#devices.get(deviceId);
|
|
39
|
-
if (device == null) {
|
|
40
|
-
throw new Error(`Unknown device with ID ${deviceId}`);
|
|
41
|
-
}
|
|
42
|
-
this.#startHeartbeat(socket, DEBUGGER_HEARTBEAT_INTERVAL_MS);
|
|
43
|
-
device.handleDebuggerConnection(socket, pageId, {
|
|
44
|
-
userAgent: Array.isArray(req.headers["user-agent"])
|
|
45
|
-
? req.headers["user-agent"][0]
|
|
46
|
-
: req.headers["user-agent"] || query.userAgent || null,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
catch (e) {
|
|
50
|
-
console.error(e);
|
|
51
|
-
socket.close(INTERNAL_ERROR_CODE, e?.toString() ?? "Unknown error");
|
|
52
|
-
this.#eventReporter?.logEvent({
|
|
53
|
-
type: "connect_debugger_frontend",
|
|
54
|
-
status: "error",
|
|
55
|
-
error: e,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
return wss;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
exports.default = DebuggerConnectionServer;
|
|
63
|
-
//# sourceMappingURL=debugger-connection.server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"debugger-connection.server.js","sourceRoot":"","sources":["../../../../../../../src/modules/dev/dev-server/inspector/wss/servers/debugger-connection.server.ts"],"names":[],"mappings":";;;;;AAAA,wDAA2B;AAC3B,4CAAoB;AAIpB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,sBAAsB,CAAC,CAAC;AAEvD,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAC7C,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAQjC,MAAqB,wBAAwB;IAC5C,QAAQ,CAAsB;IAC9B,cAAc,CAAuB;IACrC,eAAe,CAA2C;IAE1D,YAAY,EACX,OAAO,EACP,aAAa,EACb,cAAc,GACkB;QAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,YAAY;QACX,MAAM,GAAG,GAAG,IAAI,YAAE,CAAC,MAAM,CAAC;YACzB,QAAQ,EAAE,IAAI;YACd,iBAAiB,EAAE,KAAK;YACxB,uEAAuE;YACvE,oEAAoE;YACpE,UAAU,EAAE,CAAC;SACb,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;YAC1C,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC;gBACJ,MAAM,KAAK,GAAG,kBAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA4B,CAAC;gBACpD,MAAM,MAAM,GAAG,KAAK,CAAC,IAA0B,CAAC;gBAEhD,IAAI,QAAQ,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACxC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBACrE,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;gBACvD,CAAC;gBAED,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;gBAE7D,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE;oBAC/C,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;wBAClD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;wBAC9B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI;iBACvD,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,eAAe,CAAC,CAAC;gBACpE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC;oBAC7B,IAAI,EAAE,2BAA2B;oBACjC,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,CAAC;iBACR,CAAC,CAAC;YACJ,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACZ,CAAC;CACD;AA5DD,2CA4DC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import WS from "ws";
|
|
2
|
-
import { Device } from "../../device";
|
|
3
|
-
import type { EventReporter, CreateCustomMessageHandlerFn } from "../../types";
|
|
4
|
-
interface DeviceCounter {
|
|
5
|
-
value: number;
|
|
6
|
-
}
|
|
7
|
-
interface DeviceConnectionServerConfig {
|
|
8
|
-
devices: Map<string, Device>;
|
|
9
|
-
deviceCounter: DeviceCounter;
|
|
10
|
-
projectRoot: string;
|
|
11
|
-
eventReporter?: EventReporter;
|
|
12
|
-
customMessageHandler: CreateCustomMessageHandlerFn | null;
|
|
13
|
-
}
|
|
14
|
-
export default class DeviceConnectionServer {
|
|
15
|
-
#private;
|
|
16
|
-
constructor({ devices, deviceCounter, projectRoot, eventReporter, customMessageHandler, }: DeviceConnectionServerConfig);
|
|
17
|
-
createServer(): WS.Server;
|
|
18
|
-
}
|
|
19
|
-
export {};
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const ws_1 = __importDefault(require("ws"));
|
|
7
|
-
const node_url_1 = __importDefault(require("node:url"));
|
|
8
|
-
const device_1 = require("../../device");
|
|
9
|
-
const debug = require("debug")("Metro:InspectorProxy");
|
|
10
|
-
const INTERNAL_ERROR_CODE = 1011;
|
|
11
|
-
class DeviceConnectionServer {
|
|
12
|
-
#devices;
|
|
13
|
-
#deviceCounter;
|
|
14
|
-
#projectRoot;
|
|
15
|
-
#eventReporter;
|
|
16
|
-
#customMessageHandler;
|
|
17
|
-
constructor({ devices, deviceCounter, projectRoot, eventReporter, customMessageHandler, }) {
|
|
18
|
-
this.#devices = devices;
|
|
19
|
-
this.#deviceCounter = deviceCounter;
|
|
20
|
-
this.#projectRoot = projectRoot;
|
|
21
|
-
this.#eventReporter = eventReporter;
|
|
22
|
-
this.#customMessageHandler = customMessageHandler;
|
|
23
|
-
}
|
|
24
|
-
createServer() {
|
|
25
|
-
const wss = new ws_1.default.Server({
|
|
26
|
-
noServer: true,
|
|
27
|
-
perMessageDeflate: true,
|
|
28
|
-
maxPayload: 0,
|
|
29
|
-
});
|
|
30
|
-
wss.on("connection", async (socket, req) => {
|
|
31
|
-
console.log("device-connection onConnection", req.url);
|
|
32
|
-
try {
|
|
33
|
-
const fallbackDeviceId = String(this.#deviceCounter.value++);
|
|
34
|
-
const query = node_url_1.default.parse(req.url || "", true).query || {};
|
|
35
|
-
const deviceId = query.device || fallbackDeviceId;
|
|
36
|
-
const deviceName = query.name || "Unknown";
|
|
37
|
-
const appName = query.app || "Unknown";
|
|
38
|
-
const oldDevice = this.#devices.get(deviceId);
|
|
39
|
-
let newDevice;
|
|
40
|
-
if (oldDevice) {
|
|
41
|
-
oldDevice.dangerouslyRecreateDevice(deviceId, deviceName, appName, socket, this.#projectRoot, this.#eventReporter);
|
|
42
|
-
newDevice = oldDevice;
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
newDevice = new device_1.Device(deviceId, deviceName, appName, socket, this.#projectRoot, this.#eventReporter);
|
|
46
|
-
}
|
|
47
|
-
this.#devices.set(deviceId, newDevice);
|
|
48
|
-
debug(`Got new connection: name=${deviceName}, app=${appName}, device=${deviceId}`);
|
|
49
|
-
socket.on("close", () => {
|
|
50
|
-
const device = this.#devices.get(deviceId);
|
|
51
|
-
if (device?.dangerouslyGetSocket() === socket) {
|
|
52
|
-
this.#devices.delete(deviceId);
|
|
53
|
-
}
|
|
54
|
-
debug(`Device ${deviceName} disconnected.`);
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
catch (e) {
|
|
58
|
-
console.error("error", e);
|
|
59
|
-
socket.close(INTERNAL_ERROR_CODE, e?.toString() ?? "Unknown error");
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
return wss;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
exports.default = DeviceConnectionServer;
|
|
66
|
-
//# sourceMappingURL=device-connection.server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"device-connection.server.js","sourceRoot":"","sources":["../../../../../../../src/modules/dev/dev-server/inspector/wss/servers/device-connection.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const devtoolsPlugin: any;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.devtoolsPlugin = void 0;
|
|
7
|
-
const fastify_plugin_1 = __importDefault(require("fastify-plugin"));
|
|
8
|
-
const open_1 = __importDefault(require("open"));
|
|
9
|
-
exports.devtoolsPlugin = (0, fastify_plugin_1.default)(async (instance, options) => {
|
|
10
|
-
instance.route({
|
|
11
|
-
method: ["GET", "POST", "PUT"],
|
|
12
|
-
url: "/reload",
|
|
13
|
-
handler: (_request, reply) => {
|
|
14
|
-
console.log("Reload endpoint hit", instance.wss.messageServer.broadcast != null);
|
|
15
|
-
instance.wss.messageServer.broadcast("reload");
|
|
16
|
-
reply.send("OK");
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
instance.route({
|
|
20
|
-
method: ["GET", "POST", "PUT"],
|
|
21
|
-
url: "/launch-js-devtools",
|
|
22
|
-
handler: async (request, reply) => {
|
|
23
|
-
const customDebugger = process.env.REACT_DEBUGGER;
|
|
24
|
-
if (customDebugger) {
|
|
25
|
-
// NOOP for now
|
|
26
|
-
// TODO implement opening teardown here
|
|
27
|
-
}
|
|
28
|
-
else if (!instance.wss.debuggerServer.isDebuggerConnected()) {
|
|
29
|
-
const url = `${options.https ? "https" : "http"}://${options.host || "localhost"}:${options.port}/debugger-ui`;
|
|
30
|
-
try {
|
|
31
|
-
request.log.info({ msg: "Opening debugger UI", url });
|
|
32
|
-
await (0, open_1.default)(url);
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
if (error) {
|
|
36
|
-
request.log.error({
|
|
37
|
-
msg: "Cannot open debugger UI",
|
|
38
|
-
url,
|
|
39
|
-
error,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
reply.send("OK");
|
|
45
|
-
},
|
|
46
|
-
});
|
|
47
|
-
}, {
|
|
48
|
-
name: "devtools-plugin",
|
|
49
|
-
dependencies: ["wss-plugin"],
|
|
50
|
-
});
|
|
51
|
-
//# sourceMappingURL=devtools.plugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"devtools.plugin.js","sourceRoot":"","sources":["../../../../../src/modules/dev/dev-server/plugins/devtools.plugin.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA2C;AAC3C,gDAAwB;AAWX,QAAA,cAAc,GAAG,IAAA,wBAAa,EAC1C,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAC3B,QAAQ,CAAC,KAAK,CAAC;QACd,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;QAC9B,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YAC5B,OAAO,CAAC,GAAG,CACV,qBAAqB,EACrB,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,IAAI,IAAI,CAC5C,CAAC;YACF,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;KACD,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,CAAC;QACd,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;QAC9B,GAAG,EAAE,qBAAqB;QAC1B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACjC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YAClD,IAAI,cAAc,EAAE,CAAC;gBACpB,eAAe;gBACf,uCAAuC;YACxC,CAAC;iBAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAC/D,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAC9C,OAAO,CAAC,IAAI,IAAI,WACjB,IAAI,OAAO,CAAC,IAAI,cAAc,CAAC;gBAC/B,IAAI,CAAC;oBACJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;oBACtD,MAAM,IAAA,cAAI,EAAC,GAAG,CAAC,CAAC;gBACjB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,IAAI,KAAK,EAAE,CAAC;wBACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;4BACjB,GAAG,EAAE,yBAAyB;4BAC9B,GAAG;4BACH,KAAK;yBACL,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;YACF,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;KACD,CAAC,CAAC;AACJ,CAAC,EACD;IACC,IAAI,EAAE,iBAAiB;IACvB,YAAY,EAAE,CAAC,YAAY,CAAC;CAC5B,CACD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const faviconPlugin: any;
|