@reliverse/rempts 1.7.24 → 1.7.25
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.
|
@@ -8,58 +8,71 @@ const jiti = createJiti(import.meta.url, {
|
|
|
8
8
|
fsCache: true,
|
|
9
9
|
sourceMaps: true
|
|
10
10
|
});
|
|
11
|
+
const COMMAND_EXTENSIONS = [".ts", ".js"];
|
|
12
|
+
const COMMAND_FILENAMES = ["cmd.ts", "cmd.js"];
|
|
13
|
+
const getCallerDirectory = () => {
|
|
14
|
+
const stack = new Error().stack?.split("\n") ?? [];
|
|
15
|
+
for (const line of stack) {
|
|
16
|
+
const match = /\((.*):(\d+):(\d+)\)/.exec(line) || /at (.*):(\d+):(\d+)/.exec(line);
|
|
17
|
+
if (match?.[1] && !match[1].includes("run-command")) {
|
|
18
|
+
return dirname(match[1]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return process.cwd();
|
|
22
|
+
};
|
|
23
|
+
const tryLoadCommand = async (path) => {
|
|
24
|
+
if (!await fs.pathExists(path)) return null;
|
|
25
|
+
try {
|
|
26
|
+
relinka("verbose", `Attempting to load command from: ${path}`);
|
|
27
|
+
const cmd = await jiti.import(path, { default: true });
|
|
28
|
+
relinka("verbose", `Successfully loaded command from: ${path}`);
|
|
29
|
+
return cmd;
|
|
30
|
+
} catch {
|
|
31
|
+
relinka("verbose", `Failed to load ${path} as a command file`);
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const generateCandidatePaths = async (resolvedPath) => {
|
|
36
|
+
if (!await fs.pathExists(resolvedPath)) {
|
|
37
|
+
return COMMAND_EXTENSIONS.map((ext) => `${resolvedPath}${ext}`);
|
|
38
|
+
}
|
|
39
|
+
if (await fs.isDirectory(resolvedPath)) {
|
|
40
|
+
return COMMAND_FILENAMES.map((filename) => resolve(resolvedPath, filename));
|
|
41
|
+
}
|
|
42
|
+
return [resolvedPath];
|
|
43
|
+
};
|
|
44
|
+
const createCommandNotFoundError = (cmdPath, searchedPaths) => new Error(
|
|
45
|
+
`No command file found for "${cmdPath}". Expected to find either:
|
|
46
|
+
- A valid command file at the specified path
|
|
47
|
+
- A directory containing cmd.ts or cmd.js
|
|
48
|
+
- A file path that can be resolved with .ts or .js extension
|
|
49
|
+
Searched paths: ${searchedPaths.join(", ")}
|
|
50
|
+
Please ensure one of these exists and exports a default command.`
|
|
51
|
+
);
|
|
52
|
+
const createLoadError = (cmdPath, originalError) => new Error(
|
|
53
|
+
`Failed to load command from "${cmdPath}"
|
|
54
|
+
For developers: Ensure the command file:
|
|
55
|
+
- Exists and is accessible
|
|
56
|
+
- Exports a default command (e.g., export default defineCommand({...}))
|
|
57
|
+
- Is a valid TypeScript/JavaScript module
|
|
58
|
+
Original error: ${originalError instanceof Error ? originalError.message : String(originalError)}`
|
|
59
|
+
);
|
|
11
60
|
export async function loadCommand(cmdPath) {
|
|
12
61
|
try {
|
|
13
|
-
const
|
|
14
|
-
const stack = err.stack?.split("\n");
|
|
15
|
-
let callerFile;
|
|
16
|
-
if (stack) {
|
|
17
|
-
for (const line of stack) {
|
|
18
|
-
const match = /\((.*):(\d+):(\d+)\)/.exec(line) || /at (.*):(\d+):(\d+)/.exec(line);
|
|
19
|
-
if (match?.[1] && !match[1].includes("run-command")) {
|
|
20
|
-
callerFile = match[1];
|
|
21
|
-
break;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
const callerDir = callerFile ? dirname(callerFile) : process.cwd();
|
|
62
|
+
const callerDir = getCallerDirectory();
|
|
26
63
|
const normalizedPath = cmdPath.replace(/^\.\//, "");
|
|
27
64
|
const resolvedPath = resolve(callerDir, normalizedPath);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
];
|
|
33
|
-
for (const path of possiblePaths) {
|
|
34
|
-
if (await fs.pathExists(path)) {
|
|
35
|
-
relinka("verbose", `Loading command from: ${path}`);
|
|
36
|
-
const cmd2 = await jiti.import(path, { default: true });
|
|
37
|
-
relinka("verbose", `Successfully loaded command from: ${path}`);
|
|
38
|
-
return cmd2;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
throw new Error(
|
|
42
|
-
`No command file found in ${resolvedPath}. Expected to find either:
|
|
43
|
-
- ${possiblePaths[0]}
|
|
44
|
-
- ${possiblePaths[1]}
|
|
45
|
-
Please ensure one of these files exists and exports a default command.`
|
|
46
|
-
);
|
|
65
|
+
const candidatePaths = await generateCandidatePaths(resolvedPath);
|
|
66
|
+
for (const path of candidatePaths) {
|
|
67
|
+
const command = await tryLoadCommand(path);
|
|
68
|
+
if (command) return command;
|
|
47
69
|
}
|
|
48
|
-
|
|
49
|
-
const cmd = await jiti.import(resolvedPath, { default: true });
|
|
50
|
-
relinka("verbose", `Successfully loaded command from: ${resolvedPath}`);
|
|
51
|
-
return cmd;
|
|
70
|
+
throw createCommandNotFoundError(cmdPath, candidatePaths);
|
|
52
71
|
} catch (error) {
|
|
53
72
|
if (error instanceof Error && error.message.includes("No command file found")) {
|
|
54
73
|
throw error;
|
|
55
74
|
}
|
|
56
75
|
relinka("error", `Failed to load command from ${cmdPath}:`, error);
|
|
57
|
-
throw
|
|
58
|
-
`Failed to load command from ${cmdPath}:
|
|
59
|
-
- Make sure the file exists and is accessible
|
|
60
|
-
- Ensure the file exports a default command
|
|
61
|
-
- Check that the file is a valid TypeScript/JavaScript module
|
|
62
|
-
Original error: ${error instanceof Error ? error.message : String(error)}`
|
|
63
|
-
);
|
|
76
|
+
throw createLoadError(cmdPath, error);
|
|
64
77
|
}
|
|
65
78
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dependencies": {
|
|
3
3
|
"@figliolia/chalk-animation": "^1.0.4",
|
|
4
|
-
"@reliverse/pathkit": "^1.
|
|
4
|
+
"@reliverse/pathkit": "^1.3.3",
|
|
5
5
|
"@reliverse/reliarg": "^1.0.3",
|
|
6
6
|
"@reliverse/relico": "^1.1.2",
|
|
7
7
|
"@reliverse/relifso": "^1.4.5",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"license": "MIT",
|
|
30
30
|
"name": "@reliverse/rempts",
|
|
31
31
|
"type": "module",
|
|
32
|
-
"version": "1.7.
|
|
32
|
+
"version": "1.7.25",
|
|
33
33
|
"author": "reliverse",
|
|
34
34
|
"bugs": {
|
|
35
35
|
"email": "blefnk@gmail.com",
|