UNPKG

constatic

Version:

Constatic is a CLI for creating and managing modern TypeScript projects, providing an organized structure and features that streamline development.

50 lines (49 loc) 1.61 kB
// src/helpers/npm/package.ts import { Result } from "#lib/result.js"; import path from "node:path"; import { uiMessage } from "../ui.js"; var baseURL = "https://registry.npmjs.org"; async function fetchNpmPackage(lib) { const regex = /^(?<name>@?[^@\/]+(?:\/[^@]+)?)(?:@(?<version>.+))?$/; const match = lib.match(regex); const name = match?.groups?.name; const version = match?.groups?.version ?? "latest"; const response = await fetch(`${baseURL}/${name}`); const data = await response.json(); if (response.status !== 200) { return Result.fail(uiMessage({ "en-US": "Package not found", "pt-BR": "Pacote não encontrado" })); } const versionKey = version === "latest" ? data["dist-tags"].latest : normalizeVersion(version); const hasVersion = !!data.versions[versionKey]; if (!hasVersion) { return Result.fail(uiMessage({ "en-US": "Package version not found", "pt-BR": "Versão do pacote não encontrada" })); } return Result.ok({ ...data, selectedVersion: versionKey }); } function normalizeVersion(version) { if (!version) return "0.0.0"; const parts = version.split("."); while (parts.length < 3) { parts.push("0"); } return parts.slice(0, 3).join("."); } function toNpmName(name) { return name.toLowerCase().replaceAll(" ", "-").replaceAll(".", "").replaceAll("/", "").replace(/[^\w\s-]/gi, ""); } function getCdPath(filepath) { const basename = path.basename(filepath); return basename.trim().includes(" ") ? `cd "./${basename}"` : `cd ./${basename}`; } export { toNpmName, getCdPath, fetchNpmPackage };