import { getThisCodebaseRootDirPath } from "./getThisCodebaseRootDirPath";
import { assert } from "tsafe/assert";
import * as fs from "fs";
import { join as pathJoin } from "path";

let cache: string | undefined = undefined;

export function readThisNpmPackageVersion(): string {
    if (cache !== undefined) {
        return cache;
    }

    const version = JSON.parse(
        fs
            .readFileSync(pathJoin(getThisCodebaseRootDirPath(), "package.json"))
            .toString("utf8")
    )["version"];

    assert(typeof version === "string");

    cache = version;

    return version;
}
