@mexty/cli 1.5.0 → 1.7.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.
Files changed (38) hide show
  1. package/GITHUB_OAUTH_SETUP.md +247 -0
  2. package/dist/commands/github-disconnect.d.ts +2 -0
  3. package/dist/commands/github-disconnect.d.ts.map +1 -0
  4. package/dist/commands/github-disconnect.js +73 -0
  5. package/dist/commands/github-disconnect.js.map +1 -0
  6. package/dist/commands/github-login.d.ts +2 -0
  7. package/dist/commands/github-login.d.ts.map +1 -0
  8. package/dist/commands/github-login.js +100 -0
  9. package/dist/commands/github-login.js.map +1 -0
  10. package/dist/commands/update-git-url.d.ts +2 -0
  11. package/dist/commands/update-git-url.d.ts.map +1 -0
  12. package/dist/commands/update-git-url.js +153 -0
  13. package/dist/commands/update-git-url.js.map +1 -0
  14. package/dist/index.js +43 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/utils/api.d.ts +24 -0
  17. package/dist/utils/api.d.ts.map +1 -1
  18. package/dist/utils/api.js +24 -0
  19. package/dist/utils/api.js.map +1 -1
  20. package/dist/utils/git.d.ts +5 -0
  21. package/dist/utils/git.d.ts.map +1 -1
  22. package/dist/utils/git.js +55 -2
  23. package/dist/utils/git.js.map +1 -1
  24. package/package.json +2 -1
  25. package/src/commands/github-disconnect.ts +80 -0
  26. package/src/commands/github-login.ts +107 -0
  27. package/src/commands/update-git-url.ts +170 -0
  28. package/src/index.ts +47 -0
  29. package/src/utils/api.ts +29 -0
  30. package/src/utils/git.ts +60 -2
  31. package/dist/commands/fork.d.ts +0 -2
  32. package/dist/commands/fork.d.ts.map +0 -1
  33. package/dist/commands/fork.js +0 -57
  34. package/dist/commands/fork.js.map +0 -1
  35. package/dist/commands/sync.d.ts +0 -2
  36. package/dist/commands/sync.d.ts.map +0 -1
  37. package/dist/commands/sync.js +0 -250
  38. package/dist/commands/sync.js.map +0 -1
@@ -1,250 +0,0 @@
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.syncCommand = syncCommand;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const fs_1 = __importDefault(require("fs"));
9
- const path_1 = __importDefault(require("path"));
10
- async function syncCommand() {
11
- try {
12
- console.log(chalk_1.default.blue("šŸ”„ Syncing block registry..."));
13
- // Fetch registry from server
14
- console.log(chalk_1.default.yellow("šŸ“” Fetching registry from server..."));
15
- const response = await fetch("https://api.mexty.ai/api/blocks/registry");
16
- if (!response.ok) {
17
- throw new Error(`Server responded with ${response.status}: ${response.statusText}`);
18
- }
19
- const data = await response.json();
20
- const registry = data.registry;
21
- const authorRegistry = data.authorRegistry;
22
- const meta = data.meta;
23
- console.log(chalk_1.default.green(`āœ… Registry fetched successfully!`));
24
- console.log(chalk_1.default.gray(` Total blocks: ${meta.totalBlocks}`));
25
- console.log(chalk_1.default.gray(` Total components: ${meta.totalComponents}`));
26
- console.log(chalk_1.default.gray(` Total authors: ${meta.totalAuthors || 0}`));
27
- console.log(chalk_1.default.gray(` Last updated: ${meta.lastUpdated}`));
28
- if (Object.keys(registry).length === 0) {
29
- console.log(chalk_1.default.yellow("āš ļø No components found in registry."));
30
- console.log(chalk_1.default.gray(' Make sure you have built some blocks first using "mexty publish"'));
31
- return;
32
- }
33
- // Display available components
34
- console.log(chalk_1.default.blue("\nšŸ“‹ Available components (global namespace):"));
35
- for (const [componentName, entry] of Object.entries(registry)) {
36
- console.log(chalk_1.default.green(` ${componentName}${entry.author ? chalk_1.default.gray(` (by ${entry.author})`) : ""}`));
37
- console.log(chalk_1.default.gray(` Block ID: ${entry.blockId}`));
38
- console.log(chalk_1.default.gray(` Title: ${entry.title}`));
39
- console.log(chalk_1.default.gray(` Description: ${entry.description.substring(0, 60)}${entry.description.length > 60 ? "..." : ""}`));
40
- console.log(chalk_1.default.gray(` Tags: ${entry.tags?.join(", ") || "none"}`));
41
- console.log("");
42
- }
43
- // Display author namespaces
44
- if (Object.keys(authorRegistry).length > 0) {
45
- console.log(chalk_1.default.blue("\nšŸ‘¤ Author namespaces:"));
46
- for (const [author, components] of Object.entries(authorRegistry)) {
47
- console.log(chalk_1.default.cyan(` @${author}:`));
48
- for (const [componentName, entry] of Object.entries(components)) {
49
- console.log(chalk_1.default.green(` ${componentName}`));
50
- console.log(chalk_1.default.gray(` Block ID: ${entry.blockId}`));
51
- console.log(chalk_1.default.gray(` Title: ${entry.title}`));
52
- }
53
- console.log("");
54
- }
55
- }
56
- // Generate named exports file and author entry files
57
- const mextBlockPath = findMextBlockPath();
58
- if (mextBlockPath) {
59
- console.log(chalk_1.default.blue("šŸ”§ Updating mext-block exports..."));
60
- await generateNamedExports(mextBlockPath, registry, authorRegistry);
61
- await generateAuthorEntryFiles(mextBlockPath, authorRegistry);
62
- console.log(chalk_1.default.green(`āœ… Exports updated in ${mextBlockPath}`));
63
- console.log(chalk_1.default.gray(` Generated ${Object.keys(authorRegistry).length} author entry files`));
64
- }
65
- else {
66
- console.log(chalk_1.default.yellow("āš ļø mext-block package not found locally."));
67
- console.log(chalk_1.default.gray(" Named exports file not generated."));
68
- }
69
- console.log(chalk_1.default.green("\nšŸŽ‰ Registry sync completed!"));
70
- }
71
- catch (error) {
72
- console.error(chalk_1.default.red(`āŒ Failed to sync registry: ${error.message}`));
73
- process.exit(1);
74
- }
75
- }
76
- /**
77
- * Find the mext-block package path
78
- */
79
- function findMextBlockPath() {
80
- // Look for mext-block in common locations
81
- const possiblePaths = [
82
- path_1.default.join(process.cwd(), "..", "mext-block"),
83
- path_1.default.join(process.cwd(), "mext-block"),
84
- path_1.default.join(process.cwd(), "..", "..", "mext-block"),
85
- ];
86
- for (const possiblePath of possiblePaths) {
87
- if (fs_1.default.existsSync(path_1.default.join(possiblePath, "package.json"))) {
88
- try {
89
- const packageJson = JSON.parse(fs_1.default.readFileSync(path_1.default.join(possiblePath, "package.json"), "utf8"));
90
- if (packageJson.name === "@mexty/block" ||
91
- packageJson.name === "@mexty/block") {
92
- return possiblePath;
93
- }
94
- }
95
- catch (error) {
96
- // Ignore invalid package.json files
97
- }
98
- }
99
- }
100
- return null;
101
- }
102
- /**
103
- * Generate named exports file for the mext-block package
104
- */
105
- async function generateNamedExports(mextBlockPath, registry, authorRegistry) {
106
- const namedExportsPath = path_1.default.join(mextBlockPath, "src", "namedExports.ts");
107
- // Generate the file content
108
- const content = `// Auto-generated file - DO NOT EDIT MANUALLY
109
- // Generated on: ${new Date().toISOString()}
110
- // Total components: ${Object.keys(registry).length}
111
- // Total authors: ${Object.keys(authorRegistry).length}
112
-
113
- import { createNamedBlock } from './components/NamedBlock';
114
- import { createAuthorBlock } from './components/AuthorBlock';
115
-
116
- // ===== GLOBAL NAMESPACE COMPONENTS =====
117
- ${Object.entries(registry)
118
- .map(([componentName, entry]) => `// ${entry.title}${entry.author ? ` (by ${entry.author})` : ""}
119
- // Block ID: ${entry.blockId}
120
- // Description: ${entry.description}
121
- // Tags: ${entry.tags?.join(", ") || "none"}
122
- export const ${componentName} = createNamedBlock('${componentName}');`)
123
- .join("\n\n")}
124
-
125
- // Export all global components as an object for convenience
126
- export const NamedComponents = {
127
- ${Object.keys(registry)
128
- .map((componentName) => ` ${componentName},`)
129
- .join("\n")}
130
- };
131
-
132
- // Note: Author-specific components are now available via direct imports:
133
- // import { ComponentName } from '@mexty/block/authorname'
134
- // Available authors: ${Object.keys(authorRegistry).join(", ")}
135
-
136
- // Registry metadata
137
- export const registryMetadata = {
138
- totalComponents: ${Object.keys(registry).length},
139
- totalAuthors: ${Object.keys(authorRegistry).length},
140
- lastGenerated: '${new Date().toISOString()}',
141
- components: {
142
- ${Object.entries(registry)
143
- .map(([componentName, entry]) => ` ${componentName}: {
144
- blockId: '${entry.blockId}',
145
- title: '${entry.title}',
146
- description: '${entry.description.replace(/'/g, "\\'")}',
147
- author: '${entry.author || ""}',
148
- tags: [${entry.tags?.map((tag) => `'${tag}'`).join(", ") || ""}],
149
- lastUpdated: '${entry.lastUpdated}'
150
- },`)
151
- .join("\n")}
152
- },
153
- authors: {
154
- ${Object.entries(authorRegistry)
155
- .map(([author, components]) => ` ${author}: {
156
- ${Object.entries(components)
157
- .map(([componentName, entry]) => ` ${componentName}: {
158
- blockId: '${entry.blockId}',
159
- title: '${entry.title}',
160
- description: '${entry.description.replace(/'/g, "\\'")}',
161
- tags: [${entry.tags?.map((tag) => `'${tag}'`).join(", ") || ""}],
162
- lastUpdated: '${entry.lastUpdated}'
163
- },`)
164
- .join("\n")}
165
- },`)
166
- .join("\n")}
167
- }
168
- };
169
- `;
170
- // Ensure directory exists
171
- const srcDir = path_1.default.dirname(namedExportsPath);
172
- if (!fs_1.default.existsSync(srcDir)) {
173
- fs_1.default.mkdirSync(srcDir, { recursive: true });
174
- }
175
- // Write the file
176
- fs_1.default.writeFileSync(namedExportsPath, content, "utf8");
177
- // Update the main index.ts to include these exports
178
- const indexPath = path_1.default.join(mextBlockPath, "src", "index.ts");
179
- if (fs_1.default.existsSync(indexPath)) {
180
- let indexContent = fs_1.default.readFileSync(indexPath, "utf8");
181
- // Add export for named exports if not already present
182
- if (!indexContent.includes("export * from './namedExports'")) {
183
- indexContent +=
184
- "\n// Auto-generated named exports\nexport * from './namedExports';\n";
185
- fs_1.default.writeFileSync(indexPath, indexContent, "utf8");
186
- }
187
- }
188
- }
189
- /**
190
- * Generate author-specific entry files for direct imports
191
- */
192
- async function generateAuthorEntryFiles(mextBlockPath, authorRegistry) {
193
- const authorsDir = path_1.default.join(mextBlockPath, "src", "authors");
194
- // Clean up existing author files
195
- if (fs_1.default.existsSync(authorsDir)) {
196
- fs_1.default.rmSync(authorsDir, { recursive: true, force: true });
197
- }
198
- // Create authors directory
199
- fs_1.default.mkdirSync(authorsDir, { recursive: true });
200
- // Generate an entry file for each author
201
- for (const [author, components] of Object.entries(authorRegistry)) {
202
- const authorDir = path_1.default.join(authorsDir, author);
203
- fs_1.default.mkdirSync(authorDir, { recursive: true });
204
- const authorEntryPath = path_1.default.join(authorDir, "index.ts");
205
- // Generate the author's entry file content
206
- const content = `// Auto-generated author entry file for ${author}
207
- // Generated on: ${new Date().toISOString()}
208
- // Total components: ${Object.keys(components).length}
209
-
210
- import { createAuthorBlock } from '../../components/AuthorBlock';
211
-
212
- ${Object.entries(components)
213
- .map(([componentName, entry]) => `// ${entry.title}
214
- // Block ID: ${entry.blockId}
215
- // Description: ${entry.description}
216
- // Tags: ${entry.tags?.join(", ") || "none"}
217
- export const ${componentName} = createAuthorBlock('${author}', '${componentName}');`)
218
- .join("\n\n")}
219
-
220
- // Export all components as default for convenience
221
- export default {
222
- ${Object.keys(components)
223
- .map((componentName) => ` ${componentName},`)
224
- .join("\n")}
225
- };
226
-
227
- // Author metadata
228
- export const authorMetadata = {
229
- author: '${author}',
230
- totalComponents: ${Object.keys(components).length},
231
- lastGenerated: '${new Date().toISOString()}',
232
- components: {
233
- ${Object.entries(components)
234
- .map(([componentName, entry]) => ` ${componentName}: {
235
- blockId: '${entry.blockId}',
236
- title: '${entry.title}',
237
- description: '${entry.description.replace(/'/g, "\\'")}',
238
- tags: [${entry.tags?.map((tag) => `'${tag}'`).join(", ") || ""}],
239
- lastUpdated: '${entry.lastUpdated}'
240
- },`)
241
- .join("\n")}
242
- }
243
- };
244
- `;
245
- // Write the author entry file
246
- fs_1.default.writeFileSync(authorEntryPath, content, "utf8");
247
- console.log(chalk_1.default.gray(` Created entry file for ${author} (${Object.keys(components).length} components)`));
248
- }
249
- }
250
- //# sourceMappingURL=sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}