mycontext-cli 1.0.3 โ†’ 1.0.4

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.
@@ -0,0 +1,489 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.SanitizeCommand = void 0;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const path_1 = __importDefault(require("path"));
42
+ const fs = __importStar(require("fs-extra"));
43
+ const glob_1 = require("glob");
44
+ const spinner_1 = require("../utils/spinner");
45
+ class SanitizeCommand {
46
+ constructor() {
47
+ this.spinner = new spinner_1.EnhancedSpinner("Sanitizing project...");
48
+ }
49
+ async execute(target, options) {
50
+ const { fix = false, verbose = false, checkDuplicates = true, checkUnreachable = true, checkRedundancy = true, checkUnused = true, } = options;
51
+ console.log(chalk_1.default.blue.bold("๐Ÿงน Project Sanitization\n"));
52
+ try {
53
+ const projectPath = path_1.default.resolve(target);
54
+ if (!(await this.isValidProject(projectPath))) {
55
+ throw new Error("Not a valid project directory");
56
+ }
57
+ this.spinner.start().updateText("Analyzing project structure...");
58
+ const report = await this.analyzeProject(projectPath, {
59
+ checkDuplicates,
60
+ checkUnreachable,
61
+ checkRedundancy,
62
+ checkUnused,
63
+ verbose,
64
+ });
65
+ this.spinner.succeed("Analysis completed");
66
+ this.displayReport(report, verbose);
67
+ if (fix) {
68
+ await this.fixIssues(report, projectPath);
69
+ }
70
+ else {
71
+ this.showFixSuggestions(report);
72
+ }
73
+ }
74
+ catch (error) {
75
+ this.spinner.fail("Sanitization failed");
76
+ throw error;
77
+ }
78
+ }
79
+ async isValidProject(projectPath) {
80
+ const packageJsonPath = path_1.default.join(projectPath, "package.json");
81
+ return await fs.pathExists(packageJsonPath);
82
+ }
83
+ async analyzeProject(projectPath, options) {
84
+ const report = {
85
+ duplicates: [],
86
+ unreachable: [],
87
+ redundant: [],
88
+ unused: [],
89
+ summary: {
90
+ totalIssues: 0,
91
+ duplicates: 0,
92
+ unreachable: 0,
93
+ redundant: 0,
94
+ unused: 0,
95
+ },
96
+ };
97
+ // Get all relevant files
98
+ const files = await this.getAllFiles(projectPath);
99
+ if (options.checkDuplicates) {
100
+ this.spinner.updateText("Checking for duplicate files...");
101
+ report.duplicates = await this.findDuplicates(files);
102
+ report.summary.duplicates = report.duplicates.length;
103
+ }
104
+ if (options.checkUnreachable) {
105
+ this.spinner.updateText("Checking for unreachable code...");
106
+ report.unreachable = await this.findUnreachableCode(files, projectPath);
107
+ report.summary.unreachable = report.unreachable.length;
108
+ }
109
+ if (options.checkRedundancy) {
110
+ this.spinner.updateText("Checking for redundant files...");
111
+ report.redundant = await this.findRedundantFiles(files, projectPath);
112
+ report.summary.redundant = report.redundant.length;
113
+ }
114
+ if (options.checkUnused) {
115
+ this.spinner.updateText("Checking for unused files...");
116
+ report.unused = await this.findUnusedFiles(files, projectPath);
117
+ report.summary.unused = report.unused.length;
118
+ }
119
+ report.summary.totalIssues =
120
+ report.summary.duplicates +
121
+ report.summary.unreachable +
122
+ report.summary.redundant +
123
+ report.summary.unused;
124
+ return report;
125
+ }
126
+ async getAllFiles(projectPath) {
127
+ const patterns = [
128
+ "**/*.{ts,tsx,js,jsx,json,md}",
129
+ "!node_modules/**",
130
+ "!.git/**",
131
+ "!.next/**",
132
+ "!dist/**",
133
+ "!build/**",
134
+ "!.mycontext/**",
135
+ ];
136
+ const files = [];
137
+ for (const pattern of patterns) {
138
+ const matches = await (0, glob_1.glob)(pattern, { cwd: projectPath });
139
+ files.push(...matches.map((file) => path_1.default.join(projectPath, file)));
140
+ }
141
+ return files;
142
+ }
143
+ async findDuplicates(files) {
144
+ const duplicates = [];
145
+ const fileHashes = new Map();
146
+ for (const file of files) {
147
+ try {
148
+ const content = await fs.readFile(file, "utf-8");
149
+ const hash = this.hashContent(content);
150
+ if (fileHashes.has(hash)) {
151
+ fileHashes.get(hash).push(file);
152
+ }
153
+ else {
154
+ fileHashes.set(hash, [file]);
155
+ }
156
+ }
157
+ catch (error) {
158
+ // Skip files that can't be read
159
+ continue;
160
+ }
161
+ }
162
+ for (const [hash, fileList] of fileHashes) {
163
+ if (fileList.length > 1) {
164
+ const size = (await fs.stat(fileList[0])).size;
165
+ duplicates.push({
166
+ type: "exact",
167
+ files: fileList,
168
+ similarity: 100,
169
+ size,
170
+ });
171
+ }
172
+ }
173
+ return duplicates;
174
+ }
175
+ async findUnreachableCode(files, projectPath) {
176
+ const unreachable = [];
177
+ const importMap = new Map();
178
+ const exportMap = new Map();
179
+ // Build import/export maps
180
+ for (const file of files) {
181
+ if (file.endsWith(".ts") ||
182
+ file.endsWith(".tsx") ||
183
+ file.endsWith(".js") ||
184
+ file.endsWith(".jsx")) {
185
+ try {
186
+ const content = await fs.readFile(file, "utf-8");
187
+ const relativePath = path_1.default.relative(projectPath, file);
188
+ // Find imports
189
+ const imports = this.extractImports(content);
190
+ importMap.set(relativePath, new Set(imports));
191
+ // Find exports
192
+ const exports = this.extractExports(content);
193
+ exportMap.set(relativePath, new Set(exports));
194
+ }
195
+ catch (error) {
196
+ continue;
197
+ }
198
+ }
199
+ }
200
+ // Check for unreachable files
201
+ for (const file of files) {
202
+ const relativePath = path_1.default.relative(projectPath, file);
203
+ // Skip entry points
204
+ if (this.isEntryPoint(relativePath)) {
205
+ continue;
206
+ }
207
+ // Check if file is imported anywhere
208
+ let isImported = false;
209
+ for (const [_, imports] of importMap) {
210
+ if (imports.has(relativePath) ||
211
+ imports.has(relativePath.replace(/\.(ts|tsx|js|jsx)$/, ""))) {
212
+ isImported = true;
213
+ break;
214
+ }
215
+ }
216
+ if (!isImported) {
217
+ unreachable.push({
218
+ file: relativePath,
219
+ reason: "no-imports",
220
+ details: "File is not imported by any other file",
221
+ });
222
+ }
223
+ }
224
+ return unreachable;
225
+ }
226
+ async findRedundantFiles(files, projectPath) {
227
+ const redundant = [];
228
+ const fileNames = new Map();
229
+ // Group files by name
230
+ for (const file of files) {
231
+ const fileName = path_1.default.basename(file);
232
+ if (!fileNames.has(fileName)) {
233
+ fileNames.set(fileName, []);
234
+ }
235
+ fileNames.get(fileName).push(file);
236
+ }
237
+ // Check for files with same name in different locations
238
+ for (const [fileName, fileList] of fileNames) {
239
+ if (fileList.length > 1) {
240
+ for (const file of fileList) {
241
+ redundant.push({
242
+ file: path_1.default.relative(projectPath, file),
243
+ reason: "duplicate-functionality",
244
+ details: `Multiple files with name '${fileName}' found`,
245
+ suggestion: "Consider consolidating or renaming files",
246
+ });
247
+ }
248
+ }
249
+ }
250
+ // Check for common redundant patterns
251
+ for (const file of files) {
252
+ const relativePath = path_1.default.relative(projectPath, file);
253
+ // Check for test files without corresponding source files
254
+ if (file.includes(".test.") || file.includes(".spec.")) {
255
+ const sourceFile = file.replace(/\.(test|spec)\./, ".");
256
+ if (!(await fs.pathExists(sourceFile))) {
257
+ redundant.push({
258
+ file: relativePath,
259
+ reason: "obsolete",
260
+ details: "Test file without corresponding source file",
261
+ suggestion: "Remove test file or create source file",
262
+ });
263
+ }
264
+ }
265
+ // Check for backup files
266
+ if (file.endsWith(".bak") ||
267
+ file.endsWith(".backup") ||
268
+ file.endsWith("~")) {
269
+ redundant.push({
270
+ file: relativePath,
271
+ reason: "obsolete",
272
+ details: "Backup file detected",
273
+ suggestion: "Remove backup file if no longer needed",
274
+ });
275
+ }
276
+ }
277
+ return redundant;
278
+ }
279
+ async findUnusedFiles(files, projectPath) {
280
+ const unused = [];
281
+ const packageJsonPath = path_1.default.join(projectPath, "package.json");
282
+ if (await fs.pathExists(packageJsonPath)) {
283
+ try {
284
+ const packageJson = JSON.parse(await fs.readFile(packageJsonPath, "utf-8"));
285
+ const dependencies = {
286
+ ...(packageJson.dependencies || {}),
287
+ ...(packageJson.devDependencies || {}),
288
+ };
289
+ // Check for unused dependencies
290
+ for (const [depName, _] of Object.entries(dependencies)) {
291
+ const isUsed = await this.isDependencyUsed(depName, files);
292
+ if (!isUsed) {
293
+ unused.push({
294
+ file: `package.json (${depName})`,
295
+ reason: "unused-dependency",
296
+ details: `Dependency '${depName}' is not used in the codebase`,
297
+ });
298
+ }
299
+ }
300
+ }
301
+ catch (error) {
302
+ // Skip if package.json can't be parsed
303
+ }
304
+ }
305
+ return unused;
306
+ }
307
+ hashContent(content) {
308
+ // Simple hash function for content comparison
309
+ let hash = 0;
310
+ for (let i = 0; i < content.length; i++) {
311
+ const char = content.charCodeAt(i);
312
+ hash = (hash << 5) - hash + char;
313
+ hash = hash & hash; // Convert to 32-bit integer
314
+ }
315
+ return hash.toString();
316
+ }
317
+ extractImports(content) {
318
+ const imports = [];
319
+ const importRegex = /import\s+.*?\s+from\s+['"]([^'"]+)['"]/g;
320
+ let match;
321
+ while ((match = importRegex.exec(content)) !== null) {
322
+ imports.push(match[1]);
323
+ }
324
+ return imports;
325
+ }
326
+ extractExports(content) {
327
+ const exports = [];
328
+ // Named exports
329
+ const namedExportRegex = /export\s+(?:const|let|var|function|class|interface|type)\s+(\w+)/g;
330
+ let match;
331
+ while ((match = namedExportRegex.exec(content)) !== null) {
332
+ exports.push(match[1]);
333
+ }
334
+ // Default exports
335
+ const defaultExportRegex = /export\s+default\s+(\w+)/g;
336
+ while ((match = defaultExportRegex.exec(content)) !== null) {
337
+ exports.push(match[1]);
338
+ }
339
+ return exports;
340
+ }
341
+ isEntryPoint(filePath) {
342
+ const entryPoints = [
343
+ "index.ts",
344
+ "index.js",
345
+ "main.ts",
346
+ "main.js",
347
+ "app/page.tsx",
348
+ "pages/index.tsx",
349
+ "pages/_app.tsx",
350
+ "pages/_document.tsx",
351
+ ];
352
+ return entryPoints.some((entry) => filePath.includes(entry));
353
+ }
354
+ async isDependencyUsed(depName, files) {
355
+ for (const file of files) {
356
+ if (file.endsWith(".ts") ||
357
+ file.endsWith(".tsx") ||
358
+ file.endsWith(".js") ||
359
+ file.endsWith(".jsx")) {
360
+ try {
361
+ const content = await fs.readFile(file, "utf-8");
362
+ if (content.includes(depName)) {
363
+ return true;
364
+ }
365
+ }
366
+ catch (error) {
367
+ continue;
368
+ }
369
+ }
370
+ }
371
+ return false;
372
+ }
373
+ displayReport(report, verbose) {
374
+ console.log(chalk_1.default.blue.bold("\n๐Ÿ“Š Sanitization Report\n"));
375
+ console.log(chalk_1.default.yellow("Summary:"));
376
+ console.log(` Total Issues: ${report.summary.totalIssues}`);
377
+ console.log(` Duplicates: ${report.summary.duplicates}`);
378
+ console.log(` Unreachable: ${report.summary.unreachable}`);
379
+ console.log(` Redundant: ${report.summary.redundant}`);
380
+ console.log(` Unused: ${report.summary.unused}\n`);
381
+ if (report.duplicates.length > 0) {
382
+ console.log(chalk_1.default.red.bold("๐Ÿ” Duplicate Files:"));
383
+ for (const duplicate of report.duplicates) {
384
+ console.log(chalk_1.default.red(` ${duplicate.type.toUpperCase()} (${duplicate.similarity}% similar, ${duplicate.size} bytes)`));
385
+ for (const file of duplicate.files) {
386
+ console.log(chalk_1.default.gray(` - ${file}`));
387
+ }
388
+ console.log();
389
+ }
390
+ }
391
+ if (report.unreachable.length > 0) {
392
+ console.log(chalk_1.default.yellow.bold("๐Ÿšซ Unreachable Files:"));
393
+ for (const unreachable of report.unreachable) {
394
+ console.log(chalk_1.default.yellow(` ${unreachable.file}`));
395
+ console.log(chalk_1.default.gray(` Reason: ${unreachable.reason}`));
396
+ console.log(chalk_1.default.gray(` Details: ${unreachable.details}\n`));
397
+ }
398
+ }
399
+ if (report.redundant.length > 0) {
400
+ console.log(chalk_1.default.yellow.bold("๐Ÿ”„ Redundant Files:"));
401
+ for (const redundant of report.redundant) {
402
+ console.log(chalk_1.default.yellow(` ${redundant.file}`));
403
+ console.log(chalk_1.default.gray(` Reason: ${redundant.reason}`));
404
+ console.log(chalk_1.default.gray(` Details: ${redundant.details}`));
405
+ if (redundant.suggestion) {
406
+ console.log(chalk_1.default.cyan(` Suggestion: ${redundant.suggestion}`));
407
+ }
408
+ console.log();
409
+ }
410
+ }
411
+ if (report.unused.length > 0) {
412
+ console.log(chalk_1.default.magenta.bold("๐Ÿ—‘๏ธ Unused Files:"));
413
+ for (const unused of report.unused) {
414
+ console.log(chalk_1.default.magenta(` ${unused.file}`));
415
+ console.log(chalk_1.default.gray(` Reason: ${unused.reason}`));
416
+ console.log(chalk_1.default.gray(` Details: ${unused.details}\n`));
417
+ }
418
+ }
419
+ }
420
+ showFixSuggestions(report) {
421
+ if (report.summary.totalIssues === 0) {
422
+ console.log(chalk_1.default.green.bold("โœ… No issues found! Your project is clean."));
423
+ return;
424
+ }
425
+ console.log(chalk_1.default.blue.bold("\n๐Ÿ”ง Fix Suggestions:"));
426
+ console.log(chalk_1.default.gray("Run with --fix flag to automatically fix issues:"));
427
+ console.log(chalk_1.default.cyan(" mycontext sanitize --fix\n"));
428
+ if (report.duplicates.length > 0) {
429
+ console.log(chalk_1.default.yellow("For duplicate files:"));
430
+ console.log(chalk_1.default.gray(" - Review and consolidate duplicate files"));
431
+ console.log(chalk_1.default.gray(" - Remove unnecessary copies\n"));
432
+ }
433
+ if (report.unreachable.length > 0) {
434
+ console.log(chalk_1.default.yellow("For unreachable files:"));
435
+ console.log(chalk_1.default.gray(" - Remove unused files or add proper imports"));
436
+ console.log(chalk_1.default.gray(" - Check if files should be entry points\n"));
437
+ }
438
+ if (report.redundant.length > 0) {
439
+ console.log(chalk_1.default.yellow("For redundant files:"));
440
+ console.log(chalk_1.default.gray(" - Rename or consolidate files with same names"));
441
+ console.log(chalk_1.default.gray(" - Remove obsolete files\n"));
442
+ }
443
+ if (report.unused.length > 0) {
444
+ console.log(chalk_1.default.yellow("For unused dependencies:"));
445
+ console.log(chalk_1.default.gray(" - Remove unused dependencies from package.json"));
446
+ console.log(chalk_1.default.gray(" - Run 'npm prune' or 'pnpm prune' to clean up\n"));
447
+ }
448
+ }
449
+ async fixIssues(report, projectPath) {
450
+ console.log(chalk_1.default.blue.bold("\n๐Ÿ”ง Fixing Issues...\n"));
451
+ let fixedCount = 0;
452
+ // Fix duplicate files (keep the first one, remove others)
453
+ for (const duplicate of report.duplicates) {
454
+ if (duplicate.files.length > 1) {
455
+ const keepFile = duplicate.files[0];
456
+ const removeFiles = duplicate.files.slice(1);
457
+ for (const file of removeFiles) {
458
+ try {
459
+ await fs.remove(file);
460
+ console.log(chalk_1.default.green(` โœ… Removed duplicate: ${path_1.default.relative(projectPath, file)}`));
461
+ fixedCount++;
462
+ }
463
+ catch (error) {
464
+ console.log(chalk_1.default.red(` โŒ Failed to remove: ${path_1.default.relative(projectPath, file)}`));
465
+ }
466
+ }
467
+ }
468
+ }
469
+ // Fix unused dependencies
470
+ for (const unused of report.unused) {
471
+ if (unused.reason === "unused-dependency") {
472
+ const depName = unused.file.match(/\(([^)]+)\)/)?.[1];
473
+ if (depName) {
474
+ try {
475
+ // This would require modifying package.json
476
+ console.log(chalk_1.default.yellow(` โš ๏ธ Manual fix needed: Remove dependency '${depName}' from package.json`));
477
+ }
478
+ catch (error) {
479
+ console.log(chalk_1.default.red(` โŒ Failed to remove dependency: ${depName}`));
480
+ }
481
+ }
482
+ }
483
+ }
484
+ console.log(chalk_1.default.green.bold(`\nโœ… Fixed ${fixedCount} issues`));
485
+ console.log(chalk_1.default.gray("Some issues may require manual review and fixing."));
486
+ }
487
+ }
488
+ exports.SanitizeCommand = SanitizeCommand;
489
+ //# sourceMappingURL=sanitize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/commands/sanitize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { CommandOptions } from "../types";
2
+ interface DatabaseSetupOptions extends CommandOptions {
3
+ provider?: "instantdb" | "supabase" | "firebase";
4
+ auth?: boolean;
5
+ schema?: boolean;
6
+ components?: boolean;
7
+ skipAuth?: boolean;
8
+ skipSchema?: boolean;
9
+ skipComponents?: boolean;
10
+ }
11
+ export declare class DatabaseSetupCommand {
12
+ private fs;
13
+ private spinner;
14
+ execute(options: DatabaseSetupOptions): Promise<void>;
15
+ private isValidProject;
16
+ private hasContextFiles;
17
+ private setupInstantDB;
18
+ private installInstantDBDependencies;
19
+ private detectPackageManager;
20
+ private initializeInstantDB;
21
+ private createBasicSchema;
22
+ private generateSchemaFromContext;
23
+ private buildEnhancedSchema;
24
+ private extractEntitiesFromTypes;
25
+ private mapTypeToInstant;
26
+ private setupAuthentication;
27
+ private createAuthComponents;
28
+ private generateDatabaseComponents;
29
+ private integrateDatabaseWithComponents;
30
+ private showNextSteps;
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=setup-database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-database.d.ts","sourceRoot":"","sources":["../../src/commands/setup-database.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAO1C,UAAU,oBAAqB,SAAQ,cAAc;IACnD,QAAQ,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,EAAE,CAA2B;IACrC,OAAO,CAAC,OAAO,CAAiD;IAE1D,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;YAyD7C,cAAc;YAUd,eAAe;YAOf,cAAc;YA8Cd,4BAA4B;YAmB5B,oBAAoB;YAOpB,mBAAmB;YAwBnB,iBAAiB;YAsCjB,yBAAyB;YAkBzB,mBAAmB;IAuDjC,OAAO,CAAC,wBAAwB;IAsChC,OAAO,CAAC,gBAAgB;YAaV,mBAAmB;YAqEnB,oBAAoB;YA8MpB,0BAA0B;YAuF1B,+BAA+B;IAc7C,OAAO,CAAC,aAAa;CA0CtB"}