@maizzle/framework 6.0.0-rc.17 → 6.0.0-rc.19

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 (349) hide show
  1. package/bin/maizzle.mjs +1 -1
  2. package/dist/build.d.ts +6 -5
  3. package/dist/build.d.ts.map +1 -1
  4. package/dist/{build.mjs → build.js} +23 -15
  5. package/dist/build.js.map +1 -0
  6. package/dist/components/Body.vue +10 -0
  7. package/dist/components/Button.vue +86 -49
  8. package/dist/components/Column.vue +10 -0
  9. package/dist/components/Container.vue +35 -7
  10. package/dist/components/Hr.vue +33 -0
  11. package/dist/components/Html.vue +29 -1
  12. package/dist/components/Layout.vue +27 -12
  13. package/dist/components/MarkdownLayout.vue +39 -0
  14. package/dist/components/NotPlaintext.vue +14 -0
  15. package/dist/components/{Vml.vue → OutlookBg.vue} +1 -1
  16. package/dist/components/Overlap.vue +10 -0
  17. package/dist/components/Plaintext.vue +14 -0
  18. package/dist/components/Preheader.vue +3 -8
  19. package/dist/components/QrCode.vue +157 -0
  20. package/dist/components/Row.vue +10 -0
  21. package/dist/components/Section.vue +10 -0
  22. package/dist/components/Spacer.vue +28 -27
  23. package/dist/components/{utils.mjs → utils.js} +2 -2
  24. package/dist/components/utils.js.map +1 -0
  25. package/dist/composables/{defineConfig.mjs → defineConfig.js} +4 -5
  26. package/dist/composables/defineConfig.js.map +1 -0
  27. package/dist/composables/{renderContext.mjs → renderContext.js} +2 -2
  28. package/dist/composables/renderContext.js.map +1 -0
  29. package/dist/composables/useBaseUrl.d.ts +19 -0
  30. package/dist/composables/useBaseUrl.d.ts.map +1 -0
  31. package/dist/composables/useBaseUrl.js +26 -0
  32. package/dist/composables/useBaseUrl.js.map +1 -0
  33. package/dist/composables/{useConfig.mjs → useConfig.js} +2 -3
  34. package/dist/composables/useConfig.js.map +1 -0
  35. package/dist/composables/{useDoctype.mjs → useDoctype.js} +3 -4
  36. package/dist/composables/useDoctype.js.map +1 -0
  37. package/dist/composables/{useEvent.mjs → useEvent.js} +3 -4
  38. package/dist/composables/useEvent.js.map +1 -0
  39. package/dist/composables/{useFont.mjs → useFont.js} +3 -4
  40. package/dist/composables/useFont.js.map +1 -0
  41. package/dist/composables/{useOutlookFallback.mjs → useOutlookFallback.js} +2 -3
  42. package/dist/composables/useOutlookFallback.js.map +1 -0
  43. package/dist/composables/usePlaintext.d.ts +2 -0
  44. package/dist/composables/usePlaintext.d.ts.map +1 -1
  45. package/dist/composables/{usePlaintext.mjs → usePlaintext.js} +4 -4
  46. package/dist/composables/usePlaintext.js.map +1 -0
  47. package/dist/composables/{usePreheader.mjs → usePreheader.js} +3 -4
  48. package/dist/composables/usePreheader.js.map +1 -0
  49. package/dist/composables/useTransformers.d.ts +34 -0
  50. package/dist/composables/useTransformers.d.ts.map +1 -0
  51. package/dist/composables/useTransformers.js +48 -0
  52. package/dist/composables/useTransformers.js.map +1 -0
  53. package/dist/composables/useUrlQuery.d.ts +19 -0
  54. package/dist/composables/useUrlQuery.d.ts.map +1 -0
  55. package/dist/composables/useUrlQuery.js +26 -0
  56. package/dist/composables/useUrlQuery.js.map +1 -0
  57. package/dist/config/{defaults.mjs → defaults.js} +9 -3
  58. package/dist/config/defaults.js.map +1 -0
  59. package/dist/config/{index.mjs → index.js} +4 -5
  60. package/dist/config/index.js.map +1 -0
  61. package/dist/events/index.d.ts +8 -2
  62. package/dist/events/index.d.ts.map +1 -1
  63. package/dist/events/{index.mjs → index.js} +21 -5
  64. package/dist/events/index.js.map +1 -0
  65. package/dist/index.d.ts +12 -9
  66. package/dist/index.js +36 -0
  67. package/dist/{plaintext.mjs → plaintext.js} +4 -5
  68. package/dist/plaintext.js.map +1 -0
  69. package/dist/{plugin.mjs → plugin.js} +6 -7
  70. package/dist/plugin.js.map +1 -0
  71. package/dist/plugins/postcss/{mergeMediaQueries.mjs → mergeMediaQueries.js} +2 -3
  72. package/dist/plugins/postcss/mergeMediaQueries.js.map +1 -0
  73. package/dist/plugins/postcss/{pruneVars.mjs → pruneVars.js} +2 -2
  74. package/dist/plugins/postcss/pruneVars.js.map +1 -0
  75. package/dist/plugins/postcss/{quoteFontFamilies.mjs → quoteFontFamilies.js} +2 -2
  76. package/dist/plugins/postcss/quoteFontFamilies.js.map +1 -0
  77. package/dist/plugins/postcss/{removeDeclarations.mjs → removeDeclarations.js} +2 -2
  78. package/dist/plugins/postcss/removeDeclarations.js.map +1 -0
  79. package/dist/plugins/postcss/{resolveMaizzleImports.mjs → resolveMaizzleImports.js} +2 -3
  80. package/dist/plugins/postcss/resolveMaizzleImports.js.map +1 -0
  81. package/dist/plugins/postcss/{resolveProps.mjs → resolveProps.js} +2 -2
  82. package/dist/plugins/postcss/resolveProps.js.map +1 -0
  83. package/dist/plugins/postcss/{tailwindCleanup.mjs → tailwindCleanup.js} +2 -2
  84. package/dist/plugins/postcss/tailwindCleanup.js.map +1 -0
  85. package/dist/{prepare.mjs → prepare.js} +5 -6
  86. package/dist/prepare.js.map +1 -0
  87. package/dist/render/active.d.ts +8 -0
  88. package/dist/render/active.d.ts.map +1 -0
  89. package/dist/render/active.js +12 -0
  90. package/dist/render/active.js.map +1 -0
  91. package/dist/render/createRenderer.d.ts.map +1 -1
  92. package/dist/render/{createRenderer.mjs → createRenderer.js} +24 -19
  93. package/dist/render/createRenderer.js.map +1 -0
  94. package/dist/render/index.d.ts.map +1 -1
  95. package/dist/render/{index.mjs → index.js} +18 -11
  96. package/dist/render/index.js.map +1 -0
  97. package/dist/render/{injectFonts.mjs → injectFonts.js} +3 -4
  98. package/dist/render/injectFonts.js.map +1 -0
  99. package/dist/render/plugins/{codeBlockExtract.mjs → codeBlockExtract.js} +2 -2
  100. package/dist/render/plugins/codeBlockExtract.js.map +1 -0
  101. package/dist/render/plugins/{markdownExtract.mjs → markdownExtract.js} +2 -3
  102. package/dist/render/plugins/markdownExtract.js.map +1 -0
  103. package/dist/render/plugins/{rawExtract.mjs → rawExtract.js} +2 -2
  104. package/dist/render/plugins/rawExtract.js.map +1 -0
  105. package/dist/render/plugins/{rowSourceLocation.mjs → rowSourceLocation.js} +2 -2
  106. package/dist/render/plugins/rowSourceLocation.js.map +1 -0
  107. package/dist/serve.d.ts +2 -0
  108. package/dist/serve.d.ts.map +1 -1
  109. package/dist/{serve.mjs → serve.js} +20 -15
  110. package/dist/serve.js.map +1 -0
  111. package/dist/server/{compatibility.mjs → compatibility.js} +5 -6
  112. package/dist/server/compatibility.js.map +1 -0
  113. package/dist/server/{email.mjs → email.js} +2 -3
  114. package/dist/server/email.js.map +1 -0
  115. package/dist/server/{linter.mjs → linter.js} +3 -4
  116. package/dist/server/linter.js.map +1 -0
  117. package/dist/server/{sfc-utils.mjs → sfc-utils.js} +2 -3
  118. package/dist/server/sfc-utils.js.map +1 -0
  119. package/dist/server/ui/App.vue +18 -0
  120. package/dist/server/ui/components/ui/command/Command.vue +4 -1
  121. package/dist/tests/render/_helpers.d.ts +6 -0
  122. package/dist/tests/render/_helpers.d.ts.map +1 -0
  123. package/dist/tests/render/_helpers.js +16 -0
  124. package/dist/tests/render/_helpers.js.map +1 -0
  125. package/dist/transformers/{addAttributes.mjs → addAttributes.js} +6 -7
  126. package/dist/transformers/addAttributes.js.map +1 -0
  127. package/dist/transformers/attributeToStyle.d.ts +27 -14
  128. package/dist/transformers/attributeToStyle.d.ts.map +1 -1
  129. package/dist/transformers/attributeToStyle.js +94 -0
  130. package/dist/transformers/attributeToStyle.js.map +1 -0
  131. package/dist/transformers/base.d.ts +66 -3
  132. package/dist/transformers/base.d.ts.map +1 -1
  133. package/dist/transformers/{base.mjs → base.js} +56 -30
  134. package/dist/transformers/base.js.map +1 -0
  135. package/dist/transformers/{columnWidth.mjs → columnWidth.js} +4 -5
  136. package/dist/transformers/columnWidth.js.map +1 -0
  137. package/dist/transformers/entities.d.ts +31 -2
  138. package/dist/transformers/entities.d.ts.map +1 -1
  139. package/dist/transformers/entities.js +73 -0
  140. package/dist/transformers/entities.js.map +1 -0
  141. package/dist/transformers/filters/{defaults.mjs → defaults.js} +2 -2
  142. package/dist/transformers/filters/defaults.js.map +1 -0
  143. package/dist/transformers/filters/index.d.ts +31 -10
  144. package/dist/transformers/filters/index.d.ts.map +1 -1
  145. package/dist/transformers/filters/index.js +89 -0
  146. package/dist/transformers/filters/index.js.map +1 -0
  147. package/dist/transformers/format.d.ts +14 -7
  148. package/dist/transformers/format.d.ts.map +1 -1
  149. package/dist/transformers/format.js +30 -0
  150. package/dist/transformers/format.js.map +1 -0
  151. package/dist/transformers/index.js +133 -0
  152. package/dist/transformers/index.js.map +1 -0
  153. package/dist/transformers/inlineCss.d.ts +84 -0
  154. package/dist/transformers/inlineCss.d.ts.map +1 -0
  155. package/dist/transformers/{inlineCSS.mjs → inlineCss.js} +28 -18
  156. package/dist/transformers/inlineCss.js.map +1 -0
  157. package/dist/transformers/inlineLink.d.ts +26 -5
  158. package/dist/transformers/inlineLink.d.ts.map +1 -1
  159. package/dist/transformers/{inlineLink.mjs → inlineLink.js} +34 -10
  160. package/dist/transformers/inlineLink.js.map +1 -0
  161. package/dist/transformers/minify.d.ts +13 -9
  162. package/dist/transformers/minify.d.ts.map +1 -1
  163. package/dist/transformers/minify.js +25 -0
  164. package/dist/transformers/minify.js.map +1 -0
  165. package/dist/transformers/msoPlaceholders.d.ts +28 -0
  166. package/dist/transformers/msoPlaceholders.d.ts.map +1 -0
  167. package/dist/transformers/msoPlaceholders.js +88 -0
  168. package/dist/transformers/msoPlaceholders.js.map +1 -0
  169. package/dist/transformers/purgeCss.d.ts +43 -0
  170. package/dist/transformers/purgeCss.d.ts.map +1 -0
  171. package/dist/transformers/{purgeCSS.mjs → purgeCss.js} +36 -29
  172. package/dist/transformers/purgeCss.js.map +1 -0
  173. package/dist/transformers/removeAttributes.d.ts +43 -20
  174. package/dist/transformers/removeAttributes.d.ts.map +1 -1
  175. package/dist/transformers/removeAttributes.js +70 -0
  176. package/dist/transformers/removeAttributes.js.map +1 -0
  177. package/dist/transformers/{replaceStrings.mjs → replaceStrings.js} +2 -2
  178. package/dist/transformers/replaceStrings.js.map +1 -0
  179. package/dist/transformers/{safeClassNames.mjs → safeClassNames.js} +4 -5
  180. package/dist/transformers/safeClassNames.js.map +1 -0
  181. package/dist/transformers/shorthandCss.d.ts +47 -0
  182. package/dist/transformers/shorthandCss.d.ts.map +1 -0
  183. package/dist/transformers/shorthandCss.js +61 -0
  184. package/dist/transformers/shorthandCss.js.map +1 -0
  185. package/dist/transformers/sixHex.d.ts +16 -7
  186. package/dist/transformers/sixHex.d.ts.map +1 -1
  187. package/dist/transformers/sixHex.js +42 -0
  188. package/dist/transformers/sixHex.js.map +1 -0
  189. package/dist/transformers/{tailwindComponent.mjs → tailwindComponent.js} +5 -6
  190. package/dist/transformers/tailwindComponent.js.map +1 -0
  191. package/dist/transformers/{tailwindcss.mjs → tailwindcss.js} +6 -7
  192. package/dist/transformers/tailwindcss.js.map +1 -0
  193. package/dist/transformers/urlQuery.d.ts +26 -14
  194. package/dist/transformers/urlQuery.d.ts.map +1 -1
  195. package/dist/transformers/urlQuery.js +77 -0
  196. package/dist/transformers/urlQuery.js.map +1 -0
  197. package/dist/types/config.d.ts +108 -15
  198. package/dist/types/config.d.ts.map +1 -1
  199. package/dist/types/config.js +1 -0
  200. package/dist/types/index.d.ts +2 -2
  201. package/dist/types/index.js +1 -0
  202. package/dist/utils/ast/index.js +4 -0
  203. package/dist/utils/ast/{parser.mjs → parser.js} +2 -3
  204. package/dist/utils/ast/parser.js.map +1 -0
  205. package/dist/utils/ast/{serializer.mjs → serializer.js} +3 -4
  206. package/dist/utils/ast/serializer.js.map +1 -0
  207. package/dist/utils/ast/{walker.mjs → walker.js} +2 -2
  208. package/dist/utils/ast/walker.js.map +1 -0
  209. package/dist/utils/{compileTailwindCss.mjs → compileTailwindCss.js} +8 -9
  210. package/dist/utils/compileTailwindCss.js.map +1 -0
  211. package/dist/utils/{decodeStyleEntities.mjs → decodeStyleEntities.js} +2 -2
  212. package/dist/utils/decodeStyleEntities.js.map +1 -0
  213. package/dist/utils/{detect.mjs → detect.js} +2 -3
  214. package/dist/utils/detect.js.map +1 -0
  215. package/dist/utils/output-markers.d.ts +29 -0
  216. package/dist/utils/output-markers.d.ts.map +1 -0
  217. package/dist/utils/output-markers.js +68 -0
  218. package/dist/utils/output-markers.js.map +1 -0
  219. package/dist/utils/{url.mjs → url.js} +2 -3
  220. package/dist/utils/url.js.map +1 -0
  221. package/node_modules/@clack/core/CHANGELOG.md +8 -0
  222. package/node_modules/@clack/core/dist/index.d.mts +18 -4
  223. package/node_modules/@clack/core/dist/index.mjs +16 -10
  224. package/node_modules/@clack/core/dist/index.mjs.map +1 -1
  225. package/node_modules/@clack/core/package.json +5 -2
  226. package/node_modules/@clack/prompts/CHANGELOG.md +15 -0
  227. package/node_modules/@clack/prompts/README.md +107 -2
  228. package/node_modules/@clack/prompts/dist/index.d.mts +16 -11
  229. package/node_modules/@clack/prompts/dist/index.mjs +114 -107
  230. package/node_modules/@clack/prompts/dist/index.mjs.map +1 -1
  231. package/node_modules/@clack/prompts/package.json +7 -4
  232. package/node_modules/fast-string-truncated-width/dist/index.js +36 -96
  233. package/node_modules/fast-string-truncated-width/dist/types.d.ts +0 -3
  234. package/node_modules/fast-string-truncated-width/dist/utils.d.ts +3 -3
  235. package/node_modules/fast-string-truncated-width/dist/utils.js +14 -9
  236. package/node_modules/fast-string-truncated-width/package.json +1 -1
  237. package/node_modules/fast-string-truncated-width/readme.md +2 -3
  238. package/node_modules/fast-string-width/package.json +2 -2
  239. package/node_modules/fast-string-width/readme.md +0 -3
  240. package/node_modules/fast-wrap-ansi/lib/main.js +4 -1
  241. package/node_modules/fast-wrap-ansi/lib/main.js.map +1 -1
  242. package/node_modules/fast-wrap-ansi/package.json +2 -2
  243. package/node_modules/maizzle/README.md +24 -0
  244. package/node_modules/maizzle/dist/commands/make/component.mjs +1 -1
  245. package/node_modules/maizzle/dist/commands/make/config.mjs +1 -1
  246. package/node_modules/maizzle/dist/commands/make/layout.mjs +3 -3
  247. package/node_modules/maizzle/dist/commands/make/scaffold.mjs +1 -1
  248. package/node_modules/maizzle/dist/commands/make/stubs/Layout.vue +146 -0
  249. package/node_modules/maizzle/dist/commands/make/stubs/component.vue +2 -4
  250. package/node_modules/maizzle/dist/commands/make/stubs/config.ts +1 -5
  251. package/node_modules/maizzle/dist/commands/make/template.mjs +1 -1
  252. package/node_modules/maizzle/dist/commands/new.mjs +29 -24
  253. package/node_modules/maizzle/dist/index.mjs +28 -8
  254. package/node_modules/maizzle/package.json +1 -1
  255. package/node_modules/tinyexec/README.md +1 -1
  256. package/node_modules/tinyexec/dist/main.d.mts +6 -6
  257. package/node_modules/tinyexec/dist/main.mjs +126 -134
  258. package/node_modules/tinyexec/package.json +9 -9
  259. package/package.json +4 -4
  260. package/dist/build.mjs.map +0 -1
  261. package/dist/components/Divider.vue +0 -133
  262. package/dist/components/utils.mjs.map +0 -1
  263. package/dist/composables/defineConfig.mjs.map +0 -1
  264. package/dist/composables/renderContext.mjs.map +0 -1
  265. package/dist/composables/useConfig.mjs.map +0 -1
  266. package/dist/composables/useDoctype.mjs.map +0 -1
  267. package/dist/composables/useEvent.mjs.map +0 -1
  268. package/dist/composables/useFont.mjs.map +0 -1
  269. package/dist/composables/useOutlookFallback.mjs.map +0 -1
  270. package/dist/composables/usePlaintext.mjs.map +0 -1
  271. package/dist/composables/usePreheader.mjs.map +0 -1
  272. package/dist/config/defaults.mjs.map +0 -1
  273. package/dist/config/index.mjs.map +0 -1
  274. package/dist/events/index.mjs.map +0 -1
  275. package/dist/index.mjs +0 -34
  276. package/dist/plaintext.mjs.map +0 -1
  277. package/dist/plugin.mjs.map +0 -1
  278. package/dist/plugins/postcss/mergeMediaQueries.mjs.map +0 -1
  279. package/dist/plugins/postcss/pruneVars.mjs.map +0 -1
  280. package/dist/plugins/postcss/quoteFontFamilies.mjs.map +0 -1
  281. package/dist/plugins/postcss/removeDeclarations.mjs.map +0 -1
  282. package/dist/plugins/postcss/resolveMaizzleImports.mjs.map +0 -1
  283. package/dist/plugins/postcss/resolveProps.mjs.map +0 -1
  284. package/dist/plugins/postcss/tailwindCleanup.mjs.map +0 -1
  285. package/dist/prepare.mjs.map +0 -1
  286. package/dist/render/createRenderer.mjs.map +0 -1
  287. package/dist/render/index.mjs.map +0 -1
  288. package/dist/render/injectFonts.mjs.map +0 -1
  289. package/dist/render/plugins/codeBlockExtract.mjs.map +0 -1
  290. package/dist/render/plugins/markdownExtract.mjs.map +0 -1
  291. package/dist/render/plugins/rawExtract.mjs.map +0 -1
  292. package/dist/render/plugins/rowSourceLocation.mjs.map +0 -1
  293. package/dist/serve.mjs.map +0 -1
  294. package/dist/server/compatibility.mjs.map +0 -1
  295. package/dist/server/email.mjs.map +0 -1
  296. package/dist/server/linter.mjs.map +0 -1
  297. package/dist/server/sfc-utils.mjs.map +0 -1
  298. package/dist/transformers/addAttributes.mjs.map +0 -1
  299. package/dist/transformers/attributeToStyle.mjs +0 -80
  300. package/dist/transformers/attributeToStyle.mjs.map +0 -1
  301. package/dist/transformers/base.mjs.map +0 -1
  302. package/dist/transformers/columnWidth.mjs.map +0 -1
  303. package/dist/transformers/entities.mjs +0 -41
  304. package/dist/transformers/entities.mjs.map +0 -1
  305. package/dist/transformers/filters/defaults.mjs.map +0 -1
  306. package/dist/transformers/filters/index.mjs +0 -67
  307. package/dist/transformers/filters/index.mjs.map +0 -1
  308. package/dist/transformers/format.mjs +0 -26
  309. package/dist/transformers/format.mjs.map +0 -1
  310. package/dist/transformers/index.mjs +0 -87
  311. package/dist/transformers/index.mjs.map +0 -1
  312. package/dist/transformers/inlineCSS.d.ts +0 -17
  313. package/dist/transformers/inlineCSS.d.ts.map +0 -1
  314. package/dist/transformers/inlineCSS.mjs.map +0 -1
  315. package/dist/transformers/inlineLink.mjs.map +0 -1
  316. package/dist/transformers/minify.mjs +0 -24
  317. package/dist/transformers/minify.mjs.map +0 -1
  318. package/dist/transformers/msoWidthFromClass.d.ts +0 -19
  319. package/dist/transformers/msoWidthFromClass.d.ts.map +0 -1
  320. package/dist/transformers/msoWidthFromClass.mjs +0 -61
  321. package/dist/transformers/msoWidthFromClass.mjs.map +0 -1
  322. package/dist/transformers/purgeCSS.d.ts +0 -23
  323. package/dist/transformers/purgeCSS.d.ts.map +0 -1
  324. package/dist/transformers/purgeCSS.mjs.map +0 -1
  325. package/dist/transformers/removeAttributes.mjs +0 -63
  326. package/dist/transformers/removeAttributes.mjs.map +0 -1
  327. package/dist/transformers/replaceStrings.mjs.map +0 -1
  328. package/dist/transformers/safeClassNames.mjs.map +0 -1
  329. package/dist/transformers/shorthandCSS.d.ts +0 -24
  330. package/dist/transformers/shorthandCSS.d.ts.map +0 -1
  331. package/dist/transformers/shorthandCSS.mjs +0 -48
  332. package/dist/transformers/shorthandCSS.mjs.map +0 -1
  333. package/dist/transformers/sixHex.mjs +0 -30
  334. package/dist/transformers/sixHex.mjs.map +0 -1
  335. package/dist/transformers/tailwindComponent.mjs.map +0 -1
  336. package/dist/transformers/tailwindcss.mjs.map +0 -1
  337. package/dist/transformers/urlQuery.mjs +0 -65
  338. package/dist/transformers/urlQuery.mjs.map +0 -1
  339. package/dist/types/config.mjs +0 -1
  340. package/dist/types/index.mjs +0 -1
  341. package/dist/utils/ast/index.mjs +0 -5
  342. package/dist/utils/ast/parser.mjs.map +0 -1
  343. package/dist/utils/ast/serializer.mjs.map +0 -1
  344. package/dist/utils/ast/walker.mjs.map +0 -1
  345. package/dist/utils/compileTailwindCss.mjs.map +0 -1
  346. package/dist/utils/decodeStyleEntities.mjs.map +0 -1
  347. package/dist/utils/detect.mjs.map +0 -1
  348. package/dist/utils/url.mjs.map +0 -1
  349. package/node_modules/maizzle/dist/commands/make/stubs/layout.vue +0 -39
@@ -1,75 +1,75 @@
1
1
  import { createRequire as e } from "node:module";
2
2
  import { spawn as t, spawnSync as n } from "node:child_process";
3
- import { delimiter as r, dirname as i, normalize as a, resolve as o } from "node:path";
4
- import { cwd as s } from "node:process";
5
- import { pipeline as c } from "node:stream/promises";
6
- import { PassThrough as l } from "node:stream";
7
- import u from "node:readline";
3
+ import { cwd as r } from "node:process";
4
+ import { delimiter as i, dirname as a, resolve as o } from "node:path";
5
+ import { pipeline as s } from "node:stream/promises";
6
+ import { PassThrough as c } from "node:stream";
7
+ import l from "node:readline";
8
8
  //#region \0rolldown/runtime.js
9
- var d = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports);
10
- var f = /* @__PURE__ */ e(import.meta.url);
9
+ var u = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports);
10
+ var d = /* @__PURE__ */ e(import.meta.url);
11
11
  //#endregion
12
12
  //#region src/env.ts
13
- const p = /^path$/i;
14
- const m = {
13
+ const f = /^path$/i;
14
+ const p = {
15
15
  key: "PATH",
16
16
  value: ""
17
17
  };
18
- function h(e) {
18
+ function m(e) {
19
19
  for (const t in e) {
20
- if (!Object.prototype.hasOwnProperty.call(e, t) || !p.test(t)) continue;
20
+ if (!Object.prototype.hasOwnProperty.call(e, t) || !f.test(t)) continue;
21
21
  const n = e[t];
22
- if (!n) return m;
22
+ if (!n) return p;
23
23
  return {
24
24
  key: t,
25
25
  value: n
26
26
  };
27
27
  }
28
- return m;
28
+ return p;
29
29
  }
30
- function g(e, t) {
31
- const n = t.value.split(r);
32
- const a = [];
30
+ function h(e, t) {
31
+ const n = t.value.split(i);
32
+ const r = [];
33
33
  let s = e;
34
34
  let c;
35
35
  do {
36
- a.push(o(s, "node_modules", ".bin"));
36
+ r.push(o(s, "node_modules", ".bin"));
37
37
  c = s;
38
- s = i(s);
38
+ s = a(s);
39
39
  } while (s !== c);
40
- a.push(i(process.execPath));
41
- const l = a.concat(n).join(r);
40
+ r.push(a(process.execPath));
41
+ const l = r.concat(n).join(i);
42
42
  return {
43
43
  key: t.key,
44
44
  value: l
45
45
  };
46
46
  }
47
- function _(e, t) {
47
+ function g(e, t) {
48
48
  const n = {
49
49
  ...process.env,
50
50
  ...t
51
51
  };
52
- const r = g(e, h(n));
52
+ const r = h(e, m(n));
53
53
  n[r.key] = r.value;
54
54
  return n;
55
55
  }
56
56
  //#endregion
57
57
  //#region src/stream.ts
58
- const v = (e) => {
58
+ const _ = (e) => {
59
59
  let t = e.length;
60
- const n = new l();
60
+ const n = new c();
61
61
  const r = () => {
62
62
  if (--t === 0) n.end();
63
63
  };
64
- for (const t of e) c(t, n, { end: false }).then(r).catch(r);
64
+ for (const t of e) s(t, n, { end: false }).then(r).catch(r);
65
65
  return n;
66
66
  };
67
67
  //#endregion
68
68
  //#region node_modules/isexe/windows.js
69
- var y = /* @__PURE__ */ d(((e, t) => {
69
+ var v = /* @__PURE__ */ u(((e, t) => {
70
70
  t.exports = a;
71
71
  a.sync = o;
72
- var n = f("fs");
72
+ var n = d("fs");
73
73
  function r(e, t) {
74
74
  var n = t.pathExt !== void 0 ? t.pathExt : process.env.PATHEXT;
75
75
  if (!n) return true;
@@ -96,10 +96,10 @@ var y = /* @__PURE__ */ d(((e, t) => {
96
96
  }));
97
97
  //#endregion
98
98
  //#region node_modules/isexe/mode.js
99
- var b = /* @__PURE__ */ d(((e, t) => {
99
+ var y = /* @__PURE__ */ u(((e, t) => {
100
100
  t.exports = r;
101
101
  r.sync = i;
102
- var n = f("fs");
102
+ var n = d("fs");
103
103
  function r(e, t, r) {
104
104
  n.stat(e, function(e, n) {
105
105
  r(e, e ? false : a(n, t));
@@ -126,11 +126,11 @@ var b = /* @__PURE__ */ d(((e, t) => {
126
126
  }));
127
127
  //#endregion
128
128
  //#region node_modules/isexe/index.js
129
- var x = /* @__PURE__ */ d(((e, t) => {
130
- f("fs");
129
+ var b = /* @__PURE__ */ u(((e, t) => {
130
+ d("fs");
131
131
  var n;
132
- if (process.platform === "win32" || global.TESTING_WINDOWS) n = y();
133
- else n = b();
132
+ if (process.platform === "win32" || global.TESTING_WINDOWS) n = v();
133
+ else n = y();
134
134
  t.exports = r;
135
135
  r.sync = i;
136
136
  function r(e, t, i) {
@@ -168,11 +168,11 @@ var x = /* @__PURE__ */ d(((e, t) => {
168
168
  }));
169
169
  //#endregion
170
170
  //#region node_modules/which/which.js
171
- var S = /* @__PURE__ */ d(((e, t) => {
171
+ var x = /* @__PURE__ */ u(((e, t) => {
172
172
  const n = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys";
173
- const r = f("path");
173
+ const r = d("path");
174
174
  const i = n ? ";" : ":";
175
- const a = x();
175
+ const a = b();
176
176
  const o = (e) => Object.assign(/* @__PURE__ */ new Error(`not found: ${e}`), { code: "ENOENT" });
177
177
  const s = (e, t) => {
178
178
  const r = t.colon || i;
@@ -240,7 +240,7 @@ var S = /* @__PURE__ */ d(((e, t) => {
240
240
  }));
241
241
  //#endregion
242
242
  //#region node_modules/path-key/index.js
243
- var C = /* @__PURE__ */ d(((e, t) => {
243
+ var S = /* @__PURE__ */ u(((e, t) => {
244
244
  const n = (e = {}) => {
245
245
  const t = e.env || process.env;
246
246
  if ((e.platform || process.platform) !== "win32") return "PATH";
@@ -251,10 +251,10 @@ var C = /* @__PURE__ */ d(((e, t) => {
251
251
  }));
252
252
  //#endregion
253
253
  //#region node_modules/cross-spawn/lib/util/resolveCommand.js
254
- var w = /* @__PURE__ */ d(((e, t) => {
255
- const n = f("path");
256
- const r = S();
257
- const i = C();
254
+ var C = /* @__PURE__ */ u(((e, t) => {
255
+ const n = d("path");
256
+ const r = x();
257
+ const i = S();
258
258
  function a(e, t) {
259
259
  const a = e.options.env || process.env;
260
260
  const o = process.cwd();
@@ -282,7 +282,7 @@ var w = /* @__PURE__ */ d(((e, t) => {
282
282
  }));
283
283
  //#endregion
284
284
  //#region node_modules/cross-spawn/lib/util/escape.js
285
- var T = /* @__PURE__ */ d(((e, t) => {
285
+ var w = /* @__PURE__ */ u(((e, t) => {
286
286
  const n = /([()\][%!^"`<>&|;, *?])/g;
287
287
  function r(e) {
288
288
  e = e.replace(n, "^$1");
@@ -302,13 +302,13 @@ var T = /* @__PURE__ */ d(((e, t) => {
302
302
  }));
303
303
  //#endregion
304
304
  //#region node_modules/shebang-regex/index.js
305
- var E = /* @__PURE__ */ d(((e, t) => {
305
+ var T = /* @__PURE__ */ u(((e, t) => {
306
306
  t.exports = /^#!(.*)/;
307
307
  }));
308
308
  //#endregion
309
309
  //#region node_modules/shebang-command/index.js
310
- var D = /* @__PURE__ */ d(((e, t) => {
311
- const n = E();
310
+ var E = /* @__PURE__ */ u(((e, t) => {
311
+ const n = T();
312
312
  t.exports = (e = "") => {
313
313
  const t = e.match(n);
314
314
  if (!t) return null;
@@ -320,9 +320,9 @@ var D = /* @__PURE__ */ d(((e, t) => {
320
320
  }));
321
321
  //#endregion
322
322
  //#region node_modules/cross-spawn/lib/util/readShebang.js
323
- var O = /* @__PURE__ */ d(((e, t) => {
324
- const n = f("fs");
325
- const r = D();
323
+ var D = /* @__PURE__ */ u(((e, t) => {
324
+ const n = d("fs");
325
+ const r = E();
326
326
  function i(e) {
327
327
  const t = 150;
328
328
  const i = Buffer.alloc(t);
@@ -338,11 +338,11 @@ var O = /* @__PURE__ */ d(((e, t) => {
338
338
  }));
339
339
  //#endregion
340
340
  //#region node_modules/cross-spawn/lib/parse.js
341
- var k = /* @__PURE__ */ d(((e, t) => {
342
- const n = f("path");
343
- const r = w();
344
- const i = T();
345
- const a = O();
341
+ var O = /* @__PURE__ */ u(((e, t) => {
342
+ const n = d("path");
343
+ const r = C();
344
+ const i = w();
345
+ const a = D();
346
346
  const o = process.platform === "win32";
347
347
  const s = /\.(?:com|exe)$/i;
348
348
  const c = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;
@@ -376,7 +376,7 @@ var k = /* @__PURE__ */ d(((e, t) => {
376
376
  }
377
377
  return e;
378
378
  }
379
- function d(e, t, n) {
379
+ function f(e, t, n) {
380
380
  if (t && !Array.isArray(t)) {
381
381
  n = t;
382
382
  t = null;
@@ -395,11 +395,11 @@ var k = /* @__PURE__ */ d(((e, t) => {
395
395
  };
396
396
  return n.shell ? r : u(r);
397
397
  }
398
- t.exports = d;
398
+ t.exports = f;
399
399
  }));
400
400
  //#endregion
401
401
  //#region node_modules/cross-spawn/lib/enoent.js
402
- var A = /* @__PURE__ */ d(((e, t) => {
402
+ var k = /* @__PURE__ */ u(((e, t) => {
403
403
  const n = process.platform === "win32";
404
404
  function r(e, t) {
405
405
  return Object.assign(/* @__PURE__ */ new Error(`${t} ${e.command} ENOENT`), {
@@ -438,10 +438,10 @@ var A = /* @__PURE__ */ d(((e, t) => {
438
438
  }));
439
439
  //#endregion
440
440
  //#region node_modules/cross-spawn/index.js
441
- var j = /* @__PURE__ */ d(((e, t) => {
442
- const n = f("child_process");
443
- const r = k();
444
- const i = A();
441
+ var A = /* @__PURE__ */ u(((e, t) => {
442
+ const n = d("child_process");
443
+ const r = O();
444
+ const i = k();
445
445
  function a(e, t, a) {
446
446
  const o = r(e, t, a);
447
447
  const s = n.spawn(o.command, o.args, o.options);
@@ -462,8 +462,8 @@ var j = /* @__PURE__ */ d(((e, t) => {
462
462
  }));
463
463
  //#endregion
464
464
  //#region src/non-zero-exit-error.ts
465
- var M = j();
466
- var N = class extends Error {
465
+ var j = A();
466
+ var M = class extends Error {
467
467
  get exitCode() {
468
468
  if (this.result.exitCode !== null) return this.result.exitCode;
469
469
  }
@@ -475,20 +475,14 @@ var N = class extends Error {
475
475
  };
476
476
  //#endregion
477
477
  //#region src/main.ts
478
- const P = /\r?\n/;
479
- const F = {
478
+ const N = /\r?\n/;
479
+ const P = {
480
480
  timeout: void 0,
481
481
  persist: false
482
482
  };
483
- const I = { timeout: void 0 };
484
- const L = { windowsHide: true };
485
- function R(e, t) {
486
- return {
487
- command: a(e),
488
- args: t ?? []
489
- };
490
- }
491
- function z(e) {
483
+ const F = { timeout: void 0 };
484
+ const I = { windowsHide: true };
485
+ function L(e) {
492
486
  const t = new AbortController();
493
487
  for (const n of e) {
494
488
  if (n.aborted) {
@@ -502,14 +496,14 @@ function z(e) {
502
496
  }
503
497
  return t.signal;
504
498
  }
505
- async function B(e) {
499
+ async function R(e) {
506
500
  let t = "";
507
501
  try {
508
502
  for await (const n of e) t += n.toString();
509
503
  } catch {}
510
504
  return t;
511
505
  }
512
- var V = class {
506
+ var z = class {
513
507
  _process;
514
508
  _aborted = false;
515
509
  _options;
@@ -529,7 +523,7 @@ var V = class {
529
523
  }
530
524
  constructor(e, t, n) {
531
525
  this._options = {
532
- ...F,
526
+ ...P,
533
527
  ...n
534
528
  };
535
529
  this._command = e;
@@ -548,7 +542,7 @@ var V = class {
548
542
  return this._process?.killed === true;
549
543
  }
550
544
  pipe(e, t, n) {
551
- return W(e, t, {
545
+ return H(e, t, {
552
546
  ...n,
553
547
  stdin: this
554
548
  });
@@ -559,18 +553,18 @@ var V = class {
559
553
  const t = [];
560
554
  if (this._streamErr) t.push(this._streamErr);
561
555
  if (this._streamOut) t.push(this._streamOut);
562
- const n = v(t);
563
- const r = u.createInterface({ input: n });
556
+ const n = _(t);
557
+ const r = l.createInterface({ input: n });
564
558
  for await (const e of r) yield e.toString();
565
559
  await this._processClosed;
566
560
  e.removeAllListeners();
567
561
  if (this._thrownError) throw this._thrownError;
568
- if (this._options?.throwOnError && this.exitCode !== 0 && this.exitCode !== void 0) throw new N(this);
562
+ if (this._options?.throwOnError && this.exitCode !== 0 && this.exitCode !== void 0) throw new M(this);
569
563
  }
570
564
  async _waitForOutput() {
571
565
  const e = this._process;
572
566
  if (!e) throw new Error("No process was started");
573
- const [t, n] = await Promise.all([this._streamOut ? B(this._streamOut) : "", this._streamErr ? B(this._streamErr) : ""]);
567
+ const [t, n] = await Promise.all([this._streamOut ? R(this._streamOut) : "", this._streamErr ? R(this._streamErr) : ""]);
574
568
  await this._processClosed;
575
569
  const { stdin: r } = this._options;
576
570
  if (r && typeof r !== "string") await r;
@@ -581,7 +575,7 @@ var V = class {
581
575
  stdout: t,
582
576
  exitCode: this.exitCode
583
577
  };
584
- if (this._options.throwOnError && this.exitCode !== 0 && this.exitCode !== void 0) throw new N(this, i);
578
+ if (this._options.throwOnError && this.exitCode !== 0 && this.exitCode !== void 0) throw new M(this, i);
585
579
  return i;
586
580
  }
587
581
  then(e, t) {
@@ -590,31 +584,30 @@ var V = class {
590
584
  _streamOut;
591
585
  _streamErr;
592
586
  spawn() {
593
- const e = s();
587
+ const e = r();
594
588
  const n = this._options;
595
- const r = {
596
- ...L,
589
+ const i = {
590
+ ...I,
597
591
  ...n.nodeOptions
598
592
  };
599
- const i = [];
593
+ const a = [];
600
594
  this._resetState();
601
- if (n.timeout !== void 0) i.push(AbortSignal.timeout(n.timeout));
602
- if (n.signal !== void 0) i.push(n.signal);
603
- if (n.persist === true) r.detached = true;
604
- if (i.length > 0) r.signal = z(i);
605
- r.env = _(e, r.env);
606
- const { command: a, args: o } = R(this._command, this._args);
607
- const c = (0, M._parse)(a, o, r);
608
- const l = t(c.command, c.args, c.options);
609
- if (l.stderr) this._streamErr = l.stderr;
610
- if (l.stdout) this._streamOut = l.stdout;
611
- this._process = l;
612
- l.once("error", this._onError);
613
- l.once("close", this._onClose);
614
- if (l.stdin) {
595
+ if (n.timeout !== void 0) a.push(AbortSignal.timeout(n.timeout));
596
+ if (n.signal !== void 0) a.push(n.signal);
597
+ if (n.persist === true) i.detached = true;
598
+ if (a.length > 0) i.signal = L(a);
599
+ i.env = g(e, i.env);
600
+ const o = (0, j._parse)(this._command, this._args, i);
601
+ const s = t(o.command, o.args, o.options);
602
+ if (s.stderr) this._streamErr = s.stderr;
603
+ if (s.stdout) this._streamOut = s.stdout;
604
+ this._process = s;
605
+ s.once("error", this._onError);
606
+ s.once("close", this._onClose);
607
+ if (s.stdin) {
615
608
  const { stdin: e } = n;
616
- if (typeof e === "string") l.stdin.end(e);
617
- else e?.process?.stdout?.pipe(l.stdin);
609
+ if (typeof e === "string") s.stdin.end(e);
610
+ else e?.process?.stdout?.pipe(s.stdin);
618
611
  }
619
612
  }
620
613
  _resetState() {
@@ -635,56 +628,55 @@ var V = class {
635
628
  if (this._resolveClose) this._resolveClose();
636
629
  };
637
630
  };
638
- function H(e, t, r) {
639
- const i = {
640
- ...I,
641
- ...r
631
+ function B(e, t, i) {
632
+ const a = {
633
+ ...F,
634
+ ...i
642
635
  };
643
- const a = s();
644
- const o = {
636
+ const o = r();
637
+ const s = {
645
638
  windowsHide: true,
646
- ...i.nodeOptions
639
+ ...a.nodeOptions
647
640
  };
648
- if (i.timeout !== void 0) o.timeout = i.timeout;
649
- o.env = _(a, o.env);
650
- const { command: c, args: l } = R(e, t);
651
- const u = (0, M._parse)(c, l, o);
652
- const d = n(u.command, u.args, u.options);
653
- if (d.error) throw d.error;
654
- const f = d.stdout?.toString() ?? "";
655
- const p = d.stderr?.toString() ?? "";
656
- const m = d.status ?? void 0;
657
- const h = d.signal != null;
658
- const g = {
659
- stdout: f,
660
- stderr: p,
641
+ if (a.timeout !== void 0) s.timeout = a.timeout;
642
+ s.env = g(o, s.env);
643
+ const c = (0, j._parse)(e, t ?? [], s);
644
+ const l = n(c.command, c.args, c.options);
645
+ if (l.error) throw l.error;
646
+ const u = l.stdout?.toString() ?? "";
647
+ const d = l.stderr?.toString() ?? "";
648
+ const f = l.status ?? void 0;
649
+ const p = l.signal != null;
650
+ const m = {
651
+ stdout: u,
652
+ stderr: d,
661
653
  get exitCode() {
662
- return m;
654
+ return f;
663
655
  },
664
656
  get pid() {
665
- return d.pid;
657
+ return l.pid;
666
658
  },
667
659
  get killed() {
668
- return h;
660
+ return p;
669
661
  },
670
662
  *[Symbol.iterator]() {
671
- for (const e of [f, p]) {
663
+ for (const e of [u, d]) {
672
664
  if (!e) continue;
673
- const t = e.split(P);
665
+ const t = e.split(N);
674
666
  if (t[t.length - 1] === "") t.pop();
675
667
  yield* t;
676
668
  }
677
669
  }
678
670
  };
679
- if (i.throwOnError && m !== 0 && m !== void 0) throw new N(g, g);
680
- return g;
671
+ if (a.throwOnError && f !== 0 && f !== void 0) throw new M(m, m);
672
+ return m;
681
673
  }
682
- const U = (e, t, n) => {
683
- const r = new V(e, t, n);
674
+ const V = (e, t, n) => {
675
+ const r = new z(e, t, n);
684
676
  r.spawn();
685
677
  return r;
686
678
  };
687
- const W = U;
688
- const G = H;
679
+ const H = V;
680
+ const U = B;
689
681
  //#endregion
690
- export { V as ExecProcess, N as NonZeroExitError, W as exec, G as execSync, U as x, H as xSync };
682
+ export { z as ExecProcess, M as NonZeroExitError, H as exec, U as execSync, V as x, B as xSync };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tinyexec",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "type": "module",
5
5
  "description": "A minimal library for executing processes in Node",
6
6
  "main": "./dist/main.mjs",
@@ -40,16 +40,16 @@
40
40
  "devDependencies": {
41
41
  "@eslint/js": "^10.0.1",
42
42
  "@types/cross-spawn": "^6.0.6",
43
- "@types/node": "^25.5.2",
44
- "@vitest/coverage-v8": "^4.1.2",
43
+ "@types/node": "^25.6.0",
44
+ "@vitest/coverage-v8": "^4.1.5",
45
45
  "cross-spawn": "^7.0.6",
46
- "eslint": "^10.2.0",
47
- "prettier": "^3.8.1",
46
+ "eslint": "^10.2.1",
47
+ "prettier": "^3.8.3",
48
48
  "publint": "^0.3.18",
49
- "rollup-plugin-license": "^3.7.0",
50
- "tsdown": "^0.21.7",
51
- "typescript": "^6.0.2",
52
- "typescript-eslint": "^8.58.0",
49
+ "rollup-plugin-license": "^3.7.1",
50
+ "tsdown": "^0.21.10",
51
+ "typescript": "^6.0.3",
52
+ "typescript-eslint": "^8.59.1",
53
53
  "vitest": "^4.0.7"
54
54
  },
55
55
  "exports": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maizzle/framework",
3
- "version": "6.0.0-rc.17",
3
+ "version": "6.0.0-rc.19",
4
4
  "description": "Maizzle is a framework that helps you quickly build HTML emails with Tailwind CSS.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "exports": {
11
11
  ".": {
12
- "import": "./dist/index.mjs",
12
+ "import": "./dist/index.js",
13
13
  "types": "./dist/index.d.ts"
14
14
  }
15
15
  },
@@ -38,7 +38,6 @@
38
38
  "@tailwindcss/vite": "^4.2.2",
39
39
  "@unhead/vue": "^3.0.4",
40
40
  "@vitejs/plugin-vue": "^6.0.4",
41
- "@vitest/coverage-v8": "^4.0.18",
42
41
  "@vueuse/core": "^14.2.1",
43
42
  "class-variance-authority": "^0.7.1",
44
43
  "clsx": "^2.1.1",
@@ -89,12 +88,13 @@
89
88
  "@types/node": "^25.2.3",
90
89
  "@types/nodemailer": "^8.0.0",
91
90
  "@types/postcss-safe-parser": "^5.0.4",
91
+ "@vitest/coverage-v8": "^4.0.18",
92
92
  "@vue/test-utils": "^2.4.6",
93
93
  "happy-dom": "^20.6.3",
94
94
  "oxlint": "^1.50.0",
95
95
  "shiki": "^4.0.2",
96
96
  "tailwind-merge": "^3.5.0",
97
- "tsdown": "^0.20.3",
97
+ "tsdown": "^0.22.0",
98
98
  "vitest": "^4.0.18",
99
99
  "vue": "^3.5.28"
100
100
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"build.mjs","names":[],"sources":["../src/build.ts"],"sourcesContent":["import { readFileSync, writeFileSync, mkdirSync, cpSync, existsSync, rmSync } from 'node:fs'\nimport { resolve, dirname, basename, relative, join } from 'node:path'\nimport { glob } from 'tinyglobby'\nimport ora from 'ora'\nimport { resolveConfig } from './config/index.ts'\nimport { EventManager } from './events/index.ts'\nimport { runTransformers } from './transformers/index.ts'\nimport { createRenderer } from './render/createRenderer.ts'\nimport { createPlaintext } from './plaintext.ts'\nimport type { MaizzleConfig } from './types/index.ts'\n\nexport interface BuildOptions {\n config?: Partial<MaizzleConfig> | string\n}\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 */\nexport async function build(options: BuildOptions = {}): Promise<BuildResult> {\n const start = Date.now()\n const spinner = ora({ text: 'Building templates...', spinner: 'circleHalves' }).start()\n\n const config = await resolveConfig(options.config)\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\n if (existsSync(outputPath)) {\n rmSync(outputPath, { recursive: true, force: true })\n }\n\n const renderer = await createRenderer({ markdown: config.markdown, root: config.root, componentDirs: [config.components?.source ?? []].flat(), vite: config.vite })\n const outputFiles: string[] = []\n\n try {\n for (const templatePath of templateFiles) {\n const absolutePath = resolve(templatePath)\n let template = readFileSync(absolutePath, 'utf-8')\n\n template = await events.fireBeforeRender({ config, template })\n\n const rendered = await renderer.render(absolutePath, config)\n\n let html = await events.fireAfterRender({ config, template, html: rendered.html })\n\n // Use the per-template merged config (from defineConfig() in the SFC) so that\n // template-level overrides like css.safe: false are respected by transformers.\n const templateConfig = rendered.templateConfig\n\n const doctype = rendered.doctype ?? templateConfig.doctype ?? '<!DOCTYPE html>'\n\n if (templateConfig.useTransformers !== false) {\n html = await runTransformers(html, templateConfig, absolutePath, doctype, rendered.tailwindBlocks)\n }\n\n html = await events.fireAfterTransform({ config, template, html })\n html = `${doctype}\\n${html}`\n\n const outputFilePath = resolveOutputPath(templatePath, outputPath, outputExtension, contentBase)\n mkdirSync(dirname(outputFilePath), { recursive: true })\n writeFileSync(outputFilePath, html)\n outputFiles.push(outputFilePath)\n\n // Generate plaintext version if configured\n const globalPlaintext = templateConfig.plaintext\n const sfcPlaintext = rendered.plaintext\n\n if (globalPlaintext || sfcPlaintext) {\n const stripOptions = typeof globalPlaintext === 'object' ? globalPlaintext : {}\n const plaintext = createPlaintext(html, stripOptions)\n const ptExtension = sfcPlaintext?.extension ?? 'txt'\n\n let ptOutputPath: string\n\n if (sfcPlaintext?.destination) {\n const name = basename(templatePath).replace(/\\.(vue|md)$/, '')\n ptOutputPath = join(resolve(sfcPlaintext.destination), `${name}.${ptExtension}`)\n } else if (typeof globalPlaintext === 'string') {\n ptOutputPath = resolveOutputPath(templatePath, resolve(globalPlaintext), ptExtension, contentBase)\n } else {\n ptOutputPath = resolveOutputPath(templatePath, outputPath, ptExtension, contentBase)\n }\n\n mkdirSync(dirname(ptOutputPath), { recursive: true })\n writeFileSync(ptOutputPath, plaintext)\n }\n\n // Register SFC event handlers that were collected during render\n for (const { name, handler } of rendered.sfcEventHandlers) {\n events.on(name, handler)\n }\n\n events.clearSfcHandlers()\n }\n\n await copyStatic(config, outputPath)\n await events.fireAfterBuild({ files: outputFiles, config })\n } finally {\n await renderer.close()\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}\n\n/**\n * Extract the static (non-glob) prefix from content patterns.\n *\n * For example, `['/abs/path/emails/**\\/*.vue']` → `'/abs/path/emails'`\n *\n * This is used to strip the content base from template paths\n * so the output preserves only the subdirectory structure.\n */\nfunction computeContentBase(patterns: string[]): string {\n // Use the first non-negated pattern\n const pattern = patterns.find(p => !p.startsWith('!')) ?? patterns[0]\n\n // Split on first glob character (* { ? [) and take the directory part\n const staticPart = pattern.split(/[*{?[]/)[0]\n\n // Ensure we have a clean directory path (not a partial segment)\n return resolve(staticPart.endsWith('/') ? staticPart : dirname(staticPart))\n}\n\nfunction resolveOutputPath(templatePath: string, outputDir: string, extension: string, contentBase: string): string {\n const name = basename(templatePath).replace(/\\.(vue|md)$/, '')\n const absTemplate = resolve(templatePath)\n const rel = relative(contentBase, dirname(absTemplate))\n\n return join(outputDir, rel, `${name}.${extension}`)\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 const files = await glob(sources)\n\n for (const file of files) {\n const destPath = join(outputPath, destination, relative(dirname(sources[0]).replace(/\\*.*$/, ''), file))\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":"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"}