@emailens/engine 0.5.2 → 0.7.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 (33) hide show
  1. package/README.md +202 -4
  2. package/dist/{chunk-W4SPWESS.js → chunk-3NDQOTPM.js} +2 -2
  3. package/dist/{chunk-SZ5O5PDZ.js → chunk-OY3DGZVU.js} +2 -2
  4. package/dist/{chunk-EBNA3X7P.js → chunk-URZ4XPST.js} +6 -7
  5. package/dist/chunk-URZ4XPST.js.map +1 -0
  6. package/dist/{chunk-PFONR3YC.js → chunk-ZQF2XUIJ.js} +1 -8
  7. package/dist/{chunk-PFONR3YC.js.map → chunk-ZQF2XUIJ.js.map} +1 -1
  8. package/dist/compile/index.cjs +3 -3
  9. package/dist/compile/index.cjs.map +1 -1
  10. package/dist/compile/index.d.cts +2 -2
  11. package/dist/compile/index.d.ts +2 -2
  12. package/dist/compile/index.js +7 -7
  13. package/dist/index.cjs +594 -60
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.d.cts +147 -4
  16. package/dist/index.d.ts +147 -4
  17. package/dist/index.js +591 -61
  18. package/dist/index.js.map +1 -1
  19. package/dist/maizzle-Y2CLJ7GB.js +8 -0
  20. package/dist/mjml-D7IOYXXK.js +8 -0
  21. package/dist/react-email-4TW6IDAA.js +8 -0
  22. package/dist/{react-email-BQljgXbo.d.cts → react-email-CYOtHJch.d.cts} +48 -1
  23. package/dist/{react-email-BQljgXbo.d.ts → react-email-CYOtHJch.d.ts} +48 -1
  24. package/package.json +1 -1
  25. package/dist/chunk-EBNA3X7P.js.map +0 -1
  26. package/dist/maizzle-YDSYDVSM.js +0 -8
  27. package/dist/mjml-IYGC6AOM.js +0 -8
  28. package/dist/react-email-ZSQKM36O.js +0 -8
  29. /package/dist/{chunk-W4SPWESS.js.map → chunk-3NDQOTPM.js.map} +0 -0
  30. /package/dist/{chunk-SZ5O5PDZ.js.map → chunk-OY3DGZVU.js.map} +0 -0
  31. /package/dist/{maizzle-YDSYDVSM.js.map → maizzle-Y2CLJ7GB.js.map} +0 -0
  32. /package/dist/{mjml-IYGC6AOM.js.map → mjml-D7IOYXXK.js.map} +0 -0
  33. /package/dist/{react-email-ZSQKM36O.js.map → react-email-4TW6IDAA.js.map} +0 -0
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { E as EmailClient, F as Framework, T as TransformResult, C as CSSWarning, a as CodeFix, D as DiffResult, b as ExportPromptOptions, A as AiProvider, c as AiFixResult, S as SpamAnalysisOptions, d as SpamReport, L as LinkReport, e as AccessibilityReport, I as ImageReport } from './react-email-BQljgXbo.cjs';
2
- export { f as AccessibilityIssue, g as CompileError, h as CompileReactEmailOptions, i as EstimateOptions, j as ExportScope, k as FixType, l as ImageInfo, m as ImageIssue, n as InputFormat, o as LinkIssue, P as PreviewResult, p as SandboxStrategy, q as SpamIssue, r as SupportLevel, s as TokenEstimate, t as TokenEstimateWithWarnings, u as estimateAiFixTokens, v as generateFixPrompt, w as heuristicTokenCount } from './react-email-BQljgXbo.cjs';
1
+ import { E as EmailClient, F as Framework, T as TransformResult, C as CSSWarning, a as CodeFix, D as DiffResult, b as ExportPromptOptions, A as AiProvider, c as AiFixResult, S as SpamAnalysisOptions, d as SpamReport, L as LinkReport, e as AccessibilityReport, I as ImageReport, f as InboxPreview, g as SizeReport, h as TemplateReport } from './react-email-CYOtHJch.cjs';
2
+ export { i as AccessibilityIssue, j as ClientTruncation, k as CompileError, l as CompileReactEmailOptions, m as EstimateOptions, n as ExportScope, o as FixType, p as ImageInfo, q as ImageIssue, r as InboxPreviewIssue, s as InputFormat, t as LinkIssue, P as PreviewResult, u as SandboxStrategy, v as SizeIssue, w as SpamIssue, x as SupportLevel, y as TemplateIssue, z as TokenEstimate, B as TokenEstimateWithWarnings, G as estimateAiFixTokens, H as generateFixPrompt, J as heuristicTokenCount } from './react-email-CYOtHJch.cjs';
3
3
 
4
4
  declare const EMAIL_CLIENTS: EmailClient[];
5
5
  declare function getClient(id: string): EmailClient | undefined;
@@ -195,12 +195,41 @@ declare function checkAccessibility(html: string): AccessibilityReport;
195
195
  */
196
196
  declare function analyzeImages(html: string): ImageReport;
197
197
 
198
+ /**
199
+ * Extract subject and preheader text from the email HTML, plus
200
+ * flag common issues (missing title, length problems, etc.).
201
+ *
202
+ * The subject comes from the `<title>` tag. The preheader is extracted
203
+ * from the first visible text in `<body>`, including hidden preheader
204
+ * hacks (zero-width divs, display:none spans, etc.).
205
+ */
206
+ declare function extractInboxPreview(html: string): InboxPreview;
207
+
208
+ /**
209
+ * Check email HTML size for Gmail clipping issues.
210
+ *
211
+ * Returns byte count, human-readable size, clip status, and issues.
212
+ * Gmail clips messages larger than ~102 KB, hiding content behind a
213
+ * "View entire message" link.
214
+ */
215
+ declare function checkSize(html: string): SizeReport;
216
+
217
+ /**
218
+ * Scan HTML email for unresolved template/merge variables.
219
+ *
220
+ * Detects patterns like `{{var}}`, `${var}`, `<%= %>`, `*|TAG|*`,
221
+ * `%%tag%%`, and `{merge_field}` in text content and key attributes.
222
+ *
223
+ * Returns the count of unresolved variables and detailed issues.
224
+ */
225
+ declare function checkTemplateVariables(html: string): TemplateReport;
226
+
198
227
  interface AuditOptions {
199
228
  framework?: Framework;
200
229
  /** Options for spam analysis */
201
230
  spam?: SpamAnalysisOptions;
202
231
  /** Skip specific checks */
203
- skip?: Array<"spam" | "links" | "accessibility" | "images" | "compatibility">;
232
+ skip?: Array<"spam" | "links" | "accessibility" | "images" | "compatibility" | "inboxPreview" | "size" | "templateVariables">;
204
233
  }
205
234
  interface AuditReport {
206
235
  compatibility: {
@@ -216,6 +245,9 @@ interface AuditReport {
216
245
  links: LinkReport;
217
246
  accessibility: AccessibilityReport;
218
247
  images: ImageReport;
248
+ inboxPreview: InboxPreview;
249
+ size: SizeReport;
250
+ templateVariables: TemplateReport;
219
251
  }
220
252
  /**
221
253
  * Run all email analysis checks in a single call.
@@ -223,9 +255,120 @@ interface AuditReport {
223
255
  * Returns a unified report with compatibility warnings + scores,
224
256
  * spam analysis, link validation, accessibility audit, and image analysis.
225
257
  * Use the `skip` option to omit checks you don't need.
258
+ *
259
+ * Internally parses the HTML once and shares the parsed DOM across
260
+ * all analyzers to avoid redundant parsing overhead.
226
261
  */
227
262
  declare function auditEmail(html: string, options?: AuditOptions): AuditReport;
228
263
 
264
+ interface CreateSessionOptions {
265
+ /** Framework for fix snippets (applies to analyze/audit/transform). */
266
+ framework?: Framework;
267
+ }
268
+ /**
269
+ * A pre-parsed email session.
270
+ *
271
+ * Analysis methods (`analyze`, `audit`, `analyzeSpam`, `validateLinks`,
272
+ * `checkAccessibility`, `analyzeImages`) share a single Cheerio DOM
273
+ * parse, eliminating redundant parsing overhead.
274
+ *
275
+ * Transformation methods (`transformForClient`, `transformForAllClients`,
276
+ * `simulateDarkMode`) parse internally since they mutate the DOM per
277
+ * client. They still benefit from having the session hold the HTML and
278
+ * framework so you don't need to pass them repeatedly.
279
+ */
280
+ interface EmailSession {
281
+ /** The original HTML string. */
282
+ readonly html: string;
283
+ /** The framework set at session creation. */
284
+ readonly framework: Framework | undefined;
285
+ /**
286
+ * Run all analysis checks in one call (shares pre-parsed DOM).
287
+ *
288
+ * Equivalent to `auditEmail()` but avoids re-parsing the HTML.
289
+ */
290
+ audit(options?: Omit<AuditOptions, "framework">): AuditReport;
291
+ /**
292
+ * Analyze CSS compatibility warnings (shares pre-parsed DOM).
293
+ *
294
+ * Equivalent to `analyzeEmail()` but avoids re-parsing the HTML.
295
+ */
296
+ analyze(): CSSWarning[];
297
+ /** Generate per-client compatibility scores from warnings. */
298
+ score(warnings: CSSWarning[]): Record<string, {
299
+ score: number;
300
+ errors: number;
301
+ warnings: number;
302
+ info: number;
303
+ }>;
304
+ /** Analyze spam indicators (shares pre-parsed DOM). */
305
+ analyzeSpam(options?: SpamAnalysisOptions): SpamReport;
306
+ /** Validate links (shares pre-parsed DOM). */
307
+ validateLinks(): LinkReport;
308
+ /** Check accessibility (shares pre-parsed DOM). */
309
+ checkAccessibility(): AccessibilityReport;
310
+ /** Analyze images (shares pre-parsed DOM). */
311
+ analyzeImages(): ImageReport;
312
+ /** Extract subject line and preheader text (shares pre-parsed DOM). */
313
+ extractInboxPreview(): InboxPreview;
314
+ /** Check email size for Gmail clipping (needs raw HTML for byte count). */
315
+ checkSize(): SizeReport;
316
+ /** Scan for unresolved template/merge variables (shares pre-parsed DOM). */
317
+ checkTemplateVariables(): TemplateReport;
318
+ /**
319
+ * Transform HTML for a specific client.
320
+ *
321
+ * Creates an isolated DOM copy per call (transforms mutate the DOM).
322
+ */
323
+ transformForClient(clientId: string): TransformResult;
324
+ /**
325
+ * Transform HTML for all 12 email clients.
326
+ *
327
+ * Creates an isolated DOM copy per client (transforms mutate the DOM).
328
+ */
329
+ transformForAllClients(): TransformResult[];
330
+ /**
331
+ * Simulate dark mode for a specific client.
332
+ *
333
+ * Creates an isolated DOM copy per call (simulation mutates the DOM).
334
+ * Operates on the **original** HTML — if you need dark mode on
335
+ * already-transformed HTML, use the standalone `simulateDarkMode()` instead.
336
+ */
337
+ simulateDarkMode(clientId: string): {
338
+ html: string;
339
+ warnings: CSSWarning[];
340
+ };
341
+ }
342
+ /**
343
+ * Create a session that pre-parses the HTML once and shares the parsed
344
+ * DOM across all read-only analysis operations.
345
+ *
346
+ * Use this when you need to call multiple analysis functions on the
347
+ * same HTML — it eliminates redundant `cheerio.load()` calls.
348
+ *
349
+ * @example
350
+ * ```typescript
351
+ * import { createSession } from "@emailens/engine";
352
+ *
353
+ * const session = createSession(html, { framework: "jsx" });
354
+ *
355
+ * // These all share a single DOM parse:
356
+ * const warnings = session.analyze();
357
+ * const scores = session.score(warnings);
358
+ * const spam = session.analyzeSpam();
359
+ * const links = session.validateLinks();
360
+ * const a11y = session.checkAccessibility();
361
+ * const images = session.analyzeImages();
362
+ *
363
+ * // Or run everything at once:
364
+ * const report = session.audit();
365
+ *
366
+ * // Transforms still work (parse internally per client):
367
+ * const transforms = session.transformForAllClients();
368
+ * ```
369
+ */
370
+ declare function createSession(html: string, options?: CreateSessionOptions): EmailSession;
371
+
229
372
  /**
230
373
  * Shared constants used across the engine.
231
374
  */
@@ -270,4 +413,4 @@ declare function wcagGrade(ratio: number): WcagGrade;
270
413
  */
271
414
  declare function alphaBlend(fg: RGBA, bgR: number, bgG: number, bgB: number): [number, number, number];
272
415
 
273
- export { AI_FIX_SYSTEM_PROMPT, AccessibilityReport, AiFixResult, AiProvider, type AuditOptions, type AuditReport, CSSWarning, CodeFix, DiffResult, EMAIL_CLIENTS, EmailClient, ExportPromptOptions, Framework, GENERIC_LINK_TEXT, type GenerateAiFixOptions, ImageReport, LinkReport, MAX_HTML_SIZE, type RGBA, STRUCTURAL_FIX_PROPERTIES, SpamAnalysisOptions, SpamReport, TransformResult, type WcagGrade, alphaBlend, analyzeEmail, analyzeImages, analyzeSpam, auditEmail, checkAccessibility, contrastRatio, diffResults, errorWarnings, generateAiFix, generateCompatibilityScore, getClient, getCodeFix, getSuggestion, parseColor, relativeLuminance, simulateDarkMode, structuralWarnings, transformForAllClients, transformForClient, validateLinks, warningsForClient, wcagGrade };
416
+ export { AI_FIX_SYSTEM_PROMPT, AccessibilityReport, AiFixResult, AiProvider, type AuditOptions, type AuditReport, CSSWarning, CodeFix, type CreateSessionOptions, DiffResult, EMAIL_CLIENTS, EmailClient, type EmailSession, ExportPromptOptions, Framework, GENERIC_LINK_TEXT, type GenerateAiFixOptions, ImageReport, InboxPreview, LinkReport, MAX_HTML_SIZE, type RGBA, STRUCTURAL_FIX_PROPERTIES, SizeReport, SpamAnalysisOptions, SpamReport, TemplateReport, TransformResult, type WcagGrade, alphaBlend, analyzeEmail, analyzeImages, analyzeSpam, auditEmail, checkAccessibility, checkSize, checkTemplateVariables, contrastRatio, createSession, diffResults, errorWarnings, extractInboxPreview, generateAiFix, generateCompatibilityScore, getClient, getCodeFix, getSuggestion, parseColor, relativeLuminance, simulateDarkMode, structuralWarnings, transformForAllClients, transformForClient, validateLinks, warningsForClient, wcagGrade };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { E as EmailClient, F as Framework, T as TransformResult, C as CSSWarning, a as CodeFix, D as DiffResult, b as ExportPromptOptions, A as AiProvider, c as AiFixResult, S as SpamAnalysisOptions, d as SpamReport, L as LinkReport, e as AccessibilityReport, I as ImageReport } from './react-email-BQljgXbo.js';
2
- export { f as AccessibilityIssue, g as CompileError, h as CompileReactEmailOptions, i as EstimateOptions, j as ExportScope, k as FixType, l as ImageInfo, m as ImageIssue, n as InputFormat, o as LinkIssue, P as PreviewResult, p as SandboxStrategy, q as SpamIssue, r as SupportLevel, s as TokenEstimate, t as TokenEstimateWithWarnings, u as estimateAiFixTokens, v as generateFixPrompt, w as heuristicTokenCount } from './react-email-BQljgXbo.js';
1
+ import { E as EmailClient, F as Framework, T as TransformResult, C as CSSWarning, a as CodeFix, D as DiffResult, b as ExportPromptOptions, A as AiProvider, c as AiFixResult, S as SpamAnalysisOptions, d as SpamReport, L as LinkReport, e as AccessibilityReport, I as ImageReport, f as InboxPreview, g as SizeReport, h as TemplateReport } from './react-email-CYOtHJch.js';
2
+ export { i as AccessibilityIssue, j as ClientTruncation, k as CompileError, l as CompileReactEmailOptions, m as EstimateOptions, n as ExportScope, o as FixType, p as ImageInfo, q as ImageIssue, r as InboxPreviewIssue, s as InputFormat, t as LinkIssue, P as PreviewResult, u as SandboxStrategy, v as SizeIssue, w as SpamIssue, x as SupportLevel, y as TemplateIssue, z as TokenEstimate, B as TokenEstimateWithWarnings, G as estimateAiFixTokens, H as generateFixPrompt, J as heuristicTokenCount } from './react-email-CYOtHJch.js';
3
3
 
4
4
  declare const EMAIL_CLIENTS: EmailClient[];
5
5
  declare function getClient(id: string): EmailClient | undefined;
@@ -195,12 +195,41 @@ declare function checkAccessibility(html: string): AccessibilityReport;
195
195
  */
196
196
  declare function analyzeImages(html: string): ImageReport;
197
197
 
198
+ /**
199
+ * Extract subject and preheader text from the email HTML, plus
200
+ * flag common issues (missing title, length problems, etc.).
201
+ *
202
+ * The subject comes from the `<title>` tag. The preheader is extracted
203
+ * from the first visible text in `<body>`, including hidden preheader
204
+ * hacks (zero-width divs, display:none spans, etc.).
205
+ */
206
+ declare function extractInboxPreview(html: string): InboxPreview;
207
+
208
+ /**
209
+ * Check email HTML size for Gmail clipping issues.
210
+ *
211
+ * Returns byte count, human-readable size, clip status, and issues.
212
+ * Gmail clips messages larger than ~102 KB, hiding content behind a
213
+ * "View entire message" link.
214
+ */
215
+ declare function checkSize(html: string): SizeReport;
216
+
217
+ /**
218
+ * Scan HTML email for unresolved template/merge variables.
219
+ *
220
+ * Detects patterns like `{{var}}`, `${var}`, `<%= %>`, `*|TAG|*`,
221
+ * `%%tag%%`, and `{merge_field}` in text content and key attributes.
222
+ *
223
+ * Returns the count of unresolved variables and detailed issues.
224
+ */
225
+ declare function checkTemplateVariables(html: string): TemplateReport;
226
+
198
227
  interface AuditOptions {
199
228
  framework?: Framework;
200
229
  /** Options for spam analysis */
201
230
  spam?: SpamAnalysisOptions;
202
231
  /** Skip specific checks */
203
- skip?: Array<"spam" | "links" | "accessibility" | "images" | "compatibility">;
232
+ skip?: Array<"spam" | "links" | "accessibility" | "images" | "compatibility" | "inboxPreview" | "size" | "templateVariables">;
204
233
  }
205
234
  interface AuditReport {
206
235
  compatibility: {
@@ -216,6 +245,9 @@ interface AuditReport {
216
245
  links: LinkReport;
217
246
  accessibility: AccessibilityReport;
218
247
  images: ImageReport;
248
+ inboxPreview: InboxPreview;
249
+ size: SizeReport;
250
+ templateVariables: TemplateReport;
219
251
  }
220
252
  /**
221
253
  * Run all email analysis checks in a single call.
@@ -223,9 +255,120 @@ interface AuditReport {
223
255
  * Returns a unified report with compatibility warnings + scores,
224
256
  * spam analysis, link validation, accessibility audit, and image analysis.
225
257
  * Use the `skip` option to omit checks you don't need.
258
+ *
259
+ * Internally parses the HTML once and shares the parsed DOM across
260
+ * all analyzers to avoid redundant parsing overhead.
226
261
  */
227
262
  declare function auditEmail(html: string, options?: AuditOptions): AuditReport;
228
263
 
264
+ interface CreateSessionOptions {
265
+ /** Framework for fix snippets (applies to analyze/audit/transform). */
266
+ framework?: Framework;
267
+ }
268
+ /**
269
+ * A pre-parsed email session.
270
+ *
271
+ * Analysis methods (`analyze`, `audit`, `analyzeSpam`, `validateLinks`,
272
+ * `checkAccessibility`, `analyzeImages`) share a single Cheerio DOM
273
+ * parse, eliminating redundant parsing overhead.
274
+ *
275
+ * Transformation methods (`transformForClient`, `transformForAllClients`,
276
+ * `simulateDarkMode`) parse internally since they mutate the DOM per
277
+ * client. They still benefit from having the session hold the HTML and
278
+ * framework so you don't need to pass them repeatedly.
279
+ */
280
+ interface EmailSession {
281
+ /** The original HTML string. */
282
+ readonly html: string;
283
+ /** The framework set at session creation. */
284
+ readonly framework: Framework | undefined;
285
+ /**
286
+ * Run all analysis checks in one call (shares pre-parsed DOM).
287
+ *
288
+ * Equivalent to `auditEmail()` but avoids re-parsing the HTML.
289
+ */
290
+ audit(options?: Omit<AuditOptions, "framework">): AuditReport;
291
+ /**
292
+ * Analyze CSS compatibility warnings (shares pre-parsed DOM).
293
+ *
294
+ * Equivalent to `analyzeEmail()` but avoids re-parsing the HTML.
295
+ */
296
+ analyze(): CSSWarning[];
297
+ /** Generate per-client compatibility scores from warnings. */
298
+ score(warnings: CSSWarning[]): Record<string, {
299
+ score: number;
300
+ errors: number;
301
+ warnings: number;
302
+ info: number;
303
+ }>;
304
+ /** Analyze spam indicators (shares pre-parsed DOM). */
305
+ analyzeSpam(options?: SpamAnalysisOptions): SpamReport;
306
+ /** Validate links (shares pre-parsed DOM). */
307
+ validateLinks(): LinkReport;
308
+ /** Check accessibility (shares pre-parsed DOM). */
309
+ checkAccessibility(): AccessibilityReport;
310
+ /** Analyze images (shares pre-parsed DOM). */
311
+ analyzeImages(): ImageReport;
312
+ /** Extract subject line and preheader text (shares pre-parsed DOM). */
313
+ extractInboxPreview(): InboxPreview;
314
+ /** Check email size for Gmail clipping (needs raw HTML for byte count). */
315
+ checkSize(): SizeReport;
316
+ /** Scan for unresolved template/merge variables (shares pre-parsed DOM). */
317
+ checkTemplateVariables(): TemplateReport;
318
+ /**
319
+ * Transform HTML for a specific client.
320
+ *
321
+ * Creates an isolated DOM copy per call (transforms mutate the DOM).
322
+ */
323
+ transformForClient(clientId: string): TransformResult;
324
+ /**
325
+ * Transform HTML for all 12 email clients.
326
+ *
327
+ * Creates an isolated DOM copy per client (transforms mutate the DOM).
328
+ */
329
+ transformForAllClients(): TransformResult[];
330
+ /**
331
+ * Simulate dark mode for a specific client.
332
+ *
333
+ * Creates an isolated DOM copy per call (simulation mutates the DOM).
334
+ * Operates on the **original** HTML — if you need dark mode on
335
+ * already-transformed HTML, use the standalone `simulateDarkMode()` instead.
336
+ */
337
+ simulateDarkMode(clientId: string): {
338
+ html: string;
339
+ warnings: CSSWarning[];
340
+ };
341
+ }
342
+ /**
343
+ * Create a session that pre-parses the HTML once and shares the parsed
344
+ * DOM across all read-only analysis operations.
345
+ *
346
+ * Use this when you need to call multiple analysis functions on the
347
+ * same HTML — it eliminates redundant `cheerio.load()` calls.
348
+ *
349
+ * @example
350
+ * ```typescript
351
+ * import { createSession } from "@emailens/engine";
352
+ *
353
+ * const session = createSession(html, { framework: "jsx" });
354
+ *
355
+ * // These all share a single DOM parse:
356
+ * const warnings = session.analyze();
357
+ * const scores = session.score(warnings);
358
+ * const spam = session.analyzeSpam();
359
+ * const links = session.validateLinks();
360
+ * const a11y = session.checkAccessibility();
361
+ * const images = session.analyzeImages();
362
+ *
363
+ * // Or run everything at once:
364
+ * const report = session.audit();
365
+ *
366
+ * // Transforms still work (parse internally per client):
367
+ * const transforms = session.transformForAllClients();
368
+ * ```
369
+ */
370
+ declare function createSession(html: string, options?: CreateSessionOptions): EmailSession;
371
+
229
372
  /**
230
373
  * Shared constants used across the engine.
231
374
  */
@@ -270,4 +413,4 @@ declare function wcagGrade(ratio: number): WcagGrade;
270
413
  */
271
414
  declare function alphaBlend(fg: RGBA, bgR: number, bgG: number, bgB: number): [number, number, number];
272
415
 
273
- export { AI_FIX_SYSTEM_PROMPT, AccessibilityReport, AiFixResult, AiProvider, type AuditOptions, type AuditReport, CSSWarning, CodeFix, DiffResult, EMAIL_CLIENTS, EmailClient, ExportPromptOptions, Framework, GENERIC_LINK_TEXT, type GenerateAiFixOptions, ImageReport, LinkReport, MAX_HTML_SIZE, type RGBA, STRUCTURAL_FIX_PROPERTIES, SpamAnalysisOptions, SpamReport, TransformResult, type WcagGrade, alphaBlend, analyzeEmail, analyzeImages, analyzeSpam, auditEmail, checkAccessibility, contrastRatio, diffResults, errorWarnings, generateAiFix, generateCompatibilityScore, getClient, getCodeFix, getSuggestion, parseColor, relativeLuminance, simulateDarkMode, structuralWarnings, transformForAllClients, transformForClient, validateLinks, warningsForClient, wcagGrade };
416
+ export { AI_FIX_SYSTEM_PROMPT, AccessibilityReport, AiFixResult, AiProvider, type AuditOptions, type AuditReport, CSSWarning, CodeFix, type CreateSessionOptions, DiffResult, EMAIL_CLIENTS, EmailClient, type EmailSession, ExportPromptOptions, Framework, GENERIC_LINK_TEXT, type GenerateAiFixOptions, ImageReport, InboxPreview, LinkReport, MAX_HTML_SIZE, type RGBA, STRUCTURAL_FIX_PROPERTIES, SizeReport, SpamAnalysisOptions, SpamReport, TemplateReport, TransformResult, type WcagGrade, alphaBlend, analyzeEmail, analyzeImages, analyzeSpam, auditEmail, checkAccessibility, checkSize, checkTemplateVariables, contrastRatio, createSession, diffResults, errorWarnings, extractInboxPreview, generateAiFix, generateCompatibilityScore, getClient, getCodeFix, getSuggestion, parseColor, relativeLuminance, simulateDarkMode, structuralWarnings, transformForAllClients, transformForClient, validateLinks, warningsForClient, wcagGrade };