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.");}
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.");
}