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.
- package/CHANGELOG.md +109 -0
- package/README.md +126 -2
- package/dist/cli.js +52 -15
- package/dist/cli.js.map +1 -1
- package/dist/commands/delete.d.ts +12 -0
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +29 -8
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/edit.d.ts +13 -0
- package/dist/commands/edit.d.ts.map +1 -1
- package/dist/commands/edit.js +50 -23
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/export.d.ts +17 -0
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +42 -7
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/import.d.ts +21 -0
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +93 -48
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/list.d.ts +20 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +66 -5
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/prev.d.ts +14 -1
- package/dist/commands/prev.d.ts.map +1 -1
- package/dist/commands/prev.js +41 -13
- package/dist/commands/prev.js.map +1 -1
- package/dist/commands/run.d.ts +16 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +30 -10
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/save.d.ts +15 -1
- package/dist/commands/save.d.ts.map +1 -1
- package/dist/commands/save.js +64 -33
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/search.d.ts +19 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +113 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/storage/index.d.ts +34 -7
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +55 -11
- package/dist/storage/index.js.map +1 -1
- package/dist/utils/constants.d.ts +48 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +51 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/errors.d.ts +30 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +62 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/executor.d.ts +22 -1
- package/dist/utils/executor.d.ts.map +1 -1
- package/dist/utils/executor.js +36 -11
- package/dist/utils/executor.js.map +1 -1
- package/dist/utils/history.d.ts +21 -3
- package/dist/utils/history.d.ts.map +1 -1
- package/dist/utils/history.js +28 -14
- package/dist/utils/history.js.map +1 -1
- package/dist/utils/llm-generator.d.ts +21 -0
- package/dist/utils/llm-generator.d.ts.map +1 -0
- package/dist/utils/llm-generator.js +337 -0
- package/dist/utils/llm-generator.js.map +1 -0
- package/dist/utils/onboarding.d.ts +10 -0
- package/dist/utils/onboarding.d.ts.map +1 -0
- package/dist/utils/onboarding.js +201 -0
- package/dist/utils/onboarding.js.map +1 -0
- package/dist/utils/paths.d.ts +39 -1
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +56 -1
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/prompts.d.ts +56 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +51 -0
- package/dist/utils/prompts.js.map +1 -0
- package/package.json +22 -6
package/dist/utils/paths.js
CHANGED
|
@@ -34,10 +34,25 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.resolvePath = resolvePath;
|
|
37
|
+
exports.isValidDirectory = isValidDirectory;
|
|
38
|
+
exports.sanitizeCommandName = sanitizeCommandName;
|
|
37
39
|
const path = __importStar(require("path"));
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
38
41
|
/**
|
|
39
42
|
* Resolve a path, handling relative paths, absolute paths, and special cases
|
|
40
|
-
*
|
|
43
|
+
* Works cross-platform (Windows, macOS, Linux)
|
|
44
|
+
*
|
|
45
|
+
* @param inputPath - The path to resolve
|
|
46
|
+
* @param basePath - The base path to resolve relative paths against (defaults to cwd)
|
|
47
|
+
* @returns The resolved absolute path
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* resolvePath('.', '/home/user') // => '/home/user'
|
|
52
|
+
* resolvePath('..', '/home/user') // => '/home'
|
|
53
|
+
* resolvePath('/absolute/path') // => '/absolute/path'
|
|
54
|
+
* resolvePath('relative/path', '/base') // => '/base/relative/path'
|
|
55
|
+
* ```
|
|
41
56
|
*/
|
|
42
57
|
function resolvePath(inputPath, basePath = process.cwd()) {
|
|
43
58
|
if (!inputPath) {
|
|
@@ -57,4 +72,44 @@ function resolvePath(inputPath, basePath = process.cwd()) {
|
|
|
57
72
|
// Resolve relative to base path
|
|
58
73
|
return path.resolve(basePath, inputPath);
|
|
59
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Validate that a directory exists and is accessible
|
|
77
|
+
*
|
|
78
|
+
* @param dirPath - The directory path to validate
|
|
79
|
+
* @returns true if directory exists and is accessible, false otherwise
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* if (isValidDirectory('/home/user/project')) {
|
|
84
|
+
* console.log('Directory is valid');
|
|
85
|
+
* }
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
function isValidDirectory(dirPath) {
|
|
89
|
+
try {
|
|
90
|
+
const stats = fs.statSync(dirPath);
|
|
91
|
+
return stats.isDirectory();
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Sanitize a command name by removing invalid characters
|
|
99
|
+
*
|
|
100
|
+
* @param name - The command name to sanitize
|
|
101
|
+
* @returns Sanitized command name
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```ts
|
|
105
|
+
* sanitizeCommandName('my command!') // => 'my-command'
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
function sanitizeCommandName(name) {
|
|
109
|
+
return name
|
|
110
|
+
.trim()
|
|
111
|
+
.replace(/[\s]+/g, '-') // Replace spaces with hyphens
|
|
112
|
+
.replace(/[^a-zA-Z0-9_-]/g, '') // Remove invalid characters
|
|
113
|
+
.toLowerCase();
|
|
114
|
+
}
|
|
60
115
|
//# sourceMappingURL=paths.js.map
|
package/dist/utils/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,kCAqBC;AAeD,4CAOC;AAaD,kDAMC;AAjFD,2CAA6B;AAC7B,uCAAyB;AAEzB;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,WAAW,CAAC,SAAiB,EAAE,WAAmB,OAAO,CAAC,GAAG,EAAE;IAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,iDAAiD;IACjD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,uBAAuB;IACvB,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,gCAAgC;IAChC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI;SACR,IAAI,EAAE;SACN,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,8BAA8B;SACrD,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,4BAA4B;SAC3D,WAAW,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe prompt utilities to eliminate 'any' types
|
|
3
|
+
*/
|
|
4
|
+
export interface TextInputPrompt {
|
|
5
|
+
type: 'input';
|
|
6
|
+
name: string;
|
|
7
|
+
message: string;
|
|
8
|
+
default?: string;
|
|
9
|
+
validate?: (input: string) => boolean | string;
|
|
10
|
+
}
|
|
11
|
+
export interface ConfirmPrompt {
|
|
12
|
+
type: 'confirm';
|
|
13
|
+
name: string;
|
|
14
|
+
message: string;
|
|
15
|
+
default?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface ListPrompt {
|
|
18
|
+
type: 'list';
|
|
19
|
+
name: string;
|
|
20
|
+
message: string;
|
|
21
|
+
choices: Array<{
|
|
22
|
+
name: string;
|
|
23
|
+
value: string;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
type PromptType = TextInputPrompt | ConfirmPrompt | ListPrompt;
|
|
27
|
+
/**
|
|
28
|
+
* Type-safe wrapper for inquirer text input prompt
|
|
29
|
+
*
|
|
30
|
+
* @param prompt - The prompt configuration
|
|
31
|
+
* @returns Promise resolving to the user's input string
|
|
32
|
+
*/
|
|
33
|
+
export declare function promptText(prompt: TextInputPrompt): Promise<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Type-safe wrapper for inquirer confirm prompt
|
|
36
|
+
*
|
|
37
|
+
* @param prompt - The prompt configuration
|
|
38
|
+
* @returns Promise resolving to the user's boolean choice
|
|
39
|
+
*/
|
|
40
|
+
export declare function promptConfirm(prompt: ConfirmPrompt): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Type-safe wrapper for inquirer list prompt
|
|
43
|
+
*
|
|
44
|
+
* @param prompt - The prompt configuration
|
|
45
|
+
* @returns Promise resolving to the selected value
|
|
46
|
+
*/
|
|
47
|
+
export declare function promptList(prompt: ListPrompt): Promise<string>;
|
|
48
|
+
/**
|
|
49
|
+
* Type-safe wrapper for multiple prompts
|
|
50
|
+
*
|
|
51
|
+
* @param prompts - Array of prompt configurations
|
|
52
|
+
* @returns Promise resolving to an object with all answers
|
|
53
|
+
*/
|
|
54
|
+
export declare function promptMultiple<T extends Record<string, unknown>>(prompts: PromptType[]): Promise<T>;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAAC;CAChD;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAED,KAAK,UAAU,GAAG,eAAe,GAAG,aAAa,GAAG,UAAU,CAAC;AAE/D;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAGzE;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3E;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAGpE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpE,OAAO,EAAE,UAAU,EAAE,GACpB,OAAO,CAAC,CAAC,CAAC,CAGZ"}
|
|
@@ -0,0 +1,51 @@
|
|
|
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.promptText = promptText;
|
|
7
|
+
exports.promptConfirm = promptConfirm;
|
|
8
|
+
exports.promptList = promptList;
|
|
9
|
+
exports.promptMultiple = promptMultiple;
|
|
10
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
|
+
/**
|
|
12
|
+
* Type-safe wrapper for inquirer text input prompt
|
|
13
|
+
*
|
|
14
|
+
* @param prompt - The prompt configuration
|
|
15
|
+
* @returns Promise resolving to the user's input string
|
|
16
|
+
*/
|
|
17
|
+
async function promptText(prompt) {
|
|
18
|
+
const result = await inquirer_1.default.prompt([prompt]);
|
|
19
|
+
return result[prompt.name];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Type-safe wrapper for inquirer confirm prompt
|
|
23
|
+
*
|
|
24
|
+
* @param prompt - The prompt configuration
|
|
25
|
+
* @returns Promise resolving to the user's boolean choice
|
|
26
|
+
*/
|
|
27
|
+
async function promptConfirm(prompt) {
|
|
28
|
+
const result = await inquirer_1.default.prompt([prompt]);
|
|
29
|
+
return result[prompt.name];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Type-safe wrapper for inquirer list prompt
|
|
33
|
+
*
|
|
34
|
+
* @param prompt - The prompt configuration
|
|
35
|
+
* @returns Promise resolving to the selected value
|
|
36
|
+
*/
|
|
37
|
+
async function promptList(prompt) {
|
|
38
|
+
const result = await inquirer_1.default.prompt([prompt]);
|
|
39
|
+
return result[prompt.name];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Type-safe wrapper for multiple prompts
|
|
43
|
+
*
|
|
44
|
+
* @param prompts - Array of prompt configurations
|
|
45
|
+
* @returns Promise resolving to an object with all answers
|
|
46
|
+
*/
|
|
47
|
+
async function promptMultiple(prompts) {
|
|
48
|
+
const result = await inquirer_1.default.prompt(prompts);
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":";;;;;AAoCA,gCAGC;AAQD,sCAGC;AAQD,gCAGC;AAQD,wCAKC;AA1ED,wDAAgC;AA8BhC;;;;;GAKG;AACI,KAAK,UAAU,UAAU,CAAC,MAAuB;IACtD,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,aAAa,CAAC,MAAqB;IACvD,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,UAAU,CAAC,MAAkB;IACjD,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAClC,OAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAI,OAAyC,CAAC,CAAC;IACnF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aliasmate",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "A CLI utility to save, manage, and re-run shell commands with their working directories",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"bin": {
|
|
@@ -10,7 +10,15 @@
|
|
|
10
10
|
"build": "tsc",
|
|
11
11
|
"dev": "tsc --watch",
|
|
12
12
|
"prepublishOnly": "npm run build",
|
|
13
|
-
"
|
|
13
|
+
"lint": "eslint src/**/*.ts",
|
|
14
|
+
"lint:fix": "eslint src/**/*.ts --fix",
|
|
15
|
+
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
16
|
+
"format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
17
|
+
"typecheck": "tsc --noEmit",
|
|
18
|
+
"test": "jest",
|
|
19
|
+
"test:watch": "jest --watch",
|
|
20
|
+
"test:coverage": "jest --coverage",
|
|
21
|
+
"test:ci": "jest --ci --coverage --maxWorkers=2"
|
|
14
22
|
},
|
|
15
23
|
"keywords": [
|
|
16
24
|
"cli",
|
|
@@ -24,7 +32,7 @@
|
|
|
24
32
|
"automation",
|
|
25
33
|
"workflow"
|
|
26
34
|
],
|
|
27
|
-
"author": "",
|
|
35
|
+
"author": "akhshyganesh",
|
|
28
36
|
"license": "MIT",
|
|
29
37
|
"engines": {
|
|
30
38
|
"node": ">=14.0.0"
|
|
@@ -38,14 +46,22 @@
|
|
|
38
46
|
},
|
|
39
47
|
"homepage": "https://github.com/aliasmate/aliasmate#readme",
|
|
40
48
|
"dependencies": {
|
|
49
|
+
"chalk": "^4.1.2",
|
|
41
50
|
"commander": "^11.1.0",
|
|
42
|
-
"inquirer": "^8.2.6",
|
|
43
51
|
"execa": "^5.1.1",
|
|
44
|
-
"
|
|
52
|
+
"inquirer": "^8.2.6"
|
|
45
53
|
},
|
|
46
54
|
"devDependencies": {
|
|
47
|
-
"@
|
|
55
|
+
"@jest/globals": "^30.2.0",
|
|
48
56
|
"@types/inquirer": "^8.2.10",
|
|
57
|
+
"@types/jest": "^30.0.0",
|
|
58
|
+
"@types/node": "^20.10.0",
|
|
59
|
+
"@typescript-eslint/eslint-plugin": "^6.13.0",
|
|
60
|
+
"@typescript-eslint/parser": "^6.13.0",
|
|
61
|
+
"eslint": "^8.55.0",
|
|
62
|
+
"jest": "^30.2.0",
|
|
63
|
+
"prettier": "^3.1.0",
|
|
64
|
+
"ts-jest": "^29.4.6",
|
|
49
65
|
"typescript": "^5.3.3"
|
|
50
66
|
},
|
|
51
67
|
"files": [
|