@mexty/cli 1.6.0 ā 1.8.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/GITHUB_OAUTH_SETUP.md +247 -0
- package/dist/commands/create.d.ts +9 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +130 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/delete.d.ts +2 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +59 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/github-disconnect.d.ts +2 -0
- package/dist/commands/github-disconnect.d.ts.map +1 -0
- package/dist/commands/github-disconnect.js +73 -0
- package/dist/commands/github-disconnect.js.map +1 -0
- package/dist/commands/github-login.d.ts +2 -0
- package/dist/commands/github-login.d.ts.map +1 -0
- package/dist/commands/github-login.js +100 -0
- package/dist/commands/github-login.js.map +1 -0
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +90 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/publish.d.ts +6 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +176 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/save.d.ts +2 -0
- package/dist/commands/save.d.ts.map +1 -0
- package/dist/commands/save.js +162 -0
- package/dist/commands/save.js.map +1 -0
- package/dist/commands/update-git-url.d.ts +2 -0
- package/dist/commands/update-git-url.d.ts.map +1 -0
- package/dist/commands/update-git-url.js +153 -0
- package/dist/commands/update-git-url.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +119 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/api.d.ts +117 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +202 -0
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/auth.d.ts +4 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +27 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/git.d.ts +47 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +224 -0
- package/dist/utils/git.js.map +1 -0
- package/package.json +2 -1
- package/src/commands/github-disconnect.ts +80 -0
- package/src/commands/github-login.ts +107 -0
- package/src/index.ts +37 -0
- package/src/utils/api.ts +21 -0
- package/src/utils/git.ts +60 -2
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
# GitHub OAuth Setup Guide
|
|
2
|
+
|
|
3
|
+
This guide explains how to set up and use GitHub OAuth authentication in the MEXTY CLI to enable access to private block repositories.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The GitHub OAuth integration allows users to:
|
|
8
|
+
- Clone private block repositories owned by their organization
|
|
9
|
+
- Access blocks they've purchased or have permission to view
|
|
10
|
+
- Seamlessly authenticate without manual token management
|
|
11
|
+
|
|
12
|
+
## Backend Setup
|
|
13
|
+
|
|
14
|
+
### 1. Register a GitHub OAuth App
|
|
15
|
+
|
|
16
|
+
1. Go to https://github.com/settings/developers
|
|
17
|
+
2. Click "New OAuth App"
|
|
18
|
+
3. Fill in the details:
|
|
19
|
+
- **Application name**: MEXTY CLI
|
|
20
|
+
- **Homepage URL**: https://mexty.ai
|
|
21
|
+
- **Authorization callback URL**:
|
|
22
|
+
- Production: `https://api.mexty.ai/api/auth/github/callback`
|
|
23
|
+
- Development: `http://localhost:3001/api/auth/github/callback`
|
|
24
|
+
4. Click "Register application"
|
|
25
|
+
5. Note your **Client ID** and generate a **Client Secret**
|
|
26
|
+
|
|
27
|
+
### 2. Configure Environment Variables
|
|
28
|
+
|
|
29
|
+
Add these to your backend `.env` file:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# GitHub OAuth Configuration
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
For development:
|
|
37
|
+
```bash
|
|
38
|
+
GITHUB_REDIRECT_URI=http://localhost:3001/api/auth/github/callback
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 3. Database Migration
|
|
42
|
+
|
|
43
|
+
The User model has been updated with the following fields:
|
|
44
|
+
- `githubAccessToken` (encrypted, select: false)
|
|
45
|
+
- `githubUsername`
|
|
46
|
+
- `githubId`
|
|
47
|
+
- `githubTokenExpiresAt`
|
|
48
|
+
|
|
49
|
+
No migration script is needed as these fields are optional and will be populated when users connect GitHub.
|
|
50
|
+
|
|
51
|
+
## CLI Setup
|
|
52
|
+
|
|
53
|
+
### 1. Install Dependencies
|
|
54
|
+
|
|
55
|
+
The CLI needs the `open` package to launch the browser for OAuth:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
cd mexty-cli
|
|
59
|
+
npm install open@^8.4.2
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Update `package.json`:
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"dependencies": {
|
|
66
|
+
"open": "^8.4.2"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 2. Build the CLI
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
npm run build
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Usage
|
|
78
|
+
|
|
79
|
+
### Connect GitHub Account
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
mexty github-login
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
This will:
|
|
86
|
+
1. Request an OAuth URL from the backend
|
|
87
|
+
2. Open your browser to GitHub authorization page
|
|
88
|
+
3. Redirect back to the backend after authorization
|
|
89
|
+
4. Store your GitHub access token securely
|
|
90
|
+
5. Poll for connection status and confirm success
|
|
91
|
+
|
|
92
|
+
### Check GitHub Status
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
mexty github-status
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Shows whether GitHub is connected and displays your GitHub username.
|
|
99
|
+
|
|
100
|
+
### Disconnect GitHub
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
mexty github-disconnect
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Removes your GitHub access token from the system.
|
|
107
|
+
|
|
108
|
+
### Clone Private Repositories
|
|
109
|
+
|
|
110
|
+
Once GitHub is connected, the `mexty create` command will automatically use your GitHub token to clone private repositories:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
mexty create "My Private Block"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
The CLI will:
|
|
117
|
+
1. Create the block on the backend
|
|
118
|
+
2. Check if GitHub is connected
|
|
119
|
+
3. Inject your GitHub token into the clone URL
|
|
120
|
+
4. Clone the private repository
|
|
121
|
+
|
|
122
|
+
## API Endpoints
|
|
123
|
+
|
|
124
|
+
### Backend Routes
|
|
125
|
+
|
|
126
|
+
All routes are under `/api/auth`:
|
|
127
|
+
|
|
128
|
+
- `GET /github/url` - Get GitHub OAuth authorization URL (requires auth)
|
|
129
|
+
- `GET /github/callback` - GitHub OAuth callback (public)
|
|
130
|
+
- `GET /github/status` - Check GitHub connection status (requires auth)
|
|
131
|
+
- `GET /github/token` - Get GitHub access token for CLI (requires auth)
|
|
132
|
+
- `POST /github/disconnect` - Disconnect GitHub account (requires auth)
|
|
133
|
+
|
|
134
|
+
### Security Considerations
|
|
135
|
+
|
|
136
|
+
1. **Token Storage**: GitHub tokens are stored in the database with `select: false` to prevent accidental exposure
|
|
137
|
+
2. **State Validation**: OAuth state parameter includes user ID and timestamp to prevent CSRF attacks
|
|
138
|
+
3. **Token Scope**: Requests only `repo` scope for repository access
|
|
139
|
+
4. **Expiration**: Tokens are marked as expiring after 1 year (configurable)
|
|
140
|
+
5. **HTTPS Only**: In production, cookies are secure and HTTPS-only
|
|
141
|
+
|
|
142
|
+
## Error Handling
|
|
143
|
+
|
|
144
|
+
### Common Errors
|
|
145
|
+
|
|
146
|
+
1. **"GitHub not connected"**
|
|
147
|
+
- Solution: Run `mexty github-login`
|
|
148
|
+
|
|
149
|
+
2. **"Authentication required"**
|
|
150
|
+
- Solution: Run `mexty login` first
|
|
151
|
+
|
|
152
|
+
3. **"GitHub OAuth is not configured on the server"**
|
|
153
|
+
- Solution: Admin needs to set up GitHub OAuth app and add credentials to backend
|
|
154
|
+
|
|
155
|
+
4. **"Repository not found"**
|
|
156
|
+
- Could be a private repository - ensure GitHub is connected
|
|
157
|
+
- Could be an incorrect URL
|
|
158
|
+
- User might not have access to the repository
|
|
159
|
+
|
|
160
|
+
## Flow Diagram
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
āāāāāāāāāāā āāāāāāāāāāā āāāāāāāāāāā
|
|
164
|
+
ā CLI ā ā Backend ā ā GitHub ā
|
|
165
|
+
āāāāāā¬āāāāā āāāāāā¬āāāāā āāāāāā¬āāāāā
|
|
166
|
+
ā ā ā
|
|
167
|
+
ā mexty github-login ā ā
|
|
168
|
+
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā> ā
|
|
169
|
+
ā ā ā
|
|
170
|
+
ā GET /api/auth/github/url ā ā
|
|
171
|
+
ā<āāāāāāāāāāāāāāāāāāāāāāāāāāāāā⤠ā
|
|
172
|
+
ā ā ā
|
|
173
|
+
ā Open browser with URL ā ā
|
|
174
|
+
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāā>ā
|
|
175
|
+
ā ā ā
|
|
176
|
+
ā ā GET /callback?code=xxx ā
|
|
177
|
+
ā ā<āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
|
|
178
|
+
ā ā ā
|
|
179
|
+
ā ā POST /oauth/access_token ā
|
|
180
|
+
ā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā>ā
|
|
181
|
+
ā ā ā
|
|
182
|
+
ā ā access_token ā
|
|
183
|
+
ā ā<āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
|
|
184
|
+
ā ā ā
|
|
185
|
+
ā ā Store token in DB ā
|
|
186
|
+
ā ā ā
|
|
187
|
+
ā Poll: GET /api/auth/github/status ā
|
|
188
|
+
ā<āāāāāāāāāāāāāāāāāāāāāāāāāāāāā⤠ā
|
|
189
|
+
ā ā ā
|
|
190
|
+
ā connected: true ā ā
|
|
191
|
+
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā⤠ā
|
|
192
|
+
ā ā ā
|
|
193
|
+
ā ā
Success! ā ā
|
|
194
|
+
ā ā ā
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Development Tips
|
|
198
|
+
|
|
199
|
+
### Testing Locally
|
|
200
|
+
|
|
201
|
+
1. Start backend: `npm run dev`
|
|
202
|
+
2. Use ngrok for callback URL:
|
|
203
|
+
```bash
|
|
204
|
+
ngrok http 3001
|
|
205
|
+
```
|
|
206
|
+
3. Update GitHub OAuth app callback URL to ngrok URL
|
|
207
|
+
4. Set `GITHUB_REDIRECT_URI` in `.env` to ngrok URL
|
|
208
|
+
|
|
209
|
+
### Debugging
|
|
210
|
+
|
|
211
|
+
Enable verbose logging:
|
|
212
|
+
```bash
|
|
213
|
+
DEBUG=* mexty github-login
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Check stored auth data:
|
|
217
|
+
```bash
|
|
218
|
+
cat ~/.mext/auth.json
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Troubleshooting
|
|
222
|
+
|
|
223
|
+
### Token Expired
|
|
224
|
+
If you see "GitHub token expired":
|
|
225
|
+
```bash
|
|
226
|
+
mexty github-disconnect
|
|
227
|
+
mexty github-login
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Browser Not Opening
|
|
231
|
+
If the browser doesn't open automatically, copy the URL from the terminal and paste it into your browser.
|
|
232
|
+
|
|
233
|
+
### Multiple GitHub Accounts
|
|
234
|
+
Each MEXTY user account can connect one GitHub account at a time. To switch:
|
|
235
|
+
```bash
|
|
236
|
+
mexty github-disconnect
|
|
237
|
+
mexty github-login
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Future Enhancements
|
|
241
|
+
|
|
242
|
+
- [ ] Support for GitLab and Bitbucket
|
|
243
|
+
- [ ] Fine-grained token permissions
|
|
244
|
+
- [ ] Token refresh mechanism
|
|
245
|
+
- [ ] Multiple GitHub account support per user
|
|
246
|
+
- [ ] Organization-level GitHub integration
|
|
247
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAOA,UAAU,aAAa;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAwBD,wBAAsB,aAAa,CACjC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA+If"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createCommand = createCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const api_1 = require("../utils/api");
|
|
10
|
+
const git_1 = require("../utils/git");
|
|
11
|
+
const readline_1 = require("readline");
|
|
12
|
+
const auth_1 = require("../utils/auth");
|
|
13
|
+
// Simple prompt function to replace inquirer
|
|
14
|
+
async function prompt(question, defaultValue) {
|
|
15
|
+
return new Promise((resolve) => {
|
|
16
|
+
const rl = (0, readline_1.createInterface)({
|
|
17
|
+
input: process.stdin,
|
|
18
|
+
output: process.stdout,
|
|
19
|
+
});
|
|
20
|
+
const promptText = defaultValue
|
|
21
|
+
? `${question} (${defaultValue}): `
|
|
22
|
+
: `${question}: `;
|
|
23
|
+
rl.question(promptText, (answer) => {
|
|
24
|
+
rl.close();
|
|
25
|
+
resolve(answer.trim() || defaultValue || "");
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
async function createCommand(subcommand, options = {}) {
|
|
30
|
+
try {
|
|
31
|
+
// Check authentication first
|
|
32
|
+
(0, auth_1.requireAuthentication)();
|
|
33
|
+
const user = (0, auth_1.getAuthenticatedUser)();
|
|
34
|
+
// Handle both old and new syntax
|
|
35
|
+
let blockName;
|
|
36
|
+
let blockDescription;
|
|
37
|
+
let blockType;
|
|
38
|
+
if (subcommand === "block") {
|
|
39
|
+
// New syntax: mexty create block --name "..." --description "..." --category "..."
|
|
40
|
+
if (!options.name) {
|
|
41
|
+
console.error(chalk_1.default.red('ā --name is required when using "mexty create block"'));
|
|
42
|
+
console.log(chalk_1.default.yellow(' Usage: mexty create block --name "Block Name" --description "Description" --category "category"'));
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
blockName = options.name;
|
|
46
|
+
blockDescription = options.description || `Custom block: ${blockName}`;
|
|
47
|
+
blockType = options.category || options.type || "custom";
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Old syntax: mexty create "Block Name" --description "..." --type "..."
|
|
51
|
+
if (!subcommand) {
|
|
52
|
+
console.error(chalk_1.default.red("ā Block name is required"));
|
|
53
|
+
console.log(chalk_1.default.yellow(' Usage: mexty create "Block Name" [options]'));
|
|
54
|
+
console.log(chalk_1.default.yellow(' Or: mexty create block --name "Block Name" [options]'));
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
blockName = subcommand;
|
|
58
|
+
blockDescription = options.description || `Custom block: ${blockName}`;
|
|
59
|
+
blockType = options.type || "custom";
|
|
60
|
+
}
|
|
61
|
+
console.log(chalk_1.default.blue(`š Creating new block: ${blockName}`));
|
|
62
|
+
console.log(chalk_1.default.gray(` User: ${user?.fullName || user?.email || "Unknown"}`));
|
|
63
|
+
console.log(chalk_1.default.gray(` Category: ${blockType}`));
|
|
64
|
+
// Prepare block data
|
|
65
|
+
const blockData = {
|
|
66
|
+
blockType: blockType,
|
|
67
|
+
title: blockName,
|
|
68
|
+
description: blockDescription,
|
|
69
|
+
allowedBrickTypes: ["text", "image", "video", "code", "quiz"], // Default allowed types
|
|
70
|
+
scope: ["user-store"], // Default scope for CLI-created blocks
|
|
71
|
+
content: [],
|
|
72
|
+
};
|
|
73
|
+
console.log(chalk_1.default.yellow("š” Creating block on server..."));
|
|
74
|
+
// Create the block
|
|
75
|
+
const block = await api_1.apiClient.createBlock(blockData);
|
|
76
|
+
console.log(chalk_1.default.green(`ā
Block created successfully!`));
|
|
77
|
+
console.log(chalk_1.default.gray(` Block ID: ${block.id || block._id}`));
|
|
78
|
+
console.log(chalk_1.default.gray(` Block Type: ${block.blockType || block._doc?.blockType}`));
|
|
79
|
+
// Add the block to user's structure
|
|
80
|
+
console.log(chalk_1.default.yellow("š Adding block to your library..."));
|
|
81
|
+
try {
|
|
82
|
+
await api_1.apiClient.addBlockToStructure(block.id || block._id);
|
|
83
|
+
console.log(chalk_1.default.green(`ā
Block added to your library!`));
|
|
84
|
+
}
|
|
85
|
+
catch (structureError) {
|
|
86
|
+
console.warn(chalk_1.default.yellow(`ā ļø Block created but couldn't add to library: ${structureError.message}`));
|
|
87
|
+
console.log(chalk_1.default.gray(" The block is still accessible via the API"));
|
|
88
|
+
}
|
|
89
|
+
// Handle both plain objects and Mongoose documents
|
|
90
|
+
const gitUrl = block.gitUrl || block._doc?.gitUrl;
|
|
91
|
+
if (gitUrl) {
|
|
92
|
+
console.log(chalk_1.default.gray(` GitHub URL: ${gitUrl}`));
|
|
93
|
+
// Clone the repository
|
|
94
|
+
const repoName = git_1.GitManager.extractRepoName(gitUrl);
|
|
95
|
+
const targetDir = path_1.default.join(process.cwd(), repoName);
|
|
96
|
+
console.log(chalk_1.default.yellow(`š¦ Cloning repository to ./${repoName}...`));
|
|
97
|
+
try {
|
|
98
|
+
const gitManager = new git_1.GitManager();
|
|
99
|
+
await gitManager.cloneRepository(gitUrl, targetDir);
|
|
100
|
+
console.log(chalk_1.default.green(`š Block created and repository cloned successfully!`));
|
|
101
|
+
console.log(chalk_1.default.blue(`\nNext steps:`));
|
|
102
|
+
console.log(chalk_1.default.gray(` 1. cd ${repoName}`));
|
|
103
|
+
console.log(chalk_1.default.gray(` 2. Make your changes`));
|
|
104
|
+
console.log(chalk_1.default.gray(` 3. mexty save`));
|
|
105
|
+
// Change to the cloned directory
|
|
106
|
+
try {
|
|
107
|
+
process.chdir(targetDir);
|
|
108
|
+
console.log(chalk_1.default.green(`š Changed to directory: ${repoName}`));
|
|
109
|
+
}
|
|
110
|
+
catch (chdirError) {
|
|
111
|
+
console.warn(chalk_1.default.yellow(`ā ļø Could not change to directory: ${chdirError.message}`));
|
|
112
|
+
console.log(chalk_1.default.gray(` Please manually run: cd ${repoName}`));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (cloneError) {
|
|
116
|
+
console.error(chalk_1.default.red(`ā Failed to clone repository: ${cloneError.message}`));
|
|
117
|
+
console.log(chalk_1.default.yellow(`You can manually clone it later:`));
|
|
118
|
+
console.log(chalk_1.default.gray(` git clone ${gitUrl}`));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.log(chalk_1.default.yellow("ā ļø No GitHub repository was created (GitHub not configured)"));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
console.error(chalk_1.default.red(`ā Failed to create block: ${error.message}`));
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":";;;;;AAoCA,sCAkJC;AAtLD,kDAA0B;AAC1B,gDAAwB;AACxB,sCAA6D;AAC7D,sCAA0C;AAC1C,uCAA2C;AAC3C,wCAA4E;AAS5E,6CAA6C;AAC7C,KAAK,UAAU,MAAM,CACnB,QAAgB,EAChB,YAAqB;IAErB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,YAAY;YAC7B,CAAC,CAAC,GAAG,QAAQ,KAAK,YAAY,KAAK;YACnC,CAAC,CAAC,GAAG,QAAQ,IAAI,CAAC;QAEpB,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;YACjC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,UAAmB,EACnB,UAAyB,EAAE;IAE3B,IAAI,CAAC;QACH,6BAA6B;QAC7B,IAAA,4BAAqB,GAAE,CAAC;QAExB,MAAM,IAAI,GAAG,IAAA,2BAAoB,GAAE,CAAC;QAEpC,iCAAiC;QACjC,IAAI,SAAiB,CAAC;QACtB,IAAI,gBAAwB,CAAC;QAC7B,IAAI,SAAiB,CAAC;QAEtB,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YAC3B,mFAAmF;YACnF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAClE,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV,oGAAoG,CACrG,CACF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YACzB,gBAAgB,GAAG,OAAO,CAAC,WAAW,IAAI,iBAAiB,SAAS,EAAE,CAAC;YACvE,SAAS,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,yEAAyE;YACzE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAC9D,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV,yDAAyD,CAC1D,CACF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,SAAS,GAAG,UAAU,CAAC;YACvB,gBAAgB,GAAG,OAAO,CAAC,WAAW,IAAI,iBAAiB,SAAS,EAAE,CAAC;YACvE,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC;QACvC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,QAAQ,IAAI,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC,CACrE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC,CAAC;QAErD,qBAAqB;QACrB,MAAM,SAAS,GAAuB;YACpC,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,gBAAgB;YAC7B,iBAAiB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,wBAAwB;YACvF,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,uCAAuC;YAC9D,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAE5D,mBAAmB;QACnB,MAAM,KAAK,GAAG,MAAM,eAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAErD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CACzE,CAAC;QAEF,oCAAoC;QACpC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,MAAM,eAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,cAAmB,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CACV,eAAK,CAAC,MAAM,CACV,kDAAkD,cAAc,CAAC,OAAO,EAAE,CAC3E,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,mDAAmD;QACnD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;QAClD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC,CAAC;YAEpD,uBAAuB;YACvB,MAAM,QAAQ,GAAG,gBAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;YAErD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8BAA8B,QAAQ,KAAK,CAAC,CAAC,CAAC;YAEvE,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,gBAAU,EAAE,CAAC;gBACpC,MAAM,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAEpD,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,KAAK,CAAC,sDAAsD,CAAC,CACpE,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAE3C,iCAAiC;gBACjC,IAAI,CAAC;oBACH,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACnE,CAAC;gBAAC,OAAO,UAAe,EAAE,CAAC;oBACzB,OAAO,CAAC,IAAI,CACV,eAAK,CAAC,MAAM,CACV,sCAAsC,UAAU,CAAC,OAAO,EAAE,CAC3D,CACF,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YAAC,OAAO,UAAe,EAAE,CAAC;gBACzB,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CAAC,iCAAiC,UAAU,CAAC,OAAO,EAAE,CAAC,CACjE,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV,8DAA8D,CAC/D,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"AAoBA,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ClE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.deleteCommand = deleteCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const api_1 = require("../utils/api");
|
|
9
|
+
const readline_1 = require("readline");
|
|
10
|
+
const auth_1 = require("../utils/auth");
|
|
11
|
+
// Simple confirmation function
|
|
12
|
+
async function confirm(question) {
|
|
13
|
+
return new Promise((resolve) => {
|
|
14
|
+
const rl = (0, readline_1.createInterface)({
|
|
15
|
+
input: process.stdin,
|
|
16
|
+
output: process.stdout
|
|
17
|
+
});
|
|
18
|
+
rl.question(`${question} (y/N): `, (answer) => {
|
|
19
|
+
rl.close();
|
|
20
|
+
resolve(answer.toLowerCase().trim() === 'y' || answer.toLowerCase().trim() === 'yes');
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async function deleteCommand(blockId) {
|
|
25
|
+
try {
|
|
26
|
+
// Check authentication first
|
|
27
|
+
(0, auth_1.requireAuthentication)();
|
|
28
|
+
const user = (0, auth_1.getAuthenticatedUser)();
|
|
29
|
+
console.log(chalk_1.default.blue(`šļø Deleting block: ${blockId}`));
|
|
30
|
+
console.log(chalk_1.default.gray(` User: ${user?.fullName || user?.email || 'Unknown'}`));
|
|
31
|
+
// Get block info first
|
|
32
|
+
console.log(chalk_1.default.yellow('š” Fetching block information...'));
|
|
33
|
+
const block = await api_1.apiClient.getBlock(blockId);
|
|
34
|
+
console.log(chalk_1.default.gray(` Title: ${block.title}`));
|
|
35
|
+
console.log(chalk_1.default.gray(` Description: ${block.description}`));
|
|
36
|
+
if (block.gitUrl) {
|
|
37
|
+
console.log(chalk_1.default.gray(` GitHub URL: ${block.gitUrl}`));
|
|
38
|
+
}
|
|
39
|
+
// Confirm deletion
|
|
40
|
+
const confirmed = await confirm(chalk_1.default.red('Are you sure you want to delete this block? This action cannot be undone.'));
|
|
41
|
+
if (!confirmed) {
|
|
42
|
+
console.log(chalk_1.default.yellow('š« Deletion cancelled.'));
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
// Delete the block
|
|
46
|
+
console.log(chalk_1.default.yellow('š” Deleting block on server...'));
|
|
47
|
+
await api_1.apiClient.deleteBlock(blockId);
|
|
48
|
+
console.log(chalk_1.default.green(`ā
Block deleted successfully!`));
|
|
49
|
+
if (block.gitUrl) {
|
|
50
|
+
console.log(chalk_1.default.yellow('ā ļø Note: The GitHub repository still exists and needs to be deleted manually if desired.'));
|
|
51
|
+
console.log(chalk_1.default.gray(` Repository: ${block.gitUrl}`));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error(chalk_1.default.red(`ā Failed to delete block: ${error.message}`));
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-disconnect.d.ts","sourceRoot":"","sources":["../../src/commands/github-disconnect.ts"],"names":[],"mappings":"AAoBA,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0D7D"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.githubDisconnectCommand = githubDisconnectCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const readline_1 = require("readline");
|
|
9
|
+
const api_1 = require("../utils/api");
|
|
10
|
+
const auth_1 = require("../utils/auth");
|
|
11
|
+
// Simple prompt function
|
|
12
|
+
async function prompt(question) {
|
|
13
|
+
return new Promise((resolve) => {
|
|
14
|
+
const rl = (0, readline_1.createInterface)({
|
|
15
|
+
input: process.stdin,
|
|
16
|
+
output: process.stdout
|
|
17
|
+
});
|
|
18
|
+
rl.question(question, (answer) => {
|
|
19
|
+
rl.close();
|
|
20
|
+
resolve(answer.trim());
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async function githubDisconnectCommand() {
|
|
25
|
+
try {
|
|
26
|
+
// Check authentication first
|
|
27
|
+
(0, auth_1.requireAuthentication)();
|
|
28
|
+
console.log(chalk_1.default.blue('š Disconnect GitHub Account'));
|
|
29
|
+
console.log(chalk_1.default.gray(' Remove GitHub access from your MEXTY account\n'));
|
|
30
|
+
// Check if connected
|
|
31
|
+
try {
|
|
32
|
+
const status = await api_1.apiClient.getGitHubStatus();
|
|
33
|
+
if (!status.connected) {
|
|
34
|
+
console.log(chalk_1.default.yellow('ā¹ļø GitHub is not connected'));
|
|
35
|
+
console.log(chalk_1.default.gray(' Nothing to disconnect\n'));
|
|
36
|
+
console.log(chalk_1.default.blue('To connect GitHub, run: mexty github-login'));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
console.log(chalk_1.default.yellow('ā ļø Current GitHub connection:'));
|
|
40
|
+
console.log(chalk_1.default.gray(` Username: ${status.githubUsername}\n`));
|
|
41
|
+
// Confirm disconnection
|
|
42
|
+
const confirm = await prompt('Are you sure you want to disconnect GitHub? (y/N): ');
|
|
43
|
+
if (confirm.toLowerCase() !== 'y' && confirm.toLowerCase() !== 'yes') {
|
|
44
|
+
console.log(chalk_1.default.gray('Cancelled'));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
console.log(chalk_1.default.yellow('\nš Disconnecting GitHub...'));
|
|
48
|
+
// Disconnect
|
|
49
|
+
const result = await api_1.apiClient.disconnectGitHub();
|
|
50
|
+
if (result.success) {
|
|
51
|
+
console.log(chalk_1.default.green(`\nā
${result.message}`));
|
|
52
|
+
console.log(chalk_1.default.gray(' You will no longer be able to clone private repositories'));
|
|
53
|
+
console.log(chalk_1.default.blue('\nTo reconnect, run: mexty github-login'));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.error(chalk_1.default.red(`\nā ${result.message}`));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.error(chalk_1.default.red(`ā Failed to disconnect GitHub: ${error.message}`));
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error(chalk_1.default.red(`ā GitHub disconnect failed: ${error.message}`));
|
|
67
|
+
if (error.response?.status === 401) {
|
|
68
|
+
console.log(chalk_1.default.yellow(' Please login first: mexty login'));
|
|
69
|
+
}
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=github-disconnect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-disconnect.js","sourceRoot":"","sources":["../../src/commands/github-disconnect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-login.d.ts","sourceRoot":"","sources":["../../src/commands/github-login.ts"],"names":[],"mappings":"AASA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgGxD"}
|