@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/config/index.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'node:fs'\nimport { resolve, dirname, extname, join } from 'pathe'\nimport { createJiti } from 'jiti'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { createDefu } from 'defu'\n\n// defu that replaces arrays: if user provides content: ['x'], it replaces the default, not appends\nconst merge = createDefu((obj, key, value) => {\n if (Array.isArray(obj[key])) {\n obj[key] = value\n return true\n }\n})\nimport { defaults } from './defaults.ts'\nimport type { MaizzleConfig } from '../types/index.ts'\n\nexport { defineConfig } from '../composables/defineConfig.ts'\nexport { defaults } from './defaults.ts'\n\nconst CONFIG_FILES = [\n 'maizzle.config.ts',\n 'maizzle.config.js',\n]\n\n/**\n * Resolve the Maizzle config.\n *\n * Always loads from the config file on disk (maizzle.config.{ts,js}),\n * then merges the programmatic config on top, then fills in defaults.\n */\nexport async function resolveConfig(\n config?: Partial<MaizzleConfig> | string,\n cwd: string = process.cwd(),\n): Promise<MaizzleConfig> {\n // If a string path was provided, load that specific file\n const fileConfig = await loadConfig(\n typeof config === 'string' ? config : undefined,\n cwd,\n )\n\n // Programmatic config (object) overrides file config, which overrides defaults\n const programmaticConfig = typeof config === 'object' && config !== null ? config : {}\n\n return normalizeConfig(programmaticConfig, fileConfig, cwd)\n}\n\n/**\n * Resolve config from a programmatic object only — never touches disk.\n *\n * `render()` uses this so a stray `maizzle.config.{ts,js}` in `cwd` can't\n * silently alter output: the config you pass is the config you get, layered\n * over defaults. Callers who want the project's file config load it\n * explicitly via {@link resolveConfig} and pass the result in.\n */\nexport function resolveConfigObject(\n config?: Partial<MaizzleConfig>,\n cwd: string = process.cwd(),\n): MaizzleConfig {\n const programmaticConfig = config && typeof config === 'object' ? config : {}\n return normalizeConfig(programmaticConfig, {}, cwd)\n}\n\n/**\n * Merge programmatic config over file config over defaults, then resolve\n * filesystem paths (root, content, static, components) relative to cwd/root.\n */\nfunction normalizeConfig(\n programmaticConfig: Partial<MaizzleConfig>,\n fileConfig: Partial<MaizzleConfig>,\n cwd: string,\n): MaizzleConfig {\n const merged = merge(programmaticConfig, fileConfig, defaults) as MaizzleConfig\n\n // Check if root was explicitly provided before resolving\n const hasExplicitRoot = !!(programmaticConfig.root ?? fileConfig.root)\n\n // Resolve root to an absolute path (defaults to cwd)\n const root = resolve(cwd, merged.root ?? '.')\n merged.root = root\n\n // Resolve content patterns relative to root\n if (merged.content) {\n merged.content = merged.content.map(p => {\n // Skip already-absolute or negated patterns\n if (p.startsWith('/') || p.startsWith('!')) return p\n return resolve(root, p)\n })\n }\n\n // Resolve static source patterns relative to root\n if (merged.static?.source) {\n merged.static.source = merged.static.source.map(p => {\n if (p.startsWith('/') || p.startsWith('!')) return p\n return resolve(root, p)\n })\n }\n\n /**\n * Resolve components.source paths relative to cwd (not root), since extra\n * component dirs often live outside the root directory. String\n * entries → resolve in-place. Object entries → resolve\n * `path`, preserve `prefix`/`pathPrefix`.\n */\n if (merged.components?.source) {\n const dirs = Array.isArray(merged.components.source)\n ? merged.components.source\n : [merged.components.source]\n\n merged.components.source = dirs.map(entry => {\n if (typeof entry === 'string') {\n return entry.startsWith('/') ? entry : resolve(cwd, entry)\n }\n return {\n ...entry,\n path: entry.path.startsWith('/') ? entry.path : resolve(cwd, entry.path),\n }\n })\n }\n\n /**\n * Default css.base to root when root is explicitly set, so Tailwind resolves\n * @source from the right directory. When root is not set, leave\n * css.base undefined so Tailwind uses its own default (the\n * template file's directory).\n */\n if (hasExplicitRoot && !merged.css?.base) {\n if (!merged.css) merged.css = {}\n merged.css.base = root\n }\n\n return merged\n}\n\n/**\n * Whether Node can natively `import()` this file as ESM — true for `.mjs`\n * and for `.js` whose nearest package.json declares `\"type\": \"module\"`.\n * jiti hands such files to Node's native loader, which caches them in the\n * (unbustable) module registry, so we import them ourselves with a fresh\n * query instead. Everything else (CJS, TS) goes through jiti, which already\n * re-evaluates per instance.\n */\nexport function isNativeESM(absolutePath: string): boolean {\n const ext = extname(absolutePath)\n if (ext === '.mjs') return true\n if (ext === '.cjs' || ext === '.ts' || ext === '.mts' || ext === '.cts') return false\n\n let dir = dirname(absolutePath)\n for (;;) {\n const pkgPath = join(dir, 'package.json')\n if (existsSync(pkgPath)) {\n try {\n return JSON.parse(readFileSync(pkgPath, 'utf-8')).type === 'module'\n } catch {\n return false\n }\n }\n const parent = dirname(dir)\n if (parent === dir) return false\n dir = parent\n }\n}\n\n/**\n * Monotonic nonce appended to native-import URLs so each load is fresh even\n * when two reloads land in the same millisecond.\n */\nlet configLoadNonce = 0\n\nasync function importConfig(absolutePath: string, jiti: ReturnType<typeof createJiti>): Promise<MaizzleConfig> {\n if (isNativeESM(absolutePath)) {\n const url = `${pathToFileURL(absolutePath).href}?t=${Date.now()}-${configLoadNonce++}`\n const mod = await import(url) as any\n return mod.default ?? mod\n }\n\n const mod = await jiti.import(absolutePath) as any\n return mod.default ?? mod\n}\n\nasync function loadConfig(\n configPath?: string,\n cwd: string = process.cwd(),\n): Promise<MaizzleConfig> {\n const jiti = createJiti(fileURLToPath(import.meta.url), { moduleCache: false })\n\n // If an explicit path was provided, use it directly\n if (configPath) {\n const absolutePath = resolve(cwd, configPath)\n\n if (!existsSync(absolutePath)) {\n throw new Error(`Config file not found: ${absolutePath}`)\n }\n\n return importConfig(absolutePath, jiti)\n }\n\n // Otherwise scan cwd for known config file names\n for (const filename of CONFIG_FILES) {\n const filepath = resolve(cwd, filename)\n\n if (existsSync(filepath)) {\n return importConfig(filepath, jiti)\n }\n }\n\n // No config file found, return empty (defaults will be applied by resolveConfig)\n return {}\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,QAAQ,YAAY,KAAK,KAAK,UAAU;CAC5C,IAAI,MAAM,QAAQ,IAAI,IAAI,GAAG;EAC3B,IAAI,OAAO;EACX,OAAO;CACT;AACF,CAAC;AAOD,MAAM,eAAe,CACnB,qBACA,mBACF;;;;;;;AAQA,eAAsB,cACpB,QACA,MAAc,QAAQ,IAAI,GACF;CAExB,MAAM,aAAa,MAAM,WACvB,OAAO,WAAW,WAAW,SAAS,KAAA,GACtC,GACF;CAKA,OAAO,gBAFoB,OAAO,WAAW,YAAY,WAAW,OAAO,SAAS,CAAC,GAE1C,YAAY,GAAG;AAC5D;;;;;;;;;AAUA,SAAgB,oBACd,QACA,MAAc,QAAQ,IAAI,GACX;CAEf,OAAO,gBADoB,UAAU,OAAO,WAAW,WAAW,SAAS,CAAC,GACjC,CAAC,GAAG,GAAG;AACpD;;;;;AAMA,SAAS,gBACP,oBACA,YACA,KACe;CACf,MAAM,SAAS,MAAM,oBAAoB,YAAY,QAAQ;CAG7D,MAAM,kBAAkB,CAAC,EAAE,mBAAmB,QAAQ,WAAW;CAGjE,MAAM,OAAO,QAAQ,KAAK,OAAO,QAAQ,GAAG;CAC5C,OAAO,OAAO;CAGd,IAAI,OAAO,SACT,OAAO,UAAU,OAAO,QAAQ,KAAI,MAAK;EAEvC,IAAI,EAAE,WAAW,GAAG,KAAK,EAAE,WAAW,GAAG,GAAG,OAAO;EACnD,OAAO,QAAQ,MAAM,CAAC;CACxB,CAAC;CAIH,IAAI,OAAO,QAAQ,QACjB,OAAO,OAAO,SAAS,OAAO,OAAO,OAAO,KAAI,MAAK;EACnD,IAAI,EAAE,WAAW,GAAG,KAAK,EAAE,WAAW,GAAG,GAAG,OAAO;EACnD,OAAO,QAAQ,MAAM,CAAC;CACxB,CAAC;;;;;;;CASH,IAAI,OAAO,YAAY,QAAQ;EAC7B,MAAM,OAAO,MAAM,QAAQ,OAAO,WAAW,MAAM,IAC/C,OAAO,WAAW,SAClB,CAAC,OAAO,WAAW,MAAM;EAE7B,OAAO,WAAW,SAAS,KAAK,KAAI,UAAS;GAC3C,IAAI,OAAO,UAAU,UACnB,OAAO,MAAM,WAAW,GAAG,IAAI,QAAQ,QAAQ,KAAK,KAAK;GAE3D,OAAO;IACL,GAAG;IACH,MAAM,MAAM,KAAK,WAAW,GAAG,IAAI,MAAM,OAAO,QAAQ,KAAK,MAAM,IAAI;GACzE;EACF,CAAC;CACH;;;;;;;CAQA,IAAI,mBAAmB,CAAC,OAAO,KAAK,MAAM;EACxC,IAAI,CAAC,OAAO,KAAK,OAAO,MAAM,CAAC;EAC/B,OAAO,IAAI,OAAO;CACpB;CAEA,OAAO;AACT;;;;;;;;;AAUA,SAAgB,YAAY,cAA+B;CACzD,MAAM,MAAM,QAAQ,YAAY;CAChC,IAAI,QAAQ,QAAQ,OAAO;CAC3B,IAAI,QAAQ,UAAU,QAAQ,SAAS,QAAQ,UAAU,QAAQ,QAAQ,OAAO;CAEhF,IAAI,MAAM,QAAQ,YAAY;CAC9B,SAAS;EACP,MAAM,UAAU,KAAK,KAAK,cAAc;EACxC,IAAI,WAAW,OAAO,GACpB,IAAI;GACF,OAAO,KAAK,MAAM,aAAa,SAAS,OAAO,CAAC,CAAC,CAAC,SAAS;EAC7D,QAAQ;GACN,OAAO;EACT;EAEF,MAAM,SAAS,QAAQ,GAAG;EAC1B,IAAI,WAAW,KAAK,OAAO;EAC3B,MAAM;CACR;AACF;;;;;AAMA,IAAI,kBAAkB;AAEtB,eAAe,aAAa,cAAsB,MAA6D;CAC7G,IAAI,YAAY,YAAY,GAAG;EAE7B,MAAM,MAAM,MAAM,OAAO,GADV,cAAc,YAAY,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,GAAG;EAEnE,OAAO,IAAI,WAAW;CACxB;CAEA,MAAM,MAAM,MAAM,KAAK,OAAO,YAAY;CAC1C,OAAO,IAAI,WAAW;AACxB;AAEA,eAAe,WACb,YACA,MAAc,QAAQ,IAAI,GACF;CACxB,MAAM,OAAO,WAAW,cAAc,OAAO,KAAK,GAAG,GAAG,EAAE,aAAa,MAAM,CAAC;CAG9E,IAAI,YAAY;EACd,MAAM,eAAe,QAAQ,KAAK,UAAU;EAE5C,IAAI,CAAC,WAAW,YAAY,GAC1B,MAAM,IAAI,MAAM,0BAA0B,cAAc;EAG1D,OAAO,aAAa,cAAc,IAAI;CACxC;CAGA,KAAK,MAAM,YAAY,cAAc;EACnC,MAAM,WAAW,QAAQ,KAAK,QAAQ;EAEtC,IAAI,WAAW,QAAQ,GACrB,OAAO,aAAa,UAAU,IAAI;CAEtC;CAGA,OAAO,CAAC;AACV"}
|
|
@@ -1,22 +1,33 @@
|
|
|
1
|
-
import { MaizzleConfig } from "../types/config.
|
|
1
|
+
import { MaizzleConfig } from "../types/config.js";
|
|
2
|
+
import { ParsedPath } from "node:path";
|
|
3
|
+
|
|
2
4
|
//#region src/events/index.d.ts
|
|
3
5
|
type EventName = 'beforeCreate' | 'beforeRender' | 'afterRender' | 'afterTransform' | 'afterBuild';
|
|
6
|
+
/**
|
|
7
|
+
* Info about the template currently being processed, passed to per-template
|
|
8
|
+
* event handlers. `source` is the SFC file contents; `path` is the result of
|
|
9
|
+
* `path.parse(absolutePath)` — `{ root, dir, base, ext, name }`.
|
|
10
|
+
*/
|
|
11
|
+
interface TemplateInfo {
|
|
12
|
+
source: string;
|
|
13
|
+
path: ParsedPath;
|
|
14
|
+
}
|
|
4
15
|
interface EventMap {
|
|
5
16
|
beforeCreate: (params: {
|
|
6
17
|
config: MaizzleConfig;
|
|
7
18
|
}) => void | Promise<void>;
|
|
8
19
|
beforeRender: (params: {
|
|
9
20
|
config: MaizzleConfig;
|
|
10
|
-
template:
|
|
21
|
+
template: TemplateInfo;
|
|
11
22
|
}) => string | void | Promise<string | void>;
|
|
12
23
|
afterRender: (params: {
|
|
13
24
|
config: MaizzleConfig;
|
|
14
|
-
template:
|
|
25
|
+
template: TemplateInfo;
|
|
15
26
|
html: string;
|
|
16
27
|
}) => string | void | Promise<string | void>;
|
|
17
28
|
afterTransform: (params: {
|
|
18
29
|
config: MaizzleConfig;
|
|
19
|
-
template:
|
|
30
|
+
template: TemplateInfo;
|
|
20
31
|
html: string;
|
|
21
32
|
}) => string | void | Promise<string | void>;
|
|
22
33
|
afterBuild: (params: {
|
|
@@ -33,6 +44,12 @@ interface EventMap {
|
|
|
33
44
|
*/
|
|
34
45
|
declare class EventManager {
|
|
35
46
|
private handlers;
|
|
47
|
+
/**
|
|
48
|
+
* Snapshot of config-handler counts per event, captured at registerConfig().
|
|
49
|
+
* clearSfcHandlers() truncates each list back to this count, dropping
|
|
50
|
+
* any SFC-registered handlers that were appended after.
|
|
51
|
+
*/
|
|
52
|
+
private configHandlerCount;
|
|
36
53
|
/**
|
|
37
54
|
* Register handlers from the Maizzle config.
|
|
38
55
|
*/
|
|
@@ -48,18 +65,19 @@ declare class EventManager {
|
|
|
48
65
|
config: MaizzleConfig;
|
|
49
66
|
}): Promise<void>;
|
|
50
67
|
/**
|
|
51
|
-
* Fire beforeRender — if a handler returns a string, it replaces
|
|
68
|
+
* Fire beforeRender — if a handler returns a string, it replaces
|
|
69
|
+
* `template.source` for subsequent handlers and the renderer.
|
|
52
70
|
*/
|
|
53
71
|
fireBeforeRender(params: {
|
|
54
72
|
config: MaizzleConfig;
|
|
55
|
-
template:
|
|
73
|
+
template: TemplateInfo;
|
|
56
74
|
}): Promise<string>;
|
|
57
75
|
/**
|
|
58
76
|
* Fire afterRender — if a handler returns a string, it replaces `html`.
|
|
59
77
|
*/
|
|
60
78
|
fireAfterRender(params: {
|
|
61
79
|
config: MaizzleConfig;
|
|
62
|
-
template:
|
|
80
|
+
template: TemplateInfo;
|
|
63
81
|
html: string;
|
|
64
82
|
}): Promise<string>;
|
|
65
83
|
/**
|
|
@@ -67,7 +85,7 @@ declare class EventManager {
|
|
|
67
85
|
*/
|
|
68
86
|
fireAfterTransform(params: {
|
|
69
87
|
config: MaizzleConfig;
|
|
70
|
-
template:
|
|
88
|
+
template: TemplateInfo;
|
|
71
89
|
html: string;
|
|
72
90
|
}): Promise<string>;
|
|
73
91
|
/**
|
|
@@ -78,14 +96,19 @@ declare class EventManager {
|
|
|
78
96
|
config: MaizzleConfig;
|
|
79
97
|
}): Promise<void>;
|
|
80
98
|
/**
|
|
81
|
-
*
|
|
99
|
+
* Drop SFC-registered handlers, keep config-registered ones.
|
|
100
|
+
*
|
|
101
|
+
* Per default, only clears events whose scope is per-template
|
|
102
|
+
* (`beforeRender`, `afterRender`, `afterTransform`). Build-scoped events
|
|
103
|
+
* (`afterBuild`) accumulate across all templates and fire once at end of
|
|
104
|
+
* build. Pass an explicit list to override.
|
|
82
105
|
*/
|
|
83
|
-
clearSfcHandlers(): void;
|
|
106
|
+
clearSfcHandlers(events?: EventName[]): void;
|
|
84
107
|
/**
|
|
85
108
|
* Clear all handlers entirely.
|
|
86
109
|
*/
|
|
87
110
|
clear(): void;
|
|
88
111
|
}
|
|
89
112
|
//#endregion
|
|
90
|
-
export { EventManager, EventMap, EventName };
|
|
91
|
-
//# sourceMappingURL=index.d.
|
|
113
|
+
export { EventManager, EventMap, EventName, TemplateInfo };
|
|
114
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/events/index.ts"],"mappings":";;;;KAGY,SAAA;;;AAAZ;;;UAOiB,YAAA;EACf,MAAA;EACA,IAAA,EAAM,UAAU;AAAA;AAAA,UAGD,QAAA;EACf,YAAA,GAAe,MAAA;IAAU,MAAA,EAAQ,aAAA;EAAA,aAA2B,OAAA;EAC5D,YAAA,GAAe,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA,EAAU,YAAA;EAAA,sBAAmC,OAAA;EAC7F,WAAA,GAAc,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA,EAAU,YAAA;IAAc,IAAA;EAAA,sBAAmC,OAAA;EAC1G,cAAA,GAAiB,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA,EAAU,YAAA;IAAc,IAAA;EAAA,sBAAmC,OAAA;EAC7G,UAAA,GAAa,MAAA;IAAU,KAAA;IAAiB,MAAA,EAAQ,aAAA;EAAA,aAA2B,OAAA;AAAA;;;;;;;;cAUhE,YAAA;EAAA,QACH,QAAA;EAdyB;;;;;EAAA,QAoBzB,kBAAA;EAnBgB;;;EAwBxB,cAAA,CAAe,MAAA,EAAQ,aAAA;EAxBgD;;;EAuCvE,EAAA,WAAa,SAAA,EAAW,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,QAAA,CAAS,CAAA;EAtCxB;;;EAiDrB,gBAAA,CAAiB,MAAA;IAAU,MAAA,EAAQ,aAAA;EAAA,IAAe,OAAA;EAjDqD;;;;EA6DvG,gBAAA,CAAiB,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA,EAAU,YAAA;EAAA,IAAiB,OAAA;EA5DD;AAUpF;;EAmEQ,eAAA,CAAgB,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA,EAAU,YAAA;IAAc,IAAA;EAAA,IAAiB,OAAA;EAxC7C;;;EA2D7C,kBAAA,CAAmB,MAAA;IAAU,MAAA,EAAQ,aAAA;IAAe,QAAA,EAAU,YAAA;IAAc,IAAA;EAAA,IAAiB,OAAA;EAnBH;;;EAsC1F,cAAA,CAAe,MAAA;IAAU,KAAA;IAAiB,MAAA,EAAQ,aAAA;EAAA,IAAe,OAAA;EAgBrC;;;;;;;;EAAlC,gBAAA,CAAiB,MAAA,GAAQ,SAAA;EA9FZ;;;EA4Gb,KAAA;AAAA"}
|
|
@@ -9,6 +9,12 @@
|
|
|
9
9
|
var EventManager = class {
|
|
10
10
|
handlers = /* @__PURE__ */ new Map();
|
|
11
11
|
/**
|
|
12
|
+
* Snapshot of config-handler counts per event, captured at registerConfig().
|
|
13
|
+
* clearSfcHandlers() truncates each list back to this count, dropping
|
|
14
|
+
* any SFC-registered handlers that were appended after.
|
|
15
|
+
*/
|
|
16
|
+
configHandlerCount = /* @__PURE__ */ new Map();
|
|
17
|
+
/**
|
|
12
18
|
* Register handlers from the Maizzle config.
|
|
13
19
|
*/
|
|
14
20
|
registerConfig(config) {
|
|
@@ -21,6 +27,7 @@ var EventManager = class {
|
|
|
21
27
|
]) {
|
|
22
28
|
const handler = config[name];
|
|
23
29
|
if (typeof handler === "function") this.on(name, handler);
|
|
30
|
+
this.configHandlerCount.set(name, this.handlers.get(name)?.length ?? 0);
|
|
24
31
|
}
|
|
25
32
|
}
|
|
26
33
|
/**
|
|
@@ -38,19 +45,16 @@ var EventManager = class {
|
|
|
38
45
|
for (const handler of handlers) await handler(params);
|
|
39
46
|
}
|
|
40
47
|
/**
|
|
41
|
-
* Fire beforeRender — if a handler returns a string, it replaces
|
|
48
|
+
* Fire beforeRender — if a handler returns a string, it replaces
|
|
49
|
+
* `template.source` for subsequent handlers and the renderer.
|
|
42
50
|
*/
|
|
43
51
|
async fireBeforeRender(params) {
|
|
44
52
|
const handlers = this.handlers.get("beforeRender") ?? [];
|
|
45
|
-
let { template } = params;
|
|
46
53
|
for (const handler of handlers) {
|
|
47
|
-
const result = await handler(
|
|
48
|
-
|
|
49
|
-
template
|
|
50
|
-
});
|
|
51
|
-
if (typeof result === "string") template = result;
|
|
54
|
+
const result = await handler(params);
|
|
55
|
+
if (typeof result === "string") params.template.source = result;
|
|
52
56
|
}
|
|
53
|
-
return template;
|
|
57
|
+
return params.template.source;
|
|
54
58
|
}
|
|
55
59
|
/**
|
|
56
60
|
* Fire afterRender — if a handler returns a string, it replaces `html`.
|
|
@@ -92,10 +96,24 @@ var EventManager = class {
|
|
|
92
96
|
for (const handler of handlers) await handler(params);
|
|
93
97
|
}
|
|
94
98
|
/**
|
|
95
|
-
*
|
|
99
|
+
* Drop SFC-registered handlers, keep config-registered ones.
|
|
100
|
+
*
|
|
101
|
+
* Per default, only clears events whose scope is per-template
|
|
102
|
+
* (`beforeRender`, `afterRender`, `afterTransform`). Build-scoped events
|
|
103
|
+
* (`afterBuild`) accumulate across all templates and fire once at end of
|
|
104
|
+
* build. Pass an explicit list to override.
|
|
96
105
|
*/
|
|
97
|
-
clearSfcHandlers(
|
|
98
|
-
|
|
106
|
+
clearSfcHandlers(events = [
|
|
107
|
+
"beforeRender",
|
|
108
|
+
"afterRender",
|
|
109
|
+
"afterTransform"
|
|
110
|
+
]) {
|
|
111
|
+
for (const name of events) {
|
|
112
|
+
const handlers = this.handlers.get(name);
|
|
113
|
+
if (!handlers) continue;
|
|
114
|
+
const keep = this.configHandlerCount.get(name) ?? 0;
|
|
115
|
+
if (handlers.length > keep) this.handlers.set(name, handlers.slice(0, keep));
|
|
116
|
+
}
|
|
99
117
|
}
|
|
100
118
|
/**
|
|
101
119
|
* Clear all handlers entirely.
|
|
@@ -104,7 +122,7 @@ var EventManager = class {
|
|
|
104
122
|
this.handlers.clear();
|
|
105
123
|
}
|
|
106
124
|
};
|
|
107
|
-
|
|
108
125
|
//#endregion
|
|
109
126
|
export { EventManager };
|
|
110
|
-
|
|
127
|
+
|
|
128
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/events/index.ts"],"sourcesContent":["import type { ParsedPath } from 'node:path'\nimport type { MaizzleConfig } from '../types/index.ts'\n\nexport type EventName = 'beforeCreate' | 'beforeRender' | 'afterRender' | 'afterTransform' | 'afterBuild'\n\n/**\n * Info about the template currently being processed, passed to per-template\n * event handlers. `source` is the SFC file contents; `path` is the result of\n * `path.parse(absolutePath)` — `{ root, dir, base, ext, name }`.\n */\nexport interface TemplateInfo {\n source: string\n path: ParsedPath\n}\n\nexport interface EventMap {\n beforeCreate: (params: { config: MaizzleConfig }) => void | Promise<void>\n beforeRender: (params: { config: MaizzleConfig; template: TemplateInfo }) => string | void | Promise<string | void>\n afterRender: (params: { config: MaizzleConfig; template: TemplateInfo; html: string }) => string | void | Promise<string | void>\n afterTransform: (params: { config: MaizzleConfig; template: TemplateInfo; html: string }) => string | void | Promise<string | void>\n afterBuild: (params: { files: string[]; config: MaizzleConfig }) => void | Promise<void>\n}\n\n/**\n * Central event manager that collects handlers from config and useEvent() calls.\n *\n * Handlers are run in order: config handler first, then SFC handlers in registration order.\n * For events that return a value (beforeRender, afterRender, afterTransform),\n * the returned value replaces the corresponding input for the next handler.\n */\nexport class EventManager {\n private handlers = new Map<EventName, EventMap[EventName][]>()\n /**\n * Snapshot of config-handler counts per event, captured at registerConfig().\n * clearSfcHandlers() truncates each list back to this count, dropping\n * any SFC-registered handlers that were appended after.\n */\n private configHandlerCount = new Map<EventName, number>()\n\n /**\n * Register handlers from the Maizzle config.\n */\n registerConfig(config: MaizzleConfig) {\n const eventNames: EventName[] = ['beforeCreate', 'beforeRender', 'afterRender', 'afterTransform', 'afterBuild']\n\n for (const name of eventNames) {\n const handler = config[name]\n if (typeof handler === 'function') {\n this.on(name, handler as EventMap[typeof name])\n }\n this.configHandlerCount.set(name, this.handlers.get(name)?.length ?? 0)\n }\n }\n\n /**\n * Register a handler for an event (used by useEvent composable).\n */\n on<K extends EventName>(name: K, handler: EventMap[K]) {\n if (!this.handlers.has(name)) {\n this.handlers.set(name, [])\n }\n\n this.handlers.get(name)!.push(handler)\n }\n\n /**\n * Fire beforeCreate — runs all handlers, config is mutated in place.\n */\n async fireBeforeCreate(params: { config: MaizzleConfig }) {\n const handlers = this.handlers.get('beforeCreate') ?? []\n\n for (const handler of handlers) {\n await (handler as EventMap['beforeCreate'])(params)\n }\n }\n\n /**\n * Fire beforeRender — if a handler returns a string, it replaces\n * `template.source` for subsequent handlers and the renderer.\n */\n async fireBeforeRender(params: { config: MaizzleConfig; template: TemplateInfo }): Promise<string> {\n const handlers = this.handlers.get('beforeRender') ?? []\n\n for (const handler of handlers) {\n const result = await (handler as EventMap['beforeRender'])(params)\n\n if (typeof result === 'string') {\n params.template.source = result\n }\n }\n\n return params.template.source\n }\n\n /**\n * Fire afterRender — if a handler returns a string, it replaces `html`.\n */\n async fireAfterRender(params: { config: MaizzleConfig; template: TemplateInfo; html: string }): Promise<string> {\n const handlers = this.handlers.get('afterRender') ?? []\n\n let { html } = params\n\n for (const handler of handlers) {\n const result = await (handler as EventMap['afterRender'])({ config: params.config, template: params.template, html })\n\n if (typeof result === 'string') {\n html = result\n }\n }\n\n return html\n }\n\n /**\n * Fire afterTransform — if a handler returns a string, it replaces `html`.\n */\n async fireAfterTransform(params: { config: MaizzleConfig; template: TemplateInfo; html: string }): Promise<string> {\n const handlers = this.handlers.get('afterTransform') ?? []\n\n let { html } = params\n\n for (const handler of handlers) {\n const result = await (handler as EventMap['afterTransform'])({ config: params.config, template: params.template, html })\n\n if (typeof result === 'string') {\n html = result\n }\n }\n\n return html\n }\n\n /**\n * Fire afterBuild — runs all handlers with the file list.\n */\n async fireAfterBuild(params: { files: string[]; config: MaizzleConfig }) {\n const handlers = this.handlers.get('afterBuild') ?? []\n\n for (const handler of handlers) {\n await (handler as EventMap['afterBuild'])(params)\n }\n }\n\n /**\n * Drop SFC-registered handlers, keep config-registered ones.\n *\n * Per default, only clears events whose scope is per-template\n * (`beforeRender`, `afterRender`, `afterTransform`). Build-scoped events\n * (`afterBuild`) accumulate across all templates and fire once at end of\n * build. Pass an explicit list to override.\n */\n clearSfcHandlers(events: EventName[] = ['beforeRender', 'afterRender', 'afterTransform']) {\n for (const name of events) {\n const handlers = this.handlers.get(name)\n if (!handlers) continue\n const keep = this.configHandlerCount.get(name) ?? 0\n if (handlers.length > keep) {\n this.handlers.set(name, handlers.slice(0, keep))\n }\n }\n }\n\n /**\n * Clear all handlers entirely.\n */\n clear() {\n this.handlers.clear()\n }\n}\n"],"mappings":";;;;;;;;AA8BA,IAAa,eAAb,MAA0B;CACxB,2BAAmB,IAAI,IAAsC;;;;;;CAM7D,qCAA6B,IAAI,IAAuB;;;;CAKxD,eAAe,QAAuB;EAGpC,KAAK,MAAM,QAAQ;GAFc;GAAgB;GAAgB;GAAe;GAAkB;EAEtE,GAAG;GAC7B,MAAM,UAAU,OAAO;GACvB,IAAI,OAAO,YAAY,YACrB,KAAK,GAAG,MAAM,OAAgC;GAEhD,KAAK,mBAAmB,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,UAAU,CAAC;EACxE;CACF;;;;CAKA,GAAwB,MAAS,SAAsB;EACrD,IAAI,CAAC,KAAK,SAAS,IAAI,IAAI,GACzB,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC;EAG5B,KAAK,SAAS,IAAI,IAAI,CAAC,CAAE,KAAK,OAAO;CACvC;;;;CAKA,MAAM,iBAAiB,QAAmC;EACxD,MAAM,WAAW,KAAK,SAAS,IAAI,cAAc,KAAK,CAAC;EAEvD,KAAK,MAAM,WAAW,UACpB,MAAO,QAAqC,MAAM;CAEtD;;;;;CAMA,MAAM,iBAAiB,QAA4E;EACjG,MAAM,WAAW,KAAK,SAAS,IAAI,cAAc,KAAK,CAAC;EAEvD,KAAK,MAAM,WAAW,UAAU;GAC9B,MAAM,SAAS,MAAO,QAAqC,MAAM;GAEjE,IAAI,OAAO,WAAW,UACpB,OAAO,SAAS,SAAS;EAE7B;EAEA,OAAO,OAAO,SAAS;CACzB;;;;CAKA,MAAM,gBAAgB,QAA0F;EAC9G,MAAM,WAAW,KAAK,SAAS,IAAI,aAAa,KAAK,CAAC;EAEtD,IAAI,EAAE,SAAS;EAEf,KAAK,MAAM,WAAW,UAAU;GAC9B,MAAM,SAAS,MAAO,QAAoC;IAAE,QAAQ,OAAO;IAAQ,UAAU,OAAO;IAAU;GAAK,CAAC;GAEpH,IAAI,OAAO,WAAW,UACpB,OAAO;EAEX;EAEA,OAAO;CACT;;;;CAKA,MAAM,mBAAmB,QAA0F;EACjH,MAAM,WAAW,KAAK,SAAS,IAAI,gBAAgB,KAAK,CAAC;EAEzD,IAAI,EAAE,SAAS;EAEf,KAAK,MAAM,WAAW,UAAU;GAC9B,MAAM,SAAS,MAAO,QAAuC;IAAE,QAAQ,OAAO;IAAQ,UAAU,OAAO;IAAU;GAAK,CAAC;GAEvH,IAAI,OAAO,WAAW,UACpB,OAAO;EAEX;EAEA,OAAO;CACT;;;;CAKA,MAAM,eAAe,QAAoD;EACvE,MAAM,WAAW,KAAK,SAAS,IAAI,YAAY,KAAK,CAAC;EAErD,KAAK,MAAM,WAAW,UACpB,MAAO,QAAmC,MAAM;CAEpD;;;;;;;;;CAUA,iBAAiB,SAAsB;EAAC;EAAgB;EAAe;CAAgB,GAAG;EACxF,KAAK,MAAM,QAAQ,QAAQ;GACzB,MAAM,WAAW,KAAK,SAAS,IAAI,IAAI;GACvC,IAAI,CAAC,UAAU;GACf,MAAM,OAAO,KAAK,mBAAmB,IAAI,IAAI,KAAK;GAClD,IAAI,SAAS,SAAS,MACpB,KAAK,SAAS,IAAI,MAAM,SAAS,MAAM,GAAG,IAAI,CAAC;EAEnD;CACF;;;;CAKA,QAAQ;EACN,KAAK,SAAS,MAAM;CACtB;AACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { AttributesConfig, ComponentSource, CssConfig, EntitiesConfig, FilterFunction, FiltersConfig, HtmlConfig, MaizzleConfig, PlaintextConfig, UrlConfig, UrlQuery, UrlQueryOptions } from "./types/config.js";
|
|
2
|
+
import { build } from "./build.js";
|
|
3
|
+
import { defineConfig } from "./composables/defineConfig.js";
|
|
4
|
+
import { usePlaintext } from "./composables/usePlaintext.js";
|
|
5
|
+
import { useBaseUrl } from "./composables/useBaseUrl.js";
|
|
6
|
+
import { useConfig } from "./composables/useConfig.js";
|
|
7
|
+
import { useCurrentTemplate } from "./composables/useCurrentTemplate.js";
|
|
8
|
+
import { useDoctype } from "./composables/useDoctype.js";
|
|
9
|
+
import { useEvent } from "./composables/useEvent.js";
|
|
10
|
+
import { useFont } from "./composables/useFont.js";
|
|
11
|
+
import { useOutlookFallback } from "./composables/useOutlookFallback.js";
|
|
12
|
+
import { useOutputPath } from "./composables/useOutputPath.js";
|
|
13
|
+
import { usePreheader } from "./composables/usePreheader.js";
|
|
14
|
+
import { useTransformers } from "./composables/useTransformers.js";
|
|
15
|
+
import { useUrlQuery } from "./composables/useUrlQuery.js";
|
|
16
|
+
import { resolveConfig } from "./config/index.js";
|
|
17
|
+
import { maizzle } from "./plugin.js";
|
|
18
|
+
import { NormalizedComponentSource, normalizeComponentSources } from "./utils/componentSources.js";
|
|
19
|
+
import { CreateRendererOptions, RenderedTemplate, Renderer, createRenderer } from "./render/createRenderer.js";
|
|
20
|
+
import { RenderResult, render } from "./render/index.js";
|
|
21
|
+
import { serve } from "./serve.js";
|
|
22
|
+
import { PrepareOptions, prepare } from "./prepare.js";
|
|
23
|
+
import { createPlaintext } from "./plaintext.js";
|
|
24
|
+
import { inlineLink } from "./transformers/inlineLink.js";
|
|
25
|
+
import { urlQuery } from "./transformers/urlQuery.js";
|
|
26
|
+
import { BaseUrlOptions, base } from "./transformers/base.js";
|
|
27
|
+
import { entities } from "./transformers/entities.js";
|
|
28
|
+
import { safeSelectors } from "./transformers/safeSelectors.js";
|
|
29
|
+
import { attributeToStyle } from "./transformers/attributeToStyle.js";
|
|
30
|
+
import { InlineCssOptions, inlineCss } from "./transformers/inlineCss.js";
|
|
31
|
+
import { ShorthandCssOptions, shorthandCss } from "./transformers/shorthandCss.js";
|
|
32
|
+
import { sixHex } from "./transformers/sixHex.js";
|
|
33
|
+
import { RemoveAttributeOption, RemoveAttributeRule, removeAttributes } from "./transformers/removeAttributes.js";
|
|
34
|
+
import { addAttributes } from "./transformers/addAttributes.js";
|
|
35
|
+
import { PurgeCssOptions, purgeCss } from "./transformers/purgeCss.js";
|
|
36
|
+
import { filters } from "./transformers/filters/index.js";
|
|
37
|
+
import { replaceStrings } from "./transformers/replaceStrings.js";
|
|
38
|
+
import { FormatOptions, format } from "./transformers/format.js";
|
|
39
|
+
import { MinifyOptions, minify } from "./transformers/minify.js";
|
|
40
|
+
import { useHead } from "@unhead/vue";
|
|
41
|
+
export { type AttributesConfig, type BaseUrlOptions, type ComponentSource, type CreateRendererOptions, type CssConfig, type EntitiesConfig, type FilterFunction, type FiltersConfig, type FormatOptions, type HtmlConfig, type InlineCssOptions, type MaizzleConfig, type MinifyOptions, type NormalizedComponentSource, type PlaintextConfig, type PrepareOptions, type PurgeCssOptions, type RemoveAttributeOption, type RemoveAttributeRule, type RenderResult, type RenderedTemplate, type Renderer, type ShorthandCssOptions, type UrlConfig, type UrlQuery, type UrlQueryOptions, addAttributes, attributeToStyle, base, build, createPlaintext, createRenderer, defineConfig, entities, filters, format, inlineCss, inlineLink, maizzle, minify, normalizeComponentSources, prepare, purgeCss, removeAttributes, render, replaceStrings, resolveConfig, safeSelectors, serve, shorthandCss, sixHex, urlQuery, useBaseUrl, useConfig, useCurrentTemplate, useDoctype, useEvent, useFont, useHead, useOutlookFallback, useOutputPath, usePlaintext, usePreheader, useTransformers, useUrlQuery };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useConfig } from "./composables/useConfig.js";
|
|
2
|
+
import { defineConfig } from "./composables/defineConfig.js";
|
|
3
|
+
import { resolveConfig } from "./config/index.js";
|
|
4
|
+
import { normalizeComponentSources } from "./utils/componentSources.js";
|
|
5
|
+
import { createRenderer } from "./render/createRenderer.js";
|
|
6
|
+
import { inlineLink } from "./transformers/inlineLink.js";
|
|
7
|
+
import { safeSelectors } from "./transformers/safeSelectors.js";
|
|
8
|
+
import { attributeToStyle } from "./transformers/attributeToStyle.js";
|
|
9
|
+
import { inlineCss } from "./transformers/inlineCss.js";
|
|
10
|
+
import { removeAttributes } from "./transformers/removeAttributes.js";
|
|
11
|
+
import { shorthandCss } from "./transformers/shorthandCss.js";
|
|
12
|
+
import { sixHex } from "./transformers/sixHex.js";
|
|
13
|
+
import { addAttributes } from "./transformers/addAttributes.js";
|
|
14
|
+
import { filters } from "./transformers/filters/index.js";
|
|
15
|
+
import { base } from "./transformers/base.js";
|
|
16
|
+
import { entities } from "./transformers/entities.js";
|
|
17
|
+
import { urlQuery } from "./transformers/urlQuery.js";
|
|
18
|
+
import { purgeCss } from "./transformers/purgeCss.js";
|
|
19
|
+
import { replaceStrings } from "./transformers/replaceStrings.js";
|
|
20
|
+
import { format } from "./transformers/format.js";
|
|
21
|
+
import { minify } from "./transformers/minify.js";
|
|
22
|
+
import { createPlaintext } from "./plaintext.js";
|
|
23
|
+
import { useCurrentTemplate } from "./composables/useCurrentTemplate.js";
|
|
24
|
+
import { build } from "./build.js";
|
|
25
|
+
import { maizzle } from "./plugin.js";
|
|
26
|
+
import { render } from "./render/index.js";
|
|
27
|
+
import { serve } from "./serve.js";
|
|
28
|
+
import { prepare } from "./prepare.js";
|
|
29
|
+
import { useDoctype } from "./composables/useDoctype.js";
|
|
30
|
+
import { useEvent } from "./composables/useEvent.js";
|
|
31
|
+
import { useFont } from "./composables/useFont.js";
|
|
32
|
+
import { useOutlookFallback } from "./composables/useOutlookFallback.js";
|
|
33
|
+
import { useOutputPath } from "./composables/useOutputPath.js";
|
|
34
|
+
import { usePlaintext } from "./composables/usePlaintext.js";
|
|
35
|
+
import { usePreheader } from "./composables/usePreheader.js";
|
|
36
|
+
import { useTransformers } from "./composables/useTransformers.js";
|
|
37
|
+
import { useBaseUrl } from "./composables/useBaseUrl.js";
|
|
38
|
+
import { useUrlQuery } from "./composables/useUrlQuery.js";
|
|
39
|
+
import { useHead } from "@unhead/vue";
|
|
40
|
+
export { addAttributes, attributeToStyle, base, build, createPlaintext, createRenderer, defineConfig, entities, filters, format, inlineCss, inlineLink, maizzle, minify, normalizeComponentSources, prepare, purgeCss, removeAttributes, render, replaceStrings, resolveConfig, safeSelectors, serve, shorthandCss, sixHex, urlQuery, useBaseUrl, useConfig, useCurrentTemplate, useDoctype, useEvent, useFont, useHead, useOutlookFallback, useOutputPath, usePlaintext, usePreheader, useTransformers, useUrlQuery };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plaintext.d.ts","names":[],"sources":["../src/plaintext.ts"],"mappings":";iBAUgB,eAAA,CAAgB,IAAA,UAAc,OAAA,GAAU,MAAM"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import defu
|
|
1
|
+
import defu from "defu";
|
|
2
2
|
import { stripHtml } from "string-strip-html";
|
|
3
|
-
|
|
4
3
|
//#region src/plaintext.ts
|
|
5
4
|
const defaults = { dumpLinkHrefsNearby: {
|
|
6
5
|
enabled: true,
|
|
7
6
|
putOnNewLine: true
|
|
8
7
|
} };
|
|
9
8
|
function createPlaintext(html, options) {
|
|
10
|
-
return stripHtml(html, defu
|
|
9
|
+
return stripHtml(html, defu(options, defaults)).result;
|
|
11
10
|
}
|
|
12
|
-
|
|
13
11
|
//#endregion
|
|
14
12
|
export { createPlaintext };
|
|
15
|
-
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=plaintext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plaintext.js","names":[],"sources":["../src/plaintext.ts"],"sourcesContent":["import { stripHtml } from 'string-strip-html'\nimport defu from 'defu'\n\nconst defaults = {\n dumpLinkHrefsNearby: {\n enabled: true,\n putOnNewLine: true,\n },\n}\n\nexport function createPlaintext(html: string, options?: Record<string, unknown>): string {\n return stripHtml(html, defu(options, defaults)).result\n}\n"],"mappings":";;;AAGA,MAAM,WAAW,EACf,qBAAqB;CACnB,SAAS;CACT,cAAc;AAChB,EACF;AAEA,SAAgB,gBAAgB,MAAc,SAA2C;CACvF,OAAO,UAAU,MAAM,KAAK,SAAS,QAAQ,CAAC,CAAC,CAAC;AAClD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MaizzleConfig } from "./types/config.
|
|
1
|
+
import { MaizzleConfig } from "./types/config.js";
|
|
2
2
|
import { Plugin } from "vite";
|
|
3
3
|
|
|
4
4
|
//#region src/plugin.d.ts
|
|
@@ -14,4 +14,4 @@ import { Plugin } from "vite";
|
|
|
14
14
|
declare function maizzle(configInput?: Partial<MaizzleConfig>): Plugin[];
|
|
15
15
|
//#endregion
|
|
16
16
|
export { maizzle };
|
|
17
|
-
//# sourceMappingURL=plugin.d.
|
|
17
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","names":[],"sources":["../src/plugin.ts"],"mappings":";;;;;;;AAaA;;;;;;iBAAgB,OAAA,CAAQ,WAAA,GAAc,OAAA,CAAQ,aAAA,IAAiB,MAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { isLaravel } from "./utils/detect.
|
|
2
|
-
|
|
1
|
+
import { isLaravel } from "./utils/detect.js";
|
|
3
2
|
//#region src/plugin.ts
|
|
4
3
|
/**
|
|
5
4
|
* Maizzle Vite plugin for use inside an existing Vite project.
|
|
@@ -30,19 +29,19 @@ function maizzle(configInput) {
|
|
|
30
29
|
await maizzleServer.close();
|
|
31
30
|
maizzleServer = null;
|
|
32
31
|
}
|
|
33
|
-
const { serve } = await import("./serve.
|
|
32
|
+
const { serve } = await import("./serve.js");
|
|
34
33
|
maizzleServer = await serve({ config: configInput });
|
|
35
|
-
hostServer.httpServer?.on("close", () => {
|
|
34
|
+
hostServer.httpServer?.on("close", async () => {
|
|
36
35
|
if (maizzleServer) {
|
|
37
|
-
maizzleServer.close();
|
|
36
|
+
await maizzleServer.close();
|
|
38
37
|
maizzleServer = null;
|
|
39
38
|
}
|
|
40
39
|
});
|
|
41
40
|
},
|
|
42
41
|
async closeBundle() {
|
|
43
42
|
if (this.meta.watchMode) return;
|
|
44
|
-
const { build } = await import("./build.
|
|
45
|
-
await build(
|
|
43
|
+
const { build } = await import("./build.js");
|
|
44
|
+
await build(configInput);
|
|
46
45
|
},
|
|
47
46
|
async buildEnd() {
|
|
48
47
|
if (maizzleServer) {
|
|
@@ -52,7 +51,7 @@ function maizzle(configInput) {
|
|
|
52
51
|
}
|
|
53
52
|
}];
|
|
54
53
|
}
|
|
55
|
-
|
|
56
54
|
//#endregion
|
|
57
55
|
export { maizzle };
|
|
58
|
-
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","names":[],"sources":["../src/plugin.ts"],"sourcesContent":["import type { Plugin, ViteDevServer } from 'vite'\nimport type { MaizzleConfig } from './types/index.ts'\nimport { isLaravel } from './utils/detect.ts'\n\n/**\n * Maizzle Vite plugin for use inside an existing Vite project.\n *\n * - During `vite dev`: starts a separate Maizzle dev server on its own port\n * - During `vite build`: builds email templates alongside the host app\n *\n * Does NOT inject Vue, Tailwind, or any other plugins into the host's pipeline.\n * The host app manages its own stack. Maizzle runs in its own process.\n */\nexport function maizzle(configInput?: Partial<MaizzleConfig>): Plugin[] {\n let maizzleServer: ViteDevServer | null = null\n\n // Auto-configure defaults for Laravel projects\n if (isLaravel()) {\n const existing = configInput?.components?.source\n const laravelComponentDir = 'resources/js/components/email'\n\n if (!existing) {\n configInput = {\n ...configInput,\n components: {\n ...configInput?.components,\n source: [laravelComponentDir],\n },\n }\n }\n }\n\n return [{\n name: 'maizzle',\n\n async configureServer(hostServer) {\n // Close previous Maizzle server if the host restarts\n if (maizzleServer) {\n await maizzleServer.close()\n maizzleServer = null\n }\n\n const { serve } = await import('./serve.ts')\n maizzleServer = await serve({ config: configInput })\n\n // Clean up when the host server closes\n hostServer.httpServer?.on('close', async () => {\n if (maizzleServer) {\n await maizzleServer.close()\n maizzleServer = null\n }\n })\n },\n\n async closeBundle() {\n if (this.meta.watchMode) return\n\n const { build } = await import('./build.ts')\n await build(configInput)\n },\n\n async buildEnd() {\n if (maizzleServer) {\n await maizzleServer.close()\n maizzleServer = null\n }\n },\n }]\n}\n"],"mappings":";;;;;;;;;;;AAaA,SAAgB,QAAQ,aAAgD;CACtE,IAAI,gBAAsC;CAG1C,IAAI,UAAU,GAAG;EACf,MAAM,WAAW,aAAa,YAAY;EAC1C,MAAM,sBAAsB;EAE5B,IAAI,CAAC,UACH,cAAc;GACZ,GAAG;GACH,YAAY;IACV,GAAG,aAAa;IAChB,QAAQ,CAAC,mBAAmB;GAC9B;EACF;CAEJ;CAEA,OAAO,CAAC;EACN,MAAM;EAEN,MAAM,gBAAgB,YAAY;GAEhC,IAAI,eAAe;IACjB,MAAM,cAAc,MAAM;IAC1B,gBAAgB;GAClB;GAEA,MAAM,EAAE,UAAU,MAAM,OAAO;GAC/B,gBAAgB,MAAM,MAAM,EAAE,QAAQ,YAAY,CAAC;GAGnD,WAAW,YAAY,GAAG,SAAS,YAAY;IAC7C,IAAI,eAAe;KACjB,MAAM,cAAc,MAAM;KAC1B,gBAAgB;IAClB;GACF,CAAC;EACH;EAEA,MAAM,cAAc;GAClB,IAAI,KAAK,KAAK,WAAW;GAEzB,MAAM,EAAE,UAAU,MAAM,OAAO;GAC/B,MAAM,MAAM,WAAW;EACzB;EAEA,MAAM,WAAW;GACf,IAAI,eAAe;IACjB,MAAM,cAAc,MAAM;IAC1B,gBAAgB;GAClB;EACF;CACF,CAAC;AACH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MaizzleConfig } from "../../types/config.
|
|
1
|
+
import { MaizzleConfig } from "../../types/config.js";
|
|
2
2
|
import postcss from "postcss";
|
|
3
3
|
|
|
4
4
|
//#region src/plugins/postcss/mergeMediaQueries.d.ts
|
|
@@ -15,4 +15,4 @@ import postcss from "postcss";
|
|
|
15
15
|
declare function mergeMediaQueries(config: MaizzleConfig): postcss.Plugin | null;
|
|
16
16
|
//#endregion
|
|
17
17
|
export { mergeMediaQueries };
|
|
18
|
-
//# sourceMappingURL=mergeMediaQueries.d.
|
|
18
|
+
//# sourceMappingURL=mergeMediaQueries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeMediaQueries.d.ts","names":[],"sources":["../../../src/plugins/postcss/mergeMediaQueries.ts"],"mappings":";;;;;;AAcA;;;;;;;;iBAAgB,iBAAA,CAAkB,MAAA,EAAQ,aAAA,GAAgB,OAAA,CAAQ,MAAM"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import sortMediaQueries from "postcss-sort-media-queries";
|
|
2
|
-
|
|
3
2
|
//#region src/plugins/postcss/mergeMediaQueries.ts
|
|
4
3
|
/**
|
|
5
4
|
* Sorts and merges CSS media queries using postcss-sort-media-queries.
|
|
@@ -16,7 +15,7 @@ function mergeMediaQueries(config) {
|
|
|
16
15
|
if (media === false) return null;
|
|
17
16
|
return sortMediaQueries({ sort: (typeof media === "object" ? media : {}).sort ?? "mobile-first" });
|
|
18
17
|
}
|
|
19
|
-
|
|
20
18
|
//#endregion
|
|
21
19
|
export { mergeMediaQueries };
|
|
22
|
-
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=mergeMediaQueries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeMediaQueries.js","names":[],"sources":["../../../src/plugins/postcss/mergeMediaQueries.ts"],"sourcesContent":["import sortMediaQueries from 'postcss-sort-media-queries'\nimport type postcss from 'postcss'\nimport type { MaizzleConfig } from '../../types/config.ts'\n\n/**\n * Sorts and merges CSS media queries using postcss-sort-media-queries.\n *\n * Enabled by default. Opt out with css: { media: false }.\n *\n * Config examples:\n * css: { media: true } // merge, mobile-first sort (default)\n * css: { media: { sort: 'desktop-first' } } // merge, desktop-first sort\n * css: { media: false } // disabled\n */\nexport function mergeMediaQueries(config: MaizzleConfig): postcss.Plugin | null {\n const media = config.css?.media\n\n if (media === false) return null\n\n const options = typeof media === 'object' ? media : {}\n const sort = options.sort ?? 'mobile-first'\n\n return sortMediaQueries({ sort }) as postcss.Plugin\n}\n"],"mappings":";;;;;;;;;;;;AAcA,SAAgB,kBAAkB,QAA8C;CAC9E,MAAM,QAAQ,OAAO,KAAK;CAE1B,IAAI,UAAU,OAAO,OAAO;CAK5B,OAAO,iBAAiB,EAAE,OAHV,OAAO,UAAU,WAAW,QAAQ,CAAC,EAAA,CAChC,QAAQ,eAEE,CAAC;AAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pruneVars.d.ts","names":[],"sources":["../../../src/plugins/postcss/pruneVars.ts"],"mappings":";;;cAKyD,QAAA,QAYtC,MAAM;AAAA,cA2DZ,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pruneVars.js","names":[],"sources":["../../../src/plugins/postcss/pruneVars.ts"],"sourcesContent":["/**\n * postcss-prune-var\n * Removes unused CSS custom properties.\n */\n\nimport type { Declaration, Plugin, Root } from 'postcss';\n\nconst PLUGIN_NAME = 'postcss-prune-var';\n\nconst VAR_RE = /var\\(\\s*(--[^ ,);]+)/g;\n\ninterface VarRecord {\n uses: number;\n declarations: Set<Declaration>;\n dependencies: Set<string>;\n}\n\nexport default (): Plugin => {\n return {\n postcssPlugin: PLUGIN_NAME,\n\n Once(root: Root) {\n const records = new Map<string, VarRecord>();\n const usedVars = new Set<string>();\n\n const getRecord = (name: string): VarRecord => {\n let r = records.get(name);\n if (!r) {\n r = { uses: 0, declarations: new Set(), dependencies: new Set() };\n records.set(name, r);\n }\n return r;\n };\n\n const registerUse = (name: string, seen = new Set<string>()) => {\n const r = getRecord(name);\n r.uses++;\n seen.add(name);\n for (const dep of r.dependencies) {\n if (!seen.has(dep)) registerUse(dep, seen);\n }\n };\n\n // Build dependency graph\n root.walkDecls((decl) => {\n const isVar = decl.prop.startsWith('--');\n\n if (isVar) getRecord(decl.prop).declarations.add(decl);\n\n if (!decl.value.includes('var(')) return;\n\n let m;\n VAR_RE.lastIndex = 0;\n while ((m = VAR_RE.exec(decl.value))) {\n const ref = m[1].trim();\n if (isVar) {\n getRecord(decl.prop).dependencies.add(ref);\n } else {\n usedVars.add(ref);\n }\n }\n });\n\n // Propagate usage through the graph\n for (const v of usedVars) registerUse(v);\n\n // Remove declarations with zero uses\n for (const { uses, declarations } of records.values()) {\n if (uses === 0) {\n for (const decl of declarations) decl.remove();\n }\n }\n },\n };\n};\n\nexport const postcss = true;\n"],"mappings":";AAOA,MAAM,cAAc;AAEpB,MAAM,SAAS;AAQf,IAAA,0BAA6B;CAC3B,OAAO;EACL,eAAe;EAEf,KAAK,MAAY;GACf,MAAM,0BAAU,IAAI,IAAuB;GAC3C,MAAM,2BAAW,IAAI,IAAY;GAEjC,MAAM,aAAa,SAA4B;IAC7C,IAAI,IAAI,QAAQ,IAAI,IAAI;IACxB,IAAI,CAAC,GAAG;KACN,IAAI;MAAE,MAAM;MAAG,8BAAc,IAAI,IAAI;MAAG,8BAAc,IAAI,IAAI;KAAE;KAChE,QAAQ,IAAI,MAAM,CAAC;IACrB;IACA,OAAO;GACT;GAEA,MAAM,eAAe,MAAc,uBAAO,IAAI,IAAY,MAAM;IAC9D,MAAM,IAAI,UAAU,IAAI;IACxB,EAAE;IACF,KAAK,IAAI,IAAI;IACb,KAAK,MAAM,OAAO,EAAE,cAClB,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG,YAAY,KAAK,IAAI;GAE7C;GAGA,KAAK,WAAW,SAAS;IACvB,MAAM,QAAQ,KAAK,KAAK,WAAW,IAAI;IAEvC,IAAI,OAAO,UAAU,KAAK,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI;IAErD,IAAI,CAAC,KAAK,MAAM,SAAS,MAAM,GAAG;IAElC,IAAI;IACJ,OAAO,YAAY;IACnB,OAAQ,IAAI,OAAO,KAAK,KAAK,KAAK,GAAI;KACpC,MAAM,MAAM,EAAE,EAAE,CAAC,KAAK;KACtB,IAAI,OACF,UAAU,KAAK,IAAI,CAAC,CAAC,aAAa,IAAI,GAAG;UAEzC,SAAS,IAAI,GAAG;IAEpB;GACF,CAAC;GAGD,KAAK,MAAM,KAAK,UAAU,YAAY,CAAC;GAGvC,KAAK,MAAM,EAAE,MAAM,kBAAkB,QAAQ,OAAO,GAClD,IAAI,SAAS,GACX,KAAK,MAAM,QAAQ,cAAc,KAAK,OAAO;EAGnD;CACF;AACF;AAEA,MAAa,UAAU"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Plugin } from "postcss";
|
|
2
|
+
|
|
3
|
+
//#region src/plugins/postcss/quoteFontFamilies.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Re-quote multi-word font-family identifiers that lightningcss "optimised"
|
|
6
|
+
* by removing quotes. CSS allows space-separated identifiers as a family
|
|
7
|
+
* name, but Google Fonts (and most style guides) prescribe quoted form.
|
|
8
|
+
*/
|
|
9
|
+
declare function quoteFontFamilies(): Plugin;
|
|
10
|
+
declare const postcss = true;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { postcss, quoteFontFamilies };
|
|
13
|
+
//# sourceMappingURL=quoteFontFamilies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quoteFontFamilies.d.ts","names":[],"sources":["../../../src/plugins/postcss/quoteFontFamilies.ts"],"mappings":";;;;;AA+CA;;;iBAAgB,iBAAA,IAAqB,MAAM;AAAA,cA6B9B,OAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
//#region src/plugins/postcss/quoteFontFamilies.ts
|
|
2
|
+
const GENERIC_KEYWORDS = new Set([
|
|
3
|
+
"serif",
|
|
4
|
+
"sans-serif",
|
|
5
|
+
"monospace",
|
|
6
|
+
"cursive",
|
|
7
|
+
"fantasy",
|
|
8
|
+
"system-ui",
|
|
9
|
+
"ui-serif",
|
|
10
|
+
"ui-sans-serif",
|
|
11
|
+
"ui-monospace",
|
|
12
|
+
"ui-rounded",
|
|
13
|
+
"emoji",
|
|
14
|
+
"math",
|
|
15
|
+
"fangsong",
|
|
16
|
+
"inherit",
|
|
17
|
+
"initial",
|
|
18
|
+
"unset",
|
|
19
|
+
"revert",
|
|
20
|
+
"revert-layer"
|
|
21
|
+
]);
|
|
22
|
+
/**
|
|
23
|
+
* Split a font-family value on top-level commas only, preserving quoted
|
|
24
|
+
* strings and parenthesised groups like `var(...)`.
|
|
25
|
+
*/
|
|
26
|
+
function splitFamilies(value) {
|
|
27
|
+
const parts = [];
|
|
28
|
+
let depth = 0;
|
|
29
|
+
let quote = null;
|
|
30
|
+
let start = 0;
|
|
31
|
+
for (let i = 0; i < value.length; i++) {
|
|
32
|
+
const ch = value[i];
|
|
33
|
+
if (quote) {
|
|
34
|
+
if (ch === "\\") {
|
|
35
|
+
i++;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (ch === quote) quote = null;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (ch === "\"" || ch === "'") {
|
|
42
|
+
quote = ch;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (ch === "(") depth++;
|
|
46
|
+
else if (ch === ")") depth--;
|
|
47
|
+
else if (ch === "," && depth === 0) {
|
|
48
|
+
parts.push(value.slice(start, i).trim());
|
|
49
|
+
start = i + 1;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
parts.push(value.slice(start).trim());
|
|
53
|
+
return parts.filter(Boolean);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Re-quote multi-word font-family identifiers that lightningcss "optimised"
|
|
57
|
+
* by removing quotes. CSS allows space-separated identifiers as a family
|
|
58
|
+
* name, but Google Fonts (and most style guides) prescribe quoted form.
|
|
59
|
+
*/
|
|
60
|
+
function quoteFontFamilies() {
|
|
61
|
+
return {
|
|
62
|
+
postcssPlugin: "quote-font-families",
|
|
63
|
+
Declaration: { "font-family": (decl) => {
|
|
64
|
+
const value = decl.value;
|
|
65
|
+
if (!value || !/\s/.test(value)) return;
|
|
66
|
+
const families = splitFamilies(value);
|
|
67
|
+
let changed = false;
|
|
68
|
+
const fixed = families.map((token) => {
|
|
69
|
+
if (token.startsWith("\"") || token.startsWith("'")) return token;
|
|
70
|
+
if (token.startsWith("var(")) return token;
|
|
71
|
+
if (!token.includes(" ")) return token;
|
|
72
|
+
if (GENERIC_KEYWORDS.has(token.toLowerCase())) return token;
|
|
73
|
+
changed = true;
|
|
74
|
+
return `"${token}"`;
|
|
75
|
+
});
|
|
76
|
+
if (changed) decl.value = fixed.join(", ");
|
|
77
|
+
} }
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const postcss = true;
|
|
81
|
+
//#endregion
|
|
82
|
+
export { postcss, quoteFontFamilies };
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=quoteFontFamilies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quoteFontFamilies.js","names":[],"sources":["../../../src/plugins/postcss/quoteFontFamilies.ts"],"sourcesContent":["import type { Plugin } from 'postcss'\n\nconst GENERIC_KEYWORDS = new Set([\n 'serif', 'sans-serif', 'monospace', 'cursive', 'fantasy',\n 'system-ui', 'ui-serif', 'ui-sans-serif', 'ui-monospace', 'ui-rounded',\n 'emoji', 'math', 'fangsong',\n 'inherit', 'initial', 'unset', 'revert', 'revert-layer',\n])\n\n/**\n * Split a font-family value on top-level commas only, preserving quoted\n * strings and parenthesised groups like `var(...)`.\n */\nfunction splitFamilies(value: string): string[] {\n const parts: string[] = []\n let depth = 0\n let quote: string | null = null\n let start = 0\n\n for (let i = 0; i < value.length; i++) {\n const ch = value[i]\n if (quote) {\n if (ch === '\\\\') { i++; continue }\n if (ch === quote) quote = null\n continue\n }\n if (ch === '\"' || ch === \"'\") {\n quote = ch\n continue\n }\n if (ch === '(') depth++\n else if (ch === ')') depth--\n else if (ch === ',' && depth === 0) {\n parts.push(value.slice(start, i).trim())\n start = i + 1\n }\n }\n\n parts.push(value.slice(start).trim())\n return parts.filter(Boolean)\n}\n\n/**\n * Re-quote multi-word font-family identifiers that lightningcss \"optimised\"\n * by removing quotes. CSS allows space-separated identifiers as a family\n * name, but Google Fonts (and most style guides) prescribe quoted form.\n */\nexport function quoteFontFamilies(): Plugin {\n return {\n postcssPlugin: 'quote-font-families',\n Declaration: {\n 'font-family': (decl) => {\n const value = decl.value\n if (!value || !/\\s/.test(value)) return\n\n const families = splitFamilies(value)\n let changed = false\n\n const fixed = families.map((token) => {\n if (token.startsWith('\"') || token.startsWith(\"'\")) return token\n if (token.startsWith('var(')) return token\n if (!token.includes(' ')) return token\n if (GENERIC_KEYWORDS.has(token.toLowerCase())) return token\n\n changed = true\n return `\"${token}\"`\n })\n\n if (changed) {\n decl.value = fixed.join(', ')\n }\n },\n },\n }\n}\n\nexport const postcss = true\n"],"mappings":";AAEA,MAAM,mBAAmB,IAAI,IAAI;CAC/B;CAAS;CAAc;CAAa;CAAW;CAC/C;CAAa;CAAY;CAAiB;CAAgB;CAC1D;CAAS;CAAQ;CACjB;CAAW;CAAW;CAAS;CAAU;AAC3C,CAAC;;;;;AAMD,SAAS,cAAc,OAAyB;CAC9C,MAAM,QAAkB,CAAC;CACzB,IAAI,QAAQ;CACZ,IAAI,QAAuB;CAC3B,IAAI,QAAQ;CAEZ,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,MAAM,KAAK,MAAM;EACjB,IAAI,OAAO;GACT,IAAI,OAAO,MAAM;IAAE;IAAK;GAAS;GACjC,IAAI,OAAO,OAAO,QAAQ;GAC1B;EACF;EACA,IAAI,OAAO,QAAO,OAAO,KAAK;GAC5B,QAAQ;GACR;EACF;EACA,IAAI,OAAO,KAAK;OACX,IAAI,OAAO,KAAK;OAChB,IAAI,OAAO,OAAO,UAAU,GAAG;GAClC,MAAM,KAAK,MAAM,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;GACvC,QAAQ,IAAI;EACd;CACF;CAEA,MAAM,KAAK,MAAM,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC;CACpC,OAAO,MAAM,OAAO,OAAO;AAC7B;;;;;;AAOA,SAAgB,oBAA4B;CAC1C,OAAO;EACL,eAAe;EACf,aAAa,EACX,gBAAgB,SAAS;GACvB,MAAM,QAAQ,KAAK;GACnB,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,GAAG;GAEjC,MAAM,WAAW,cAAc,KAAK;GACpC,IAAI,UAAU;GAEd,MAAM,QAAQ,SAAS,KAAK,UAAU;IACpC,IAAI,MAAM,WAAW,IAAG,KAAK,MAAM,WAAW,GAAG,GAAG,OAAO;IAC3D,IAAI,MAAM,WAAW,MAAM,GAAG,OAAO;IACrC,IAAI,CAAC,MAAM,SAAS,GAAG,GAAG,OAAO;IACjC,IAAI,iBAAiB,IAAI,MAAM,YAAY,CAAC,GAAG,OAAO;IAEtD,UAAU;IACV,OAAO,IAAI,MAAM;GACnB,CAAC;GAED,IAAI,SACF,KAAK,QAAQ,MAAM,KAAK,IAAI;EAEhC,EACF;CACF;AACF;AAEA,MAAa,UAAU"}
|
|
@@ -9,4 +9,4 @@ declare const _default: (options: RemoveDeclarationsOptions) => Plugin;
|
|
|
9
9
|
declare const postcss = true;
|
|
10
10
|
//#endregion
|
|
11
11
|
export { RemoveDeclarationsOptions, RemoveValue, _default as default, postcss };
|
|
12
|
-
//# sourceMappingURL=removeDeclarations.d.
|
|
12
|
+
//# sourceMappingURL=removeDeclarations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeDeclarations.d.ts","names":[],"sources":["../../../src/plugins/postcss/removeDeclarations.ts"],"mappings":";;;KA0BY,WAAA,6BAIR,MAAM;AAAA,UAEO,yBAAA;EACf,MAAA,EAAQ,MAAM,SAAS,WAAA;AAAA;AAAA,cACxB,QAAA,GAQe,OAAA,EAAS,yBAAA,KAA4B,MAAM;AAAA,cAyD9C,OAAA"}
|
|
@@ -39,7 +39,7 @@ var removeDeclarations_default = (options) => {
|
|
|
39
39
|
};
|
|
40
40
|
};
|
|
41
41
|
const postcss = true;
|
|
42
|
-
|
|
43
42
|
//#endregion
|
|
44
43
|
export { removeDeclarations_default as default, postcss };
|
|
45
|
-
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=removeDeclarations.js.map
|