opencode-mobile 1.0.11 → 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 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +545 -3
- 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 +38 -1
- package/dist/src/tunnel/cloudflare.d.ts.map +1 -1
- package/dist/src/tunnel/cloudflare.js +148 -51
- package/dist/src/tunnel/cloudflare.js.map +1 -1
- package/dist/src/tunnel/localtunnel.d.ts +32 -1
- package/dist/src/tunnel/localtunnel.d.ts.map +1 -1
- package/dist/src/tunnel/localtunnel.js +75 -16
- 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 +24 -1
- package/dist/src/tunnel/ngrok.d.ts.map +1 -1
- package/dist/src/tunnel/ngrok.js +381 -20
- package/dist/src/tunnel/ngrok.js.map +1 -1
- package/dist/src/tunnel/qrcode.d.ts +14 -2
- package/dist/src/tunnel/qrcode.d.ts.map +1 -1
- package/dist/src/tunnel/qrcode.js +96 -8
- package/dist/src/tunnel/qrcode.js.map +1 -1
- package/package.json +22 -4
- 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 -29
- package/dist/src/tunnel/index.d.ts.map +0 -1
- package/dist/src/tunnel/index.js +0 -125
- package/dist/src/tunnel/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/tunnel-manager.d.ts +0 -30
- package/dist/tunnel-manager.d.ts.map +0 -1
- package/dist/tunnel-manager.js +0 -641
- package/dist/tunnel-manager.js.map +0 -1
package/dist/sdk-logger.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
// Check if we're in development mode (not published to npm)
|
|
2
|
-
const isDevMode = process.env.NODE_ENV !== "production" &&
|
|
3
|
-
!process.env.npm_package_version;
|
|
4
|
-
const defaultConfig = {
|
|
5
|
-
level: process.env.LOG_LEVEL || (isDevMode ? "debug" : "info"),
|
|
6
|
-
prefix: "App",
|
|
7
|
-
showTimestamp: true,
|
|
8
|
-
devMode: isDevMode,
|
|
9
|
-
};
|
|
10
|
-
let globalConfig = { ...defaultConfig };
|
|
11
|
-
export function configureLogger(config) {
|
|
12
|
-
globalConfig = { ...globalConfig, ...config };
|
|
13
|
-
}
|
|
14
|
-
export function createLogger(service) {
|
|
15
|
-
const shouldLog = (level) => {
|
|
16
|
-
const levels = ["debug", "info", "warn", "error"];
|
|
17
|
-
return levels.indexOf(level) >= levels.indexOf(globalConfig.level);
|
|
18
|
-
};
|
|
19
|
-
const formatMessage = (level, message) => {
|
|
20
|
-
const timestamp = globalConfig.showTimestamp
|
|
21
|
-
? new Date().toISOString().split("T")[1].slice(0, -1) + "Z"
|
|
22
|
-
: "";
|
|
23
|
-
const levelIcon = {
|
|
24
|
-
debug: "🔍",
|
|
25
|
-
info: "ℹ️",
|
|
26
|
-
warn: "⚠️",
|
|
27
|
-
error: "❌",
|
|
28
|
-
}[level];
|
|
29
|
-
const parts = [
|
|
30
|
-
timestamp,
|
|
31
|
-
`[${globalConfig.prefix}]`,
|
|
32
|
-
`[${service}]`,
|
|
33
|
-
levelIcon,
|
|
34
|
-
message,
|
|
35
|
-
].filter(Boolean);
|
|
36
|
-
return parts.join(" ");
|
|
37
|
-
};
|
|
38
|
-
return {
|
|
39
|
-
debug: (message, data) => {
|
|
40
|
-
if (!shouldLog("debug"))
|
|
41
|
-
return;
|
|
42
|
-
console.log(formatMessage("debug", message));
|
|
43
|
-
if (data)
|
|
44
|
-
console.debug("[DEBUG-DATA]", JSON.stringify(data, null, 2));
|
|
45
|
-
},
|
|
46
|
-
dev: (message, data) => {
|
|
47
|
-
// Only log in development mode
|
|
48
|
-
if (!globalConfig.devMode)
|
|
49
|
-
return;
|
|
50
|
-
console.log(formatMessage("debug", message));
|
|
51
|
-
if (data)
|
|
52
|
-
console.debug("[DEV-DATA]", JSON.stringify(data, null, 2));
|
|
53
|
-
},
|
|
54
|
-
info: (message, data) => {
|
|
55
|
-
if (!shouldLog("info"))
|
|
56
|
-
return;
|
|
57
|
-
console.log(formatMessage("info", message));
|
|
58
|
-
if (data)
|
|
59
|
-
console.debug("[INFO-DATA]", JSON.stringify(data, null, 2));
|
|
60
|
-
},
|
|
61
|
-
warn: (message, data) => {
|
|
62
|
-
if (!shouldLog("warn"))
|
|
63
|
-
return;
|
|
64
|
-
console.warn(formatMessage("warn", message));
|
|
65
|
-
if (data)
|
|
66
|
-
console.debug("[WARN-DATA]", JSON.stringify(data, null, 2));
|
|
67
|
-
},
|
|
68
|
-
error: (message, extra) => {
|
|
69
|
-
if (!shouldLog("error"))
|
|
70
|
-
return;
|
|
71
|
-
console.error(formatMessage("error", message));
|
|
72
|
-
if (extra) {
|
|
73
|
-
if (extra instanceof Error || extra?.stack) {
|
|
74
|
-
console.error("[ERROR]", extra);
|
|
75
|
-
if (extra instanceof Error) {
|
|
76
|
-
console.error("[ERROR-STACK]", extra.stack);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else if (typeof extra === "object" && extra !== null) {
|
|
80
|
-
console.error("[ERROR-EXTRA]", JSON.stringify(extra, null, 2));
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
console.error("[ERROR-DETAILS]", extra);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
log: (level, message, data) => {
|
|
88
|
-
if (!shouldLog(level))
|
|
89
|
-
return;
|
|
90
|
-
console.log(formatMessage(level, message));
|
|
91
|
-
if (data)
|
|
92
|
-
console.debug(`[${level.toUpperCase()}-DATA]`, JSON.stringify(data, null, 2));
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
// Convenience function for quick logging
|
|
97
|
-
export function log(level, service, message, data) {
|
|
98
|
-
const logger = createLogger(service);
|
|
99
|
-
logger.log(level, message, data);
|
|
100
|
-
}
|
|
101
|
-
// Export for use in plugins
|
|
102
|
-
export default createLogger;
|
|
103
|
-
//# sourceMappingURL=sdk-logger.js.map
|
package/dist/sdk-logger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-logger.js","sourceRoot":"","sources":["../sdk-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tunnel manager - unified interface for all tunnel providers
|
|
3
|
-
*/
|
|
4
|
-
import type { TunnelConfig, TunnelInfo, TunnelDetails } from "./types";
|
|
5
|
-
/**
|
|
6
|
-
* Start a tunnel with the specified provider
|
|
7
|
-
*/
|
|
8
|
-
export declare function startTunnel(config: TunnelConfig): Promise<TunnelInfo>;
|
|
9
|
-
/**
|
|
10
|
-
* Stop the current tunnel
|
|
11
|
-
*/
|
|
12
|
-
export declare function stopTunnel(): Promise<void>;
|
|
13
|
-
/**
|
|
14
|
-
* Display QR code for tunnel URL
|
|
15
|
-
*/
|
|
16
|
-
export declare function displayQR(tunnelInfo: TunnelInfo): Promise<void>;
|
|
17
|
-
/**
|
|
18
|
-
* Get current tunnel details
|
|
19
|
-
*/
|
|
20
|
-
export declare function getTunnelDetails(): TunnelDetails;
|
|
21
|
-
/**
|
|
22
|
-
* Get current tunnel info
|
|
23
|
-
*/
|
|
24
|
-
export declare function getTunnelInfo(): TunnelInfo | null;
|
|
25
|
-
/**
|
|
26
|
-
* Get current server URL from tunnel
|
|
27
|
-
*/
|
|
28
|
-
export declare function getServerUrl(): string;
|
|
29
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tunnel/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQvE;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAoC3E;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBhD;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAiBhD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAKjD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAKrC"}
|
package/dist/src/tunnel/index.js
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tunnel manager - unified interface for all tunnel providers
|
|
3
|
-
*/
|
|
4
|
-
import { startNgrokTunnel, stopNgrokTunnel } from "./ngrok";
|
|
5
|
-
import { startLocaltunnel, stopLocaltunnel } from "./localtunnel";
|
|
6
|
-
import { startCloudflareTunnel, stopCloudflareTunnel } from "./cloudflare";
|
|
7
|
-
import { displayQRCode } from "../../tunnel-manager";
|
|
8
|
-
let currentTunnel = null;
|
|
9
|
-
/**
|
|
10
|
-
* Start a tunnel with the specified provider
|
|
11
|
-
*/
|
|
12
|
-
export async function startTunnel(config) {
|
|
13
|
-
// Validate that we have a proper TunnelConfig object
|
|
14
|
-
if (!config || typeof config !== 'object') {
|
|
15
|
-
console.log("[Tunnel] startTunnel called with invalid config type:", typeof config);
|
|
16
|
-
throw new Error("Invalid tunnel config: config must be an object");
|
|
17
|
-
}
|
|
18
|
-
// Check if this looks like the OpenCode client context (has 'client' property)
|
|
19
|
-
if ('client' in config) {
|
|
20
|
-
console.log("[Tunnel] startTunnel called with OpenCode client context instead of TunnelConfig");
|
|
21
|
-
console.log("[Tunnel] This indicates a plugin initialization issue");
|
|
22
|
-
throw new Error("Invalid tunnel config: received OpenCode client context");
|
|
23
|
-
}
|
|
24
|
-
if (!config?.port) {
|
|
25
|
-
console.log("[Tunnel] startTunnel called with invalid config:", JSON.stringify(config).substring(0, 200));
|
|
26
|
-
throw new Error("Invalid tunnel config: port is required");
|
|
27
|
-
}
|
|
28
|
-
const provider = config.provider || "ngrok";
|
|
29
|
-
switch (provider) {
|
|
30
|
-
case "ngrok":
|
|
31
|
-
currentTunnel = await startNgrokTunnel(config);
|
|
32
|
-
break;
|
|
33
|
-
case "localtunnel":
|
|
34
|
-
currentTunnel = await startLocaltunnel(config);
|
|
35
|
-
break;
|
|
36
|
-
case "cloudflare":
|
|
37
|
-
currentTunnel = await startCloudflareTunnel(config);
|
|
38
|
-
break;
|
|
39
|
-
default:
|
|
40
|
-
throw new Error(`Unknown tunnel provider: ${provider}`);
|
|
41
|
-
}
|
|
42
|
-
return currentTunnel;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Stop the current tunnel
|
|
46
|
-
*/
|
|
47
|
-
export async function stopTunnel() {
|
|
48
|
-
if (!currentTunnel) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
switch (currentTunnel.provider) {
|
|
52
|
-
case "ngrok":
|
|
53
|
-
await stopNgrokTunnel();
|
|
54
|
-
break;
|
|
55
|
-
case "localtunnel":
|
|
56
|
-
await stopLocaltunnel();
|
|
57
|
-
break;
|
|
58
|
-
case "cloudflare":
|
|
59
|
-
await stopCloudflareTunnel();
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
currentTunnel = null;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Display QR code for tunnel URL
|
|
66
|
-
*/
|
|
67
|
-
export async function displayQR(tunnelInfo) {
|
|
68
|
-
// Validate that we have a proper TunnelInfo object, not the OpenCode client context
|
|
69
|
-
if (!tunnelInfo || typeof tunnelInfo !== 'object') {
|
|
70
|
-
console.log("[Tunnel] displayQR called with invalid tunnelInfo type:", typeof tunnelInfo);
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
// Check if this looks like the OpenCode client context (has 'client' property)
|
|
74
|
-
if ('client' in tunnelInfo) {
|
|
75
|
-
console.log("[Tunnel] displayQR called with OpenCode client context instead of TunnelInfo");
|
|
76
|
-
console.log("[Tunnel] This indicates a plugin initialization issue");
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
if (!tunnelInfo?.url) {
|
|
80
|
-
console.log("[Tunnel] displayQR called with invalid tunnelInfo:", JSON.stringify(tunnelInfo).substring(0, 200));
|
|
81
|
-
console.log("[Tunnel] Stack:", new Error().stack?.split('\n').slice(2, 6).join('\n'));
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
await displayQRCode(tunnelInfo.url);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get current tunnel details
|
|
88
|
-
*/
|
|
89
|
-
export function getTunnelDetails() {
|
|
90
|
-
if (!currentTunnel?.url) {
|
|
91
|
-
return {
|
|
92
|
-
type: "none",
|
|
93
|
-
url: null,
|
|
94
|
-
loginStatus: "unknown",
|
|
95
|
-
loginId: null,
|
|
96
|
-
configPath: null,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
return {
|
|
100
|
-
type: currentTunnel.provider,
|
|
101
|
-
url: currentTunnel.url,
|
|
102
|
-
loginStatus: "unknown",
|
|
103
|
-
loginId: null,
|
|
104
|
-
configPath: null,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Get current tunnel info
|
|
109
|
-
*/
|
|
110
|
-
export function getTunnelInfo() {
|
|
111
|
-
if (!currentTunnel?.url) {
|
|
112
|
-
return null;
|
|
113
|
-
}
|
|
114
|
-
return currentTunnel;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Get current server URL from tunnel
|
|
118
|
-
*/
|
|
119
|
-
export function getServerUrl() {
|
|
120
|
-
if (!currentTunnel?.url) {
|
|
121
|
-
throw new Error("No tunnel active");
|
|
122
|
-
}
|
|
123
|
-
return currentTunnel.url;
|
|
124
|
-
}
|
|
125
|
-
//# 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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"}
|
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"}
|
package/dist/tunnel-manager.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export interface TunnelConfig {
|
|
2
|
-
port: number;
|
|
3
|
-
authToken?: string;
|
|
4
|
-
region?: string;
|
|
5
|
-
subdomain?: string;
|
|
6
|
-
provider?: "localtunnel" | "cloudflare" | "ngrok";
|
|
7
|
-
}
|
|
8
|
-
export interface TunnelInfo {
|
|
9
|
-
url: string;
|
|
10
|
-
tunnelId: string;
|
|
11
|
-
port: number;
|
|
12
|
-
provider: string;
|
|
13
|
-
}
|
|
14
|
-
export interface TunnelDetails {
|
|
15
|
-
type: string;
|
|
16
|
-
url: string | null;
|
|
17
|
-
loginStatus: string;
|
|
18
|
-
loginId: string | null;
|
|
19
|
-
configPath: string | null;
|
|
20
|
-
}
|
|
21
|
-
export declare function stopNgrok(): Promise<void>;
|
|
22
|
-
export declare function stopTunnel(): Promise<void>;
|
|
23
|
-
export declare function startTunnel(config: TunnelConfig): Promise<TunnelInfo>;
|
|
24
|
-
export declare function getTunnelInfo(): TunnelInfo | null;
|
|
25
|
-
export declare function getTunnelDetails(): TunnelDetails;
|
|
26
|
-
export declare function getServerUrl(): string | null;
|
|
27
|
-
export declare function displayQRCode(url: string): Promise<void>;
|
|
28
|
-
export declare function displayQRCodeAndSave(url: string, filepath?: string): Promise<string>;
|
|
29
|
-
export declare function gracefulShutdown(): Promise<void>;
|
|
30
|
-
//# sourceMappingURL=tunnel-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-manager.d.ts","sourceRoot":"","sources":["../tunnel-manager.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,OAAO,CAAC;CACnD;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AA6jBD,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAU/C;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAKhD;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAa3E;AAED,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAEjD;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAoEhD;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9D;AAED,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD"}
|