mirror of
https://github.com/graphql-hive/console
synced 2026-04-21 22:47:17 +00:00
70 lines
2.1 KiB
JavaScript
70 lines
2.1 KiB
JavaScript
/*
|
|
https://github.com/octokit/webhooks-methods.js/issues/45
|
|
|
|
That's why we patch package.json of @octokit/webhooks-methods and replace the value of `main` with the value from `source`.
|
|
*/
|
|
|
|
import fs from 'fs';
|
|
import { createRequire } from 'module';
|
|
import path from 'path';
|
|
|
|
function patchPackage(name, patchFn) {
|
|
const require = createRequire(import.meta.url);
|
|
const indexFile = require.resolve(name, {
|
|
paths: [path.join(process.cwd(), 'node_modules', '.pnpm', 'node_modules')],
|
|
});
|
|
const nameParts = name.split('/');
|
|
|
|
const packagePath = findPackageJson(path.dirname(indexFile), nameParts[nameParts.length - 1]);
|
|
|
|
const pkg = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
|
|
|
|
patchFn(pkg);
|
|
|
|
fs.writeFileSync(packagePath, JSON.stringify(pkg, null, 2), 'utf8');
|
|
|
|
console.log(`[patch-manifests] Patched ${name}`);
|
|
}
|
|
|
|
function findPackageJson(dirname, until) {
|
|
const possiblePath = path.join(dirname, 'package.json');
|
|
|
|
if (fs.existsSync(possiblePath)) {
|
|
return possiblePath;
|
|
}
|
|
|
|
if (dirname.endsWith(until)) {
|
|
throw new Error(`Package.json file not found. Reached ${dirname}`);
|
|
}
|
|
|
|
return findPackageJson(path.resolve(dirname, '..'), until);
|
|
}
|
|
|
|
/*
|
|
https://github.com/octokit/webhooks-methods.js/issues/45
|
|
|
|
That's why we patch package.json of @octokit/webhooks-methods and replace the value of `main` with the value from `source`.
|
|
*/
|
|
patchPackage('@octokit/webhooks-methods', pkg => {
|
|
delete pkg.module;
|
|
});
|
|
|
|
/*
|
|
https://github.com/octokit/webhooks-methods.js/issues/45
|
|
|
|
That's why we patch package.json of universal-github-app-jwt and replace the value of `main` with the value from `source`.
|
|
*/
|
|
patchPackage('universal-github-app-jwt', pkg => {
|
|
delete pkg.module;
|
|
});
|
|
|
|
/*
|
|
TSUP (but really esbuild) bundles all node_modules, this is expected, we want that.
|
|
Unfortunately, `apollo-graphql` and `@apollo/*` libraries are CJS only and we end up with CJS and ESM versions of graphql.
|
|
|
|
The very quick fix means we need to patch the graphql module to be CJS-only.
|
|
*/
|
|
patchPackage('graphql', pkg => {
|
|
pkg.main = 'index.js';
|
|
delete pkg.module;
|
|
});
|