59 lines
1.3 KiB
TypeScript
59 lines
1.3 KiB
TypeScript
export type NormalizedRuntime = "node" | "bun";
|
|
|
|
export interface ParsedRuntime {
|
|
/** The normalized runtime type */
|
|
runtime: NormalizedRuntime;
|
|
/** The original runtime string */
|
|
originalRuntime: string;
|
|
/** The display name for the runtime */
|
|
displayName: string;
|
|
}
|
|
|
|
/**
|
|
* Parses a runtime string and returns normalized runtime information
|
|
*/
|
|
export function parseRuntime(runtime: string | null | undefined): ParsedRuntime | null {
|
|
if (!runtime) {
|
|
return null;
|
|
}
|
|
|
|
// Normalize runtime strings
|
|
let normalizedRuntime: NormalizedRuntime;
|
|
let displayName: string;
|
|
|
|
if (runtime.startsWith("bun")) {
|
|
normalizedRuntime = "bun";
|
|
displayName = "Bun";
|
|
} else if (runtime.startsWith("node")) {
|
|
normalizedRuntime = "node";
|
|
displayName = "Node.js";
|
|
} else {
|
|
return null;
|
|
}
|
|
|
|
return {
|
|
runtime: normalizedRuntime,
|
|
originalRuntime: runtime,
|
|
displayName,
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Formats runtime with version for display
|
|
*/
|
|
export function formatRuntimeWithVersion(
|
|
runtime: string | null | undefined,
|
|
version: string | null | undefined
|
|
): string {
|
|
const parsed = parseRuntime(runtime);
|
|
if (!parsed) {
|
|
return "Unknown runtime";
|
|
}
|
|
|
|
if (version) {
|
|
return `${parsed.displayName} v${version}`;
|
|
}
|
|
|
|
return parsed.displayName;
|
|
}
|