alinea
Version:
[](https://npmjs.org/package/alinea) [](https://packagephobia.com/result?p=alinea)
44 lines (42 loc) • 1.35 kB
JavaScript
import {
compareVersions
} from "../../chunks/chunk-ZQJ6MIYG.js";
import "../../chunks/chunk-U5RRZUYZ.js";
// src/cli/util/EnsureReact.ts
import { outcome } from "alinea/core/Outcome";
import fs from "node:fs";
import { createRequire } from "node:module";
import path from "node:path";
var require2 = createRequire(import.meta.url);
function ensureReact() {
function fail(message) {
console.error(message);
process.exit(1);
}
function ensurePackage(pkg, minVersion) {
const location = outcome(() => require2.resolve(pkg));
if (!location.isSuccess())
throw fail(
`We could not find the ${pkg} package. It's required for the alinea dashboard.
You can install it with: npm i ${pkg}`
);
const dir = path.dirname(location.value);
const meta = outcome(
() => fs.readFileSync(path.join(dir, "package.json"), "utf8")
);
if (!meta.isSuccess())
throw fail(`Could not retrieve ${pkg}'s package.json file`);
const { version } = JSON.parse(meta.value);
const pkgVersionWorks = compareVersions.compare(version, minVersion, ">=");
if (!pkgVersionWorks)
throw fail(
`${pkg} version ${version} is not supported, at least ${minVersion} is required
`
);
}
ensurePackage("react", "18.0.0");
ensurePackage("react-dom", "18.0.0");
}
export {
ensureReact
};