@maizzle/framework 6.0.0-rc.9 → 6.0.1
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.
- package/README.md +3 -3
- package/bin/maizzle.mjs +1 -1
- package/dist/build.d.ts +38 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +234 -0
- package/dist/build.js.map +1 -0
- package/dist/components/Body.vue +32 -3
- package/dist/components/Button.vue +91 -62
- package/dist/components/CodeBlock.vue +6 -4
- package/dist/components/CodeInline.vue +77 -6
- package/dist/components/Column.vue +67 -31
- package/dist/components/Container.vue +73 -12
- package/dist/components/Font.vue +96 -0
- package/dist/components/Head.vue +1 -1
- package/dist/components/Heading.vue +1 -1
- package/dist/components/Hr.vue +33 -0
- package/dist/components/Html.vue +36 -3
- package/dist/components/Img.vue +332 -0
- package/dist/components/Layout.vue +73 -21
- package/dist/components/Link.vue +1 -1
- package/dist/components/Markdown.vue +51 -24
- package/dist/components/MarkdownLayout.vue +39 -0
- package/dist/components/NotPlaintext.vue +14 -0
- package/dist/components/Outlook.vue +38 -11
- package/dist/components/OutlookBg.vue +241 -0
- package/dist/components/Plaintext.vue +14 -0
- package/dist/components/Preheader.vue +35 -10
- package/dist/components/QrCode.vue +157 -0
- package/dist/components/Raw.vue +28 -0
- package/dist/components/Row.vue +115 -22
- package/dist/components/Section.vue +65 -26
- package/dist/components/Spacer.vue +35 -29
- package/dist/components/Tailwind.vue +45 -0
- package/dist/components/Text.vue +3 -3
- package/dist/components/Vml.vue +207 -94
- package/dist/components/utils.d.ts +53 -0
- package/dist/components/utils.d.ts.map +1 -0
- package/dist/components/utils.js +80 -0
- package/dist/components/utils.js.map +1 -0
- package/dist/components/utils.ts +102 -0
- package/dist/composables/defineConfig.d.ts +13 -0
- package/dist/composables/defineConfig.d.ts.map +1 -0
- package/dist/composables/{defineConfig.mjs → defineConfig.js} +7 -9
- package/dist/composables/defineConfig.js.map +1 -0
- package/dist/composables/renderContext.d.ts +37 -0
- package/dist/composables/renderContext.d.ts.map +1 -0
- package/dist/composables/renderContext.js +6 -0
- package/dist/composables/renderContext.js.map +1 -0
- package/dist/composables/useBaseUrl.d.ts +19 -0
- package/dist/composables/useBaseUrl.d.ts.map +1 -0
- package/dist/composables/useBaseUrl.js +26 -0
- package/dist/composables/useBaseUrl.js.map +1 -0
- package/dist/composables/useConfig.d.ts +16 -0
- package/dist/composables/useConfig.d.ts.map +1 -0
- package/dist/composables/useConfig.js +19 -0
- package/dist/composables/useConfig.js.map +1 -0
- package/dist/composables/useCurrentTemplate.d.ts +31 -0
- package/dist/composables/useCurrentTemplate.d.ts.map +1 -0
- package/dist/composables/useCurrentTemplate.js +42 -0
- package/dist/composables/useCurrentTemplate.js.map +1 -0
- package/dist/composables/{useDoctype.d.mts → useDoctype.d.ts} +1 -1
- package/dist/composables/useDoctype.d.ts.map +1 -0
- package/dist/composables/{useDoctype.mjs → useDoctype.js} +3 -4
- package/dist/composables/useDoctype.js.map +1 -0
- package/dist/composables/{useEvent.d.mts → useEvent.d.ts} +3 -3
- package/dist/composables/useEvent.d.ts.map +1 -0
- package/dist/composables/{useEvent.mjs → useEvent.js} +4 -5
- package/dist/composables/useEvent.js.map +1 -0
- package/dist/composables/useFont.d.ts +50 -0
- package/dist/composables/useFont.d.ts.map +1 -0
- package/dist/composables/useFont.js +92 -0
- package/dist/composables/useFont.js.map +1 -0
- package/dist/composables/useOutlookFallback.d.ts +21 -0
- package/dist/composables/useOutlookFallback.d.ts.map +1 -0
- package/dist/composables/useOutlookFallback.js +29 -0
- package/dist/composables/useOutlookFallback.js.map +1 -0
- package/dist/composables/useOutputPath.d.ts +17 -0
- package/dist/composables/useOutputPath.d.ts.map +1 -0
- package/dist/composables/useOutputPath.js +23 -0
- package/dist/composables/useOutputPath.js.map +1 -0
- package/dist/composables/{usePlaintext.d.mts → usePlaintext.d.ts} +3 -1
- package/dist/composables/usePlaintext.d.ts.map +1 -0
- package/dist/composables/{usePlaintext.mjs → usePlaintext.js} +4 -4
- package/dist/composables/usePlaintext.js.map +1 -0
- package/dist/composables/usePreheader.d.ts +25 -0
- package/dist/composables/usePreheader.d.ts.map +1 -0
- package/dist/composables/usePreheader.js +28 -0
- package/dist/composables/usePreheader.js.map +1 -0
- package/dist/composables/useTransformers.d.ts +34 -0
- package/dist/composables/useTransformers.d.ts.map +1 -0
- package/dist/composables/useTransformers.js +48 -0
- package/dist/composables/useTransformers.js.map +1 -0
- package/dist/composables/useUrlQuery.d.ts +19 -0
- package/dist/composables/useUrlQuery.d.ts.map +1 -0
- package/dist/composables/useUrlQuery.js +26 -0
- package/dist/composables/useUrlQuery.js.map +1 -0
- package/dist/config/{defaults.d.mts → defaults.d.ts} +2 -2
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/{defaults.mjs → defaults.js} +10 -6
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +33 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +136 -0
- package/dist/config/index.js.map +1 -0
- package/dist/events/{index.d.mts → index.d.ts} +35 -12
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/{index.mjs → index.js} +31 -13
- package/dist/events/index.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.js +40 -0
- package/dist/{plaintext.d.mts → plaintext.d.ts} +1 -1
- package/dist/plaintext.d.ts.map +1 -0
- package/dist/{plaintext.mjs → plaintext.js} +4 -5
- package/dist/plaintext.js.map +1 -0
- package/dist/{plugin.d.mts → plugin.d.ts} +2 -2
- package/dist/plugin.d.ts.map +1 -0
- package/dist/{plugin.mjs → plugin.js} +8 -9
- package/dist/plugin.js.map +1 -0
- package/dist/plugins/postcss/{mergeMediaQueries.d.mts → mergeMediaQueries.d.ts} +2 -2
- package/dist/plugins/postcss/mergeMediaQueries.d.ts.map +1 -0
- package/dist/plugins/postcss/{mergeMediaQueries.mjs → mergeMediaQueries.js} +2 -3
- package/dist/plugins/postcss/mergeMediaQueries.js.map +1 -0
- package/dist/plugins/postcss/{pruneVars.d.mts → pruneVars.d.ts} +1 -1
- package/dist/plugins/postcss/pruneVars.d.ts.map +1 -0
- package/dist/plugins/postcss/{pruneVars.mjs → pruneVars.js} +2 -2
- package/dist/plugins/postcss/pruneVars.js.map +1 -0
- package/dist/plugins/postcss/quoteFontFamilies.d.ts +13 -0
- package/dist/plugins/postcss/quoteFontFamilies.d.ts.map +1 -0
- package/dist/plugins/postcss/quoteFontFamilies.js +84 -0
- package/dist/plugins/postcss/quoteFontFamilies.js.map +1 -0
- package/dist/plugins/postcss/{removeDeclarations.d.mts → removeDeclarations.d.ts} +1 -1
- package/dist/plugins/postcss/removeDeclarations.d.ts.map +1 -0
- package/dist/plugins/postcss/{removeDeclarations.mjs → removeDeclarations.js} +2 -2
- package/dist/plugins/postcss/removeDeclarations.js.map +1 -0
- package/dist/plugins/postcss/resolveMaizzleImports.d.ts +16 -0
- package/dist/plugins/postcss/resolveMaizzleImports.d.ts.map +1 -0
- package/dist/plugins/postcss/resolveMaizzleImports.js +39 -0
- package/dist/plugins/postcss/resolveMaizzleImports.js.map +1 -0
- package/dist/plugins/postcss/resolveProps.d.ts +8 -0
- package/dist/plugins/postcss/resolveProps.d.ts.map +1 -0
- package/dist/plugins/postcss/resolveProps.js +155 -0
- package/dist/plugins/postcss/resolveProps.js.map +1 -0
- package/dist/plugins/postcss/{tailwindCleanup.d.mts → tailwindCleanup.d.ts} +2 -2
- package/dist/plugins/postcss/tailwindCleanup.d.ts.map +1 -0
- package/dist/plugins/postcss/{tailwindCleanup.mjs → tailwindCleanup.js} +5 -3
- package/dist/plugins/postcss/tailwindCleanup.js.map +1 -0
- package/dist/prepare.d.ts +17 -0
- package/dist/prepare.d.ts.map +1 -0
- package/dist/prepare.js +44 -0
- package/dist/prepare.js.map +1 -0
- package/dist/render/active.d.ts +8 -0
- package/dist/render/active.d.ts.map +1 -0
- package/dist/render/active.js +12 -0
- package/dist/render/active.js.map +1 -0
- package/dist/render/buildTemplate.d.ts +49 -0
- package/dist/render/buildTemplate.d.ts.map +1 -0
- package/dist/render/buildTemplate.js +141 -0
- package/dist/render/buildTemplate.js.map +1 -0
- package/dist/render/{createRenderer.d.mts → createRenderer.d.ts} +14 -6
- package/dist/render/createRenderer.d.ts.map +1 -0
- package/dist/render/createRenderer.js +468 -0
- package/dist/render/createRenderer.js.map +1 -0
- package/dist/render/index.d.ts +18 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +59 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/injectFonts.d.ts +15 -0
- package/dist/render/injectFonts.d.ts.map +1 -0
- package/dist/render/injectFonts.js +45 -0
- package/dist/render/injectFonts.js.map +1 -0
- package/dist/render/parallel/buildWorker.d.ts +31 -0
- package/dist/render/parallel/buildWorker.d.ts.map +1 -0
- package/dist/render/parallel/buildWorker.js +66 -0
- package/dist/render/parallel/buildWorker.js.map +1 -0
- package/dist/render/parallel/worker.mjs +28 -0
- package/dist/render/plugins/codeBlockExtract.d.ts +14 -0
- package/dist/render/plugins/codeBlockExtract.d.ts.map +1 -0
- package/dist/render/plugins/codeBlockExtract.js +38 -0
- package/dist/render/plugins/codeBlockExtract.js.map +1 -0
- package/dist/render/plugins/markdownExtract.d.ts +12 -0
- package/dist/render/plugins/markdownExtract.d.ts.map +1 -0
- package/dist/render/plugins/markdownExtract.js +49 -0
- package/dist/render/plugins/markdownExtract.js.map +1 -0
- package/dist/render/plugins/rawExtract.d.ts +14 -0
- package/dist/render/plugins/rawExtract.d.ts.map +1 -0
- package/dist/render/plugins/rawExtract.js +34 -0
- package/dist/render/plugins/rawExtract.js.map +1 -0
- package/dist/render/plugins/rowSourceLocation.d.ts +18 -0
- package/dist/render/plugins/rowSourceLocation.d.ts.map +1 -0
- package/dist/render/plugins/rowSourceLocation.js +45 -0
- package/dist/render/plugins/rowSourceLocation.js.map +1 -0
- package/dist/{serve.d.mts → serve.d.ts} +5 -3
- package/dist/serve.d.ts.map +1 -0
- package/dist/{serve.mjs → serve.js} +248 -119
- package/dist/serve.js.map +1 -0
- package/dist/server/compatibility.d.ts +59 -0
- package/dist/server/compatibility.d.ts.map +1 -0
- package/dist/server/compatibility.js +959 -0
- package/dist/server/compatibility.js.map +1 -0
- package/dist/server/{email.d.mts → email.d.ts} +2 -2
- package/dist/server/email.d.ts.map +1 -0
- package/dist/server/{email.mjs → email.js} +2 -3
- package/dist/server/email.js.map +1 -0
- package/dist/server/linter.d.ts +20 -0
- package/dist/server/linter.d.ts.map +1 -0
- package/dist/server/linter.js +345 -0
- package/dist/server/linter.js.map +1 -0
- package/dist/server/sfc-utils.d.ts +21 -0
- package/dist/server/sfc-utils.d.ts.map +1 -0
- package/dist/server/sfc-utils.js +198 -0
- package/dist/server/sfc-utils.js.map +1 -0
- package/dist/server/ui/.vite/deps/@lucide_vue.js +44967 -0
- package/dist/server/ui/.vite/deps/@lucide_vue.js.map +1 -0
- package/dist/server/ui/.vite/deps/@vueuse_core.js +8155 -0
- package/dist/server/ui/.vite/deps/@vueuse_core.js.map +1 -0
- package/dist/server/ui/.vite/deps/@vueuse_shared.js +1859 -0
- package/dist/server/ui/.vite/deps/@vueuse_shared.js.map +1 -0
- package/dist/server/ui/.vite/deps/_metadata.json +78 -0
- package/dist/server/ui/.vite/deps/chunk-EAsCxrDo.js +14 -0
- package/dist/server/ui/.vite/deps/class-variance-authority.js +57 -0
- package/dist/server/ui/.vite/deps/class-variance-authority.js.map +1 -0
- package/dist/server/ui/.vite/deps/clsx.js +18 -0
- package/dist/server/ui/.vite/deps/clsx.js.map +1 -0
- package/dist/server/ui/.vite/deps/culori.js +4312 -0
- package/dist/server/ui/.vite/deps/culori.js.map +1 -0
- package/dist/server/ui/.vite/deps/package.json +3 -0
- package/dist/server/ui/.vite/deps/reka-ui.js +44464 -0
- package/dist/server/ui/.vite/deps/reka-ui.js.map +1 -0
- package/dist/server/ui/.vite/deps/tailwind-merge.js +3458 -0
- package/dist/server/ui/.vite/deps/tailwind-merge.js.map +1 -0
- package/dist/server/ui/.vite/deps/vue-router.js +6383 -0
- package/dist/server/ui/.vite/deps/vue-router.js.map +1 -0
- package/dist/server/ui/.vite/deps/vue.js +2 -0
- package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-N1X0OxKs.js +8800 -0
- package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-N1X0OxKs.js.map +1 -0
- package/dist/server/ui/App.vue +106 -66
- package/dist/server/ui/components/SidebarClose.vue +12 -0
- package/dist/server/ui/components/ui/checkbox/Checkbox.vue +1 -1
- package/dist/server/ui/components/ui/command/Command.vue +5 -1
- package/dist/server/ui/components/ui/command/CommandInput.vue +2 -2
- package/dist/server/ui/components/ui/dialog/DialogContent.vue +1 -1
- package/dist/server/ui/components/ui/dialog/DialogScrollContent.vue +1 -1
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +1 -1
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +1 -1
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +1 -1
- package/dist/server/ui/components/ui/input/Input.vue +1 -1
- package/dist/server/ui/components/ui/sheet/SheetContent.vue +1 -1
- package/dist/server/ui/components/ui/sidebar/SidebarTrigger.vue +2 -2
- package/dist/server/ui/components/ui/tags-input/TagsInputInput.vue +1 -1
- package/dist/server/ui/components/ui/tags-input/TagsInputItemDelete.vue +1 -1
- package/dist/server/ui/lib/emulated-dark-mode.ts +146 -0
- package/dist/server/ui/main.css +25 -0
- package/dist/server/ui/pages/Home.vue +1 -1
- package/dist/server/ui/pages/Preview.vue +377 -186
- package/dist/server/ui/vite-env.d.ts +1 -0
- package/dist/tests/render/_helpers.d.ts +6 -0
- package/dist/tests/render/_helpers.d.ts.map +1 -0
- package/dist/tests/render/_helpers.js +16 -0
- package/dist/tests/render/_helpers.js.map +1 -0
- package/dist/transformers/addAttributes.d.ts +42 -0
- package/dist/transformers/addAttributes.d.ts.map +1 -0
- package/dist/transformers/{addAttributes.mjs → addAttributes.js} +40 -24
- package/dist/transformers/addAttributes.js.map +1 -0
- package/dist/transformers/attributeToStyle.d.ts +38 -0
- package/dist/transformers/attributeToStyle.d.ts.map +1 -0
- package/dist/transformers/attributeToStyle.js +94 -0
- package/dist/transformers/attributeToStyle.js.map +1 -0
- package/dist/transformers/base.d.ts +71 -0
- package/dist/transformers/base.d.ts.map +1 -0
- package/dist/transformers/{base.mjs → base.js} +65 -40
- package/dist/transformers/base.js.map +1 -0
- package/dist/transformers/columnWidth.d.ts +31 -0
- package/dist/transformers/columnWidth.d.ts.map +1 -0
- package/dist/transformers/columnWidth.js +527 -0
- package/dist/transformers/columnWidth.js.map +1 -0
- package/dist/transformers/entities.d.ts +37 -0
- package/dist/transformers/entities.d.ts.map +1 -0
- package/dist/transformers/entities.js +74 -0
- package/dist/transformers/entities.js.map +1 -0
- package/dist/transformers/filters/{defaults.d.mts → defaults.d.ts} +1 -1
- package/dist/transformers/filters/defaults.d.ts.map +1 -0
- package/dist/transformers/filters/{defaults.mjs → defaults.js} +2 -2
- package/dist/transformers/filters/defaults.js.map +1 -0
- package/dist/transformers/filters/index.d.ts +43 -0
- package/dist/transformers/filters/index.d.ts.map +1 -0
- package/dist/transformers/filters/index.js +89 -0
- package/dist/transformers/filters/index.js.map +1 -0
- package/dist/transformers/format.d.ts +22 -0
- package/dist/transformers/format.d.ts.map +1 -0
- package/dist/transformers/format.js +30 -0
- package/dist/transformers/format.js.map +1 -0
- package/dist/transformers/imgWidth.d.ts +20 -0
- package/dist/transformers/imgWidth.d.ts.map +1 -0
- package/dist/transformers/imgWidth.js +76 -0
- package/dist/transformers/imgWidth.js.map +1 -0
- package/dist/transformers/{index.d.mts → index.d.ts} +4 -3
- package/dist/transformers/index.d.ts.map +1 -0
- package/dist/transformers/index.js +163 -0
- package/dist/transformers/index.js.map +1 -0
- package/dist/transformers/inlineCss.d.ts +85 -0
- package/dist/transformers/inlineCss.d.ts.map +1 -0
- package/dist/transformers/inlineCss.js +112 -0
- package/dist/transformers/inlineCss.js.map +1 -0
- package/dist/transformers/inlineLink.d.ts +35 -0
- package/dist/transformers/inlineLink.d.ts.map +1 -0
- package/dist/transformers/{inlineLink.mjs → inlineLink.js} +35 -11
- package/dist/transformers/inlineLink.js.map +1 -0
- package/dist/transformers/minify.d.ts +21 -0
- package/dist/transformers/minify.d.ts.map +1 -0
- package/dist/transformers/minify.js +25 -0
- package/dist/transformers/minify.js.map +1 -0
- package/dist/transformers/minifyCodeInline.d.ts +29 -0
- package/dist/transformers/minifyCodeInline.d.ts.map +1 -0
- package/dist/transformers/minifyCodeInline.js +36 -0
- package/dist/transformers/minifyCodeInline.js.map +1 -0
- package/dist/transformers/msoPlaceholders.d.ts +33 -0
- package/dist/transformers/msoPlaceholders.d.ts.map +1 -0
- package/dist/transformers/msoPlaceholders.js +114 -0
- package/dist/transformers/msoPlaceholders.js.map +1 -0
- package/dist/transformers/purgeCss.d.ts +43 -0
- package/dist/transformers/purgeCss.d.ts.map +1 -0
- package/dist/transformers/purgeCss.js +207 -0
- package/dist/transformers/purgeCss.js.map +1 -0
- package/dist/transformers/removeAttributes.d.ts +54 -0
- package/dist/transformers/removeAttributes.d.ts.map +1 -0
- package/dist/transformers/removeAttributes.js +72 -0
- package/dist/transformers/removeAttributes.js.map +1 -0
- package/dist/transformers/{replaceStrings.d.mts → replaceStrings.d.ts} +2 -2
- package/dist/transformers/replaceStrings.d.ts.map +1 -0
- package/dist/transformers/{replaceStrings.mjs → replaceStrings.js} +2 -2
- package/dist/transformers/replaceStrings.js.map +1 -0
- package/dist/transformers/safeSelectors.d.ts +37 -0
- package/dist/transformers/safeSelectors.d.ts.map +1 -0
- package/dist/transformers/{safeClassNames.mjs → safeSelectors.js} +40 -10
- package/dist/transformers/safeSelectors.js.map +1 -0
- package/dist/transformers/shorthandCss.d.ts +47 -0
- package/dist/transformers/shorthandCss.d.ts.map +1 -0
- package/dist/transformers/shorthandCss.js +92 -0
- package/dist/transformers/shorthandCss.js.map +1 -0
- package/dist/transformers/sixHex.d.ts +25 -0
- package/dist/transformers/sixHex.d.ts.map +1 -0
- package/dist/transformers/sixHex.js +42 -0
- package/dist/transformers/sixHex.js.map +1 -0
- package/dist/transformers/tailwindComponent.d.ts +16 -0
- package/dist/transformers/tailwindComponent.d.ts.map +1 -0
- package/dist/transformers/tailwindComponent.js +101 -0
- package/dist/transformers/tailwindComponent.js.map +1 -0
- package/dist/transformers/{tailwindcss.d.mts → tailwindcss.d.ts} +2 -2
- package/dist/transformers/tailwindcss.d.ts.map +1 -0
- package/dist/transformers/{tailwindcss.mjs → tailwindcss.js} +33 -74
- package/dist/transformers/tailwindcss.js.map +1 -0
- package/dist/transformers/urlQuery.d.ts +36 -0
- package/dist/transformers/urlQuery.d.ts.map +1 -0
- package/dist/transformers/urlQuery.js +77 -0
- package/dist/transformers/urlQuery.js.map +1 -0
- package/dist/types/{config.d.mts → config.d.ts} +231 -46
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +1 -0
- package/dist/utils/ast/index.d.ts +4 -0
- package/dist/utils/ast/index.js +4 -0
- package/dist/utils/ast/{parser.d.mts → parser.d.ts} +1 -1
- package/dist/utils/ast/parser.d.ts.map +1 -0
- package/dist/utils/ast/{parser.mjs → parser.js} +2 -3
- package/dist/utils/ast/parser.js.map +1 -0
- package/dist/utils/ast/{serializer.d.mts → serializer.d.ts} +1 -1
- package/dist/utils/ast/serializer.d.ts.map +1 -0
- package/dist/utils/ast/serializer.js +46 -0
- package/dist/utils/ast/serializer.js.map +1 -0
- package/dist/utils/ast/{walker.d.mts → walker.d.ts} +1 -1
- package/dist/utils/ast/walker.d.ts.map +1 -0
- package/dist/utils/ast/{walker.mjs → walker.js} +2 -2
- package/dist/utils/ast/walker.js.map +1 -0
- package/dist/utils/cloneConfig.d.ts +13 -0
- package/dist/utils/cloneConfig.d.ts.map +1 -0
- package/dist/utils/cloneConfig.js +21 -0
- package/dist/utils/cloneConfig.js.map +1 -0
- package/dist/utils/compileTailwindCss.d.ts +16 -0
- package/dist/utils/compileTailwindCss.d.ts.map +1 -0
- package/dist/utils/compileTailwindCss.js +55 -0
- package/dist/utils/compileTailwindCss.js.map +1 -0
- package/dist/utils/componentSources.d.ts +50 -0
- package/dist/utils/componentSources.d.ts.map +1 -0
- package/dist/utils/componentSources.js +50 -0
- package/dist/utils/componentSources.js.map +1 -0
- package/dist/utils/cssBox.d.ts +42 -0
- package/dist/utils/cssBox.d.ts.map +1 -0
- package/dist/utils/cssBox.js +151 -0
- package/dist/utils/cssBox.js.map +1 -0
- package/dist/utils/decodeStyleEntities.d.ts +15 -0
- package/dist/utils/decodeStyleEntities.d.ts.map +1 -0
- package/dist/utils/decodeStyleEntities.js +18 -0
- package/dist/utils/decodeStyleEntities.js.map +1 -0
- package/dist/utils/{detect.d.mts → detect.d.ts} +1 -1
- package/dist/utils/detect.d.ts.map +1 -0
- package/dist/utils/{detect.mjs → detect.js} +2 -3
- package/dist/utils/detect.js.map +1 -0
- package/dist/utils/output-markers.d.ts +29 -0
- package/dist/utils/output-markers.d.ts.map +1 -0
- package/dist/utils/output-markers.js +68 -0
- package/dist/utils/output-markers.js.map +1 -0
- package/dist/utils/{url.d.mts → url.d.ts} +1 -1
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/{url.mjs → url.js} +2 -3
- package/dist/utils/url.js.map +1 -0
- package/dist/utils/watchPaths.d.ts +11 -0
- package/dist/utils/watchPaths.d.ts.map +1 -0
- package/dist/utils/watchPaths.js +19 -0
- package/dist/utils/watchPaths.js.map +1 -0
- package/node_modules/@clack/core/CHANGELOG.md +44 -0
- package/node_modules/@clack/core/dist/index.d.mts +125 -5
- package/node_modules/@clack/core/dist/index.mjs +972 -11
- package/node_modules/@clack/core/package.json +6 -2
- package/node_modules/@clack/prompts/CHANGELOG.md +70 -0
- package/node_modules/@clack/prompts/README.md +129 -3
- package/node_modules/@clack/prompts/dist/index.d.mts +567 -33
- package/node_modules/@clack/prompts/dist/index.mjs +1378 -133
- package/node_modules/@clack/prompts/package.json +7 -4
- package/node_modules/fast-string-truncated-width/dist/index.js +36 -96
- package/node_modules/fast-string-truncated-width/dist/types.d.ts +0 -3
- package/node_modules/fast-string-truncated-width/dist/utils.d.ts +3 -3
- package/node_modules/fast-string-truncated-width/dist/utils.js +14 -9
- package/node_modules/fast-string-truncated-width/package.json +1 -1
- package/node_modules/fast-string-truncated-width/readme.md +2 -3
- package/node_modules/fast-string-width/package.json +2 -2
- package/node_modules/fast-string-width/readme.md +0 -3
- package/node_modules/fast-wrap-ansi/lib/main.js +4 -2
- package/node_modules/fast-wrap-ansi/package.json +11 -11
- package/node_modules/maizzle/README.md +24 -0
- package/node_modules/maizzle/dist/commands/make/component.mjs +1 -1
- package/node_modules/maizzle/dist/commands/make/config.mjs +8 -7
- package/node_modules/maizzle/dist/commands/make/layout.mjs +3 -3
- package/node_modules/maizzle/dist/commands/make/scaffold.mjs +1 -1
- package/node_modules/maizzle/dist/commands/make/stubs/Layout.vue +146 -0
- package/node_modules/maizzle/dist/commands/make/stubs/component.vue +2 -4
- package/node_modules/maizzle/dist/commands/make/stubs/config.ts +1 -5
- package/node_modules/maizzle/dist/commands/make/template.mjs +1 -1
- package/node_modules/maizzle/dist/commands/new.mjs +46 -135
- package/node_modules/maizzle/dist/index.d.mts +1 -0
- package/node_modules/maizzle/dist/index.mjs +30 -7
- package/node_modules/maizzle/package.json +5 -4
- package/node_modules/nypm/dist/cli.mjs +28 -5
- package/node_modules/nypm/dist/index.d.mts +0 -8
- package/node_modules/nypm/dist/index.mjs +27 -4
- package/node_modules/nypm/package.json +12 -12
- package/node_modules/tinyexec/README.md +9 -1
- package/node_modules/tinyexec/dist/main.d.mts +22 -7
- package/node_modules/tinyexec/dist/main.mjs +189 -491
- package/node_modules/tinyexec/package.json +14 -16
- package/package.json +38 -31
- package/dist/_virtual/_rolldown/runtime.mjs +0 -32
- package/dist/build.d.mts +0 -19
- package/dist/build.d.mts.map +0 -1
- package/dist/build.mjs +0 -141
- package/dist/build.mjs.map +0 -1
- package/dist/components/Divider.vue +0 -133
- package/dist/components/Image.vue +0 -70
- package/dist/components/Overlap.vue +0 -80
- package/dist/components/utils.d.mts +0 -5
- package/dist/components/utils.d.mts.map +0 -1
- package/dist/components/utils.mjs +0 -9
- package/dist/components/utils.mjs.map +0 -1
- package/dist/composables/defineConfig.d.mts +0 -14
- package/dist/composables/defineConfig.d.mts.map +0 -1
- package/dist/composables/defineConfig.mjs.map +0 -1
- package/dist/composables/renderContext.d.mts +0 -24
- package/dist/composables/renderContext.d.mts.map +0 -1
- package/dist/composables/renderContext.mjs +0 -6
- package/dist/composables/renderContext.mjs.map +0 -1
- package/dist/composables/useConfig.d.mts +0 -9
- package/dist/composables/useConfig.d.mts.map +0 -1
- package/dist/composables/useConfig.mjs +0 -13
- package/dist/composables/useConfig.mjs.map +0 -1
- package/dist/composables/useDoctype.d.mts.map +0 -1
- package/dist/composables/useDoctype.mjs.map +0 -1
- package/dist/composables/useEvent.d.mts.map +0 -1
- package/dist/composables/useEvent.mjs.map +0 -1
- package/dist/composables/usePlaintext.d.mts.map +0 -1
- package/dist/composables/usePlaintext.mjs.map +0 -1
- package/dist/composables/usePreviewText.d.mts +0 -24
- package/dist/composables/usePreviewText.d.mts.map +0 -1
- package/dist/composables/usePreviewText.mjs +0 -29
- package/dist/composables/usePreviewText.mjs.map +0 -1
- package/dist/config/defaults.d.mts.map +0 -1
- package/dist/config/defaults.mjs.map +0 -1
- package/dist/config/index.d.mts +0 -15
- package/dist/config/index.d.mts.map +0 -1
- package/dist/config/index.mjs +0 -71
- package/dist/config/index.mjs.map +0 -1
- package/dist/events/index.d.mts.map +0 -1
- package/dist/events/index.mjs.map +0 -1
- package/dist/index.d.mts +0 -31
- package/dist/index.mjs +0 -31
- package/dist/node_modules/picomatch/index.mjs +0 -13
- package/dist/node_modules/picomatch/index.mjs.map +0 -1
- package/dist/node_modules/picomatch/lib/constants.mjs +0 -174
- package/dist/node_modules/picomatch/lib/constants.mjs.map +0 -1
- package/dist/node_modules/picomatch/lib/parse.mjs +0 -1067
- package/dist/node_modules/picomatch/lib/parse.mjs.map +0 -1
- package/dist/node_modules/picomatch/lib/picomatch.mjs +0 -304
- package/dist/node_modules/picomatch/lib/picomatch.mjs.map +0 -1
- package/dist/node_modules/picomatch/lib/scan.mjs +0 -296
- package/dist/node_modules/picomatch/lib/scan.mjs.map +0 -1
- package/dist/node_modules/picomatch/lib/utils.mjs +0 -53
- package/dist/node_modules/picomatch/lib/utils.mjs.map +0 -1
- package/dist/plaintext.d.mts.map +0 -1
- package/dist/plaintext.mjs.map +0 -1
- package/dist/plugin.d.mts.map +0 -1
- package/dist/plugin.mjs.map +0 -1
- package/dist/plugins/postcss/mergeMediaQueries.d.mts.map +0 -1
- package/dist/plugins/postcss/mergeMediaQueries.mjs.map +0 -1
- package/dist/plugins/postcss/pruneVars.d.mts.map +0 -1
- package/dist/plugins/postcss/pruneVars.mjs.map +0 -1
- package/dist/plugins/postcss/removeDeclarations.d.mts.map +0 -1
- package/dist/plugins/postcss/removeDeclarations.mjs.map +0 -1
- package/dist/plugins/postcss/tailwindCleanup.d.mts.map +0 -1
- package/dist/plugins/postcss/tailwindCleanup.mjs.map +0 -1
- package/dist/render/createRenderer.d.mts.map +0 -1
- package/dist/render/createRenderer.mjs +0 -286
- package/dist/render/createRenderer.mjs.map +0 -1
- package/dist/render/index.d.mts +0 -26
- package/dist/render/index.d.mts.map +0 -1
- package/dist/render/index.mjs +0 -46
- package/dist/render/index.mjs.map +0 -1
- package/dist/serve.d.mts.map +0 -1
- package/dist/serve.mjs.map +0 -1
- package/dist/server/compatibility.d.mts +0 -5
- package/dist/server/compatibility.d.mts.map +0 -1
- package/dist/server/compatibility.mjs +0 -97
- package/dist/server/compatibility.mjs.map +0 -1
- package/dist/server/email.d.mts.map +0 -1
- package/dist/server/email.mjs.map +0 -1
- package/dist/server/linter.d.mts +0 -5
- package/dist/server/linter.d.mts.map +0 -1
- package/dist/server/linter.mjs +0 -189
- package/dist/server/linter.mjs.map +0 -1
- package/dist/transformers/addAttributes.d.mts +0 -32
- package/dist/transformers/addAttributes.d.mts.map +0 -1
- package/dist/transformers/addAttributes.mjs.map +0 -1
- package/dist/transformers/attributeToStyle.d.mts +0 -25
- package/dist/transformers/attributeToStyle.d.mts.map +0 -1
- package/dist/transformers/attributeToStyle.mjs +0 -80
- package/dist/transformers/attributeToStyle.mjs.map +0 -1
- package/dist/transformers/base.d.mts +0 -8
- package/dist/transformers/base.d.mts.map +0 -1
- package/dist/transformers/base.mjs.map +0 -1
- package/dist/transformers/entities.d.mts +0 -8
- package/dist/transformers/entities.d.mts.map +0 -1
- package/dist/transformers/entities.mjs +0 -41
- package/dist/transformers/entities.mjs.map +0 -1
- package/dist/transformers/filters/defaults.d.mts.map +0 -1
- package/dist/transformers/filters/defaults.mjs.map +0 -1
- package/dist/transformers/filters/index.d.mts +0 -22
- package/dist/transformers/filters/index.d.mts.map +0 -1
- package/dist/transformers/filters/index.mjs +0 -67
- package/dist/transformers/filters/index.mjs.map +0 -1
- package/dist/transformers/format.d.mts +0 -15
- package/dist/transformers/format.d.mts.map +0 -1
- package/dist/transformers/format.mjs +0 -26
- package/dist/transformers/format.mjs.map +0 -1
- package/dist/transformers/index.d.mts.map +0 -1
- package/dist/transformers/index.mjs +0 -81
- package/dist/transformers/index.mjs.map +0 -1
- package/dist/transformers/inlineCSS.d.mts +0 -17
- package/dist/transformers/inlineCSS.d.mts.map +0 -1
- package/dist/transformers/inlineCSS.mjs +0 -70
- package/dist/transformers/inlineCSS.mjs.map +0 -1
- package/dist/transformers/inlineLink.d.mts +0 -14
- package/dist/transformers/inlineLink.d.mts.map +0 -1
- package/dist/transformers/inlineLink.mjs.map +0 -1
- package/dist/transformers/minify.d.mts +0 -17
- package/dist/transformers/minify.d.mts.map +0 -1
- package/dist/transformers/minify.mjs +0 -24
- package/dist/transformers/minify.mjs.map +0 -1
- package/dist/transformers/purgeCSS.d.mts +0 -23
- package/dist/transformers/purgeCSS.d.mts.map +0 -1
- package/dist/transformers/purgeCSS.mjs +0 -132
- package/dist/transformers/purgeCSS.mjs.map +0 -1
- package/dist/transformers/removeAttributes.d.mts +0 -31
- package/dist/transformers/removeAttributes.d.mts.map +0 -1
- package/dist/transformers/removeAttributes.mjs +0 -63
- package/dist/transformers/removeAttributes.mjs.map +0 -1
- package/dist/transformers/replaceStrings.d.mts.map +0 -1
- package/dist/transformers/replaceStrings.mjs.map +0 -1
- package/dist/transformers/safeClassNames.d.mts +0 -22
- package/dist/transformers/safeClassNames.d.mts.map +0 -1
- package/dist/transformers/safeClassNames.mjs.map +0 -1
- package/dist/transformers/shorthandCSS.d.mts +0 -24
- package/dist/transformers/shorthandCSS.d.mts.map +0 -1
- package/dist/transformers/shorthandCSS.mjs +0 -48
- package/dist/transformers/shorthandCSS.mjs.map +0 -1
- package/dist/transformers/sixHex.d.mts +0 -16
- package/dist/transformers/sixHex.d.mts.map +0 -1
- package/dist/transformers/sixHex.mjs +0 -30
- package/dist/transformers/sixHex.mjs.map +0 -1
- package/dist/transformers/tailwindcss.d.mts.map +0 -1
- package/dist/transformers/tailwindcss.mjs.map +0 -1
- package/dist/transformers/urlQuery.d.mts +0 -24
- package/dist/transformers/urlQuery.d.mts.map +0 -1
- package/dist/transformers/urlQuery.mjs +0 -65
- package/dist/transformers/urlQuery.mjs.map +0 -1
- package/dist/types/config.d.mts.map +0 -1
- package/dist/types/config.mjs +0 -1
- package/dist/types/index.d.mts +0 -2
- package/dist/types/index.mjs +0 -1
- package/dist/utils/ast/index.d.mts +0 -4
- package/dist/utils/ast/index.mjs +0 -5
- package/dist/utils/ast/parser.d.mts.map +0 -1
- package/dist/utils/ast/parser.mjs.map +0 -1
- package/dist/utils/ast/serializer.d.mts.map +0 -1
- package/dist/utils/ast/serializer.mjs +0 -37
- package/dist/utils/ast/serializer.mjs.map +0 -1
- package/dist/utils/ast/walker.d.mts.map +0 -1
- package/dist/utils/ast/walker.mjs.map +0 -1
- package/dist/utils/detect.d.mts.map +0 -1
- package/dist/utils/detect.mjs.map +0 -1
- package/dist/utils/url.d.mts.map +0 -1
- package/dist/utils/url.mjs.map +0 -1
- package/node_modules/@clack/core/dist/index.mjs.map +0 -1
- package/node_modules/@clack/prompts/dist/index.mjs.map +0 -1
- package/node_modules/fast-wrap-ansi/lib/main.js.map +0 -1
- package/node_modules/maizzle/dist/commands/make/stubs/layout.vue +0 -39
- package/node_modules/tinyexec/dist/LICENSES.txt +0 -83
|
@@ -1,28 +1,49 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { createRenderer } from "./render/createRenderer.
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
1
|
+
import { resolveConfig } from "./config/index.js";
|
|
2
|
+
import { EventManager } from "./events/index.js";
|
|
3
|
+
import { normalizeComponentSources } from "./utils/componentSources.js";
|
|
4
|
+
import { createRenderer } from "./render/createRenderer.js";
|
|
5
|
+
import { runTransformers } from "./transformers/index.js";
|
|
6
|
+
import { createPlaintext } from "./plaintext.js";
|
|
7
|
+
import { stripForHtml, stripForPlaintext } from "./utils/output-markers.js";
|
|
8
|
+
import { _setCurrentTemplate } from "./composables/useCurrentTemplate.js";
|
|
9
|
+
import { cloneConfig } from "./utils/cloneConfig.js";
|
|
10
|
+
import { setActiveRenderer } from "./render/active.js";
|
|
11
|
+
import { serveLint } from "./server/linter.js";
|
|
12
|
+
import { serveCompatibility } from "./server/compatibility.js";
|
|
13
|
+
import { sendEmail } from "./server/email.js";
|
|
14
|
+
import { createWatchedFileMatcher } from "./utils/watchPaths.js";
|
|
10
15
|
import { createRequire } from "node:module";
|
|
11
16
|
import { readFileSync } from "node:fs";
|
|
12
|
-
import { basename, dirname, resolve } from "node:path";
|
|
13
|
-
import { glob } from "tinyglobby";
|
|
17
|
+
import { basename, dirname, parse, resolve } from "node:path";
|
|
14
18
|
import { fileURLToPath } from "node:url";
|
|
19
|
+
import { glob } from "tinyglobby";
|
|
15
20
|
import { createLogger, createServer } from "vite";
|
|
16
21
|
import vue from "@vitejs/plugin-vue";
|
|
22
|
+
import { renderUnicodeCompact } from "uqr";
|
|
17
23
|
import tailwindcss from "@tailwindcss/vite";
|
|
18
24
|
import { createHighlighter } from "shiki";
|
|
19
|
-
|
|
20
25
|
//#region src/serve.ts
|
|
21
|
-
var import_picomatch = /* @__PURE__ */ __toESM(require_picomatch(), 1);
|
|
22
26
|
const devUIDir = resolve(dirname(fileURLToPath(import.meta.url)), "server/ui");
|
|
23
27
|
const require = createRequire(import.meta.url);
|
|
24
|
-
const
|
|
25
|
-
const
|
|
28
|
+
const pkg = (name) => {
|
|
29
|
+
const resolved = require.resolve(name).replace(/\\/g, "/");
|
|
30
|
+
const marker = `node_modules/${name}`;
|
|
31
|
+
const idx = resolved.lastIndexOf(marker);
|
|
32
|
+
return resolved.slice(0, idx + marker.length);
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Resolve a package's ESM entry via its `exports` map. Aliasing to the
|
|
36
|
+
* package directory bypasses `exports` (it only keys off the bare name),
|
|
37
|
+
* so directory resolution can fall back to a UMD/CJS bundle — which Vite 8
|
|
38
|
+
* flags `needsInterop` and then default-imports, breaking ESM-only deps
|
|
39
|
+
* like culori (named exports, no default). Point the alias at the real
|
|
40
|
+
* ESM entry instead.
|
|
41
|
+
*/
|
|
42
|
+
const pkgEsmEntry = (name) => {
|
|
43
|
+
const dir = pkg(name);
|
|
44
|
+
const pj = JSON.parse(readFileSync(resolve(dir, "package.json"), "utf-8"));
|
|
45
|
+
return resolve(dir, pj.exports?.["."]?.import ?? pj.module ?? pj.main);
|
|
46
|
+
};
|
|
26
47
|
/**
|
|
27
48
|
* Start the Maizzle dev server.
|
|
28
49
|
*
|
|
@@ -35,20 +56,29 @@ const vuePkgDir = dirname(require.resolve("vue/package.json"));
|
|
|
35
56
|
async function serve(options = {}) {
|
|
36
57
|
const start = performance.now();
|
|
37
58
|
let config = await resolveConfig(options.config);
|
|
38
|
-
const port = config.server?.port ?? 3e3;
|
|
59
|
+
const port = options.port ?? config.server?.port ?? 3e3;
|
|
39
60
|
let renderer = await createRenderer({
|
|
40
61
|
dts: true,
|
|
41
62
|
markdown: config.markdown,
|
|
42
63
|
root: config.root,
|
|
43
|
-
componentDirs:
|
|
64
|
+
componentDirs: normalizeComponentSources(config.components?.source, process.cwd()),
|
|
44
65
|
vite: config.vite
|
|
45
66
|
});
|
|
67
|
+
/**
|
|
68
|
+
* Register so user-land render() calls reuse this renderer instead of
|
|
69
|
+
* spinning up another Vite SSR server (which collides when the host
|
|
70
|
+
* app is itself a Vite dev process — e.g. TanStack Start).
|
|
71
|
+
*/
|
|
72
|
+
setActiveRenderer(renderer);
|
|
73
|
+
const events = new EventManager();
|
|
74
|
+
events.registerConfig(config);
|
|
75
|
+
await events.fireBeforeCreate({ config });
|
|
46
76
|
const server = await createServer({
|
|
47
77
|
configFile: false,
|
|
48
78
|
plugins: [
|
|
49
79
|
vue(),
|
|
50
80
|
tailwindcss(),
|
|
51
|
-
maizzleDevPlugin(config, renderer, options.config)
|
|
81
|
+
maizzleDevPlugin(config, renderer, events, options.config)
|
|
52
82
|
],
|
|
53
83
|
resolve: {
|
|
54
84
|
dedupe: ["vue"],
|
|
@@ -59,40 +89,25 @@ async function serve(options = {}) {
|
|
|
59
89
|
},
|
|
60
90
|
{
|
|
61
91
|
find: "vue",
|
|
62
|
-
replacement: resolve(
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
find: "vue-router",
|
|
66
|
-
replacement: resolve(frameworkNodeModules, "vue-router")
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
find: "reka-ui",
|
|
70
|
-
replacement: resolve(frameworkNodeModules, "reka-ui")
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
find: "@vueuse/core",
|
|
74
|
-
replacement: resolve(frameworkNodeModules, "@vueuse/core")
|
|
92
|
+
replacement: resolve(pkg("vue"), "dist/vue.runtime.esm-bundler.js")
|
|
75
93
|
},
|
|
76
94
|
{
|
|
77
|
-
find: "
|
|
78
|
-
replacement:
|
|
95
|
+
find: "culori",
|
|
96
|
+
replacement: pkgEsmEntry("culori")
|
|
79
97
|
},
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
find: "tailwind-merge",
|
|
94
|
-
replacement: resolve(frameworkNodeModules, "tailwind-merge")
|
|
95
|
-
}
|
|
98
|
+
...[
|
|
99
|
+
"vue-router",
|
|
100
|
+
"reka-ui",
|
|
101
|
+
"@vueuse/core",
|
|
102
|
+
"@vueuse/shared",
|
|
103
|
+
"@lucide/vue",
|
|
104
|
+
"class-variance-authority",
|
|
105
|
+
"clsx",
|
|
106
|
+
"tailwind-merge"
|
|
107
|
+
].map((name) => ({
|
|
108
|
+
find: name,
|
|
109
|
+
replacement: pkg(name)
|
|
110
|
+
}))
|
|
96
111
|
]
|
|
97
112
|
},
|
|
98
113
|
cacheDir: resolve(devUIDir, ".vite"),
|
|
@@ -101,13 +116,14 @@ async function serve(options = {}) {
|
|
|
101
116
|
include: [
|
|
102
117
|
"vue",
|
|
103
118
|
"vue-router",
|
|
104
|
-
"lucide
|
|
119
|
+
"@lucide/vue",
|
|
105
120
|
"@vueuse/core",
|
|
106
121
|
"@vueuse/shared",
|
|
107
122
|
"reka-ui",
|
|
108
123
|
"class-variance-authority",
|
|
109
124
|
"clsx",
|
|
110
|
-
"tailwind-merge"
|
|
125
|
+
"tailwind-merge",
|
|
126
|
+
"culori"
|
|
111
127
|
]
|
|
112
128
|
},
|
|
113
129
|
server: {
|
|
@@ -117,13 +133,25 @@ async function serve(options = {}) {
|
|
|
117
133
|
process.cwd(),
|
|
118
134
|
config.root ?? process.cwd(),
|
|
119
135
|
devUIDir,
|
|
120
|
-
|
|
136
|
+
...[
|
|
137
|
+
"vue",
|
|
138
|
+
"vue-router",
|
|
139
|
+
"reka-ui",
|
|
140
|
+
"@vueuse/core",
|
|
141
|
+
"@vueuse/shared",
|
|
142
|
+
"@lucide/vue",
|
|
143
|
+
"class-variance-authority",
|
|
144
|
+
"clsx",
|
|
145
|
+
"tailwind-merge",
|
|
146
|
+
"culori"
|
|
147
|
+
].map(pkg)
|
|
121
148
|
] }
|
|
122
149
|
},
|
|
123
150
|
customLogger: customLogger()
|
|
124
151
|
});
|
|
125
152
|
const originalClose = server.close.bind(server);
|
|
126
153
|
server.close = async () => {
|
|
154
|
+
setActiveRenderer(null);
|
|
127
155
|
await renderer.close();
|
|
128
156
|
return originalClose();
|
|
129
157
|
};
|
|
@@ -136,13 +164,18 @@ async function serve(options = {}) {
|
|
|
136
164
|
/**
|
|
137
165
|
* Internal Vite plugin that adds Maizzle middleware and file watching to the dev UI server.
|
|
138
166
|
*/
|
|
139
|
-
function maizzleDevPlugin(config, renderer, configInput) {
|
|
167
|
+
function maizzleDevPlugin(config, renderer, events, configInput) {
|
|
140
168
|
return {
|
|
141
169
|
name: "maizzle:dev",
|
|
142
170
|
enforce: "pre",
|
|
143
171
|
hotUpdate: {
|
|
144
172
|
order: "pre",
|
|
145
173
|
handler({ file }) {
|
|
174
|
+
/**
|
|
175
|
+
* Prevent Tailwind/Vue from triggering a full reload for email template
|
|
176
|
+
* files. Maizzle handles these via custom HMR events in the
|
|
177
|
+
* watcher below.
|
|
178
|
+
*/
|
|
146
179
|
if (isTemplateFile(file)) return [];
|
|
147
180
|
}
|
|
148
181
|
},
|
|
@@ -156,62 +189,96 @@ function maizzleDevPlugin(config, renderer, configInput) {
|
|
|
156
189
|
];
|
|
157
190
|
const userWatchPaths = config.server?.watch ?? [];
|
|
158
191
|
const watchPaths = [...defaultWatchPaths, ...userWatchPaths];
|
|
159
|
-
const isWatchedFile = (
|
|
192
|
+
const isWatchedFile = createWatchedFileMatcher(watchPaths, process.cwd());
|
|
160
193
|
for (const watchPath of watchPaths) server.watcher.add(watchPath);
|
|
161
|
-
|
|
194
|
+
/**
|
|
195
|
+
* Serialize watcher work onto one chain. The change handler closes and
|
|
196
|
+
* recreates the renderer across awaits; without serialization a second
|
|
197
|
+
* event firing mid-reload closes a stale renderer and leaks the new one.
|
|
198
|
+
* Errors are caught so one failed task doesn't break the chain.
|
|
199
|
+
*/
|
|
200
|
+
let watcherChain = Promise.resolve();
|
|
201
|
+
const enqueue = (task) => {
|
|
202
|
+
watcherChain = watcherChain.then(task).catch((err) => {
|
|
203
|
+
console.error("[maizzle] watcher task failed:", err);
|
|
204
|
+
});
|
|
205
|
+
return watcherChain;
|
|
206
|
+
};
|
|
207
|
+
server.watcher.on("add", (file) => enqueue(async () => {
|
|
162
208
|
if (isTemplateFile(file)) {
|
|
163
209
|
await renderer.invalidateAll();
|
|
210
|
+
bumpGeneration();
|
|
164
211
|
server.ws.send({
|
|
165
212
|
type: "custom",
|
|
166
213
|
event: "maizzle:templates-changed"
|
|
167
214
|
});
|
|
168
215
|
}
|
|
169
|
-
});
|
|
170
|
-
server.watcher.on("unlink", async (
|
|
216
|
+
}));
|
|
217
|
+
server.watcher.on("unlink", (file) => enqueue(async () => {
|
|
171
218
|
if (isTemplateFile(file)) {
|
|
172
219
|
await renderer.invalidateAll();
|
|
220
|
+
bumpGeneration();
|
|
173
221
|
server.ws.send({
|
|
174
222
|
type: "custom",
|
|
175
223
|
event: "maizzle:templates-changed"
|
|
176
224
|
});
|
|
177
225
|
}
|
|
178
|
-
});
|
|
179
|
-
server.watcher.on("change", async (
|
|
226
|
+
}));
|
|
227
|
+
server.watcher.on("change", (file) => enqueue(async () => {
|
|
180
228
|
if (isWatchedFile(file)) {
|
|
181
229
|
config = await resolveConfig(configInput);
|
|
230
|
+
events.clear();
|
|
231
|
+
events.registerConfig(config);
|
|
182
232
|
await renderer.close();
|
|
183
233
|
renderer = await createRenderer({
|
|
184
234
|
dts: true,
|
|
185
235
|
markdown: config.markdown,
|
|
186
236
|
root: config.root,
|
|
187
|
-
componentDirs:
|
|
237
|
+
componentDirs: normalizeComponentSources(config.components?.source, process.cwd()),
|
|
188
238
|
vite: config.vite
|
|
189
239
|
});
|
|
240
|
+
setActiveRenderer(renderer);
|
|
241
|
+
/**
|
|
242
|
+
* Push UI-relevant config bits so the dev UI reacts to live edits
|
|
243
|
+
* without a page reload. Uses the same shape as the initial
|
|
244
|
+
* inject.
|
|
245
|
+
*/
|
|
246
|
+
server.ws.send({
|
|
247
|
+
type: "custom",
|
|
248
|
+
event: "maizzle:config-updated",
|
|
249
|
+
data: buildUiConfig(config)
|
|
250
|
+
});
|
|
190
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* Invalidate all renderer modules so component and config changes
|
|
254
|
+
* are picked up on the next render (Tailwind recompiles with
|
|
255
|
+
* fresh content).
|
|
256
|
+
*/
|
|
191
257
|
await renderer.invalidateAll();
|
|
258
|
+
bumpGeneration();
|
|
192
259
|
if (isTemplateFile(file) || isWatchedFile(file)) server.ws.send({
|
|
193
260
|
type: "custom",
|
|
194
261
|
event: "maizzle:template-updated",
|
|
195
262
|
data: { file }
|
|
196
263
|
});
|
|
197
|
-
});
|
|
264
|
+
}));
|
|
198
265
|
server.middlewares.use(async (req, res, next) => {
|
|
199
266
|
const url = req.url || "/";
|
|
200
267
|
if (url === "/__maizzle/templates") return serveTemplateList(config, res);
|
|
201
|
-
if (url.startsWith("/__maizzle/render/")) return await serveRenderedTemplate(url, config, renderer, res);
|
|
202
|
-
if (url.startsWith("/__maizzle/source/")) return await serveHighlightedSource(url, config, renderer, res);
|
|
203
|
-
if (url
|
|
204
|
-
if (url.startsWith("/__maizzle/lint/")) return serveLint(url, res);
|
|
268
|
+
if (url.startsWith("/__maizzle/render/")) return await serveRenderedTemplate(url, config, renderer, events, res);
|
|
269
|
+
if (url.startsWith("/__maizzle/source/")) return await serveHighlightedSource(url, config, renderer, events, res);
|
|
270
|
+
if (url.startsWith("/__maizzle/compatibility/")) return await serveCompatibility(url, res, config, normalizeComponentSources(config.components?.source, process.cwd()));
|
|
271
|
+
if (url.startsWith("/__maizzle/lint/")) return await serveLint(url, res, config, normalizeComponentSources(config.components?.source, process.cwd()));
|
|
205
272
|
if (url.startsWith("/__maizzle/vue-source/")) return await serveVueSource(url, config, res);
|
|
206
|
-
if (url.startsWith("/__maizzle/plaintext/")) return await servePlaintext(url, config, renderer, res);
|
|
207
|
-
if (url.startsWith("/__maizzle/stats/")) return await serveStats(url, config, renderer, res);
|
|
208
|
-
if (url.startsWith("/__maizzle/email/") && req.method === "POST") return await serveEmailEndpoint(url, req, res, config, renderer);
|
|
273
|
+
if (url.startsWith("/__maizzle/plaintext/")) return await servePlaintext(url, config, renderer, events, res);
|
|
274
|
+
if (url.startsWith("/__maizzle/stats/")) return await serveStats(url, config, renderer, events, res);
|
|
275
|
+
if (url.startsWith("/__maizzle/email/") && req.method === "POST") return await serveEmailEndpoint(url, req, res, config, renderer, events);
|
|
209
276
|
if (url === "/__maizzle/email-config") return serveEmailConfig(config, res);
|
|
210
277
|
next();
|
|
211
278
|
});
|
|
212
279
|
return () => {
|
|
213
280
|
server.middlewares.use(async (req, res, next) => {
|
|
214
|
-
if (isNavigationRequest(req)) return await serveDevUI(server, res, req.url || "/");
|
|
281
|
+
if (isNavigationRequest(req)) return await serveDevUI(server, res, req.url || "/", config);
|
|
215
282
|
next();
|
|
216
283
|
});
|
|
217
284
|
};
|
|
@@ -225,10 +292,20 @@ function isNavigationRequest(req) {
|
|
|
225
292
|
const accept = req.headers?.accept || "";
|
|
226
293
|
return req.method === "GET" && accept.includes("text/html");
|
|
227
294
|
}
|
|
228
|
-
|
|
295
|
+
/**
|
|
296
|
+
* Shape exposed to the dev UI both at initial HTML load (as
|
|
297
|
+
* `window.__MAIZZLE_CONFIG__`) and on the `maizzle:config-updated` HMR event.
|
|
298
|
+
* Add UI-visible config bits here; consumers on both ends pick up automatically.
|
|
299
|
+
*/
|
|
300
|
+
function buildUiConfig(config) {
|
|
301
|
+
return { checks: config.server?.checks ?? true };
|
|
302
|
+
}
|
|
303
|
+
async function serveDevUI(server, res, url, config) {
|
|
229
304
|
let indexHtml = readFileSync(resolve(devUIDir, "index.html"), "utf-8");
|
|
230
305
|
indexHtml = indexHtml.replace("./main.ts", `/@fs/${resolve(devUIDir, "main.ts")}`);
|
|
231
306
|
indexHtml = indexHtml.replace("./favicon.svg", `/@fs/${resolve(devUIDir, "favicon.svg")}`);
|
|
307
|
+
const configScript = `<script>window.__MAIZZLE_CONFIG__ = ${JSON.stringify(buildUiConfig(config))};<\/script>`;
|
|
308
|
+
indexHtml = indexHtml.replace("</head>", `${configScript}</head>`);
|
|
232
309
|
const transformed = await server.transformIndexHtml(url, indexHtml);
|
|
233
310
|
res.setHeader("Content-Type", "text/html");
|
|
234
311
|
res.end(transformed);
|
|
@@ -243,9 +320,77 @@ async function serveTemplateList(config, res) {
|
|
|
243
320
|
res.end(JSON.stringify(data));
|
|
244
321
|
}
|
|
245
322
|
/**
|
|
323
|
+
* Render-result memo for the dev server. A single template save makes the
|
|
324
|
+
* browser fire several endpoint requests in parallel (render, source, stats,
|
|
325
|
+
* plaintext, email) that each need the same SSR render + transformer output.
|
|
326
|
+
* Keying the in-flight Promise by `${generation}:${path}` collapses those into
|
|
327
|
+
* one render and dedupes concurrent requests. The watcher bumps the generation
|
|
328
|
+
* (and clears the cache) on every file/config change, so results never go
|
|
329
|
+
* stale. Each endpoint applies its own tail step (doctype prepend, strip,
|
|
330
|
+
* highlight, …) on top of `rawHtml`, keeping output byte-identical.
|
|
331
|
+
*/
|
|
332
|
+
let renderGeneration = 0;
|
|
333
|
+
const renderCache = /* @__PURE__ */ new Map();
|
|
334
|
+
function bumpGeneration() {
|
|
335
|
+
renderGeneration++;
|
|
336
|
+
renderCache.clear();
|
|
337
|
+
}
|
|
338
|
+
function getRendered(absolutePath, config, renderer, events) {
|
|
339
|
+
const key = `${renderGeneration}:${absolutePath}`;
|
|
340
|
+
let promise = renderCache.get(key);
|
|
341
|
+
if (!promise) {
|
|
342
|
+
promise = (async () => {
|
|
343
|
+
_setCurrentTemplate(parse(absolutePath));
|
|
344
|
+
try {
|
|
345
|
+
/**
|
|
346
|
+
* Mirror the build's per-template event pipeline (see buildTemplate)
|
|
347
|
+
* so dev preview fires the same beforeRender / afterRender /
|
|
348
|
+
* afterTransform hooks and matches production output. Clone config so
|
|
349
|
+
* beforeRender mutations stay scoped to this render.
|
|
350
|
+
*/
|
|
351
|
+
const renderConfig = cloneConfig(config);
|
|
352
|
+
const template = {
|
|
353
|
+
source: readFileSync(absolutePath, "utf-8"),
|
|
354
|
+
path: parse(absolutePath)
|
|
355
|
+
};
|
|
356
|
+
const originalSource = template.source;
|
|
357
|
+
await events.fireBeforeRender({
|
|
358
|
+
config: renderConfig,
|
|
359
|
+
template
|
|
360
|
+
});
|
|
361
|
+
const rendered = await renderer.render(absolutePath, renderConfig, template.source !== originalSource ? { source: template.source } : void 0);
|
|
362
|
+
for (const { name, handler } of rendered.sfcEventHandlers) events.on(name, handler);
|
|
363
|
+
const templateConfig = rendered.templateConfig;
|
|
364
|
+
let html = await events.fireAfterRender({
|
|
365
|
+
config: templateConfig,
|
|
366
|
+
template,
|
|
367
|
+
html: rendered.html
|
|
368
|
+
});
|
|
369
|
+
const doctype = rendered.doctype ?? templateConfig.doctype ?? "<!DOCTYPE html>";
|
|
370
|
+
if (templateConfig.useTransformers !== false) html = await runTransformers(html, templateConfig, absolutePath, doctype, rendered.tailwindBlocks);
|
|
371
|
+
return {
|
|
372
|
+
rawHtml: await events.fireAfterTransform({
|
|
373
|
+
config: templateConfig,
|
|
374
|
+
template,
|
|
375
|
+
html
|
|
376
|
+
}),
|
|
377
|
+
doctype,
|
|
378
|
+
templateConfig,
|
|
379
|
+
rendered
|
|
380
|
+
};
|
|
381
|
+
} finally {
|
|
382
|
+
_setCurrentTemplate(void 0);
|
|
383
|
+
events.clearSfcHandlers();
|
|
384
|
+
}
|
|
385
|
+
})();
|
|
386
|
+
renderCache.set(key, promise);
|
|
387
|
+
}
|
|
388
|
+
return promise;
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
246
391
|
* SSR render a .vue template using the Renderer (not the dev UI server).
|
|
247
392
|
*/
|
|
248
|
-
async function serveRenderedTemplate(url, config, renderer, res) {
|
|
393
|
+
async function serveRenderedTemplate(url, config, renderer, events, res) {
|
|
249
394
|
const templateSlug = url.replace("/__maizzle/render/", "").replace(/\?.*$/, "");
|
|
250
395
|
const match = (await glob(config.content ?? ["emails/**/*.vue"])).find((t) => t.replace(/\.(vue|md)$/, "") === templateSlug);
|
|
251
396
|
if (!match) {
|
|
@@ -253,17 +398,13 @@ async function serveRenderedTemplate(url, config, renderer, res) {
|
|
|
253
398
|
res.end("Template not found");
|
|
254
399
|
return;
|
|
255
400
|
}
|
|
401
|
+
const absolutePath = resolve(match);
|
|
256
402
|
try {
|
|
257
|
-
const
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
let html = rendered.html;
|
|
261
|
-
const templateConfig = rendered.templateConfig;
|
|
262
|
-
const doctype = rendered.doctype ?? templateConfig.doctype ?? "<!DOCTYPE html>";
|
|
263
|
-
html = await runTransformers(html, templateConfig, absolutePath, doctype);
|
|
264
|
-
html = `${doctype}\n${html}`;
|
|
403
|
+
const { rawHtml, doctype } = await getRendered(absolutePath, config, renderer, events);
|
|
404
|
+
let html = rawHtml;
|
|
405
|
+
if (doctype) html = `${doctype}\n${html}`;
|
|
265
406
|
res.setHeader("Content-Type", "text/html");
|
|
266
|
-
res.end(html);
|
|
407
|
+
res.end(stripForHtml(html));
|
|
267
408
|
} catch (error) {
|
|
268
409
|
res.statusCode = 500;
|
|
269
410
|
res.end(`<pre>${error.stack || error.message}</pre>`);
|
|
@@ -277,7 +418,7 @@ async function getHighlighter() {
|
|
|
277
418
|
});
|
|
278
419
|
return highlighter;
|
|
279
420
|
}
|
|
280
|
-
async function serveHighlightedSource(url, config, renderer, res) {
|
|
421
|
+
async function serveHighlightedSource(url, config, renderer, events, res) {
|
|
281
422
|
const templateSlug = url.replace("/__maizzle/source/", "").replace(/\?.*$/, "");
|
|
282
423
|
const match = (await glob(config.content ?? ["emails/**/*.vue"])).find((t) => t.replace(/\.(vue|md)$/, "") === templateSlug);
|
|
283
424
|
if (!match) {
|
|
@@ -285,15 +426,10 @@ async function serveHighlightedSource(url, config, renderer, res) {
|
|
|
285
426
|
res.end("Template not found");
|
|
286
427
|
return;
|
|
287
428
|
}
|
|
429
|
+
const absolutePath = resolve(match);
|
|
288
430
|
try {
|
|
289
|
-
const
|
|
290
|
-
|
|
291
|
-
const rendered = await renderer.render(absolutePath, config);
|
|
292
|
-
let html = rendered.html;
|
|
293
|
-
const templateConfig = rendered.templateConfig;
|
|
294
|
-
const doctype = rendered.doctype ?? templateConfig.doctype ?? "<!DOCTYPE html>";
|
|
295
|
-
html = await runTransformers(html, templateConfig, absolutePath, doctype);
|
|
296
|
-
html = `${doctype}\n${html}`;
|
|
431
|
+
const { rawHtml, doctype } = await getRendered(absolutePath, config, renderer, events);
|
|
432
|
+
const html = stripForHtml(doctype ? `${doctype}\n${rawHtml}` : rawHtml);
|
|
297
433
|
const highlighted = (await getHighlighter()).codeToHtml(html, {
|
|
298
434
|
lang: "html",
|
|
299
435
|
theme: "laserwave",
|
|
@@ -333,7 +469,7 @@ async function serveVueSource(url, config, res) {
|
|
|
333
469
|
res.end(`<pre>${error.stack || error.message}</pre>`);
|
|
334
470
|
}
|
|
335
471
|
}
|
|
336
|
-
async function servePlaintext(url, config, renderer, res) {
|
|
472
|
+
async function servePlaintext(url, config, renderer, events, res) {
|
|
337
473
|
const templateSlug = url.replace("/__maizzle/plaintext/", "").replace(/\?.*$/, "");
|
|
338
474
|
const match = (await glob(config.content ?? ["emails/**/*.vue"])).find((t) => t.replace(/\.(vue|md)$/, "") === templateSlug);
|
|
339
475
|
if (!match) {
|
|
@@ -341,15 +477,10 @@ async function servePlaintext(url, config, renderer, res) {
|
|
|
341
477
|
res.end("Template not found");
|
|
342
478
|
return;
|
|
343
479
|
}
|
|
480
|
+
const absolutePath = resolve(match);
|
|
344
481
|
try {
|
|
345
|
-
const
|
|
346
|
-
|
|
347
|
-
const rendered = await renderer.render(absolutePath, config);
|
|
348
|
-
let html = rendered.html;
|
|
349
|
-
const templateConfig = rendered.templateConfig;
|
|
350
|
-
const doctype = rendered.doctype ?? templateConfig.doctype ?? "<!DOCTYPE html>";
|
|
351
|
-
html = await runTransformers(html, templateConfig, absolutePath, doctype);
|
|
352
|
-
const plaintext = createPlaintext(html);
|
|
482
|
+
const { rawHtml } = await getRendered(absolutePath, config, renderer, events);
|
|
483
|
+
const plaintext = createPlaintext(stripForPlaintext(rawHtml));
|
|
353
484
|
res.setHeader("Content-Type", "text/plain");
|
|
354
485
|
res.end(plaintext);
|
|
355
486
|
} catch (error) {
|
|
@@ -378,7 +509,7 @@ function humanFileSize(bytes, si = false, dp = 2) {
|
|
|
378
509
|
} while (Math.round(Math.abs(bytes) * r) / r >= threshold && u < units.length - 1);
|
|
379
510
|
return bytes.toFixed(dp) + " " + units[u];
|
|
380
511
|
}
|
|
381
|
-
async function serveStats(url, config, renderer, res) {
|
|
512
|
+
async function serveStats(url, config, renderer, events, res) {
|
|
382
513
|
const templateSlug = url.replace("/__maizzle/stats/", "").replace(/\?.*$/, "");
|
|
383
514
|
const match = (await glob(config.content ?? ["emails/**/*.vue"])).find((t) => t.replace(/\.(vue|md)$/, "") === templateSlug);
|
|
384
515
|
if (!match) {
|
|
@@ -386,15 +517,11 @@ async function serveStats(url, config, renderer, res) {
|
|
|
386
517
|
res.end(JSON.stringify({ error: "Template not found" }));
|
|
387
518
|
return;
|
|
388
519
|
}
|
|
520
|
+
const absolutePath = resolve(match);
|
|
389
521
|
try {
|
|
390
|
-
const
|
|
391
|
-
|
|
392
|
-
const
|
|
393
|
-
let html = rendered.html;
|
|
394
|
-
const templateConfig = rendered.templateConfig;
|
|
395
|
-
const doctype = rendered.doctype ?? templateConfig.doctype ?? "<!DOCTYPE html>";
|
|
396
|
-
html = await runTransformers(html, templateConfig, absolutePath, doctype);
|
|
397
|
-
const sizeBytes = Buffer.byteLength(html, "utf-8");
|
|
522
|
+
const { rawHtml } = await getRendered(absolutePath, config, renderer, events);
|
|
523
|
+
const html = stripForHtml(rawHtml);
|
|
524
|
+
const sizeBytes = new TextEncoder().encode(html).length;
|
|
398
525
|
const totalImages = (html.match(/<img\b[^>]*>/gi) || []).length + (html.match(/url\s*\([^)]+\)/gi) || []).length;
|
|
399
526
|
const links = (html.match(/<a\b[^>]*href\s*=/gi) || []).length;
|
|
400
527
|
res.setHeader("Content-Type", "application/json");
|
|
@@ -411,7 +538,7 @@ async function serveStats(url, config, renderer, res) {
|
|
|
411
538
|
res.end(JSON.stringify({ error: error.message }));
|
|
412
539
|
}
|
|
413
540
|
}
|
|
414
|
-
async function serveEmailEndpoint(url, req, res, config, renderer) {
|
|
541
|
+
async function serveEmailEndpoint(url, req, res, config, renderer, events) {
|
|
415
542
|
const templateSlug = url.replace("/__maizzle/email/", "").replace(/\?.*$/, "");
|
|
416
543
|
const match = (await glob(config.content ?? ["emails/**/*.vue"])).find((t) => t.replace(/\.(vue|md)$/, "") === templateSlug);
|
|
417
544
|
if (!match) {
|
|
@@ -443,16 +570,12 @@ async function serveEmailEndpoint(url, req, res, config, renderer) {
|
|
|
443
570
|
}));
|
|
444
571
|
return;
|
|
445
572
|
}
|
|
573
|
+
const absolutePath = resolve(match);
|
|
446
574
|
try {
|
|
447
|
-
const
|
|
448
|
-
|
|
449
|
-
const
|
|
450
|
-
|
|
451
|
-
const templateConfig = rendered.templateConfig;
|
|
452
|
-
const doctype = rendered.doctype ?? templateConfig.doctype ?? "<!DOCTYPE html>";
|
|
453
|
-
html = await runTransformers(html, templateConfig, absolutePath, doctype);
|
|
454
|
-
html = `${doctype}\n${html}`;
|
|
455
|
-
const text = createPlaintext(html);
|
|
575
|
+
const { rawHtml, doctype, templateConfig } = await getRendered(absolutePath, config, renderer, events);
|
|
576
|
+
let html = doctype ? `${doctype}\n${rawHtml}` : rawHtml;
|
|
577
|
+
const text = createPlaintext(stripForPlaintext(html));
|
|
578
|
+
html = stripForHtml(html);
|
|
456
579
|
const result = await sendEmail({
|
|
457
580
|
to: payload.to,
|
|
458
581
|
subject: payload.subject,
|
|
@@ -482,6 +605,12 @@ function serveEmailConfig(config, res) {
|
|
|
482
605
|
function printBanner(server, startupTime) {
|
|
483
606
|
const info = server.config.logger.info;
|
|
484
607
|
const time = startupTime ?? server._maizzleStartupTime;
|
|
608
|
+
const networkUrl = server.resolvedUrls?.network[0];
|
|
609
|
+
if (networkUrl) {
|
|
610
|
+
const qr = renderUnicodeCompact(networkUrl, { border: 1 });
|
|
611
|
+
info("");
|
|
612
|
+
info(qr.split("\n").map((line) => ` ${line}`).join("\n"));
|
|
613
|
+
}
|
|
485
614
|
info("");
|
|
486
615
|
info(` \x1b[32m\x1b[1mMAIZZLE\x1b[0m\x1b[32m v6.0.0\x1b[0m \x1b[2mready in\x1b[0m \x1b[1m${time}\x1b[0m ms`);
|
|
487
616
|
info("");
|
|
@@ -497,7 +626,7 @@ function customLogger() {
|
|
|
497
626
|
};
|
|
498
627
|
return logger;
|
|
499
628
|
}
|
|
500
|
-
|
|
501
629
|
//#endregion
|
|
502
630
|
export { printBanner, serve };
|
|
503
|
-
|
|
631
|
+
|
|
632
|
+
//# sourceMappingURL=serve.js.map
|