feat: read all packages on about page (#391)
This commit is contained in:
@@ -1,13 +1,40 @@
|
||||
import fsPromises from "fs/promises";
|
||||
import { glob } from "glob";
|
||||
|
||||
import packageJson from "~/../package.json";
|
||||
|
||||
const getPackageVersion = () => packageJson.version;
|
||||
const getDependencies = (): PackageJsonDependencies => packageJson.dependencies;
|
||||
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);
|
||||
|
||||
export const getPackageAttributes = () => {
|
||||
let dependencies = {};
|
||||
for (const dependenciesOfPackage of packageDependencies) {
|
||||
dependencies = { ...dependencies, ...dependenciesOfPackage };
|
||||
}
|
||||
return dependencies;
|
||||
};
|
||||
|
||||
export const getPackageAttributesAsync = async () => {
|
||||
return {
|
||||
version: getPackageVersion(),
|
||||
dependencies: getDependencies(),
|
||||
dependencies: await getDependenciesAsync(),
|
||||
};
|
||||
};
|
||||
|
||||
type PackageJsonDependencies = { [key in string]: string };
|
||||
interface PackageJson {
|
||||
dependencies: PackageJsonDependencies | undefined;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user