@storm-software/config-tools
Version:
A package containing various utilities to support custom workspace configurations and environment management for Storm Software projects, including configuration file handling, environment variable management, and logging utilities.
132 lines (129 loc) • 3.26 kB
JavaScript
import {
findWorkspaceRoot
} from "./chunk-PTHGOJU6.js";
import {
joinPaths
} from "./chunk-7IMLZPZF.js";
// src/utilities/get-default-config.ts
import {
STORM_DEFAULT_ERROR_CODES_FILE,
STORM_DEFAULT_LICENSE
} from "@storm-software/config";
import { existsSync } from "node:fs";
import { readFile } from "node:fs/promises";
import { join } from "node:path";
var DEFAULT_COLOR_CONFIG = {
light: {
background: "#fafafa",
foreground: "#1d1e22",
brand: "#1fb2a6",
alternate: "#db2777",
help: "#5C4EE5",
success: "#087f5b",
info: "#0550ae",
warning: "#e3b341",
danger: "#D8314A",
positive: "#22c55e",
negative: "#dc2626"
},
dark: {
background: "#1d1e22",
foreground: "#cbd5e1",
brand: "#2dd4bf",
alternate: "#db2777",
help: "#818cf8",
success: "#10b981",
info: "#58a6ff",
warning: "#f3d371",
danger: "#D8314A",
positive: "#22c55e",
negative: "#dc2626"
}
};
async function getPackageJsonConfig(root) {
let license = STORM_DEFAULT_LICENSE;
let homepage = void 0;
let support = void 0;
let name = void 0;
let namespace = void 0;
let repository = void 0;
const workspaceRoot = findWorkspaceRoot(root);
if (existsSync(join(workspaceRoot, "package.json"))) {
const file = await readFile(
joinPaths(workspaceRoot, "package.json"),
"utf8"
);
if (file) {
const packageJson = JSON.parse(file);
if (packageJson.name) {
name = packageJson.name;
}
if (packageJson.namespace) {
namespace = packageJson.namespace;
}
if (packageJson.repository) {
if (typeof packageJson.repository === "string") {
repository = packageJson.repository;
} else if (packageJson.repository.url) {
repository = packageJson.repository.url;
}
}
if (packageJson.license) {
license = packageJson.license;
}
if (packageJson.homepage) {
homepage = packageJson.homepage;
}
if (packageJson.bugs) {
if (typeof packageJson.bugs === "string") {
support = packageJson.bugs;
} else if (packageJson.bugs.url) {
support = packageJson.bugs.url;
}
}
}
}
return {
workspaceRoot,
name,
namespace,
repository,
license,
homepage,
support
};
}
function applyDefaultConfig(config) {
if (!config.support && config.contact) {
config.support = config.contact;
}
if (!config.contact && config.support) {
config.contact = config.support;
}
if (config.homepage) {
if (!config.docs) {
config.docs = `${config.homepage}/docs`;
}
if (!config.license) {
config.license = `${config.homepage}/license`;
}
if (!config.support) {
config.support = `${config.homepage}/support`;
}
if (!config.contact) {
config.contact = `${config.homepage}/contact`;
}
if (!config.error?.codesFile || !config?.error?.url) {
config.error ??= { codesFile: STORM_DEFAULT_ERROR_CODES_FILE };
if (config.homepage) {
config.error.url ??= `${config.homepage}/errors`;
}
}
}
return config;
}
export {
DEFAULT_COLOR_CONFIG,
getPackageJsonConfig,
applyDefaultConfig
};