@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.
- 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 +71 -21
- package/dist/components/Link.vue +1 -1
- package/dist/components/Markdown.vue +56 -23
- 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 +24 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/{index.mjs → index.js} +45 -14
- 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} +16 -13
- 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} +29 -5
- 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} +17 -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} +207 -106
- 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-DaqjATE_.js +8785 -0
- package/dist/server/ui/.vite/deps/vue.runtime.esm-bundler-DaqjATE_.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} +14 -12
- 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} +270 -40
- 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 -30
- package/dist/build.d.mts +0 -19
- package/dist/build.d.mts.map +0 -1
- package/dist/build.mjs +0 -140
- 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.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 -30
- package/dist/index.mjs +0 -30
- 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 -279
- 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 -45
- 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 -78
- 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/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,25 +1,47 @@
|
|
|
1
|
-
import { resolveConfig } from "./config/index.
|
|
2
|
-
import {
|
|
3
|
-
import { createRenderer } from "./render/createRenderer.
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { resolveConfig } from "./config/index.js";
|
|
2
|
+
import { normalizeComponentSources } from "./utils/componentSources.js";
|
|
3
|
+
import { createRenderer } from "./render/createRenderer.js";
|
|
4
|
+
import { runTransformers } from "./transformers/index.js";
|
|
5
|
+
import { createPlaintext } from "./plaintext.js";
|
|
6
|
+
import { stripForHtml, stripForPlaintext } from "./utils/output-markers.js";
|
|
7
|
+
import { _setCurrentTemplate } from "./composables/useCurrentTemplate.js";
|
|
8
|
+
import { setActiveRenderer } from "./render/active.js";
|
|
9
|
+
import { serveLint } from "./server/linter.js";
|
|
10
|
+
import { serveCompatibility } from "./server/compatibility.js";
|
|
11
|
+
import { sendEmail } from "./server/email.js";
|
|
12
|
+
import { createWatchedFileMatcher } from "./utils/watchPaths.js";
|
|
8
13
|
import { createRequire } from "node:module";
|
|
9
14
|
import { readFileSync } from "node:fs";
|
|
10
|
-
import { basename, dirname, resolve } from "node:path";
|
|
11
|
-
import { glob } from "tinyglobby";
|
|
15
|
+
import { basename, dirname, parse, resolve } from "node:path";
|
|
12
16
|
import { fileURLToPath } from "node:url";
|
|
17
|
+
import { glob } from "tinyglobby";
|
|
13
18
|
import { createLogger, createServer } from "vite";
|
|
14
19
|
import vue from "@vitejs/plugin-vue";
|
|
20
|
+
import { renderUnicodeCompact } from "uqr";
|
|
15
21
|
import tailwindcss from "@tailwindcss/vite";
|
|
16
22
|
import { createHighlighter } from "shiki";
|
|
17
|
-
|
|
18
23
|
//#region src/serve.ts
|
|
19
24
|
const devUIDir = resolve(dirname(fileURLToPath(import.meta.url)), "server/ui");
|
|
20
25
|
const require = createRequire(import.meta.url);
|
|
21
|
-
const
|
|
22
|
-
const
|
|
26
|
+
const pkg = (name) => {
|
|
27
|
+
const resolved = require.resolve(name).replace(/\\/g, "/");
|
|
28
|
+
const marker = `node_modules/${name}`;
|
|
29
|
+
const idx = resolved.lastIndexOf(marker);
|
|
30
|
+
return resolved.slice(0, idx + marker.length);
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Resolve a package's ESM entry via its `exports` map. Aliasing to the
|
|
34
|
+
* package directory bypasses `exports` (it only keys off the bare name),
|
|
35
|
+
* so directory resolution can fall back to a UMD/CJS bundle — which Vite 8
|
|
36
|
+
* flags `needsInterop` and then default-imports, breaking ESM-only deps
|
|
37
|
+
* like culori (named exports, no default). Point the alias at the real
|
|
38
|
+
* ESM entry instead.
|
|
39
|
+
*/
|
|
40
|
+
const pkgEsmEntry = (name) => {
|
|
41
|
+
const dir = pkg(name);
|
|
42
|
+
const pj = JSON.parse(readFileSync(resolve(dir, "package.json"), "utf-8"));
|
|
43
|
+
return resolve(dir, pj.exports?.["."]?.import ?? pj.module ?? pj.main);
|
|
44
|
+
};
|
|
23
45
|
/**
|
|
24
46
|
* Start the Maizzle dev server.
|
|
25
47
|
*
|
|
@@ -32,13 +54,20 @@ const vuePkgDir = dirname(require.resolve("vue/package.json"));
|
|
|
32
54
|
async function serve(options = {}) {
|
|
33
55
|
const start = performance.now();
|
|
34
56
|
let config = await resolveConfig(options.config);
|
|
35
|
-
const port = config.server?.port ?? 3e3;
|
|
57
|
+
const port = options.port ?? config.server?.port ?? 3e3;
|
|
36
58
|
let renderer = await createRenderer({
|
|
37
59
|
dts: true,
|
|
38
60
|
markdown: config.markdown,
|
|
39
61
|
root: config.root,
|
|
40
|
-
componentDirs:
|
|
62
|
+
componentDirs: normalizeComponentSources(config.components?.source, process.cwd()),
|
|
63
|
+
vite: config.vite
|
|
41
64
|
});
|
|
65
|
+
/**
|
|
66
|
+
* Register so user-land render() calls reuse this renderer instead of
|
|
67
|
+
* spinning up another Vite SSR server (which collides when the host
|
|
68
|
+
* app is itself a Vite dev process — e.g. TanStack Start).
|
|
69
|
+
*/
|
|
70
|
+
setActiveRenderer(renderer);
|
|
42
71
|
const server = await createServer({
|
|
43
72
|
configFile: false,
|
|
44
73
|
plugins: [
|
|
@@ -55,40 +84,25 @@ async function serve(options = {}) {
|
|
|
55
84
|
},
|
|
56
85
|
{
|
|
57
86
|
find: "vue",
|
|
58
|
-
replacement: resolve(
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
find: "vue-router",
|
|
62
|
-
replacement: resolve(frameworkNodeModules, "vue-router")
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
find: "reka-ui",
|
|
66
|
-
replacement: resolve(frameworkNodeModules, "reka-ui")
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
find: "@vueuse/core",
|
|
70
|
-
replacement: resolve(frameworkNodeModules, "@vueuse/core")
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
find: "@vueuse/shared",
|
|
74
|
-
replacement: resolve(frameworkNodeModules, "@vueuse/shared")
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
find: "lucide-vue-next",
|
|
78
|
-
replacement: resolve(frameworkNodeModules, "lucide-vue-next")
|
|
87
|
+
replacement: resolve(pkg("vue"), "dist/vue.runtime.esm-bundler.js")
|
|
79
88
|
},
|
|
80
89
|
{
|
|
81
|
-
find: "
|
|
82
|
-
replacement:
|
|
90
|
+
find: "culori",
|
|
91
|
+
replacement: pkgEsmEntry("culori")
|
|
83
92
|
},
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
93
|
+
...[
|
|
94
|
+
"vue-router",
|
|
95
|
+
"reka-ui",
|
|
96
|
+
"@vueuse/core",
|
|
97
|
+
"@vueuse/shared",
|
|
98
|
+
"@lucide/vue",
|
|
99
|
+
"class-variance-authority",
|
|
100
|
+
"clsx",
|
|
101
|
+
"tailwind-merge"
|
|
102
|
+
].map((name) => ({
|
|
103
|
+
find: name,
|
|
104
|
+
replacement: pkg(name)
|
|
105
|
+
}))
|
|
92
106
|
]
|
|
93
107
|
},
|
|
94
108
|
cacheDir: resolve(devUIDir, ".vite"),
|
|
@@ -97,13 +111,14 @@ async function serve(options = {}) {
|
|
|
97
111
|
include: [
|
|
98
112
|
"vue",
|
|
99
113
|
"vue-router",
|
|
100
|
-
"lucide
|
|
114
|
+
"@lucide/vue",
|
|
101
115
|
"@vueuse/core",
|
|
102
116
|
"@vueuse/shared",
|
|
103
117
|
"reka-ui",
|
|
104
118
|
"class-variance-authority",
|
|
105
119
|
"clsx",
|
|
106
|
-
"tailwind-merge"
|
|
120
|
+
"tailwind-merge",
|
|
121
|
+
"culori"
|
|
107
122
|
]
|
|
108
123
|
},
|
|
109
124
|
server: {
|
|
@@ -113,13 +128,25 @@ async function serve(options = {}) {
|
|
|
113
128
|
process.cwd(),
|
|
114
129
|
config.root ?? process.cwd(),
|
|
115
130
|
devUIDir,
|
|
116
|
-
|
|
131
|
+
...[
|
|
132
|
+
"vue",
|
|
133
|
+
"vue-router",
|
|
134
|
+
"reka-ui",
|
|
135
|
+
"@vueuse/core",
|
|
136
|
+
"@vueuse/shared",
|
|
137
|
+
"@lucide/vue",
|
|
138
|
+
"class-variance-authority",
|
|
139
|
+
"clsx",
|
|
140
|
+
"tailwind-merge",
|
|
141
|
+
"culori"
|
|
142
|
+
].map(pkg)
|
|
117
143
|
] }
|
|
118
144
|
},
|
|
119
145
|
customLogger: customLogger()
|
|
120
146
|
});
|
|
121
147
|
const originalClose = server.close.bind(server);
|
|
122
148
|
server.close = async () => {
|
|
149
|
+
setActiveRenderer(null);
|
|
123
150
|
await renderer.close();
|
|
124
151
|
return originalClose();
|
|
125
152
|
};
|
|
@@ -139,6 +166,11 @@ function maizzleDevPlugin(config, renderer, configInput) {
|
|
|
139
166
|
hotUpdate: {
|
|
140
167
|
order: "pre",
|
|
141
168
|
handler({ file }) {
|
|
169
|
+
/**
|
|
170
|
+
* Prevent Tailwind/Vue from triggering a full reload for email template
|
|
171
|
+
* files. Maizzle handles these via custom HMR events in the
|
|
172
|
+
* watcher below.
|
|
173
|
+
*/
|
|
142
174
|
if (isTemplateFile(file)) return [];
|
|
143
175
|
}
|
|
144
176
|
},
|
|
@@ -147,54 +179,89 @@ function maizzleDevPlugin(config, renderer, configInput) {
|
|
|
147
179
|
"maizzle.config.js",
|
|
148
180
|
"maizzle.config.ts",
|
|
149
181
|
"tailwind.config.js",
|
|
150
|
-
"tailwind.config.ts"
|
|
182
|
+
"tailwind.config.ts",
|
|
183
|
+
"locales/**"
|
|
151
184
|
];
|
|
152
185
|
const userWatchPaths = config.server?.watch ?? [];
|
|
153
186
|
const watchPaths = [...defaultWatchPaths, ...userWatchPaths];
|
|
187
|
+
const isWatchedFile = createWatchedFileMatcher(watchPaths, process.cwd());
|
|
154
188
|
for (const watchPath of watchPaths) server.watcher.add(watchPath);
|
|
155
|
-
|
|
189
|
+
/**
|
|
190
|
+
* Serialize watcher work onto one chain. The change handler closes and
|
|
191
|
+
* recreates the renderer across awaits; without serialization a second
|
|
192
|
+
* event firing mid-reload closes a stale renderer and leaks the new one.
|
|
193
|
+
* Errors are caught so one failed task doesn't break the chain.
|
|
194
|
+
*/
|
|
195
|
+
let watcherChain = Promise.resolve();
|
|
196
|
+
const enqueue = (task) => {
|
|
197
|
+
watcherChain = watcherChain.then(task).catch((err) => {
|
|
198
|
+
console.error("[maizzle] watcher task failed:", err);
|
|
199
|
+
});
|
|
200
|
+
return watcherChain;
|
|
201
|
+
};
|
|
202
|
+
server.watcher.on("add", (file) => enqueue(async () => {
|
|
156
203
|
if (isTemplateFile(file)) {
|
|
157
204
|
await renderer.invalidateAll();
|
|
205
|
+
bumpGeneration();
|
|
158
206
|
server.ws.send({
|
|
159
207
|
type: "custom",
|
|
160
208
|
event: "maizzle:templates-changed"
|
|
161
209
|
});
|
|
162
210
|
}
|
|
163
|
-
});
|
|
164
|
-
server.watcher.on("unlink", async (
|
|
211
|
+
}));
|
|
212
|
+
server.watcher.on("unlink", (file) => enqueue(async () => {
|
|
165
213
|
if (isTemplateFile(file)) {
|
|
166
214
|
await renderer.invalidateAll();
|
|
215
|
+
bumpGeneration();
|
|
167
216
|
server.ws.send({
|
|
168
217
|
type: "custom",
|
|
169
218
|
event: "maizzle:templates-changed"
|
|
170
219
|
});
|
|
171
220
|
}
|
|
172
|
-
});
|
|
173
|
-
server.watcher.on("change", async (
|
|
174
|
-
if (
|
|
221
|
+
}));
|
|
222
|
+
server.watcher.on("change", (file) => enqueue(async () => {
|
|
223
|
+
if (isWatchedFile(file)) {
|
|
175
224
|
config = await resolveConfig(configInput);
|
|
176
225
|
await renderer.close();
|
|
177
226
|
renderer = await createRenderer({
|
|
178
227
|
dts: true,
|
|
179
228
|
markdown: config.markdown,
|
|
180
229
|
root: config.root,
|
|
181
|
-
componentDirs:
|
|
230
|
+
componentDirs: normalizeComponentSources(config.components?.source, process.cwd()),
|
|
231
|
+
vite: config.vite
|
|
232
|
+
});
|
|
233
|
+
setActiveRenderer(renderer);
|
|
234
|
+
/**
|
|
235
|
+
* Push UI-relevant config bits so the dev UI reacts to live edits
|
|
236
|
+
* without a page reload. Uses the same shape as the initial
|
|
237
|
+
* inject.
|
|
238
|
+
*/
|
|
239
|
+
server.ws.send({
|
|
240
|
+
type: "custom",
|
|
241
|
+
event: "maizzle:config-updated",
|
|
242
|
+
data: buildUiConfig(config)
|
|
182
243
|
});
|
|
183
244
|
}
|
|
245
|
+
/**
|
|
246
|
+
* Invalidate all renderer modules so component and config changes
|
|
247
|
+
* are picked up on the next render (Tailwind recompiles with
|
|
248
|
+
* fresh content).
|
|
249
|
+
*/
|
|
184
250
|
await renderer.invalidateAll();
|
|
185
|
-
|
|
251
|
+
bumpGeneration();
|
|
252
|
+
if (isTemplateFile(file) || isWatchedFile(file)) server.ws.send({
|
|
186
253
|
type: "custom",
|
|
187
254
|
event: "maizzle:template-updated",
|
|
188
255
|
data: { file }
|
|
189
256
|
});
|
|
190
|
-
});
|
|
257
|
+
}));
|
|
191
258
|
server.middlewares.use(async (req, res, next) => {
|
|
192
259
|
const url = req.url || "/";
|
|
193
260
|
if (url === "/__maizzle/templates") return serveTemplateList(config, res);
|
|
194
261
|
if (url.startsWith("/__maizzle/render/")) return await serveRenderedTemplate(url, config, renderer, res);
|
|
195
262
|
if (url.startsWith("/__maizzle/source/")) return await serveHighlightedSource(url, config, renderer, res);
|
|
196
|
-
if (url
|
|
197
|
-
if (url.startsWith("/__maizzle/lint/")) return serveLint(url, res);
|
|
263
|
+
if (url.startsWith("/__maizzle/compatibility/")) return await serveCompatibility(url, res, config, normalizeComponentSources(config.components?.source, process.cwd()));
|
|
264
|
+
if (url.startsWith("/__maizzle/lint/")) return await serveLint(url, res, config, normalizeComponentSources(config.components?.source, process.cwd()));
|
|
198
265
|
if (url.startsWith("/__maizzle/vue-source/")) return await serveVueSource(url, config, res);
|
|
199
266
|
if (url.startsWith("/__maizzle/plaintext/")) return await servePlaintext(url, config, renderer, res);
|
|
200
267
|
if (url.startsWith("/__maizzle/stats/")) return await serveStats(url, config, renderer, res);
|
|
@@ -204,7 +271,7 @@ function maizzleDevPlugin(config, renderer, configInput) {
|
|
|
204
271
|
});
|
|
205
272
|
return () => {
|
|
206
273
|
server.middlewares.use(async (req, res, next) => {
|
|
207
|
-
if (isNavigationRequest(req)) return await serveDevUI(server, res, req.url || "/");
|
|
274
|
+
if (isNavigationRequest(req)) return await serveDevUI(server, res, req.url || "/", config);
|
|
208
275
|
next();
|
|
209
276
|
});
|
|
210
277
|
};
|
|
@@ -218,10 +285,20 @@ function isNavigationRequest(req) {
|
|
|
218
285
|
const accept = req.headers?.accept || "";
|
|
219
286
|
return req.method === "GET" && accept.includes("text/html");
|
|
220
287
|
}
|
|
221
|
-
|
|
288
|
+
/**
|
|
289
|
+
* Shape exposed to the dev UI both at initial HTML load (as
|
|
290
|
+
* `window.__MAIZZLE_CONFIG__`) and on the `maizzle:config-updated` HMR event.
|
|
291
|
+
* Add UI-visible config bits here; consumers on both ends pick up automatically.
|
|
292
|
+
*/
|
|
293
|
+
function buildUiConfig(config) {
|
|
294
|
+
return { checks: config.server?.checks ?? true };
|
|
295
|
+
}
|
|
296
|
+
async function serveDevUI(server, res, url, config) {
|
|
222
297
|
let indexHtml = readFileSync(resolve(devUIDir, "index.html"), "utf-8");
|
|
223
298
|
indexHtml = indexHtml.replace("./main.ts", `/@fs/${resolve(devUIDir, "main.ts")}`);
|
|
224
299
|
indexHtml = indexHtml.replace("./favicon.svg", `/@fs/${resolve(devUIDir, "favicon.svg")}`);
|
|
300
|
+
const configScript = `<script>window.__MAIZZLE_CONFIG__ = ${JSON.stringify(buildUiConfig(config))};<\/script>`;
|
|
301
|
+
indexHtml = indexHtml.replace("</head>", `${configScript}</head>`);
|
|
225
302
|
const transformed = await server.transformIndexHtml(url, indexHtml);
|
|
226
303
|
res.setHeader("Content-Type", "text/html");
|
|
227
304
|
res.end(transformed);
|
|
@@ -236,6 +313,46 @@ async function serveTemplateList(config, res) {
|
|
|
236
313
|
res.end(JSON.stringify(data));
|
|
237
314
|
}
|
|
238
315
|
/**
|
|
316
|
+
* Render-result memo for the dev server. A single template save makes the
|
|
317
|
+
* browser fire several endpoint requests in parallel (render, source, stats,
|
|
318
|
+
* plaintext, email) that each need the same SSR render + transformer output.
|
|
319
|
+
* Keying the in-flight Promise by `${generation}:${path}` collapses those into
|
|
320
|
+
* one render and dedupes concurrent requests. The watcher bumps the generation
|
|
321
|
+
* (and clears the cache) on every file/config change, so results never go
|
|
322
|
+
* stale. Each endpoint applies its own tail step (doctype prepend, strip,
|
|
323
|
+
* highlight, …) on top of `rawHtml`, keeping output byte-identical.
|
|
324
|
+
*/
|
|
325
|
+
let renderGeneration = 0;
|
|
326
|
+
const renderCache = /* @__PURE__ */ new Map();
|
|
327
|
+
function bumpGeneration() {
|
|
328
|
+
renderGeneration++;
|
|
329
|
+
renderCache.clear();
|
|
330
|
+
}
|
|
331
|
+
function getRendered(absolutePath, config, renderer) {
|
|
332
|
+
const key = `${renderGeneration}:${absolutePath}`;
|
|
333
|
+
let promise = renderCache.get(key);
|
|
334
|
+
if (!promise) {
|
|
335
|
+
promise = (async () => {
|
|
336
|
+
_setCurrentTemplate(parse(absolutePath));
|
|
337
|
+
try {
|
|
338
|
+
const rendered = await renderer.render(absolutePath, config);
|
|
339
|
+
const templateConfig = rendered.templateConfig;
|
|
340
|
+
const doctype = rendered.doctype ?? templateConfig.doctype ?? "<!DOCTYPE html>";
|
|
341
|
+
return {
|
|
342
|
+
rawHtml: await runTransformers(rendered.html, templateConfig, absolutePath, doctype, rendered.tailwindBlocks),
|
|
343
|
+
doctype,
|
|
344
|
+
templateConfig,
|
|
345
|
+
rendered
|
|
346
|
+
};
|
|
347
|
+
} finally {
|
|
348
|
+
_setCurrentTemplate(void 0);
|
|
349
|
+
}
|
|
350
|
+
})();
|
|
351
|
+
renderCache.set(key, promise);
|
|
352
|
+
}
|
|
353
|
+
return promise;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
239
356
|
* SSR render a .vue template using the Renderer (not the dev UI server).
|
|
240
357
|
*/
|
|
241
358
|
async function serveRenderedTemplate(url, config, renderer, res) {
|
|
@@ -246,17 +363,13 @@ async function serveRenderedTemplate(url, config, renderer, res) {
|
|
|
246
363
|
res.end("Template not found");
|
|
247
364
|
return;
|
|
248
365
|
}
|
|
366
|
+
const absolutePath = resolve(match);
|
|
249
367
|
try {
|
|
250
|
-
const
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
let html = rendered.html;
|
|
254
|
-
const templateConfig = rendered.templateConfig;
|
|
255
|
-
const doctype = rendered.doctype ?? templateConfig.doctype ?? "<!DOCTYPE html>";
|
|
256
|
-
html = await runTransformers(html, templateConfig, absolutePath, doctype);
|
|
257
|
-
html = `${doctype}\n${html}`;
|
|
368
|
+
const { rawHtml, doctype } = await getRendered(absolutePath, config, renderer);
|
|
369
|
+
let html = rawHtml;
|
|
370
|
+
if (doctype) html = `${doctype}\n${html}`;
|
|
258
371
|
res.setHeader("Content-Type", "text/html");
|
|
259
|
-
res.end(html);
|
|
372
|
+
res.end(stripForHtml(html));
|
|
260
373
|
} catch (error) {
|
|
261
374
|
res.statusCode = 500;
|
|
262
375
|
res.end(`<pre>${error.stack || error.message}</pre>`);
|
|
@@ -278,15 +391,10 @@ async function serveHighlightedSource(url, config, renderer, res) {
|
|
|
278
391
|
res.end("Template not found");
|
|
279
392
|
return;
|
|
280
393
|
}
|
|
394
|
+
const absolutePath = resolve(match);
|
|
281
395
|
try {
|
|
282
|
-
const
|
|
283
|
-
|
|
284
|
-
const rendered = await renderer.render(absolutePath, config);
|
|
285
|
-
let html = rendered.html;
|
|
286
|
-
const templateConfig = rendered.templateConfig;
|
|
287
|
-
const doctype = rendered.doctype ?? templateConfig.doctype ?? "<!DOCTYPE html>";
|
|
288
|
-
html = await runTransformers(html, templateConfig, absolutePath, doctype);
|
|
289
|
-
html = `${doctype}\n${html}`;
|
|
396
|
+
const { rawHtml, doctype } = await getRendered(absolutePath, config, renderer);
|
|
397
|
+
const html = stripForHtml(doctype ? `${doctype}\n${rawHtml}` : rawHtml);
|
|
290
398
|
const highlighted = (await getHighlighter()).codeToHtml(html, {
|
|
291
399
|
lang: "html",
|
|
292
400
|
theme: "laserwave",
|
|
@@ -334,15 +442,10 @@ async function servePlaintext(url, config, renderer, res) {
|
|
|
334
442
|
res.end("Template not found");
|
|
335
443
|
return;
|
|
336
444
|
}
|
|
445
|
+
const absolutePath = resolve(match);
|
|
337
446
|
try {
|
|
338
|
-
const
|
|
339
|
-
|
|
340
|
-
const rendered = await renderer.render(absolutePath, config);
|
|
341
|
-
let html = rendered.html;
|
|
342
|
-
const templateConfig = rendered.templateConfig;
|
|
343
|
-
const doctype = rendered.doctype ?? templateConfig.doctype ?? "<!DOCTYPE html>";
|
|
344
|
-
html = await runTransformers(html, templateConfig, absolutePath, doctype);
|
|
345
|
-
const plaintext = createPlaintext(html);
|
|
447
|
+
const { rawHtml } = await getRendered(absolutePath, config, renderer);
|
|
448
|
+
const plaintext = createPlaintext(stripForPlaintext(rawHtml));
|
|
346
449
|
res.setHeader("Content-Type", "text/plain");
|
|
347
450
|
res.end(plaintext);
|
|
348
451
|
} catch (error) {
|
|
@@ -379,15 +482,11 @@ async function serveStats(url, config, renderer, res) {
|
|
|
379
482
|
res.end(JSON.stringify({ error: "Template not found" }));
|
|
380
483
|
return;
|
|
381
484
|
}
|
|
485
|
+
const absolutePath = resolve(match);
|
|
382
486
|
try {
|
|
383
|
-
const
|
|
384
|
-
|
|
385
|
-
const
|
|
386
|
-
let html = rendered.html;
|
|
387
|
-
const templateConfig = rendered.templateConfig;
|
|
388
|
-
const doctype = rendered.doctype ?? templateConfig.doctype ?? "<!DOCTYPE html>";
|
|
389
|
-
html = await runTransformers(html, templateConfig, absolutePath, doctype);
|
|
390
|
-
const sizeBytes = Buffer.byteLength(html, "utf-8");
|
|
487
|
+
const { rawHtml } = await getRendered(absolutePath, config, renderer);
|
|
488
|
+
const html = stripForHtml(rawHtml);
|
|
489
|
+
const sizeBytes = new TextEncoder().encode(html).length;
|
|
391
490
|
const totalImages = (html.match(/<img\b[^>]*>/gi) || []).length + (html.match(/url\s*\([^)]+\)/gi) || []).length;
|
|
392
491
|
const links = (html.match(/<a\b[^>]*href\s*=/gi) || []).length;
|
|
393
492
|
res.setHeader("Content-Type", "application/json");
|
|
@@ -436,16 +535,12 @@ async function serveEmailEndpoint(url, req, res, config, renderer) {
|
|
|
436
535
|
}));
|
|
437
536
|
return;
|
|
438
537
|
}
|
|
538
|
+
const absolutePath = resolve(match);
|
|
439
539
|
try {
|
|
440
|
-
const
|
|
441
|
-
|
|
442
|
-
const
|
|
443
|
-
|
|
444
|
-
const templateConfig = rendered.templateConfig;
|
|
445
|
-
const doctype = rendered.doctype ?? templateConfig.doctype ?? "<!DOCTYPE html>";
|
|
446
|
-
html = await runTransformers(html, templateConfig, absolutePath, doctype);
|
|
447
|
-
html = `${doctype}\n${html}`;
|
|
448
|
-
const text = createPlaintext(html);
|
|
540
|
+
const { rawHtml, doctype, templateConfig } = await getRendered(absolutePath, config, renderer);
|
|
541
|
+
let html = doctype ? `${doctype}\n${rawHtml}` : rawHtml;
|
|
542
|
+
const text = createPlaintext(stripForPlaintext(html));
|
|
543
|
+
html = stripForHtml(html);
|
|
449
544
|
const result = await sendEmail({
|
|
450
545
|
to: payload.to,
|
|
451
546
|
subject: payload.subject,
|
|
@@ -475,6 +570,12 @@ function serveEmailConfig(config, res) {
|
|
|
475
570
|
function printBanner(server, startupTime) {
|
|
476
571
|
const info = server.config.logger.info;
|
|
477
572
|
const time = startupTime ?? server._maizzleStartupTime;
|
|
573
|
+
const networkUrl = server.resolvedUrls?.network[0];
|
|
574
|
+
if (networkUrl) {
|
|
575
|
+
const qr = renderUnicodeCompact(networkUrl, { border: 1 });
|
|
576
|
+
info("");
|
|
577
|
+
info(qr.split("\n").map((line) => ` ${line}`).join("\n"));
|
|
578
|
+
}
|
|
478
579
|
info("");
|
|
479
580
|
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`);
|
|
480
581
|
info("");
|
|
@@ -490,7 +591,7 @@ function customLogger() {
|
|
|
490
591
|
};
|
|
491
592
|
return logger;
|
|
492
593
|
}
|
|
493
|
-
|
|
494
594
|
//#endregion
|
|
495
595
|
export { printBanner, serve };
|
|
496
|
-
|
|
596
|
+
|
|
597
|
+
//# sourceMappingURL=serve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.js","names":["parsePath"],"sources":["../src/serve.ts"],"sourcesContent":["import { readFileSync } from 'node:fs'\nimport { dirname, resolve, basename, parse as parsePath } from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { createRequire } from 'node:module'\nimport { createServer, createLogger, type ViteDevServer } from 'vite'\nimport { renderUnicodeCompact } from 'uqr'\nimport vue from '@vitejs/plugin-vue'\nimport tailwindcss from '@tailwindcss/vite'\nimport { glob } from 'tinyglobby'\nimport { createHighlighter, type Highlighter } from 'shiki'\nimport { createPlaintext } from './plaintext.ts'\nimport { stripForHtml, stripForPlaintext } from './utils/output-markers.ts'\nimport { resolveConfig } from './config/index.ts'\nimport { runTransformers } from './transformers/index.ts'\nimport { createRenderer, type Renderer, type RenderedTemplate } from './render/createRenderer.ts'\nimport { _setCurrentTemplate } from './composables/useCurrentTemplate.ts'\nimport { setActiveRenderer } from './render/active.ts'\nimport { serveCompatibility } from './server/compatibility.ts'\nimport { serveLint } from './server/linter.ts'\nimport { sendEmail } from './server/email.ts'\nimport { normalizeComponentSources } from './utils/componentSources.ts'\nimport { createWatchedFileMatcher } from './utils/watchPaths.ts'\nimport type { MaizzleConfig } from './types/index.ts'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\nconst devUIDir = resolve(__dirname, 'server/ui')\n\nconst require = createRequire(import.meta.url)\nconst pkg = (name: string) => {\n const resolved = require.resolve(name).replace(/\\\\/g, '/')\n const marker = `node_modules/${name}`\n const idx = resolved.lastIndexOf(marker)\n\n return resolved.slice(0, idx + marker.length)\n}\n\n/**\n * Resolve a package's ESM entry via its `exports` map. Aliasing to the\n * package directory bypasses `exports` (it only keys off the bare name),\n * so directory resolution can fall back to a UMD/CJS bundle — which Vite 8\n * flags `needsInterop` and then default-imports, breaking ESM-only deps\n * like culori (named exports, no default). Point the alias at the real\n * ESM entry instead.\n */\nconst pkgEsmEntry = (name: string) => {\n const dir = pkg(name)\n const pj = JSON.parse(readFileSync(resolve(dir, 'package.json'), 'utf-8'))\n const entry = pj.exports?.['.']?.import ?? pj.module ?? pj.main\n return resolve(dir, entry)\n}\n\nexport interface ServeOptions {\n config?: Partial<MaizzleConfig> | string\n /** Override the dev server port (takes precedence over config.server.port) */\n port?: number\n /** Expose the server on the network (e.g. --host) */\n host?: boolean | string\n /** When true, suppresses the startup banner/URL output. */\n silent?: boolean\n}\n\n/**\n * Start the Maizzle dev server.\n *\n * Creates two things:\n * 1. A Vite dev server for the dev UI (sidebar + preview, with Vue + Tailwind for the UI itself)\n * 2. A Renderer instance for SSR rendering email templates\n *\n * Template rendering goes through the Renderer, not the Vite dev server.\n */\nexport async function serve(options: ServeOptions = {}) {\n const start = performance.now()\n\n let config = await resolveConfig(options.config)\n const port = options.port ?? config.server?.port ?? 3000\n\n // Create a renderer for SSR rendering email templates (with dts for dev)\n let renderer = await createRenderer({ dts: true, markdown: config.markdown, root: config.root, componentDirs: normalizeComponentSources(config.components?.source, process.cwd()), vite: config.vite })\n\n /**\n * Register so user-land render() calls reuse this renderer instead of\n * spinning up another Vite SSR server (which collides when the host\n * app is itself a Vite dev process — e.g. TanStack Start).\n */\n setActiveRenderer(renderer)\n\n const server = await createServer({\n configFile: false,\n plugins: [\n // Vue and Tailwind are only for the dev UI SPA, not for email templates\n vue(),\n tailwindcss(),\n maizzleDevPlugin(config, renderer, options.config),\n ],\n resolve: {\n dedupe: ['vue'],\n alias: [\n { find: '@', replacement: devUIDir },\n { find: 'vue', replacement: resolve(pkg('vue'), 'dist/vue.runtime.esm-bundler.js') },\n // culori is ESM-only — alias to its ESM entry, not the package dir (see pkgEsmEntry)\n { find: 'culori', replacement: pkgEsmEntry('culori') },\n ...['vue-router', 'reka-ui', '@vueuse/core', '@vueuse/shared', '@lucide/vue', 'class-variance-authority', 'clsx', 'tailwind-merge']\n .map(name => ({ find: name, replacement: pkg(name) })),\n ],\n },\n cacheDir: resolve(devUIDir, '.vite'),\n optimizeDeps: {\n noDiscovery: true,\n include: [\n 'vue',\n 'vue-router',\n '@lucide/vue',\n '@vueuse/core',\n '@vueuse/shared',\n 'reka-ui',\n 'class-variance-authority',\n 'clsx',\n 'tailwind-merge',\n 'culori',\n ],\n },\n server: {\n port,\n host: options.host,\n fs: {\n allow: [process.cwd(), config.root ?? process.cwd(), devUIDir, ...['vue', 'vue-router', 'reka-ui', '@vueuse/core', '@vueuse/shared', '@lucide/vue', 'class-variance-authority', 'clsx', 'tailwind-merge', 'culori'].map(pkg)],\n },\n },\n customLogger: customLogger(),\n })\n\n // Store renderer ref on server for cleanup\n const originalClose = server.close.bind(server)\n server.close = async () => {\n setActiveRenderer(null)\n await renderer.close()\n return originalClose()\n }\n\n await server.listen()\n\n const startupTime = Math.round(performance.now() - start)\n\n if (!options.silent) {\n printBanner(server, startupTime)\n }\n\n // Expose startup time so the plugin can print it later\n ; (server as any)._maizzleStartupTime = startupTime\n\n return server\n}\n\n/**\n * Internal Vite plugin that adds Maizzle middleware and file watching to the dev UI server.\n */\nfunction maizzleDevPlugin(\n config: MaizzleConfig,\n renderer: Renderer,\n configInput: Partial<MaizzleConfig> | string | undefined,\n) {\n return {\n name: 'maizzle:dev',\n enforce: 'pre' as const,\n\n hotUpdate: {\n order: 'pre' as const,\n handler({ file }: { file: string }) {\n /**\n * Prevent Tailwind/Vue from triggering a full reload for email template\n * files. Maizzle handles these via custom HMR events in the\n * watcher below.\n */\n if (isTemplateFile(file)) {\n return []\n }\n },\n },\n\n configureServer(server: ViteDevServer) {\n // File watching\n const defaultWatchPaths = [\n 'maizzle.config.js',\n 'maizzle.config.ts',\n 'tailwind.config.js',\n 'tailwind.config.ts',\n 'locales/**',\n ]\n\n const userWatchPaths = config.server?.watch ?? []\n const watchPaths = [...defaultWatchPaths, ...userWatchPaths]\n // Match against cwd, not config.root: the watched paths (maizzle/tailwind\n // configs, locales) are project-root relative, and `watcher.add` below\n // resolves them against cwd too. Using config.root would break matching\n // when root points at a subdirectory (e.g. the Vite-plugin setup).\n const isWatchedFile = createWatchedFileMatcher(watchPaths, process.cwd())\n\n for (const watchPath of watchPaths) {\n server.watcher.add(watchPath)\n }\n\n /**\n * Serialize watcher work onto one chain. The change handler closes and\n * recreates the renderer across awaits; without serialization a second\n * event firing mid-reload closes a stale renderer and leaks the new one.\n * Errors are caught so one failed task doesn't break the chain.\n */\n let watcherChain: Promise<void> = Promise.resolve()\n const enqueue = (task: () => Promise<void>): Promise<void> => {\n watcherChain = watcherChain.then(task).catch((err) => {\n console.error('[maizzle] watcher task failed:', err)\n })\n return watcherChain\n }\n\n server.watcher.on('add', file => enqueue(async () => {\n if (isTemplateFile(file)) {\n await renderer.invalidateAll()\n bumpGeneration()\n server.ws.send({ type: 'custom', event: 'maizzle:templates-changed' })\n }\n }))\n\n server.watcher.on('unlink', file => enqueue(async () => {\n if (isTemplateFile(file)) {\n await renderer.invalidateAll()\n bumpGeneration()\n server.ws.send({ type: 'custom', event: 'maizzle:templates-changed' })\n }\n }))\n\n server.watcher.on('change', file => enqueue(async () => {\n if (isWatchedFile(file)) {\n config = await resolveConfig(configInput)\n\n // Recreate the renderer so config changes (e.g. markdown.shikiTheme) take effect\n await renderer.close()\n renderer = await createRenderer({ dts: true, markdown: config.markdown, root: config.root, componentDirs: normalizeComponentSources(config.components?.source, process.cwd()), vite: config.vite })\n\n // Re-register the new renderer so user-land render() calls don't keep\n // reusing the closed one (see setActiveRenderer above).\n setActiveRenderer(renderer)\n\n /**\n * Push UI-relevant config bits so the dev UI reacts to live edits\n * without a page reload. Uses the same shape as the initial\n * inject.\n */\n server.ws.send({ type: 'custom', event: 'maizzle:config-updated', data: buildUiConfig(config) })\n }\n\n /**\n * Invalidate all renderer modules so component and config changes\n * are picked up on the next render (Tailwind recompiles with\n * fresh content).\n */\n await renderer.invalidateAll()\n bumpGeneration()\n\n if (\n isTemplateFile(file)\n || isWatchedFile(file)\n ) {\n server.ws.send({ type: 'custom', event: 'maizzle:template-updated', data: { file } })\n }\n }))\n\n // API middleware (before Vite's middleware)\n server.middlewares.use(async (req: any, res: any, next: any) => {\n const url = req.url || '/'\n\n if (url === '/__maizzle/templates') {\n return serveTemplateList(config, res)\n }\n\n if (url.startsWith('/__maizzle/render/')) {\n return await serveRenderedTemplate(url, config, renderer, res)\n }\n\n if (url.startsWith('/__maizzle/source/')) {\n return await serveHighlightedSource(url, config, renderer, res)\n }\n\n if (url.startsWith('/__maizzle/compatibility/')) {\n return await serveCompatibility(url, res, config, normalizeComponentSources(config.components?.source, process.cwd()))\n }\n\n if (url.startsWith('/__maizzle/lint/')) {\n return await serveLint(url, res, config, normalizeComponentSources(config.components?.source, process.cwd()))\n }\n\n if (url.startsWith('/__maizzle/vue-source/')) {\n return await serveVueSource(url, config, res)\n }\n\n if (url.startsWith('/__maizzle/plaintext/')) {\n return await servePlaintext(url, config, renderer, res)\n }\n\n if (url.startsWith('/__maizzle/stats/')) {\n return await serveStats(url, config, renderer, res)\n }\n\n if (url.startsWith('/__maizzle/email/') && req.method === 'POST') {\n return await serveEmailEndpoint(url, req, res, config, renderer)\n }\n\n if (url === '/__maizzle/email-config') {\n return serveEmailConfig(config, res)\n }\n\n next()\n })\n\n // Dev UI fallback (after Vite's middleware)\n return () => {\n server.middlewares.use(async (req: any, res: any, next: any) => {\n if (isNavigationRequest(req)) {\n return await serveDevUI(server, res, req.url || '/', config)\n }\n\n next()\n })\n }\n },\n }\n}\n\nfunction isTemplateFile(file: string): boolean {\n return (file.endsWith('.vue') || file.endsWith('.md')) && !file.includes('server/ui')\n}\n\nfunction isNavigationRequest(req: any): boolean {\n const accept = req.headers?.accept || ''\n return req.method === 'GET' && accept.includes('text/html')\n}\n\n/**\n * Shape exposed to the dev UI both at initial HTML load (as\n * `window.__MAIZZLE_CONFIG__`) and on the `maizzle:config-updated` HMR event.\n * Add UI-visible config bits here; consumers on both ends pick up automatically.\n */\nfunction buildUiConfig(config: MaizzleConfig) {\n return {\n checks: config.server?.checks ?? true,\n }\n}\n\nasync function serveDevUI(server: ViteDevServer, res: any, url: string, config: MaizzleConfig) {\n let indexHtml = readFileSync(resolve(devUIDir, 'index.html'), 'utf-8')\n\n indexHtml = indexHtml.replace('./main.ts', `/@fs/${resolve(devUIDir, 'main.ts')}`)\n indexHtml = indexHtml.replace('./favicon.svg', `/@fs/${resolve(devUIDir, 'favicon.svg')}`)\n\n const configScript = `<script>window.__MAIZZLE_CONFIG__ = ${JSON.stringify(buildUiConfig(config))};</script>`\n indexHtml = indexHtml.replace('</head>', `${configScript}</head>`)\n\n const transformed = await server.transformIndexHtml(url, indexHtml)\n\n res.setHeader('Content-Type', 'text/html')\n res.end(transformed)\n}\n\nasync function serveTemplateList(config: MaizzleConfig, res: any) {\n const contentPatterns = config.content ?? ['emails/**/*.vue']\n const templates = await glob(contentPatterns)\n\n const data = templates.map(t => ({\n name: basename(t).replace(/\\.(vue|md)$/, ''),\n path: t,\n href: '/' + t.replace(/\\.(vue|md)$/, ''),\n }))\n\n res.setHeader('Content-Type', 'application/json')\n res.end(JSON.stringify(data))\n}\n\ninterface DedupedRender {\n /** Transformer output — before doctype prepend / stripForHtml / stripForPlaintext. */\n rawHtml: string\n doctype: string\n templateConfig: MaizzleConfig\n rendered: RenderedTemplate\n}\n\n/**\n * Render-result memo for the dev server. A single template save makes the\n * browser fire several endpoint requests in parallel (render, source, stats,\n * plaintext, email) that each need the same SSR render + transformer output.\n * Keying the in-flight Promise by `${generation}:${path}` collapses those into\n * one render and dedupes concurrent requests. The watcher bumps the generation\n * (and clears the cache) on every file/config change, so results never go\n * stale. Each endpoint applies its own tail step (doctype prepend, strip,\n * highlight, …) on top of `rawHtml`, keeping output byte-identical.\n */\nlet renderGeneration = 0\nconst renderCache = new Map<string, Promise<DedupedRender>>()\n\nfunction bumpGeneration() {\n renderGeneration++\n renderCache.clear()\n}\n\nfunction getRendered(absolutePath: string, config: MaizzleConfig, renderer: Renderer): Promise<DedupedRender> {\n const key = `${renderGeneration}:${absolutePath}`\n let promise = renderCache.get(key)\n if (!promise) {\n promise = (async () => {\n _setCurrentTemplate(parsePath(absolutePath))\n try {\n const rendered = await renderer.render(absolutePath, config)\n const templateConfig = rendered.templateConfig\n const doctype = rendered.doctype ?? templateConfig.doctype ?? '<!DOCTYPE html>'\n const rawHtml = await runTransformers(rendered.html, templateConfig, absolutePath, doctype, rendered.tailwindBlocks)\n return { rawHtml, doctype, templateConfig, rendered }\n } finally {\n _setCurrentTemplate(undefined)\n }\n })()\n renderCache.set(key, promise)\n }\n return promise\n}\n\n/**\n * SSR render a .vue template using the Renderer (not the dev UI server).\n */\nasync function serveRenderedTemplate(url: string, config: MaizzleConfig, renderer: Renderer, res: any) {\n const templateSlug = url.replace('/__maizzle/render/', '').replace(/\\?.*$/, '')\n\n const contentPatterns = config.content ?? ['emails/**/*.vue']\n const templates = await glob(contentPatterns)\n const match = templates.find(t => t.replace(/\\.(vue|md)$/, '') === templateSlug)\n\n if (!match) {\n res.statusCode = 404\n res.end('Template not found')\n return\n }\n\n const absolutePath = resolve(match)\n\n try {\n const { rawHtml, doctype } = await getRendered(absolutePath, config, renderer)\n let html = rawHtml\n if (doctype) html = `${doctype}\\n${html}`\n\n res.setHeader('Content-Type', 'text/html')\n res.end(stripForHtml(html))\n } catch (error: any) {\n res.statusCode = 500\n res.end(`<pre>${error.stack || error.message}</pre>`)\n }\n}\n\nlet highlighter: Highlighter | null = null\n\nasync function getHighlighter() {\n if (!highlighter) {\n highlighter = await createHighlighter({\n themes: ['laserwave'],\n langs: ['html', 'vue'],\n })\n }\n return highlighter\n}\n\nasync function serveHighlightedSource(url: string, config: MaizzleConfig, renderer: Renderer, res: any) {\n const templateSlug = url.replace('/__maizzle/source/', '').replace(/\\?.*$/, '')\n\n const contentPatterns = config.content ?? ['emails/**/*.vue']\n const templates = await glob(contentPatterns)\n const match = templates.find(t => t.replace(/\\.(vue|md)$/, '') === templateSlug)\n\n if (!match) {\n res.statusCode = 404\n res.end('Template not found')\n return\n }\n\n const absolutePath = resolve(match)\n\n try {\n const { rawHtml, doctype } = await getRendered(absolutePath, config, renderer)\n const html = stripForHtml(doctype ? `${doctype}\\n${rawHtml}` : rawHtml)\n\n const hl = await getHighlighter()\n const highlighted = hl.codeToHtml(html, {\n lang: 'html',\n theme: 'laserwave',\n transformers: [{\n line(node, line) {\n node.properties['data-line'] = line\n },\n }],\n })\n\n res.setHeader('Content-Type', 'text/html')\n res.end(highlighted)\n } catch (error: any) {\n res.statusCode = 500\n res.end(`<pre>${error.stack || error.message}</pre>`)\n }\n}\n\nasync function serveVueSource(url: string, config: MaizzleConfig, res: any) {\n const templateSlug = url.replace('/__maizzle/vue-source/', '').replace(/\\?.*$/, '')\n\n const contentPatterns = config.content ?? ['emails/**/*.vue']\n const templates = await glob(contentPatterns)\n const match = templates.find(t => t.replace(/\\.(vue|md)$/, '') === templateSlug)\n\n if (!match) {\n res.statusCode = 404\n res.end('Template not found')\n return\n }\n\n try {\n const source = readFileSync(resolve(match), 'utf-8')\n const lang = match.endsWith('.md') ? 'html' : 'vue'\n\n const hl = await getHighlighter()\n const highlighted = hl.codeToHtml(source, {\n lang,\n theme: 'laserwave',\n transformers: [{\n line(node, line) {\n node.properties['data-line'] = line\n },\n }],\n })\n\n res.setHeader('Content-Type', 'text/html')\n res.end(highlighted)\n } catch (error: any) {\n res.statusCode = 500\n res.end(`<pre>${error.stack || error.message}</pre>`)\n }\n}\n\nasync function servePlaintext(url: string, config: MaizzleConfig, renderer: Renderer, res: any) {\n const templateSlug = url.replace('/__maizzle/plaintext/', '').replace(/\\?.*$/, '')\n\n const contentPatterns = config.content ?? ['emails/**/*.vue']\n const templates = await glob(contentPatterns)\n const match = templates.find(t => t.replace(/\\.(vue|md)$/, '') === templateSlug)\n\n if (!match) {\n res.statusCode = 404\n res.end('Template not found')\n return\n }\n\n const absolutePath = resolve(match)\n\n try {\n const { rawHtml } = await getRendered(absolutePath, config, renderer)\n const plaintext = createPlaintext(stripForPlaintext(rawHtml))\n\n res.setHeader('Content-Type', 'text/plain')\n res.end(plaintext)\n } catch (error: any) {\n res.statusCode = 500\n res.end(error.message)\n }\n}\n\nfunction humanFileSize(bytes: number, si = false, dp = 2) {\n const threshold = si ? 1000 : 1024\n\n if (Math.abs(bytes) < threshold) {\n return bytes + ' B'\n }\n\n const units = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n let u = -1\n const r = 10 ** dp\n\n do {\n bytes /= threshold\n ++u\n } while (Math.round(Math.abs(bytes) * r) / r >= threshold && u < units.length - 1)\n\n return bytes.toFixed(dp) + ' ' + units[u]\n}\n\nasync function serveStats(url: string, config: MaizzleConfig, renderer: Renderer, res: any) {\n const templateSlug = url.replace('/__maizzle/stats/', '').replace(/\\?.*$/, '')\n\n const contentPatterns = config.content ?? ['emails/**/*.vue']\n const templates = await glob(contentPatterns)\n const match = templates.find(t => t.replace(/\\.(vue|md)$/, '') === templateSlug)\n\n if (!match) {\n res.statusCode = 404\n res.end(JSON.stringify({ error: 'Template not found' }))\n return\n }\n\n const absolutePath = resolve(match)\n\n try {\n const { rawHtml } = await getRendered(absolutePath, config, renderer)\n const html = stripForHtml(rawHtml)\n\n const sizeBytes = new TextEncoder().encode(html).length\n\n // Count images: <img> tags and CSS background images\n const imgTags = (html.match(/<img\\b[^>]*>/gi) || []).length\n const bgImages = (html.match(/url\\s*\\([^)]+\\)/gi) || []).length\n const totalImages = imgTags + bgImages\n\n // Count links\n const links = (html.match(/<a\\b[^>]*href\\s*=/gi) || []).length\n\n res.setHeader('Content-Type', 'application/json')\n res.end(JSON.stringify({\n size: {\n bytes: sizeBytes,\n formatted: humanFileSize(sizeBytes),\n },\n images: totalImages,\n links,\n }))\n } catch (error: any) {\n res.statusCode = 500\n res.end(JSON.stringify({ error: error.message }))\n }\n}\n\nasync function serveEmailEndpoint(url: string, req: any, res: any, config: MaizzleConfig, renderer: Renderer) {\n const templateSlug = url.replace('/__maizzle/email/', '').replace(/\\?.*$/, '')\n\n const contentPatterns = config.content ?? ['emails/**/*.vue']\n const templates = await glob(contentPatterns)\n const match = templates.find(t => t.replace(/\\.(vue|md)$/, '') === templateSlug)\n\n if (!match) {\n res.statusCode = 404\n res.end(JSON.stringify({ success: false, message: 'Template not found' }))\n return\n }\n\n let body = ''\n for await (const chunk of req) body += chunk\n\n let payload: { to: string[]; subject: string }\n\n try {\n payload = JSON.parse(body)\n } catch {\n res.statusCode = 400\n res.end(JSON.stringify({ success: false, message: 'Invalid JSON' }))\n return\n }\n\n if (!payload.to?.length) {\n res.statusCode = 400\n res.end(JSON.stringify({ success: false, message: 'Missing recipients' }))\n return\n }\n\n const absolutePath = resolve(match)\n\n try {\n const { rawHtml, doctype, templateConfig } = await getRendered(absolutePath, config, renderer)\n let html = doctype ? `${doctype}\\n${rawHtml}` : rawHtml\n\n const text = createPlaintext(stripForPlaintext(html))\n html = stripForHtml(html)\n\n const result = await sendEmail(\n { to: payload.to, subject: payload.subject, html, text },\n config,\n templateConfig,\n )\n\n res.setHeader('Content-Type', 'application/json')\n res.end(JSON.stringify(result))\n } catch (error: any) {\n res.statusCode = 500\n res.end(JSON.stringify({ success: false, message: error.message }))\n }\n}\n\nfunction serveEmailConfig(config: MaizzleConfig, res: any) {\n const emailConfig = config.server?.email\n res.setHeader('Content-Type', 'application/json')\n res.end(JSON.stringify({\n to: emailConfig?.to ? (Array.isArray(emailConfig.to) ? emailConfig.to : [emailConfig.to]) : [],\n from: emailConfig?.from ?? '',\n subject: emailConfig?.subject ?? '',\n hasTransport: !!emailConfig?.transport,\n }))\n}\n\nexport function printBanner(server: ViteDevServer, startupTime?: number) {\n const info = server.config.logger.info\n const time = startupTime ?? (server as any)._maizzleStartupTime\n\n const networkUrl = server.resolvedUrls?.network[0]\n if (networkUrl) {\n const qr = renderUnicodeCompact(networkUrl, { border: 1 })\n info('')\n info(qr.split('\\n').map(line => ` ${line}`).join('\\n'))\n }\n\n info('')\n 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`)\n info('')\n server.printUrls()\n info('')\n}\n\nfunction customLogger() {\n const logger = createLogger('info')\n const warn = logger.warn\n\n logger.warn = (message, options) => {\n if (typeof message === 'string' && message.includes('<tr> cannot be child of <table>')) {\n return\n }\n\n warn(message, options)\n }\n\n return logger\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { MaizzleConfig } from "../types/config.js";
|
|
2
|
+
import { NormalizedComponentSource } from "../utils/componentSources.js";
|
|
3
|
+
|
|
4
|
+
//#region src/server/compatibility.d.ts
|
|
5
|
+
interface Feature {
|
|
6
|
+
slug: string;
|
|
7
|
+
title: string;
|
|
8
|
+
url: string;
|
|
9
|
+
category: string;
|
|
10
|
+
stats: any;
|
|
11
|
+
}
|
|
12
|
+
interface Indexes {
|
|
13
|
+
nicenames: {
|
|
14
|
+
supported: string;
|
|
15
|
+
mitigated: string;
|
|
16
|
+
unsupported: string;
|
|
17
|
+
unknown: string;
|
|
18
|
+
mixed: string;
|
|
19
|
+
};
|
|
20
|
+
familyNicenames: Record<string, string>;
|
|
21
|
+
cssProp: Map<string, Feature[]>;
|
|
22
|
+
cssPropValue: Map<string, Array<{
|
|
23
|
+
value: string;
|
|
24
|
+
feature: Feature;
|
|
25
|
+
}>>;
|
|
26
|
+
cssAtRule: Map<string, Feature[]>;
|
|
27
|
+
cssMediaFeature: Map<string, Feature[]>;
|
|
28
|
+
cssPseudoClass: Map<string, Feature[]>;
|
|
29
|
+
cssPseudoElement: Map<string, Feature[]>;
|
|
30
|
+
cssFunction: Map<string, Feature[]>;
|
|
31
|
+
cssUnit: Map<string, Feature[]>;
|
|
32
|
+
cssImportant?: Feature;
|
|
33
|
+
cssVariables?: Feature;
|
|
34
|
+
cssNesting?: Feature;
|
|
35
|
+
cssComments?: Feature;
|
|
36
|
+
cssModernColor?: Feature;
|
|
37
|
+
htmlTag: Map<string, Feature[]>;
|
|
38
|
+
htmlAttr: Map<string, Feature[]>;
|
|
39
|
+
htmlInputType: Map<string, Feature[]>;
|
|
40
|
+
htmlButtonType: Map<string, Feature[]>;
|
|
41
|
+
htmlDoctype?: Feature;
|
|
42
|
+
htmlComments?: Feature;
|
|
43
|
+
htmlAnchorLinks?: Feature;
|
|
44
|
+
htmlMailtoLinks?: Feature;
|
|
45
|
+
htmlMetaColorScheme?: Feature;
|
|
46
|
+
htmlSemantics?: Feature;
|
|
47
|
+
htmlStyleInBody?: Feature;
|
|
48
|
+
imageExt: Map<string, Feature[]>;
|
|
49
|
+
/** All features by slug — unfiltered, used for URL lookups (e.g. by lint). */
|
|
50
|
+
bySlug: Map<string, {
|
|
51
|
+
title: string;
|
|
52
|
+
url: string;
|
|
53
|
+
}>;
|
|
54
|
+
}
|
|
55
|
+
declare function initCompatibility(): Promise<Indexes | null>;
|
|
56
|
+
declare function serveCompatibility(url: string, res: any, config: MaizzleConfig, componentDirs: NormalizedComponentSource[]): Promise<void>;
|
|
57
|
+
//#endregion
|
|
58
|
+
export { initCompatibility, serveCompatibility };
|
|
59
|
+
//# sourceMappingURL=compatibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility.d.ts","names":[],"sources":["../../src/server/compatibility.ts"],"mappings":";;;;UAkBU,OAAA;EACR,IAAA;EACA,KAAA;EACA,GAAA;EACA,QAAA;EACA,KAAA;AAAA;AAAA,UAoBQ,OAAA;EACR,SAAA;IAAa,SAAA;IAAmB,SAAA;IAAmB,WAAA;IAAqB,OAAA;IAAiB,KAAA;EAAA;EACzF,eAAA,EAAiB,MAAA;EACjB,OAAA,EAAS,GAAA,SAAY,OAAA;EACrB,YAAA,EAAc,GAAA,SAAY,KAAA;IAAQ,KAAA;IAAe,OAAA,EAAS,OAAA;EAAA;EAC1D,SAAA,EAAW,GAAA,SAAY,OAAA;EACvB,eAAA,EAAiB,GAAA,SAAY,OAAA;EAC7B,cAAA,EAAgB,GAAA,SAAY,OAAA;EAC5B,gBAAA,EAAkB,GAAA,SAAY,OAAA;EAC9B,WAAA,EAAa,GAAA,SAAY,OAAA;EACzB,OAAA,EAAS,GAAA,SAAY,OAAA;EACrB,YAAA,GAAe,OAAA;EACf,YAAA,GAAe,OAAA;EACf,UAAA,GAAa,OAAA;EACb,WAAA,GAAc,OAAA;EACd,cAAA,GAAiB,OAAA;EACjB,OAAA,EAAS,GAAA,SAAY,OAAA;EACrB,QAAA,EAAU,GAAA,SAAY,OAAA;EACtB,aAAA,EAAe,GAAA,SAAY,OAAA;EAC3B,cAAA,EAAgB,GAAA,SAAY,OAAA;EAC5B,WAAA,GAAc,OAAA;EACd,YAAA,GAAe,OAAA;EACf,eAAA,GAAkB,OAAA;EAClB,eAAA,GAAkB,OAAA;EAClB,mBAAA,GAAsB,OAAA;EACtB,aAAA,GAAgB,OAAA;EAChB,eAAA,GAAkB,OAAA;EAClB,QAAA,EAAU,GAAA,SAAY,OAAA;EATK;EAW3B,MAAA,EAAQ,GAAA;IAAc,KAAA;IAAe,GAAA;EAAA;AAAA;AAAA,iBA6OjB,iBAAA,IAAqB,OAAO,CAAC,OAAA;AAAA,iBA8kB7B,kBAAA,CACpB,GAAA,UACA,GAAA,OACA,MAAA,EAAQ,aAAA,EACR,aAAA,EAAe,yBAAA,KAA2B,OAAA"}
|