react-email 3.0.6 → 3.0.7-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cli/index.js +761 -765
  3. package/dist/cli/index.mjs +473 -481
  4. package/dist/preview/.next/BUILD_ID +1 -1
  5. package/dist/preview/.next/app-build-manifest.json +6 -6
  6. package/dist/preview/.next/build-manifest.json +2 -2
  7. package/dist/preview/.next/cache/.rscinfo +1 -1
  8. package/dist/preview/.next/cache/webpack/client-production/0.pack +0 -0
  9. package/dist/preview/.next/cache/webpack/client-production/index.pack +0 -0
  10. package/dist/preview/.next/cache/webpack/edge-server-production/index.pack +0 -0
  11. package/dist/preview/.next/cache/webpack/server-production/0.pack +0 -0
  12. package/dist/preview/.next/cache/webpack/server-production/index.pack +0 -0
  13. package/dist/preview/.next/next-minimal-server.js.nft.json +1 -1
  14. package/dist/preview/.next/next-server.js.nft.json +1 -1
  15. package/dist/preview/.next/prerender-manifest.json +1 -1
  16. package/dist/preview/.next/server/app/_not-found/page.js +1 -1
  17. package/dist/preview/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/dist/preview/.next/server/app/page.js +1 -1
  19. package/dist/preview/.next/server/app/page.js.nft.json +1 -1
  20. package/dist/preview/.next/server/app/page_client-reference-manifest.js +1 -1
  21. package/dist/preview/.next/server/app/preview/[...slug]/page.js +6 -6
  22. package/dist/preview/.next/server/app/preview/[...slug]/page.js.nft.json +1 -1
  23. package/dist/preview/.next/server/app/preview/[...slug]/page_client-reference-manifest.js +1 -1
  24. package/dist/preview/.next/server/chunks/{391.js → 650.js} +1 -1
  25. package/dist/preview/.next/server/pages/500.html +1 -1
  26. package/dist/preview/.next/server/server-reference-manifest.js +1 -1
  27. package/dist/preview/.next/server/server-reference-manifest.json +1 -1
  28. package/dist/preview/.next/static/chunks/154-ca55c1fde27d0922.js +1 -0
  29. package/dist/preview/.next/static/chunks/app/{layout-a2901ed1c2c53661.js → layout-7b9224888c7ffd05.js} +1 -1
  30. package/dist/preview/.next/static/chunks/app/{page-54a86772095e22e0.js → page-36853df2e13e583f.js} +1 -1
  31. package/dist/preview/.next/static/chunks/app/preview/[...slug]/page-48ce00470ce06446.js +1 -0
  32. package/dist/preview/.next/static/css/{eb0a93282704d7ab.css → a34876a6c565fff8.css} +1 -1
  33. package/dist/preview/.next/trace +21 -21
  34. package/package.json +4 -8
  35. package/postcss.config.js +1 -1
  36. package/src/actions/get-email-path-from-slug.ts +7 -4
  37. package/src/actions/render-email-by-path.tsx +3 -3
  38. package/src/app/layout.tsx +1 -1
  39. package/src/app/page.tsx +1 -1
  40. package/src/app/preview/[...slug]/page.tsx +2 -2
  41. package/src/app/preview/[...slug]/preview.tsx +2 -2
  42. package/src/components/button.tsx +1 -1
  43. package/src/components/code-container.tsx +1 -1
  44. package/src/components/heading.tsx +1 -1
  45. package/src/components/sidebar/sidebar-directory-children.tsx +5 -8
  46. package/src/components/sidebar/sidebar-directory.tsx +2 -2
  47. package/src/components/sidebar/sidebar.tsx +2 -2
  48. package/src/components/text.tsx +1 -1
  49. package/src/components/tooltip-content.tsx +1 -1
  50. package/src/components/tooltip.tsx +1 -1
  51. package/src/components/topbar.tsx +1 -1
  52. package/src/hooks/use-email-rendering-result.ts +2 -2
  53. package/src/utils/cn.ts +1 -1
  54. package/src/utils/esbuild/renderring-utilities-exporter.ts +1 -1
  55. package/src/utils/get-email-component.ts +6 -6
  56. package/src/utils/get-emails-directory-metadata.spec.ts +0 -1
  57. package/src/utils/improve-error-with-sourcemap.ts +1 -1
  58. package/src/utils/static-node-modules-for-vm.ts +6 -6
  59. package/tsconfig.json +1 -6
  60. package/.eslintrc.js +0 -52
  61. package/.prettierignore +0 -3
  62. package/.prettierrc.js +0 -8
  63. package/dist/preview/.next/cache/eslint/.cache_1c3sgg +0 -1
  64. package/dist/preview/.next/static/chunks/154-4202f86af36ccff4.js +0 -1
  65. package/dist/preview/.next/static/chunks/app/preview/[...slug]/page-2bfad134b65ddd79.js +0 -1
  66. /package/dist/preview/.next/static/{Trk1e7GzgKOLunAXBDCy- → 3Ni4t_kYMdpL72HxSPHgK}/_buildManifest.js +0 -0
  67. /package/dist/preview/.next/static/{Trk1e7GzgKOLunAXBDCy- → 3Ni4t_kYMdpL72HxSPHgK}/_ssgManifest.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-email",
3
- "version": "3.0.6",
3
+ "version": "3.0.7-canary.0",
4
4
  "description": "A live preview of your emails right in your browser.",
5
5
  "bin": {
6
6
  "email": "./dist/cli/index.js"
@@ -25,7 +25,7 @@
25
25
  "chokidar": "4.0.3",
26
26
  "commander": "11.1.0",
27
27
  "debounce": "2.0.0",
28
- "esbuild": "0.19.11",
28
+ "esbuild": "0.23.0",
29
29
  "glob": "10.3.4",
30
30
  "log-symbols": "4.1.0",
31
31
  "mime-types": "2.1.35",
@@ -53,9 +53,6 @@
53
53
  "@vercel/style-guide": "5.1.0",
54
54
  "autoprefixer": "10.4.20",
55
55
  "clsx": "2.1.0",
56
- "eslint": "8.50.0",
57
- "eslint-config-prettier": "9.0.0",
58
- "eslint-config-turbo": "2.1.0",
59
56
  "framer-motion": "12.0.0-alpha.2",
60
57
  "postcss": "8.4.40",
61
58
  "prism-react-renderer": "2.1.0",
@@ -72,14 +69,13 @@
72
69
  "tsx": "4.9.0",
73
70
  "typescript": "5.1.6",
74
71
  "vitest": "1.1.3",
75
- "@react-email/render": "1.0.4"
72
+ "@react-email/render": "1.0.5-canary.0"
76
73
  },
77
74
  "scripts": {
78
75
  "build": "tsup-node && node build-preview-server.mjs",
79
76
  "dev": "tsup-node --watch",
80
77
  "test": "vitest run",
81
78
  "test:watch": "vitest",
82
- "clean": "rm -rf dist",
83
- "lint": "eslint . && tsc"
79
+ "clean": "rm -rf dist"
84
80
  }
85
81
  }
package/postcss.config.js CHANGED
@@ -5,4 +5,4 @@ module.exports = {
5
5
  tailwindcss: { config: path.resolve(__dirname, 'tailwind.config.ts') },
6
6
  autoprefixer: {},
7
7
  },
8
- }
8
+ };
@@ -1,6 +1,6 @@
1
1
  'use server';
2
- import path from 'node:path';
3
2
  import fs from 'node:fs';
3
+ import path from 'node:path';
4
4
  import { cache } from 'react';
5
5
  import { emailsDirectoryAbsolutePath } from '../utils/emails-directory-absolute-path';
6
6
 
@@ -13,11 +13,14 @@ export const getEmailPathFromSlug = cache(async (slug: string) => {
13
13
 
14
14
  if (fs.existsSync(`${pathWithoutExtension}.tsx`)) {
15
15
  return `${pathWithoutExtension}.tsx`;
16
- } else if (fs.existsSync(`${pathWithoutExtension}.jsx`)) {
16
+ }
17
+ if (fs.existsSync(`${pathWithoutExtension}.jsx`)) {
17
18
  return `${pathWithoutExtension}.jsx`;
18
- } else if (fs.existsSync(`${pathWithoutExtension}.ts`)) {
19
+ }
20
+ if (fs.existsSync(`${pathWithoutExtension}.ts`)) {
19
21
  return `${pathWithoutExtension}.ts`;
20
- } else if (fs.existsSync(`${pathWithoutExtension}.js`)) {
22
+ }
23
+ if (fs.existsSync(`${pathWithoutExtension}.js`)) {
21
24
  return `${pathWithoutExtension}.js`;
22
25
  }
23
26
 
@@ -1,13 +1,13 @@
1
1
  'use server';
2
2
  import fs from 'node:fs';
3
3
  import path from 'node:path';
4
- import ora from 'ora';
5
- import logSymbols from 'log-symbols';
6
4
  import chalk from 'chalk';
5
+ import logSymbols from 'log-symbols';
6
+ import ora from 'ora';
7
7
  import { getEmailComponent } from '../utils/get-email-component';
8
- import type { ErrorObject } from '../utils/types/error-object';
9
8
  import { improveErrorWithSourceMap } from '../utils/improve-error-with-sourcemap';
10
9
  import { registerSpinnerAutostopping } from '../utils/register-spinner-autostopping';
10
+ import type { ErrorObject } from '../utils/types/error-object';
11
11
 
12
12
  export interface RenderedEmailMetadata {
13
13
  markup: string;
@@ -1,7 +1,7 @@
1
1
  import type { Metadata } from 'next';
2
2
  import './globals.css';
3
- import { emailsDirectoryAbsolutePath } from '../utils/emails-directory-absolute-path';
4
3
  import { EmailsProvider } from '../contexts/emails';
4
+ import { emailsDirectoryAbsolutePath } from '../utils/emails-directory-absolute-path';
5
5
  import { getEmailsDirectoryMetadata } from '../utils/get-emails-directory-metadata';
6
6
  import { inter } from './inter';
7
7
 
package/src/app/page.tsx CHANGED
@@ -1,6 +1,6 @@
1
1
  import path from 'node:path';
2
- import Link from 'next/link';
3
2
  import Image from 'next/image';
3
+ import Link from 'next/link';
4
4
  import { Button, Heading, Text } from '../components';
5
5
  import { Shell } from '../components/shell';
6
6
  import { emailsDirectoryAbsolutePath } from '../utils/emails-directory-absolute-path';
@@ -1,11 +1,11 @@
1
1
  import path from 'node:path';
2
- import { Suspense } from 'react';
3
2
  import { redirect } from 'next/navigation';
3
+ import { Suspense } from 'react';
4
4
  import { getEmailPathFromSlug } from '../../../actions/get-email-path-from-slug';
5
5
  import { renderEmailByPath } from '../../../actions/render-email-by-path';
6
6
  import { emailsDirectoryAbsolutePath } from '../../../utils/emails-directory-absolute-path';
7
- import Home from '../../page';
8
7
  import { getEmailsDirectoryMetadata } from '../../../utils/get-emails-directory-metadata';
8
+ import Home from '../../page';
9
9
  import Preview from './preview';
10
10
 
11
11
  export const dynamicParams = true;
@@ -3,13 +3,13 @@
3
3
  import { usePathname, useRouter, useSearchParams } from 'next/navigation';
4
4
  import React from 'react';
5
5
  import { Toaster } from 'sonner';
6
- import { useHotreload } from '../../../hooks/use-hot-reload';
7
6
  import type { EmailRenderingResult } from '../../../actions/render-email-by-path';
8
7
  import { CodeContainer } from '../../../components/code-container';
9
8
  import { Shell } from '../../../components/shell';
10
9
  import { Tooltip } from '../../../components/tooltip';
11
- import { useRenderingMetadata } from '../../../hooks/use-rendering-metadata';
12
10
  import { useEmailRenderingResult } from '../../../hooks/use-email-rendering-result';
11
+ import { useHotreload } from '../../../hooks/use-hot-reload';
12
+ import { useRenderingMetadata } from '../../../hooks/use-rendering-metadata';
13
13
  import { RenderingError } from './rendering-error';
14
14
 
15
15
  interface PreviewProps {
@@ -1,7 +1,7 @@
1
1
  import * as SlotPrimitive from '@radix-ui/react-slot';
2
2
  import * as React from 'react';
3
- import { unreachable } from '../utils/unreachable';
4
3
  import { cn } from '../utils/cn';
4
+ import { unreachable } from '../utils/unreachable';
5
5
 
6
6
  type ButtonElement = React.ElementRef<'button'>;
7
7
  type RootProps = React.ComponentPropsWithoutRef<'button'>;
@@ -2,8 +2,8 @@ import { LayoutGroup, motion } from 'framer-motion';
2
2
  import type { Language } from 'prism-react-renderer';
3
3
  import * as React from 'react';
4
4
  import { copyTextToClipboard } from '../utils';
5
- import languageMap from '../utils/language-map';
6
5
  import { tabTransition } from '../utils/constants';
6
+ import languageMap from '../utils/language-map';
7
7
  import { Code } from './code';
8
8
  import { IconButton } from './icons/icon-button';
9
9
  import { IconCheck } from './icons/icon-check';
@@ -1,6 +1,6 @@
1
1
  import * as SlotPrimitive from '@radix-ui/react-slot';
2
2
  import * as React from 'react';
3
- import { type As, unreachable, cn } from '../utils';
3
+ import { type As, cn, unreachable } from '../utils';
4
4
 
5
5
  export type HeadingSize =
6
6
  | '1'
@@ -1,10 +1,9 @@
1
- import { AnimatePresence, LayoutGroup, motion } from 'framer-motion';
2
1
  import * as Collapsible from '@radix-ui/react-collapsible';
2
+ import { AnimatePresence, LayoutGroup, motion } from 'framer-motion';
3
3
  import Link from 'next/link';
4
4
  import { useSearchParams } from 'next/navigation';
5
- import type { EmailsDirectory } from '../../utils/get-emails-directory-metadata';
6
- import { emailsDirectoryAbsolutePath } from '../../utils/emails-directory-absolute-path';
7
5
  import { cn } from '../../utils';
6
+ import type { EmailsDirectory } from '../../utils/get-emails-directory-metadata';
8
7
  import { IconFile } from '../icons/icon-file';
9
8
  import { SidebarDirectory } from './sidebar-directory';
10
9
 
@@ -15,15 +14,13 @@ export const SidebarDirectoryChildren = (props: {
15
14
  isRoot?: boolean;
16
15
  }) => {
17
16
  const searchParams = useSearchParams();
18
- const isBaseEmailsDirectory =
19
- props.emailsDirectoryMetadata.absolutePath === emailsDirectoryAbsolutePath;
20
17
 
21
18
  return (
22
19
  <AnimatePresence initial={false}>
23
20
  {props.open ? (
24
21
  <Collapsible.Content
25
22
  asChild
26
- className="relative data-[root=true]:mt-2 overflow-y-hidden pl-1"
23
+ className="relative overflow-y-hidden pl-1"
27
24
  forceMount
28
25
  >
29
26
  <motion.div
@@ -35,7 +32,7 @@ export const SidebarDirectoryChildren = (props: {
35
32
  <div className="line absolute left-2.5 w-px h-full bg-slate-6" />
36
33
  )}
37
34
 
38
- <div className="data-[root=true]:py-2 flex flex-col truncate">
35
+ <div className="flex flex-col truncate">
39
36
  <LayoutGroup id="sidebar">
40
37
  {props.emailsDirectoryMetadata.subDirectories.map(
41
38
  (subDirectory) => (
@@ -50,7 +47,7 @@ export const SidebarDirectoryChildren = (props: {
50
47
 
51
48
  {props.emailsDirectoryMetadata.emailFilenames.map(
52
49
  (emailFilename, index) => {
53
- const emailSlug = isBaseEmailsDirectory
50
+ const emailSlug = props.isRoot
54
51
  ? emailFilename
55
52
  : `${props.emailsDirectoryMetadata.relativePath}/${emailFilename}`;
56
53
 
@@ -2,11 +2,11 @@
2
2
  import * as Collapsible from '@radix-ui/react-collapsible';
3
3
  import * as React from 'react';
4
4
  import { cn } from '../../utils';
5
- import { type EmailsDirectory } from '../../utils/get-emails-directory-metadata';
5
+ import type { EmailsDirectory } from '../../utils/get-emails-directory-metadata';
6
6
  import { Heading } from '../heading';
7
+ import { IconArrowDown } from '../icons/icon-arrow-down';
7
8
  import { IconFolder } from '../icons/icon-folder';
8
9
  import { IconFolderOpen } from '../icons/icon-folder-open';
9
- import { IconArrowDown } from '../icons/icon-arrow-down';
10
10
  import { SidebarDirectoryChildren } from './sidebar-directory-children';
11
11
 
12
12
  interface SidebarDirectoryProps {
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import * as React from 'react';
4
3
  import * as Collapsible from '@radix-ui/react-collapsible';
4
+ import * as React from 'react';
5
5
  import { useEmails } from '../../contexts/emails';
6
6
  import { cn } from '../../utils';
7
7
  import { Logo } from '../logo';
@@ -29,7 +29,7 @@ export const Sidebar = ({
29
29
  <Logo />
30
30
  </div>
31
31
  <nav className="p-4 flex-grow lg:pt-0 pl-0 w-screen h-[calc(100vh_-_70px)] lg:w-full lg:min-w-[275px] lg:max-w-[275px] flex flex-col overflow-y-auto">
32
- <Collapsible.Root>
32
+ <Collapsible.Root open>
33
33
  <React.Suspense>
34
34
  <SidebarDirectoryChildren
35
35
  currentEmailOpenSlug={currentEmailOpenSlug}
@@ -1,6 +1,6 @@
1
1
  import * as SlotPrimitive from '@radix-ui/react-slot';
2
2
  import * as React from 'react';
3
- import { type As, unreachable, cn } from '../utils';
3
+ import { type As, cn, unreachable } from '../utils';
4
4
 
5
5
  export type TextSize = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9';
6
6
  export type TextColor = 'gray' | 'white';
@@ -1,7 +1,7 @@
1
1
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
2
2
  import * as React from 'react';
3
- import { cn } from '../utils';
4
3
  import { inter } from '../app/inter';
4
+ import { cn } from '../utils';
5
5
 
6
6
  type ContentElement = React.ElementRef<typeof TooltipPrimitive.Content>;
7
7
  type ContentProps = React.ComponentPropsWithoutRef<
@@ -1,5 +1,5 @@
1
1
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
2
- import * as React from 'react';
2
+ import type * as React from 'react';
3
3
  import { TooltipContent } from './tooltip-content';
4
4
 
5
5
  type RootProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root>;
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import * as ToggleGroup from '@radix-ui/react-toggle-group';
3
3
  import { motion } from 'framer-motion';
4
- import * as React from 'react';
4
+ import type * as React from 'react';
5
5
  import { cn } from '../utils';
6
6
  import { tabTransition } from '../utils/constants';
7
7
  import { Heading } from './heading';
@@ -1,9 +1,9 @@
1
1
  import { useState } from 'react';
2
+ import { getEmailPathFromSlug } from '../actions/get-email-path-from-slug';
2
3
  import {
3
- renderEmailByPath,
4
4
  type EmailRenderingResult,
5
+ renderEmailByPath,
5
6
  } from '../actions/render-email-by-path';
6
- import { getEmailPathFromSlug } from '../actions/get-email-path-from-slug';
7
7
  import { useHotreload } from './use-hot-reload';
8
8
 
9
9
  export const useEmailRenderingResult = (
package/src/utils/cn.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { clsx, type ClassValue } from 'clsx';
1
+ import { type ClassValue, clsx } from 'clsx';
2
2
  import { twMerge } from 'tailwind-merge';
3
3
 
4
4
  export const cn = (...inputs: ClassValue[]) => {
@@ -1,5 +1,5 @@
1
- import path from 'node:path';
2
1
  import { promises as fs } from 'node:fs';
2
+ import path from 'node:path';
3
3
  import type { Loader, PluginBuild, ResolveOptions } from 'esbuild';
4
4
  import { escapeStringForRegex } from './escape-string-for-regex';
5
5
 
@@ -1,15 +1,15 @@
1
1
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
2
  import path from 'node:path';
3
3
  import vm from 'node:vm';
4
- import type React from 'react';
5
- import { type RawSourceMap } from 'source-map-js';
6
- import { type OutputFile, build, type BuildFailure } from 'esbuild';
7
4
  import type { render } from '@react-email/render';
8
- import type { EmailTemplate as EmailComponent } from './types/email-template';
9
- import type { ErrorObject } from './types/error-object';
5
+ import { type BuildFailure, type OutputFile, build } from 'esbuild';
6
+ import type React from 'react';
7
+ import type { RawSourceMap } from 'source-map-js';
8
+ import { renderingUtilitiesExporter } from './esbuild/renderring-utilities-exporter';
10
9
  import { improveErrorWithSourceMap } from './improve-error-with-sourcemap';
11
10
  import { staticNodeModulesForVM } from './static-node-modules-for-vm';
12
- import { renderingUtilitiesExporter } from './esbuild/renderring-utilities-exporter';
11
+ import type { EmailTemplate as EmailComponent } from './types/email-template';
12
+ import type { ErrorObject } from './types/error-object';
13
13
 
14
14
  export const getEmailComponent = async (
15
15
  emailPath: string,
@@ -18,7 +18,6 @@ test('getEmailsDirectoryMetadata on demo emails', async () => {
18
18
  relativePath: 'magic-links',
19
19
  emailFilenames: [
20
20
  'aws-verify-email',
21
- 'jobaccepted-magic-link',
22
21
  'linear-login-code',
23
22
  'notion-magic-link',
24
23
  'plaid-verify-identity',
@@ -1,6 +1,6 @@
1
1
  import path from 'node:path';
2
+ import { type RawSourceMap, SourceMapConsumer } from 'source-map-js';
2
3
  import * as stackTraceParser from 'stacktrace-parser';
3
- import { SourceMapConsumer, type RawSourceMap } from 'source-map-js';
4
4
  import type { ErrorObject } from './types/error-object';
5
5
 
6
6
  export const improveErrorWithSourceMap = (
@@ -48,15 +48,15 @@ import zlib from 'node:zlib';
48
48
  */
49
49
  export const staticNodeModulesForVM = {
50
50
  assert,
51
- 'async_hooks': asyncHooks,
51
+ async_hooks: asyncHooks,
52
52
  buffer,
53
- 'child_process': childProcess,
53
+ child_process: childProcess,
54
54
  cluster,
55
55
  console,
56
56
  constants,
57
57
  crypto,
58
58
  dgram,
59
- 'diagnostics_channel': diagnosticsChannel,
59
+ diagnostics_channel: diagnosticsChannel,
60
60
  dns,
61
61
  domain,
62
62
  events,
@@ -70,14 +70,14 @@ export const staticNodeModulesForVM = {
70
70
  net,
71
71
  os,
72
72
  path,
73
- 'perf_hooks': perfHooks,
73
+ perf_hooks: perfHooks,
74
74
  process,
75
75
  punycode,
76
76
  querystring,
77
77
  readline,
78
78
  repl,
79
79
  stream,
80
- 'string_decoder': stringDecoder,
80
+ string_decoder: stringDecoder,
81
81
  timers,
82
82
  'timers/promises': timersPromises,
83
83
  tls,
@@ -87,6 +87,6 @@ export const staticNodeModulesForVM = {
87
87
  'util/types': utilTypes,
88
88
  v8,
89
89
  vm,
90
- 'worker_threads': workerThreads,
90
+ worker_threads: workerThreads,
91
91
  zlib,
92
92
  };
package/tsconfig.json CHANGED
@@ -30,10 +30,5 @@
30
30
  "outDir": "dist"
31
31
  },
32
32
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
33
- "exclude": [
34
- "tsconfig.export.json",
35
- ".next",
36
- "dist",
37
- "node_modules"
38
- ]
33
+ "exclude": ["tsconfig.export.json", ".next", "dist", "node_modules"]
39
34
  }
package/.eslintrc.js DELETED
@@ -1,52 +0,0 @@
1
- const { resolve } = require('node:path');
2
-
3
- const project = resolve(process.cwd(), './tsconfig.json');
4
-
5
- /** @type {import('eslint').ESLint.ConfigData} */
6
- module.exports = {
7
- extends: [
8
- "@vercel/style-guide/eslint/node",
9
- "@vercel/style-guide/eslint/browser",
10
- "@vercel/style-guide/eslint/typescript",
11
- "@vercel/style-guide/eslint/react",
12
- "@vercel/style-guide/eslint/next",
13
- "eslint-config-turbo",
14
- ]
15
- .map(require.resolve)
16
- .concat(["eslint-config-prettier"]),
17
- parserOptions: {
18
- project,
19
- },
20
- globals: {
21
- React: true,
22
- JSX: true,
23
- },
24
- settings: {
25
- "import/resolver": {
26
- typescript: {
27
- project,
28
- },
29
- },
30
- },
31
- ignorePatterns: ['cli/', 'cli/index.mjs', "node_modules/", "dist/"],
32
- rules: {
33
- "@next/next/no-img-element": "off",
34
- "@typescript-eslint/explicit-function-return-type": "off",
35
- "import/no-default-export": "off",
36
- "jsx-a11y/no-autofocus": "off",
37
- "no-alert": "off",
38
- "react/no-array-index-key": "off",
39
- "react/function-component-definition": [
40
- 2,
41
- {
42
- namedComponents: "arrow-function",
43
- unnamedComponents: "arrow-function",
44
- },
45
- ],
46
- 'import/no-cycle': 'off',
47
- 'import/no-extraneous-dependencies': 'off',
48
- 'turbo/no-undeclared-env-vars': 'off',
49
- 'eslint-comments/require-description': 'off',
50
- 'no-console': 'off',
51
- },
52
- };
package/.prettierignore DELETED
@@ -1,3 +0,0 @@
1
- .react-email
2
- dist
3
- preview/.next
package/.prettierrc.js DELETED
@@ -1,8 +0,0 @@
1
- module.exports = {
2
- quoteProps: 'consistent',
3
- singleQuote: true,
4
- trailingComma: 'all',
5
- printWidth: 80,
6
- useTabs: false,
7
- bracketSpacing: true,
8
- };
@@ -1 +0,0 @@
1
- [{"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/actions/get-email-path-from-slug.ts":"1","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/actions/get-emails-directory-metadata-action.ts":"2","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/actions/render-email-by-path.tsx":"3","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/app/inter.ts":"4","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/app/layout.tsx":"5","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/app/page.tsx":"6","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/app/preview/[...slug]/page.tsx":"7","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/app/preview/[...slug]/preview.tsx":"8","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/app/preview/[...slug]/rendering-error.tsx":"9","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/button.tsx":"10","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/code-container.tsx":"11","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/code.tsx":"12","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/heading.tsx":"13","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-arrow-down.tsx":"14","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-base.tsx":"15","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-button.tsx":"16","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-check.tsx":"17","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-clipboard.tsx":"18","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-download.tsx":"19","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-file.tsx":"20","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-folder-open.tsx":"21","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-folder.tsx":"22","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-hide-sidebar.tsx":"23","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-monitor.tsx":"24","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-phone.tsx":"25","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-source.tsx":"26","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/index.ts":"27","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/logo.tsx":"28","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/send.tsx":"29","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/shell.tsx":"30","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/sidebar/index.ts":"31","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/sidebar/sidebar-directory-children.tsx":"32","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/sidebar/sidebar-directory.tsx":"33","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/sidebar/sidebar.tsx":"34","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/text.tsx":"35","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/tooltip-content.tsx":"36","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/tooltip.tsx":"37","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/topbar.tsx":"38","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/contexts/emails.tsx":"39","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/hooks/use-email-rendering-result.ts":"40","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/hooks/use-hot-reload.ts":"41","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/hooks/use-rendering-metadata.ts":"42","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/cn.ts":"43","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/constants.ts":"44","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/copy-text-to-clipboard.ts":"45","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/emails-directory-absolute-path.ts":"46","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/esbuild/escape-string-for-regex.ts":"47","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/esbuild/renderring-utilities-exporter.ts":"48","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/get-email-component.spec.ts":"49","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/get-email-component.ts":"50","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/get-emails-directory-metadata.spec.ts":"51","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/get-emails-directory-metadata.ts":"52","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/improve-error-with-sourcemap.ts":"53","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/index.ts":"54","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/language-map.ts":"55","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/register-spinner-autostopping.ts":"56","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/static-node-modules-for-vm.ts":"57","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/testing/request-response-email.tsx":"58","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/types/as.ts":"59","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/types/email-template.ts":"60","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/types/error-object.ts":"61","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/types/hot-reload-change.ts":"62","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/types/hot-reload-event.ts":"63","/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/unreachable.ts":"64"},{"size":1195,"mtime":1736427079675,"results":"65","hashOfConfig":"66"},{"size":579,"mtime":1736443358596,"results":"67","hashOfConfig":"66"},{"size":3522,"mtime":1736427079675,"results":"68","hashOfConfig":"66"},{"size":145,"mtime":1725458511028,"results":"69","hashOfConfig":"66"},{"size":1074,"mtime":1736443358599,"results":"70","hashOfConfig":"66"},{"size":1588,"mtime":1725458511028,"results":"71","hashOfConfig":"66"},{"size":2498,"mtime":1736443358599,"results":"72","hashOfConfig":"66"},{"size":4495,"mtime":1736427079675,"results":"73","hashOfConfig":"66"},{"size":1698,"mtime":1725458511028,"results":"74","hashOfConfig":"66"},{"size":2220,"mtime":1725458511028,"results":"75","hashOfConfig":"66"},{"size":4619,"mtime":1725458511028,"results":"76","hashOfConfig":"66"},{"size":3184,"mtime":1729525799201,"results":"77","hashOfConfig":"66"},{"size":2418,"mtime":1725458511028,"results":"78","hashOfConfig":"66"},{"size":486,"mtime":1725458511028,"results":"79","hashOfConfig":"66"},{"size":564,"mtime":1725458511028,"results":"80","hashOfConfig":"66"},{"size":631,"mtime":1725458511028,"results":"81","hashOfConfig":"66"},{"size":538,"mtime":1725458511028,"results":"82","hashOfConfig":"66"},{"size":1336,"mtime":1725458511028,"results":"83","hashOfConfig":"66"},{"size":607,"mtime":1725458511028,"results":"84","hashOfConfig":"66"},{"size":909,"mtime":1725458511028,"results":"85","hashOfConfig":"66"},{"size":1437,"mtime":1725458511028,"results":"86","hashOfConfig":"66"},{"size":950,"mtime":1725458511028,"results":"87","hashOfConfig":"66"},{"size":1240,"mtime":1725458511028,"results":"88","hashOfConfig":"66"},{"size":775,"mtime":1725458511028,"results":"89","hashOfConfig":"66"},{"size":857,"mtime":1725458511028,"results":"90","hashOfConfig":"66"},{"size":569,"mtime":1725458511028,"results":"91","hashOfConfig":"66"},{"size":178,"mtime":1725458511028,"results":"92","hashOfConfig":"66"},{"size":11813,"mtime":1725458511028,"results":"93","hashOfConfig":"66"},{"size":4736,"mtime":1732204555127,"results":"94","hashOfConfig":"66"},{"size":3837,"mtime":1729525799201,"results":"95","hashOfConfig":"66"},{"size":27,"mtime":1725458511028,"results":"96","hashOfConfig":"66"},{"size":5306,"mtime":1736443358599,"results":"97","hashOfConfig":"66"},{"size":2910,"mtime":1736443358599,"results":"98","hashOfConfig":"66"},{"size":1309,"mtime":1725458511028,"results":"99","hashOfConfig":"66"},{"size":2336,"mtime":1725458511028,"results":"100","hashOfConfig":"66"},{"size":943,"mtime":1725458511028,"results":"101","hashOfConfig":"66"},{"size":642,"mtime":1725458511028,"results":"102","hashOfConfig":"66"},{"size":6168,"mtime":1725458511028,"results":"103","hashOfConfig":"66"},{"size":1716,"mtime":1736443358599,"results":"104","hashOfConfig":"66"},{"size":1351,"mtime":1736427079675,"results":"105","hashOfConfig":"66"},{"size":854,"mtime":1725458511028,"results":"106","hashOfConfig":"66"},{"size":1169,"mtime":1736427079675,"results":"107","hashOfConfig":"66"},{"size":173,"mtime":1725458511028,"results":"108","hashOfConfig":"66"},{"size":97,"mtime":1729525799201,"results":"109","hashOfConfig":"66"},{"size":176,"mtime":1725458511028,"results":"110","hashOfConfig":"66"},{"size":406,"mtime":1725458511028,"results":"111","hashOfConfig":"66"},{"size":136,"mtime":1725458511032,"results":"112","hashOfConfig":"66"},{"size":2297,"mtime":1732203775431,"results":"113","hashOfConfig":"66"},{"size":1193,"mtime":1732204556694,"results":"114","hashOfConfig":"66"},{"size":4632,"mtime":1732204556694,"results":"115","hashOfConfig":"66"},{"size":2590,"mtime":1736443358599,"results":"116","hashOfConfig":"66"},{"size":3399,"mtime":1736443358599,"results":"117","hashOfConfig":"66"},{"size":2774,"mtime":1725458511032,"results":"118","hashOfConfig":"66"},{"size":155,"mtime":1725458511032,"results":"119","hashOfConfig":"66"},{"size":114,"mtime":1725458511032,"results":"120","hashOfConfig":"66"},{"size":553,"mtime":1736427067792,"results":"121","hashOfConfig":"66"},{"size":2322,"mtime":1732204556694,"results":"122","hashOfConfig":"66"},{"size":202,"mtime":1732204556694,"results":"123","hashOfConfig":"66"},{"size":630,"mtime":1725458511032,"results":"124","hashOfConfig":"66"},{"size":267,"mtime":1725458511032,"results":"125","hashOfConfig":"66"},{"size":271,"mtime":1725458511032,"results":"126","hashOfConfig":"66"},{"size":141,"mtime":1725458511032,"results":"127","hashOfConfig":"66"},{"size":92,"mtime":1736427079675,"results":"128","hashOfConfig":"66"},{"size":259,"mtime":1725458511032,"results":"129","hashOfConfig":"66"},{"filePath":"130","messages":"131","suppressedMessages":"132","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1arz54o",{"filePath":"133","messages":"134","suppressedMessages":"135","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"136","messages":"137","suppressedMessages":"138","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"139","messages":"140","suppressedMessages":"141","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"142","messages":"143","suppressedMessages":"144","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"145","messages":"146","suppressedMessages":"147","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"148","messages":"149","suppressedMessages":"150","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"151","messages":"152","suppressedMessages":"153","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"154","messages":"155","suppressedMessages":"156","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"157","messages":"158","suppressedMessages":"159","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"160","messages":"161","suppressedMessages":"162","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"163","messages":"164","suppressedMessages":"165","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"166","messages":"167","suppressedMessages":"168","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"169","messages":"170","suppressedMessages":"171","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"172","messages":"173","suppressedMessages":"174","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"175","messages":"176","suppressedMessages":"177","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"178","messages":"179","suppressedMessages":"180","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"181","messages":"182","suppressedMessages":"183","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"184","messages":"185","suppressedMessages":"186","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"187","messages":"188","suppressedMessages":"189","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"190","messages":"191","suppressedMessages":"192","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"193","messages":"194","suppressedMessages":"195","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"196","messages":"197","suppressedMessages":"198","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"199","messages":"200","suppressedMessages":"201","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"202","messages":"203","suppressedMessages":"204","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"205","messages":"206","suppressedMessages":"207","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"208","messages":"209","suppressedMessages":"210","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"211","messages":"212","suppressedMessages":"213","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"214","messages":"215","suppressedMessages":"216","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"217","messages":"218","suppressedMessages":"219","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"220","messages":"221","suppressedMessages":"222","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"223","messages":"224","suppressedMessages":"225","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"226","messages":"227","suppressedMessages":"228","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"229","messages":"230","suppressedMessages":"231","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"232","messages":"233","suppressedMessages":"234","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"235","messages":"236","suppressedMessages":"237","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"238","messages":"239","suppressedMessages":"240","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"241","messages":"242","suppressedMessages":"243","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"244","messages":"245","suppressedMessages":"246","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"247","messages":"248","suppressedMessages":"249","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"250","messages":"251","suppressedMessages":"252","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"253","messages":"254","suppressedMessages":"255","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"256","messages":"257","suppressedMessages":"258","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"259","messages":"260","suppressedMessages":"261","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"262","messages":"263","suppressedMessages":"264","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"265","messages":"266","suppressedMessages":"267","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"268","messages":"269","suppressedMessages":"270","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"271","messages":"272","suppressedMessages":"273","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"274","messages":"275","suppressedMessages":"276","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"277","messages":"278","suppressedMessages":"279","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"280","messages":"281","suppressedMessages":"282","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"283","messages":"284","suppressedMessages":"285","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"286","messages":"287","suppressedMessages":"288","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"289","messages":"290","suppressedMessages":"291","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"292","messages":"293","suppressedMessages":"294","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"295","messages":"296","suppressedMessages":"297","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"298","messages":"299","suppressedMessages":"300","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"301","messages":"302","suppressedMessages":"303","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"304","messages":"305","suppressedMessages":"306","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"307","messages":"308","suppressedMessages":"309","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"310","messages":"311","suppressedMessages":"312","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"313","messages":"314","suppressedMessages":"315","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"316","messages":"317","suppressedMessages":"318","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"319","messages":"320","suppressedMessages":"321","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/actions/get-email-path-from-slug.ts",[],["322"],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/actions/get-emails-directory-metadata-action.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/actions/render-email-by-path.tsx",[],["323"],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/app/inter.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/app/layout.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/app/page.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/app/preview/[...slug]/page.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/app/preview/[...slug]/preview.tsx",[],["324"],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/app/preview/[...slug]/rendering-error.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/button.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/code-container.tsx",[],["325"],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/code.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/heading.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-arrow-down.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-base.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-button.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-check.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-clipboard.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-download.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-file.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-folder-open.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-folder.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-hide-sidebar.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-monitor.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-phone.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/icons/icon-source.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/index.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/logo.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/send.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/shell.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/sidebar/index.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/sidebar/sidebar-directory-children.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/sidebar/sidebar-directory.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/sidebar/sidebar.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/text.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/tooltip-content.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/tooltip.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/components/topbar.tsx",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/contexts/emails.tsx",[],["326"],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/hooks/use-email-rendering-result.ts",[],["327"],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/hooks/use-hot-reload.ts",[],["328"],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/hooks/use-rendering-metadata.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/cn.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/constants.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/copy-text-to-clipboard.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/emails-directory-absolute-path.ts",[],["329","330","331"],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/esbuild/escape-string-for-regex.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/esbuild/renderring-utilities-exporter.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/get-email-component.spec.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/get-email-component.ts",[],["332","333","334","335","336","337"],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/get-emails-directory-metadata.spec.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/get-emails-directory-metadata.ts",[],["338","339"],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/improve-error-with-sourcemap.ts",[],["340"],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/index.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/language-map.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/register-spinner-autostopping.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/static-node-modules-for-vm.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/testing/request-response-email.tsx",[],["341","342"],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/types/as.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/types/email-template.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/types/error-object.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/types/hot-reload-change.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/types/hot-reload-event.ts",[],[],"/home/gabriel/Projects/Resend/react-email.git/tertiary/packages/react-email/src/utils/unreachable.ts",[],[],{"ruleId":"343","severity":2,"message":"344","line":8,"column":64,"nodeType":"345","messageId":"346","endLine":8,"endColumn":66,"suppressions":"347"},{"ruleId":"348","severity":2,"message":"349","line":32,"column":36,"nodeType":"350","messageId":"351","endLine":32,"endColumn":57,"suppressions":"352"},{"ruleId":"353","severity":2,"message":"354","line":50,"column":5,"nodeType":"355","endLine":50,"endColumn":17,"suppressions":"356"},{"ruleId":"348","severity":2,"message":"349","line":56,"column":33,"nodeType":"350","messageId":"351","endLine":56,"endColumn":50,"suggestions":"357","suppressions":"358"},{"ruleId":"353","severity":2,"message":"354","line":37,"column":5,"nodeType":"355","endLine":37,"endColumn":17,"suppressions":"359"},{"ruleId":"353","severity":2,"message":"354","line":19,"column":5,"nodeType":"355","endLine":19,"endColumn":17,"suppressions":"360"},{"ruleId":"361","severity":2,"message":"362","line":12,"column":51,"nodeType":"363","messageId":"364","endLine":12,"endColumn":54,"suggestions":"365","suppressions":"366"},{"ruleId":"348","severity":2,"message":"349","line":3,"column":38,"nodeType":"350","messageId":"351","endLine":3,"endColumn":75,"suppressions":"367"},{"ruleId":"348","severity":2,"message":"349","line":6,"column":36,"nodeType":"350","messageId":"351","endLine":6,"endColumn":70,"suppressions":"368"},{"ruleId":"348","severity":2,"message":"349","line":10,"column":3,"nodeType":"350","messageId":"351","endLine":10,"endColumn":40,"suppressions":"369"},{"ruleId":"348","severity":2,"message":"349","line":60,"column":25,"nodeType":"350","messageId":"351","endLine":60,"endColumn":40,"suppressions":"370"},{"ruleId":"348","severity":2,"message":"349","line":61,"column":28,"nodeType":"350","messageId":"351","endLine":61,"endColumn":43,"suppressions":"371"},{"ruleId":"348","severity":2,"message":"349","line":93,"column":13,"nodeType":"350","messageId":"351","endLine":93,"endColumn":29,"suppressions":"372"},{"ruleId":"373","severity":2,"message":"374","line":98,"column":9,"nodeType":"375","messageId":"376","endLine":98,"endColumn":42,"suppressions":"377"},{"ruleId":"378","severity":2,"message":"379","line":102,"column":14,"nodeType":"380","messageId":"381","endLine":102,"endColumn":43,"suppressions":"382"},{"ruleId":"383","severity":2,"message":"384","line":102,"column":25,"nodeType":"355","messageId":"385","endLine":102,"endColumn":40,"fix":"386","suppressions":"387"},{"ruleId":"348","severity":2,"message":"349","line":46,"column":30,"nodeType":"350","messageId":"351","endLine":46,"endColumn":80,"suppressions":"388"},{"ruleId":"348","severity":2,"message":"349","line":111,"column":20,"nodeType":"350","messageId":"351","endLine":111,"endColumn":72,"suppressions":"389"},{"ruleId":"390","severity":2,"message":"391","line":52,"column":15,"nodeType":"392","messageId":"393","endLine":52,"endColumn":39,"suppressions":"394"},{"ruleId":"395","severity":2,"message":"396","line":2,"column":7,"nodeType":"355","messageId":"397","endLine":2,"endColumn":10,"suppressions":"398"},{"ruleId":"395","severity":2,"message":"399","line":3,"column":7,"nodeType":"355","messageId":"397","endLine":3,"endColumn":10,"suppressions":"400"},"@typescript-eslint/require-await","Async arrow function has no 'await' expression.","ArrowFunctionExpression","missingAwait",["401"],"@typescript-eslint/no-non-null-assertion","Forbidden non-null assertion.","TSNonNullExpression","noNonNull",["402"],"react-hooks/rules-of-hooks","React Hook \"useHotreload\" is called conditionally. React Hooks must be called in the exact same order in every component render.","Identifier",["403"],["404"],["405"],["406"],["407"],"@typescript-eslint/no-explicit-any","Unexpected any. Specify a different type.","TSAnyKeyword","unexpectedAny",["408","409"],["410"],["411"],["412"],["413"],["414"],["415"],["416"],"@typescript-eslint/no-unsafe-return","Unsafe return of an `any` typed value.","ReturnStatement","unsafeReturn",["417"],"@typescript-eslint/no-var-requires","Require statement not part of import statement.","CallExpression","noVarReqs",["418"],"@typescript-eslint/no-useless-template-literals","Template literal expression is unnecessary and can be simplified.","noUselessTemplateLiteral",{"range":"419","text":"420"},["421"],["422"],["423"],"@typescript-eslint/no-unnecessary-condition","Unnecessary conditional, expected left-hand side of `??` operator to be possibly null or undefined.","MemberExpression","neverNullish",["424"],"@typescript-eslint/no-unused-vars","'req' is assigned a value but never used. Allowed unused vars must match /^_/u.","unusedVar",["425"],"'res' is assigned a value but never used. Allowed unused vars must match /^_/u.",["426"],{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"messageId":"429","fix":"430","desc":"431"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"messageId":"432","fix":"433","desc":"434"},{"messageId":"435","fix":"436","desc":"437"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},[2935,2955],"specifiedModule",{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},{"kind":"427","justification":"428"},"directive","","suggestOptionalChain",{"range":"438","text":"439"},"Consider using the optional chain operator `?.` instead. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator.","suggestUnknown",{"range":"440","text":"441"},"Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.","suggestNever",{"range":"442","text":"443"},"Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.",[1779,1780],"?",[452,455],"unknown",[452,455],"never"]