console/packages/libraries/render-laboratory/scripts/yoga-bundle-string.mjs
2026-03-06 22:37:08 +01:00

67 lines
2.5 KiB
JavaScript

import * as fs from 'node:fs';
import * as path from 'node:path';
import { fileURLToPath } from 'node:url';
const directoryName = path.dirname(fileURLToPath(import.meta.url));
const inputPath = path.resolve(
directoryName,
'../../../../node_modules/@graphql-hive/laboratory/dist',
);
const jsFile = path.resolve(inputPath, 'hive-laboratory.umd.js');
const cssFile = path.resolve(inputPath, 'laboratory.css');
const editorWorkerServiceFile = path.resolve(
inputPath,
'monacoeditorwork',
'editor.worker.bundle.js',
);
const graphqlWorkerFile = path.resolve(inputPath, 'monacoeditorwork', 'graphql.worker.bundle.js');
const jsonWorkerFile = path.resolve(inputPath, 'monacoeditorwork', 'json.worker.bundle.js');
const typescriptWorkerFile = path.resolve(inputPath, 'monacoeditorwork', 'ts.worker.bundle.js');
const faviconFile = path.resolve(
directoryName,
'../../../../packages/web/app/public/just-logo.svg',
);
const faviconDarkFile = path.resolve(
directoryName,
'../../../../packages/web/app/public/just-logo-black.svg',
);
const outFile = path.resolve(directoryName, '..', 'src', 'laboratory.ts');
const [
jsContents,
faviconContents,
faviconDarkContents,
cssContents,
editorWorkerServiceContents,
graphqlWorkerContents,
jsonWorkerContents,
typescriptWorkerContents,
] = await Promise.all([
fs.promises.readFile(jsFile, 'utf-8'),
fs.promises.readFile(faviconFile, 'base64'),
fs.promises.readFile(faviconDarkFile, 'base64'),
fs.promises.readFile(cssFile, 'utf-8'),
fs.promises.readFile(editorWorkerServiceFile, 'utf-8'),
fs.promises.readFile(graphqlWorkerFile, 'utf-8'),
fs.promises.readFile(jsonWorkerFile, 'utf-8'),
fs.promises.readFile(typescriptWorkerFile, 'utf-8'),
]);
await fs.promises.writeFile(
outFile,
[
`export const js: string = ${JSON.stringify(jsContents)}`,
`export const favicon: string = ${JSON.stringify(
`data:image/x-icon;base64,${faviconContents}`,
)}`,
`export const faviconDark: string = ${JSON.stringify(
`data:image/svg+xml;base64,${faviconDarkContents}`,
)}`,
`export const css: string = ${JSON.stringify(cssContents)}`,
`export const editorWorkerService: string = ${JSON.stringify(editorWorkerServiceContents)}`,
`export const graphqlWorker: string = ${JSON.stringify(graphqlWorkerContents)}`,
`export const jsonWorker: string = ${JSON.stringify(jsonWorkerContents)}`,
`export const typescriptWorker: string = ${JSON.stringify(typescriptWorkerContents)}`,
].join('\n'),
);