@maizzle/framework 6.1.4 → 6.1.6

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 (216) hide show
  1. package/dist/build.d.ts +3 -4
  2. package/dist/build.d.ts.map +1 -1
  3. package/dist/build.js +1 -5
  4. package/dist/build.js.map +1 -1
  5. package/dist/components/Button.vue +1 -1
  6. package/dist/components/CodeBlock.vue +1 -1
  7. package/dist/components/CodeInline.vue +1 -1
  8. package/dist/components/Column.vue +1 -1
  9. package/dist/components/Container.vue +1 -1
  10. package/dist/components/Heading.vue +1 -1
  11. package/dist/components/Hr.vue +1 -1
  12. package/dist/components/Img.vue +1 -1
  13. package/dist/components/Layout.vue +1 -1
  14. package/dist/components/Link.vue +1 -1
  15. package/dist/components/QrCode.vue +1 -1
  16. package/dist/components/Row.vue +1 -1
  17. package/dist/components/Section.vue +1 -1
  18. package/dist/components/Text.vue +1 -1
  19. package/dist/components/utils.d.ts +10 -11
  20. package/dist/components/utils.d.ts.map +1 -1
  21. package/dist/composables/defineConfig.d.ts +1 -2
  22. package/dist/composables/defineConfig.d.ts.map +1 -1
  23. package/dist/composables/renderContext.d.ts +4 -5
  24. package/dist/composables/renderContext.d.ts.map +1 -1
  25. package/dist/composables/useBaseUrl.d.ts +1 -2
  26. package/dist/composables/useBaseUrl.d.ts.map +1 -1
  27. package/dist/composables/useConfig.d.ts +2 -3
  28. package/dist/composables/useConfig.d.ts.map +1 -1
  29. package/dist/composables/useCurrentTemplate.d.ts +2 -3
  30. package/dist/composables/useCurrentTemplate.d.ts.map +1 -1
  31. package/dist/composables/useDoctype.d.ts +1 -2
  32. package/dist/composables/useDoctype.d.ts.map +1 -1
  33. package/dist/composables/useEvent.d.ts +1 -2
  34. package/dist/composables/useEvent.d.ts.map +1 -1
  35. package/dist/composables/useFont.d.ts +3 -4
  36. package/dist/composables/useFont.d.ts.map +1 -1
  37. package/dist/composables/useOutlookFallback.d.ts +1 -2
  38. package/dist/composables/useOutlookFallback.d.ts.map +1 -1
  39. package/dist/composables/useOutputPath.d.ts +1 -2
  40. package/dist/composables/useOutputPath.d.ts.map +1 -1
  41. package/dist/composables/usePlaintext.d.ts +2 -3
  42. package/dist/composables/usePlaintext.d.ts.map +1 -1
  43. package/dist/composables/usePreheader.d.ts +2 -3
  44. package/dist/composables/usePreheader.d.ts.map +1 -1
  45. package/dist/composables/useTransformers.d.ts +1 -2
  46. package/dist/composables/useTransformers.d.ts.map +1 -1
  47. package/dist/composables/useUrlQuery.d.ts +1 -2
  48. package/dist/composables/useUrlQuery.d.ts.map +1 -1
  49. package/dist/config/defaults.d.ts +1 -2
  50. package/dist/config/defaults.d.ts.map +1 -1
  51. package/dist/config/index.d.ts +4 -4
  52. package/dist/config/index.d.ts.map +1 -1
  53. package/dist/events/index.d.ts +4 -5
  54. package/dist/events/index.d.ts.map +1 -1
  55. package/dist/index.d.ts +2 -1
  56. package/dist/index.js +2 -1
  57. package/dist/plaintext.d.ts +1 -2
  58. package/dist/plaintext.d.ts.map +1 -1
  59. package/dist/plugin.d.ts +1 -2
  60. package/dist/plugin.d.ts.map +1 -1
  61. package/dist/plugins/postcss/flattenGradients.d.ts +3 -3
  62. package/dist/plugins/postcss/flattenGradients.d.ts.map +1 -1
  63. package/dist/plugins/postcss/mergeMediaQueries.d.ts +1 -2
  64. package/dist/plugins/postcss/mergeMediaQueries.d.ts.map +1 -1
  65. package/dist/plugins/postcss/pruneVars.d.ts +2 -2
  66. package/dist/plugins/postcss/pruneVars.d.ts.map +1 -1
  67. package/dist/plugins/postcss/quoteFontFamilies.d.ts +2 -3
  68. package/dist/plugins/postcss/quoteFontFamilies.d.ts.map +1 -1
  69. package/dist/plugins/postcss/removeDeclarations.d.ts +4 -4
  70. package/dist/plugins/postcss/removeDeclarations.d.ts.map +1 -1
  71. package/dist/plugins/postcss/resolveMaizzleImports.d.ts +1 -2
  72. package/dist/plugins/postcss/resolveMaizzleImports.d.ts.map +1 -1
  73. package/dist/plugins/postcss/resolveProps.d.ts +2 -2
  74. package/dist/plugins/postcss/resolveProps.d.ts.map +1 -1
  75. package/dist/plugins/postcss/tailwindCleanup.d.ts +1 -2
  76. package/dist/plugins/postcss/tailwindCleanup.d.ts.map +1 -1
  77. package/dist/prepare.d.ts +2 -3
  78. package/dist/prepare.d.ts.map +1 -1
  79. package/dist/render/active.d.ts +2 -3
  80. package/dist/render/active.d.ts.map +1 -1
  81. package/dist/render/buildTemplate.d.ts +5 -6
  82. package/dist/render/buildTemplate.d.ts.map +1 -1
  83. package/dist/render/createRenderer.d.ts +4 -5
  84. package/dist/render/createRenderer.d.ts.map +1 -1
  85. package/dist/render/index.d.ts +3 -3
  86. package/dist/render/index.d.ts.map +1 -1
  87. package/dist/render/injectFonts.d.ts +1 -2
  88. package/dist/render/injectFonts.d.ts.map +1 -1
  89. package/dist/render/parallel/buildWorker.d.ts +3 -4
  90. package/dist/render/parallel/buildWorker.d.ts.map +1 -1
  91. package/dist/render/plugins/codeBlockExtract.d.ts +1 -2
  92. package/dist/render/plugins/codeBlockExtract.d.ts.map +1 -1
  93. package/dist/render/plugins/markdownExtract.d.ts +1 -2
  94. package/dist/render/plugins/markdownExtract.d.ts.map +1 -1
  95. package/dist/render/plugins/rawExtract.d.ts +1 -2
  96. package/dist/render/plugins/rawExtract.d.ts.map +1 -1
  97. package/dist/render/plugins/rowSourceLocation.d.ts +1 -2
  98. package/dist/render/plugins/rowSourceLocation.d.ts.map +1 -1
  99. package/dist/serve.d.ts +3 -4
  100. package/dist/serve.d.ts.map +1 -1
  101. package/dist/serve.js +46 -3
  102. package/dist/serve.js.map +1 -1
  103. package/dist/server/compatibility.d.ts +2 -3
  104. package/dist/server/compatibility.d.ts.map +1 -1
  105. package/dist/server/email.d.ts +2 -3
  106. package/dist/server/email.d.ts.map +1 -1
  107. package/dist/server/linter.d.ts +3 -4
  108. package/dist/server/linter.d.ts.map +1 -1
  109. package/dist/server/sfc-utils.d.ts +6 -7
  110. package/dist/server/sfc-utils.d.ts.map +1 -1
  111. package/dist/server/static.d.ts +10 -0
  112. package/dist/server/static.d.ts.map +1 -0
  113. package/dist/server/static.js +71 -0
  114. package/dist/server/static.js.map +1 -0
  115. package/dist/server/ui/.vite/deps/@lucide_vue.js +1 -1
  116. package/dist/server/ui/.vite/deps/@vueuse_core.js +1 -1
  117. package/dist/server/ui/.vite/deps/@vueuse_shared.js +1 -1
  118. package/dist/server/ui/.vite/deps/_metadata.json +15 -15
  119. package/dist/server/ui/.vite/deps/reka-ui.js +1 -2
  120. package/dist/server/ui/.vite/deps/reka-ui.js.map +1 -1
  121. package/dist/server/ui/.vite/deps/vue-router.js +1 -1
  122. package/dist/server/ui/.vite/deps/vue.js +1 -1
  123. package/dist/server/ui/.vite/deps/{vue.runtime.esm-bundler-S54atuNJ.js → vue.runtime.esm-bundler-Dq07uCLt.js} +174 -53
  124. package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-Dq07uCLt.js.map +1 -0
  125. package/dist/server/ui/pages/Preview.vue +2 -2
  126. package/dist/tests/render/_helpers.d.ts +2 -3
  127. package/dist/tests/render/_helpers.d.ts.map +1 -1
  128. package/dist/transformers/addAttributes.d.ts +2 -3
  129. package/dist/transformers/addAttributes.d.ts.map +1 -1
  130. package/dist/transformers/attributeToStyle.d.ts +2 -3
  131. package/dist/transformers/attributeToStyle.d.ts.map +1 -1
  132. package/dist/transformers/base.d.ts +3 -4
  133. package/dist/transformers/base.d.ts.map +1 -1
  134. package/dist/transformers/columnWidth.d.ts +1 -2
  135. package/dist/transformers/columnWidth.d.ts.map +1 -1
  136. package/dist/transformers/entities.d.ts +3 -4
  137. package/dist/transformers/entities.d.ts.map +1 -1
  138. package/dist/transformers/filters/defaults.d.ts +2 -3
  139. package/dist/transformers/filters/defaults.d.ts.map +1 -1
  140. package/dist/transformers/filters/index.d.ts +4 -4
  141. package/dist/transformers/filters/index.d.ts.map +1 -1
  142. package/dist/transformers/format.d.ts +2 -2
  143. package/dist/transformers/format.d.ts.map +1 -1
  144. package/dist/transformers/imgWidth.d.ts +1 -2
  145. package/dist/transformers/imgWidth.d.ts.map +1 -1
  146. package/dist/transformers/index.d.ts +1 -2
  147. package/dist/transformers/index.d.ts.map +1 -1
  148. package/dist/transformers/inlineCss.d.ts +3 -4
  149. package/dist/transformers/inlineCss.d.ts.map +1 -1
  150. package/dist/transformers/inlineLink.d.ts +2 -3
  151. package/dist/transformers/inlineLink.d.ts.map +1 -1
  152. package/dist/transformers/minify.d.ts +2 -2
  153. package/dist/transformers/minify.d.ts.map +1 -1
  154. package/dist/transformers/minifyCodeInline.d.ts +1 -2
  155. package/dist/transformers/minifyCodeInline.d.ts.map +1 -1
  156. package/dist/transformers/msoConditionals.d.ts +1 -2
  157. package/dist/transformers/msoConditionals.d.ts.map +1 -1
  158. package/dist/transformers/msoPlaceholders.d.ts +1 -2
  159. package/dist/transformers/msoPlaceholders.d.ts.map +1 -1
  160. package/dist/transformers/purgeCss.d.ts +3 -4
  161. package/dist/transformers/purgeCss.d.ts.map +1 -1
  162. package/dist/transformers/removeAttributes.d.ts +4 -5
  163. package/dist/transformers/removeAttributes.d.ts.map +1 -1
  164. package/dist/transformers/replaceStrings.d.ts +1 -2
  165. package/dist/transformers/replaceStrings.d.ts.map +1 -1
  166. package/dist/transformers/safeSelectors.d.ts +2 -3
  167. package/dist/transformers/safeSelectors.d.ts.map +1 -1
  168. package/dist/transformers/shorthandCss.d.ts +3 -4
  169. package/dist/transformers/shorthandCss.d.ts.map +1 -1
  170. package/dist/transformers/sixHex.d.ts +2 -3
  171. package/dist/transformers/sixHex.d.ts.map +1 -1
  172. package/dist/transformers/tailwindComponent.d.ts +1 -2
  173. package/dist/transformers/tailwindComponent.d.ts.map +1 -1
  174. package/dist/transformers/tailwindcss.d.ts +2 -3
  175. package/dist/transformers/tailwindcss.d.ts.map +1 -1
  176. package/dist/transformers/urlQuery.d.ts +2 -3
  177. package/dist/transformers/urlQuery.d.ts.map +1 -1
  178. package/dist/types/config.d.ts +18 -19
  179. package/dist/types/config.d.ts.map +1 -1
  180. package/dist/utils/ast/parser.d.ts +1 -2
  181. package/dist/utils/ast/parser.d.ts.map +1 -1
  182. package/dist/utils/ast/serializer.d.ts +1 -2
  183. package/dist/utils/ast/serializer.d.ts.map +1 -1
  184. package/dist/utils/ast/walker.d.ts +1 -2
  185. package/dist/utils/ast/walker.d.ts.map +1 -1
  186. package/dist/utils/cloneConfig.d.ts +1 -2
  187. package/dist/utils/cloneConfig.d.ts.map +1 -1
  188. package/dist/utils/compileTailwindCss.d.ts +4 -5
  189. package/dist/utils/compileTailwindCss.d.ts.map +1 -1
  190. package/dist/utils/componentSources.d.ts +4 -5
  191. package/dist/utils/componentSources.d.ts.map +1 -1
  192. package/dist/utils/cssBox.d.ts +6 -7
  193. package/dist/utils/cssBox.d.ts.map +1 -1
  194. package/dist/utils/decodeStyleEntities.d.ts +1 -2
  195. package/dist/utils/decodeStyleEntities.d.ts.map +1 -1
  196. package/dist/utils/detect.d.ts +1 -2
  197. package/dist/utils/detect.d.ts.map +1 -1
  198. package/dist/utils/output-markers.d.ts +4 -5
  199. package/dist/utils/output-markers.d.ts.map +1 -1
  200. package/dist/utils/staticPaths.d.ts +5 -0
  201. package/dist/utils/staticPaths.d.ts.map +1 -0
  202. package/dist/utils/staticPaths.js +11 -0
  203. package/dist/utils/staticPaths.js.map +1 -0
  204. package/dist/utils/twMerge.d.ts +4 -0
  205. package/dist/utils/twMerge.d.ts.map +1 -0
  206. package/dist/utils/twMerge.js +109 -0
  207. package/dist/utils/twMerge.js.map +1 -0
  208. package/dist/utils/url.d.ts +4 -5
  209. package/dist/utils/url.d.ts.map +1 -1
  210. package/dist/utils/watchPaths.d.ts +2 -3
  211. package/dist/utils/watchPaths.d.ts.map +1 -1
  212. package/node_modules/tinyexec/dist/main.d.mts +5 -3
  213. package/node_modules/tinyexec/dist/main.mjs +256 -232
  214. package/node_modules/tinyexec/package.json +9 -9
  215. package/package.json +5 -5
  216. package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-S54atuNJ.js.map +0 -1
package/dist/build.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { MaizzleConfig } from "./types/config.js";
2
2
  import "./types/index.js";
3
3
  //#region src/build.d.ts
4
- interface BuildResult {
4
+ export interface BuildResult {
5
5
  files: string[];
6
6
  config: MaizzleConfig;
7
7
  }
@@ -15,7 +15,7 @@ interface BuildResult {
15
15
  * to load config from a specific file path. Omit to load `maizzle.config`
16
16
  * from the working directory.
17
17
  */
18
- declare function build(configInput?: Partial<MaizzleConfig> | string): Promise<BuildResult>;
18
+ export declare function build(configInput?: Partial<MaizzleConfig> | string): Promise<BuildResult>;
19
19
  /**
20
20
  * Decide whether to build in parallel and with how many workers.
21
21
  *
@@ -30,10 +30,9 @@ declare function build(configInput?: Partial<MaizzleConfig> | string): Promise<B
30
30
  * applies to file-based configs (a path or the default cwd config) — an inline
31
31
  * config object has no file to reload and always builds sequentially.
32
32
  */
33
- declare function resolveParallel(config: MaizzleConfig, count: number, configInput: Partial<MaizzleConfig> | string | undefined): {
33
+ export declare function resolveParallel(config: MaizzleConfig, count: number, configInput: Partial<MaizzleConfig> | string | undefined): {
34
34
  enabled: boolean;
35
35
  workers: number;
36
36
  };
37
37
  //#endregion
38
- export { BuildResult, build, resolveParallel };
39
38
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","names":[],"sources":["../src/build.ts"],"mappings":";;;UAaiB;EACf;EACA,QAAQ;;;;;;;;;;;;iBAaY,MAAM,cAAc,QAAQ,0BAA0B,QAAQ;;;;;;;;;;;;;;;iBA0HpE,gBACd,QAAQ,eACR,eACA,aAAa,QAAQ;EAClB;EAAkB"}
1
+ {"version":3,"file":"build.d.ts","names":[],"sources":["../src/build.ts"],"mappings":";;;iBAciB;EACf;EACA,QAAQ;;;;;;;;;;;;wBAaY,MAAM,cAAc,QAAQ,0BAA0B,QAAQ;;;;;;;;;;;;;;;wBA0HpE,gBACd,QAAQ,eACR,eACA,aAAa,QAAQ;EAClB;EAAkB"}
package/dist/build.js CHANGED
@@ -2,6 +2,7 @@ import { resolveConfig } from "./config/index.js";
2
2
  import { EventManager } from "./events/index.js";
3
3
  import { normalizeComponentSources } from "./utils/componentSources.js";
4
4
  import { createRenderer } from "./render/createRenderer.js";
5
+ import { staticBase } from "./utils/staticPaths.js";
5
6
  import { buildTemplate, computeContentBase } from "./render/buildTemplate.js";
6
7
  import { cpSync, existsSync, mkdirSync, rmSync } from "node:fs";
7
8
  import { dirname, join, parse, relative, resolve, sep } from "node:path";
@@ -225,11 +226,6 @@ async function copyStatic(config, outputPath) {
225
226
  cpSync(file, destPath);
226
227
  }
227
228
  }
228
- /** Absolute static (non-glob) prefix of a source pattern, used as the strip base. */
229
- function staticBase(pattern) {
230
- const staticPart = pattern.split(/[*{?[]/)[0];
231
- return resolve(/[/\\]$/.test(staticPart) ? staticPart : dirname(staticPart));
232
- }
233
229
  //#endregion
234
230
  export { build, resolveParallel };
235
231
 
package/dist/build.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","names":["parsePath"],"sources":["../src/build.ts"],"sourcesContent":["import { mkdirSync, cpSync, existsSync, rmSync } from 'node:fs'\nimport { resolve, dirname, relative, join, parse as parsePath, sep } from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { availableParallelism } from 'node:os'\nimport { glob } from 'tinyglobby'\nimport ora from 'ora'\nimport { resolveConfig } from './config/index.ts'\nimport { EventManager } from './events/index.ts'\nimport { createRenderer } from './render/createRenderer.ts'\nimport { normalizeComponentSources } from './utils/componentSources.ts'\nimport { buildTemplate, computeContentBase } from './render/buildTemplate.ts'\nimport type { MaizzleConfig } from './types/index.ts'\n\nexport interface BuildResult {\n files: string[]\n config: MaizzleConfig\n}\n\n/**\n * Build all SFC email templates to HTML files.\n *\n * Creates a single Renderer instance, then loops through each template\n * calling render → transformers → write to disk.\n *\n * Pass a `Partial<MaizzleConfig>` to override config inline, or a string\n * to load config from a specific file path. Omit to load `maizzle.config`\n * from the working directory.\n */\nexport async function build(configInput?: Partial<MaizzleConfig> | string): Promise<BuildResult> {\n const start = Date.now()\n const spinner = ora({ text: 'Building templates...', spinner: 'circleHalves' }).start()\n\n try {\n const config = await resolveConfig(configInput)\n\n const events = new EventManager()\n events.registerConfig(config)\n await events.fireBeforeCreate({ config })\n\n const outputPath = resolve(config.output?.path ?? 'dist')\n const outputExtension = config.output?.extension ?? 'html'\n\n const contentPatterns = config.content ?? ['emails/**/*.vue']\n const contentBase = computeContentBase(contentPatterns)\n const templateFiles = await glob(contentPatterns)\n\n if (templateFiles.length === 0) {\n spinner.succeed('No templates found')\n return { files: [], config }\n }\n\n // Clear the output directory before writing fresh output. Guard against a\n // misconfigured output.path (e.g. '.', '', '../..') that resolves to the\n // project root or a parent of it — rmSync would wipe the whole project.\n const cwd = process.cwd()\n if (outputPath === parsePath(outputPath).root || outputPath === cwd || cwd.startsWith(outputPath + sep)) {\n throw new Error(`Refusing to clear output path \"${outputPath}\": it is the filesystem root, the current working directory, or a parent of it. Set output.path to a subdirectory like \"dist\".`)\n }\n\n if (existsSync(outputPath)) {\n rmSync(outputPath, { recursive: true, force: true })\n }\n\n const outputFiles: string[] = []\n let droppedAfterBuild = 0\n\n const parallel = resolveParallel(config, templateFiles.length, configInput)\n\n if (parallel.enabled) {\n spinner.text = `Building ${templateFiles.length} templates across ${parallel.workers} workers...`\n\n const result = await runParallelBuild({\n templateFiles,\n workers: parallel.workers,\n config,\n configInput,\n outputPath,\n outputExtension,\n contentBase,\n })\n\n outputFiles.push(...result.files)\n droppedAfterBuild = result.sfcAfterBuildCount\n\n await copyStatic(config, outputPath)\n await events.fireAfterBuild({ files: outputFiles, config })\n } else {\n const renderer = await createRenderer({ markdown: config.markdown, root: config.root, componentDirs: normalizeComponentSources(config.components?.source, process.cwd()), vite: config.vite, customElements: config.vue?.customElements })\n\n try {\n for (const templatePath of templateFiles) {\n const { files } = await buildTemplate(templatePath, { config, renderer, events, outputPath, outputExtension, contentBase })\n outputFiles.push(...files)\n }\n\n await copyStatic(config, outputPath)\n await events.fireAfterBuild({ files: outputFiles, config })\n } finally {\n await renderer.close()\n }\n }\n\n if (droppedAfterBuild > 0) {\n console.warn(`[maizzle] Skipped ${droppedAfterBuild} SFC-registered afterBuild handler(s): afterBuild can't run inside a parallel build worker. Move build-completion logic to the config's afterBuild hook.`)\n }\n\n const duration = ((Date.now() - start) / 1000).toFixed(2)\n const count = outputFiles.length\n spinner.stopAndPersist({\n symbol: '✅',\n text: `Built ${count} template${count !== 1 ? 's' : ''} in ${duration}s`,\n })\n\n return { files: outputFiles, config }\n } catch (err) {\n // Stop the spinner so a thrown error doesn't leave it spinning forever.\n if (spinner.isSpinning) spinner.fail('Build failed')\n throw err\n }\n}\n\n/**\n * Default template count above which parallel build turns on. Benchmarked\n * crossover (with the worker cap below) is ~25 templates; 50 leaves margin so\n * auto-parallel only kicks in where it's a reliable win across hardware.\n * Override per project with `parallel: { threshold }`.\n */\nconst DEFAULT_PARALLEL_THRESHOLD = 50\n\n/**\n * Default worker cap. Each worker runs a full Vite SSR renderer, so startup +\n * contention outweighs added parallelism past ~8 — benchmarks showed 8 beating\n * 12/16/23 at every size. Override with `parallel: { workers }`.\n */\nconst DEFAULT_MAX_WORKERS = 8\n\n/**\n * Decide whether to build in parallel and with how many workers.\n *\n * `config.parallel`:\n * - omitted → parallel when `count > 50`, min(CPU count − 1, 8) workers\n * - `true` → always parallel (ignores threshold), default workers\n * - `false` → always sequential\n * - `{ workers, threshold }` → parallel when `count > threshold` (default 50),\n * using `workers` threads (default min(CPU count − 1, 8))\n *\n * Workers reload the config file to recover function hooks, so parallel only\n * applies to file-based configs (a path or the default cwd config) — an inline\n * config object has no file to reload and always builds sequentially.\n */\nexport function resolveParallel(\n config: MaizzleConfig,\n count: number,\n configInput: Partial<MaizzleConfig> | string | undefined,\n): { enabled: boolean; workers: number } {\n const setting = config.parallel\n if (setting === false) return { enabled: false, workers: 0 }\n\n const fileBased = typeof configInput === 'string' || configInput == null\n if (!fileBased) return { enabled: false, workers: 0 }\n\n const cpus = availableParallelism()\n const defaultWorkers = Math.min(Math.max(1, cpus - 1), DEFAULT_MAX_WORKERS)\n\n let maxWorkers = defaultWorkers\n let threshold = DEFAULT_PARALLEL_THRESHOLD\n // `true` opts in regardless of count; object/omitted stay threshold-gated.\n const ignoreThreshold = setting === true\n\n if (typeof setting === 'object' && setting !== null) {\n if (typeof setting.workers === 'number' && setting.workers > 0) maxWorkers = Math.floor(setting.workers)\n if (typeof setting.threshold === 'number' && setting.threshold >= 0) threshold = Math.floor(setting.threshold)\n }\n\n if (!ignoreThreshold && count <= threshold) return { enabled: false, workers: 0 }\n\n const workers = Math.min(maxWorkers, count)\n return { enabled: workers >= 2 && count >= 2, workers }\n}\n\n/**\n * Run the build across worker threads. Each worker reloads the config (for its\n * function hooks), builds its batch via the same `buildTemplate` as the\n * sequential path, and returns the files it wrote. beforeCreate/afterBuild stay\n * on the main thread (handled by the caller).\n */\nasync function runParallelBuild(opts: {\n templateFiles: string[]\n workers: number\n config: MaizzleConfig\n configInput: Partial<MaizzleConfig> | string | undefined\n outputPath: string\n outputExtension: string\n contentBase: string\n}): Promise<{ files: string[]; sfcAfterBuildCount: number }> {\n const { templateFiles, workers, config, configInput, outputPath, outputExtension, contentBase } = opts\n\n const { default: Tinypool } = await import('tinypool')\n const workerPath = resolve(dirname(fileURLToPath(import.meta.url)), 'render/parallel/worker.mjs')\n\n const configPath = typeof configInput === 'string' ? configInput : undefined\n // Serializable snapshot of the post-beforeCreate config (functions dropped).\n const configData = JSON.parse(JSON.stringify(config)) as Partial<MaizzleConfig>\n\n const batches = shardEvenly(templateFiles, workers)\n\n const pool = new Tinypool({ filename: workerPath, minThreads: batches.length, maxThreads: batches.length })\n\n try {\n const results = await Promise.all(\n batches.map(templatePaths => pool.run({\n templatePaths,\n configPath,\n configData,\n outputPath,\n outputExtension,\n contentBase,\n })),\n )\n\n return {\n files: results.flatMap(r => r.files),\n sfcAfterBuildCount: results.reduce((n, r) => n + r.sfcAfterBuildCount, 0),\n }\n } finally {\n await pool.destroy()\n }\n}\n\n/** Round-robin items into up to `buckets` non-empty groups for even balance. */\nfunction shardEvenly<T>(items: T[], buckets: number): T[][] {\n const out: T[][] = Array.from({ length: buckets }, () => [])\n items.forEach((item, i) => out[i % buckets].push(item))\n return out.filter(b => b.length > 0)\n}\n\nasync function copyStatic(config: MaizzleConfig, outputPath: string): Promise<void> {\n const sources = config.static?.source ?? ['public/**/*.*']\n const destination = config.static?.destination ?? 'public'\n\n // One glob call so negation patterns still apply across the whole set.\n const files = await glob(sources)\n\n // Absolute base dir to strip, per positive source pattern. Each file keeps\n // the structure under its own pattern's base — using only sources[0] sends\n // files from other roots to the wrong place (or escaping the output dir).\n const bases = sources.filter(s => !s.startsWith('!')).map(staticBase)\n\n for (const file of files) {\n const abs = resolve(file)\n const base = bases\n .filter(b => abs === b || abs.startsWith(b + sep))\n .sort((a, b) => b.length - a.length)[0] ?? bases[0] ?? resolve('.')\n\n const destPath = join(outputPath, destination, relative(base, abs))\n const destDir = dirname(destPath)\n\n if (!existsSync(destDir)) {\n mkdirSync(destDir, { recursive: true })\n }\n\n cpSync(file, destPath)\n }\n}\n\n/** Absolute static (non-glob) prefix of a source pattern, used as the strip base. */\nfunction staticBase(pattern: string): string {\n const staticPart = pattern.split(/[*{?[]/)[0]\n // Treat both separators as trailing: resolved patterns use '\\' on Windows.\n return resolve(/[/\\\\]$/.test(staticPart) ? staticPart : dirname(staticPart))\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"build.js","names":["parsePath"],"sources":["../src/build.ts"],"sourcesContent":["import { mkdirSync, cpSync, existsSync, rmSync } from 'node:fs'\nimport { resolve, dirname, relative, join, parse as parsePath, sep } from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { availableParallelism } from 'node:os'\nimport { glob } from 'tinyglobby'\nimport ora from 'ora'\nimport { resolveConfig } from './config/index.ts'\nimport { EventManager } from './events/index.ts'\nimport { createRenderer } from './render/createRenderer.ts'\nimport { normalizeComponentSources } from './utils/componentSources.ts'\nimport { staticBase } from './utils/staticPaths.ts'\nimport { buildTemplate, computeContentBase } from './render/buildTemplate.ts'\nimport type { MaizzleConfig } from './types/index.ts'\n\nexport interface BuildResult {\n files: string[]\n config: MaizzleConfig\n}\n\n/**\n * Build all SFC email templates to HTML files.\n *\n * Creates a single Renderer instance, then loops through each template\n * calling render → transformers → write to disk.\n *\n * Pass a `Partial<MaizzleConfig>` to override config inline, or a string\n * to load config from a specific file path. Omit to load `maizzle.config`\n * from the working directory.\n */\nexport async function build(configInput?: Partial<MaizzleConfig> | string): Promise<BuildResult> {\n const start = Date.now()\n const spinner = ora({ text: 'Building templates...', spinner: 'circleHalves' }).start()\n\n try {\n const config = await resolveConfig(configInput)\n\n const events = new EventManager()\n events.registerConfig(config)\n await events.fireBeforeCreate({ config })\n\n const outputPath = resolve(config.output?.path ?? 'dist')\n const outputExtension = config.output?.extension ?? 'html'\n\n const contentPatterns = config.content ?? ['emails/**/*.vue']\n const contentBase = computeContentBase(contentPatterns)\n const templateFiles = await glob(contentPatterns)\n\n if (templateFiles.length === 0) {\n spinner.succeed('No templates found')\n return { files: [], config }\n }\n\n // Clear the output directory before writing fresh output. Guard against a\n // misconfigured output.path (e.g. '.', '', '../..') that resolves to the\n // project root or a parent of it — rmSync would wipe the whole project.\n const cwd = process.cwd()\n if (outputPath === parsePath(outputPath).root || outputPath === cwd || cwd.startsWith(outputPath + sep)) {\n throw new Error(`Refusing to clear output path \"${outputPath}\": it is the filesystem root, the current working directory, or a parent of it. Set output.path to a subdirectory like \"dist\".`)\n }\n\n if (existsSync(outputPath)) {\n rmSync(outputPath, { recursive: true, force: true })\n }\n\n const outputFiles: string[] = []\n let droppedAfterBuild = 0\n\n const parallel = resolveParallel(config, templateFiles.length, configInput)\n\n if (parallel.enabled) {\n spinner.text = `Building ${templateFiles.length} templates across ${parallel.workers} workers...`\n\n const result = await runParallelBuild({\n templateFiles,\n workers: parallel.workers,\n config,\n configInput,\n outputPath,\n outputExtension,\n contentBase,\n })\n\n outputFiles.push(...result.files)\n droppedAfterBuild = result.sfcAfterBuildCount\n\n await copyStatic(config, outputPath)\n await events.fireAfterBuild({ files: outputFiles, config })\n } else {\n const renderer = await createRenderer({ markdown: config.markdown, root: config.root, componentDirs: normalizeComponentSources(config.components?.source, process.cwd()), vite: config.vite, customElements: config.vue?.customElements })\n\n try {\n for (const templatePath of templateFiles) {\n const { files } = await buildTemplate(templatePath, { config, renderer, events, outputPath, outputExtension, contentBase })\n outputFiles.push(...files)\n }\n\n await copyStatic(config, outputPath)\n await events.fireAfterBuild({ files: outputFiles, config })\n } finally {\n await renderer.close()\n }\n }\n\n if (droppedAfterBuild > 0) {\n console.warn(`[maizzle] Skipped ${droppedAfterBuild} SFC-registered afterBuild handler(s): afterBuild can't run inside a parallel build worker. Move build-completion logic to the config's afterBuild hook.`)\n }\n\n const duration = ((Date.now() - start) / 1000).toFixed(2)\n const count = outputFiles.length\n spinner.stopAndPersist({\n symbol: '✅',\n text: `Built ${count} template${count !== 1 ? 's' : ''} in ${duration}s`,\n })\n\n return { files: outputFiles, config }\n } catch (err) {\n // Stop the spinner so a thrown error doesn't leave it spinning forever.\n if (spinner.isSpinning) spinner.fail('Build failed')\n throw err\n }\n}\n\n/**\n * Default template count above which parallel build turns on. Benchmarked\n * crossover (with the worker cap below) is ~25 templates; 50 leaves margin so\n * auto-parallel only kicks in where it's a reliable win across hardware.\n * Override per project with `parallel: { threshold }`.\n */\nconst DEFAULT_PARALLEL_THRESHOLD = 50\n\n/**\n * Default worker cap. Each worker runs a full Vite SSR renderer, so startup +\n * contention outweighs added parallelism past ~8 — benchmarks showed 8 beating\n * 12/16/23 at every size. Override with `parallel: { workers }`.\n */\nconst DEFAULT_MAX_WORKERS = 8\n\n/**\n * Decide whether to build in parallel and with how many workers.\n *\n * `config.parallel`:\n * - omitted → parallel when `count > 50`, min(CPU count − 1, 8) workers\n * - `true` → always parallel (ignores threshold), default workers\n * - `false` → always sequential\n * - `{ workers, threshold }` → parallel when `count > threshold` (default 50),\n * using `workers` threads (default min(CPU count − 1, 8))\n *\n * Workers reload the config file to recover function hooks, so parallel only\n * applies to file-based configs (a path or the default cwd config) — an inline\n * config object has no file to reload and always builds sequentially.\n */\nexport function resolveParallel(\n config: MaizzleConfig,\n count: number,\n configInput: Partial<MaizzleConfig> | string | undefined,\n): { enabled: boolean; workers: number } {\n const setting = config.parallel\n if (setting === false) return { enabled: false, workers: 0 }\n\n const fileBased = typeof configInput === 'string' || configInput == null\n if (!fileBased) return { enabled: false, workers: 0 }\n\n const cpus = availableParallelism()\n const defaultWorkers = Math.min(Math.max(1, cpus - 1), DEFAULT_MAX_WORKERS)\n\n let maxWorkers = defaultWorkers\n let threshold = DEFAULT_PARALLEL_THRESHOLD\n // `true` opts in regardless of count; object/omitted stay threshold-gated.\n const ignoreThreshold = setting === true\n\n if (typeof setting === 'object' && setting !== null) {\n if (typeof setting.workers === 'number' && setting.workers > 0) maxWorkers = Math.floor(setting.workers)\n if (typeof setting.threshold === 'number' && setting.threshold >= 0) threshold = Math.floor(setting.threshold)\n }\n\n if (!ignoreThreshold && count <= threshold) return { enabled: false, workers: 0 }\n\n const workers = Math.min(maxWorkers, count)\n return { enabled: workers >= 2 && count >= 2, workers }\n}\n\n/**\n * Run the build across worker threads. Each worker reloads the config (for its\n * function hooks), builds its batch via the same `buildTemplate` as the\n * sequential path, and returns the files it wrote. beforeCreate/afterBuild stay\n * on the main thread (handled by the caller).\n */\nasync function runParallelBuild(opts: {\n templateFiles: string[]\n workers: number\n config: MaizzleConfig\n configInput: Partial<MaizzleConfig> | string | undefined\n outputPath: string\n outputExtension: string\n contentBase: string\n}): Promise<{ files: string[]; sfcAfterBuildCount: number }> {\n const { templateFiles, workers, config, configInput, outputPath, outputExtension, contentBase } = opts\n\n const { default: Tinypool } = await import('tinypool')\n const workerPath = resolve(dirname(fileURLToPath(import.meta.url)), 'render/parallel/worker.mjs')\n\n const configPath = typeof configInput === 'string' ? configInput : undefined\n // Serializable snapshot of the post-beforeCreate config (functions dropped).\n const configData = JSON.parse(JSON.stringify(config)) as Partial<MaizzleConfig>\n\n const batches = shardEvenly(templateFiles, workers)\n\n const pool = new Tinypool({ filename: workerPath, minThreads: batches.length, maxThreads: batches.length })\n\n try {\n const results = await Promise.all(\n batches.map(templatePaths => pool.run({\n templatePaths,\n configPath,\n configData,\n outputPath,\n outputExtension,\n contentBase,\n })),\n )\n\n return {\n files: results.flatMap(r => r.files),\n sfcAfterBuildCount: results.reduce((n, r) => n + r.sfcAfterBuildCount, 0),\n }\n } finally {\n await pool.destroy()\n }\n}\n\n/** Round-robin items into up to `buckets` non-empty groups for even balance. */\nfunction shardEvenly<T>(items: T[], buckets: number): T[][] {\n const out: T[][] = Array.from({ length: buckets }, () => [])\n items.forEach((item, i) => out[i % buckets].push(item))\n return out.filter(b => b.length > 0)\n}\n\nasync function copyStatic(config: MaizzleConfig, outputPath: string): Promise<void> {\n const sources = config.static?.source ?? ['public/**/*.*']\n const destination = config.static?.destination ?? 'public'\n\n // One glob call so negation patterns still apply across the whole set.\n const files = await glob(sources)\n\n // Absolute base dir to strip, per positive source pattern. Each file keeps\n // the structure under its own pattern's base — using only sources[0] sends\n // files from other roots to the wrong place (or escaping the output dir).\n const bases = sources.filter(s => !s.startsWith('!')).map(staticBase)\n\n for (const file of files) {\n const abs = resolve(file)\n const base = bases\n .filter(b => abs === b || abs.startsWith(b + sep))\n .sort((a, b) => b.length - a.length)[0] ?? bases[0] ?? resolve('.')\n\n const destPath = join(outputPath, destination, relative(base, abs))\n const destDir = dirname(destPath)\n\n if (!existsSync(destDir)) {\n mkdirSync(destDir, { recursive: true })\n }\n\n cpSync(file, destPath)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA6BA,eAAsB,MAAM,aAAqE;CAC/F,MAAM,QAAQ,KAAK,IAAI;CACvB,MAAM,UAAU,IAAI;EAAE,MAAM;EAAyB,SAAS;CAAe,CAAC,CAAC,CAAC,MAAM;CAEtF,IAAI;EACF,MAAM,SAAS,MAAM,cAAc,WAAW;EAE9C,MAAM,SAAS,IAAI,aAAa;EAChC,OAAO,eAAe,MAAM;EAC5B,MAAM,OAAO,iBAAiB,EAAE,OAAO,CAAC;EAExC,MAAM,aAAa,QAAQ,OAAO,QAAQ,QAAQ,MAAM;EACxD,MAAM,kBAAkB,OAAO,QAAQ,aAAa;EAEpD,MAAM,kBAAkB,OAAO,WAAW,CAAC,iBAAiB;EAC5D,MAAM,cAAc,mBAAmB,eAAe;EACtD,MAAM,gBAAgB,MAAM,KAAK,eAAe;EAEhD,IAAI,cAAc,WAAW,GAAG;GAC9B,QAAQ,QAAQ,oBAAoB;GACpC,OAAO;IAAE,OAAO,CAAC;IAAG;GAAO;EAC7B;EAKA,MAAM,MAAM,QAAQ,IAAI;EACxB,IAAI,eAAeA,MAAU,UAAU,CAAC,CAAC,QAAQ,eAAe,OAAO,IAAI,WAAW,aAAa,GAAG,GACpG,MAAM,IAAI,MAAM,kCAAkC,WAAW,+HAA+H;EAG9L,IAAI,WAAW,UAAU,GACvB,OAAO,YAAY;GAAE,WAAW;GAAM,OAAO;EAAK,CAAC;EAGrD,MAAM,cAAwB,CAAC;EAC/B,IAAI,oBAAoB;EAExB,MAAM,WAAW,gBAAgB,QAAQ,cAAc,QAAQ,WAAW;EAE1E,IAAI,SAAS,SAAS;GACpB,QAAQ,OAAO,YAAY,cAAc,OAAO,oBAAoB,SAAS,QAAQ;GAErF,MAAM,SAAS,MAAM,iBAAiB;IACpC;IACA,SAAS,SAAS;IAClB;IACA;IACA;IACA;IACA;GACF,CAAC;GAED,YAAY,KAAK,GAAG,OAAO,KAAK;GAChC,oBAAoB,OAAO;GAE3B,MAAM,WAAW,QAAQ,UAAU;GACnC,MAAM,OAAO,eAAe;IAAE,OAAO;IAAa;GAAO,CAAC;EAC5D,OAAO;GACL,MAAM,WAAW,MAAM,eAAe;IAAE,UAAU,OAAO;IAAU,MAAM,OAAO;IAAM,eAAe,0BAA0B,OAAO,YAAY,QAAQ,QAAQ,IAAI,CAAC;IAAG,MAAM,OAAO;IAAM,gBAAgB,OAAO,KAAK;GAAe,CAAC;GAEzO,IAAI;IACF,KAAK,MAAM,gBAAgB,eAAe;KACxC,MAAM,EAAE,UAAU,MAAM,cAAc,cAAc;MAAE;MAAQ;MAAU;MAAQ;MAAY;MAAiB;KAAY,CAAC;KAC1H,YAAY,KAAK,GAAG,KAAK;IAC3B;IAEA,MAAM,WAAW,QAAQ,UAAU;IACnC,MAAM,OAAO,eAAe;KAAE,OAAO;KAAa;IAAO,CAAC;GAC5D,UAAU;IACR,MAAM,SAAS,MAAM;GACvB;EACF;EAEA,IAAI,oBAAoB,GACtB,QAAQ,KAAK,qBAAqB,kBAAkB,yJAAyJ;EAG/M,MAAM,aAAa,KAAK,IAAI,IAAI,SAAS,IAAA,CAAM,QAAQ,CAAC;EACxD,MAAM,QAAQ,YAAY;EAC1B,QAAQ,eAAe;GACrB,QAAQ;GACR,MAAM,SAAS,MAAM,WAAW,UAAU,IAAI,MAAM,GAAG,MAAM,SAAS;EACxE,CAAC;EAED,OAAO;GAAE,OAAO;GAAa;EAAO;CACtC,SAAS,KAAK;EAEZ,IAAI,QAAQ,YAAY,QAAQ,KAAK,cAAc;EACnD,MAAM;CACR;AACF;;;;;;;AAQA,MAAM,6BAA6B;;;;;;AAOnC,MAAM,sBAAsB;;;;;;;;;;;;;;;AAgB5B,SAAgB,gBACd,QACA,OACA,aACuC;CACvC,MAAM,UAAU,OAAO;CACvB,IAAI,YAAY,OAAO,OAAO;EAAE,SAAS;EAAO,SAAS;CAAE;CAG3D,IAAI,EADc,OAAO,gBAAgB,YAAY,eAAe,OACpD,OAAO;EAAE,SAAS;EAAO,SAAS;CAAE;CAEpD,MAAM,OAAO,qBAAqB;CAGlC,IAAI,aAFmB,KAAK,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,GAAG,mBAEzB;CAC9B,IAAI,YAAY;CAEhB,MAAM,kBAAkB,YAAY;CAEpC,IAAI,OAAO,YAAY,YAAY,YAAY,MAAM;EACnD,IAAI,OAAO,QAAQ,YAAY,YAAY,QAAQ,UAAU,GAAG,aAAa,KAAK,MAAM,QAAQ,OAAO;EACvG,IAAI,OAAO,QAAQ,cAAc,YAAY,QAAQ,aAAa,GAAG,YAAY,KAAK,MAAM,QAAQ,SAAS;CAC/G;CAEA,IAAI,CAAC,mBAAmB,SAAS,WAAW,OAAO;EAAE,SAAS;EAAO,SAAS;CAAE;CAEhF,MAAM,UAAU,KAAK,IAAI,YAAY,KAAK;CAC1C,OAAO;EAAE,SAAS,WAAW,KAAK,SAAS;EAAG;CAAQ;AACxD;;;;;;;AAQA,eAAe,iBAAiB,MAQ6B;CAC3D,MAAM,EAAE,eAAe,SAAS,QAAQ,aAAa,YAAY,iBAAiB,gBAAgB;CAElG,MAAM,EAAE,SAAS,aAAa,MAAM,OAAO;CAC3C,MAAM,aAAa,QAAQ,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,4BAA4B;CAEhG,MAAM,aAAa,OAAO,gBAAgB,WAAW,cAAc,KAAA;CAEnE,MAAM,aAAa,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;CAEpD,MAAM,UAAU,YAAY,eAAe,OAAO;CAElD,MAAM,OAAO,IAAI,SAAS;EAAE,UAAU;EAAY,YAAY,QAAQ;EAAQ,YAAY,QAAQ;CAAO,CAAC;CAE1G,IAAI;EACF,MAAM,UAAU,MAAM,QAAQ,IAC5B,QAAQ,KAAI,kBAAiB,KAAK,IAAI;GACpC;GACA;GACA;GACA;GACA;GACA;EACF,CAAC,CAAC,CACJ;EAEA,OAAO;GACL,OAAO,QAAQ,SAAQ,MAAK,EAAE,KAAK;GACnC,oBAAoB,QAAQ,QAAQ,GAAG,MAAM,IAAI,EAAE,oBAAoB,CAAC;EAC1E;CACF,UAAU;EACR,MAAM,KAAK,QAAQ;CACrB;AACF;;AAGA,SAAS,YAAe,OAAY,SAAwB;CAC1D,MAAM,MAAa,MAAM,KAAK,EAAE,QAAQ,QAAQ,SAAS,CAAC,CAAC;CAC3D,MAAM,SAAS,MAAM,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC;CACtD,OAAO,IAAI,QAAO,MAAK,EAAE,SAAS,CAAC;AACrC;AAEA,eAAe,WAAW,QAAuB,YAAmC;CAClF,MAAM,UAAU,OAAO,QAAQ,UAAU,CAAC,eAAe;CACzD,MAAM,cAAc,OAAO,QAAQ,eAAe;CAGlD,MAAM,QAAQ,MAAM,KAAK,OAAO;CAKhC,MAAM,QAAQ,QAAQ,QAAO,MAAK,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU;CAEpE,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,MAAM,QAAQ,IAAI;EACxB,MAAM,OAAO,MACV,QAAO,MAAK,QAAQ,KAAK,IAAI,WAAW,IAAI,GAAG,CAAC,CAAC,CACjD,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,MAAM,MAAM,QAAQ,GAAG;EAEpE,MAAM,WAAW,KAAK,YAAY,aAAa,SAAS,MAAM,GAAG,CAAC;EAClE,MAAM,UAAU,QAAQ,QAAQ;EAEhC,IAAI,CAAC,WAAW,OAAO,GACrB,UAAU,SAAS,EAAE,WAAW,KAAK,CAAC;EAGxC,OAAO,MAAM,QAAQ;CACvB;AACF"}
@@ -1,7 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, useAttrs, createStaticVNode } from 'vue'
3
3
  import type { PropType } from 'vue'
4
- import { twMerge } from 'tailwind-merge'
4
+ import { twMerge } from '../utils/twMerge'
5
5
  import { outlookFallbackProp } from './utils.ts'
6
6
  import { useOutlookFallback } from '../composables/useOutlookFallback'
7
7
 
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { createStaticVNode, type PropType } from 'vue'
3
- import { twMerge } from 'tailwind-merge'
3
+ import { twMerge } from '../utils/twMerge'
4
4
  import { codeToHtml, getSingletonHighlighter, type BundledLanguage, type BundledTheme } from 'shiki'
5
5
  import { buildCodeBlock, codeBlockPreClass } from './utils'
6
6
 
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { createStaticVNode, type PropType } from 'vue'
3
- import { twMerge } from 'tailwind-merge'
3
+ import { twMerge } from '../utils/twMerge'
4
4
  import { codeToHtml, getSingletonHighlighter, type BundledLanguage, type BundledTheme } from 'shiki'
5
5
 
6
6
  export default {
@@ -1,7 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, createStaticVNode, inject, useAttrs } from 'vue'
3
3
  import type { ComputedRef } from 'vue'
4
- import { twMerge } from 'tailwind-merge'
4
+ import { twMerge } from '../utils/twMerge'
5
5
  import { nextId, normalizeToPixels, outlookFallbackProp } from './utils.ts'
6
6
  import { useOutlookFallback } from '../composables/useOutlookFallback'
7
7
 
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, provide, createStaticVNode, useAttrs } from 'vue'
3
- import { twMerge } from 'tailwind-merge'
3
+ import { twMerge } from '../utils/twMerge'
4
4
  import { hasWidthUtility, nextId, normalizeToPixels, outlookFallbackProp } from './utils.ts'
5
5
  import { useOutlookFallback } from '../composables/useOutlookFallback'
6
6
 
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, useAttrs } from 'vue'
3
- import { twMerge } from 'tailwind-merge'
3
+ import { twMerge } from '../utils/twMerge'
4
4
 
5
5
  defineOptions({ inheritAttrs: false })
6
6
 
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, useAttrs } from 'vue'
3
- import { twMerge } from 'tailwind-merge'
3
+ import { twMerge } from '../utils/twMerge'
4
4
 
5
5
  defineOptions({ inheritAttrs: false })
6
6
 
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, createStaticVNode, useAttrs, type PropType } from 'vue'
3
- import { twMerge } from 'tailwind-merge'
3
+ import { twMerge } from '../utils/twMerge'
4
4
  import { outlookFallbackProp } from './utils.ts'
5
5
  import { useOutlookFallback } from '../composables/useOutlookFallback'
6
6
 
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, useAttrs, createStaticVNode, type PropType } from 'vue'
3
- import { twMerge } from 'tailwind-merge'
3
+ import { twMerge } from '../utils/twMerge'
4
4
  import { outlookFallbackProp } from './utils.ts'
5
5
  import { useOutlookFallback } from '../composables/useOutlookFallback'
6
6
 
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, useAttrs } from 'vue'
3
- import { twMerge } from 'tailwind-merge'
3
+ import { twMerge } from '../utils/twMerge'
4
4
 
5
5
  defineOptions({ inheritAttrs: false })
6
6
 
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { createStaticVNode, type PropType } from 'vue'
3
- import { twMerge } from 'tailwind-merge'
3
+ import { twMerge } from '../utils/twMerge'
4
4
  import { encode } from 'uqr'
5
5
 
6
6
  type Ecc = 'L' | 'M' | 'Q' | 'H'
@@ -5,7 +5,7 @@ const warnedLocations = new Set<string>()
5
5
  <script setup lang="ts">
6
6
  import { Comment, Text, computed, createStaticVNode, provide, useAttrs, useSlots, Fragment } from 'vue'
7
7
  import type { VNode } from 'vue'
8
- import { twMerge } from 'tailwind-merge'
8
+ import { twMerge } from '../utils/twMerge'
9
9
  import Column from './Column.vue'
10
10
  import { hasWidthInStyle, hasWidthUtility, normalizeToPixels, outlookFallbackProp } from './utils.ts'
11
11
  import { useOutlookFallback } from '../composables/useOutlookFallback'
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { computed, createStaticVNode, useAttrs } from 'vue'
3
- import { twMerge } from 'tailwind-merge'
3
+ import { twMerge } from '../utils/twMerge'
4
4
  import { hasWidthInStyle, hasWidthUtility, nextId, normalizeToPixels, outlookFallbackProp } from './utils.ts'
5
5
  import { useOutlookFallback } from '../composables/useOutlookFallback'
6
6
 
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { type PropType, computed, useAttrs } from 'vue'
3
- import { twMerge } from 'tailwind-merge'
3
+ import { twMerge } from '../utils/twMerge'
4
4
 
5
5
  defineOptions({ inheritAttrs: false })
6
6
 
@@ -1,5 +1,5 @@
1
1
  //#region src/components/utils.d.ts
2
- declare function normalizeToPixels(value: string | number): string;
2
+ export declare function normalizeToPixels(value: string | number): string;
3
3
  /**
4
4
  * Module-scoped sequential ID generator. Used by components to mint
5
5
  * unique marker ids (e.g. `c1`, `c2`) for the post-render transformer.
@@ -8,18 +8,18 @@ declare function normalizeToPixels(value: string | number): string;
8
8
  * `<script setup>` into the component's `setup()` function — any
9
9
  * `let counter = 0` there resets per instance, causing id collisions.
10
10
  */
11
- declare function nextId(prefix: string): string;
12
- declare function hasWidthUtility(classStr: string): boolean;
13
- declare function hasWidthInStyle(styleStr: string): boolean;
14
- declare function hasHeightUtility(classStr: string): boolean;
15
- declare function hasHeightInStyle(styleStr: string): boolean;
11
+ export declare function nextId(prefix: string): string;
12
+ export declare function hasWidthUtility(classStr: string): boolean;
13
+ export declare function hasWidthInStyle(styleStr: string): boolean;
14
+ export declare function hasHeightUtility(classStr: string): boolean;
15
+ export declare function hasHeightInStyle(styleStr: string): boolean;
16
16
  /**
17
17
  * Shared prop for components that emit MSO/VML fallback markup. The
18
18
  * `null` default acts as the "unset" sentinel — `useOutlookFallback`
19
19
  * treats `null` as inherit-from-ancestor (root default `true`),
20
20
  * letting users override per-component without losing inheritance.
21
21
  */
22
- declare const outlookFallbackProp: {
22
+ export declare const outlookFallbackProp: {
23
23
  readonly type: BooleanConstructor;
24
24
  readonly default: null;
25
25
  };
@@ -29,7 +29,7 @@ declare const outlookFallbackProp: {
29
29
  * `m-0` strips the browser's default `<pre>` margins so it isn't spaced
30
30
  * away from its wrapper.
31
31
  */
32
- declare function codeBlockPreClass(bg: string): string;
32
+ export declare function codeBlockPreClass(bg: string): string;
33
33
  /**
34
34
  * Build the email-safe table wrapper around highlighted code. Shared by the
35
35
  * `<CodeBlock>` component and the Markdown fenced/indented code-block
@@ -37,7 +37,7 @@ declare function codeBlockPreClass(bg: string): string;
37
37
  * cell carries the theme background, wrapping a `<pre>` styled
38
38
  * with utility classes (not Shiki's raw inline styles).
39
39
  */
40
- declare function buildCodeBlock(codeContent: string, bg: string, options?: {
40
+ export declare function buildCodeBlock(codeContent: string, bg: string, options?: {
41
41
  preClass?: string;
42
42
  tdClass?: string;
43
43
  styleAttr?: string;
@@ -47,7 +47,6 @@ declare function buildCodeBlock(codeContent: string, bg: string, options?: {
47
47
  * pulling the inner code and the theme background out of the highlighted
48
48
  * HTML. Falls back to a white background for unhighlighted blocks.
49
49
  */
50
- declare function shikiToCodeBlock(highlighted: string): string;
50
+ export declare function shikiToCodeBlock(highlighted: string): string;
51
51
  //#endregion
52
- export { buildCodeBlock, codeBlockPreClass, hasHeightInStyle, hasHeightUtility, hasWidthInStyle, hasWidthUtility, nextId, normalizeToPixels, outlookFallbackProp, shikiToCodeBlock };
53
52
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/components/utils.ts"],"mappings":";iBAAgB,kBAAkB;;;;;;;;;iBAiBlB,OAAO;iBAKP,gBAAgB;iBAQhB,gBAAgB;iBAIhB,iBAAiB;iBAQjB,iBAAiB;;;;;;;cAUpB;iBAAA;;;;;;;;;iBAWG,kBAAkB;;;;;;;;iBAWlB,eACd,qBACA,YACA;EAAW;EAAmB;EAAkB;;;;;;;iBAiBlC,iBAAiB"}
1
+ {"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/components/utils.ts"],"mappings":";wBAAgB,kBAAkB;;;;;;;;;wBAiBlB,OAAO;wBAKP,gBAAgB;wBAQhB,gBAAgB;wBAIhB,iBAAiB;wBAQjB,iBAAiB;;;;;;;qBAUpB;iBAAA;;;;;;;;;wBAWG,kBAAkB;;;;;;;;wBAWlB,eACd,qBACA,YACA;EAAW;EAAmB;EAAkB;;;;;;;wBAiBlC,iBAAiB"}
@@ -8,7 +8,6 @@ import "../types/index.js";
8
8
  * In Vue SFC `<script setup>`: merges with the global config and provides
9
9
  * the result to child components via `useConfig()`
10
10
  */
11
- declare function defineConfig(data?: Partial<MaizzleConfig>): MaizzleConfig;
11
+ export declare function defineConfig(data?: Partial<MaizzleConfig>): MaizzleConfig;
12
12
  //#endregion
13
- export { defineConfig };
14
13
  //# sourceMappingURL=defineConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defineConfig.d.ts","names":[],"sources":["../../src/composables/defineConfig.ts"],"mappings":";;;;;;;;;;iBAoBgB,aAAa,OAAM,QAAQ,iBAAsB"}
1
+ {"version":3,"file":"defineConfig.d.ts","names":[],"sources":["../../src/composables/defineConfig.ts"],"mappings":";;;;;;;;;;wBAoBgB,aAAa,OAAM,QAAQ,iBAAsB"}
@@ -4,18 +4,18 @@ import "../types/index.js";
4
4
  import { UsePlaintextOptions } from "./usePlaintext.js";
5
5
  import { InjectionKey } from "vue";
6
6
  //#region src/composables/renderContext.d.ts
7
- interface FontRegistration {
7
+ export interface FontRegistration {
8
8
  family: string;
9
9
  slug: string;
10
10
  declaration: string;
11
11
  url: string;
12
12
  }
13
- interface TailwindBlock {
13
+ export interface TailwindBlock {
14
14
  id: string;
15
15
  /** Optional raw CSS from the component's `#config` slot. */
16
16
  css?: string;
17
17
  }
18
- interface RenderContext {
18
+ export interface RenderContext {
19
19
  doctype?: string;
20
20
  preheader?: {
21
21
  text: string;
@@ -31,7 +31,6 @@ interface RenderContext {
31
31
  fonts?: FontRegistration[];
32
32
  tailwindBlocks?: TailwindBlock[];
33
33
  }
34
- declare const RenderContextKey: InjectionKey<RenderContext>;
34
+ export declare const RenderContextKey: InjectionKey<RenderContext>;
35
35
  //#endregion
36
- export { FontRegistration, RenderContext, RenderContextKey, TailwindBlock };
37
36
  //# sourceMappingURL=renderContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderContext.d.ts","names":[],"sources":["../../src/composables/renderContext.ts"],"mappings":";;;;;;UAKiB;EACf;EACA;EACA;EACA;;UAGe;EACf;;EAEA;;UAGe;EACf;EACA;IAAc;IAAc;;EAC5B,YAAY;EACZ,kBAAkB;IAAQ,MAAM;IAAW,SAAS,SAAS;;EAC7D,YAAY;EACZ;EACA,QAAQ;EACR,iBAAiB;;cAIN,kBAAkB,aAAa"}
1
+ {"version":3,"file":"renderContext.d.ts","names":[],"sources":["../../src/composables/renderContext.ts"],"mappings":";;;;;;iBAKiB;EACf;EACA;EACA;EACA;;iBAGe;EACf;;EAEA;;iBAGe;EACf;EACA;IAAc;IAAc;;EAC5B,YAAY;EACZ,kBAAkB;IAAQ,MAAM;IAAW,SAAS,SAAS;;EAC7D,YAAY;EACZ;EACA,QAAQ;EACR,iBAAiB;;qBAIN,kBAAkB,aAAa"}
@@ -14,7 +14,6 @@ import "../types/index.js";
14
14
  * useBaseUrl({ url: 'https://cdn.example.com/', styleTag: true })
15
15
  * ```
16
16
  */
17
- declare function useBaseUrl(value: UrlConfig['base']): void;
17
+ export declare function useBaseUrl(value: UrlConfig['base']): void;
18
18
  //#endregion
19
- export { useBaseUrl };
20
19
  //# sourceMappingURL=useBaseUrl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBaseUrl.d.ts","names":[],"sources":["../../src/composables/useBaseUrl.ts"],"mappings":";;;;;;;;;;;;;;;;iBAkBgB,WAAW,OAAO"}
1
+ {"version":3,"file":"useBaseUrl.d.ts","names":[],"sources":["../../src/composables/useBaseUrl.ts"],"mappings":";;;;;;;;;;;;;;;;wBAkBgB,WAAW,OAAO"}
@@ -9,8 +9,7 @@ import { InjectionKey } from "vue";
9
9
  * `Symbol()` would differ between them, so `app.provide()` and the SFC's
10
10
  * `inject()` would miss each other and `useConfig()` would throw.
11
11
  */
12
- declare const MaizzleConfigKey: InjectionKey<MaizzleConfig>;
13
- declare function useConfig(): MaizzleConfig;
12
+ export declare const MaizzleConfigKey: InjectionKey<MaizzleConfig>;
13
+ export declare function useConfig(): MaizzleConfig;
14
14
  //#endregion
15
- export { MaizzleConfigKey, useConfig };
16
15
  //# sourceMappingURL=useConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useConfig.d.ts","names":[],"sources":["../../src/composables/useConfig.ts"],"mappings":";;;;;;;;;;;cAWa,kBAAkB,aAAa;iBAE5B,aAAa"}
1
+ {"version":3,"file":"useConfig.d.ts","names":[],"sources":["../../src/composables/useConfig.ts"],"mappings":";;;;;;;;;;;qBAWa,kBAAkB,aAAa;wBAE5B,aAAa"}
@@ -4,7 +4,7 @@ import { ParsedPath } from "node:path";
4
4
  * Internal — set by the build loop before each template iteration and
5
5
  * cleared in `finally`. Not exported from the package entrypoint.
6
6
  */
7
- declare function _setCurrentTemplate(parsed: ParsedPath | undefined): void;
7
+ export declare function _setCurrentTemplate(parsed: ParsedPath | undefined): void;
8
8
  /**
9
9
  * Returns the parsed path of the template currently being processed,
10
10
  * or `undefined` when called outside the per-template scope (e.g. from
@@ -24,7 +24,6 @@ declare function _setCurrentTemplate(parsed: ParsedPath | undefined): void;
24
24
  * }
25
25
  * ```
26
26
  */
27
- declare function useCurrentTemplate(): ParsedPath | undefined;
27
+ export declare function useCurrentTemplate(): ParsedPath | undefined;
28
28
  //#endregion
29
- export { _setCurrentTemplate, useCurrentTemplate };
30
29
  //# sourceMappingURL=useCurrentTemplate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCurrentTemplate.d.ts","names":[],"sources":["../../src/composables/useCurrentTemplate.ts"],"mappings":";;;;;;iBAmBgB,oBAAoB,QAAQ;;;;;;;;;;;;;;;;;;;;iBAuB5B,sBAAsB"}
1
+ {"version":3,"file":"useCurrentTemplate.d.ts","names":[],"sources":["../../src/composables/useCurrentTemplate.ts"],"mappings":";;;;;;wBAmBgB,oBAAoB,QAAQ;;;;;;;;;;;;;;;;;;;;wBAuB5B,sBAAsB"}
@@ -7,7 +7,6 @@
7
7
  * useDoctype('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">')
8
8
  * ```
9
9
  */
10
- declare function useDoctype(doctype: string): void;
10
+ export declare function useDoctype(doctype: string): void;
11
11
  //#endregion
12
- export { useDoctype };
13
12
  //# sourceMappingURL=useDoctype.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDoctype.d.ts","names":[],"sources":["../../src/composables/useDoctype.ts"],"mappings":";;;;;;;;;iBAWgB,WAAW"}
1
+ {"version":3,"file":"useDoctype.d.ts","names":[],"sources":["../../src/composables/useDoctype.ts"],"mappings":";;;;;;;;;wBAWgB,WAAW"}
@@ -10,7 +10,6 @@ import { EventMap, EventName } from "../events/index.js";
10
10
  * })
11
11
  * ```
12
12
  */
13
- declare function useEvent<K extends EventName>(name: K, handler: EventMap[K]): void;
13
+ export declare function useEvent<K extends EventName>(name: K, handler: EventMap[K]): void;
14
14
  //#endregion
15
- export { useEvent };
16
15
  //# sourceMappingURL=useEvent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEvent.d.ts","names":[],"sources":["../../src/composables/useEvent.ts"],"mappings":";;;;;;;;;;;;iBAcgB,SAAS,UAAU,WAAW,MAAM,GAAG,SAAS,SAAS"}
1
+ {"version":3,"file":"useEvent.d.ts","names":[],"sources":["../../src/composables/useEvent.ts"],"mappings":";;;;;;;;;;;;wBAcgB,SAAS,UAAU,WAAW,MAAM,GAAG,SAAS,SAAS"}
@@ -1,6 +1,6 @@
1
1
  //#region src/composables/useFont.d.ts
2
- type FontProvider = 'google' | 'bunny';
3
- interface UseFontOptions {
2
+ export type FontProvider = 'google' | 'bunny';
3
+ export interface UseFontOptions {
4
4
  /**
5
5
  * A single font family name, e.g. `"Roboto"` or `"Open Sans"`.
6
6
  *
@@ -44,7 +44,6 @@ interface UseFontOptions {
44
44
  * useFont({ family: 'Roboto', fallback: 'Verdana, sans-serif', weights: [400, 600] })
45
45
  * ```
46
46
  */
47
- declare function useFont(options: UseFontOptions): void;
47
+ export declare function useFont(options: UseFontOptions): void;
48
48
  //#endregion
49
- export { FontProvider, UseFontOptions, useFont };
50
49
  //# sourceMappingURL=useFont.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFont.d.ts","names":[],"sources":["../../src/composables/useFont.ts"],"mappings":";KA8CY;UAEK;;;;;;;EAOf;;EAEA;;;;;;EAMA,WAAW;;;;;;EAMX;;EAEA;;EAEA;;EAEA,SAAS;;;;;;;;;;;;;;;;;iBA+CK,QAAQ,SAAS"}
1
+ {"version":3,"file":"useFont.d.ts","names":[],"sources":["../../src/composables/useFont.ts"],"mappings":";YA8CY;iBAEK;;;;;;;EAOf;;EAEA;;;;;;EAMA,WAAW;;;;;;EAMX;;EAEA;;EAEA;;EAEA,SAAS;;;;;;;;;;;;;;;;;wBA+CK,QAAQ,SAAS"}
@@ -15,7 +15,6 @@
15
15
  * inherited value (defaults to `true` at the root).
16
16
  * @returns The resolved boolean for the current component.
17
17
  */
18
- declare function useOutlookFallback(value?: boolean | null): boolean;
18
+ export declare function useOutlookFallback(value?: boolean | null): boolean;
19
19
  //#endregion
20
- export { useOutlookFallback };
21
20
  //# sourceMappingURL=useOutlookFallback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOutlookFallback.d.ts","names":[],"sources":["../../src/composables/useOutlookFallback.ts"],"mappings":";;;;;;;;;;;;;;;;;iBAoBgB,mBAAmB"}
1
+ {"version":3,"file":"useOutlookFallback.d.ts","names":[],"sources":["../../src/composables/useOutlookFallback.ts"],"mappings":";;;;;;;;;;;;;;;;;wBAoBgB,mBAAmB"}
@@ -11,7 +11,6 @@
11
11
  * useOutputPath('dist/promos/black-friday.html')
12
12
  * ```
13
13
  */
14
- declare function useOutputPath(path: string): void;
14
+ export declare function useOutputPath(path: string): void;
15
15
  //#endregion
16
- export { useOutputPath };
17
16
  //# sourceMappingURL=useOutputPath.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOutputPath.d.ts","names":[],"sources":["../../src/composables/useOutputPath.ts"],"mappings":";;;;;;;;;;;;;iBAegB,cAAc"}
1
+ {"version":3,"file":"useOutputPath.d.ts","names":[],"sources":["../../src/composables/useOutputPath.ts"],"mappings":";;;;;;;;;;;;;wBAegB,cAAc"}
@@ -1,5 +1,5 @@
1
1
  //#region src/composables/usePlaintext.d.ts
2
- interface UsePlaintextOptions {
2
+ export interface UsePlaintextOptions {
3
3
  extension?: string;
4
4
  destination?: string;
5
5
  options?: Record<string, unknown>;
@@ -15,7 +15,6 @@ interface UsePlaintextOptions {
15
15
  * usePlaintext({ options: { ignoreTags: ['br'] } })
16
16
  * ```
17
17
  */
18
- declare function usePlaintext(options?: UsePlaintextOptions): void;
18
+ export declare function usePlaintext(options?: UsePlaintextOptions): void;
19
19
  //#endregion
20
- export { UsePlaintextOptions, usePlaintext };
21
20
  //# sourceMappingURL=usePlaintext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePlaintext.d.ts","names":[],"sources":["../../src/composables/usePlaintext.ts"],"mappings":";UAGiB;EACf;EACA;EACA,UAAU;;;;;;;;;;;;;iBAcI,aAAa,UAAU"}
1
+ {"version":3,"file":"usePlaintext.d.ts","names":[],"sources":["../../src/composables/usePlaintext.ts"],"mappings":";iBAGiB;EACf;EACA;EACA,UAAU;;;;;;;;;;;;;wBAcI,aAAa,UAAU"}
@@ -1,5 +1,5 @@
1
1
  //#region src/composables/usePreheader.d.ts
2
- interface UsePreheaderOptions {
2
+ export interface UsePreheaderOptions {
3
3
  /**
4
4
  * Explicit number of filler sequences to render. When omitted, the count
5
5
  * is auto-derived to fill the 200-char inbox preview budget.
@@ -19,7 +19,6 @@ interface UsePreheaderOptions {
19
19
  * usePreheader('Welcome!', { spaces: 50 })
20
20
  * ```
21
21
  */
22
- declare function usePreheader(text: string, options?: UsePreheaderOptions): void;
22
+ export declare function usePreheader(text: string, options?: UsePreheaderOptions): void;
23
23
  //#endregion
24
- export { UsePreheaderOptions, usePreheader };
25
24
  //# sourceMappingURL=usePreheader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePreheader.d.ts","names":[],"sources":["../../src/composables/usePreheader.ts"],"mappings":";UAKiB;;;;;EAKf;;;;;;;;;;;;;;;iBAgBc,aAAa,cAAc,UAAU"}
1
+ {"version":3,"file":"usePreheader.d.ts","names":[],"sources":["../../src/composables/usePreheader.ts"],"mappings":";iBAKiB;;;;;EAKf;;;;;;;;;;;;;;;wBAgBc,aAAa,cAAc,UAAU"}
@@ -29,7 +29,6 @@ import "../types/index.js";
29
29
  * useTransformers({ prettify: true })
30
30
  * ```
31
31
  */
32
- declare function useTransformers(value?: boolean | TransformerToggles): void;
32
+ export declare function useTransformers(value?: boolean | TransformerToggles): void;
33
33
  //#endregion
34
- export { useTransformers };
35
34
  //# sourceMappingURL=useTransformers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTransformers.d.ts","names":[],"sources":["../../src/composables/useTransformers.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiCgB,gBAAgB,kBAAiB"}
1
+ {"version":3,"file":"useTransformers.d.ts","names":[],"sources":["../../src/composables/useTransformers.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAiCgB,gBAAgB,kBAAiB"}
@@ -14,7 +14,6 @@ import "../types/index.js";
14
14
  * Pass `_options` alongside the params to tweak which tags/attributes
15
15
  * receive them (see `UrlQueryOptions`).
16
16
  */
17
- declare function useUrlQuery(value: UrlQuery): void;
17
+ export declare function useUrlQuery(value: UrlQuery): void;
18
18
  //#endregion
19
- export { useUrlQuery };
20
19
  //# sourceMappingURL=useUrlQuery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useUrlQuery.d.ts","names":[],"sources":["../../src/composables/useUrlQuery.ts"],"mappings":";;;;;;;;;;;;;;;;iBAkBgB,YAAY,OAAO"}
1
+ {"version":3,"file":"useUrlQuery.d.ts","names":[],"sources":["../../src/composables/useUrlQuery.ts"],"mappings":";;;;;;;;;;;;;;;;wBAkBgB,YAAY,OAAO"}
@@ -1,7 +1,6 @@
1
1
  import { MaizzleConfig } from "../types/config.js";
2
2
  import "../types/index.js";
3
3
  //#region src/config/defaults.d.ts
4
- declare const defaults: MaizzleConfig;
4
+ export declare const defaults: MaizzleConfig;
5
5
  //#endregion
6
- export { defaults };
7
6
  //# sourceMappingURL=defaults.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","names":[],"sources":["../../src/config/defaults.ts"],"mappings":";;;cAEa,UAAU"}
1
+ {"version":3,"file":"defaults.d.ts","names":[],"sources":["../../src/config/defaults.ts"],"mappings":";;;qBAEa,UAAU"}