aliasmate 1.0.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.
Files changed (77) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/README.md +126 -2
  3. package/dist/cli.js +52 -15
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/delete.d.ts +12 -0
  6. package/dist/commands/delete.d.ts.map +1 -1
  7. package/dist/commands/delete.js +29 -8
  8. package/dist/commands/delete.js.map +1 -1
  9. package/dist/commands/edit.d.ts +13 -0
  10. package/dist/commands/edit.d.ts.map +1 -1
  11. package/dist/commands/edit.js +50 -23
  12. package/dist/commands/edit.js.map +1 -1
  13. package/dist/commands/export.d.ts +17 -0
  14. package/dist/commands/export.d.ts.map +1 -1
  15. package/dist/commands/export.js +42 -7
  16. package/dist/commands/export.js.map +1 -1
  17. package/dist/commands/import.d.ts +21 -0
  18. package/dist/commands/import.d.ts.map +1 -1
  19. package/dist/commands/import.js +93 -48
  20. package/dist/commands/import.js.map +1 -1
  21. package/dist/commands/list.d.ts +20 -0
  22. package/dist/commands/list.d.ts.map +1 -1
  23. package/dist/commands/list.js +66 -5
  24. package/dist/commands/list.js.map +1 -1
  25. package/dist/commands/prev.d.ts +14 -1
  26. package/dist/commands/prev.d.ts.map +1 -1
  27. package/dist/commands/prev.js +41 -13
  28. package/dist/commands/prev.js.map +1 -1
  29. package/dist/commands/run.d.ts +16 -1
  30. package/dist/commands/run.d.ts.map +1 -1
  31. package/dist/commands/run.js +30 -10
  32. package/dist/commands/run.js.map +1 -1
  33. package/dist/commands/save.d.ts +15 -1
  34. package/dist/commands/save.d.ts.map +1 -1
  35. package/dist/commands/save.js +64 -33
  36. package/dist/commands/save.js.map +1 -1
  37. package/dist/commands/search.d.ts +19 -0
  38. package/dist/commands/search.d.ts.map +1 -0
  39. package/dist/commands/search.js +113 -0
  40. package/dist/commands/search.js.map +1 -0
  41. package/dist/storage/index.d.ts +34 -7
  42. package/dist/storage/index.d.ts.map +1 -1
  43. package/dist/storage/index.js +55 -11
  44. package/dist/storage/index.js.map +1 -1
  45. package/dist/utils/constants.d.ts +48 -0
  46. package/dist/utils/constants.d.ts.map +1 -0
  47. package/dist/utils/constants.js +51 -0
  48. package/dist/utils/constants.js.map +1 -0
  49. package/dist/utils/errors.d.ts +30 -0
  50. package/dist/utils/errors.d.ts.map +1 -0
  51. package/dist/utils/errors.js +62 -0
  52. package/dist/utils/errors.js.map +1 -0
  53. package/dist/utils/executor.d.ts +22 -1
  54. package/dist/utils/executor.d.ts.map +1 -1
  55. package/dist/utils/executor.js +36 -11
  56. package/dist/utils/executor.js.map +1 -1
  57. package/dist/utils/history.d.ts +21 -3
  58. package/dist/utils/history.d.ts.map +1 -1
  59. package/dist/utils/history.js +28 -14
  60. package/dist/utils/history.js.map +1 -1
  61. package/dist/utils/llm-generator.d.ts +21 -0
  62. package/dist/utils/llm-generator.d.ts.map +1 -0
  63. package/dist/utils/llm-generator.js +337 -0
  64. package/dist/utils/llm-generator.js.map +1 -0
  65. package/dist/utils/onboarding.d.ts +10 -0
  66. package/dist/utils/onboarding.d.ts.map +1 -0
  67. package/dist/utils/onboarding.js +201 -0
  68. package/dist/utils/onboarding.js.map +1 -0
  69. package/dist/utils/paths.d.ts +39 -1
  70. package/dist/utils/paths.d.ts.map +1 -1
  71. package/dist/utils/paths.js +56 -1
  72. package/dist/utils/paths.js.map +1 -1
  73. package/dist/utils/prompts.d.ts +56 -0
  74. package/dist/utils/prompts.d.ts.map +1 -0
  75. package/dist/utils/prompts.js +51 -0
  76. package/dist/utils/prompts.js.map +1 -0
  77. package/package.json +22 -6
@@ -1,2 +1,19 @@
1
+ /**
2
+ * Export all saved commands to a JSON file
3
+ *
4
+ * Creates a portable backup of all commands with metadata, suitable for:
5
+ * - Sharing with team members
6
+ * - Backing up your command library
7
+ * - Migrating between machines
8
+ *
9
+ * @param filePath - The path where the export file should be created
10
+ *
11
+ * @example
12
+ * ```
13
+ * // Export to a file
14
+ * exportCommand('./my-commands.json');
15
+ * // Output: ✓ Exported 15 command(s) to /path/to/my-commands.json
16
+ * ```
17
+ */
1
18
  export declare function exportCommand(filePath: string): void;
2
19
  //# sourceMappingURL=export.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CA+BpD"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAyDpD"}
@@ -41,34 +41,69 @@ const fs = __importStar(require("fs"));
41
41
  const path = __importStar(require("path"));
42
42
  const chalk_1 = __importDefault(require("chalk"));
43
43
  const storage_1 = require("../storage");
44
+ const errors_1 = require("../utils/errors");
45
+ const constants_1 = require("../utils/constants");
46
+ /**
47
+ * Export all saved commands to a JSON file
48
+ *
49
+ * Creates a portable backup of all commands with metadata, suitable for:
50
+ * - Sharing with team members
51
+ * - Backing up your command library
52
+ * - Migrating between machines
53
+ *
54
+ * @param filePath - The path where the export file should be created
55
+ *
56
+ * @example
57
+ * ```
58
+ * // Export to a file
59
+ * exportCommand('./my-commands.json');
60
+ * // Output: ✓ Exported 15 command(s) to /path/to/my-commands.json
61
+ * ```
62
+ */
44
63
  function exportCommand(filePath) {
45
64
  try {
65
+ // Validate file path
66
+ if (!filePath || !filePath.trim()) {
67
+ (0, errors_1.exitWithError)('File path cannot be empty', errors_1.ExitCode.InvalidInput);
68
+ }
46
69
  const aliases = (0, storage_1.loadAliases)();
47
70
  const names = Object.keys(aliases);
48
71
  if (names.length === 0) {
49
- console.log(chalk_1.default.yellow('No saved commands to export.'));
72
+ console.log(chalk_1.default.yellow(constants_1.HELP_MESSAGES.noCommands));
50
73
  return;
51
74
  }
52
75
  // Resolve the file path
53
76
  const resolvedPath = path.resolve(filePath);
77
+ // Check if file already exists and warn user
78
+ if (fs.existsSync(resolvedPath)) {
79
+ console.log(chalk_1.default.yellow(`Warning: File already exists and will be overwritten: ${resolvedPath}`));
80
+ }
81
+ // Ensure directory exists
82
+ const dirPath = path.dirname(resolvedPath);
83
+ if (!fs.existsSync(dirPath)) {
84
+ try {
85
+ fs.mkdirSync(dirPath, { recursive: true });
86
+ }
87
+ catch (mkdirError) {
88
+ (0, errors_1.exitWithError)(`Could not create directory: ${mkdirError.message}`, errors_1.ExitCode.PermissionDenied);
89
+ }
90
+ }
54
91
  // Export as JSON
55
92
  const exportData = {
56
93
  exportedAt: new Date().toISOString(),
57
94
  version: '1.0',
58
- aliases: aliases
95
+ aliases: aliases,
59
96
  };
60
97
  try {
61
98
  fs.writeFileSync(resolvedPath, JSON.stringify(exportData, null, 2), 'utf8');
62
- console.log(chalk_1.default.green(`✓ Exported ${names.length} command(s) to ${resolvedPath}`));
99
+ console.log(chalk_1.default.green(`✓ ${constants_1.SUCCESS_MESSAGES.exported(names.length, resolvedPath)}`));
63
100
  }
64
101
  catch (writeError) {
65
- console.error(chalk_1.default.red('Error: Could not write to file'), writeError.message);
66
- process.exit(1);
102
+ (0, errors_1.exitWithError)(`${constants_1.ERROR_MESSAGES.couldNotWrite}: ${writeError.message}`, errors_1.ExitCode.PermissionDenied);
67
103
  }
68
104
  }
69
105
  catch (error) {
70
- console.error(chalk_1.default.red('Error:'), error.message);
71
- process.exit(1);
106
+ (0, errors_1.handleError)(error, 'Failed to export commands');
72
107
  }
73
108
  }
74
109
  //# sourceMappingURL=export.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,sCA+BC;AApCD,uCAAyB;AACzB,2CAA6B;AAC7B,kDAA0B;AAC1B,wCAAyC;AAEzC,SAAgB,aAAa,CAAC,QAAgB;IAC5C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,qBAAW,GAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5C,iBAAiB;QACjB,MAAM,UAAU,GAAG;YACjB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,OAAO;SACjB,CAAC;QAEF,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,MAAM,kBAAkB,YAAY,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAG,UAAoB,CAAC,OAAO,CAAC,CAAC;YAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,sCAyDC;AAjFD,uCAAyB;AACzB,2CAA6B;AAC7B,kDAA0B;AAC1B,wCAAyC;AACzC,4CAAuE;AACvE,kDAAqF;AAErF;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,aAAa,CAAC,QAAgB;IAC5C,IAAI,CAAC;QACH,qBAAqB;QACrB,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAClC,IAAA,sBAAa,EAAC,2BAA2B,EAAE,iBAAQ,CAAC,YAAY,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,qBAAW,GAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,yBAAa,CAAC,UAAU,CAAC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5C,6CAA6C;QAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CAAC,yDAAyD,YAAY,EAAE,CAAC,CACtF,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAA,sBAAa,EACX,+BAAgC,UAAoB,CAAC,OAAO,EAAE,EAC9D,iBAAQ,CAAC,gBAAgB,CAC1B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,MAAM,UAAU,GAAG;YACjB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,OAAO;SACjB,CAAC;QAEF,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,KAAK,4BAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACpB,IAAA,sBAAa,EACX,GAAG,0BAAc,CAAC,aAAa,KAAM,UAAoB,CAAC,OAAO,EAAE,EACnE,iBAAQ,CAAC,gBAAgB,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,oBAAW,EAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
@@ -1,2 +1,23 @@
1
+ /**
2
+ * Import commands from a JSON file
3
+ *
4
+ * Handles conflicts intelligently by prompting the user for each conflict:
5
+ * - Overwrite: Replace existing command with imported one
6
+ * - Skip: Keep existing command, discard imported one
7
+ * - Rename: Save imported command with a different name
8
+ *
9
+ * @param filePath - The path to the JSON file to import from
10
+ *
11
+ * @example
12
+ * ```
13
+ * // Import commands from a file
14
+ * await importCommand('./team-commands.json');
15
+ *
16
+ * // If conflicts are found, user is prompted:
17
+ * // - Overwrite existing
18
+ * // - Skip this command
19
+ * // - Rename imported command
20
+ * ```
21
+ */
1
22
  export declare function importCommand(filePath: string): Promise<void>;
2
23
  //# sourceMappingURL=import.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAYA,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2JnE"}
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuLnE"}
@@ -39,17 +39,39 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.importCommand = importCommand;
40
40
  const fs = __importStar(require("fs"));
41
41
  const path = __importStar(require("path"));
42
- const inquirer_1 = __importDefault(require("inquirer"));
43
42
  const chalk_1 = __importDefault(require("chalk"));
44
43
  const storage_1 = require("../storage");
44
+ const errors_1 = require("../utils/errors");
45
+ const constants_1 = require("../utils/constants");
46
+ const prompts_1 = require("../utils/prompts");
47
+ /**
48
+ * Import commands from a JSON file
49
+ *
50
+ * Handles conflicts intelligently by prompting the user for each conflict:
51
+ * - Overwrite: Replace existing command with imported one
52
+ * - Skip: Keep existing command, discard imported one
53
+ * - Rename: Save imported command with a different name
54
+ *
55
+ * @param filePath - The path to the JSON file to import from
56
+ *
57
+ * @example
58
+ * ```
59
+ * // Import commands from a file
60
+ * await importCommand('./team-commands.json');
61
+ *
62
+ * // If conflicts are found, user is prompted:
63
+ * // - Overwrite existing
64
+ * // - Skip this command
65
+ * // - Rename imported command
66
+ * ```
67
+ */
45
68
  async function importCommand(filePath) {
46
69
  try {
47
70
  // Resolve the file path
48
71
  const resolvedPath = path.resolve(filePath);
49
72
  // Check if file exists
50
73
  if (!fs.existsSync(resolvedPath)) {
51
- console.error(chalk_1.default.red(`Error: File not found: ${resolvedPath}`));
52
- process.exit(1);
74
+ (0, errors_1.exitWithError)(constants_1.ERROR_MESSAGES.fileNotFound(resolvedPath), errors_1.ExitCode.FileNotFound);
53
75
  }
54
76
  // Read and parse the file
55
77
  let importData;
@@ -58,24 +80,46 @@ async function importCommand(filePath) {
58
80
  importData = JSON.parse(fileContent);
59
81
  }
60
82
  catch (parseError) {
61
- console.error(chalk_1.default.red('Error: Could not parse file. Make sure it is valid JSON.'));
83
+ console.error(chalk_1.default.red(`Error: ${constants_1.ERROR_MESSAGES.invalidJson}`));
62
84
  console.error(parseError.message);
63
- process.exit(1);
85
+ process.exit(errors_1.ExitCode.InvalidInput);
64
86
  }
65
87
  // Validate the import data structure
66
88
  if (!importData.aliases || typeof importData.aliases !== 'object') {
67
- console.error(chalk_1.default.red('Error: Invalid file format. Expected an "aliases" object.'));
68
- process.exit(1);
89
+ (0, errors_1.exitWithError)(constants_1.ERROR_MESSAGES.invalidFormat, errors_1.ExitCode.InvalidInput);
69
90
  }
70
91
  const importAliases = importData.aliases;
71
92
  const importNames = Object.keys(importAliases);
93
+ // Validate each alias structure
94
+ for (const name of importNames) {
95
+ const alias = importAliases[name];
96
+ if (!alias ||
97
+ typeof alias !== 'object' ||
98
+ typeof alias.command !== 'string' ||
99
+ typeof alias.directory !== 'string' ||
100
+ !alias.command.trim() ||
101
+ !alias.directory.trim()) {
102
+ (0, errors_1.exitWithError)(constants_1.ERROR_MESSAGES.invalidAliasStructure(name), errors_1.ExitCode.InvalidInput);
103
+ }
104
+ }
72
105
  if (importNames.length === 0) {
73
- console.log(chalk_1.default.yellow('No commands found in file.'));
106
+ console.log(chalk_1.default.yellow(constants_1.HELP_MESSAGES.noCommands));
74
107
  return;
75
108
  }
76
109
  console.log(chalk_1.default.blue(`Found ${importNames.length} command(s) to import\n`));
77
- // Load existing aliases
110
+ // Create backup of existing config before importing
78
111
  const existingAliases = (0, storage_1.loadAliases)();
112
+ if (Object.keys(existingAliases).length > 0) {
113
+ const configPath = (0, storage_1.getConfigPath)();
114
+ const backupPath = `${configPath}.backup.${Date.now()}`;
115
+ try {
116
+ fs.copyFileSync(configPath, backupPath);
117
+ console.log(chalk_1.default.gray(`Backup created: ${backupPath}\n`));
118
+ }
119
+ catch (backupError) {
120
+ console.warn(chalk_1.default.yellow(`Warning: Could not create backup: ${backupError.message}`));
121
+ }
122
+ }
79
123
  const conflicts = [];
80
124
  const newAliases = [];
81
125
  // Check for conflicts
@@ -96,40 +140,43 @@ async function importCommand(filePath) {
96
140
  console.log(chalk_1.default.gray(` ${existingAliases[name].command}`));
97
141
  console.log(chalk_1.default.gray(`Importing: ${name}`));
98
142
  console.log(chalk_1.default.gray(` ${importAliases[name].command}\n`));
99
- const { action } = await inquirer_1.default.prompt([
100
- {
101
- type: 'list',
102
- name: 'action',
103
- message: `What should we do with "${name}"?`,
104
- choices: [
105
- { name: 'Overwrite existing', value: 'overwrite' },
106
- { name: 'Skip this command', value: 'skip' },
107
- { name: 'Rename imported command', value: 'rename' }
108
- ]
109
- }
110
- ]);
143
+ const actionPrompt = {
144
+ type: 'list',
145
+ name: 'action',
146
+ message: `What should we do with "${name}"?`,
147
+ choices: [
148
+ { name: 'Overwrite existing', value: 'overwrite' },
149
+ { name: 'Skip this command', value: 'skip' },
150
+ { name: 'Rename imported command', value: 'rename' },
151
+ ],
152
+ };
153
+ const action = await (0, prompts_1.promptList)(actionPrompt);
111
154
  if (action === 'rename') {
112
- const { newName } = await inquirer_1.default.prompt([
113
- {
114
- type: 'input',
115
- name: 'newName',
116
- message: 'Enter new name:',
117
- default: `${name}_imported`,
118
- validate: (input) => {
119
- if (!input.trim()) {
120
- return 'Name cannot be empty';
121
- }
122
- if (input.includes(' ')) {
123
- return 'Name cannot contain spaces';
124
- }
125
- if ((0, storage_1.aliasExists)(input) || resolutions[input]) {
126
- return `Name "${input}" is already taken`;
127
- }
128
- return true;
155
+ const renamePrompt = {
156
+ type: 'input',
157
+ name: 'newName',
158
+ message: 'Enter new name:',
159
+ default: `${name}_imported`,
160
+ validate: (input) => {
161
+ const trimmed = input.trim();
162
+ if (!trimmed) {
163
+ return constants_1.HELP_MESSAGES.emptyValue('Name');
164
+ }
165
+ if (trimmed.includes(' ')) {
166
+ return constants_1.HELP_MESSAGES.invalidName;
167
+ }
168
+ // Check for invalid characters
169
+ if (!/^[a-zA-Z0-9_-]+$/.test(trimmed)) {
170
+ return 'Name can only contain letters, numbers, hyphens, and underscores';
171
+ }
172
+ if ((0, storage_1.aliasExists)(trimmed) || resolutions[trimmed]) {
173
+ return `Name "${trimmed}" is already taken`;
129
174
  }
130
- }
131
- ]);
132
- resolutions[name] = { action: 'rename', newName };
175
+ return true;
176
+ },
177
+ };
178
+ const newName = await (0, prompts_1.promptText)(renamePrompt);
179
+ resolutions[name] = { action: 'rename', newName: newName.trim() };
133
180
  }
134
181
  else {
135
182
  resolutions[name] = { action };
@@ -166,25 +213,23 @@ async function importCommand(filePath) {
166
213
  // Save the updated aliases
167
214
  const success = (0, storage_1.saveAliases)(updatedAliases);
168
215
  if (success) {
169
- console.log(chalk_1.default.green(`✓ Import complete:`));
216
+ console.log(chalk_1.default.green(`✓ ${constants_1.SUCCESS_MESSAGES.importComplete}:`));
170
217
  console.log(chalk_1.default.gray(` Imported: ${importedCount} command(s)`));
171
218
  if (skippedCount > 0) {
172
219
  console.log(chalk_1.default.gray(` Skipped: ${skippedCount} command(s)`));
173
220
  }
174
221
  }
175
222
  else {
176
- console.error(chalk_1.default.red('Error: Could not save imported commands'));
177
- process.exit(1);
223
+ (0, errors_1.exitWithError)('Could not save imported commands');
178
224
  }
179
225
  }
180
226
  catch (error) {
181
- if (error.isTtyError) {
182
- console.error(chalk_1.default.red('Error: Interactive prompt not supported in this environment'));
227
+ if ((0, errors_1.isInquirerTTYError)(error)) {
228
+ (0, errors_1.exitWithError)(constants_1.ERROR_MESSAGES.interactiveNotSupported, errors_1.ExitCode.GeneralError);
183
229
  }
184
230
  else {
185
- console.error(chalk_1.default.red('Error:'), error.message);
231
+ (0, errors_1.handleError)(error, 'Failed to import commands');
186
232
  }
187
- process.exit(1);
188
233
  }
189
234
  }
190
235
  //# sourceMappingURL=import.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,22 @@
1
+ /**
2
+ * List all saved commands with their details
3
+ *
4
+ * Displays commands alphabetically with their command text and working directory.
5
+ * If no commands are saved, provides guidance on how to save commands.
6
+ *
7
+ * @example
8
+ * ```
9
+ * // Output:
10
+ * // Saved commands (3):
11
+ * //
12
+ * // build-prod
13
+ * // Command: npm run build --production
14
+ * // Directory: /home/user/project
15
+ * //
16
+ * // deploy
17
+ * // Command: ./deploy.sh
18
+ * // Directory: /home/user/scripts
19
+ * ```
20
+ */
1
21
  export declare function listCommand(): void;
2
22
  //# sourceMappingURL=list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,IAAI,IAAI,CA2BlC"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAiClC"}
@@ -1,18 +1,74 @@
1
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
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
39
  exports.listCommand = listCommand;
7
40
  const chalk_1 = __importDefault(require("chalk"));
41
+ const fs = __importStar(require("fs"));
8
42
  const storage_1 = require("../storage");
43
+ const errors_1 = require("../utils/errors");
44
+ const constants_1 = require("../utils/constants");
45
+ /**
46
+ * List all saved commands with their details
47
+ *
48
+ * Displays commands alphabetically with their command text and working directory.
49
+ * If no commands are saved, provides guidance on how to save commands.
50
+ *
51
+ * @example
52
+ * ```
53
+ * // Output:
54
+ * // Saved commands (3):
55
+ * //
56
+ * // build-prod
57
+ * // Command: npm run build --production
58
+ * // Directory: /home/user/project
59
+ * //
60
+ * // deploy
61
+ * // Command: ./deploy.sh
62
+ * // Directory: /home/user/scripts
63
+ * ```
64
+ */
9
65
  function listCommand() {
10
66
  try {
11
67
  const aliases = (0, storage_1.loadAliases)();
12
68
  const names = Object.keys(aliases);
13
69
  if (names.length === 0) {
14
- console.log(chalk_1.default.yellow('No saved commands found.'));
15
- console.log(chalk_1.default.gray('Use "aliasmate save" or "aliasmate prev <name>" to save a command'));
70
+ console.log(chalk_1.default.yellow(constants_1.HELP_MESSAGES.noCommands));
71
+ console.log(chalk_1.default.gray(constants_1.HELP_MESSAGES.useSaveOrPrev));
16
72
  return;
17
73
  }
18
74
  console.log(chalk_1.default.bold(`\nSaved commands (${names.length}):\n`));
@@ -20,15 +76,20 @@ function listCommand() {
20
76
  names.sort();
21
77
  for (const name of names) {
22
78
  const alias = aliases[name];
23
- console.log(chalk_1.default.cyan(` ${name}`));
79
+ // Check if directory still exists
80
+ const dirExists = fs.existsSync(alias.directory);
81
+ const dirIndicator = dirExists ? '' : chalk_1.default.red(' [DIR NOT FOUND]');
82
+ console.log(chalk_1.default.cyan(` ${name}${dirIndicator}`));
24
83
  console.log(chalk_1.default.gray(` Command: ${alias.command}`));
25
84
  console.log(chalk_1.default.gray(` Directory: ${alias.directory}`));
85
+ if (alias.createdAt) {
86
+ console.log(chalk_1.default.gray(` Created: ${new Date(alias.createdAt).toLocaleString()}`));
87
+ }
26
88
  console.log();
27
89
  }
28
90
  }
29
91
  catch (error) {
30
- console.error(chalk_1.default.red('Error:'), error.message);
31
- process.exit(1);
92
+ (0, errors_1.handleError)(error, 'Failed to list commands');
32
93
  }
33
94
  }
34
95
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";;;;;AAGA,kCA2BC;AA9BD,kDAA0B;AAC1B,wCAAyC;AAEzC,SAAgB,WAAW;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,qBAAW,GAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC,CAAC;YAC7F,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;QAEjE,sBAAsB;QACtB,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,kCAiCC;AA3DD,kDAA0B;AAC1B,uCAAyB;AACzB,wCAAyC;AACzC,4CAA8C;AAC9C,kDAAmD;AAEnD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,WAAW;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,qBAAW,GAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,yBAAa,CAAC,UAAU,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAa,CAAC,aAAa,CAAC,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;QAEjE,sBAAsB;QACtB,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5B,kCAAkC;YAClC,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAEpE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC7D,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,oBAAW,EAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
@@ -1,2 +1,15 @@
1
- export declare function prevCommand(name: string, _options: any, cwd?: string): Promise<void>;
1
+ /**
2
+ * Save the previous command from shell history
3
+ *
4
+ * @param name - The name to save the command under
5
+ * @param cwd - The working directory to save with the command (defaults to process.cwd())
6
+ *
7
+ * @example
8
+ * ```
9
+ * // After running: npm run build --production
10
+ * // Execute: aliasmate prev build-prod
11
+ * // The npm command is saved and can be re-run from anywhere
12
+ * ```
13
+ */
14
+ export declare function prevCommand(name: string, cwd?: string): void;
2
15
  //# sourceMappingURL=prev.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prev.d.ts","sourceRoot":"","sources":["../../src/commands/prev.ts"],"names":[],"mappings":"AAIA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BzG"}
1
+ {"version":3,"file":"prev.d.ts","sourceRoot":"","sources":["../../src/commands/prev.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,IAAI,CA8C3E"}
@@ -7,34 +7,62 @@ exports.prevCommand = prevCommand;
7
7
  const chalk_1 = __importDefault(require("chalk"));
8
8
  const history_1 = require("../utils/history");
9
9
  const storage_1 = require("../storage");
10
- async function prevCommand(name, _options, cwd = process.cwd()) {
10
+ const errors_1 = require("../utils/errors");
11
+ const constants_1 = require("../utils/constants");
12
+ /**
13
+ * Save the previous command from shell history
14
+ *
15
+ * @param name - The name to save the command under
16
+ * @param cwd - The working directory to save with the command (defaults to process.cwd())
17
+ *
18
+ * @example
19
+ * ```
20
+ * // After running: npm run build --production
21
+ * // Execute: aliasmate prev build-prod
22
+ * // The npm command is saved and can be re-run from anywhere
23
+ * ```
24
+ */
25
+ function prevCommand(name, cwd = process.cwd()) {
11
26
  try {
12
27
  // Get the last command from history
13
28
  const lastCommand = (0, history_1.getLastCommand)();
14
29
  if (!lastCommand) {
15
- console.error(chalk_1.default.red('Error: Could not retrieve previous command from history.'));
30
+ console.error(chalk_1.default.red(`Error: ${constants_1.ERROR_MESSAGES.historyNotAvailable}`));
16
31
  console.log(chalk_1.default.yellow('\nTroubleshooting:'));
17
32
  console.log(chalk_1.default.gray('1. Make sure your shell history is enabled'));
18
33
  console.log(chalk_1.default.gray('2. For real-time history capture, configure your shell:'));
19
34
  console.log(chalk_1.default.gray(` ${(0, history_1.getHistoryConfigInstructions)()}`));
20
35
  console.log(chalk_1.default.gray('3. Or use "aliasmate save" to manually enter the command'));
21
- process.exit(1);
36
+ process.exit(errors_1.ExitCode.GeneralError);
37
+ }
38
+ // Validate command name
39
+ if (!name || !name.trim()) {
40
+ (0, errors_1.exitWithError)('Command name cannot be empty', errors_1.ExitCode.InvalidInput);
41
+ }
42
+ if (name.includes(' ')) {
43
+ (0, errors_1.exitWithError)('Command name cannot contain spaces', errors_1.ExitCode.InvalidInput);
44
+ }
45
+ if (!/^[a-zA-Z0-9_-]+$/.test(name)) {
46
+ (0, errors_1.exitWithError)('Command name can only contain letters, numbers, hyphens, and underscores', errors_1.ExitCode.InvalidInput);
22
47
  }
23
48
  // Save the command with the current directory
24
- const success = (0, storage_1.setAlias)(name, lastCommand, cwd);
25
- if (success) {
26
- console.log(chalk_1.default.green(`✓ Saved command as "${name}"`));
27
- console.log(chalk_1.default.gray(` Command: ${lastCommand}`));
28
- console.log(chalk_1.default.gray(` Directory: ${cwd}`));
49
+ try {
50
+ const success = (0, storage_1.setAlias)(name, lastCommand, cwd);
51
+ if (success) {
52
+ console.log(chalk_1.default.green(`✓ ${constants_1.SUCCESS_MESSAGES.saved(name)}`));
53
+ console.log(chalk_1.default.gray(` Command: ${lastCommand}`));
54
+ console.log(chalk_1.default.gray(` Directory: ${cwd}`));
55
+ }
56
+ else {
57
+ (0, errors_1.exitWithError)(constants_1.ERROR_MESSAGES.couldNotSave);
58
+ }
29
59
  }
30
- else {
31
- console.error(chalk_1.default.red('Error: Could not save command'));
32
- process.exit(1);
60
+ catch (error) {
61
+ (0, errors_1.exitWithError)(`${constants_1.ERROR_MESSAGES.couldNotSave}: ${error.message}`);
33
62
  }
34
63
  }
35
64
  catch (error) {
36
- console.error(chalk_1.default.red('Error:'), error.message);
37
- process.exit(1);
65
+ (0, errors_1.handleError)(error, 'Failed to save command from history');
38
66
  }
39
67
  }
40
68
  //# sourceMappingURL=prev.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prev.js","sourceRoot":"","sources":["../../src/commands/prev.ts"],"names":[],"mappings":";;;;;AAIA,kCA8BC;AAlCD,kDAA0B;AAC1B,8CAAgF;AAChF,wCAAsC;AAE/B,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,QAAa,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IACxF,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,WAAW,GAAG,IAAA,wBAAc,GAAE,CAAC;QAErC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,IAAA,sCAA4B,GAAE,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,8CAA8C;QAC9C,MAAM,OAAO,GAAG,IAAA,kBAAQ,EAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAEjD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,WAAW,EAAE,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"prev.js","sourceRoot":"","sources":["../../src/commands/prev.ts"],"names":[],"mappings":";;;;;AAmBA,kCA8CC;AAjED,kDAA0B;AAC1B,8CAAgF;AAChF,wCAAsC;AACtC,4CAAuE;AACvE,kDAAsE;AAEtE;;;;;;;;;;;;GAYG;AACH,SAAgB,WAAW,CAAC,IAAY,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IACnE,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,WAAW,GAAG,IAAA,wBAAc,GAAE,CAAC;QAErC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,0BAAc,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,IAAA,sCAA4B,GAAE,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,IAAI,CAAC,iBAAQ,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1B,IAAA,sBAAa,EAAC,8BAA8B,EAAE,iBAAQ,CAAC,YAAY,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,IAAA,sBAAa,EAAC,oCAAoC,EAAE,iBAAQ,CAAC,YAAY,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAA,sBAAa,EACX,0EAA0E,EAC1E,iBAAQ,CAAC,YAAY,CACtB,CAAC;QACJ,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,kBAAQ,EAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;YAEjD,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,KAAK,4BAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,WAAW,EAAE,CAAC,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,IAAA,sBAAa,EAAC,0BAAc,CAAC,YAAY,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,sBAAa,EAAC,GAAG,0BAAc,CAAC,YAAY,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,oBAAW,EAAC,KAAK,EAAE,qCAAqC,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}