diff --git a/.changeset/famous-pandas-unite.md b/.changeset/famous-pandas-unite.md new file mode 100644 index 0000000000..09a0cffb30 --- /dev/null +++ b/.changeset/famous-pandas-unite.md @@ -0,0 +1,6 @@ +--- +"@react-email/preview-server": patch +"react-email": patch +--- + +fallback to not text coloring for Node.js < 20 diff --git a/packages/preview-server/src/actions/render-email-by-path.tsx b/packages/preview-server/src/actions/render-email-by-path.tsx index e8f18d471b..281d0657ed 100644 --- a/packages/preview-server/src/actions/render-email-by-path.tsx +++ b/packages/preview-server/src/actions/render-email-by-path.tsx @@ -2,7 +2,6 @@ import fs from 'node:fs'; import path from 'node:path'; -import { styleText } from 'node:util'; import logSymbols from 'log-symbols'; import ora, { type Ora } from 'ora'; import { @@ -15,6 +14,7 @@ import { convertStackWithSourceMap } from '../utils/convert-stack-with-sourcemap import { createJsxRuntime } from '../utils/create-jsx-runtime'; import { getEmailComponent } from '../utils/get-email-component'; import { registerSpinnerAutostopping } from '../utils/register-spinner-autostopping'; +import { styleText } from '../utils/style-text'; import type { ErrorObject } from '../utils/types/error-object'; export interface RenderedEmailMetadata { diff --git a/packages/preview-server/src/utils/style-text.ts b/packages/preview-server/src/utils/style-text.ts new file mode 100644 index 0000000000..331e9e92a3 --- /dev/null +++ b/packages/preview-server/src/utils/style-text.ts @@ -0,0 +1,11 @@ +/** + * Centralized fallback for Node versions (<20.12.0) without util.styleText. + * Returns the original text when styleText is unavailable. + */ +import * as nodeUtil from 'node:util'; + +type StyleTextFunction = (style: string, text: string) => string; + +export const styleText: StyleTextFunction = (nodeUtil as any).styleText + ? (nodeUtil as any).styleText + : (_: string, text: string) => text; diff --git a/packages/react-email/src/utils/preview/start-dev-server.ts b/packages/react-email/src/utils/preview/start-dev-server.ts index 4034c7fffd..5cacbfcc14 100644 --- a/packages/react-email/src/utils/preview/start-dev-server.ts +++ b/packages/react-email/src/utils/preview/start-dev-server.ts @@ -1,13 +1,13 @@ import http from 'node:http'; import path from 'node:path'; import url from 'node:url'; -import { styleText } from 'node:util'; import { createJiti } from 'jiti'; import logSymbols from 'log-symbols'; import ora from 'ora'; import { registerSpinnerAutostopping } from '../../utils/register-spinner-autostopping.js'; import { getPreviewServerLocation } from '../get-preview-server-location.js'; import { packageJson } from '../packageJson.js'; +import { styleText } from '../style-text.js'; import { getEnvVariablesForPreviewApp } from './get-env-variables-for-preview-app.js'; import { serveStaticFile } from './serve-static-file.js'; diff --git a/packages/react-email/src/utils/style-text.ts b/packages/react-email/src/utils/style-text.ts new file mode 100644 index 0000000000..331e9e92a3 --- /dev/null +++ b/packages/react-email/src/utils/style-text.ts @@ -0,0 +1,11 @@ +/** + * Centralized fallback for Node versions (<20.12.0) without util.styleText. + * Returns the original text when styleText is unavailable. + */ +import * as nodeUtil from 'node:util'; + +type StyleTextFunction = (style: string, text: string) => string; + +export const styleText: StyleTextFunction = (nodeUtil as any).styleText + ? (nodeUtil as any).styleText + : (_: string, text: string) => text;