import { readFile, writeFile } from 'node:fs/promises' export type PackageJson = { name: string version: string keywords: string[] } export type ProjectJson = { name: string targets?: { build?: { options?: { buildableProjectDepsInPackageJsonType?: 'peerDependencies' | 'dependencies' updateBuildableProjectDepsInPackageJson: boolean } }, lint: { options: { lintFilePatterns: string[] } } } } const readJsonFile = async (path: string): Promise => { const jsonFile = await readFile(path, { encoding: 'utf-8' }) return JSON.parse(jsonFile) as T } const writeJsonFile = async (path: string, data: unknown): Promise => { const serializedData = JSON.stringify(data, null, 2) await writeFile(path, serializedData, { encoding: 'utf-8' }) } export const readPackageJson = async (path: string): Promise => { return await readJsonFile(`${path}/package.json`) } export const readProjectJson = async (path: string): Promise => { return await readJsonFile(`${path}/project.json`) } export const readPackageEslint = async (path: string): Promise => { return await readJsonFile(`${path}/.eslintrc.json`) } export const writePackageEslint = async (path: string, eslint: any): Promise => { return await writeJsonFile(`${path}/.eslintrc.json`, eslint) } export const writeProjectJson = async (path: string, projectJson: ProjectJson): Promise => { return await writeJsonFile(`${path}/project.json`, projectJson) }