@teardown/cli 1.2.39 → 2.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/bin/teardown.js +11 -1
  2. package/package.json +77 -57
  3. package/src/cli/commands/init.ts +254 -0
  4. package/src/cli/commands/plugins.ts +93 -0
  5. package/src/cli/commands/prebuild.ts +168 -0
  6. package/src/cli/commands/run.ts +727 -0
  7. package/src/cli/commands/start.ts +87 -0
  8. package/src/cli/commands/validate.ts +62 -0
  9. package/src/cli/index.ts +59 -0
  10. package/src/config/index.ts +45 -0
  11. package/src/config/loader.ts +366 -0
  12. package/src/config/schema.ts +235 -0
  13. package/src/config/types.ts +322 -0
  14. package/src/index.ts +177 -0
  15. package/src/pipeline/cache.ts +179 -0
  16. package/src/pipeline/index.ts +10 -0
  17. package/src/pipeline/stages.ts +692 -0
  18. package/src/plugins/base.ts +370 -0
  19. package/src/plugins/capabilities/biometrics.ts +64 -0
  20. package/src/plugins/capabilities/bluetooth.ts +86 -0
  21. package/src/plugins/capabilities/calendar.ts +57 -0
  22. package/src/plugins/capabilities/camera.ts +77 -0
  23. package/src/plugins/capabilities/contacts.ts +57 -0
  24. package/src/plugins/capabilities/deep-linking.ts +124 -0
  25. package/src/plugins/capabilities/firebase.ts +138 -0
  26. package/src/plugins/capabilities/index.ts +96 -0
  27. package/src/plugins/capabilities/location.ts +87 -0
  28. package/src/plugins/capabilities/photo-library.ts +80 -0
  29. package/src/plugins/capabilities/push-notifications.ts +98 -0
  30. package/src/plugins/capabilities/sign-in-with-apple.ts +53 -0
  31. package/src/plugins/context.ts +220 -0
  32. package/src/plugins/index.ts +26 -0
  33. package/src/plugins/resolver.ts +321 -0
  34. package/src/templates/generator.ts +507 -0
  35. package/src/templates/index.ts +9 -0
  36. package/src/templates/paths.ts +25 -0
  37. package/src/transformers/android/gradle.ts +400 -0
  38. package/src/transformers/android/index.ts +19 -0
  39. package/src/transformers/android/manifest.ts +506 -0
  40. package/src/transformers/index.ts +39 -0
  41. package/src/transformers/ios/entitlements.ts +283 -0
  42. package/src/transformers/ios/index.ts +10 -0
  43. package/src/transformers/ios/pbxproj.ts +267 -0
  44. package/src/transformers/ios/plist.ts +198 -0
  45. package/src/utils/fs.ts +429 -0
  46. package/src/utils/index.ts +21 -0
  47. package/src/utils/logger.ts +203 -0
  48. package/templates/.gitignore +63 -0
  49. package/templates/Gemfile +3 -0
  50. package/templates/android/app/build.gradle.kts +97 -0
  51. package/templates/android/app/proguard-rules.pro +10 -0
  52. package/templates/android/app/src/main/AndroidManifest.xml +26 -0
  53. package/templates/android/app/src/main/java/com/appname/MainActivity.kt +22 -0
  54. package/templates/android/app/src/main/java/com/appname/MainApplication.kt +44 -0
  55. package/templates/android/app/src/main/res/values/strings.xml +3 -0
  56. package/templates/android/app/src/main/res/values/styles.xml +7 -0
  57. package/templates/android/build.gradle.kts +44 -0
  58. package/templates/android/gradle.properties +39 -0
  59. package/templates/android/settings.gradle.kts +12 -0
  60. package/templates/babel.config.js +15 -0
  61. package/templates/index.js +7 -0
  62. package/templates/ios/.xcode.env +11 -0
  63. package/templates/ios/AppName/AppDelegate.swift +25 -0
  64. package/templates/ios/AppName/AppName-Bridging-Header.h +4 -0
  65. package/templates/ios/AppName/AppName.entitlements +6 -0
  66. package/templates/ios/AppName/Images.xcassets/AppIcon.appiconset/Contents.json +35 -0
  67. package/templates/ios/AppName/Images.xcassets/Contents.json +6 -0
  68. package/templates/ios/AppName/Info.plist +49 -0
  69. package/templates/ios/AppName/LaunchScreen.storyboard +38 -0
  70. package/templates/ios/AppName.xcodeproj/project.pbxproj +402 -0
  71. package/templates/ios/AppName.xcodeproj/xcshareddata/xcschemes/AppName.xcscheme +78 -0
  72. package/templates/ios/Podfile +35 -0
  73. package/templates/metro.config.js +41 -0
  74. package/templates/package.json +57 -0
  75. package/templates/react-native.config.js +8 -0
  76. package/templates/src/app/index.tsx +34 -0
  77. package/templates/src/assets/fonts/.gitkeep +1 -0
  78. package/templates/src/assets/images/.gitkeep +1 -0
  79. package/templates/src/components/ui/accordion.tsx +114 -0
  80. package/templates/src/components/ui/avatar.tsx +75 -0
  81. package/templates/src/components/ui/button.tsx +93 -0
  82. package/templates/src/components/ui/card.tsx +120 -0
  83. package/templates/src/components/ui/checkbox.tsx +133 -0
  84. package/templates/src/components/ui/chip.tsx +95 -0
  85. package/templates/src/components/ui/dialog.tsx +134 -0
  86. package/templates/src/components/ui/divider.tsx +67 -0
  87. package/templates/src/components/ui/error-view.tsx +82 -0
  88. package/templates/src/components/ui/form-field.tsx +101 -0
  89. package/templates/src/components/ui/index.ts +100 -0
  90. package/templates/src/components/ui/popover.tsx +92 -0
  91. package/templates/src/components/ui/pressable-feedback.tsx +88 -0
  92. package/templates/src/components/ui/radio-group.tsx +153 -0
  93. package/templates/src/components/ui/scroll-shadow.tsx +108 -0
  94. package/templates/src/components/ui/select.tsx +165 -0
  95. package/templates/src/components/ui/skeleton-group.tsx +97 -0
  96. package/templates/src/components/ui/skeleton.tsx +87 -0
  97. package/templates/src/components/ui/spinner.tsx +87 -0
  98. package/templates/src/components/ui/surface.tsx +95 -0
  99. package/templates/src/components/ui/switch.tsx +124 -0
  100. package/templates/src/components/ui/tabs.tsx +154 -0
  101. package/templates/src/components/ui/text-field.tsx +106 -0
  102. package/templates/src/components/ui/toast.tsx +129 -0
  103. package/templates/src/contexts/.gitkeep +2 -0
  104. package/templates/src/core/clients/api/api.client.ts +113 -0
  105. package/templates/src/core/clients/api/index.ts +1 -0
  106. package/templates/src/core/clients/storage/index.ts +1 -0
  107. package/templates/src/core/clients/storage/storage.client.ts +121 -0
  108. package/templates/src/core/constants/index.ts +19 -0
  109. package/templates/src/core/core.ts +40 -0
  110. package/templates/src/core/index.ts +10 -0
  111. package/templates/src/global.css +87 -0
  112. package/templates/src/hooks/index.ts +6 -0
  113. package/templates/src/hooks/use-debounce.ts +23 -0
  114. package/templates/src/hooks/use-mounted.ts +21 -0
  115. package/templates/src/index.ts +28 -0
  116. package/templates/src/lib/index.ts +5 -0
  117. package/templates/src/lib/utils.ts +115 -0
  118. package/templates/src/modules/.gitkeep +6 -0
  119. package/templates/src/navigation/index.ts +8 -0
  120. package/templates/src/navigation/navigation-provider.tsx +36 -0
  121. package/templates/src/navigation/router.tsx +137 -0
  122. package/templates/src/providers/app.provider.tsx +29 -0
  123. package/templates/src/providers/index.ts +5 -0
  124. package/templates/src/routes/(tabs)/_layout.tsx +42 -0
  125. package/templates/src/routes/(tabs)/explore.tsx +161 -0
  126. package/templates/src/routes/(tabs)/home.tsx +138 -0
  127. package/templates/src/routes/(tabs)/profile.tsx +151 -0
  128. package/templates/src/routes/_layout.tsx +18 -0
  129. package/templates/src/routes/settings.tsx +194 -0
  130. package/templates/src/screens/auth/index.ts +6 -0
  131. package/templates/src/screens/auth/login.tsx +165 -0
  132. package/templates/src/screens/auth/register.tsx +203 -0
  133. package/templates/src/screens/home.tsx +204 -0
  134. package/templates/src/screens/index.ts +17 -0
  135. package/templates/src/screens/profile.tsx +210 -0
  136. package/templates/src/screens/settings.tsx +216 -0
  137. package/templates/src/screens/welcome.tsx +101 -0
  138. package/templates/src/styles/index.ts +103 -0
  139. package/templates/src/types/common.ts +71 -0
  140. package/templates/src/types/index.ts +5 -0
  141. package/templates/tsconfig.json +14 -0
  142. package/README.md +0 -15
  143. package/assets/favicon.ico +0 -0
  144. package/dist/commands/dev/dev.d.ts +0 -22
  145. package/dist/commands/dev/dev.js +0 -56
  146. package/dist/commands/dev/dev.js.map +0 -1
  147. package/dist/commands/init/init-teardown.d.ts +0 -9
  148. package/dist/commands/init/init-teardown.js +0 -27
  149. package/dist/commands/init/init-teardown.js.map +0 -1
  150. package/dist/index.d.ts +0 -1
  151. package/dist/index.js +0 -21
  152. package/dist/index.js.map +0 -1
  153. package/dist/modules/dev/dev-menu/keyboard-handler.d.ts +0 -21
  154. package/dist/modules/dev/dev-menu/keyboard-handler.js +0 -139
  155. package/dist/modules/dev/dev-menu/keyboard-handler.js.map +0 -1
  156. package/dist/modules/dev/dev-menu/open-debugger-keyboard-handler.d.ts +0 -18
  157. package/dist/modules/dev/dev-menu/open-debugger-keyboard-handler.js +0 -106
  158. package/dist/modules/dev/dev-menu/open-debugger-keyboard-handler.js.map +0 -1
  159. package/dist/modules/dev/dev-server/cdp/cdp.adapter.d.ts +0 -6
  160. package/dist/modules/dev/dev-server/cdp/cdp.adapter.js +0 -13
  161. package/dist/modules/dev/dev-server/cdp/cdp.adapter.js.map +0 -1
  162. package/dist/modules/dev/dev-server/cdp/index.d.ts +0 -2
  163. package/dist/modules/dev/dev-server/cdp/index.js +0 -19
  164. package/dist/modules/dev/dev-server/cdp/index.js.map +0 -1
  165. package/dist/modules/dev/dev-server/cdp/types.d.ts +0 -107
  166. package/dist/modules/dev/dev-server/cdp/types.js +0 -3
  167. package/dist/modules/dev/dev-server/cdp/types.js.map +0 -1
  168. package/dist/modules/dev/dev-server/dev-server-checker.d.ts +0 -22
  169. package/dist/modules/dev/dev-server/dev-server-checker.js +0 -73
  170. package/dist/modules/dev/dev-server/dev-server-checker.js.map +0 -1
  171. package/dist/modules/dev/dev-server/dev-server.d.ts +0 -74
  172. package/dist/modules/dev/dev-server/dev-server.js +0 -272
  173. package/dist/modules/dev/dev-server/dev-server.js.map +0 -1
  174. package/dist/modules/dev/dev-server/inspector/device.d.ts +0 -46
  175. package/dist/modules/dev/dev-server/inspector/device.event-reporter.d.ts +0 -37
  176. package/dist/modules/dev/dev-server/inspector/device.event-reporter.js +0 -166
  177. package/dist/modules/dev/dev-server/inspector/device.event-reporter.js.map +0 -1
  178. package/dist/modules/dev/dev-server/inspector/device.js +0 -578
  179. package/dist/modules/dev/dev-server/inspector/device.js.map +0 -1
  180. package/dist/modules/dev/dev-server/inspector/inspector.d.ts +0 -27
  181. package/dist/modules/dev/dev-server/inspector/inspector.js +0 -225
  182. package/dist/modules/dev/dev-server/inspector/inspector.js.map +0 -1
  183. package/dist/modules/dev/dev-server/inspector/types.d.ts +0 -156
  184. package/dist/modules/dev/dev-server/inspector/types.js +0 -3
  185. package/dist/modules/dev/dev-server/inspector/types.js.map +0 -1
  186. package/dist/modules/dev/dev-server/inspector/wss/servers/debugger-connection.server.d.ts +0 -14
  187. package/dist/modules/dev/dev-server/inspector/wss/servers/debugger-connection.server.js +0 -63
  188. package/dist/modules/dev/dev-server/inspector/wss/servers/debugger-connection.server.js.map +0 -1
  189. package/dist/modules/dev/dev-server/inspector/wss/servers/device-connection.server.d.ts +0 -19
  190. package/dist/modules/dev/dev-server/inspector/wss/servers/device-connection.server.js +0 -66
  191. package/dist/modules/dev/dev-server/inspector/wss/servers/device-connection.server.js.map +0 -1
  192. package/dist/modules/dev/dev-server/plugins/devtools.plugin.d.ts +0 -1
  193. package/dist/modules/dev/dev-server/plugins/devtools.plugin.js +0 -51
  194. package/dist/modules/dev/dev-server/plugins/devtools.plugin.js.map +0 -1
  195. package/dist/modules/dev/dev-server/plugins/favicon.plugin.d.ts +0 -1
  196. package/dist/modules/dev/dev-server/plugins/favicon.plugin.js +0 -19
  197. package/dist/modules/dev/dev-server/plugins/favicon.plugin.js.map +0 -1
  198. package/dist/modules/dev/dev-server/plugins/multipart.plugin.d.ts +0 -1
  199. package/dist/modules/dev/dev-server/plugins/multipart.plugin.js +0 -63
  200. package/dist/modules/dev/dev-server/plugins/multipart.plugin.js.map +0 -1
  201. package/dist/modules/dev/dev-server/plugins/systrace.plugin.d.ts +0 -1
  202. package/dist/modules/dev/dev-server/plugins/systrace.plugin.js +0 -29
  203. package/dist/modules/dev/dev-server/plugins/systrace.plugin.js.map +0 -1
  204. package/dist/modules/dev/dev-server/plugins/types.d.ts +0 -11
  205. package/dist/modules/dev/dev-server/plugins/types.js +0 -3
  206. package/dist/modules/dev/dev-server/plugins/types.js.map +0 -1
  207. package/dist/modules/dev/dev-server/plugins/wss/index.d.ts +0 -3
  208. package/dist/modules/dev/dev-server/plugins/wss/index.js +0 -20
  209. package/dist/modules/dev/dev-server/plugins/wss/index.js.map +0 -1
  210. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-api.server.d.ts +0 -37
  211. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-api.server.js +0 -67
  212. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-api.server.js.map +0 -1
  213. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-debugger.server.d.ts +0 -63
  214. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-debugger.server.js +0 -129
  215. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-debugger.server.js.map +0 -1
  216. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-dev-client.server.d.ts +0 -32
  217. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-dev-client.server.js +0 -76
  218. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-dev-client.server.js.map +0 -1
  219. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-events.server.d.ts +0 -75
  220. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-events.server.js +0 -199
  221. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-events.server.js.map +0 -1
  222. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-hmr.server.d.ts +0 -44
  223. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-hmr.server.js +0 -121
  224. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-hmr.server.js.map +0 -1
  225. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-message.server.d.ts +0 -135
  226. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-message.server.js +0 -364
  227. package/dist/modules/dev/dev-server/plugins/wss/servers/web-socket-message.server.js.map +0 -1
  228. package/dist/modules/dev/dev-server/plugins/wss/types.d.ts +0 -6
  229. package/dist/modules/dev/dev-server/plugins/wss/types.js +0 -3
  230. package/dist/modules/dev/dev-server/plugins/wss/types.js.map +0 -1
  231. package/dist/modules/dev/dev-server/plugins/wss/web-socket-router.d.ts +0 -32
  232. package/dist/modules/dev/dev-server/plugins/wss/web-socket-router.js +0 -58
  233. package/dist/modules/dev/dev-server/plugins/wss/web-socket-router.js.map +0 -1
  234. package/dist/modules/dev/dev-server/plugins/wss/web-socket-server-adapter.d.ts +0 -13
  235. package/dist/modules/dev/dev-server/plugins/wss/web-socket-server-adapter.js +0 -27
  236. package/dist/modules/dev/dev-server/plugins/wss/web-socket-server-adapter.js.map +0 -1
  237. package/dist/modules/dev/dev-server/plugins/wss/web-socket-server.d.ts +0 -39
  238. package/dist/modules/dev/dev-server/plugins/wss/web-socket-server.js +0 -47
  239. package/dist/modules/dev/dev-server/plugins/wss/web-socket-server.js.map +0 -1
  240. package/dist/modules/dev/dev-server/plugins/wss/wss.plugin.d.ts +0 -24
  241. package/dist/modules/dev/dev-server/plugins/wss/wss.plugin.js +0 -56
  242. package/dist/modules/dev/dev-server/plugins/wss/wss.plugin.js.map +0 -1
  243. package/dist/modules/dev/dev-server/sybmolicate/sybmolicate.plugin.d.ts +0 -7
  244. package/dist/modules/dev/dev-server/sybmolicate/sybmolicate.plugin.js +0 -41
  245. package/dist/modules/dev/dev-server/sybmolicate/sybmolicate.plugin.js.map +0 -1
  246. package/dist/modules/dev/dev-server/sybmolicate/types.d.ts +0 -64
  247. package/dist/modules/dev/dev-server/sybmolicate/types.js +0 -3
  248. package/dist/modules/dev/dev-server/sybmolicate/types.js.map +0 -1
  249. package/dist/modules/dev/terminal/base.terminal.reporter.d.ts +0 -25
  250. package/dist/modules/dev/terminal/base.terminal.reporter.js +0 -79
  251. package/dist/modules/dev/terminal/base.terminal.reporter.js.map +0 -1
  252. package/dist/modules/dev/terminal/terminal.reporter.d.ts +0 -13
  253. package/dist/modules/dev/terminal/terminal.reporter.js +0 -83
  254. package/dist/modules/dev/terminal/terminal.reporter.js.map +0 -1
  255. package/dist/modules/dev/types.d.ts +0 -20
  256. package/dist/modules/dev/types.js +0 -3
  257. package/dist/modules/dev/types.js.map +0 -1
  258. package/dist/modules/dev/utils/log.d.ts +0 -23
  259. package/dist/modules/dev/utils/log.js +0 -74
  260. package/dist/modules/dev/utils/log.js.map +0 -1
@@ -1,578 +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.Device = void 0;
7
- const node_fs_1 = __importDefault(require("node:fs"));
8
- const node_path_1 = __importDefault(require("node:path"));
9
- const node_url_1 = require("node:url");
10
- const ws_1 = __importDefault(require("ws"));
11
- const device_event_reporter_1 = require("./device.event-reporter");
12
- const debug = require("debug")("Metro:InspectorProxy");
13
- const PAGES_POLLING_INTERVAL = 1000;
14
- // Constants for host rewriting
15
- const REWRITE_HOSTS_TO_LOCALHOST = [
16
- "127.0.0.1",
17
- "10.0.2.2",
18
- "10.0.3.2",
19
- ];
20
- const FILE_PREFIX = "file://";
21
- const REACT_NATIVE_RELOADABLE_PAGE_ID = "-1";
22
- class Device {
23
- id;
24
- name;
25
- app;
26
- messageFromDeviceQueue = Promise.resolve();
27
- deviceSocket;
28
- pages = new Map();
29
- debuggerConnection = null;
30
- lastConnectedLegacyReactNativePage = null;
31
- isLegacyPageReloading = false;
32
- lastGetPagesMessage = "";
33
- scriptIdToSourcePathMapping = new Map();
34
- projectRoot;
35
- deviceEventReporter;
36
- pagesPollingIntervalId;
37
- createCustomMessageHandler;
38
- connectedPageIds = new Set();
39
- constructor(id, name, app, socket, projectRoot, eventReporter) {
40
- this.id = id;
41
- this.name = name;
42
- this.app = app;
43
- this.deviceSocket = socket;
44
- this.projectRoot = projectRoot;
45
- this.deviceEventReporter =
46
- eventReporter != null
47
- ? new device_event_reporter_1.DeviceEventReporter(eventReporter, {
48
- deviceId: id,
49
- deviceName: name,
50
- appId: app,
51
- })
52
- : null;
53
- this.createCustomMessageHandler = null;
54
- // Setup message handling
55
- this.deviceSocket.on("message", (message) => {
56
- this.messageFromDeviceQueue = this.messageFromDeviceQueue
57
- .then(async () => {
58
- const parsedMessage = JSON.parse(message);
59
- if (parsedMessage.event === "getPages") {
60
- if (message !== this.lastGetPagesMessage) {
61
- debug(`(Debugger) (Proxy) <- (Device), getPages ping has changed: ${message}`);
62
- this.lastGetPagesMessage = message;
63
- }
64
- }
65
- else {
66
- debug(`(Debugger) (Proxy) <- (Device): ${message}`);
67
- }
68
- await this.handleMessageFromDevice(parsedMessage);
69
- })
70
- .catch((error) => {
71
- debug("%O\nHandling device message: %s", error, message);
72
- try {
73
- this.deviceEventReporter?.logProxyMessageHandlingError("device", error, message);
74
- }
75
- catch (loggingError) {
76
- debug("Error logging message handling error to reporter: %O", loggingError);
77
- }
78
- });
79
- });
80
- // Setup polling
81
- this.pagesPollingIntervalId = setInterval(() => this.sendMessageToDevice({ event: "getPages" }), PAGES_POLLING_INTERVAL);
82
- // Handle socket close
83
- this.deviceSocket.on("close", () => {
84
- if (socket === this.deviceSocket) {
85
- this.deviceEventReporter?.logDisconnection("device");
86
- this.terminateDebuggerConnection();
87
- clearInterval(this.pagesPollingIntervalId);
88
- }
89
- });
90
- }
91
- terminateDebuggerConnection() {
92
- const debuggerConnection = this.debuggerConnection;
93
- if (debuggerConnection) {
94
- this.sendDisconnectEventToDevice(this.mapToDevicePageId(debuggerConnection.pageId));
95
- debuggerConnection.socket.close();
96
- this.debuggerConnection = null;
97
- }
98
- }
99
- dangerouslyRecreateDevice(id, name, app, socket, projectRoot, eventReporter) {
100
- invariant(id === this.id, "dangerouslyRecreateDevice() can only be used for the same device ID");
101
- const oldDebugger = this.debuggerConnection;
102
- if (this.app !== app || this.name !== name) {
103
- this.deviceSocket.close();
104
- this.terminateDebuggerConnection();
105
- }
106
- this.debuggerConnection = null;
107
- if (oldDebugger) {
108
- oldDebugger.socket.removeAllListeners();
109
- this.deviceSocket.close();
110
- this.handleDebuggerConnection(oldDebugger.socket, oldDebugger.pageId, {
111
- userAgent: oldDebugger.userAgent,
112
- });
113
- }
114
- this.id = id;
115
- this.name = name;
116
- this.app = app;
117
- this.deviceSocket = socket;
118
- this.projectRoot = projectRoot;
119
- this.deviceEventReporter = eventReporter
120
- ? new device_event_reporter_1.DeviceEventReporter(eventReporter, {
121
- deviceId: id,
122
- deviceName: name,
123
- appId: app,
124
- })
125
- : null;
126
- }
127
- getName() {
128
- return this.name;
129
- }
130
- getApp() {
131
- return this.app;
132
- }
133
- getPagesList() {
134
- if (this.lastConnectedLegacyReactNativePage) {
135
- return [...this.pages.values(), this.createSyntheticPage()];
136
- }
137
- return [...this.pages.values()];
138
- }
139
- handleDebuggerConnection(socket, pageId, metadata) {
140
- const page = pageId === REACT_NATIVE_RELOADABLE_PAGE_ID
141
- ? this.createSyntheticPage()
142
- : this.pages.get(pageId);
143
- if (!page) {
144
- debug(`Got new debugger connection for page ${pageId} of ${this.name}, but no such page exists`);
145
- socket.close();
146
- return;
147
- }
148
- this.deviceEventReporter?.logDisconnection("debugger");
149
- this.terminateDebuggerConnection();
150
- this.deviceEventReporter?.logConnection("debugger", {
151
- pageId,
152
- frontendUserAgent: metadata.userAgent,
153
- });
154
- const debuggerInfo = {
155
- socket,
156
- prependedFilePrefix: false,
157
- pageId,
158
- userAgent: metadata.userAgent,
159
- customHandler: null,
160
- };
161
- this.debuggerConnection = debuggerInfo;
162
- if (this.debuggerConnection && this.createCustomMessageHandler) {
163
- this.debuggerConnection.customHandler = this.createCustomMessageHandler({
164
- page,
165
- debugger: {
166
- userAgent: debuggerInfo.userAgent,
167
- sendMessage: (message) => {
168
- try {
169
- const payload = JSON.stringify(message);
170
- debug(`(Debugger) <- (Proxy) (Device): ${payload}`);
171
- socket.send(payload);
172
- }
173
- catch { }
174
- },
175
- },
176
- device: {
177
- appId: this.app,
178
- id: this.id,
179
- name: this.name,
180
- sendMessage: (message) => {
181
- try {
182
- const payload = JSON.stringify({
183
- event: "wrappedEvent",
184
- payload: {
185
- pageId: this.mapToDevicePageId(pageId),
186
- wrappedEvent: JSON.stringify(message),
187
- },
188
- });
189
- debug(`(Debugger) -> (Proxy) (Device): ${payload}`);
190
- this.deviceSocket.send(payload);
191
- }
192
- catch { }
193
- },
194
- },
195
- });
196
- }
197
- this.sendConnectEventToDevice(this.mapToDevicePageId(pageId));
198
- socket.on("message", (message) => {
199
- debug(`(Debugger) -> (Proxy) (Device): ${message}`);
200
- const debuggerRequest = JSON.parse(message);
201
- this.deviceEventReporter?.logRequest(debuggerRequest, "debugger", {
202
- pageId: this.debuggerConnection?.pageId ?? null,
203
- frontendUserAgent: metadata.userAgent,
204
- prefersFuseboxFrontend: this.isPageFuseboxFrontend(this.debuggerConnection?.pageId ?? null),
205
- });
206
- if (this.debuggerConnection?.customHandler?.handleDebuggerMessage(debuggerRequest) === true) {
207
- return;
208
- }
209
- if (!this.pageHasCapability(page, "nativeSourceCodeFetching")) {
210
- const processedReq = this.interceptClientMessageForSourceFetching(debuggerRequest, debuggerInfo, socket);
211
- if (processedReq) {
212
- this.sendMessageToDevice({
213
- event: "wrappedEvent",
214
- payload: {
215
- pageId: this.mapToDevicePageId(pageId),
216
- wrappedEvent: JSON.stringify(processedReq),
217
- },
218
- });
219
- }
220
- }
221
- });
222
- socket.on("close", () => {
223
- debug(`Debugger for page ${pageId} and ${this.name} disconnected.`);
224
- this.deviceEventReporter?.logDisconnection("debugger");
225
- if (this.debuggerConnection?.socket === socket) {
226
- this.terminateDebuggerConnection();
227
- }
228
- });
229
- const sendFunc = socket.send.bind(socket);
230
- socket.send = (message) => {
231
- debug(`(Debugger) <- (Proxy) (Device): ${message}`);
232
- return sendFunc(message);
233
- };
234
- }
235
- sendConnectEventToDevice(devicePageId) {
236
- if (this.connectedPageIds.has(devicePageId)) {
237
- return;
238
- }
239
- this.connectedPageIds.add(devicePageId);
240
- this.sendMessageToDevice({
241
- event: "connect",
242
- payload: { pageId: devicePageId },
243
- });
244
- }
245
- sendDisconnectEventToDevice(devicePageId) {
246
- if (!this.connectedPageIds.has(devicePageId)) {
247
- return;
248
- }
249
- this.connectedPageIds.delete(devicePageId);
250
- this.sendMessageToDevice({
251
- event: "disconnect",
252
- payload: { pageId: devicePageId },
253
- });
254
- }
255
- pageHasCapability(page, flag) {
256
- return page.capabilities[flag] === true;
257
- }
258
- createSyntheticPage() {
259
- return {
260
- id: REACT_NATIVE_RELOADABLE_PAGE_ID,
261
- title: "React Native Experimental (Improved Chrome Reloads)",
262
- vm: "don't use",
263
- app: this.app,
264
- capabilities: {},
265
- };
266
- }
267
- async handleMessageFromDevice(message) {
268
- if (message.event === "getPages") {
269
- this.pages = new Map(message.payload.map((page) => {
270
- const { capabilities = {}, ...rest } = page;
271
- return [
272
- rest.id,
273
- {
274
- ...rest,
275
- capabilities,
276
- },
277
- ];
278
- }));
279
- for (const page of this.pages.values()) {
280
- if (this.pageHasCapability(page, "nativePageReloads")) {
281
- continue;
282
- }
283
- if (page.title.includes("React")) {
284
- if (page.id !== this.lastConnectedLegacyReactNativePage?.id) {
285
- this.newLegacyReactNativePage(page);
286
- break;
287
- }
288
- }
289
- }
290
- }
291
- else if (message.event === "disconnect") {
292
- const pageId = message.payload.pageId;
293
- const page = this.pages.get(pageId);
294
- if (page && this.pageHasCapability(page, "nativePageReloads")) {
295
- return;
296
- }
297
- const debuggerSocket = this.debuggerConnection?.socket;
298
- if (debuggerSocket && debuggerSocket.readyState === ws_1.default.OPEN) {
299
- if (this.debuggerConnection &&
300
- this.debuggerConnection.pageId !== REACT_NATIVE_RELOADABLE_PAGE_ID) {
301
- debug(`Legacy page ${pageId} is reloading.`);
302
- debuggerSocket.send(JSON.stringify({ method: "reload" }));
303
- }
304
- }
305
- }
306
- else if (message.event === "wrappedEvent") {
307
- if (!this.debuggerConnection) {
308
- return;
309
- }
310
- const debuggerSocket = this.debuggerConnection.socket;
311
- if (!debuggerSocket || debuggerSocket.readyState !== ws_1.default.OPEN) {
312
- return;
313
- }
314
- const parsedPayload = JSON.parse(message.payload.wrappedEvent);
315
- const pageId = this.debuggerConnection.pageId;
316
- if ("id" in parsedPayload) {
317
- this.deviceEventReporter?.logResponse(parsedPayload, "device", {
318
- pageId,
319
- frontendUserAgent: this.debuggerConnection.userAgent,
320
- prefersFuseboxFrontend: this.isPageFuseboxFrontend(pageId),
321
- });
322
- }
323
- if (this.debuggerConnection.customHandler?.handleDeviceMessage(parsedPayload) === true) {
324
- return;
325
- }
326
- await this.processMessageFromDeviceLegacy(parsedPayload, this.debuggerConnection, pageId);
327
- debuggerSocket.send(JSON.stringify(parsedPayload));
328
- }
329
- }
330
- sendMessageToDevice(message) {
331
- try {
332
- if (message.event !== "getPages") {
333
- debug(`(Debugger) (Proxy) -> (Device): ${JSON.stringify(message)}`);
334
- }
335
- this.deviceSocket.send(JSON.stringify(message));
336
- }
337
- catch (error) { }
338
- }
339
- newLegacyReactNativePage(page) {
340
- debug(`React Native page updated to ${page.id}`);
341
- if (!this.debuggerConnection ||
342
- this.debuggerConnection.pageId !== REACT_NATIVE_RELOADABLE_PAGE_ID) {
343
- this.lastConnectedLegacyReactNativePage = page;
344
- return;
345
- }
346
- const oldPageId = this.lastConnectedLegacyReactNativePage?.id;
347
- this.lastConnectedLegacyReactNativePage = page;
348
- this.isLegacyPageReloading = true;
349
- if (oldPageId != null) {
350
- this.sendDisconnectEventToDevice(oldPageId);
351
- }
352
- this.sendConnectEventToDevice(page.id);
353
- const toSend = [
354
- { method: "Runtime.enable", id: 1e9 },
355
- { method: "Debugger.enable", id: 1e9 },
356
- ];
357
- for (const message of toSend) {
358
- const pageId = this.debuggerConnection?.pageId ?? null;
359
- this.deviceEventReporter?.logRequest(message, "proxy", {
360
- pageId,
361
- frontendUserAgent: this.debuggerConnection?.userAgent ?? null,
362
- prefersFuseboxFrontend: this.isPageFuseboxFrontend(pageId),
363
- });
364
- this.sendMessageToDevice({
365
- event: "wrappedEvent",
366
- payload: {
367
- pageId: this.mapToDevicePageId(page.id),
368
- wrappedEvent: JSON.stringify(message),
369
- },
370
- });
371
- }
372
- }
373
- async processMessageFromDeviceLegacy(payload, debuggerInfo, pageId) {
374
- const page = pageId != null ? this.pages.get(pageId) : null;
375
- if ((!page || !this.pageHasCapability(page, "nativeSourceCodeFetching")) &&
376
- payload.method === "Debugger.scriptParsed" &&
377
- // @ts-ignore
378
- payload.params != null) {
379
- // @ts-ignore
380
- const params = payload.params;
381
- if ("sourceMapURL" in params) {
382
- for (const hostToRewrite of REWRITE_HOSTS_TO_LOCALHOST) {
383
- if (params.sourceMapURL.includes(hostToRewrite)) {
384
- // @ts-ignore
385
- payload.params.sourceMapURL = params.sourceMapURL.replace(hostToRewrite, "localhost");
386
- debuggerInfo.originalSourceURLAddress = hostToRewrite;
387
- }
388
- }
389
- const sourceMapURL = this.tryParseHTTPURL(params.sourceMapURL);
390
- if (sourceMapURL) {
391
- try {
392
- const sourceMap = await this.fetchText(sourceMapURL);
393
- // @ts-ignore
394
- payload.params.sourceMapURL = `data:application/json;charset=utf-8;base64,${Buffer.from(sourceMap).toString("base64")}`;
395
- }
396
- catch (exception) {
397
- const exceptionMessage = exception instanceof Error
398
- ? exception.message
399
- : String(exception);
400
- this.sendErrorToDebugger(`Failed to fetch source map ${params.sourceMapURL}: ${exceptionMessage}`);
401
- }
402
- }
403
- }
404
- if ("url" in params) {
405
- for (const hostToRewrite of REWRITE_HOSTS_TO_LOCALHOST) {
406
- if (params?.url?.includes(hostToRewrite)) {
407
- payload.params.url = params.url.replace(hostToRewrite, "localhost");
408
- debuggerInfo.originalSourceURLAddress = hostToRewrite;
409
- }
410
- }
411
- if (payload.params.url.match(/^[0-9a-z]+$/)) {
412
- payload.params.url = FILE_PREFIX + payload.params.url;
413
- debuggerInfo.prependedFilePrefix = true;
414
- }
415
- if (params.scriptId != null) {
416
- this.scriptIdToSourcePathMapping.set(params.scriptId, params.url);
417
- }
418
- }
419
- }
420
- if (payload.method === "Runtime.executionContextCreated" &&
421
- this.isLegacyPageReloading) {
422
- debuggerInfo.socket.send(JSON.stringify({ method: "Runtime.executionContextsCleared" }));
423
- const resumeMessage = { method: "Debugger.resume", id: 0 };
424
- this.deviceEventReporter?.logRequest(resumeMessage, "proxy", {
425
- pageId: this.debuggerConnection?.pageId ?? null,
426
- frontendUserAgent: this.debuggerConnection?.userAgent ?? null,
427
- prefersFuseboxFrontend: this.isPageFuseboxFrontend(this.debuggerConnection?.pageId ?? null),
428
- });
429
- this.sendMessageToDevice({
430
- event: "wrappedEvent",
431
- payload: {
432
- pageId: this.mapToDevicePageId(debuggerInfo.pageId),
433
- wrappedEvent: JSON.stringify(resumeMessage),
434
- },
435
- });
436
- this.isLegacyPageReloading = false;
437
- }
438
- }
439
- interceptClientMessageForSourceFetching(req, debuggerInfo, socket) {
440
- switch (req.method) {
441
- case "Debugger.setBreakpointByUrl":
442
- return this.processDebuggerSetBreakpointByUrl(req, debuggerInfo);
443
- case "Debugger.getScriptSource":
444
- this.processDebuggerGetScriptSource(req, socket);
445
- return null;
446
- default:
447
- return req;
448
- }
449
- }
450
- processDebuggerSetBreakpointByUrl(req, debuggerInfo) {
451
- if (debuggerInfo.originalSourceURLAddress != null) {
452
- const processedReq = { ...req, params: { ...req.params } };
453
- if (processedReq.params.url != null) {
454
- processedReq.params.url = processedReq.params.url.replace("localhost", debuggerInfo.originalSourceURLAddress);
455
- if (processedReq.params.url?.startsWith(FILE_PREFIX) &&
456
- debuggerInfo.prependedFilePrefix) {
457
- processedReq.params.url = processedReq.params.url.slice(FILE_PREFIX.length);
458
- }
459
- }
460
- if (processedReq.params.urlRegex != null) {
461
- processedReq.params.urlRegex = processedReq.params.urlRegex.replace(/localhost/g, debuggerInfo.originalSourceURLAddress);
462
- }
463
- return processedReq;
464
- }
465
- return req;
466
- }
467
- processDebuggerGetScriptSource(req, socket) {
468
- const sendSuccessResponse = (scriptSource) => {
469
- const result = { scriptSource };
470
- const response = {
471
- id: req.id,
472
- result,
473
- };
474
- socket.send(JSON.stringify(response));
475
- const pageId = this.debuggerConnection?.pageId ?? null;
476
- this.deviceEventReporter?.logResponse(response, "proxy", {
477
- pageId,
478
- frontendUserAgent: this.debuggerConnection?.userAgent ?? null,
479
- prefersFuseboxFrontend: this.isPageFuseboxFrontend(pageId),
480
- });
481
- };
482
- const sendErrorResponse = (error) => {
483
- const result = { error: { message: error } };
484
- const response = { id: req.id, result };
485
- socket.send(JSON.stringify(response));
486
- this.sendErrorToDebugger(error);
487
- const pageId = this.debuggerConnection?.pageId ?? null;
488
- this.deviceEventReporter?.logResponse(response, "proxy", {
489
- pageId,
490
- frontendUserAgent: this.debuggerConnection?.userAgent ?? null,
491
- prefersFuseboxFrontend: this.isPageFuseboxFrontend(pageId),
492
- });
493
- };
494
- const pathToSource = this.scriptIdToSourcePathMapping.get(req.params.scriptId);
495
- if (pathToSource != null) {
496
- const httpURL = this.tryParseHTTPURL(pathToSource);
497
- if (httpURL) {
498
- this.fetchText(httpURL).then((text) => sendSuccessResponse(text), (err) => sendErrorResponse(`Failed to fetch source url ${pathToSource}: ${err.message}`));
499
- }
500
- else {
501
- let file;
502
- try {
503
- file = node_fs_1.default.readFileSync(node_path_1.default.resolve(this.projectRoot, pathToSource), "utf8");
504
- sendSuccessResponse(file);
505
- }
506
- catch (err) {
507
- const exceptionMessage = err instanceof Error ? err.message : String(err);
508
- sendErrorResponse(`Failed to fetch source file ${pathToSource}: ${exceptionMessage}`);
509
- }
510
- }
511
- }
512
- }
513
- mapToDevicePageId(pageId) {
514
- if (pageId === REACT_NATIVE_RELOADABLE_PAGE_ID &&
515
- this.lastConnectedLegacyReactNativePage != null) {
516
- return this.lastConnectedLegacyReactNativePage.id;
517
- }
518
- return pageId;
519
- }
520
- tryParseHTTPURL(url) {
521
- let parsedURL = null;
522
- try {
523
- parsedURL = new node_url_1.URL(url);
524
- }
525
- catch { }
526
- const protocol = parsedURL?.protocol;
527
- if (protocol !== "http:" && protocol !== "https:") {
528
- parsedURL = null;
529
- }
530
- return parsedURL;
531
- }
532
- async fetchText(url) {
533
- const response = await fetch(url.toString());
534
- if (!response.ok) {
535
- throw new Error(`HTTP ${response.status} ${response.statusText}`);
536
- }
537
- const text = await response.text();
538
- if (text.length > 350000000) {
539
- throw new Error("file too large to fetch via HTTP");
540
- }
541
- return text;
542
- }
543
- sendErrorToDebugger(message) {
544
- const debuggerSocket = this.debuggerConnection?.socket;
545
- if (debuggerSocket && debuggerSocket.readyState === ws_1.default.OPEN) {
546
- debuggerSocket.send(JSON.stringify({
547
- method: "Runtime.consoleAPICalled",
548
- params: {
549
- args: [
550
- {
551
- type: "string",
552
- value: message,
553
- },
554
- ],
555
- executionContextId: 0,
556
- type: "error",
557
- },
558
- }));
559
- }
560
- }
561
- isPageFuseboxFrontend(pageId) {
562
- const page = pageId == null ? null : this.pages.get(pageId);
563
- if (page == null) {
564
- return null;
565
- }
566
- return this.pageHasCapability(page, "prefersFuseboxFrontend");
567
- }
568
- dangerouslyGetSocket() {
569
- return this.deviceSocket;
570
- }
571
- }
572
- exports.Device = Device;
573
- const invariant = (condition, message) => {
574
- if (!condition) {
575
- throw new Error(message);
576
- }
577
- };
578
- //# sourceMappingURL=device.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"device.js","sourceRoot":"","sources":["../../../../../src/modules/dev/dev-server/inspector/device.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import { WebSocketServer } from "ws";
2
- import type { IncomingMessage, ServerResponse } from "node:http";
3
- import type { EventReporter, PageDescription } from "./types";
4
- import type { CDPAdapter } from "../cdp/cdp.adapter";
5
- export interface InspectorOptions {
6
- projectRoot: string;
7
- serverBaseUrl: string;
8
- eventReporter?: EventReporter;
9
- cdpAdapter?: CDPAdapter;
10
- }
11
- export declare class Inspector {
12
- private devices;
13
- private deviceCounter;
14
- private readonly projectRoot;
15
- private readonly serverBaseUrl;
16
- private readonly eventReporter?;
17
- private readonly cdpAdapter?;
18
- constructor(options: InspectorOptions);
19
- getPageDescriptions(): PageDescription[];
20
- handleHttpRequest(req: IncomingMessage, res: ServerResponse, next: (error?: Error) => void): void;
21
- createWebSocketServers(): Record<string, WebSocketServer>;
22
- private createPageDescription;
23
- private createDeviceWebSocketServer;
24
- private createDebuggerWebSocketServer;
25
- private setupHeartbeat;
26
- private sendJsonResponse;
27
- }