@samva/markup 0.8.0 → 0.10.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 (172) hide show
  1. package/AGENTS.md +107 -46
  2. package/CHANGELOG.md +345 -0
  3. package/README.md +188 -52
  4. package/dist/{brand-DcoVkh_S.d.ts → assets-BIsyMQ92.d.ts} +41 -11
  5. package/dist/{email/brand.js → brand-C0MKTwmX.js} +64 -4
  6. package/dist/{theme-css.d.ts → brand.d.ts} +12 -3
  7. package/dist/brand.js +4 -0
  8. package/dist/channel-specs-C2feJwuP.d.ts +13 -0
  9. package/dist/compiler.d.ts +88 -115
  10. package/dist/compiler.js +750 -171
  11. package/dist/components-BZCqegS8.js +1864 -0
  12. package/dist/diagnostic-model-DJtqbETd.js +38 -0
  13. package/dist/{diagnostics-OcQKQYSY.d.ts → diagnostic-model-DxthUZBT.d.ts} +3 -21
  14. package/dist/{diagnostics-BMYtBCQk.d.ts → diagnostics-B-Gym34R.d.ts} +8 -4
  15. package/dist/{email/diagnostics.js → diagnostics-CnKFefKz.js} +4 -3
  16. package/dist/diagnostics.d.ts +410 -2
  17. package/dist/diagnostics.js +402 -52
  18. package/dist/edit.d.ts +234 -0
  19. package/dist/edit.js +947 -0
  20. package/dist/email/jsx-dev-runtime.d.ts +2 -2
  21. package/dist/email/jsx-dev-runtime.js +1 -2
  22. package/dist/email/jsx-runtime.d.ts +1 -1
  23. package/dist/email/jsx-runtime.js +1 -85
  24. package/dist/{email/components.d.ts → email.d.ts} +22 -11
  25. package/dist/email.js +2 -0
  26. package/dist/fmt.d.ts +32 -0
  27. package/dist/fmt.js +174 -0
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.js +2 -0
  30. package/dist/{render-vAv_4r9v.js → ir-CLhlklKV.js} +96 -279
  31. package/dist/jsx-runtime-CBlexoeR.js +98 -0
  32. package/dist/{elements-BzjjnoCS.d.ts → jsx-runtime-ylIOnaSf.d.ts} +76 -76
  33. package/dist/profile-pWGtWZXF.js +3803 -0
  34. package/dist/render-BPonDpCl.d.ts +539 -0
  35. package/dist/render-BQmfh94k.js +257 -0
  36. package/dist/render.d.ts +35 -0
  37. package/dist/render.js +49 -0
  38. package/dist/sms.d.ts +16 -0
  39. package/dist/sms.js +12 -0
  40. package/dist/source-locations-C8wCsiAy.d.ts +23 -0
  41. package/dist/template-DMPwxMSq.d.ts +65 -0
  42. package/dist/template-zLUjcwfF.js +42 -0
  43. package/dist/{theme-css-hFqcPSar.js → theme-css-JtRCm1fb.js} +2 -2
  44. package/dist/whatsapp.d.ts +57 -0
  45. package/dist/whatsapp.js +22 -0
  46. package/generated/contract.json +1788 -0
  47. package/generated/reference.md +360 -0
  48. package/package.json +46 -239
  49. package/samva-brand.d.ts +4 -4
  50. package/skills/sml/SKILL.md +123 -0
  51. package/dist/ast-BrDtApwS.d.ts +0 -107
  52. package/dist/ast.d.ts +0 -2
  53. package/dist/ast.js +0 -124
  54. package/dist/candidate.d.ts +0 -29
  55. package/dist/candidate.js +0 -88
  56. package/dist/catalog-CKuOooB8.d.ts +0 -354
  57. package/dist/checks-D73Xizbw.js +0 -59366
  58. package/dist/checks.d.ts +0 -33
  59. package/dist/checks.js +0 -2
  60. package/dist/classes.d.ts +0 -26
  61. package/dist/classes.js +0 -184
  62. package/dist/compile-sms.d.ts +0 -28
  63. package/dist/compile-sms.js +0 -44
  64. package/dist/compile-whatsapp.d.ts +0 -56
  65. package/dist/compile-whatsapp.js +0 -186
  66. package/dist/compile.d.ts +0 -18
  67. package/dist/compile.js +0 -29
  68. package/dist/components.d.ts +0 -289
  69. package/dist/components.js +0 -106
  70. package/dist/conditionals.d.ts +0 -10
  71. package/dist/conditionals.js +0 -74
  72. package/dist/corpus-CPPfgAHN.d.ts +0 -106
  73. package/dist/css-CS2jLID6.d.ts +0 -109
  74. package/dist/email/assets.d.ts +0 -40
  75. package/dist/email/assets.js +0 -63
  76. package/dist/email/brand-footer.d.ts +0 -34
  77. package/dist/email/brand-footer.js +0 -62
  78. package/dist/email/brand.d.ts +0 -2
  79. package/dist/email/components.js +0 -240
  80. package/dist/email/diagnostics.d.ts +0 -2
  81. package/dist/email/elements.d.ts +0 -2
  82. package/dist/email/elements.js +0 -299
  83. package/dist/email/html.d.ts +0 -2
  84. package/dist/email/html.js +0 -278
  85. package/dist/email/render.d.ts +0 -50
  86. package/dist/email/render.js +0 -3
  87. package/dist/email/selection.d.ts +0 -2
  88. package/dist/email/selection.js +0 -91
  89. package/dist/email/source-edit.d.ts +0 -67
  90. package/dist/email/source-edit.js +0 -185
  91. package/dist/email/stylesheets.d.ts +0 -15
  92. package/dist/email/stylesheets.js +0 -48
  93. package/dist/email/text.d.ts +0 -7
  94. package/dist/email/text.js +0 -100
  95. package/dist/emit.d.ts +0 -51
  96. package/dist/emit.js +0 -151
  97. package/dist/html-Bl9BAdqc.d.ts +0 -42
  98. package/dist/interpolate.d.ts +0 -24
  99. package/dist/interpolate.js +0 -43
  100. package/dist/jsx-dev-runtime.d.ts +0 -11
  101. package/dist/jsx-dev-runtime.js +0 -15
  102. package/dist/jsx-runtime-I-1nCtl2.d.ts +0 -57
  103. package/dist/jsx-runtime.d.ts +0 -2
  104. package/dist/jsx-runtime.js +0 -121
  105. package/dist/lexer.d.ts +0 -60
  106. package/dist/lexer.js +0 -281
  107. package/dist/model.d.ts +0 -24
  108. package/dist/model.js +0 -77
  109. package/dist/ops-BvwqHl7V.js +0 -630
  110. package/dist/ops.d.ts +0 -114
  111. package/dist/ops.js +0 -2
  112. package/dist/parser-t29cHLVL.d.ts +0 -396
  113. package/dist/parser.d.ts +0 -2
  114. package/dist/parser.js +0 -859
  115. package/dist/predicate-BI6uRRM-.js +0 -549
  116. package/dist/predicate-M-05Nd7R.d.ts +0 -56
  117. package/dist/predicate.d.ts +0 -2
  118. package/dist/predicate.js +0 -2
  119. package/dist/printer.d.ts +0 -6
  120. package/dist/printer.js +0 -122
  121. package/dist/registry-Dcp6QEK_.d.ts +0 -73
  122. package/dist/registry.d.ts +0 -2
  123. package/dist/registry.js +0 -646
  124. package/dist/render-template.d.ts +0 -45
  125. package/dist/render-template.js +0 -76
  126. package/dist/selection-CCArx9lU.d.ts +0 -91
  127. package/dist/showcase-egkusQBf.d.ts +0 -415
  128. package/dist/sms-segments-y4FpPilJ.d.ts +0 -13
  129. package/dist/sms-segments.d.ts +0 -2
  130. package/dist/sms-segments.js +0 -46
  131. package/dist/source-locations-DrCM82Ym.d.ts +0 -67
  132. package/dist/source-locations.d.ts +0 -2
  133. package/dist/source-locations.js +0 -102
  134. package/dist/starters/category-mapping.d.ts +0 -13
  135. package/dist/starters/category-mapping.js +0 -49
  136. package/dist/starters/corpus.d.ts +0 -2
  137. package/dist/starters/corpus.js +0 -194
  138. package/dist/starters/library.d.ts +0 -18
  139. package/dist/starters/library.js +0 -692
  140. package/dist/starters/public-gallery.d.ts +0 -266
  141. package/dist/starters/public-gallery.js +0 -916
  142. package/dist/starters/public-handoff.d.ts +0 -164
  143. package/dist/starters/public-handoff.js +0 -361
  144. package/dist/starters/public-preview-artifacts.d.ts +0 -43
  145. package/dist/starters/public-preview-artifacts.js +0 -104
  146. package/dist/starters/public-preview.d.ts +0 -61
  147. package/dist/starters/public-preview.js +0 -83
  148. package/dist/starters/showcase.d.ts +0 -2
  149. package/dist/starters/showcase.js +0 -335
  150. package/dist/starters/sources.d.ts +0 -45
  151. package/dist/starters/sources.js +0 -7762
  152. package/dist/starters/theme.d.ts +0 -45
  153. package/dist/starters/theme.js +0 -77
  154. package/dist/starters.d.ts +0 -2
  155. package/dist/starters.js +0 -874
  156. package/dist/tailwind-BYq7Lo6u.js +0 -727
  157. package/dist/template-DWftqh4x.d.ts +0 -60
  158. package/dist/template.d.ts +0 -2
  159. package/dist/template.js +0 -37
  160. package/dist/theme-css.js +0 -2
  161. package/dist/tsx-source-instrumentation.d.ts +0 -30
  162. package/dist/tsx-source-instrumentation.js +0 -115
  163. package/dist/tsx-tracer.d.ts +0 -112
  164. package/dist/tsx-tracer.js +0 -985
  165. package/dist/variables-J_L3qxRa.d.ts +0 -77
  166. package/dist/variables.d.ts +0 -2
  167. package/dist/variables.js +0 -141
  168. package/dist/version-BITr58kk.js +0 -96
  169. package/generated/sml-agent-contract.json +0 -709
  170. package/generated/sml-email-agent-contract.json +0 -615
  171. package/generated/sml-email-language-reference.md +0 -94
  172. package/generated/sml-language-reference.md +0 -195
@@ -1,14 +1,8 @@
1
- import { a as formatEmailDiagnostic, i as EmailDiagnosticSeverity, n as EmailCompileError, o as hasBlockingDiagnostic, r as EmailDiagnostic } from "./diagnostics-BMYtBCQk.js";
2
- import { a as EmailGlobalProps, c as EmailStyle, d as isUrlAttribute, i as EmailElementSpec, l as EmailTag, m as EmailNode, n as EMAIL_GLOBAL_ATTRIBUTES, o as EmailIntrinsicElements, r as EmailAttributeSpec, s as EmailLayout, t as EMAIL_ELEMENTS, u as emailElement } from "./elements-BzjjnoCS.js";
3
- import { a as emailDefinitionInstances, c as emailSelectionSiblings, i as emailAuthoringTarget, l as emailSelections, n as EmittedPosition, o as emailSelectionAncestry, r as INSTANCE_PATH_ATTRIBUTE, s as emailSelectionIndex, t as EmailElementSelection } from "./selection-CCArx9lU.js";
4
- import { a as escapeText, i as escapeAttribute, n as SerializeEmailOptions, s as serializeEmailHtml, t as EmailHtmlOutput } from "./html-Bl9BAdqc.js";
5
- import { deriveEmailText } from "./email/text.js";
6
- import { a as compileSelector, c as CompiledSelector, d as matchesSelector, i as Stylesheet, l as Compound, n as CssRule, o as parseStylesheet, r as Specificity, s as Ancestry, t as CssDeclaration, u as classListOf } from "./css-CS2jLID6.js";
7
- import { EMAIL_DOCTYPE, EmailCompileOutput, RenderedEmail, compileEmail, renderEmail } from "./email/render.js";
8
- import { ASSET_CONTENT_TYPES, AssetEntry, AssetManifest, assetEntry, assetUrl, checkAssetBase, isAssetPath, isExternalAsset } from "./email/assets.js";
9
- import { collectStylesheets, hasStylesheets, registerStylesheet, resetStylesheets } from "./email/stylesheets.js";
10
- import { a as EmailBrand, c as EmailBrandFooter, l as EmailBrandSocialLink, o as EmailBrandAddress, s as EmailBrandAssets } from "./brand-DcoVkh_S.js";
11
- import { instrumentTsxSourceForPreview } from "./tsx-source-instrumentation.js";
1
+ import { a as TemplateDiagnostic, r as EmailDiagnostic } from "./diagnostics-B-Gym34R.js";
2
+ import { r as EmailNode } from "./jsx-runtime-ylIOnaSf.js";
3
+ import { n as AssetEntry, p as EmailBrand, u as BrandComponents } from "./assets-BIsyMQ92.js";
4
+ import { C as Compound, D as EmittedPosition, S as CompiledSelector, T as matchesSelector, _ as Specificity, b as parseStylesheet, ct as TemplateIr, g as CssRule, h as CssDeclaration, r as RenderedEmail, v as Stylesheet, w as classListOf, x as Ancestry, y as compileSelector } from "./render-BPonDpCl.js";
5
+ import { a as TEMPLATE_NAME_PATTERN, n as EmailContent } from "./template-DMPwxMSq.js";
12
6
  import { caniemail } from "caniemail";
13
7
  //#region src/email/compatibility.d.ts
14
8
  type CaniemailClient = Parameters<typeof caniemail>[0]["clients"][number];
@@ -185,12 +179,6 @@ declare const discoverClassCandidates: (source: string, fileName: string) => Cla
185
179
  /** Where this build serves assets from, and how Tailwind is configured. */
186
180
  interface TransformOptions {
187
181
  readonly assetBase: string;
188
- /**
189
- * Specifier the generated stylesheet modules import `registerStylesheet`
190
- * from. It is the published subpath by default; a host that resolves the
191
- * package differently states its own.
192
- */
193
- readonly stylesheetModule?: string | undefined;
194
182
  /** `false` compiles no Tailwind at all. */
195
183
  readonly tailwind?: TailwindOptions | false | undefined;
196
184
  /**
@@ -199,63 +187,14 @@ interface TransformOptions {
199
187
  */
200
188
  readonly brand?: EmailBrand | undefined;
201
189
  }
202
- interface ModuleTransform {
203
- /** Always JavaScript, whatever the input file was. */
204
- readonly code: string;
205
- readonly asset?: AssetEntry | undefined;
206
- /** Class names this module states literally, for the Tailwind candidate set. */
207
- readonly classes?: readonly string[] | undefined;
208
- readonly diagnostics: readonly EmailDiagnostic[];
209
- }
210
- /**
211
- * Transform one project file into a JavaScript module.
212
- *
213
- * `.tsx`/`.ts` keep their authored semantics and gain source origins. A
214
- * stylesheet becomes a module that registers its parsed rules; its `@font-face`
215
- * sources resolve against `assets`, the project's addressed files by path. An
216
- * imported binary becomes a module exporting the content-addressed URL of its
217
- * bytes.
218
- */
219
- declare const transformModule: (id: string, source: string | Uint8Array, options: TransformOptions, assets?: ReadonlyMap<string, AssetEntry>) => Promise<ModuleTransform>;
220
190
  interface ProjectTransform {
221
- /** Every input file, transformed; keys are unchanged. */
222
- readonly files: Readonly<Record<string, string>>;
223
191
  readonly assets: readonly AssetEntry[];
224
- /**
225
- * The compiled Tailwind sheet as a registering module, when the project used
226
- * any utility class. A host writes it at `path` and makes the entry import it
227
- * first, so the generated layers sit below the project's own stylesheets.
228
- */
229
- readonly tailwind: {
230
- readonly path: string;
231
- readonly code: string;
232
- } | undefined;
233
- /**
234
- * The generated `samva:brand` module, when the project's TSX imports the
235
- * brand components. A host writes it at `path`; imports already point there.
236
- */
237
- readonly brand: {
238
- readonly path: string;
239
- readonly code: string;
240
- } | undefined;
192
+ /** The compiled Tailwind sheet, when the project used any utility class. */
193
+ readonly tailwindSheet: Stylesheet | undefined;
194
+ /** Every project stylesheet, parsed, by path. */
195
+ readonly stylesheets: ReadonlyMap<string, Stylesheet>;
241
196
  readonly diagnostics: readonly EmailDiagnostic[];
242
197
  }
243
- /**
244
- * The generated Tailwind module is a real file at the project root, not a
245
- * virtual id. A virtual module has no directory, so its own relative imports
246
- * resolve differently from the project's and the bundler ends up with a second
247
- * copy of the stylesheet registry — the sheet registers into a registry the
248
- * render never reads.
249
- */
250
- declare const TAILWIND_MODULE_PATH = ".samva-tailwind.css";
251
- /** The specifier an entry at this path uses to reach the generated module. */
252
- declare const tailwindSpecifierFor: (entryPoint: string) => string;
253
- /**
254
- * The generated module `samva:brand` resolves to in TSX. Like the Tailwind
255
- * module it is a real file at the project root, so it shares the project's
256
- * copy of `@samva/markup`.
257
- */
258
- declare const BRAND_MODULE_PATH = ".samva-brand.ts";
259
198
  /**
260
199
  * The `samva:brand` specifier a project imports — from its theme's `@import`s
261
200
  * or its TSX — so a host can fetch that brand before it compiles. `undefined`
@@ -263,61 +202,95 @@ declare const BRAND_MODULE_PATH = ".samva-brand.ts";
263
202
  * first here and a refusal from the compile.
264
203
  */
265
204
  declare const projectBrandSpecifier: (files: Readonly<Record<string, string | Uint8Array>>, themePath?: string) => string | undefined;
266
- /** Run the transform over a whole project, then compile the classes it used. */
205
+ /** Read a whole project, then compile the classes its scripts used. */
267
206
  declare const transformProject: (files: Readonly<Record<string, string | Uint8Array>>, options: TransformOptions) => Promise<ProjectTransform>;
207
+ //#endregion
208
+ //#region src/email/theme-imports.d.ts
209
+ /** The CSS and TSX specifier a template uses to reach its organization's brand. */
210
+ declare const BRAND_SPECIFIER = "samva:brand";
211
+ /** The brand a `samva:brand` specifier names: `undefined` slug means the default brand. */
212
+ declare const parseBrandSpecifier: (specifier: string) => {
213
+ readonly slug: string | undefined;
214
+ } | undefined;
215
+ //#endregion
216
+ //#region src/email/brand-footer.d.ts
217
+ /** A footer block for the send path to append, and its plain-text tail. */
218
+ interface RenderedBrandFooter {
219
+ readonly html: string;
220
+ readonly text: string;
221
+ }
268
222
  /**
269
- * Put a side-effect import ahead of an entry's own imports, after any leading
270
- * comment so a `@jsxImportSource` pragma keeps its position. Import order is
271
- * cascade order, so the generated sheet has to be first.
223
+ * Render `BrandFooter` against a brand on its own, for the send path to
224
+ * append to a message whose template renders no footer of its own. It
225
+ * compiles the same component, styled by the same brand theme, a template
226
+ * would get from `samva:brand`. Without `unsubscribe` the unsubscribe row is
227
+ * left out.
272
228
  */
273
- declare const withLeadingImport: (source: string, specifier: string) => string;
274
- /** The generated entry every host builds, so both evaluate the same module. */
275
- declare const EMAIL_ENTRY_WRAPPER = ".samva-email-entry.ts";
229
+ declare const renderBrandFooter: (brand: EmailBrand, options: {
230
+ readonly unsubscribe: boolean;
231
+ }) => Promise<RenderedBrandFooter>;
276
232
  /**
277
- * The generated module that clears the stylesheet registry. It is imported
278
- * first, as its own module, because import order is evaluation order: a reset
279
- * written as a statement in the wrapper would run after the wrapper's imports
280
- * had already registered.
233
+ * Render content against a brand as a project whose `theme.css` is
234
+ * `@import "samva:brand";` renders it: Tailwind compiles the brand theme for
235
+ * the classes the content names, `BrandLogo` and `BrandFooter` are bound to the
236
+ * brand, and the render inlines the result. A brand preview renders through
237
+ * this, so it shows what a template importing the brand compiles to.
281
238
  */
282
- declare const EMAIL_RESET_MODULE = ".samva-email-reset.ts";
239
+ declare const renderBrandSample: (brand: EmailBrand, sample: {
240
+ /** Every class the content names; nothing is discovered from source here. */
241
+ readonly classes: readonly string[];
242
+ readonly render: (components: BrandComponents) => EmailContent;
243
+ }) => Promise<RenderedEmail>;
244
+ //#endregion
245
+ //#region src/sml/lower-project.d.ts
246
+ interface CompiledTemplate {
247
+ /** The IR, or `undefined` when a finding blocks it. */
248
+ readonly ir: TemplateIr | undefined;
249
+ /** The fixtures read from the entry, with imported assets resolved to their URLs. */
250
+ readonly fixtures: Readonly<Record<string, unknown>>;
251
+ readonly assets: readonly AssetEntry[];
252
+ /** Errors block the IR; warnings ride along. */
253
+ readonly diagnostics: readonly TemplateDiagnostic[];
254
+ }
255
+ //#endregion
256
+ //#region src/sml/compile.d.ts
257
+ interface CompileTemplateOptions extends TransformOptions {
258
+ /** The project's files by path. Binary files are addressed as assets. */
259
+ readonly files: Readonly<Record<string, string | Uint8Array>>;
260
+ /** The entry: a `.tsx` file that default-exports `defineTemplate({ ... })`. */
261
+ readonly entry: string;
262
+ /**
263
+ * The portable JSON Schema, for an entry whose `schema` is not a literal `jsonSchema(...)`
264
+ * (a Zod or Effect schema needs a library to become JSON Schema). A host that has evaluated the
265
+ * schema passes its conversion here; a literal schema is read from source and this is ignored.
266
+ */
267
+ readonly schema?: Readonly<Record<string, unknown>> | undefined;
268
+ }
269
+ /** Compile a project's entry template to IR without evaluating any of it. */
270
+ declare const compileTemplate: (options: CompileTemplateOptions) => Promise<CompiledTemplate>;
271
+ //#endregion
272
+ //#region src/sml/compatibility.d.ts
283
273
  /**
284
- * The wrapper's source. It exports the template beside a render bound to the
285
- * sheets the project's own imports registered, so the render runs inside the
286
- * project's module graph and keeps its styles when a later project loaded into
287
- * the same process resets the registry. Importing the renderer from outside
288
- * that graph reaches a second copy of the registry and silently renders unstyled.
274
+ * Check what each declared fixture delivers against the pinned client matrix. The rules run on the
275
+ * rendered document, because what a client drops is what the compiler produced, and every finding
276
+ * is located at the source of the element that produced it.
289
277
  */
290
- declare const emailEntryWrapper: (entryPoint: string, imports?: readonly string[]) => string;
278
+ declare const checkTemplateCompatibility: (ir: TemplateIr, fixtures: Readonly<Record<string, unknown>>, options?: {
279
+ readonly clients?: readonly EmailClientTarget[] | undefined;
280
+ }) => readonly EmailDiagnostic[];
281
+ //#endregion
282
+ //#region src/sml/profile.d.ts
291
283
  /**
292
- * A host that renders more than one project in one process shares the registry
293
- * through its module cache, so every project graph starts by clearing it.
284
+ * Check an entry against the static profile. Pass the entry's source alone, or the project's files
285
+ * and the entry's path. Imports of files that are absent are trusted to exist, and the brand,
286
+ * Tailwind and theme are not resolved, so the result holds only findings the source itself owns.
294
287
  */
295
- declare const emailResetModule: (options: TransformOptions) => string;
296
- interface CompiledEmailProject {
297
- /** Every module as JavaScript, keyed by its authored path. */
298
- readonly files: Readonly<Record<string, string>>;
299
- /** The generated module a host bundles or evaluates. */
300
- readonly entryPoint: string;
301
- /** The project's own entry, which the wrapper re-exports. */
302
- readonly authoredEntry: string;
303
- readonly assets: readonly AssetEntry[];
304
- readonly diagnostics: readonly EmailDiagnostic[];
305
- }
288
+ declare const checkStaticProfile: (files: string | Readonly<Record<string, string | Uint8Array>>, entry?: string) => readonly TemplateDiagnostic[];
306
289
  /**
307
- * The whole compile step, files in and files out: every module transformed, the
308
- * generated Tailwind sheet written, the generated imports added and the wrapper
309
- * built. Both hosts call exactly this, which is what stops their outputs from
310
- * drifting apart.
290
+ * The errors in `after` that `before` did not already have, compared by code and message so a
291
+ * finding that only moved does not count as new.
311
292
  */
312
- declare const compileEmailProject: (source: Readonly<Record<string, string | Uint8Array>>, authoredEntry: string, options: TransformOptions) => Promise<CompiledEmailProject>;
313
- //#endregion
314
- //#region src/email/theme-imports.d.ts
315
- /** The CSS and TSX specifier a template uses to reach its organization's brand. */
316
- declare const BRAND_SPECIFIER = "samva:brand";
317
- /** The brand a `samva:brand` specifier names: `undefined` slug means the default brand. */
318
- declare const parseBrandSpecifier: (specifier: string) => {
319
- readonly slug: string | undefined;
320
- } | undefined;
293
+ declare const introducedProfileErrors: (before: readonly TemplateDiagnostic[], after: readonly TemplateDiagnostic[]) => readonly TemplateDiagnostic[];
321
294
  //#endregion
322
- export { ASSET_CONTENT_TYPES, type Ancestry, type AppliedStyles, type AssetEntry, type AssetManifest, BRAND_MODULE_PATH, BRAND_SPECIFIER, COMPATIBILITY_PROVENANCE, type ClassDiscovery, type CompatibilityInput, type CompatibilityProvenance, type CompiledEmailProject, type CompiledSelector, type Compound, type CssDeclaration, type CssRule, EMAIL_CLIENT_MATRIX, EMAIL_DOCTYPE, EMAIL_ELEMENTS, EMAIL_ENTRY_WRAPPER, EMAIL_GLOBAL_ATTRIBUTES, EMAIL_RESET_MODULE, ESSENTIAL_CONSTRUCTS, type EmailAttributeSpec, type EmailBrand, type EmailBrandAddress, type EmailBrandAssets, type EmailBrandFooter, type EmailBrandSocialLink, type EmailClientTarget, EmailCompileError, type EmailCompileOutput, type EmailDiagnostic, type EmailDiagnosticSeverity, type EmailElementSelection, type EmailElementSpec, type EmailGlobalProps, type EmailHtmlOutput, type EmailIntrinsicElements, type EmailLayout, type EmailStyle, type EmailTag, type EmittedPosition, INSTANCE_PATH_ATTRIBUTE, type ModuleTransform, type ProjectTransform, type RenderedEmail, type SerializeEmailOptions, type Specificity, type Stylesheet, TAILWIND_MODULE_PATH, TAILWIND_VERSION, type TailwindLimits, type TailwindOptions, type TailwindOutput, type TransformOptions, applyStylesheet, assetEntry, assetUrl, checkAssetBase, checkEmailCompatibility, classListOf, collectStylesheets, compileEmail, compileEmailProject, compileSelector, compileTailwind, deriveEmailText, discoverClassCandidates, downlevelColors, downlevelMediaQuery, emailAuthoringTarget, emailDefinitionInstances, emailElement, emailEntryWrapper, emailResetModule, emailSelectionAncestry, emailSelectionIndex, emailSelectionSiblings, emailSelections, escapeAttribute, escapeText, finalizeValue, foldCalc, formatColor, formatEmailDiagnostic, hasBlockingCompatibility, hasBlockingDiagnostic, hasStylesheets, instrumentTsxSourceForPreview, isAssetPath, isExternalAsset, isUrlAttribute, matchesSelector, parseBrandSpecifier, parseColor, parseStylesheet, projectBrandSpecifier, registerStylesheet, renderEmail, renderHeadCss, resetStylesheets, resolveVariables, serializeEmailHtml, tailwindSpecifierFor, transformModule, transformProject, unknownCoverage, withLeadingImport };
295
+ export { type Ancestry, type AppliedStyles, BRAND_SPECIFIER, COMPATIBILITY_PROVENANCE, type ClassDiscovery, type CompatibilityInput, type CompatibilityProvenance, type CompileTemplateOptions, type CompiledSelector, type CompiledTemplate, type Compound, type CssDeclaration, type CssRule, EMAIL_CLIENT_MATRIX, ESSENTIAL_CONSTRUCTS, type EmailClientTarget, type EmailContent, type ProjectTransform, type RenderedBrandFooter, type Specificity, type Stylesheet, TAILWIND_VERSION, TEMPLATE_NAME_PATTERN, type TailwindLimits, type TailwindOptions, type TailwindOutput, type TransformOptions, applyStylesheet, checkEmailCompatibility, checkStaticProfile, checkTemplateCompatibility, classListOf, compileSelector, compileTailwind, compileTemplate, discoverClassCandidates, downlevelColors, downlevelMediaQuery, finalizeValue, foldCalc, formatColor, hasBlockingCompatibility, introducedProfileErrors, matchesSelector, parseBrandSpecifier, parseColor, parseStylesheet, projectBrandSpecifier, renderBrandFooter, renderBrandSample, renderHeadCss, resolveVariables, transformProject, unknownCoverage };
323
296
  //# sourceMappingURL=compiler.d.ts.map