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
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Endpoint tester for push-token and tunnel endpoints
|
|
3
|
+
*/
|
|
4
|
+
import type { AuditOptions, EndpointTest, TestResult } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Test all endpoints
|
|
7
|
+
*/
|
|
8
|
+
export declare function testEndpoints(port: number, options: AuditOptions): Promise<{
|
|
9
|
+
tests: EndpointTest[];
|
|
10
|
+
results: TestResult[];
|
|
11
|
+
}>;
|
|
12
|
+
/**
|
|
13
|
+
* Quick health check for endpoints
|
|
14
|
+
*/
|
|
15
|
+
export declare function quickHealthCheck(port: number): Promise<{
|
|
16
|
+
healthy: boolean;
|
|
17
|
+
endpoints: string[];
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=endpoint-tester.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-tester.d.ts","sourceRoot":"","sources":["../../../src/cli/endpoint-tester.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,YAAY,CAAC;AAQpB;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CAyM3D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAwBpD"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Endpoint tester for push-token and tunnel endpoints
|
|
3
|
+
*/
|
|
4
|
+
const CORS = {
|
|
5
|
+
"Access-Control-Allow-Origin": "*",
|
|
6
|
+
"Access-Control-Allow-Methods": "GET, POST, DELETE, OPTIONS",
|
|
7
|
+
"Access-Control-Allow-Headers": "Content-Type",
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Test all endpoints
|
|
11
|
+
*/
|
|
12
|
+
export async function testEndpoints(port, options) {
|
|
13
|
+
const baseUrl = `http://127.0.0.1:${port}`;
|
|
14
|
+
const results = [];
|
|
15
|
+
const tests = [];
|
|
16
|
+
// Define all endpoint tests
|
|
17
|
+
const endpointTests = [
|
|
18
|
+
// Push-token endpoints
|
|
19
|
+
{
|
|
20
|
+
category: "endpoint",
|
|
21
|
+
name: "GET /push-token",
|
|
22
|
+
method: "GET",
|
|
23
|
+
path: "/push-token",
|
|
24
|
+
expectedStatus: 200,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
category: "endpoint",
|
|
28
|
+
name: "POST /push-token",
|
|
29
|
+
method: "POST",
|
|
30
|
+
path: "/push-token",
|
|
31
|
+
body: { token: "test-token-audit", platform: "ios", deviceId: `audit-test-${Date.now()}` },
|
|
32
|
+
expectedStatus: 200,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
category: "endpoint",
|
|
36
|
+
name: "GET /push-token (after POST)",
|
|
37
|
+
method: "GET",
|
|
38
|
+
path: "/push-token",
|
|
39
|
+
expectedStatus: 200,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
category: "endpoint",
|
|
43
|
+
name: "DELETE /push-token",
|
|
44
|
+
method: "DELETE",
|
|
45
|
+
path: "/push-token",
|
|
46
|
+
body: { deviceId: `audit-test-${Date.now()}` },
|
|
47
|
+
expectedStatus: 200,
|
|
48
|
+
},
|
|
49
|
+
// Tunnel endpoints
|
|
50
|
+
{
|
|
51
|
+
category: "endpoint",
|
|
52
|
+
name: "GET /tunnel (no tunnel)",
|
|
53
|
+
method: "GET",
|
|
54
|
+
path: "/tunnel",
|
|
55
|
+
expectedStatus: 200,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
category: "endpoint",
|
|
59
|
+
name: "POST /tunnel",
|
|
60
|
+
method: "POST",
|
|
61
|
+
path: "/tunnel",
|
|
62
|
+
body: { port },
|
|
63
|
+
expectedStatus: 200,
|
|
64
|
+
skipIf: options.tunnelOnly === false,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
category: "endpoint",
|
|
68
|
+
name: "GET /tunnel (with tunnel)",
|
|
69
|
+
method: "GET",
|
|
70
|
+
path: "/tunnel",
|
|
71
|
+
expectedStatus: 200,
|
|
72
|
+
skipIf: options.tunnelOnly === false,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
category: "endpoint",
|
|
76
|
+
name: "DELETE /tunnel",
|
|
77
|
+
method: "DELETE",
|
|
78
|
+
path: "/tunnel",
|
|
79
|
+
expectedStatus: 200,
|
|
80
|
+
skipIf: options.tunnelOnly === false,
|
|
81
|
+
},
|
|
82
|
+
// CORS preflight
|
|
83
|
+
{
|
|
84
|
+
category: "endpoint",
|
|
85
|
+
name: "OPTIONS /push-token",
|
|
86
|
+
method: "OPTIONS",
|
|
87
|
+
path: "/push-token",
|
|
88
|
+
expectedStatus: 204,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
category: "endpoint",
|
|
92
|
+
name: "OPTIONS /tunnel",
|
|
93
|
+
method: "OPTIONS",
|
|
94
|
+
path: "/tunnel",
|
|
95
|
+
expectedStatus: 204,
|
|
96
|
+
},
|
|
97
|
+
// Error cases
|
|
98
|
+
{
|
|
99
|
+
category: "endpoint",
|
|
100
|
+
name: "POST /push-token (missing fields)",
|
|
101
|
+
method: "POST",
|
|
102
|
+
path: "/push-token",
|
|
103
|
+
body: { token: "test" },
|
|
104
|
+
expectedStatus: 400,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
category: "endpoint",
|
|
108
|
+
name: "DELETE /push-token (missing deviceId)",
|
|
109
|
+
method: "DELETE",
|
|
110
|
+
path: "/push-token",
|
|
111
|
+
body: {},
|
|
112
|
+
expectedStatus: 400,
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
category: "endpoint",
|
|
116
|
+
name: "POST /tunnel (invalid port)",
|
|
117
|
+
method: "POST",
|
|
118
|
+
path: "/tunnel",
|
|
119
|
+
body: { port: "invalid" },
|
|
120
|
+
expectedStatus: 400,
|
|
121
|
+
skipIf: options.tunnelOnly === false,
|
|
122
|
+
},
|
|
123
|
+
// 404 cases
|
|
124
|
+
{
|
|
125
|
+
category: "endpoint",
|
|
126
|
+
name: "GET /nonexistent",
|
|
127
|
+
method: "GET",
|
|
128
|
+
path: "/nonexistent",
|
|
129
|
+
expectedStatus: 404,
|
|
130
|
+
},
|
|
131
|
+
];
|
|
132
|
+
// Execute tests
|
|
133
|
+
for (const test of endpointTests) {
|
|
134
|
+
if (test.skipIf) {
|
|
135
|
+
results.push({
|
|
136
|
+
name: test.name,
|
|
137
|
+
category: "endpoint",
|
|
138
|
+
status: "skip",
|
|
139
|
+
message: "Skipped by configuration",
|
|
140
|
+
});
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const start = Date.now();
|
|
144
|
+
try {
|
|
145
|
+
const response = await fetch(`${baseUrl}${test.path}`, {
|
|
146
|
+
method: test.method,
|
|
147
|
+
headers: {
|
|
148
|
+
"Content-Type": "application/json",
|
|
149
|
+
...(test.method === "OPTIONS" ? {} : CORS),
|
|
150
|
+
},
|
|
151
|
+
body: test.body ? JSON.stringify(test.body) : undefined,
|
|
152
|
+
});
|
|
153
|
+
const duration = Date.now() - start;
|
|
154
|
+
const success = response.status === test.expectedStatus;
|
|
155
|
+
// Try to parse response body for details
|
|
156
|
+
let responseBody;
|
|
157
|
+
const textBody = await response.text();
|
|
158
|
+
try {
|
|
159
|
+
responseBody = JSON.parse(textBody);
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
responseBody = textBody;
|
|
163
|
+
}
|
|
164
|
+
tests.push({
|
|
165
|
+
method: test.method,
|
|
166
|
+
path: test.path,
|
|
167
|
+
statusCode: response.status,
|
|
168
|
+
response: responseBody,
|
|
169
|
+
duration,
|
|
170
|
+
});
|
|
171
|
+
results.push({
|
|
172
|
+
name: test.name,
|
|
173
|
+
category: "endpoint",
|
|
174
|
+
status: success ? "pass" : "fail",
|
|
175
|
+
message: success
|
|
176
|
+
? `${response.status} OK`
|
|
177
|
+
: `Expected ${test.expectedStatus}, got ${response.status}`,
|
|
178
|
+
details: {
|
|
179
|
+
responseBody,
|
|
180
|
+
duration: `${duration}ms`,
|
|
181
|
+
},
|
|
182
|
+
duration,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
187
|
+
const duration = Date.now() - start;
|
|
188
|
+
tests.push({
|
|
189
|
+
method: test.method,
|
|
190
|
+
path: test.path,
|
|
191
|
+
statusCode: 0,
|
|
192
|
+
duration,
|
|
193
|
+
});
|
|
194
|
+
results.push({
|
|
195
|
+
name: test.name,
|
|
196
|
+
category: "endpoint",
|
|
197
|
+
status: "fail",
|
|
198
|
+
message: `Request failed: ${errorMessage}`,
|
|
199
|
+
error: errorMessage,
|
|
200
|
+
duration,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return { tests, results };
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Quick health check for endpoints
|
|
208
|
+
*/
|
|
209
|
+
export async function quickHealthCheck(port) {
|
|
210
|
+
const endpoints = [];
|
|
211
|
+
const checks = [
|
|
212
|
+
{ method: "GET", path: "/push-token" },
|
|
213
|
+
{ method: "GET", path: "/tunnel" },
|
|
214
|
+
];
|
|
215
|
+
for (const check of checks) {
|
|
216
|
+
try {
|
|
217
|
+
const response = await fetch(`http://127.0.0.1:${port}${check.path}`, {
|
|
218
|
+
method: check.method,
|
|
219
|
+
});
|
|
220
|
+
if (response.status < 500) {
|
|
221
|
+
endpoints.push(`${check.method} ${check.path}`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
// Endpoint not available
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
healthy: endpoints.length === checks.length,
|
|
230
|
+
endpoints,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=endpoint-tester.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-tester.js","sourceRoot":"","sources":["../../../src/cli/endpoint-tester.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI audit command - main entry point for npx audit
|
|
3
|
+
*/
|
|
4
|
+
import type { AuditOptions } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Parse command line arguments
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseArgs(args: string[]): AuditOptions;
|
|
9
|
+
/**
|
|
10
|
+
* Show help message
|
|
11
|
+
*/
|
|
12
|
+
export declare function showHelp(): void;
|
|
13
|
+
/**
|
|
14
|
+
* Main CLI entry point
|
|
15
|
+
*/
|
|
16
|
+
export declare function main(args?: string[]): Promise<void>;
|
|
17
|
+
export { runAudit } from "./test-runner.js";
|
|
18
|
+
export { generateConsoleReport, generateJsonReport } from "./report.js";
|
|
19
|
+
export type { AuditOptions, AuditReport, TestResult } from "./types.js";
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CAuEtD;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAsC/B;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkChF;AAGD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACxE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI audit command - main entry point for npx audit
|
|
3
|
+
*/
|
|
4
|
+
import { runAudit } from "./test-runner.js";
|
|
5
|
+
import { printReport } from "./report.js";
|
|
6
|
+
/**
|
|
7
|
+
* Parse command line arguments
|
|
8
|
+
*/
|
|
9
|
+
export function parseArgs(args) {
|
|
10
|
+
const options = {
|
|
11
|
+
port: 4096,
|
|
12
|
+
proxyPort: 4097,
|
|
13
|
+
timeout: 60000,
|
|
14
|
+
cleanup: true,
|
|
15
|
+
};
|
|
16
|
+
for (let i = 0; i < args.length; i++) {
|
|
17
|
+
const arg = args[i];
|
|
18
|
+
if (arg.startsWith("--")) {
|
|
19
|
+
const key = arg.slice(2).toLowerCase();
|
|
20
|
+
// Boolean flags
|
|
21
|
+
if (["tunnel-only", "tunnelOnly"].includes(key)) {
|
|
22
|
+
options.tunnelOnly = true;
|
|
23
|
+
}
|
|
24
|
+
else if (["endpoints-only", "endpointsOnly"].includes(key)) {
|
|
25
|
+
options.endpointsOnly = true;
|
|
26
|
+
}
|
|
27
|
+
else if (["push-only", "pushOnly"].includes(key)) {
|
|
28
|
+
options.pushOnly = true;
|
|
29
|
+
}
|
|
30
|
+
else if (["json"].includes(key)) {
|
|
31
|
+
options.json = true;
|
|
32
|
+
}
|
|
33
|
+
else if (["verbose"].includes(key)) {
|
|
34
|
+
options.verbose = true;
|
|
35
|
+
}
|
|
36
|
+
else if (["cleanup"].includes(key)) {
|
|
37
|
+
options.cleanup = true;
|
|
38
|
+
}
|
|
39
|
+
else if (["no-cleanup"].includes(key)) {
|
|
40
|
+
options.cleanup = false;
|
|
41
|
+
}
|
|
42
|
+
else if (["help", "h"].includes(key)) {
|
|
43
|
+
return { ...options, help: true };
|
|
44
|
+
}
|
|
45
|
+
else if (key === "port" && i + 1 < args.length) {
|
|
46
|
+
i++;
|
|
47
|
+
options.port = parseInt(args[i], 10);
|
|
48
|
+
}
|
|
49
|
+
else if (key === "connect" && i + 1 < args.length) {
|
|
50
|
+
i++;
|
|
51
|
+
options.connect = args[i];
|
|
52
|
+
}
|
|
53
|
+
else if (key === "timeout" && i + 1 < args.length) {
|
|
54
|
+
i++;
|
|
55
|
+
options.timeout = parseInt(args[i], 10);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else if (arg.startsWith("-")) {
|
|
59
|
+
const shortFlags = arg.slice(1).split("");
|
|
60
|
+
for (const short of shortFlags) {
|
|
61
|
+
switch (short) {
|
|
62
|
+
case "t":
|
|
63
|
+
options.tunnelOnly = true;
|
|
64
|
+
break;
|
|
65
|
+
case "e":
|
|
66
|
+
options.endpointsOnly = true;
|
|
67
|
+
break;
|
|
68
|
+
case "p":
|
|
69
|
+
options.pushOnly = true;
|
|
70
|
+
break;
|
|
71
|
+
case "j":
|
|
72
|
+
options.json = true;
|
|
73
|
+
break;
|
|
74
|
+
case "v":
|
|
75
|
+
options.verbose = true;
|
|
76
|
+
break;
|
|
77
|
+
case "c":
|
|
78
|
+
options.cleanup = false;
|
|
79
|
+
break;
|
|
80
|
+
case "h":
|
|
81
|
+
return { ...options, help: true };
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return options;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Show help message
|
|
90
|
+
*/
|
|
91
|
+
export function showHelp() {
|
|
92
|
+
console.log(`
|
|
93
|
+
OpenCode Mobile Plugin - Endpoint Audit Utility
|
|
94
|
+
|
|
95
|
+
USAGE:
|
|
96
|
+
npx opencode-mobile audit [OPTIONS]
|
|
97
|
+
|
|
98
|
+
OPTIONS:
|
|
99
|
+
-t, --tunnel-only Test only tunnel providers
|
|
100
|
+
-e, --endpoints-only Test only API endpoints
|
|
101
|
+
-p, --push-only Test only push notifications
|
|
102
|
+
-j, --json Output results as JSON
|
|
103
|
+
-v, --verbose Show detailed output
|
|
104
|
+
-c, --no-cleanup Don't stop servers/tunnels after testing
|
|
105
|
+
--connect HOST:PORT Connect to existing server instead of starting new
|
|
106
|
+
--port PORT Server port to use (default: 4096)
|
|
107
|
+
--timeout MS Request timeout in milliseconds (default: 60000)
|
|
108
|
+
-h, --help Show this help message
|
|
109
|
+
|
|
110
|
+
EXAMPLES:
|
|
111
|
+
npx opencode-mobile audit # Full audit
|
|
112
|
+
npx opencode-mobile audit --tunnel-only # Test only tunnels
|
|
113
|
+
npx opencode-mobile audit -j --verbose # JSON output with details
|
|
114
|
+
npx opencode-mobile audit --connect localhost:4096 # Test existing server
|
|
115
|
+
|
|
116
|
+
OUTPUT:
|
|
117
|
+
The audit tests:
|
|
118
|
+
- Server health and CORS configuration
|
|
119
|
+
- All API endpoints (push-token, tunnel)
|
|
120
|
+
- Tunnel providers (ngrok, cloudflare, localtunnel)
|
|
121
|
+
- Push notification system (token store, Expo API)
|
|
122
|
+
|
|
123
|
+
Results include:
|
|
124
|
+
- Pass/fail/skip status for each test
|
|
125
|
+
- Response times and error messages
|
|
126
|
+
- Recommendations for fixes
|
|
127
|
+
- Overall health score
|
|
128
|
+
`);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Main CLI entry point
|
|
132
|
+
*/
|
|
133
|
+
export async function main(args = process.argv.slice(2)) {
|
|
134
|
+
const options = parseArgs(args);
|
|
135
|
+
if (options.help) {
|
|
136
|
+
showHelp();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
console.log("");
|
|
140
|
+
console.log("=".repeat(60));
|
|
141
|
+
console.log(" OpenCode Mobile Plugin - Endpoint Audit");
|
|
142
|
+
console.log("=".repeat(60));
|
|
143
|
+
console.log("");
|
|
144
|
+
try {
|
|
145
|
+
const report = await runAudit(options);
|
|
146
|
+
console.log("");
|
|
147
|
+
console.log("=".repeat(60));
|
|
148
|
+
console.log(" AUDIT RESULTS");
|
|
149
|
+
console.log("=".repeat(60));
|
|
150
|
+
console.log("");
|
|
151
|
+
printReport(report, options.json || false);
|
|
152
|
+
// Exit with error code if tests failed
|
|
153
|
+
if (report.summary.failed > 0) {
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
159
|
+
console.error(`\n❌ Audit failed: ${errorMessage}`);
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Export for programmatic use
|
|
164
|
+
export { runAudit } from "./test-runner.js";
|
|
165
|
+
export { generateConsoleReport, generateJsonReport } from "./report.js";
|
|
166
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Push notification tester - token store and Expo API
|
|
3
|
+
*/
|
|
4
|
+
import type { AuditOptions, PushTestResult, TestResult } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Test push notification functionality
|
|
7
|
+
*/
|
|
8
|
+
export declare function testPush(_options: AuditOptions): Promise<{
|
|
9
|
+
result: PushTestResult;
|
|
10
|
+
results: TestResult[];
|
|
11
|
+
}>;
|
|
12
|
+
/**
|
|
13
|
+
* Generate push notification recommendations
|
|
14
|
+
*/
|
|
15
|
+
export declare function getPushRecommendations(result: PushTestResult): string[];
|
|
16
|
+
//# sourceMappingURL=push-tester.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-tester.d.ts","sourceRoot":"","sources":["../../../src/cli/push-tester.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,YAAY,CAAC;AAKpB;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CAuQ5D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAwCvE"}
|