105 lines · 3.1 KB · JavaScript
RawDownload
import { existsSync, readdirSync, readFileSync, writeFileSync } from "node:fs";import { join } from "node:path"; const root = process.cwd();const bunStorePath = join(root, "node_modules/.bun"); const packageDirs = []; if (existsSync(join(root, "node_modules/@pierre/diffs"))) {  packageDirs.push(join(root, "node_modules/@pierre/diffs"));} if (existsSync(bunStorePath)) {  for (const entry of readdirSync(bunStorePath)) {    if (!entry.startsWith("@pierre+diffs@")) {      continue;    }     packageDirs.push(join(bunStorePath, entry, "node_modules/@pierre/diffs"));  }} const utilsIndexJs = [  'export { parsePatchFiles, processFile, processPatch } from "./parsePatchFiles.js";',  "export {",  "  EXTENSION_TO_FILE_FORMAT,",  "  getCustomExtensionsMap,",  "  getCustomExtensionsVersion,",  "  getFiletypeFromFileName,",  "  replaceCustomExtensions,",  "  setCustomExtension,",  '} from "./getFiletypeFromFileName.js";',  "",].join("\n"); const utilsIndexDts = [  'export { parsePatchFiles, processFile, processPatch } from "./parsePatchFiles.js";',  "export {",  "  EXTENSION_TO_FILE_FORMAT,",  "  getCustomExtensionsMap,",  "  getCustomExtensionsVersion,",  "  getFiletypeFromFileName,",  "  replaceCustomExtensions,",  "  setCustomExtension,",  '} from "./getFiletypeFromFileName.js";',  'export type { ChangeTypes, FileDiffMetadata, ParsedPatch, SupportedLanguages } from "../types.js";',  "",].join("\n"); let patchedCount = 0;let locatedCount = 0; for (const packageDir of packageDirs) {  if (!existsSync(packageDir)) {    continue;  }   locatedCount += 1;   const packageJsonPath = join(packageDir, "package.json");  const utilsIndexJsPath = join(packageDir, "dist/utils/index.js");  const utilsIndexDtsPath = join(packageDir, "dist/utils/index.d.ts");   const pkg = JSON.parse(readFileSync(packageJsonPath, "utf8"));  const currentUtilsExport = pkg.exports?.["./utils"];   const expectedUtilsExport = {    types: "./dist/utils/index.d.ts",    import: "./dist/utils/index.js",  };   const needsExportPatch =    currentUtilsExport?.types !== expectedUtilsExport.types ||    currentUtilsExport?.import !== expectedUtilsExport.import;   if (needsExportPatch) {    pkg.exports = {      ...pkg.exports,      "./utils": expectedUtilsExport,    };    writeFileSync(packageJsonPath, `${JSON.stringify(pkg, null, 2)}\n`);  }   const currentJs = existsSync(utilsIndexJsPath) ? readFileSync(utilsIndexJsPath, "utf8") : null;  if (currentJs !== utilsIndexJs) {    writeFileSync(utilsIndexJsPath, utilsIndexJs);  }   const currentDts = existsSync(utilsIndexDtsPath) ? readFileSync(utilsIndexDtsPath, "utf8") : null;  if (currentDts !== utilsIndexDts) {    writeFileSync(utilsIndexDtsPath, utilsIndexDts);  }   if (needsExportPatch || currentJs !== utilsIndexJs || currentDts !== utilsIndexDts) {    patchedCount += 1;  }} if (patchedCount > 0) {  console.log(`[patch-pierre-diffs-utils] patched ${patchedCount} @pierre/diffs installation(s).`);} else if (locatedCount > 0) {  console.log("[patch-pierre-diffs-utils] @pierre/diffs already patched.");} else {  console.log("[patch-pierre-diffs-utils] @pierre/diffs not installed; skipping.");}