1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-22 18:00:18 +01:00
metamask-extension/development/ts-migration-dashboard/common/partitions-file.ts
2023-02-08 08:33:03 -06:00

41 lines
1.8 KiB
TypeScript

import { ModulePartition } from './build-module-partitions';
import { INTERMEDIATE_BUILD_DIRECTORY_PATH } from './constants';
// The `brfs` transform for browserify calls `fs.readLineSync` and
// `path.resolve` at build time and inlines file contents into the source code.
// To accomplish this we have to bring in `fs` and `path` using `require` and
// not `import`. This is weird in a TypeScript file, and typescript-eslint
// (rightly) complains about this, but it's actually okay because the above
// `import` lines will actually get turned into `require`s anyway before passing
// through the rest of browserify. However, `brfs` should handle this. There is
// an active bug for this, but there isn't a known workaround yet:
// <https://github.com/browserify/brfs/issues/39>
/* eslint-disable-next-line @typescript-eslint/no-require-imports,@typescript-eslint/no-var-requires */
const fs = require('fs');
/* eslint-disable-next-line @typescript-eslint/no-require-imports,@typescript-eslint/no-var-requires */
const path = require('path');
export const PARTITIONS_FILE = path.join(
INTERMEDIATE_BUILD_DIRECTORY_PATH,
'partitions.json',
);
export function readPartitionsFile() {
const content = fs.readFileSync(
// As this function is called within the app code, which is compiled by
// Browserify and not executed by Node, this needs to be here — it cannot be
// extracted — for the reasons explained above.
path.resolve(__dirname, '../build/intermediate/partitions.json'),
{ encoding: 'utf-8' },
);
return JSON.parse(content) as ModulePartition[];
}
export function writePartitionsFile(partitions: ModulePartition[]) {
fs.mkdirSync(path.dirname(PARTITIONS_FILE), { recursive: true });
return fs.writeFileSync(
PARTITIONS_FILE,
JSON.stringify(partitions, null, ' '),
);
}