Files
probo/packages/emails/scripts/build.ts
2025-12-11 16:24:34 +01:00

80 lines
2.2 KiB
TypeScript

import { render } from '@react-email/components';
import { copyFile, mkdir, writeFile } from 'node:fs/promises';
import { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';
import * as React from 'react';
import ConfirmEmail from '../src/ConfirmEmail';
import DocumentExport from '../src/DocumentExport';
import DocumentSigning from '../src/DocumentSigning';
import FrameworkExport from '../src/FrameworkExport';
import Invitation from '../src/Invitation';
import PasswordReset from '../src/PasswordReset';
import TrustCenterAccess from '../src/TrustCenterAccess';
import TrustCenterDocumentAccessRejected from '../src/TrustCenterDocumentAccessRejected';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
type TemplateConfig = {
name: string;
render: () => React.ReactElement;
};
const templates: TemplateConfig[] = [
{
name: 'confirm-email',
render: () => ConfirmEmail()
},
{
name: 'password-reset',
render: () => PasswordReset()
},
{
name: 'invitation',
render: () => Invitation()
},
{
name: 'document-signing',
render: () => DocumentSigning()
},
{
name: 'document-export',
render: () => DocumentExport()
},
{
name: 'framework-export',
render: () => FrameworkExport()
},
{
name: 'trust-center-access',
render: () => TrustCenterAccess()
},
{
name: 'trust-center-document-access-rejected',
render: () => TrustCenterDocumentAccessRejected()
},
];
async function build() {
const outputDir = join(__dirname, '..', 'dist');
const templatesDir = join(__dirname, '..', 'templates');
await mkdir(outputDir, { recursive: true });
for (const template of templates) {
const html = await render(template.render(), { pretty: true });
const htmlPath = join(outputDir, `${template.name}.html.tmpl`);
const txtSrcPath = join(templatesDir, `${template.name}.txt`);
const txtDstPath = join(outputDir, `${template.name}.txt.tmpl`);
await writeFile(htmlPath, html);
await copyFile(txtSrcPath, txtDstPath);
}
}
build().catch((err) => {
console.error('Failed to build email templates:', err);
process.exit(1);
});