@mexty/cli 1.9.0 ā 1.9.1
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/dist/block-68f6a9dd608928af6fbea9ba/.eslintrc +14 -0
- package/dist/block-68f6a9dd608928af6fbea9ba/.prettierrc +10 -0
- package/dist/block-68f6a9dd608928af6fbea9ba/README.md +63 -0
- package/dist/block-68f6a9dd608928af6fbea9ba/index.html +13 -0
- package/dist/block-68f6a9dd608928af6fbea9ba/package-lock.json +6657 -0
- package/dist/block-68f6a9dd608928af6fbea9ba/package.json +34 -0
- package/dist/block-68f6a9dd608928af6fbea9ba/src/App.tsx +45 -0
- package/dist/block-68f6a9dd608928af6fbea9ba/src/block.tsx +111 -0
- package/dist/block-68f6a9dd608928af6fbea9ba/src/index.tsx +6 -0
- package/dist/block-68f6a9dd608928af6fbea9ba/src/styles.css +8 -0
- package/dist/block-68f6a9dd608928af6fbea9ba/tsconfig.json +27 -0
- package/dist/block-68f6a9dd608928af6fbea9ba/vite.config.ts +20 -0
- package/dist/block-68f6a9dd608928af6fbea9ba/webpack.config.js +59 -0
- package/dist/block-68f6aa43608928af6fbea9c9/.eslintrc +14 -0
- package/dist/block-68f6aa43608928af6fbea9c9/.prettierrc +10 -0
- package/dist/block-68f6aa43608928af6fbea9c9/README.md +63 -0
- package/dist/block-68f6aa43608928af6fbea9c9/coco +0 -0
- package/dist/block-68f6aa43608928af6fbea9c9/index.html +13 -0
- package/dist/block-68f6aa43608928af6fbea9c9/package-lock.json +6657 -0
- package/dist/block-68f6aa43608928af6fbea9c9/package.json +34 -0
- package/dist/block-68f6aa43608928af6fbea9c9/src/App.tsx +45 -0
- package/dist/block-68f6aa43608928af6fbea9c9/src/block.tsx +111 -0
- package/dist/block-68f6aa43608928af6fbea9c9/src/index.tsx +6 -0
- package/dist/block-68f6aa43608928af6fbea9c9/src/styles.css +8 -0
- package/dist/block-68f6aa43608928af6fbea9c9/tsconfig.json +27 -0
- package/dist/block-68f6aa43608928af6fbea9c9/vite.config.ts +20 -0
- package/dist/block-68f6aa43608928af6fbea9c9/webpack.config.js +59 -0
- package/dist/coco +0 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +61 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/utils/api.d.ts +7 -0
- package/dist/utils/api.d.ts.map +1 -1
- package/dist/utils/api.js +5 -1
- package/dist/utils/api.js.map +1 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +55 -9
- package/dist/utils/git.js.map +1 -1
- package/package.json +42 -42
- package/src/commands/create.ts +69 -1
- package/src/commands/github-login.ts +107 -107
- package/src/utils/api.ts +10 -5
- package/src/utils/git.ts +269 -254
package/dist/utils/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@mexty/cli",
|
|
3
|
-
"version": "1.9.
|
|
4
|
-
"description": "MEXT CLI for managing blocks and repositories",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"bin": {
|
|
7
|
-
"mexty": "./dist/index.js"
|
|
8
|
-
},
|
|
9
|
-
"scripts": {
|
|
10
|
-
"build": "tsc",
|
|
11
|
-
"dev": "tsc --watch",
|
|
12
|
-
"start": "node dist/index.js"
|
|
13
|
-
},
|
|
14
|
-
"dependencies": {
|
|
15
|
-
"@types/inquirer": "^9.0.8",
|
|
16
|
-
"axios": "^1.6.0",
|
|
17
|
-
"chalk": "^4.1.2",
|
|
18
|
-
"commander": "^11.1.0",
|
|
19
|
-
"inquirer": "^12.6.3",
|
|
20
|
-
"open": "^8.4.2",
|
|
21
|
-
"simple-git": "^3.20.0"
|
|
22
|
-
},
|
|
23
|
-
"devDependencies": {
|
|
24
|
-
"@types/node": "^20.0.0",
|
|
25
|
-
"typescript": "^5.0.0"
|
|
26
|
-
},
|
|
27
|
-
"engines": {
|
|
28
|
-
"node": ">=16.0.0"
|
|
29
|
-
},
|
|
30
|
-
"keywords": [
|
|
31
|
-
"mext",
|
|
32
|
-
"cli",
|
|
33
|
-
"blocks",
|
|
34
|
-
"federation",
|
|
35
|
-
"webpack"
|
|
36
|
-
],
|
|
37
|
-
"author": "MEXT Team",
|
|
38
|
-
"license": "MIT",
|
|
39
|
-
"publishConfig": {
|
|
40
|
-
"access": "public"
|
|
41
|
-
}
|
|
42
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@mexty/cli",
|
|
3
|
+
"version": "1.9.1",
|
|
4
|
+
"description": "MEXT CLI for managing blocks and repositories",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"mexty": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"dev": "tsc --watch",
|
|
12
|
+
"start": "node dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@types/inquirer": "^9.0.8",
|
|
16
|
+
"axios": "^1.6.0",
|
|
17
|
+
"chalk": "^4.1.2",
|
|
18
|
+
"commander": "^11.1.0",
|
|
19
|
+
"inquirer": "^12.6.3",
|
|
20
|
+
"open": "^8.4.2",
|
|
21
|
+
"simple-git": "^3.20.0"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@types/node": "^20.0.0",
|
|
25
|
+
"typescript": "^5.0.0"
|
|
26
|
+
},
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=16.0.0"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"mext",
|
|
32
|
+
"cli",
|
|
33
|
+
"blocks",
|
|
34
|
+
"federation",
|
|
35
|
+
"webpack"
|
|
36
|
+
],
|
|
37
|
+
"author": "MEXT Team",
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public"
|
|
41
|
+
}
|
|
42
|
+
}
|
package/src/commands/create.ts
CHANGED
|
@@ -132,6 +132,72 @@ export async function createCommand(
|
|
|
132
132
|
if (gitUrl) {
|
|
133
133
|
console.log(chalk.gray(` GitHub URL: ${gitUrl}`));
|
|
134
134
|
|
|
135
|
+
const blockId = block.id || block._id;
|
|
136
|
+
|
|
137
|
+
// Check if user has GitHub connected and needs to accept invitation
|
|
138
|
+
try {
|
|
139
|
+
const githubStatus = await apiClient.getGitHubStatus();
|
|
140
|
+
|
|
141
|
+
if (githubStatus.connected) {
|
|
142
|
+
// User has GitHub connected, check if they need to accept invitation
|
|
143
|
+
const invitationStatus = await apiClient.checkGitHubInvitationStatus(blockId);
|
|
144
|
+
|
|
145
|
+
if (!invitationStatus.accepted) {
|
|
146
|
+
// User needs to accept invitation
|
|
147
|
+
console.log(chalk.blue(`\nš GitHub Repository Access Required`));
|
|
148
|
+
console.log(chalk.gray(` You've been invited as a collaborator to this private repository.`));
|
|
149
|
+
console.log(chalk.gray(` You must accept the invitation before cloning.\n`));
|
|
150
|
+
|
|
151
|
+
console.log(chalk.yellow(`š§ Accept your invitation:`));
|
|
152
|
+
console.log(chalk.cyan(` ${invitationStatus.invitationUrl}\n`));
|
|
153
|
+
|
|
154
|
+
console.log(chalk.gray(`ā³ Waiting for you to accept the invitation...`));
|
|
155
|
+
console.log(chalk.gray(` You have 10 minutes. Checking every 5 seconds.\n`));
|
|
156
|
+
|
|
157
|
+
// Poll for acceptance (10 minutes = 120 attempts at 5 second intervals)
|
|
158
|
+
const maxAttempts = 120;
|
|
159
|
+
const pollInterval = 5000; // 5 seconds
|
|
160
|
+
let attempts = 0;
|
|
161
|
+
let accepted = false;
|
|
162
|
+
|
|
163
|
+
while (attempts < maxAttempts && !accepted) {
|
|
164
|
+
await new Promise(resolve => setTimeout(resolve, pollInterval));
|
|
165
|
+
attempts++;
|
|
166
|
+
|
|
167
|
+
try {
|
|
168
|
+
const status = await apiClient.checkGitHubInvitationStatus(blockId);
|
|
169
|
+
if (status.accepted) {
|
|
170
|
+
accepted = true;
|
|
171
|
+
console.log(chalk.green(`\nā
Invitation accepted! Proceeding with clone...\n`));
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// Show progress every 30 seconds
|
|
176
|
+
if (attempts % 6 === 0) {
|
|
177
|
+
const elapsed = Math.floor((attempts * pollInterval) / 1000);
|
|
178
|
+
const remaining = Math.floor(((maxAttempts - attempts) * pollInterval) / 1000);
|
|
179
|
+
console.log(chalk.gray(` Still waiting... (${elapsed}s elapsed, ${remaining}s remaining)`));
|
|
180
|
+
}
|
|
181
|
+
} catch (pollError) {
|
|
182
|
+
// Continue polling even if there's an error
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (!accepted) {
|
|
187
|
+
console.error(chalk.red(`\nā Timeout: Invitation not accepted within 10 minutes`));
|
|
188
|
+
console.log(chalk.yellow(`\nš” You can still accept the invitation later and clone manually:`));
|
|
189
|
+
console.log(chalk.gray(` 1. Accept invitation: ${invitationStatus.invitationUrl}`));
|
|
190
|
+
console.log(chalk.gray(` 2. Clone repository: git clone ${gitUrl}`));
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
} else {
|
|
194
|
+
console.log(chalk.green(`ā
GitHub access confirmed`));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
} catch (githubError: any) {
|
|
198
|
+
// Silently skip GitHub invitation check if not connected
|
|
199
|
+
}
|
|
200
|
+
|
|
135
201
|
// Clone the repository
|
|
136
202
|
const repoName = GitManager.extractRepoName(gitUrl);
|
|
137
203
|
const targetDir = path.join(process.cwd(), repoName);
|
|
@@ -166,7 +232,9 @@ export async function createCommand(
|
|
|
166
232
|
console.error(
|
|
167
233
|
chalk.red(`ā Failed to clone repository: ${cloneError.message}`)
|
|
168
234
|
);
|
|
169
|
-
console.log(chalk.yellow(
|
|
235
|
+
console.log(chalk.yellow(`\nš” This might be a private repository.`));
|
|
236
|
+
console.log(chalk.gray(` Connect your GitHub account: mexty github-login`));
|
|
237
|
+
console.log(chalk.yellow(`\nYou can manually clone it later:`));
|
|
170
238
|
console.log(chalk.gray(` git clone ${gitUrl}`));
|
|
171
239
|
}
|
|
172
240
|
} else {
|
|
@@ -1,107 +1,107 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import open from 'open';
|
|
3
|
-
import { apiClient } from '../utils/api';
|
|
4
|
-
import { requireAuthentication } from '../utils/auth';
|
|
5
|
-
|
|
6
|
-
async function wait(seconds: number): Promise<void> {
|
|
7
|
-
return new Promise(resolve => setTimeout(resolve, seconds * 1000));
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export async function githubLoginCommand(): Promise<void> {
|
|
11
|
-
try {
|
|
12
|
-
// Check authentication first
|
|
13
|
-
requireAuthentication();
|
|
14
|
-
|
|
15
|
-
console.log(chalk.blue('š GitHub Authentication'));
|
|
16
|
-
console.log(chalk.gray(' Connecting your GitHub account for private repository access\n'));
|
|
17
|
-
|
|
18
|
-
// Check if already connected
|
|
19
|
-
try {
|
|
20
|
-
const status = await apiClient.getGitHubStatus();
|
|
21
|
-
if (status.connected) {
|
|
22
|
-
console.log(chalk.green('ā
GitHub already connected!'));
|
|
23
|
-
console.log(chalk.gray(` Username: ${status.githubUsername}`));
|
|
24
|
-
console.log(chalk.gray(` Status: ${status.message}\n`));
|
|
25
|
-
|
|
26
|
-
console.log(chalk.yellow('To disconnect and reconnect, run: mexty github-disconnect'));
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
} catch (error: any) {
|
|
30
|
-
// If status check fails, continue with login
|
|
31
|
-
console.log(chalk.yellow('ā ļø Could not check GitHub status, proceeding with login...'));
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Get GitHub OAuth URL
|
|
35
|
-
console.log(chalk.yellow('š” Requesting GitHub OAuth URL...'));
|
|
36
|
-
const authData = await apiClient.getGitHubAuthUrl();
|
|
37
|
-
|
|
38
|
-
if (!authData.success || !authData.url) {
|
|
39
|
-
console.error(chalk.red(`ā ${authData.message}`));
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
console.log(chalk.green('ā
OAuth URL generated'));
|
|
44
|
-
console.log(chalk.blue('\nš Opening browser for GitHub authentication...'));
|
|
45
|
-
console.log(chalk.gray(` URL: ${authData.url}\n`));
|
|
46
|
-
|
|
47
|
-
// Open browser
|
|
48
|
-
try {
|
|
49
|
-
await open(authData.url);
|
|
50
|
-
console.log(chalk.yellow('š Please authorize MEXTY in your browser'));
|
|
51
|
-
} catch (error) {
|
|
52
|
-
console.warn(chalk.yellow('ā ļø Could not open browser automatically'));
|
|
53
|
-
console.log(chalk.blue('\nPlease open this URL in your browser:'));
|
|
54
|
-
console.log(chalk.cyan(authData.url));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
console.log(chalk.gray('\nā³ Waiting for you to authorize...'));
|
|
58
|
-
console.log(chalk.gray(' This may take a moment\n'));
|
|
59
|
-
|
|
60
|
-
// Poll for connection status
|
|
61
|
-
let connected = false;
|
|
62
|
-
let attempts = 0;
|
|
63
|
-
const maxAttempts = 60; // 2 minutes (2 second intervals)
|
|
64
|
-
|
|
65
|
-
while (!connected && attempts < maxAttempts) {
|
|
66
|
-
await wait(2);
|
|
67
|
-
attempts++;
|
|
68
|
-
|
|
69
|
-
try {
|
|
70
|
-
const status = await apiClient.getGitHubStatus();
|
|
71
|
-
if (status.connected) {
|
|
72
|
-
connected = true;
|
|
73
|
-
console.log(chalk.green('\nš GitHub connected successfully!'));
|
|
74
|
-
console.log(chalk.gray(` Username: ${status.githubUsername}`));
|
|
75
|
-
console.log(chalk.gray(` Status: ${status.message}\n`));
|
|
76
|
-
console.log(chalk.blue('You can now clone private block repositories!'));
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
} catch (error) {
|
|
80
|
-
// Continue polling
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// Show progress indicator every 10 attempts
|
|
84
|
-
if (attempts % 10 === 0) {
|
|
85
|
-
console.log(chalk.gray(` Still waiting... (${attempts * 2}s)`));
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (!connected) {
|
|
90
|
-
console.error(chalk.red('\nā Authentication timeout'));
|
|
91
|
-
console.log(chalk.yellow(' Please try again: mexty github-login'));
|
|
92
|
-
process.exit(1);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
} catch (error: any) {
|
|
96
|
-
console.error(chalk.red(`ā GitHub login failed: ${error.message}`));
|
|
97
|
-
|
|
98
|
-
if (error.response?.status === 401) {
|
|
99
|
-
console.log(chalk.yellow(' Please login first: mexty login'));
|
|
100
|
-
} else if (error.response?.status === 500) {
|
|
101
|
-
console.log(chalk.yellow(' GitHub OAuth may not be configured on the server'));
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
process.exit(1);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import open from 'open';
|
|
3
|
+
import { apiClient } from '../utils/api';
|
|
4
|
+
import { requireAuthentication } from '../utils/auth';
|
|
5
|
+
|
|
6
|
+
async function wait(seconds: number): Promise<void> {
|
|
7
|
+
return new Promise(resolve => setTimeout(resolve, seconds * 1000));
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export async function githubLoginCommand(): Promise<void> {
|
|
11
|
+
try {
|
|
12
|
+
// Check authentication first
|
|
13
|
+
requireAuthentication();
|
|
14
|
+
|
|
15
|
+
console.log(chalk.blue('š GitHub Authentication'));
|
|
16
|
+
console.log(chalk.gray(' Connecting your GitHub account for private repository access\n'));
|
|
17
|
+
|
|
18
|
+
// Check if already connected
|
|
19
|
+
try {
|
|
20
|
+
const status = await apiClient.getGitHubStatus();
|
|
21
|
+
if (status.connected) {
|
|
22
|
+
console.log(chalk.green('ā
GitHub already connected!'));
|
|
23
|
+
console.log(chalk.gray(` Username: ${status.githubUsername}`));
|
|
24
|
+
console.log(chalk.gray(` Status: ${status.message}\n`));
|
|
25
|
+
|
|
26
|
+
console.log(chalk.yellow('To disconnect and reconnect, run: mexty github-disconnect'));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
} catch (error: any) {
|
|
30
|
+
// If status check fails, continue with login
|
|
31
|
+
console.log(chalk.yellow('ā ļø Could not check GitHub status, proceeding with login...'));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Get GitHub OAuth URL
|
|
35
|
+
console.log(chalk.yellow('š” Requesting GitHub OAuth URL...'));
|
|
36
|
+
const authData = await apiClient.getGitHubAuthUrl();
|
|
37
|
+
|
|
38
|
+
if (!authData.success || !authData.url) {
|
|
39
|
+
console.error(chalk.red(`ā ${authData.message}`));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
console.log(chalk.green('ā
OAuth URL generated'));
|
|
44
|
+
console.log(chalk.blue('\nš Opening browser for GitHub authentication...'));
|
|
45
|
+
console.log(chalk.gray(` URL: ${authData.url}\n`));
|
|
46
|
+
|
|
47
|
+
// Open browser
|
|
48
|
+
try {
|
|
49
|
+
await open(authData.url);
|
|
50
|
+
console.log(chalk.yellow('š Please authorize MEXTY in your browser'));
|
|
51
|
+
} catch (error) {
|
|
52
|
+
console.warn(chalk.yellow('ā ļø Could not open browser automatically'));
|
|
53
|
+
console.log(chalk.blue('\nPlease open this URL in your browser:'));
|
|
54
|
+
console.log(chalk.cyan(authData.url));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
console.log(chalk.gray('\nā³ Waiting for you to authorize...'));
|
|
58
|
+
console.log(chalk.gray(' This may take a moment\n'));
|
|
59
|
+
|
|
60
|
+
// Poll for connection status
|
|
61
|
+
let connected = false;
|
|
62
|
+
let attempts = 0;
|
|
63
|
+
const maxAttempts = 60; // 2 minutes (2 second intervals)
|
|
64
|
+
|
|
65
|
+
while (!connected && attempts < maxAttempts) {
|
|
66
|
+
await wait(2);
|
|
67
|
+
attempts++;
|
|
68
|
+
|
|
69
|
+
try {
|
|
70
|
+
const status = await apiClient.getGitHubStatus();
|
|
71
|
+
if (status.connected) {
|
|
72
|
+
connected = true;
|
|
73
|
+
console.log(chalk.green('\nš GitHub connected successfully!'));
|
|
74
|
+
console.log(chalk.gray(` Username: ${status.githubUsername}`));
|
|
75
|
+
console.log(chalk.gray(` Status: ${status.message}\n`));
|
|
76
|
+
console.log(chalk.blue('You can now clone private block repositories!'));
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
} catch (error) {
|
|
80
|
+
// Continue polling
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Show progress indicator every 10 attempts
|
|
84
|
+
if (attempts % 10 === 0) {
|
|
85
|
+
console.log(chalk.gray(` Still waiting... (${attempts * 2}s)`));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (!connected) {
|
|
90
|
+
console.error(chalk.red('\nā Authentication timeout'));
|
|
91
|
+
console.log(chalk.yellow(' Please try again: mexty github-login'));
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
} catch (error: any) {
|
|
96
|
+
console.error(chalk.red(`ā GitHub login failed: ${error.message}`));
|
|
97
|
+
|
|
98
|
+
if (error.response?.status === 401) {
|
|
99
|
+
console.log(chalk.yellow(' Please login first: mexty login'));
|
|
100
|
+
} else if (error.response?.status === 500) {
|
|
101
|
+
console.log(chalk.yellow(' GitHub OAuth may not be configured on the server'));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
package/src/utils/api.ts
CHANGED
|
@@ -82,7 +82,7 @@ class ApiClient {
|
|
|
82
82
|
private baseUrl: string;
|
|
83
83
|
private tokenPath: string;
|
|
84
84
|
|
|
85
|
-
constructor(baseUrl: string = "https://api.mexty.ai") {
|
|
85
|
+
constructor(baseUrl: string = "https://api.staging.mexty.ai") {
|
|
86
86
|
this.baseUrl = baseUrl;
|
|
87
87
|
this.tokenPath = path.join(os.homedir(), ".mext", "auth.json");
|
|
88
88
|
|
|
@@ -314,22 +314,27 @@ class ApiClient {
|
|
|
314
314
|
|
|
315
315
|
// GitHub OAuth methods
|
|
316
316
|
async getGitHubAuthUrl(): Promise<{ success: boolean; url?: string; message: string }> {
|
|
317
|
-
const response = await this.client.get("
|
|
317
|
+
const response = await this.client.get("/api/auth/github/url");
|
|
318
318
|
return response.data;
|
|
319
319
|
}
|
|
320
320
|
|
|
321
321
|
async getGitHubStatus(): Promise<{ success: boolean; connected: boolean; githubUsername?: string; message: string }> {
|
|
322
|
-
const response = await this.client.get("
|
|
322
|
+
const response = await this.client.get("/api/auth/github/status");
|
|
323
323
|
return response.data;
|
|
324
324
|
}
|
|
325
325
|
|
|
326
326
|
async getGitHubToken(): Promise<{ success: boolean; token?: string; username?: string; expiresAt?: Date; message?: string; expired?: boolean }> {
|
|
327
|
-
const response = await this.client.get("
|
|
327
|
+
const response = await this.client.get("/api/auth/github/token");
|
|
328
328
|
return response.data;
|
|
329
329
|
}
|
|
330
330
|
|
|
331
331
|
async disconnectGitHub(): Promise<{ success: boolean; message: string }> {
|
|
332
|
-
const response = await this.client.post("
|
|
332
|
+
const response = await this.client.post("/api/auth/github/disconnect");
|
|
333
|
+
return response.data;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
async checkGitHubInvitationStatus(blockId: string): Promise<{ success: boolean; accepted: boolean; invitationUrl?: string; githubUsername?: string; message?: string }> {
|
|
337
|
+
const response = await this.client.get(`/api/auth/github/invitation-status/${blockId}`);
|
|
333
338
|
return response.data;
|
|
334
339
|
}
|
|
335
340
|
|