opencode-mobile 1.1.0 → 1.2.0
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/audit +31 -0
- package/bin/qr +13 -0
- package/dist/index.d.ts +11 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +545 -5
- package/dist/index.js.map +1 -1
- package/dist/src/cli/endpoint-tester.d.ts +19 -0
- package/dist/src/cli/endpoint-tester.d.ts.map +1 -0
- package/dist/src/cli/endpoint-tester.js +233 -0
- package/dist/src/cli/endpoint-tester.js.map +1 -0
- package/dist/src/cli/index.d.ts +20 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +166 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/push-tester.d.ts +16 -0
- package/dist/src/cli/push-tester.d.ts.map +1 -0
- package/dist/src/cli/push-tester.js +293 -0
- package/dist/src/cli/push-tester.js.map +1 -0
- package/dist/src/cli/qr.d.ts +5 -0
- package/dist/src/cli/qr.d.ts.map +1 -0
- package/dist/src/cli/qr.js +127 -0
- package/dist/src/cli/qr.js.map +1 -0
- package/dist/src/cli/report.d.ts +25 -0
- package/dist/src/cli/report.d.ts.map +1 -0
- package/dist/src/cli/report.js +215 -0
- package/dist/src/cli/report.js.map +1 -0
- package/dist/src/cli/server-manager.d.ts +28 -0
- package/dist/src/cli/server-manager.d.ts.map +1 -0
- package/dist/src/cli/server-manager.js +340 -0
- package/dist/src/cli/server-manager.js.map +1 -0
- package/dist/src/cli/test-runner.d.ts +16 -0
- package/dist/src/cli/test-runner.d.ts.map +1 -0
- package/dist/src/cli/test-runner.js +201 -0
- package/dist/src/cli/test-runner.js.map +1 -0
- package/dist/src/cli/tunnel-qr.d.ts +8 -0
- package/dist/src/cli/tunnel-qr.d.ts.map +1 -0
- package/dist/src/cli/tunnel-qr.js +163 -0
- package/dist/src/cli/tunnel-qr.js.map +1 -0
- package/dist/src/cli/tunnel-tester.d.ts +22 -0
- package/dist/src/cli/tunnel-tester.d.ts.map +1 -0
- package/dist/src/cli/tunnel-tester.js +360 -0
- package/dist/src/cli/tunnel-tester.js.map +1 -0
- package/dist/src/cli/types.d.ts +112 -0
- package/dist/src/cli/types.d.ts.map +1 -0
- package/dist/src/cli/types.js +5 -0
- package/dist/src/cli/types.js.map +1 -0
- package/dist/src/push/index.d.ts +1 -0
- package/dist/src/push/index.d.ts.map +1 -1
- package/dist/src/push/index.js +1 -0
- package/dist/src/push/index.js.map +1 -1
- package/dist/src/push/notification-handler.d.ts +58 -0
- package/dist/src/push/notification-handler.d.ts.map +1 -0
- package/dist/src/push/notification-handler.js +110 -0
- package/dist/src/push/notification-handler.js.map +1 -0
- package/dist/src/tunnel/cloudflare.d.ts +32 -3
- package/dist/src/tunnel/cloudflare.d.ts.map +1 -1
- package/dist/src/tunnel/cloudflare.js +102 -32
- package/dist/src/tunnel/cloudflare.js.map +1 -1
- package/dist/src/tunnel/localtunnel.d.ts +28 -1
- package/dist/src/tunnel/localtunnel.d.ts.map +1 -1
- package/dist/src/tunnel/localtunnel.js +53 -11
- package/dist/src/tunnel/localtunnel.js.map +1 -1
- package/dist/src/tunnel/metadata.d.ts +29 -0
- package/dist/src/tunnel/metadata.d.ts.map +1 -0
- package/dist/src/tunnel/metadata.js +83 -0
- package/dist/src/tunnel/metadata.js.map +1 -0
- package/dist/src/tunnel/ngrok.d.ts +12 -0
- package/dist/src/tunnel/ngrok.d.ts.map +1 -1
- package/dist/src/tunnel/ngrok.js +72 -29
- package/dist/src/tunnel/ngrok.js.map +1 -1
- package/dist/src/tunnel/qrcode.d.ts +8 -0
- package/dist/src/tunnel/qrcode.d.ts.map +1 -1
- package/dist/src/tunnel/qrcode.js +60 -9
- package/dist/src/tunnel/qrcode.js.map +1 -1
- package/package.json +21 -3
- package/dist/push-notifications.d.ts +0 -4
- package/dist/push-notifications.d.ts.map +0 -1
- package/dist/push-notifications.js +0 -260
- package/dist/push-notifications.js.map +0 -1
- package/dist/reverse-proxy.d.ts +0 -9
- package/dist/reverse-proxy.d.ts.map +0 -1
- package/dist/reverse-proxy.js +0 -78
- package/dist/reverse-proxy.js.map +0 -1
- package/dist/sdk-logger.d.ts +0 -19
- package/dist/sdk-logger.d.ts.map +0 -1
- package/dist/sdk-logger.js +0 -103
- package/dist/sdk-logger.js.map +0 -1
- package/dist/src/tunnel/index.d.ts +0 -35
- package/dist/src/tunnel/index.d.ts.map +0 -1
- package/dist/src/tunnel/index.js +0 -191
- package/dist/src/tunnel/index.js.map +0 -1
- package/dist/src/utils/index.d.ts +0 -5
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js +0 -5
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/port.d.ts +0 -12
- package/dist/src/utils/port.d.ts.map +0 -1
- package/dist/src/utils/port.js +0 -41
- package/dist/src/utils/port.js.map +0 -1
package/dist/src/tunnel/index.js
DELETED
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tunnel manager - unified interface for all tunnel providers
|
|
3
|
-
*/
|
|
4
|
-
import * as fs from "fs";
|
|
5
|
-
import { startNgrokTunnel, stopNgrokTunnel, diagnoseNgrok, ensureNgrokReady } from "./ngrok";
|
|
6
|
-
import { startLocaltunnel, stopLocaltunnel, getLocaltunnelUrl } from "./localtunnel";
|
|
7
|
-
import { startCloudflareTunnel, stopCloudflareTunnel, getCloudflareUrl } from "./cloudflare";
|
|
8
|
-
import { displayQRCode } from "./qrcode";
|
|
9
|
-
let currentTunnel = null;
|
|
10
|
-
/**
|
|
11
|
-
* Start a tunnel with the specified provider
|
|
12
|
-
*/
|
|
13
|
-
export async function startTunnel(config) {
|
|
14
|
-
// Validate that we have a proper TunnelConfig object
|
|
15
|
-
if (!config || typeof config !== "object") {
|
|
16
|
-
console.log("[Tunnel] startTunnel called with invalid config type:", typeof config);
|
|
17
|
-
throw new Error("Invalid tunnel config: config must be an object");
|
|
18
|
-
}
|
|
19
|
-
// Check if this looks like the OpenCode client context (has 'client' property)
|
|
20
|
-
if ("client" in config) {
|
|
21
|
-
console.log("[Tunnel] startTunnel called with OpenCode client context instead of TunnelConfig");
|
|
22
|
-
console.log("[Tunnel] This indicates a plugin initialization issue");
|
|
23
|
-
throw new Error("Invalid tunnel config: received OpenCode client context");
|
|
24
|
-
}
|
|
25
|
-
if (!config?.port) {
|
|
26
|
-
console.log("[Tunnel] startTunnel called with invalid config:", JSON.stringify(config).substring(0, 200));
|
|
27
|
-
throw new Error("Invalid tunnel config: port is required");
|
|
28
|
-
}
|
|
29
|
-
const provider = config.provider || "ngrok";
|
|
30
|
-
switch (provider) {
|
|
31
|
-
case "ngrok":
|
|
32
|
-
currentTunnel = await startNgrokTunnel(config);
|
|
33
|
-
break;
|
|
34
|
-
case "localtunnel":
|
|
35
|
-
currentTunnel = await startLocaltunnel(config);
|
|
36
|
-
break;
|
|
37
|
-
case "cloudflare":
|
|
38
|
-
currentTunnel = await startCloudflareTunnel(config);
|
|
39
|
-
break;
|
|
40
|
-
default:
|
|
41
|
-
throw new Error(`Unknown tunnel provider: ${provider}`);
|
|
42
|
-
}
|
|
43
|
-
return currentTunnel;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Stop the current tunnel
|
|
47
|
-
*/
|
|
48
|
-
export async function stopTunnel() {
|
|
49
|
-
if (!currentTunnel) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
switch (currentTunnel.provider) {
|
|
53
|
-
case "ngrok":
|
|
54
|
-
await stopNgrokTunnel();
|
|
55
|
-
break;
|
|
56
|
-
case "localtunnel":
|
|
57
|
-
await stopLocaltunnel();
|
|
58
|
-
break;
|
|
59
|
-
case "cloudflare":
|
|
60
|
-
await stopCloudflareTunnel();
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
currentTunnel = null;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Display QR code for tunnel URL
|
|
67
|
-
*/
|
|
68
|
-
export async function displayQR(tunnelInfo) {
|
|
69
|
-
// Validate that we have a proper TunnelInfo object, not the OpenCode client context
|
|
70
|
-
if (!tunnelInfo || typeof tunnelInfo !== "object") {
|
|
71
|
-
console.log("[Tunnel] displayQR called with invalid tunnelInfo type:", typeof tunnelInfo);
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
// Check if this looks like the OpenCode client context (has 'client' property)
|
|
75
|
-
if ("client" in tunnelInfo) {
|
|
76
|
-
console.log("[Tunnel] displayQR called with OpenCode client context instead of TunnelInfo");
|
|
77
|
-
console.log("[Tunnel] This indicates a plugin initialization issue");
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
if (!tunnelInfo?.url) {
|
|
81
|
-
console.log("[Tunnel] displayQR called with invalid tunnelInfo:", JSON.stringify(tunnelInfo).substring(0, 200));
|
|
82
|
-
console.log("[Tunnel] Stack:", new Error().stack?.split("\n").slice(2, 6).join("\n"));
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
await displayQRCode(tunnelInfo.url);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Get current tunnel details with login status
|
|
89
|
-
*/
|
|
90
|
-
export function getTunnelDetails() {
|
|
91
|
-
const details = {
|
|
92
|
-
type: "none",
|
|
93
|
-
url: null,
|
|
94
|
-
loginStatus: "unknown",
|
|
95
|
-
loginId: null,
|
|
96
|
-
configPath: null,
|
|
97
|
-
};
|
|
98
|
-
// Determine tunnel type and URL
|
|
99
|
-
if (currentTunnel) {
|
|
100
|
-
details.type = currentTunnel.provider;
|
|
101
|
-
details.url = currentTunnel.url;
|
|
102
|
-
}
|
|
103
|
-
else if (getLocaltunnelUrl()) {
|
|
104
|
-
details.type = "localtunnel";
|
|
105
|
-
details.url = getLocaltunnelUrl();
|
|
106
|
-
}
|
|
107
|
-
else if (getCloudflareUrl()) {
|
|
108
|
-
details.type = "cloudflare";
|
|
109
|
-
details.url = getCloudflareUrl();
|
|
110
|
-
}
|
|
111
|
-
// Get config path for ngrok
|
|
112
|
-
const configPaths = [
|
|
113
|
-
`${process.env.HOME}/Library/Application Support/ngrok/ngrok.yml`,
|
|
114
|
-
`${process.env.HOME}/.config/ngrok/ngrok.yml`,
|
|
115
|
-
"/etc/ngrok/ngrok.yml",
|
|
116
|
-
];
|
|
117
|
-
for (const p of configPaths) {
|
|
118
|
-
try {
|
|
119
|
-
if (fs.existsSync(p)) {
|
|
120
|
-
details.configPath = p;
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
catch { }
|
|
125
|
-
}
|
|
126
|
-
// Check ngrok config for login status
|
|
127
|
-
if (details.configPath && details.type === "ngrok") {
|
|
128
|
-
try {
|
|
129
|
-
const configContent = fs.readFileSync(details.configPath, "utf-8");
|
|
130
|
-
// Check for authtoken (indicates logged in)
|
|
131
|
-
if (configContent.includes("authtoken:")) {
|
|
132
|
-
details.loginStatus = "authenticated";
|
|
133
|
-
// Try to extract account info from config comments
|
|
134
|
-
const accountMatch = configContent.match(/account:\s*(.+)/);
|
|
135
|
-
if (accountMatch) {
|
|
136
|
-
details.loginId = accountMatch[1].trim();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
details.loginStatus = "free";
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
catch { }
|
|
144
|
-
}
|
|
145
|
-
// Localtunnel is always free/anonymous
|
|
146
|
-
if (details.type === "localtunnel") {
|
|
147
|
-
details.loginStatus = "anonymous";
|
|
148
|
-
}
|
|
149
|
-
// Cloudflare might have config info
|
|
150
|
-
if (details.type === "cloudflare") {
|
|
151
|
-
details.loginStatus = "unknown";
|
|
152
|
-
}
|
|
153
|
-
return details;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Get current tunnel info
|
|
157
|
-
*/
|
|
158
|
-
export function getTunnelInfo() {
|
|
159
|
-
if (!currentTunnel?.url) {
|
|
160
|
-
return null;
|
|
161
|
-
}
|
|
162
|
-
return currentTunnel;
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Get current server URL from tunnel
|
|
166
|
-
*/
|
|
167
|
-
export function getServerUrl() {
|
|
168
|
-
if (!currentTunnel?.url) {
|
|
169
|
-
throw new Error("No tunnel active");
|
|
170
|
-
}
|
|
171
|
-
return currentTunnel.url;
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Graceful shutdown
|
|
175
|
-
*/
|
|
176
|
-
export async function gracefulShutdown() {
|
|
177
|
-
console.log("\n[Tunnel] Graceful shutdown...");
|
|
178
|
-
await stopTunnel();
|
|
179
|
-
console.log("[Tunnel] Shutdown complete");
|
|
180
|
-
}
|
|
181
|
-
// Handle process signals for graceful shutdown
|
|
182
|
-
const signals = ["SIGINT", "SIGTERM", "SIGHUP"];
|
|
183
|
-
signals.forEach((signal) => {
|
|
184
|
-
process.on(signal, async () => {
|
|
185
|
-
await gracefulShutdown();
|
|
186
|
-
process.exit(0);
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
// Re-export ngrok utilities
|
|
190
|
-
export { diagnoseNgrok, ensureNgrokReady };
|
|
191
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tunnel/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,QAAQ,CAAC"}
|
package/dist/src/utils/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,QAAQ,CAAC"}
|
package/dist/src/utils/port.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Port detection utilities
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Find the next available port starting from a given port
|
|
6
|
-
* @param startPort - Port to start searching from
|
|
7
|
-
* @param maxAttempts - Maximum number of ports to try
|
|
8
|
-
* @returns The first available port
|
|
9
|
-
* @throws Error if no port is found after maxAttempts
|
|
10
|
-
*/
|
|
11
|
-
export declare function getNextAvailablePort(startPort: number, maxAttempts?: number): Promise<number>;
|
|
12
|
-
//# sourceMappingURL=port.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../../src/utils/port.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,MAAM,CAAC,CAoCjB"}
|
package/dist/src/utils/port.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Port detection utilities
|
|
3
|
-
*/
|
|
4
|
-
import * as net from "net";
|
|
5
|
-
/**
|
|
6
|
-
* Find the next available port starting from a given port
|
|
7
|
-
* @param startPort - Port to start searching from
|
|
8
|
-
* @param maxAttempts - Maximum number of ports to try
|
|
9
|
-
* @returns The first available port
|
|
10
|
-
* @throws Error if no port is found after maxAttempts
|
|
11
|
-
*/
|
|
12
|
-
export function getNextAvailablePort(startPort, maxAttempts = 50) {
|
|
13
|
-
return new Promise((resolve, reject) => {
|
|
14
|
-
let attempts = 0;
|
|
15
|
-
const tryPort = (port) => {
|
|
16
|
-
if (attempts >= maxAttempts) {
|
|
17
|
-
reject(new Error(`Could not find available port after ${maxAttempts} attempts`));
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
attempts++;
|
|
21
|
-
const server = net.createServer();
|
|
22
|
-
server.on("error", (e) => {
|
|
23
|
-
if (e.message?.includes("EADDRINUSE")) {
|
|
24
|
-
console.log(`[PushPlugin] Port ${port} in use, trying next...`);
|
|
25
|
-
tryPort(port + 1);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
// Don't retry on other errors - could mask serious issues
|
|
29
|
-
reject(new Error(`Port ${port} error: ${e.message}`));
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
server.listen(port, "127.0.0.1", () => {
|
|
33
|
-
server.close(() => {
|
|
34
|
-
resolve(port);
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
tryPort(startPort);
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=port.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"port.js","sourceRoot":"","sources":["../../../src/utils/port.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAiB,EACjB,cAAsB,EAAE;IAExB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE;YAC/B,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;gBAC5B,MAAM,CACJ,IAAI,KAAK,CACP,uCAAuC,WAAW,WAAW,CAC9D,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YACD,QAAQ,EAAE,CAAC;YAEX,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;YAElC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAM,EAAE,EAAE;gBAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,yBAAyB,CAAC,CAAC;oBAChE,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,0DAA0D;oBAC1D,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;gBACpC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;oBAChB,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC"}
|