@maizzle/framework 6.0.0-rc.8 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/README.md +3 -3
  2. package/bin/maizzle.mjs +1 -1
  3. package/dist/build.d.ts +38 -0
  4. package/dist/build.d.ts.map +1 -0
  5. package/dist/build.js +234 -0
  6. package/dist/build.js.map +1 -0
  7. package/dist/components/Body.vue +32 -3
  8. package/dist/components/Button.vue +91 -62
  9. package/dist/components/CodeBlock.vue +6 -4
  10. package/dist/components/CodeInline.vue +77 -6
  11. package/dist/components/Column.vue +67 -31
  12. package/dist/components/Container.vue +73 -12
  13. package/dist/components/Font.vue +96 -0
  14. package/dist/components/Head.vue +1 -1
  15. package/dist/components/Heading.vue +1 -1
  16. package/dist/components/Hr.vue +33 -0
  17. package/dist/components/Html.vue +36 -3
  18. package/dist/components/Img.vue +332 -0
  19. package/dist/components/Layout.vue +71 -21
  20. package/dist/components/Link.vue +1 -1
  21. package/dist/components/Markdown.vue +56 -23
  22. package/dist/components/MarkdownLayout.vue +39 -0
  23. package/dist/components/NotPlaintext.vue +14 -0
  24. package/dist/components/Outlook.vue +38 -11
  25. package/dist/components/OutlookBg.vue +241 -0
  26. package/dist/components/Plaintext.vue +14 -0
  27. package/dist/components/Preheader.vue +35 -10
  28. package/dist/components/QrCode.vue +157 -0
  29. package/dist/components/Raw.vue +28 -0
  30. package/dist/components/Row.vue +115 -22
  31. package/dist/components/Section.vue +65 -26
  32. package/dist/components/Spacer.vue +35 -29
  33. package/dist/components/Tailwind.vue +45 -0
  34. package/dist/components/Text.vue +3 -3
  35. package/dist/components/Vml.vue +207 -94
  36. package/dist/components/utils.d.ts +53 -0
  37. package/dist/components/utils.d.ts.map +1 -0
  38. package/dist/components/utils.js +80 -0
  39. package/dist/components/utils.js.map +1 -0
  40. package/dist/components/utils.ts +102 -0
  41. package/dist/composables/defineConfig.d.ts +13 -0
  42. package/dist/composables/defineConfig.d.ts.map +1 -0
  43. package/dist/composables/{defineConfig.mjs → defineConfig.js} +7 -9
  44. package/dist/composables/defineConfig.js.map +1 -0
  45. package/dist/composables/renderContext.d.ts +37 -0
  46. package/dist/composables/renderContext.d.ts.map +1 -0
  47. package/dist/composables/renderContext.js +6 -0
  48. package/dist/composables/renderContext.js.map +1 -0
  49. package/dist/composables/useBaseUrl.d.ts +19 -0
  50. package/dist/composables/useBaseUrl.d.ts.map +1 -0
  51. package/dist/composables/useBaseUrl.js +26 -0
  52. package/dist/composables/useBaseUrl.js.map +1 -0
  53. package/dist/composables/useConfig.d.ts +16 -0
  54. package/dist/composables/useConfig.d.ts.map +1 -0
  55. package/dist/composables/useConfig.js +19 -0
  56. package/dist/composables/useConfig.js.map +1 -0
  57. package/dist/composables/useCurrentTemplate.d.ts +31 -0
  58. package/dist/composables/useCurrentTemplate.d.ts.map +1 -0
  59. package/dist/composables/useCurrentTemplate.js +42 -0
  60. package/dist/composables/useCurrentTemplate.js.map +1 -0
  61. package/dist/composables/{useDoctype.d.mts → useDoctype.d.ts} +1 -1
  62. package/dist/composables/useDoctype.d.ts.map +1 -0
  63. package/dist/composables/{useDoctype.mjs → useDoctype.js} +3 -4
  64. package/dist/composables/useDoctype.js.map +1 -0
  65. package/dist/composables/{useEvent.d.mts → useEvent.d.ts} +3 -3
  66. package/dist/composables/useEvent.d.ts.map +1 -0
  67. package/dist/composables/{useEvent.mjs → useEvent.js} +4 -5
  68. package/dist/composables/useEvent.js.map +1 -0
  69. package/dist/composables/useFont.d.ts +50 -0
  70. package/dist/composables/useFont.d.ts.map +1 -0
  71. package/dist/composables/useFont.js +92 -0
  72. package/dist/composables/useFont.js.map +1 -0
  73. package/dist/composables/useOutlookFallback.d.ts +21 -0
  74. package/dist/composables/useOutlookFallback.d.ts.map +1 -0
  75. package/dist/composables/useOutlookFallback.js +29 -0
  76. package/dist/composables/useOutlookFallback.js.map +1 -0
  77. package/dist/composables/useOutputPath.d.ts +17 -0
  78. package/dist/composables/useOutputPath.d.ts.map +1 -0
  79. package/dist/composables/useOutputPath.js +23 -0
  80. package/dist/composables/useOutputPath.js.map +1 -0
  81. package/dist/composables/{usePlaintext.d.mts → usePlaintext.d.ts} +3 -1
  82. package/dist/composables/usePlaintext.d.ts.map +1 -0
  83. package/dist/composables/{usePlaintext.mjs → usePlaintext.js} +4 -4
  84. package/dist/composables/usePlaintext.js.map +1 -0
  85. package/dist/composables/usePreheader.d.ts +25 -0
  86. package/dist/composables/usePreheader.d.ts.map +1 -0
  87. package/dist/composables/usePreheader.js +28 -0
  88. package/dist/composables/usePreheader.js.map +1 -0
  89. package/dist/composables/useTransformers.d.ts +34 -0
  90. package/dist/composables/useTransformers.d.ts.map +1 -0
  91. package/dist/composables/useTransformers.js +48 -0
  92. package/dist/composables/useTransformers.js.map +1 -0
  93. package/dist/composables/useUrlQuery.d.ts +19 -0
  94. package/dist/composables/useUrlQuery.d.ts.map +1 -0
  95. package/dist/composables/useUrlQuery.js +26 -0
  96. package/dist/composables/useUrlQuery.js.map +1 -0
  97. package/dist/config/{defaults.d.mts → defaults.d.ts} +2 -2
  98. package/dist/config/defaults.d.ts.map +1 -0
  99. package/dist/config/{defaults.mjs → defaults.js} +10 -6
  100. package/dist/config/defaults.js.map +1 -0
  101. package/dist/config/index.d.ts +24 -0
  102. package/dist/config/index.d.ts.map +1 -0
  103. package/dist/config/{index.mjs → index.js} +45 -14
  104. package/dist/config/index.js.map +1 -0
  105. package/dist/events/{index.d.mts → index.d.ts} +35 -12
  106. package/dist/events/index.d.ts.map +1 -0
  107. package/dist/events/{index.mjs → index.js} +31 -13
  108. package/dist/events/index.js.map +1 -0
  109. package/dist/index.d.ts +41 -0
  110. package/dist/index.js +40 -0
  111. package/dist/{plaintext.d.mts → plaintext.d.ts} +1 -1
  112. package/dist/plaintext.d.ts.map +1 -0
  113. package/dist/{plaintext.mjs → plaintext.js} +4 -5
  114. package/dist/plaintext.js.map +1 -0
  115. package/dist/{plugin.d.mts → plugin.d.ts} +2 -2
  116. package/dist/plugin.d.ts.map +1 -0
  117. package/dist/{plugin.mjs → plugin.js} +16 -13
  118. package/dist/plugin.js.map +1 -0
  119. package/dist/plugins/postcss/{mergeMediaQueries.d.mts → mergeMediaQueries.d.ts} +2 -2
  120. package/dist/plugins/postcss/mergeMediaQueries.d.ts.map +1 -0
  121. package/dist/plugins/postcss/{mergeMediaQueries.mjs → mergeMediaQueries.js} +2 -3
  122. package/dist/plugins/postcss/mergeMediaQueries.js.map +1 -0
  123. package/dist/plugins/postcss/{pruneVars.d.mts → pruneVars.d.ts} +1 -1
  124. package/dist/plugins/postcss/pruneVars.d.ts.map +1 -0
  125. package/dist/plugins/postcss/{pruneVars.mjs → pruneVars.js} +2 -2
  126. package/dist/plugins/postcss/pruneVars.js.map +1 -0
  127. package/dist/plugins/postcss/quoteFontFamilies.d.ts +13 -0
  128. package/dist/plugins/postcss/quoteFontFamilies.d.ts.map +1 -0
  129. package/dist/plugins/postcss/quoteFontFamilies.js +84 -0
  130. package/dist/plugins/postcss/quoteFontFamilies.js.map +1 -0
  131. package/dist/plugins/postcss/{removeDeclarations.d.mts → removeDeclarations.d.ts} +1 -1
  132. package/dist/plugins/postcss/removeDeclarations.d.ts.map +1 -0
  133. package/dist/plugins/postcss/{removeDeclarations.mjs → removeDeclarations.js} +2 -2
  134. package/dist/plugins/postcss/removeDeclarations.js.map +1 -0
  135. package/dist/plugins/postcss/resolveMaizzleImports.d.ts +16 -0
  136. package/dist/plugins/postcss/resolveMaizzleImports.d.ts.map +1 -0
  137. package/dist/plugins/postcss/resolveMaizzleImports.js +39 -0
  138. package/dist/plugins/postcss/resolveMaizzleImports.js.map +1 -0
  139. package/dist/plugins/postcss/resolveProps.d.ts +8 -0
  140. package/dist/plugins/postcss/resolveProps.d.ts.map +1 -0
  141. package/dist/plugins/postcss/resolveProps.js +155 -0
  142. package/dist/plugins/postcss/resolveProps.js.map +1 -0
  143. package/dist/plugins/postcss/{tailwindCleanup.d.mts → tailwindCleanup.d.ts} +2 -2
  144. package/dist/plugins/postcss/tailwindCleanup.d.ts.map +1 -0
  145. package/dist/plugins/postcss/{tailwindCleanup.mjs → tailwindCleanup.js} +29 -5
  146. package/dist/plugins/postcss/tailwindCleanup.js.map +1 -0
  147. package/dist/prepare.d.ts +17 -0
  148. package/dist/prepare.d.ts.map +1 -0
  149. package/dist/prepare.js +44 -0
  150. package/dist/prepare.js.map +1 -0
  151. package/dist/render/active.d.ts +8 -0
  152. package/dist/render/active.d.ts.map +1 -0
  153. package/dist/render/active.js +12 -0
  154. package/dist/render/active.js.map +1 -0
  155. package/dist/render/buildTemplate.d.ts +49 -0
  156. package/dist/render/buildTemplate.d.ts.map +1 -0
  157. package/dist/render/buildTemplate.js +141 -0
  158. package/dist/render/buildTemplate.js.map +1 -0
  159. package/dist/render/{createRenderer.d.mts → createRenderer.d.ts} +17 -6
  160. package/dist/render/createRenderer.d.ts.map +1 -0
  161. package/dist/render/createRenderer.js +468 -0
  162. package/dist/render/createRenderer.js.map +1 -0
  163. package/dist/render/index.d.ts +18 -0
  164. package/dist/render/index.d.ts.map +1 -0
  165. package/dist/render/index.js +59 -0
  166. package/dist/render/index.js.map +1 -0
  167. package/dist/render/injectFonts.d.ts +15 -0
  168. package/dist/render/injectFonts.d.ts.map +1 -0
  169. package/dist/render/injectFonts.js +45 -0
  170. package/dist/render/injectFonts.js.map +1 -0
  171. package/dist/render/parallel/buildWorker.d.ts +31 -0
  172. package/dist/render/parallel/buildWorker.d.ts.map +1 -0
  173. package/dist/render/parallel/buildWorker.js +66 -0
  174. package/dist/render/parallel/buildWorker.js.map +1 -0
  175. package/dist/render/parallel/worker.mjs +28 -0
  176. package/dist/render/plugins/codeBlockExtract.d.ts +14 -0
  177. package/dist/render/plugins/codeBlockExtract.d.ts.map +1 -0
  178. package/dist/render/plugins/codeBlockExtract.js +38 -0
  179. package/dist/render/plugins/codeBlockExtract.js.map +1 -0
  180. package/dist/render/plugins/markdownExtract.d.ts +12 -0
  181. package/dist/render/plugins/markdownExtract.d.ts.map +1 -0
  182. package/dist/render/plugins/markdownExtract.js +49 -0
  183. package/dist/render/plugins/markdownExtract.js.map +1 -0
  184. package/dist/render/plugins/rawExtract.d.ts +14 -0
  185. package/dist/render/plugins/rawExtract.d.ts.map +1 -0
  186. package/dist/render/plugins/rawExtract.js +34 -0
  187. package/dist/render/plugins/rawExtract.js.map +1 -0
  188. package/dist/render/plugins/rowSourceLocation.d.ts +18 -0
  189. package/dist/render/plugins/rowSourceLocation.d.ts.map +1 -0
  190. package/dist/render/plugins/rowSourceLocation.js +45 -0
  191. package/dist/render/plugins/rowSourceLocation.js.map +1 -0
  192. package/dist/{serve.d.mts → serve.d.ts} +5 -3
  193. package/dist/serve.d.ts.map +1 -0
  194. package/dist/{serve.mjs → serve.js} +207 -106
  195. package/dist/serve.js.map +1 -0
  196. package/dist/server/compatibility.d.ts +59 -0
  197. package/dist/server/compatibility.d.ts.map +1 -0
  198. package/dist/server/compatibility.js +959 -0
  199. package/dist/server/compatibility.js.map +1 -0
  200. package/dist/server/{email.d.mts → email.d.ts} +2 -2
  201. package/dist/server/email.d.ts.map +1 -0
  202. package/dist/server/{email.mjs → email.js} +2 -3
  203. package/dist/server/email.js.map +1 -0
  204. package/dist/server/linter.d.ts +20 -0
  205. package/dist/server/linter.d.ts.map +1 -0
  206. package/dist/server/linter.js +345 -0
  207. package/dist/server/linter.js.map +1 -0
  208. package/dist/server/sfc-utils.d.ts +21 -0
  209. package/dist/server/sfc-utils.d.ts.map +1 -0
  210. package/dist/server/sfc-utils.js +198 -0
  211. package/dist/server/sfc-utils.js.map +1 -0
  212. package/dist/server/ui/.vite/deps/@lucide_vue.js +44967 -0
  213. package/dist/server/ui/.vite/deps/@lucide_vue.js.map +1 -0
  214. package/dist/server/ui/.vite/deps/@vueuse_core.js +8155 -0
  215. package/dist/server/ui/.vite/deps/@vueuse_core.js.map +1 -0
  216. package/dist/server/ui/.vite/deps/@vueuse_shared.js +1859 -0
  217. package/dist/server/ui/.vite/deps/@vueuse_shared.js.map +1 -0
  218. package/dist/server/ui/.vite/deps/_metadata.json +78 -0
  219. package/dist/server/ui/.vite/deps/chunk-EAsCxrDo.js +14 -0
  220. package/dist/server/ui/.vite/deps/class-variance-authority.js +57 -0
  221. package/dist/server/ui/.vite/deps/class-variance-authority.js.map +1 -0
  222. package/dist/server/ui/.vite/deps/clsx.js +18 -0
  223. package/dist/server/ui/.vite/deps/clsx.js.map +1 -0
  224. package/dist/server/ui/.vite/deps/culori.js +4312 -0
  225. package/dist/server/ui/.vite/deps/culori.js.map +1 -0
  226. package/dist/server/ui/.vite/deps/package.json +3 -0
  227. package/dist/server/ui/.vite/deps/reka-ui.js +44464 -0
  228. package/dist/server/ui/.vite/deps/reka-ui.js.map +1 -0
  229. package/dist/server/ui/.vite/deps/tailwind-merge.js +3458 -0
  230. package/dist/server/ui/.vite/deps/tailwind-merge.js.map +1 -0
  231. package/dist/server/ui/.vite/deps/vue-router.js +6383 -0
  232. package/dist/server/ui/.vite/deps/vue-router.js.map +1 -0
  233. package/dist/server/ui/.vite/deps/vue.js +2 -0
  234. package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-DaqjATE_.js +8785 -0
  235. package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-DaqjATE_.js.map +1 -0
  236. package/dist/server/ui/App.vue +106 -66
  237. package/dist/server/ui/components/SidebarClose.vue +12 -0
  238. package/dist/server/ui/components/ui/checkbox/Checkbox.vue +1 -1
  239. package/dist/server/ui/components/ui/command/Command.vue +5 -1
  240. package/dist/server/ui/components/ui/command/CommandInput.vue +2 -2
  241. package/dist/server/ui/components/ui/dialog/DialogContent.vue +1 -1
  242. package/dist/server/ui/components/ui/dialog/DialogScrollContent.vue +1 -1
  243. package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +1 -1
  244. package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +1 -1
  245. package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +1 -1
  246. package/dist/server/ui/components/ui/input/Input.vue +1 -1
  247. package/dist/server/ui/components/ui/sheet/SheetContent.vue +1 -1
  248. package/dist/server/ui/components/ui/sidebar/SidebarTrigger.vue +2 -2
  249. package/dist/server/ui/components/ui/tags-input/TagsInputInput.vue +1 -1
  250. package/dist/server/ui/components/ui/tags-input/TagsInputItemDelete.vue +1 -1
  251. package/dist/server/ui/lib/emulated-dark-mode.ts +146 -0
  252. package/dist/server/ui/main.css +25 -0
  253. package/dist/server/ui/pages/Home.vue +1 -1
  254. package/dist/server/ui/pages/Preview.vue +377 -186
  255. package/dist/server/ui/vite-env.d.ts +1 -0
  256. package/dist/tests/render/_helpers.d.ts +6 -0
  257. package/dist/tests/render/_helpers.d.ts.map +1 -0
  258. package/dist/tests/render/_helpers.js +16 -0
  259. package/dist/tests/render/_helpers.js.map +1 -0
  260. package/dist/transformers/addAttributes.d.ts +42 -0
  261. package/dist/transformers/addAttributes.d.ts.map +1 -0
  262. package/dist/transformers/{addAttributes.mjs → addAttributes.js} +40 -24
  263. package/dist/transformers/addAttributes.js.map +1 -0
  264. package/dist/transformers/attributeToStyle.d.ts +38 -0
  265. package/dist/transformers/attributeToStyle.d.ts.map +1 -0
  266. package/dist/transformers/attributeToStyle.js +94 -0
  267. package/dist/transformers/attributeToStyle.js.map +1 -0
  268. package/dist/transformers/base.d.ts +71 -0
  269. package/dist/transformers/base.d.ts.map +1 -0
  270. package/dist/transformers/{base.mjs → base.js} +65 -40
  271. package/dist/transformers/base.js.map +1 -0
  272. package/dist/transformers/columnWidth.d.ts +31 -0
  273. package/dist/transformers/columnWidth.d.ts.map +1 -0
  274. package/dist/transformers/columnWidth.js +527 -0
  275. package/dist/transformers/columnWidth.js.map +1 -0
  276. package/dist/transformers/entities.d.ts +37 -0
  277. package/dist/transformers/entities.d.ts.map +1 -0
  278. package/dist/transformers/entities.js +74 -0
  279. package/dist/transformers/entities.js.map +1 -0
  280. package/dist/transformers/filters/{defaults.d.mts → defaults.d.ts} +1 -1
  281. package/dist/transformers/filters/defaults.d.ts.map +1 -0
  282. package/dist/transformers/filters/{defaults.mjs → defaults.js} +2 -2
  283. package/dist/transformers/filters/defaults.js.map +1 -0
  284. package/dist/transformers/filters/index.d.ts +43 -0
  285. package/dist/transformers/filters/index.d.ts.map +1 -0
  286. package/dist/transformers/filters/index.js +89 -0
  287. package/dist/transformers/filters/index.js.map +1 -0
  288. package/dist/transformers/format.d.ts +22 -0
  289. package/dist/transformers/format.d.ts.map +1 -0
  290. package/dist/transformers/format.js +30 -0
  291. package/dist/transformers/format.js.map +1 -0
  292. package/dist/transformers/imgWidth.d.ts +20 -0
  293. package/dist/transformers/imgWidth.d.ts.map +1 -0
  294. package/dist/transformers/imgWidth.js +76 -0
  295. package/dist/transformers/imgWidth.js.map +1 -0
  296. package/dist/transformers/{index.d.mts → index.d.ts} +14 -12
  297. package/dist/transformers/index.d.ts.map +1 -0
  298. package/dist/transformers/index.js +163 -0
  299. package/dist/transformers/index.js.map +1 -0
  300. package/dist/transformers/inlineCss.d.ts +85 -0
  301. package/dist/transformers/inlineCss.d.ts.map +1 -0
  302. package/dist/transformers/inlineCss.js +112 -0
  303. package/dist/transformers/inlineCss.js.map +1 -0
  304. package/dist/transformers/inlineLink.d.ts +35 -0
  305. package/dist/transformers/inlineLink.d.ts.map +1 -0
  306. package/dist/transformers/{inlineLink.mjs → inlineLink.js} +35 -11
  307. package/dist/transformers/inlineLink.js.map +1 -0
  308. package/dist/transformers/minify.d.ts +21 -0
  309. package/dist/transformers/minify.d.ts.map +1 -0
  310. package/dist/transformers/minify.js +25 -0
  311. package/dist/transformers/minify.js.map +1 -0
  312. package/dist/transformers/minifyCodeInline.d.ts +29 -0
  313. package/dist/transformers/minifyCodeInline.d.ts.map +1 -0
  314. package/dist/transformers/minifyCodeInline.js +36 -0
  315. package/dist/transformers/minifyCodeInline.js.map +1 -0
  316. package/dist/transformers/msoPlaceholders.d.ts +33 -0
  317. package/dist/transformers/msoPlaceholders.d.ts.map +1 -0
  318. package/dist/transformers/msoPlaceholders.js +114 -0
  319. package/dist/transformers/msoPlaceholders.js.map +1 -0
  320. package/dist/transformers/purgeCss.d.ts +43 -0
  321. package/dist/transformers/purgeCss.d.ts.map +1 -0
  322. package/dist/transformers/purgeCss.js +207 -0
  323. package/dist/transformers/purgeCss.js.map +1 -0
  324. package/dist/transformers/removeAttributes.d.ts +54 -0
  325. package/dist/transformers/removeAttributes.d.ts.map +1 -0
  326. package/dist/transformers/removeAttributes.js +72 -0
  327. package/dist/transformers/removeAttributes.js.map +1 -0
  328. package/dist/transformers/{replaceStrings.d.mts → replaceStrings.d.ts} +2 -2
  329. package/dist/transformers/replaceStrings.d.ts.map +1 -0
  330. package/dist/transformers/{replaceStrings.mjs → replaceStrings.js} +2 -2
  331. package/dist/transformers/replaceStrings.js.map +1 -0
  332. package/dist/transformers/safeSelectors.d.ts +37 -0
  333. package/dist/transformers/safeSelectors.d.ts.map +1 -0
  334. package/dist/transformers/{safeClassNames.mjs → safeSelectors.js} +40 -10
  335. package/dist/transformers/safeSelectors.js.map +1 -0
  336. package/dist/transformers/shorthandCss.d.ts +47 -0
  337. package/dist/transformers/shorthandCss.d.ts.map +1 -0
  338. package/dist/transformers/shorthandCss.js +92 -0
  339. package/dist/transformers/shorthandCss.js.map +1 -0
  340. package/dist/transformers/sixHex.d.ts +25 -0
  341. package/dist/transformers/sixHex.d.ts.map +1 -0
  342. package/dist/transformers/sixHex.js +42 -0
  343. package/dist/transformers/sixHex.js.map +1 -0
  344. package/dist/transformers/tailwindComponent.d.ts +16 -0
  345. package/dist/transformers/tailwindComponent.d.ts.map +1 -0
  346. package/dist/transformers/tailwindComponent.js +101 -0
  347. package/dist/transformers/tailwindComponent.js.map +1 -0
  348. package/dist/transformers/{tailwindcss.d.mts → tailwindcss.d.ts} +2 -2
  349. package/dist/transformers/tailwindcss.d.ts.map +1 -0
  350. package/dist/transformers/{tailwindcss.mjs → tailwindcss.js} +33 -74
  351. package/dist/transformers/tailwindcss.js.map +1 -0
  352. package/dist/transformers/urlQuery.d.ts +36 -0
  353. package/dist/transformers/urlQuery.d.ts.map +1 -0
  354. package/dist/transformers/urlQuery.js +77 -0
  355. package/dist/transformers/urlQuery.js.map +1 -0
  356. package/dist/types/{config.d.mts → config.d.ts} +270 -40
  357. package/dist/types/config.d.ts.map +1 -0
  358. package/dist/types/config.js +1 -0
  359. package/dist/types/index.d.ts +2 -0
  360. package/dist/types/index.js +1 -0
  361. package/dist/utils/ast/index.d.ts +4 -0
  362. package/dist/utils/ast/index.js +4 -0
  363. package/dist/utils/ast/{parser.d.mts → parser.d.ts} +1 -1
  364. package/dist/utils/ast/parser.d.ts.map +1 -0
  365. package/dist/utils/ast/{parser.mjs → parser.js} +2 -3
  366. package/dist/utils/ast/parser.js.map +1 -0
  367. package/dist/utils/ast/{serializer.d.mts → serializer.d.ts} +1 -1
  368. package/dist/utils/ast/serializer.d.ts.map +1 -0
  369. package/dist/utils/ast/serializer.js +46 -0
  370. package/dist/utils/ast/serializer.js.map +1 -0
  371. package/dist/utils/ast/{walker.d.mts → walker.d.ts} +1 -1
  372. package/dist/utils/ast/walker.d.ts.map +1 -0
  373. package/dist/utils/ast/{walker.mjs → walker.js} +2 -2
  374. package/dist/utils/ast/walker.js.map +1 -0
  375. package/dist/utils/cloneConfig.d.ts +13 -0
  376. package/dist/utils/cloneConfig.d.ts.map +1 -0
  377. package/dist/utils/cloneConfig.js +21 -0
  378. package/dist/utils/cloneConfig.js.map +1 -0
  379. package/dist/utils/compileTailwindCss.d.ts +16 -0
  380. package/dist/utils/compileTailwindCss.d.ts.map +1 -0
  381. package/dist/utils/compileTailwindCss.js +55 -0
  382. package/dist/utils/compileTailwindCss.js.map +1 -0
  383. package/dist/utils/componentSources.d.ts +50 -0
  384. package/dist/utils/componentSources.d.ts.map +1 -0
  385. package/dist/utils/componentSources.js +50 -0
  386. package/dist/utils/componentSources.js.map +1 -0
  387. package/dist/utils/cssBox.d.ts +42 -0
  388. package/dist/utils/cssBox.d.ts.map +1 -0
  389. package/dist/utils/cssBox.js +151 -0
  390. package/dist/utils/cssBox.js.map +1 -0
  391. package/dist/utils/decodeStyleEntities.d.ts +15 -0
  392. package/dist/utils/decodeStyleEntities.d.ts.map +1 -0
  393. package/dist/utils/decodeStyleEntities.js +18 -0
  394. package/dist/utils/decodeStyleEntities.js.map +1 -0
  395. package/dist/utils/{detect.d.mts → detect.d.ts} +1 -1
  396. package/dist/utils/detect.d.ts.map +1 -0
  397. package/dist/utils/{detect.mjs → detect.js} +2 -3
  398. package/dist/utils/detect.js.map +1 -0
  399. package/dist/utils/output-markers.d.ts +29 -0
  400. package/dist/utils/output-markers.d.ts.map +1 -0
  401. package/dist/utils/output-markers.js +68 -0
  402. package/dist/utils/output-markers.js.map +1 -0
  403. package/dist/utils/{url.d.mts → url.d.ts} +1 -1
  404. package/dist/utils/url.d.ts.map +1 -0
  405. package/dist/utils/{url.mjs → url.js} +2 -3
  406. package/dist/utils/url.js.map +1 -0
  407. package/dist/utils/watchPaths.d.ts +11 -0
  408. package/dist/utils/watchPaths.d.ts.map +1 -0
  409. package/dist/utils/watchPaths.js +19 -0
  410. package/dist/utils/watchPaths.js.map +1 -0
  411. package/node_modules/@clack/core/CHANGELOG.md +44 -0
  412. package/node_modules/@clack/core/dist/index.d.mts +125 -5
  413. package/node_modules/@clack/core/dist/index.mjs +972 -11
  414. package/node_modules/@clack/core/package.json +6 -2
  415. package/node_modules/@clack/prompts/CHANGELOG.md +70 -0
  416. package/node_modules/@clack/prompts/README.md +129 -3
  417. package/node_modules/@clack/prompts/dist/index.d.mts +567 -33
  418. package/node_modules/@clack/prompts/dist/index.mjs +1378 -133
  419. package/node_modules/@clack/prompts/package.json +7 -4
  420. package/node_modules/fast-string-truncated-width/dist/index.js +36 -96
  421. package/node_modules/fast-string-truncated-width/dist/types.d.ts +0 -3
  422. package/node_modules/fast-string-truncated-width/dist/utils.d.ts +3 -3
  423. package/node_modules/fast-string-truncated-width/dist/utils.js +14 -9
  424. package/node_modules/fast-string-truncated-width/package.json +1 -1
  425. package/node_modules/fast-string-truncated-width/readme.md +2 -3
  426. package/node_modules/fast-string-width/package.json +2 -2
  427. package/node_modules/fast-string-width/readme.md +0 -3
  428. package/node_modules/fast-wrap-ansi/lib/main.js +4 -2
  429. package/node_modules/fast-wrap-ansi/package.json +11 -11
  430. package/node_modules/maizzle/README.md +24 -0
  431. package/node_modules/maizzle/dist/commands/make/component.mjs +1 -1
  432. package/node_modules/maizzle/dist/commands/make/config.mjs +8 -7
  433. package/node_modules/maizzle/dist/commands/make/layout.mjs +3 -3
  434. package/node_modules/maizzle/dist/commands/make/scaffold.mjs +1 -1
  435. package/node_modules/maizzle/dist/commands/make/stubs/Layout.vue +146 -0
  436. package/node_modules/maizzle/dist/commands/make/stubs/component.vue +2 -4
  437. package/node_modules/maizzle/dist/commands/make/stubs/config.ts +1 -5
  438. package/node_modules/maizzle/dist/commands/make/template.mjs +1 -1
  439. package/node_modules/maizzle/dist/commands/new.mjs +46 -135
  440. package/node_modules/maizzle/dist/index.d.mts +1 -0
  441. package/node_modules/maizzle/dist/index.mjs +30 -7
  442. package/node_modules/maizzle/package.json +5 -4
  443. package/node_modules/nypm/dist/cli.mjs +28 -5
  444. package/node_modules/nypm/dist/index.d.mts +0 -8
  445. package/node_modules/nypm/dist/index.mjs +27 -4
  446. package/node_modules/nypm/package.json +12 -12
  447. package/node_modules/tinyexec/README.md +9 -1
  448. package/node_modules/tinyexec/dist/main.d.mts +22 -7
  449. package/node_modules/tinyexec/dist/main.mjs +189 -491
  450. package/node_modules/tinyexec/package.json +14 -16
  451. package/package.json +38 -30
  452. package/dist/build.d.mts +0 -19
  453. package/dist/build.d.mts.map +0 -1
  454. package/dist/build.mjs +0 -140
  455. package/dist/build.mjs.map +0 -1
  456. package/dist/components/Divider.vue +0 -133
  457. package/dist/components/Image.vue +0 -70
  458. package/dist/components/Overlap.vue +0 -80
  459. package/dist/components/utils.d.mts +0 -5
  460. package/dist/components/utils.d.mts.map +0 -1
  461. package/dist/components/utils.mjs +0 -9
  462. package/dist/components/utils.mjs.map +0 -1
  463. package/dist/composables/defineConfig.d.mts +0 -14
  464. package/dist/composables/defineConfig.d.mts.map +0 -1
  465. package/dist/composables/defineConfig.mjs.map +0 -1
  466. package/dist/composables/renderContext.d.mts +0 -24
  467. package/dist/composables/renderContext.d.mts.map +0 -1
  468. package/dist/composables/renderContext.mjs +0 -6
  469. package/dist/composables/renderContext.mjs.map +0 -1
  470. package/dist/composables/useConfig.d.mts +0 -9
  471. package/dist/composables/useConfig.d.mts.map +0 -1
  472. package/dist/composables/useConfig.mjs +0 -13
  473. package/dist/composables/useConfig.mjs.map +0 -1
  474. package/dist/composables/useDoctype.d.mts.map +0 -1
  475. package/dist/composables/useDoctype.mjs.map +0 -1
  476. package/dist/composables/useEvent.d.mts.map +0 -1
  477. package/dist/composables/useEvent.mjs.map +0 -1
  478. package/dist/composables/usePlaintext.d.mts.map +0 -1
  479. package/dist/composables/usePlaintext.mjs.map +0 -1
  480. package/dist/composables/usePreviewText.d.mts +0 -24
  481. package/dist/composables/usePreviewText.d.mts.map +0 -1
  482. package/dist/composables/usePreviewText.mjs +0 -29
  483. package/dist/composables/usePreviewText.mjs.map +0 -1
  484. package/dist/config/defaults.d.mts.map +0 -1
  485. package/dist/config/defaults.mjs.map +0 -1
  486. package/dist/config/index.d.mts +0 -15
  487. package/dist/config/index.d.mts.map +0 -1
  488. package/dist/config/index.mjs.map +0 -1
  489. package/dist/events/index.d.mts.map +0 -1
  490. package/dist/events/index.mjs.map +0 -1
  491. package/dist/index.d.mts +0 -30
  492. package/dist/index.mjs +0 -30
  493. package/dist/plaintext.d.mts.map +0 -1
  494. package/dist/plaintext.mjs.map +0 -1
  495. package/dist/plugin.d.mts.map +0 -1
  496. package/dist/plugin.mjs.map +0 -1
  497. package/dist/plugins/postcss/mergeMediaQueries.d.mts.map +0 -1
  498. package/dist/plugins/postcss/mergeMediaQueries.mjs.map +0 -1
  499. package/dist/plugins/postcss/pruneVars.d.mts.map +0 -1
  500. package/dist/plugins/postcss/pruneVars.mjs.map +0 -1
  501. package/dist/plugins/postcss/removeDeclarations.d.mts.map +0 -1
  502. package/dist/plugins/postcss/removeDeclarations.mjs.map +0 -1
  503. package/dist/plugins/postcss/tailwindCleanup.d.mts.map +0 -1
  504. package/dist/plugins/postcss/tailwindCleanup.mjs.map +0 -1
  505. package/dist/render/createRenderer.d.mts.map +0 -1
  506. package/dist/render/createRenderer.mjs +0 -279
  507. package/dist/render/createRenderer.mjs.map +0 -1
  508. package/dist/render/index.d.mts +0 -26
  509. package/dist/render/index.d.mts.map +0 -1
  510. package/dist/render/index.mjs +0 -45
  511. package/dist/render/index.mjs.map +0 -1
  512. package/dist/serve.d.mts.map +0 -1
  513. package/dist/serve.mjs.map +0 -1
  514. package/dist/server/compatibility.d.mts +0 -5
  515. package/dist/server/compatibility.d.mts.map +0 -1
  516. package/dist/server/compatibility.mjs +0 -97
  517. package/dist/server/compatibility.mjs.map +0 -1
  518. package/dist/server/email.d.mts.map +0 -1
  519. package/dist/server/email.mjs.map +0 -1
  520. package/dist/server/linter.d.mts +0 -5
  521. package/dist/server/linter.d.mts.map +0 -1
  522. package/dist/server/linter.mjs +0 -189
  523. package/dist/server/linter.mjs.map +0 -1
  524. package/dist/transformers/addAttributes.d.mts +0 -32
  525. package/dist/transformers/addAttributes.d.mts.map +0 -1
  526. package/dist/transformers/addAttributes.mjs.map +0 -1
  527. package/dist/transformers/attributeToStyle.d.mts +0 -25
  528. package/dist/transformers/attributeToStyle.d.mts.map +0 -1
  529. package/dist/transformers/attributeToStyle.mjs +0 -80
  530. package/dist/transformers/attributeToStyle.mjs.map +0 -1
  531. package/dist/transformers/base.d.mts +0 -8
  532. package/dist/transformers/base.d.mts.map +0 -1
  533. package/dist/transformers/base.mjs.map +0 -1
  534. package/dist/transformers/entities.d.mts +0 -8
  535. package/dist/transformers/entities.d.mts.map +0 -1
  536. package/dist/transformers/entities.mjs +0 -41
  537. package/dist/transformers/entities.mjs.map +0 -1
  538. package/dist/transformers/filters/defaults.d.mts.map +0 -1
  539. package/dist/transformers/filters/defaults.mjs.map +0 -1
  540. package/dist/transformers/filters/index.d.mts +0 -22
  541. package/dist/transformers/filters/index.d.mts.map +0 -1
  542. package/dist/transformers/filters/index.mjs +0 -67
  543. package/dist/transformers/filters/index.mjs.map +0 -1
  544. package/dist/transformers/format.d.mts +0 -15
  545. package/dist/transformers/format.d.mts.map +0 -1
  546. package/dist/transformers/format.mjs +0 -26
  547. package/dist/transformers/format.mjs.map +0 -1
  548. package/dist/transformers/index.d.mts.map +0 -1
  549. package/dist/transformers/index.mjs +0 -78
  550. package/dist/transformers/index.mjs.map +0 -1
  551. package/dist/transformers/inlineCSS.d.mts +0 -17
  552. package/dist/transformers/inlineCSS.d.mts.map +0 -1
  553. package/dist/transformers/inlineCSS.mjs +0 -70
  554. package/dist/transformers/inlineCSS.mjs.map +0 -1
  555. package/dist/transformers/inlineLink.d.mts +0 -14
  556. package/dist/transformers/inlineLink.d.mts.map +0 -1
  557. package/dist/transformers/inlineLink.mjs.map +0 -1
  558. package/dist/transformers/minify.d.mts +0 -17
  559. package/dist/transformers/minify.d.mts.map +0 -1
  560. package/dist/transformers/minify.mjs +0 -24
  561. package/dist/transformers/minify.mjs.map +0 -1
  562. package/dist/transformers/purgeCSS.d.mts +0 -23
  563. package/dist/transformers/purgeCSS.d.mts.map +0 -1
  564. package/dist/transformers/purgeCSS.mjs +0 -132
  565. package/dist/transformers/purgeCSS.mjs.map +0 -1
  566. package/dist/transformers/removeAttributes.d.mts +0 -31
  567. package/dist/transformers/removeAttributes.d.mts.map +0 -1
  568. package/dist/transformers/removeAttributes.mjs +0 -63
  569. package/dist/transformers/removeAttributes.mjs.map +0 -1
  570. package/dist/transformers/replaceStrings.d.mts.map +0 -1
  571. package/dist/transformers/replaceStrings.mjs.map +0 -1
  572. package/dist/transformers/safeClassNames.d.mts +0 -22
  573. package/dist/transformers/safeClassNames.d.mts.map +0 -1
  574. package/dist/transformers/safeClassNames.mjs.map +0 -1
  575. package/dist/transformers/shorthandCSS.d.mts +0 -24
  576. package/dist/transformers/shorthandCSS.d.mts.map +0 -1
  577. package/dist/transformers/shorthandCSS.mjs +0 -48
  578. package/dist/transformers/shorthandCSS.mjs.map +0 -1
  579. package/dist/transformers/tailwindcss.d.mts.map +0 -1
  580. package/dist/transformers/tailwindcss.mjs.map +0 -1
  581. package/dist/transformers/urlQuery.d.mts +0 -24
  582. package/dist/transformers/urlQuery.d.mts.map +0 -1
  583. package/dist/transformers/urlQuery.mjs +0 -65
  584. package/dist/transformers/urlQuery.mjs.map +0 -1
  585. package/dist/types/config.d.mts.map +0 -1
  586. package/dist/types/config.mjs +0 -1
  587. package/dist/types/index.d.mts +0 -2
  588. package/dist/types/index.mjs +0 -1
  589. package/dist/utils/ast/index.d.mts +0 -4
  590. package/dist/utils/ast/index.mjs +0 -5
  591. package/dist/utils/ast/parser.d.mts.map +0 -1
  592. package/dist/utils/ast/parser.mjs.map +0 -1
  593. package/dist/utils/ast/serializer.d.mts.map +0 -1
  594. package/dist/utils/ast/serializer.mjs +0 -37
  595. package/dist/utils/ast/serializer.mjs.map +0 -1
  596. package/dist/utils/ast/walker.d.mts.map +0 -1
  597. package/dist/utils/ast/walker.mjs.map +0 -1
  598. package/dist/utils/detect.d.mts.map +0 -1
  599. package/dist/utils/detect.mjs.map +0 -1
  600. package/dist/utils/url.d.mts.map +0 -1
  601. package/dist/utils/url.mjs.map +0 -1
  602. package/node_modules/@clack/core/dist/index.mjs.map +0 -1
  603. package/node_modules/@clack/prompts/dist/index.mjs.map +0 -1
  604. package/node_modules/fast-wrap-ansi/lib/main.js.map +0 -1
  605. package/node_modules/maizzle/dist/commands/make/stubs/layout.vue +0 -39
  606. package/node_modules/tinyexec/dist/LICENSES.txt +0 -83
@@ -1,10 +1,12 @@
1
- import { RemoveValue } from "../plugins/postcss/removeDeclarations.mjs";
2
- import { Options } from "juice";
3
- import * as oxfmt from "oxfmt";
4
- import * as shiki from "shiki";
5
- import { Options as Options$1 } from "unplugin-vue-markdown/types";
1
+ import { RemoveValue } from "../plugins/postcss/removeDeclarations.js";
2
+ import { TemplateInfo } from "../events/index.js";
3
+ import { Directive, Plugin } from "vue";
4
+ import { InlineConfig } from "vite";
5
+ import juice from "juice";
6
+ import { Options } from "unplugin-vue-markdown/types";
6
7
 
7
8
  //#region src/types/config.d.ts
9
+ type JuiceOptions = NonNullable<Parameters<typeof juice>[1]>;
8
10
  interface UrlQueryOptions {
9
11
  /**
10
12
  * CSS selectors for elements to process.
@@ -93,7 +95,7 @@ interface CssConfig {
93
95
  * }
94
96
  * }
95
97
  */
96
- inline?: boolean | Options & {
98
+ inline?: boolean | JuiceOptions & {
97
99
  /**
98
100
  * Convert HTML attributes like `width`, `height`, `bgcolor`, and `valign`
99
101
  * to inline CSS styles. Set to `true` for all, or pass an array of attribute names.
@@ -184,25 +186,13 @@ interface CssConfig {
184
186
  sort?: 'mobile-first' | 'desktop-first' | ((a: string, b: string) => number);
185
187
  };
186
188
  /**
187
- * Convert unitless CSS values to their unitless equivalents.
189
+ * Strip units from zero values in inlined styles.
188
190
  *
189
- * For example, `line-height: 24px` with a `16px` font becomes `line-height: 1.5`.
191
+ * For example, `padding: 0px 16px` becomes `padding: 0 16px`.
190
192
  *
191
193
  * @default true
192
194
  */
193
195
  preferUnitless?: boolean;
194
- /**
195
- * Resolve CSS `calc()` expressions to static values where possible.
196
- *
197
- * @default true
198
- */
199
- resolveCalc?: boolean;
200
- /**
201
- * Resolve CSS custom properties (`var()`) to their computed values.
202
- *
203
- * @default true
204
- */
205
- resolveProps?: boolean;
206
196
  /**
207
197
  * Replace unsafe CSS class names with email-safe equivalents.
208
198
  *
@@ -219,6 +209,14 @@ interface CssConfig {
219
209
  shorthand?: boolean | {
220
210
  tags?: string[];
221
211
  };
212
+ /**
213
+ * Convert 3-digit HEX colors to 6-digit in `bgcolor` and `color` attributes.
214
+ *
215
+ * Some email clients don't support shorthand HEX like `#fff`.
216
+ *
217
+ * @default true
218
+ */
219
+ sixHex?: boolean;
222
220
  /**
223
221
  * Remove specific CSS declarations by selector.
224
222
  *
@@ -231,7 +229,11 @@ interface CssConfig {
231
229
  */
232
230
  removeDeclarations?: Record<string, RemoveValue>;
233
231
  /**
234
- * File paths to exclude from CSS processing.
232
+ * Glob patterns or paths excluded from Tailwind's `@source` scanner.
233
+ *
234
+ * Tailwind won't generate utilities for classes used in these files.
235
+ * Useful for ignoring AMP variants or any templates whose classes
236
+ * shouldn't end up in the output CSS.
235
237
  *
236
238
  * @example
237
239
  * css: {
@@ -244,6 +246,10 @@ interface AttributesConfig {
244
246
  /**
245
247
  * Add attributes to HTML elements.
246
248
  *
249
+ * Set the whole map to `false` to disable auto-add. Set a selector
250
+ * entry to `false` to skip that selector. Set an individual attribute
251
+ * to `false` to skip just that attribute while keeping the rest.
252
+ *
247
253
  * @example
248
254
  * html: {
249
255
  * attributes: {
@@ -254,14 +260,25 @@ interface AttributesConfig {
254
260
  * }
255
261
  * }
256
262
  */
257
- add?: false | Record<string, Record<string, string | boolean | number>>;
263
+ add?: false | Record<string, false | Record<string, false | string | boolean | number>>;
258
264
  /**
259
- * Remove attributes from HTML elements by name or name-value pair.
265
+ * Remove attributes from HTML elements.
266
+ *
267
+ * Empty `style` and `class` attributes are always stripped, regardless
268
+ * of config. Entries added here are appended to those defaults.
269
+ *
270
+ * - String — remove when the attribute's value is empty.
271
+ * - `{ name, value: 'literal' }` — remove when the value matches exactly.
272
+ * - `{ name, value: /regex/ }` — remove when the value matches the regex.
260
273
  *
261
274
  * @example
262
275
  * html: {
263
276
  * attributes: {
264
- * remove: ['data-test', { name: 'class', value: /^js-/ }],
277
+ * remove: [
278
+ * 'data-foo',
279
+ * { name: 'role', value: 'none' },
280
+ * { name: 'class', value: /^js-/ },
281
+ * ],
265
282
  * }
266
283
  * }
267
284
  */
@@ -271,6 +288,28 @@ interface AttributesConfig {
271
288
  }>;
272
289
  }
273
290
  type EntitiesConfig = boolean | Record<string, string>;
291
+ /**
292
+ * caniemail.com client family slugs. Maintained manually from
293
+ * https://www.caniemail.com/api/data.json — update this list when caniemail
294
+ * adds new clients.
295
+ */
296
+ type CaniemailClient = 'gmail' | 'outlook' | 'yahoo' | 'apple-mail' | 'aol' | 'thunderbird' | 'microsoft' | 'samsung-email' | 'sfr' | 'orange' | 'protonmail' | 'hey' | 'mail-ru' | 'fastmail' | 'laposte' | 't-online-de' | 'free-fr' | 'gmx' | 'web-de' | 'ionos-1and1' | 'rainloop' | 'wp-pl';
297
+ interface ChecksConfig {
298
+ /**
299
+ * Client families to check against. Defaults to the four majors:
300
+ * Gmail, Apple Mail, Outlook, Yahoo. Pass `'all'` to check every client
301
+ * in the caniemail dataset.
302
+ */
303
+ clients?: CaniemailClient[] | 'all';
304
+ /**
305
+ * Filter which severities are reported. Omit to show everything.
306
+ *
307
+ * - `'error'` — only errors (unsupported features, hard lint errors)
308
+ * - `'warning'` — only warnings (partial / unknown support, lint warnings)
309
+ * - `'lint'` — only lint items (both severities, no compat items)
310
+ */
311
+ level?: 'error' | 'warning' | 'lint';
312
+ }
274
313
  interface PostcssConfig {
275
314
  /**
276
315
  * Selector prefixes to strip from compiled CSS.
@@ -311,24 +350,129 @@ interface HtmlConfig {
311
350
  *
312
351
  * Set to `true` to enable with defaults, or pass options.
313
352
  */
314
- format?: boolean | oxfmt.FormatOptions;
353
+ format?: boolean | import('oxfmt').FormatOptions;
315
354
  /**
316
355
  * Minify the HTML output.
317
356
  *
318
- * Set to `true` to enable with defaults, or pass options.
357
+ * Set to `true` to enable with defaults, or pass `html-crush`
358
+ * options to customize.
359
+ *
360
+ * @see https://codsen.com/os/html-crush
319
361
  */
320
- minify?: boolean | Record<string, unknown>;
362
+ minify?: boolean | Partial<import('html-crush').Opts>;
321
363
  }
322
364
  type FilterFunction = (str: string, value: string) => string;
323
365
  type FiltersConfig = false | Record<string, FilterFunction>;
324
- interface MarkdownConfig extends Options$1 {
366
+ interface MarkdownConfig extends Options {
325
367
  /**
326
368
  * The shiki theme to use for syntax highlighting in Markdown fenced code blocks.
327
369
  *
328
370
  * @default 'github-light'
329
371
  */
330
- shikiTheme?: shiki.BundledTheme;
372
+ shikiTheme?: import('shiki').BundledTheme;
373
+ }
374
+ interface VueConfig {
375
+ /**
376
+ * Vue plugins to register on the app instance before rendering.
377
+ *
378
+ * Pass a factory (`() => Plugin[]`) for stateful plugins like vue-i18n
379
+ * or Pinia to get a fresh instance per render — otherwise state leaks
380
+ * across templates (e.g. one template setting `locale.value = 'fr'`
381
+ * affects the next render).
382
+ */
383
+ plugins?: Plugin[] | (() => Plugin[]);
384
+ /** Custom Vue directives to register globally. */
385
+ directives?: Record<string, Directive>;
386
+ /** Properties added to `app.config.globalProperties`, available in all templates. */
387
+ globalProperties?: Record<string, unknown>;
388
+ }
389
+ /**
390
+ * Per-transformer toggle map for `useTransformers`.
391
+ *
392
+ * - `false` skips the listed transformer.
393
+ * - `true` force-enables it for this run (only meaningful for boolean-driven
394
+ * transformers: inlineCss, purgeCss, prettify, minify, shorthandCss,
395
+ * sixHex, safeSelectors, entities). Layers on the matching
396
+ * `css.*` / `html.*` config slice.
397
+ * - missing keys keep their default behavior.
398
+ *
399
+ * Data-driven transformers (filters, baseURL, urlQuery, addAttributes,
400
+ * removeAttributes, replaceStrings, attributeToStyle) require actual
401
+ * config values — a bare `true` is a no-op for them.
402
+ *
403
+ * Transformers without a toggle (Tailwind, MSO placeholder resolution,
404
+ * column width math, link inlining) always run; they're driven by markup
405
+ * or framework state, not user opt-in.
406
+ */
407
+ interface TransformerToggles {
408
+ safeSelectors?: boolean;
409
+ attributeToStyle?: boolean;
410
+ inlineCss?: boolean;
411
+ removeAttributes?: boolean;
412
+ shorthandCss?: boolean;
413
+ sixHex?: boolean;
414
+ addAttributes?: boolean;
415
+ filters?: boolean;
416
+ baseURL?: boolean;
417
+ urlQuery?: boolean;
418
+ purgeCss?: boolean;
419
+ entities?: boolean;
420
+ replaceStrings?: boolean;
421
+ prettify?: boolean;
422
+ minify?: boolean;
423
+ }
424
+ /**
425
+ * Plaintext generation options.
426
+ *
427
+ * Control where plaintext files are written, what extension they use,
428
+ * and the options forwarded to `string-strip-html`.
429
+ */
430
+ interface PlaintextConfig {
431
+ /**
432
+ * Output directory for plaintext files. When omitted, files are written
433
+ * next to their HTML counterpart in `build.output.path`.
434
+ */
435
+ destination?: string;
436
+ /**
437
+ * File extension for plaintext files (without the leading dot).
438
+ *
439
+ * @default 'txt'
440
+ */
441
+ extension?: string;
442
+ /**
443
+ * Options forwarded to `string-strip-html`.
444
+ *
445
+ * @see https://codsen.com/os/string-strip-html
446
+ */
447
+ options?: Partial<import('string-strip-html').Opts>;
331
448
  }
449
+ /**
450
+ * Source directory entry for component auto-import.
451
+ *
452
+ * String → folder name becomes a namespace prefix automatically
453
+ * (e.g. `widgets/Button.vue` → `<WidgetsButton />`).
454
+ *
455
+ * Object → custom prefix overrides the folder-derived name. With
456
+ * `pathPrefix: false`, intermediate subfolders are dropped from the
457
+ * resolved name (useful for icon sets organized by category).
458
+ */
459
+ type ComponentSource = string | {
460
+ /** Directory to scan, resolved relative to `cwd`. */path: string;
461
+ /**
462
+ * Custom prefix prepended to every resolved component name.
463
+ * Empty string disables the auto folder-name prefix.
464
+ */
465
+ prefix?: string;
466
+ /**
467
+ * Include intermediate subfolder names in the resolved component
468
+ * name. Defaults to `true`.
469
+ *
470
+ * @example
471
+ * // pathPrefix: true → icons/social/twitter.vue → <IconSocialTwitter />
472
+ * // pathPrefix: false → icons/social/twitter.vue → <IconTwitter />
473
+ */
474
+ pathPrefix?: boolean;
475
+ };
332
476
  interface MaizzleConfig {
333
477
  /**
334
478
  * Root directory for the Maizzle email project.
@@ -375,6 +519,27 @@ interface MaizzleConfig {
375
519
  */
376
520
  extension?: string;
377
521
  };
522
+ /**
523
+ * Build templates in parallel across worker threads.
524
+ *
525
+ * - omitted (default): parallel when there are more than 50 templates
526
+ * - `true`: always parallel, using min(CPU count − 1, 8) workers
527
+ * - `false`: always sequential
528
+ * - `{ workers, threshold }`: parallel when the template count exceeds
529
+ * `threshold` (default 50), using `workers` threads (default
530
+ * min(CPU count − 1, 8)). Set `threshold: 0` to always parallelize.
531
+ *
532
+ * Note: more workers is not faster — each runs a full renderer, so ~8 is the
533
+ * sweet spot and over-provisioning slows builds down.
534
+ *
535
+ * Only applies to file-based configs (the CLI / a config path); an inline
536
+ * config object always builds sequentially. SFC-registered `afterBuild`
537
+ * handlers can't run in a worker — use the config `afterBuild` hook instead.
538
+ */
539
+ parallel?: boolean | {
540
+ workers?: number;
541
+ threshold?: number;
542
+ };
378
543
  /** Static file copying configuration. */
379
544
  static?: {
380
545
  /**
@@ -398,12 +563,20 @@ interface MaizzleConfig {
398
563
  * Resolved relative to `cwd` (not `root`), so paths outside the
399
564
  * email root directory work as expected.
400
565
  *
566
+ * String entries use the folder name as a namespace prefix
567
+ * automatically (e.g. `widgets/Button.vue` → `<WidgetsButton />`).
568
+ * Object entries override that with a custom prefix.
569
+ *
401
570
  * @example
402
571
  * components: {
403
- * source: ['resources/js/components/email'],
572
+ * source: [
573
+ * 'resources/js/components/email',
574
+ * { path: 'src/widgets', prefix: 'W' },
575
+ * { path: 'src/icons', prefix: 'Icon', pathPrefix: false },
576
+ * ],
404
577
  * }
405
578
  */
406
- source?: string | string[];
579
+ source?: ComponentSource | ComponentSource[];
407
580
  };
408
581
  /** Dev server configuration. */
409
582
  server?: {
@@ -449,25 +622,52 @@ interface MaizzleConfig {
449
622
  subject?: string; /** Nodemailer transport options (SMTP, SES, etc.). Omit to use Ethereal. */
450
623
  transport?: Record<string, unknown>;
451
624
  };
625
+ /**
626
+ * Configure or disable the Checks tab in the dev UI.
627
+ *
628
+ * Set to `false` to disable checks entirely (the tab is hidden).
629
+ *
630
+ * @example
631
+ * server: {
632
+ * checks: {
633
+ * clients: ['gmail', 'outlook', 'apple-mail'],
634
+ * level: 'error',
635
+ * }
636
+ * }
637
+ */
638
+ checks?: false | ChecksConfig;
452
639
  };
453
640
  /** Tailwind CSS and email CSS optimization settings. */
454
641
  css?: CssConfig;
455
642
  /**
456
643
  * Generate a plaintext version of the email.
457
644
  *
458
- * Set to `true` to enable, or pass a string path or options object.
645
+ * Set to `true` to enable with defaults, or pass an object to configure
646
+ * destination directory, file extension, and `string-strip-html` options.
459
647
  *
460
648
  * @default false
649
+ * @example
650
+ * plaintext: {
651
+ * destination: 'build_production/plaintext',
652
+ * extension: 'txt',
653
+ * options: { ignoreTags: ['br'] },
654
+ * }
461
655
  */
462
- plaintext?: boolean | string | Record<string, unknown>;
656
+ plaintext?: boolean | PlaintextConfig;
463
657
  /** PostCSS processing options. */
464
658
  postcss?: PostcssConfig;
465
659
  /**
466
660
  * Enable the transformer pipeline (CSS inlining, purging, shorthand, etc).
467
661
  *
662
+ * Pass `false` to skip the entire pipeline. Pass an object to opt out of
663
+ * specific transformers while keeping the rest active — only keys set
664
+ * to `false` are skipped.
665
+ *
468
666
  * @default true
667
+ * @example
668
+ * useTransformers: { inlineCss: false, minify: false }
469
669
  */
470
- useTransformers?: boolean;
670
+ useTransformers?: boolean | TransformerToggles;
471
671
  /**
472
672
  * Replace strings in the final HTML output.
473
673
  *
@@ -493,25 +693,55 @@ interface MaizzleConfig {
493
693
  url?: UrlConfig;
494
694
  /** HTML post-processing settings (attributes, formatting, minification). */
495
695
  html?: HtmlConfig;
696
+ /**
697
+ * Vite configuration options passed to the internal Vite SSR server.
698
+ *
699
+ * Use this to add custom Vite plugins or other Vite options. The internal
700
+ * SSR server never loads a project `vite.config.{ts,js}` (it runs with
701
+ * `configFile: false`), so pass anything it needs here. These options are
702
+ * merged underneath Maizzle's required settings, which take precedence.
703
+ *
704
+ * @example
705
+ * vite: {
706
+ * plugins: [myPlugin()],
707
+ * }
708
+ */
709
+ vite?: InlineConfig;
710
+ /**
711
+ * Vue app customization options.
712
+ *
713
+ * Register plugins, directives, or global properties on the
714
+ * internal Vue app instance used for SSR rendering.
715
+ *
716
+ * @example
717
+ * vue: {
718
+ * // Use a factory for stateful plugins (vue-i18n, Pinia, vue-router)
719
+ * // so each render gets a fresh instance.
720
+ * plugins: () => [createI18n({ locale: 'en', messages })],
721
+ * directives: { focus: vFocus },
722
+ * globalProperties: { $format: dateFormat },
723
+ * }
724
+ */
725
+ vue?: VueConfig;
496
726
  /** Called before any templates are processed. */
497
727
  beforeCreate?: (params: {
498
728
  config: MaizzleConfig;
499
729
  }) => void | Promise<void>;
500
- /** Called before each template is rendered. Return a string to replace the template source. */
730
+ /** Called before each template is rendered. Return a string to replace `template.source`. */
501
731
  beforeRender?: (params: {
502
732
  config: MaizzleConfig;
503
- template: string;
733
+ template: TemplateInfo;
504
734
  }) => string | void | Promise<string | void>;
505
735
  /** Called after each template is rendered but before transformers run. Return a string to replace the output HTML. */
506
736
  afterRender?: (params: {
507
737
  config: MaizzleConfig;
508
- template: string;
738
+ template: TemplateInfo;
509
739
  html: string;
510
740
  }) => string | void | Promise<string | void>;
511
741
  /** Called after transformers have run on each template. Return a string to replace the output HTML. */
512
742
  afterTransform?: (params: {
513
743
  config: MaizzleConfig;
514
- template: string;
744
+ template: TemplateInfo;
515
745
  html: string;
516
746
  }) => string | void | Promise<string | void>;
517
747
  /** Called after all templates have been built. */
@@ -522,5 +752,5 @@ interface MaizzleConfig {
522
752
  [key: string]: any;
523
753
  }
524
754
  //#endregion
525
- export { AttributesConfig, CssConfig, EntitiesConfig, FilterFunction, FiltersConfig, HtmlConfig, MaizzleConfig, MarkdownConfig, PostcssConfig, UrlConfig, UrlQuery, UrlQueryOptions };
526
- //# sourceMappingURL=config.d.mts.map
755
+ export { AttributesConfig, CaniemailClient, ChecksConfig, ComponentSource, CssConfig, EntitiesConfig, FilterFunction, FiltersConfig, HtmlConfig, MaizzleConfig, MarkdownConfig, PlaintextConfig, PostcssConfig, TransformerToggles, UrlConfig, UrlQuery, UrlQueryOptions, VueConfig };
756
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","names":[],"sources":["../../src/types/config.ts"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import { AttributesConfig, CaniemailClient, ChecksConfig, ComponentSource, CssConfig, EntitiesConfig, FilterFunction, FiltersConfig, HtmlConfig, MaizzleConfig, MarkdownConfig, PlaintextConfig, PostcssConfig, TransformerToggles, UrlConfig, UrlQuery, UrlQueryOptions } from "./config.js";
2
+ export type { AttributesConfig, CaniemailClient, ChecksConfig, ComponentSource, CssConfig, EntitiesConfig, FilterFunction, FiltersConfig, HtmlConfig, MaizzleConfig, MarkdownConfig, PlaintextConfig, PostcssConfig, TransformerToggles, UrlConfig, UrlQuery, UrlQueryOptions };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import { parse } from "./parser.js";
2
+ import { walk } from "./walker.js";
3
+ import { serialize } from "./serializer.js";
4
+ export { parse, serialize, walk };
@@ -0,0 +1,4 @@
1
+ import { parse } from "./parser.js";
2
+ import { walk } from "./walker.js";
3
+ import { serialize } from "./serializer.js";
4
+ export { parse, serialize, walk };
@@ -4,4 +4,4 @@ import { ChildNode, DomHandlerOptions } from "domhandler";
4
4
  declare function parse(html: string, options?: DomHandlerOptions): ChildNode[];
5
5
  //#endregion
6
6
  export { parse };
7
- //# sourceMappingURL=parser.d.mts.map
7
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","names":[],"sources":["../../../src/utils/ast/parser.ts"],"mappings":";;;iBAIgB,KAAA,CAAM,IAAA,UAAc,OAAA,GAAS,iBAAA,GAAyB,SAAS"}
@@ -1,6 +1,5 @@
1
1
  import { Parser } from "htmlparser2";
2
2
  import { DomHandler } from "domhandler";
3
-
4
3
  //#region src/utils/ast/parser.ts
5
4
  function parse(html, options = {}) {
6
5
  const handler = new DomHandler();
@@ -9,7 +8,7 @@ function parse(html, options = {}) {
9
8
  parser.end();
10
9
  return handler.dom;
11
10
  }
12
-
13
11
  //#endregion
14
12
  export { parse };
15
- //# sourceMappingURL=parser.mjs.map
13
+
14
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","names":[],"sources":["../../../src/utils/ast/parser.ts"],"sourcesContent":["import { Parser } from 'htmlparser2'\nimport { DomHandler } from 'domhandler'\nimport type { ChildNode, DomHandlerOptions } from 'domhandler'\n\nexport function parse(html: string, options: DomHandlerOptions = {}): ChildNode[] {\n const handler = new DomHandler()\n const parser = new Parser(handler, options)\n parser.write(html)\n parser.end()\n return handler.dom\n}\n"],"mappings":";;;AAIA,SAAgB,MAAM,MAAc,UAA6B,CAAC,GAAgB;CAChF,MAAM,UAAU,IAAI,WAAW;CAC/B,MAAM,SAAS,IAAI,OAAO,SAAS,OAAO;CAC1C,OAAO,MAAM,IAAI;CACjB,OAAO,IAAI;CACX,OAAO,QAAQ;AACjB"}
@@ -5,4 +5,4 @@ import { DomSerializerOptions } from "dom-serializer";
5
5
  declare function serialize(dom: ChildNode[], options?: DomSerializerOptions): string;
6
6
  //#endregion
7
7
  export { serialize };
8
- //# sourceMappingURL=serializer.d.mts.map
8
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","names":[],"sources":["../../../src/utils/ast/serializer.ts"],"mappings":";;;;iBA0CgB,SAAA,CAAU,GAAA,EAAK,SAAA,IAAa,OAAA,GAAU,oBAAoB"}
@@ -0,0 +1,46 @@
1
+ import render from "dom-serializer";
2
+ //#region src/utils/ast/serializer.ts
3
+ const RAW_TEXT_ELEMENTS = new Set(["script", "style"]);
4
+ /**
5
+ * Re-encode `<` and `>` in text nodes before serialization.
6
+ *
7
+ * The parser decodes entities like `&lt;` into raw `<` in text nodes. With
8
+ * `encodeEntities: false` (needed so other transformers can emit entity
9
+ * strings such as `&nbsp;` verbatim), the serializer would write those raw
10
+ * `<` characters as-is, turning escaped text (e.g. a Vue `{{ html }}`
11
+ * interpolation containing `<p>...</p>`) into real DOM downstream.
12
+ *
13
+ * `&` is intentionally not re-encoded: the `entities` transformer writes
14
+ * literal entity strings (`&nbsp;`, `&mdash;`) directly into text-node data
15
+ * and relies on the serializer leaving them alone.
16
+ *
17
+ * Skip `<script>` / `<style>` — their children are raw-text containers, and
18
+ * CSS/JS legitimately contains `<` and `>`.
19
+ */
20
+ function encodeTextNodes(dom, inRawText = false) {
21
+ for (const node of dom) {
22
+ if (node.type === "text") {
23
+ if (!inRawText) {
24
+ const text = node;
25
+ text.data = text.data.replace(/</g, "&lt;").replace(/>/g, "&gt;");
26
+ }
27
+ continue;
28
+ }
29
+ if ("children" in node && node.children?.length) {
30
+ const el = node;
31
+ const nextRaw = inRawText || RAW_TEXT_ELEMENTS.has(el.name);
32
+ encodeTextNodes(el.children, nextRaw);
33
+ }
34
+ }
35
+ }
36
+ function serialize(dom, options) {
37
+ encodeTextNodes(dom);
38
+ return render(dom, {
39
+ encodeEntities: false,
40
+ ...options
41
+ });
42
+ }
43
+ //#endregion
44
+ export { serialize };
45
+
46
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","names":[],"sources":["../../../src/utils/ast/serializer.ts"],"sourcesContent":["import render from 'dom-serializer'\nimport type { ChildNode, Element, Text } from 'domhandler'\nimport type { DomSerializerOptions } from 'dom-serializer'\n\nconst RAW_TEXT_ELEMENTS = new Set(['script', 'style'])\n\n/**\n * Re-encode `<` and `>` in text nodes before serialization.\n *\n * The parser decodes entities like `&lt;` into raw `<` in text nodes. With\n * `encodeEntities: false` (needed so other transformers can emit entity\n * strings such as `&nbsp;` verbatim), the serializer would write those raw\n * `<` characters as-is, turning escaped text (e.g. a Vue `{{ html }}`\n * interpolation containing `<p>...</p>`) into real DOM downstream.\n *\n * `&` is intentionally not re-encoded: the `entities` transformer writes\n * literal entity strings (`&nbsp;`, `&mdash;`) directly into text-node data\n * and relies on the serializer leaving them alone.\n *\n * Skip `<script>` / `<style>` — their children are raw-text containers, and\n * CSS/JS legitimately contains `<` and `>`.\n */\nfunction encodeTextNodes(dom: ChildNode[], inRawText = false): void {\n for (const node of dom) {\n if (node.type === 'text') {\n if (!inRawText) {\n const text = node as Text\n text.data = text.data\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n }\n continue\n }\n\n if ('children' in node && (node as Element).children?.length) {\n const el = node as Element\n const nextRaw = inRawText || RAW_TEXT_ELEMENTS.has(el.name)\n encodeTextNodes(el.children as ChildNode[], nextRaw)\n }\n }\n}\n\nexport function serialize(dom: ChildNode[], options?: DomSerializerOptions): string {\n encodeTextNodes(dom)\n return render(dom, { encodeEntities: false, ...options })\n}\n"],"mappings":";;AAIA,MAAM,oBAAoB,IAAI,IAAI,CAAC,UAAU,OAAO,CAAC;;;;;;;;;;;;;;;;;AAkBrD,SAAS,gBAAgB,KAAkB,YAAY,OAAa;CAClE,KAAK,MAAM,QAAQ,KAAK;EACtB,IAAI,KAAK,SAAS,QAAQ;GACxB,IAAI,CAAC,WAAW;IACd,MAAM,OAAO;IACb,KAAK,OAAO,KAAK,KACd,QAAQ,MAAM,MAAM,CAAC,CACrB,QAAQ,MAAM,MAAM;GACzB;GACA;EACF;EAEA,IAAI,cAAc,QAAS,KAAiB,UAAU,QAAQ;GAC5D,MAAM,KAAK;GACX,MAAM,UAAU,aAAa,kBAAkB,IAAI,GAAG,IAAI;GAC1D,gBAAgB,GAAG,UAAyB,OAAO;EACrD;CACF;AACF;AAEA,SAAgB,UAAU,KAAkB,SAAwC;CAClF,gBAAgB,GAAG;CACnB,OAAO,OAAO,KAAK;EAAE,gBAAgB;EAAO,GAAG;CAAQ,CAAC;AAC1D"}
@@ -4,4 +4,4 @@ import { ChildNode } from "domhandler";
4
4
  declare function walk(ast: ChildNode[], callback: (node: ChildNode) => void): void;
5
5
  //#endregion
6
6
  export { walk };
7
- //# sourceMappingURL=walker.d.mts.map
7
+ //# sourceMappingURL=walker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walker.d.ts","names":[],"sources":["../../../src/utils/ast/walker.ts"],"mappings":";;;iBAEgB,IAAA,CAAK,GAAA,EAAK,SAAA,IAAa,QAAA,GAAW,IAAA,EAAM,SAAS"}
@@ -6,7 +6,7 @@ function walk(ast, callback) {
6
6
  }
7
7
  for (const node of ast) traverse(node);
8
8
  }
9
-
10
9
  //#endregion
11
10
  export { walk };
12
- //# sourceMappingURL=walker.mjs.map
11
+
12
+ //# sourceMappingURL=walker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walker.js","names":[],"sources":["../../../src/utils/ast/walker.ts"],"sourcesContent":["import type { ChildNode } from 'domhandler'\n\nexport function walk(ast: ChildNode[], callback: (node: ChildNode) => void): void {\n function traverse(node: ChildNode) {\n callback(node)\n\n if ('children' in node && node.children && node.children.length > 0) {\n for (const child of node.children) {\n traverse(child)\n }\n }\n }\n\n for (const node of ast) {\n traverse(node)\n }\n}\n"],"mappings":";AAEA,SAAgB,KAAK,KAAkB,UAA2C;CAChF,SAAS,SAAS,MAAiB;EACjC,SAAS,IAAI;EAEb,IAAI,cAAc,QAAQ,KAAK,YAAY,KAAK,SAAS,SAAS,GAChE,KAAK,MAAM,SAAS,KAAK,UACvB,SAAS,KAAK;CAGpB;CAEA,KAAK,MAAM,QAAQ,KACjB,SAAS,IAAI;AAEjB"}
@@ -0,0 +1,13 @@
1
+ //#region src/utils/cloneConfig.d.ts
2
+ /**
3
+ * Deep-clone plain objects so per-template config mutations stay isolated.
4
+ *
5
+ * Arrays, functions, and class instances (Date, RegExp, Vite plugins, …) pass
6
+ * through by reference — only nested plain-object props are copied, which is
7
+ * what `beforeRender` mutations (`config.url.base`, `config.css.inline`, …)
8
+ * touch. Sharing arrays by reference matches the parallel worker's merge.
9
+ */
10
+ declare function cloneConfig<T>(value: T): T;
11
+ //#endregion
12
+ export { cloneConfig };
13
+ //# sourceMappingURL=cloneConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloneConfig.d.ts","names":[],"sources":["../../src/utils/cloneConfig.ts"],"mappings":";;AAQA;;;;;;;iBAAgB,WAAA,IAAe,KAAA,EAAO,CAAA,GAAI,CAAC"}
@@ -0,0 +1,21 @@
1
+ //#region src/utils/cloneConfig.ts
2
+ /**
3
+ * Deep-clone plain objects so per-template config mutations stay isolated.
4
+ *
5
+ * Arrays, functions, and class instances (Date, RegExp, Vite plugins, …) pass
6
+ * through by reference — only nested plain-object props are copied, which is
7
+ * what `beforeRender` mutations (`config.url.base`, `config.css.inline`, …)
8
+ * touch. Sharing arrays by reference matches the parallel worker's merge.
9
+ */
10
+ function cloneConfig(value) {
11
+ if (value === null || typeof value !== "object") return value;
12
+ if (Array.isArray(value)) return value;
13
+ if (Object.getPrototypeOf(value) !== Object.prototype) return value;
14
+ const out = {};
15
+ for (const key of Object.keys(value)) out[key] = cloneConfig(value[key]);
16
+ return out;
17
+ }
18
+ //#endregion
19
+ export { cloneConfig };
20
+
21
+ //# sourceMappingURL=cloneConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloneConfig.js","names":[],"sources":["../../src/utils/cloneConfig.ts"],"sourcesContent":["/**\n * Deep-clone plain objects so per-template config mutations stay isolated.\n *\n * Arrays, functions, and class instances (Date, RegExp, Vite plugins, …) pass\n * through by reference — only nested plain-object props are copied, which is\n * what `beforeRender` mutations (`config.url.base`, `config.css.inline`, …)\n * touch. Sharing arrays by reference matches the parallel worker's merge.\n */\nexport function cloneConfig<T>(value: T): T {\n if (value === null || typeof value !== 'object') return value\n if (Array.isArray(value)) return value\n if (Object.getPrototypeOf(value) !== Object.prototype) return value\n\n const out: Record<string, unknown> = {}\n for (const key of Object.keys(value as object)) {\n out[key] = cloneConfig((value as Record<string, unknown>)[key])\n }\n\n return out as T\n}\n"],"mappings":";;;;;;;;;AAQA,SAAgB,YAAe,OAAa;CAC1C,IAAI,UAAU,QAAQ,OAAO,UAAU,UAAU,OAAO;CACxD,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO;CACjC,IAAI,OAAO,eAAe,KAAK,MAAM,OAAO,WAAW,OAAO;CAE9D,MAAM,MAA+B,CAAC;CACtC,KAAK,MAAM,OAAO,OAAO,KAAK,KAAe,GAC3C,IAAI,OAAO,YAAa,MAAkC,IAAI;CAGhE,OAAO;AACT"}