@archer-edu/dxp-directus-cli
Version:
58 lines • 2.35 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.findNearestPackageJson = exports.resolveSiteId = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
function resolveSiteId({ optionSiteId, env = process.env, cwd = process.cwd(), } = {}) {
const siteId = normalizeString(optionSiteId)
|| getPackageEnvSiteId(env)
|| getPackageJsonSiteId(cwd);
if (!siteId) {
throw new Error("A Directus site id is required. Pass --site-id, run through a package script with npm_package_siteId, or add siteId to package.json.");
}
return siteId;
}
exports.resolveSiteId = resolveSiteId;
function findNearestPackageJson(cwd = process.cwd()) {
let current = path_1.default.resolve(cwd);
while (true) {
const packagePath = path_1.default.join(current, "package.json");
if (fs_1.default.existsSync(packagePath))
return packagePath;
const parent = path_1.default.dirname(current);
if (parent === current)
return undefined;
current = parent;
}
}
exports.findNearestPackageJson = findNearestPackageJson;
function getPackageEnvSiteId(env) {
return normalizeString(env.npm_package_siteId)
|| normalizeString(env.npm_package_siteid)
|| normalizeString(env.npm_package_site_id);
}
function getPackageJsonSiteId(cwd) {
const packagePath = findNearestPackageJson(cwd);
if (!packagePath)
return undefined;
const packageJson = JSON.parse(fs_1.default.readFileSync(packagePath, "utf8"));
if (!isRecord(packageJson))
return undefined;
const directSiteId = normalizeString(packageJson.siteId);
if (directSiteId)
return directSiteId;
const directus = packageJson.directus;
if (!isRecord(directus))
return undefined;
return normalizeString(directus.siteId) || normalizeString(directus.site_id);
}
function normalizeString(value) {
return typeof value === "string" && value.trim() ? value.trim() : undefined;
}
function isRecord(value) {
return value != null && typeof value === "object" && !Array.isArray(value);
}
//# sourceMappingURL=package-config.js.map