Files
Homarr/apps/nextjs/src/versions/package-reader.ts
homarr-renovate[bot] 17401d1d72 fix(deps): update dependency typescript-eslint to ^8.12.2 (#1381)
* fix(deps): update dependency typescript-eslint to ^8.12.2

* fix: lint issues

---------

Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
2024-10-31 16:00:47 +01:00

36 lines
1.1 KiB
TypeScript

import fsPromises from "fs/promises";
import { glob } from "glob";
import packageJson from "~/../package.json";
const getPackageVersion = () => packageJson.version;
const getDependenciesAsync = async (): Promise<PackageJsonDependencies> => {
const pathNames = await glob("**/package.json", {
ignore: "node_modules/**",
cwd: "../../",
absolute: true,
});
const packageContents = await Promise.all(pathNames.map(async (path) => await fsPromises.readFile(path, "utf-8")));
const packageDependencies = packageContents
.map((packageContent) => (JSON.parse(packageContent) as PackageJson).dependencies)
.filter((dependencies) => dependencies !== undefined);
let dependencies = {};
for (const dependenciesOfPackage of packageDependencies) {
dependencies = { ...dependencies, ...dependenciesOfPackage };
}
return dependencies;
};
export const getPackageAttributesAsync = async () => {
return {
version: getPackageVersion(),
dependencies: await getDependenciesAsync(),
};
};
type PackageJsonDependencies = Record<string, string>;
interface PackageJson {
dependencies: PackageJsonDependencies | undefined;
}