@10play/expo-air 0.1.0 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app.plugin.js +2 -0
- package/build/ExpoAir.types.d.ts +1 -1
- package/build/ExpoAir.types.js.map +1 -1
- package/build/ExpoAirModule.d.ts +2 -2
- package/build/ExpoAirModule.js +2 -2
- package/build/ExpoAirModule.js.map +1 -1
- package/build/ExpoAirModule.web.d.ts +2 -2
- package/build/ExpoAirModule.web.js +4 -4
- package/build/ExpoAirModule.web.js.map +1 -1
- package/build/ExpoAirView.d.ts +2 -2
- package/build/ExpoAirView.js +3 -3
- package/build/ExpoAirView.js.map +1 -1
- package/build/ExpoAirView.web.d.ts +2 -2
- package/build/ExpoAirView.web.js +1 -1
- package/build/ExpoAirView.web.js.map +1 -1
- package/build/index.d.ts +3 -3
- package/build/index.js +3 -3
- package/build/index.js.map +1 -1
- package/cli/dist/commands/fly.d.ts.map +1 -1
- package/cli/dist/commands/fly.js +112 -21
- package/cli/dist/commands/fly.js.map +1 -1
- package/cli/dist/commands/start.d.ts.map +1 -1
- package/cli/dist/commands/start.js +113 -24
- package/cli/dist/commands/start.js.map +1 -1
- package/cli/dist/tsconfig.tsbuildinfo +1 -1
- package/cli/dist/tunnel/cloudflare.d.ts.map +1 -1
- package/cli/dist/tunnel/cloudflare.js +31 -3
- package/cli/dist/tunnel/cloudflare.js.map +1 -1
- package/ios/ExpoAirAppDelegateSubscriber.swift +41 -14
- package/ios/ExpoAirModule.swift +37 -3
- package/ios/widget.jsbundle +543 -0
- package/package.json +4 -2
- package/plugin/build/index.js +4 -2
- package/widget/package.json +6 -1
package/app.plugin.js
ADDED
package/build/ExpoAir.types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoAir.types.js","sourceRoot":"","sources":["../src/ExpoAir.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { StyleProp, ViewStyle } from
|
|
1
|
+
{"version":3,"file":"ExpoAir.types.js","sourceRoot":"","sources":["../src/ExpoAir.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { StyleProp, ViewStyle } from \"react-native\";\n\nexport type OnLoadEventPayload = {\n url: string;\n};\n\nexport type ExpoAirModuleEvents = {\n onChange: (params: ChangeEventPayload) => void;\n onPress: () => void;\n onExpand: () => void;\n onCollapse: () => void;\n onDragEnd: (params: { x: number; y: number }) => void;\n};\n\nexport type ChangeEventPayload = {\n value: string;\n};\n\nexport type ExpoAirViewProps = {\n url: string;\n onLoad: (event: { nativeEvent: OnLoadEventPayload }) => void;\n style?: StyleProp<ViewStyle>;\n};\n"]}
|
package/build/ExpoAirModule.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NativeModule } from
|
|
2
|
-
import { ExpoAirModuleEvents } from
|
|
1
|
+
import { NativeModule } from "expo";
|
|
2
|
+
import { ExpoAirModuleEvents } from "./ExpoAir.types";
|
|
3
3
|
declare class ExpoAirModule extends NativeModule<ExpoAirModuleEvents> {
|
|
4
4
|
PI: number;
|
|
5
5
|
hello(): string;
|
package/build/ExpoAirModule.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { requireNativeModule } from
|
|
1
|
+
import { requireNativeModule } from "expo";
|
|
2
2
|
// This call loads the native module object from the JSI.
|
|
3
|
-
export default requireNativeModule(
|
|
3
|
+
export default requireNativeModule("ExpoAir");
|
|
4
4
|
//# sourceMappingURL=ExpoAirModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoAirModule.js","sourceRoot":"","sources":["../src/ExpoAirModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAczD,yDAAyD;AACzD,eAAe,mBAAmB,CAAgB,SAAS,CAAC,CAAC","sourcesContent":["import { NativeModule, requireNativeModule } from
|
|
1
|
+
{"version":3,"file":"ExpoAirModule.js","sourceRoot":"","sources":["../src/ExpoAirModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAczD,yDAAyD;AACzD,eAAe,mBAAmB,CAAgB,SAAS,CAAC,CAAC","sourcesContent":["import { NativeModule, requireNativeModule } from \"expo\";\n\nimport { ExpoAirModuleEvents } from \"./ExpoAir.types\";\n\ndeclare class ExpoAirModule extends NativeModule<ExpoAirModuleEvents> {\n PI: number;\n hello(): string;\n setValueAsync(value: string): Promise<void>;\n show(options?: { size?: number; color?: string }): void;\n hide(): void;\n expand(): void;\n collapse(): void;\n}\n\n// This call loads the native module object from the JSI.\nexport default requireNativeModule<ExpoAirModule>(\"ExpoAir\");\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NativeModule } from
|
|
2
|
-
import { ExpoAirModuleEvents } from
|
|
1
|
+
import { NativeModule } from "expo";
|
|
2
|
+
import { ExpoAirModuleEvents } from "./ExpoAir.types";
|
|
3
3
|
declare class ExpoAirModule extends NativeModule<ExpoAirModuleEvents> {
|
|
4
4
|
PI: number;
|
|
5
5
|
setValueAsync(value: string): Promise<void>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { registerWebModule, NativeModule } from
|
|
1
|
+
import { registerWebModule, NativeModule } from "expo";
|
|
2
2
|
class ExpoAirModule extends NativeModule {
|
|
3
3
|
PI = Math.PI;
|
|
4
4
|
async setValueAsync(value) {
|
|
5
|
-
this.emit(
|
|
5
|
+
this.emit("onChange", { value });
|
|
6
6
|
}
|
|
7
7
|
hello() {
|
|
8
|
-
return
|
|
8
|
+
return "Hello world! 👋";
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
export default registerWebModule(ExpoAirModule,
|
|
11
|
+
export default registerWebModule(ExpoAirModule, "ExpoAirModule");
|
|
12
12
|
//# sourceMappingURL=ExpoAirModule.web.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoAirModule.web.js","sourceRoot":"","sources":["../src/ExpoAirModule.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAIvD,MAAM,aAAc,SAAQ,YAAiC;IAC3D,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACb,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,KAAK;QACH,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF;AAED,eAAe,iBAAiB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC","sourcesContent":["import { registerWebModule, NativeModule } from
|
|
1
|
+
{"version":3,"file":"ExpoAirModule.web.js","sourceRoot":"","sources":["../src/ExpoAirModule.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAIvD,MAAM,aAAc,SAAQ,YAAiC;IAC3D,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACb,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,KAAK;QACH,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF;AAED,eAAe,iBAAiB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC","sourcesContent":["import { registerWebModule, NativeModule } from \"expo\";\n\nimport { ExpoAirModuleEvents } from \"./ExpoAir.types\";\n\nclass ExpoAirModule extends NativeModule<ExpoAirModuleEvents> {\n PI = Math.PI;\n async setValueAsync(value: string): Promise<void> {\n this.emit(\"onChange\", { value });\n }\n hello() {\n return \"Hello world! 👋\";\n }\n}\n\nexport default registerWebModule(ExpoAirModule, \"ExpoAirModule\");\n"]}
|
package/build/ExpoAirView.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import { ExpoAirViewProps } from
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { ExpoAirViewProps } from "./ExpoAir.types";
|
|
3
3
|
export default function ExpoAirView(props: ExpoAirViewProps): React.JSX.Element;
|
|
4
4
|
//# sourceMappingURL=ExpoAirView.d.ts.map
|
package/build/ExpoAirView.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { requireNativeView } from
|
|
2
|
-
import * as React from
|
|
3
|
-
const NativeView = requireNativeView(
|
|
1
|
+
import { requireNativeView } from "expo";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
const NativeView = requireNativeView("ExpoAir");
|
|
4
4
|
export default function ExpoAirView(props) {
|
|
5
5
|
return <NativeView {...props}/>;
|
|
6
6
|
}
|
package/build/ExpoAirView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoAirView.js","sourceRoot":"","sources":["../src/ExpoAirView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,UAAU,GACd,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAE/B,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAuB;IACzD,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AACnC,CAAC","sourcesContent":["import { requireNativeView } from
|
|
1
|
+
{"version":3,"file":"ExpoAirView.js","sourceRoot":"","sources":["../src/ExpoAirView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,UAAU,GACd,iBAAiB,CAAC,SAAS,CAAC,CAAC;AAE/B,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAuB;IACzD,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AACnC,CAAC","sourcesContent":["import { requireNativeView } from \"expo\";\nimport * as React from \"react\";\n\nimport { ExpoAirViewProps } from \"./ExpoAir.types\";\n\nconst NativeView: React.ComponentType<ExpoAirViewProps> =\n requireNativeView(\"ExpoAir\");\n\nexport default function ExpoAirView(props: ExpoAirViewProps) {\n return <NativeView {...props} />;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
import { ExpoAirViewProps } from
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { ExpoAirViewProps } from "./ExpoAir.types";
|
|
3
3
|
export default function ExpoAirView(props: ExpoAirViewProps): React.JSX.Element;
|
|
4
4
|
//# sourceMappingURL=ExpoAirView.web.d.ts.map
|
package/build/ExpoAirView.web.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoAirView.web.js","sourceRoot":"","sources":["../src/ExpoAirView.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAuB;IACzD,OAAO,CACL,CAAC,GAAG,CACF;MAAA,CAAC,MAAM,CACL,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CACnB,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CACf,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAEpE;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC","sourcesContent":["import * as React from
|
|
1
|
+
{"version":3,"file":"ExpoAirView.web.js","sourceRoot":"","sources":["../src/ExpoAirView.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAuB;IACzD,OAAO,CACL,CAAC,GAAG,CACF;MAAA,CAAC,MAAM,CACL,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CACnB,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CACf,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAEpE;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC","sourcesContent":["import * as React from \"react\";\n\nimport { ExpoAirViewProps } from \"./ExpoAir.types\";\n\nexport default function ExpoAirView(props: ExpoAirViewProps) {\n return (\n <div>\n <iframe\n style={{ flex: 1 }}\n src={props.url}\n onLoad={() => props.onLoad({ nativeEvent: { url: props.url } })}\n />\n </div>\n );\n}\n"]}
|
package/build/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default } from
|
|
2
|
-
export { default as ExpoAirView } from
|
|
3
|
-
export * from
|
|
1
|
+
export { default } from "./ExpoAirModule";
|
|
2
|
+
export { default as ExpoAirView } from "./ExpoAirView";
|
|
3
|
+
export * from "./ExpoAir.types";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Reexport the native module. On web, it will be resolved to ExpoAirModule.web.ts
|
|
2
2
|
// and on native platforms to ExpoAirModule.ts
|
|
3
|
-
export { default } from
|
|
4
|
-
export { default as ExpoAirView } from
|
|
5
|
-
export * from
|
|
3
|
+
export { default } from "./ExpoAirModule";
|
|
4
|
+
export { default as ExpoAirView } from "./ExpoAirView";
|
|
5
|
+
export * from "./ExpoAir.types";
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,8CAA8C;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,cAAc,iBAAiB,CAAC","sourcesContent":["// Reexport the native module. On web, it will be resolved to ExpoAirModule.web.ts\n// and on native platforms to ExpoAirModule.ts\nexport { default } from
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,8CAA8C;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,cAAc,iBAAiB,CAAC","sourcesContent":["// Reexport the native module. On web, it will be resolved to ExpoAirModule.web.ts\n// and on native platforms to ExpoAirModule.ts\nexport { default } from \"./ExpoAirModule\";\nexport { default as ExpoAirView } from \"./ExpoAirView\";\nexport * from \"./ExpoAir.types\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fly.d.ts","sourceRoot":"","sources":["../../commands/fly.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fly.d.ts","sourceRoot":"","sources":["../../commands/fly.ts"],"names":[],"mappings":"AAqMA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyRnE"}
|
package/cli/dist/commands/fly.js
CHANGED
|
@@ -2,11 +2,61 @@ import chalk from "chalk";
|
|
|
2
2
|
import { spawn, execSync } from "child_process";
|
|
3
3
|
import * as path from "path";
|
|
4
4
|
import * as fs from "fs";
|
|
5
|
+
import * as net from "net";
|
|
5
6
|
import { fileURLToPath } from "url";
|
|
6
7
|
import { CloudflareTunnel } from "../tunnel/cloudflare.js";
|
|
7
8
|
import plist from "plist";
|
|
9
|
+
/**
|
|
10
|
+
* Check if a port is listening (Metro is ready)
|
|
11
|
+
*/
|
|
12
|
+
function waitForPort(port, timeout = 30000) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
const startTime = Date.now();
|
|
15
|
+
const tryConnect = () => {
|
|
16
|
+
const socket = new net.Socket();
|
|
17
|
+
socket.setTimeout(1000);
|
|
18
|
+
socket.on("connect", () => {
|
|
19
|
+
socket.destroy();
|
|
20
|
+
resolve();
|
|
21
|
+
});
|
|
22
|
+
socket.on("timeout", () => {
|
|
23
|
+
socket.destroy();
|
|
24
|
+
if (Date.now() - startTime > timeout) {
|
|
25
|
+
reject(new Error(`Timeout waiting for port ${port}`));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
setTimeout(tryConnect, 500);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
socket.on("error", () => {
|
|
32
|
+
socket.destroy();
|
|
33
|
+
if (Date.now() - startTime > timeout) {
|
|
34
|
+
reject(new Error(`Timeout waiting for port ${port}`));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
setTimeout(tryConnect, 500);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
socket.connect(port, "127.0.0.1");
|
|
41
|
+
};
|
|
42
|
+
tryConnect();
|
|
43
|
+
});
|
|
44
|
+
}
|
|
8
45
|
const __filename = fileURLToPath(import.meta.url);
|
|
9
46
|
const __dirname = path.dirname(__filename);
|
|
47
|
+
/**
|
|
48
|
+
* Check if running from an npm installation (inside node_modules)
|
|
49
|
+
*/
|
|
50
|
+
function isInstalledFromNpm() {
|
|
51
|
+
return __dirname.includes("node_modules");
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if pre-built widget bundle exists
|
|
55
|
+
*/
|
|
56
|
+
function hasPrebuiltWidgetBundle() {
|
|
57
|
+
const bundlePath = path.resolve(__dirname, "../../..", "ios", "widget.jsbundle");
|
|
58
|
+
return fs.existsSync(bundlePath);
|
|
59
|
+
}
|
|
10
60
|
function detectConnectedDevices() {
|
|
11
61
|
const devices = [];
|
|
12
62
|
try {
|
|
@@ -167,8 +217,9 @@ export async function flyCommand(options) {
|
|
|
167
217
|
stdio: ["ignore", "pipe", "pipe"],
|
|
168
218
|
env: { ...process.env, FORCE_COLOR: "1" },
|
|
169
219
|
});
|
|
220
|
+
// Wait for initial Metro output
|
|
170
221
|
await new Promise((resolve, reject) => {
|
|
171
|
-
const timeout = setTimeout(() => resolve(),
|
|
222
|
+
const timeout = setTimeout(() => resolve(), 3000);
|
|
172
223
|
proc.on("error", (err) => {
|
|
173
224
|
clearTimeout(timeout);
|
|
174
225
|
reject(err);
|
|
@@ -188,6 +239,8 @@ export async function flyCommand(options) {
|
|
|
188
239
|
}
|
|
189
240
|
});
|
|
190
241
|
});
|
|
242
|
+
// Wait for port to actually be listening (Metro fully ready)
|
|
243
|
+
await waitForPort(metroPortNum, 30000);
|
|
191
244
|
console.log(chalk.green(` ✓ ${name} Metro started on port ${metroPortNum}`));
|
|
192
245
|
return proc;
|
|
193
246
|
}
|
|
@@ -197,7 +250,15 @@ export async function flyCommand(options) {
|
|
|
197
250
|
return null;
|
|
198
251
|
}
|
|
199
252
|
};
|
|
200
|
-
|
|
253
|
+
// Start widget Metro server (skip for npm users with pre-built bundle)
|
|
254
|
+
let widgetProcess = null;
|
|
255
|
+
if (isInstalledFromNpm() && hasPrebuiltWidgetBundle()) {
|
|
256
|
+
console.log(chalk.green(` ✓ Using pre-built widget bundle (npm installation)`));
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
console.log(chalk.blue(` Starting widget Metro (SDK development mode)...`));
|
|
260
|
+
widgetProcess = await startMetro("Widget", widgetDir, widgetPort);
|
|
261
|
+
}
|
|
201
262
|
const appProcess = await startMetro("App", projectRoot, metroPort);
|
|
202
263
|
// Step 3: Start prompt server
|
|
203
264
|
console.log(chalk.gray("\n Starting prompt server..."));
|
|
@@ -214,6 +275,7 @@ export async function flyCommand(options) {
|
|
|
214
275
|
let appTunnelUrl = null;
|
|
215
276
|
if (options.tunnel) {
|
|
216
277
|
console.log(chalk.gray("\n Starting tunnels (this enables remote access)..."));
|
|
278
|
+
let rateLimitHit = false;
|
|
217
279
|
promptTunnel = new CloudflareTunnel();
|
|
218
280
|
try {
|
|
219
281
|
const info = await promptTunnel.start(port);
|
|
@@ -222,27 +284,51 @@ export async function flyCommand(options) {
|
|
|
222
284
|
}
|
|
223
285
|
catch (err) {
|
|
224
286
|
const message = err instanceof Error ? err.message : String(err);
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
const info = await widgetTunnel.start(widgetPort);
|
|
230
|
-
widgetTunnelUrl = info.url;
|
|
231
|
-
console.log(chalk.green(` ✓ Widget tunnel ready`));
|
|
287
|
+
if (message.includes("rate limit") || message.includes("429")) {
|
|
288
|
+
rateLimitHit = true;
|
|
289
|
+
}
|
|
290
|
+
console.log(chalk.red(` ✗ Prompt tunnel failed`));
|
|
232
291
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
292
|
+
// Only start widget tunnel if widget Metro is running (SDK development mode)
|
|
293
|
+
// Skip for npm users using pre-built bundle
|
|
294
|
+
if (!rateLimitHit && widgetProcess) {
|
|
295
|
+
widgetTunnel = new CloudflareTunnel();
|
|
296
|
+
try {
|
|
297
|
+
const info = await widgetTunnel.start(widgetPort);
|
|
298
|
+
widgetTunnelUrl = info.url;
|
|
299
|
+
console.log(chalk.green(` ✓ Widget tunnel ready`));
|
|
300
|
+
}
|
|
301
|
+
catch (err) {
|
|
302
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
303
|
+
if (message.includes("rate limit") || message.includes("429")) {
|
|
304
|
+
rateLimitHit = true;
|
|
305
|
+
}
|
|
306
|
+
console.log(chalk.red(` ✗ Widget tunnel failed`));
|
|
307
|
+
}
|
|
236
308
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
309
|
+
if (!rateLimitHit) {
|
|
310
|
+
appTunnel = new CloudflareTunnel();
|
|
311
|
+
try {
|
|
312
|
+
const info = await appTunnel.start(metroPort);
|
|
313
|
+
appTunnelUrl = info.url;
|
|
314
|
+
console.log(chalk.green(` ✓ App tunnel ready`));
|
|
315
|
+
}
|
|
316
|
+
catch (err) {
|
|
317
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
318
|
+
if (message.includes("rate limit") || message.includes("429")) {
|
|
319
|
+
rateLimitHit = true;
|
|
320
|
+
}
|
|
321
|
+
console.log(chalk.red(` ✗ App tunnel failed`));
|
|
322
|
+
}
|
|
242
323
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
console.log(chalk.yellow(
|
|
324
|
+
// Show rate limit warning
|
|
325
|
+
if (rateLimitHit) {
|
|
326
|
+
console.log(chalk.yellow(`\n ⚠ Cloudflare rate limit reached (429 Too Many Requests)`));
|
|
327
|
+
console.log(chalk.gray(` This happens when too many tunnel requests are made.`));
|
|
328
|
+
console.log(chalk.gray(` Options:`));
|
|
329
|
+
console.log(chalk.white(` 1. Wait a few minutes and try again`));
|
|
330
|
+
console.log(chalk.white(` 2. Use --no-tunnel to run without tunnels`));
|
|
331
|
+
console.log(chalk.white(` 3. Device must be on same WiFi as your computer\n`));
|
|
246
332
|
}
|
|
247
333
|
// Update config files
|
|
248
334
|
if (promptTunnelUrl || widgetTunnelUrl || appTunnelUrl) {
|
|
@@ -289,7 +375,12 @@ export async function flyCommand(options) {
|
|
|
289
375
|
console.log(chalk.white(` 📱 ${selectedDevice.name}`));
|
|
290
376
|
console.log(chalk.gray("\n Servers:"));
|
|
291
377
|
console.log(chalk.white(` Prompt: ws://localhost:${port}`));
|
|
292
|
-
|
|
378
|
+
if (widgetProcess) {
|
|
379
|
+
console.log(chalk.white(` Widget: http://localhost:${widgetPort}`));
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
console.log(chalk.white(` Widget: (pre-built bundle)`));
|
|
383
|
+
}
|
|
293
384
|
console.log(chalk.white(` App: http://localhost:${metroPort}`));
|
|
294
385
|
if (promptTunnelUrl) {
|
|
295
386
|
console.log(chalk.gray("\n Remote access (tunnels):"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fly.js","sourceRoot":"","sources":["../../commands/fly.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fly.js","sourceRoot":"","sources":["../../commands/fly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAgB,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,OAAO,GAAG,KAAK;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,UAAU,GAAG,GAAG,EAAE;YACtB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAEhC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBACxB,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBACxB,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,UAAU,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAmBD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C;;GAEG;AACH,SAAS,kBAAkB;IACzB,OAAO,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACjF,OAAO,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,wCAAwC,EAAE;YAChE,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,+DAA+D;QAC/D,4CAA4C;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,6CAA6C;YAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3D,gBAAgB,GAAG,KAAK,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,2BAA2B;YAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnC,gBAAgB,GAAG,IAAI,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,IAAI,gBAAgB,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACpC,sDAAsD;gBACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBACpE,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC7B,8CAA8C;oBAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;wBAC5D,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;4BACjB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;4BACjB,IAAI,EAAE,KAAK,EAAE,gDAAgD;yBAC9D,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;QACxD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,QAAQ,CACxB,uEAAuE,EACvE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CACtC,CAAC;YAEF,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/D,4DAA4D;gBAC5D,+CAA+C;gBAC/C,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,kBAAkB;oBACxB,IAAI,EAAE,KAAK;iBACZ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB,EAAE,MAA8B;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,IAAI,aAAa,GAAkB,IAAI,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAClE,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjC,aAAa,GAAG,aAAa,CAAC;gBAC9B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAA4B,CAAC;QACvE,MAAM,OAAO,GAAI,SAAS,CAAC,OAAmC,IAAI,EAAE,CAAC;QAErE,IAAI,MAAM,CAAC,SAAS;YAAE,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAC3D,IAAI,MAAM,CAAC,cAAc;YAAE,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC1E,IAAI,MAAM,CAAC,WAAW;YAAE,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEjE,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,8DAA8D;QAC9D,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,SAAgB,CAAC,CAAC;QACnD,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAmB;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAE/D,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IAEzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,6CAA6C;IAC7C,IAAI,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CACxB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAO,CAAC,WAAW,EAAE,CAAC,CACjG,CAAC;QACF,IAAI,KAAK,EAAE,CAAC;YACV,cAAc,GAAG,KAAK,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,OAAO,CAAC,MAAM,sBAAsB,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAE5D,4BAA4B;IAC5B,IAAI,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAElF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAClE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YACvD,WAAW,GAAG,UAAU,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;QAClH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,WAAW,EAAE,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEhE,8BAA8B;IAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAE1D,MAAM,UAAU,GAAG,KAAK,EACtB,IAAY,EACZ,GAAW,EACX,YAAoB,EACU,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE;gBACzE,GAAG;gBACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;gBACjC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;aAC1C,CAAC,CAAC;YAEH,gCAAgC;YAChC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;gBAElD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBACvB,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC5B,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;wBACjF,YAAY,CAAC,OAAO,CAAC,CAAC;wBACtB,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC5B,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBACrD,YAAY,CAAC,OAAO,CAAC,CAAC;wBACtB,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,6DAA6D;YAC7D,MAAM,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAEvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,0BAA0B,YAAY,EAAE,CAAC,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,WAAW,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,uEAAuE;IACvE,IAAI,aAAa,GAAwB,IAAI,CAAC;IAC9C,IAAI,kBAAkB,EAAE,IAAI,uBAAuB,EAAE,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC;IACnF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC7E,aAAa,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IAEnE,8BAA8B;IAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACzD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEtE,wBAAwB;IACxB,IAAI,YAAY,GAA4B,IAAI,CAAC;IACjD,IAAI,YAAY,GAA4B,IAAI,CAAC;IACjD,IAAI,SAAS,GAA4B,IAAI,CAAC;IAC9C,IAAI,eAAe,GAAkB,IAAI,CAAC;IAC1C,IAAI,eAAe,GAAkB,IAAI,CAAC;IAC1C,IAAI,YAAY,GAAkB,IAAI,CAAC;IAEvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAEhF,IAAI,YAAY,GAAG,KAAK,CAAC;QAEzB,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9D,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,6EAA6E;QAC7E,4CAA4C;QAC5C,IAAI,CAAC,YAAY,IAAI,aAAa,EAAE,CAAC;YACnC,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAClD,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9D,YAAY,GAAG,IAAI,CAAC;gBACtB,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9C,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9D,YAAY,GAAG,IAAI,CAAC;gBACtB,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6DAA6D,CAAC,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC,CAAC;QACtF,CAAC;QAED,sBAAsB;QACtB,IAAI,eAAe,IAAI,eAAe,IAAI,YAAY,EAAE,CAAC;YACvD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;YACvE,MAAM,WAAW,GAA2B,EAAE,CAAC;YAE/C,IAAI,eAAe;gBAAE,WAAW,CAAC,SAAS,GAAG,eAAe,CAAC;YAC7D,IAAI,eAAe;gBAAE,WAAW,CAAC,cAAc,GAAG,eAAe,CAAC;YAClE,IAAI,YAAY;gBAAE,WAAW,CAAC,WAAW,GAAG,YAAY,CAAC;YAEzD,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC/E,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAE7E,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAEvE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE;QAC3C,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;KAC1C,CAAC,CAAC;IAEH,6BAA6B;IAC7B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,mBAAmB;IACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,eAAe,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,eAAe;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,eAAe,EAAE,CAAC,CAAC,CAAC;QACjF,IAAI,YAAY;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,YAAY,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC,CAAC;IAE3E,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7C,IAAI,aAAa;YAAE,aAAa,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,UAAU;YAAE,UAAU,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,YAAY;YAAE,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,YAAY;YAAE,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,SAAS;YAAE,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../commands/start.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../commands/start.ts"],"names":[],"mappings":"AA2IA,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuQvE"}
|
|
@@ -2,11 +2,61 @@ import chalk from "chalk";
|
|
|
2
2
|
import { spawn } from "child_process";
|
|
3
3
|
import * as path from "path";
|
|
4
4
|
import * as fs from "fs";
|
|
5
|
+
import * as net from "net";
|
|
5
6
|
import { fileURLToPath } from "url";
|
|
6
7
|
import { CloudflareTunnel } from "../tunnel/cloudflare.js";
|
|
7
8
|
import plist from "plist";
|
|
9
|
+
/**
|
|
10
|
+
* Check if a port is listening (Metro is ready)
|
|
11
|
+
*/
|
|
12
|
+
function waitForPort(port, timeout = 30000) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
const startTime = Date.now();
|
|
15
|
+
const tryConnect = () => {
|
|
16
|
+
const socket = new net.Socket();
|
|
17
|
+
socket.setTimeout(1000);
|
|
18
|
+
socket.on("connect", () => {
|
|
19
|
+
socket.destroy();
|
|
20
|
+
resolve();
|
|
21
|
+
});
|
|
22
|
+
socket.on("timeout", () => {
|
|
23
|
+
socket.destroy();
|
|
24
|
+
if (Date.now() - startTime > timeout) {
|
|
25
|
+
reject(new Error(`Timeout waiting for port ${port}`));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
setTimeout(tryConnect, 500);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
socket.on("error", () => {
|
|
32
|
+
socket.destroy();
|
|
33
|
+
if (Date.now() - startTime > timeout) {
|
|
34
|
+
reject(new Error(`Timeout waiting for port ${port}`));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
setTimeout(tryConnect, 500);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
socket.connect(port, "127.0.0.1");
|
|
41
|
+
};
|
|
42
|
+
tryConnect();
|
|
43
|
+
});
|
|
44
|
+
}
|
|
8
45
|
const __filename = fileURLToPath(import.meta.url);
|
|
9
46
|
const __dirname = path.dirname(__filename);
|
|
47
|
+
/**
|
|
48
|
+
* Check if running from an npm installation (inside node_modules)
|
|
49
|
+
*/
|
|
50
|
+
function isInstalledFromNpm() {
|
|
51
|
+
return __dirname.includes("node_modules");
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if pre-built widget bundle exists
|
|
55
|
+
*/
|
|
56
|
+
function hasPrebuiltWidgetBundle() {
|
|
57
|
+
const bundlePath = path.resolve(__dirname, "../../..", "ios", "widget.jsbundle");
|
|
58
|
+
return fs.existsSync(bundlePath);
|
|
59
|
+
}
|
|
10
60
|
/**
|
|
11
61
|
* Directly update Info.plist with tunnel URLs.
|
|
12
62
|
* This allows URL changes without running `npx expo prebuild`.
|
|
@@ -95,8 +145,9 @@ export async function startCommand(options) {
|
|
|
95
145
|
stdio: ["ignore", "pipe", "pipe"],
|
|
96
146
|
env: { ...process.env, FORCE_COLOR: "1" },
|
|
97
147
|
});
|
|
148
|
+
// Wait for initial Metro output
|
|
98
149
|
await new Promise((resolve, reject) => {
|
|
99
|
-
const timeout = setTimeout(() => resolve(),
|
|
150
|
+
const timeout = setTimeout(() => resolve(), 3000);
|
|
100
151
|
proc.on("error", (err) => {
|
|
101
152
|
clearTimeout(timeout);
|
|
102
153
|
reject(err);
|
|
@@ -116,6 +167,8 @@ export async function startCommand(options) {
|
|
|
116
167
|
}
|
|
117
168
|
});
|
|
118
169
|
});
|
|
170
|
+
// Wait for port to actually be listening (Metro fully ready)
|
|
171
|
+
await waitForPort(metroPortNum, 30000);
|
|
119
172
|
console.log(chalk.green(` ✓ ${name} Metro started on port ${metroPortNum}`));
|
|
120
173
|
return proc;
|
|
121
174
|
}
|
|
@@ -126,8 +179,15 @@ export async function startCommand(options) {
|
|
|
126
179
|
return null;
|
|
127
180
|
}
|
|
128
181
|
};
|
|
129
|
-
// Start widget Metro server
|
|
130
|
-
|
|
182
|
+
// Start widget Metro server (skip for npm users with pre-built bundle)
|
|
183
|
+
let widgetProcess = null;
|
|
184
|
+
if (isInstalledFromNpm() && hasPrebuiltWidgetBundle()) {
|
|
185
|
+
console.log(chalk.green(` ✓ Using pre-built widget bundle (npm installation)`));
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
console.log(chalk.blue(` Starting widget Metro (SDK development mode)...`));
|
|
189
|
+
widgetProcess = await startMetro("Widget", widgetDir, widgetPort);
|
|
190
|
+
}
|
|
131
191
|
// Start main app Metro server
|
|
132
192
|
const appProcess = await startMetro("App", projectRoot, metroPort);
|
|
133
193
|
// Start prompt server (unless --no-server)
|
|
@@ -152,6 +212,7 @@ export async function startCommand(options) {
|
|
|
152
212
|
let appTunnelUrl = null;
|
|
153
213
|
if (options.tunnel) {
|
|
154
214
|
console.log(chalk.gray(" Starting tunnels (Cloudflare)..."));
|
|
215
|
+
let rateLimitHit = false;
|
|
155
216
|
// Start prompt server tunnel
|
|
156
217
|
promptTunnel = new CloudflareTunnel();
|
|
157
218
|
try {
|
|
@@ -162,29 +223,52 @@ export async function startCommand(options) {
|
|
|
162
223
|
}
|
|
163
224
|
catch (err) {
|
|
164
225
|
const message = err instanceof Error ? err.message : String(err);
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
try {
|
|
170
|
-
const info = await widgetTunnel.start(widgetPort);
|
|
171
|
-
widgetTunnelUrl = info.url;
|
|
172
|
-
console.log(chalk.green(` ✓ Widget tunnel: ${widgetTunnelUrl}`));
|
|
226
|
+
if (message.includes("rate limit") || message.includes("429")) {
|
|
227
|
+
rateLimitHit = true;
|
|
228
|
+
}
|
|
229
|
+
console.log(chalk.red(` ✗ Prompt tunnel failed`));
|
|
173
230
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
231
|
+
// Start widget Metro tunnel (skip if rate limited or using pre-built bundle)
|
|
232
|
+
// Only needed when widget Metro is running (SDK development mode)
|
|
233
|
+
if (!rateLimitHit && widgetProcess) {
|
|
234
|
+
widgetTunnel = new CloudflareTunnel();
|
|
235
|
+
try {
|
|
236
|
+
const info = await widgetTunnel.start(widgetPort);
|
|
237
|
+
widgetTunnelUrl = info.url;
|
|
238
|
+
console.log(chalk.green(` ✓ Widget tunnel: ${widgetTunnelUrl}`));
|
|
239
|
+
}
|
|
240
|
+
catch (err) {
|
|
241
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
242
|
+
if (message.includes("rate limit") || message.includes("429")) {
|
|
243
|
+
rateLimitHit = true;
|
|
244
|
+
}
|
|
245
|
+
console.log(chalk.red(` ✗ Widget tunnel failed`));
|
|
246
|
+
}
|
|
177
247
|
}
|
|
178
|
-
// Start main app Metro tunnel
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
248
|
+
// Start main app Metro tunnel (skip if rate limited)
|
|
249
|
+
if (!rateLimitHit) {
|
|
250
|
+
appTunnel = new CloudflareTunnel();
|
|
251
|
+
try {
|
|
252
|
+
const info = await appTunnel.start(metroPort);
|
|
253
|
+
appTunnelUrl = info.url;
|
|
254
|
+
console.log(chalk.green(` ✓ App tunnel: ${appTunnelUrl}`));
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
258
|
+
if (message.includes("rate limit") || message.includes("429")) {
|
|
259
|
+
rateLimitHit = true;
|
|
260
|
+
}
|
|
261
|
+
console.log(chalk.red(` ✗ App tunnel failed`));
|
|
262
|
+
}
|
|
184
263
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
console.log(chalk.
|
|
264
|
+
// Show rate limit warning
|
|
265
|
+
if (rateLimitHit) {
|
|
266
|
+
console.log(chalk.yellow(`\n ⚠ Cloudflare rate limit reached (429 Too Many Requests)`));
|
|
267
|
+
console.log(chalk.gray(` This happens when too many tunnel requests are made.`));
|
|
268
|
+
console.log(chalk.gray(` Options:`));
|
|
269
|
+
console.log(chalk.white(` 1. Wait a few minutes and try again`));
|
|
270
|
+
console.log(chalk.white(` 2. Use --no-tunnel to run without tunnels (local only)`));
|
|
271
|
+
console.log(chalk.white(` 3. Connect device via USB for local development\n`));
|
|
188
272
|
}
|
|
189
273
|
// Update config files with tunnel URLs
|
|
190
274
|
if (promptTunnelUrl || widgetTunnelUrl || appTunnelUrl) {
|
|
@@ -216,7 +300,12 @@ export async function startCommand(options) {
|
|
|
216
300
|
if (options.server) {
|
|
217
301
|
console.log(chalk.white(` Prompt Server: ws://localhost:${port}`));
|
|
218
302
|
}
|
|
219
|
-
|
|
303
|
+
if (widgetProcess) {
|
|
304
|
+
console.log(chalk.white(` Widget Metro: http://localhost:${widgetPort}`));
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
console.log(chalk.white(` Widget: (pre-built bundle)`));
|
|
308
|
+
}
|
|
220
309
|
console.log(chalk.white(` App Metro: http://localhost:${metroPort}`));
|
|
221
310
|
if (promptTunnelUrl || widgetTunnelUrl || appTunnelUrl) {
|
|
222
311
|
console.log(chalk.gray("\n Remote (anywhere):"));
|