@maizzle/framework 6.0.0-rc.2 → 6.0.0-rc.20
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 +20 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/{build.mjs → build.js} +33 -19
- package/dist/build.js.map +1 -0
- package/dist/components/Body.vue +128 -0
- package/dist/components/Button.vue +148 -52
- package/dist/components/CodeBlock.vue +69 -0
- package/dist/components/CodeInline.vue +49 -0
- package/dist/components/Column.vue +108 -0
- package/dist/components/Container.vue +123 -0
- package/dist/components/Font.vue +96 -0
- package/dist/components/Head.vue +30 -0
- package/dist/components/Heading.vue +28 -0
- package/dist/components/Hr.vue +33 -0
- package/dist/components/Html.vue +137 -0
- package/dist/components/Img.vue +70 -0
- package/dist/components/Layout.vue +143 -0
- package/dist/components/Link.vue +26 -0
- package/dist/components/Markdown.vue +89 -0
- package/dist/components/MarkdownLayout.vue +39 -0
- package/dist/components/NotPlaintext.vue +14 -0
- package/dist/components/Outlook.vue +74 -11
- package/dist/components/OutlookBg.vue +241 -0
- package/dist/components/Overlap.vue +156 -0
- package/dist/components/Plaintext.vue +14 -0
- package/dist/components/Preheader.vue +15 -0
- package/dist/components/QrCode.vue +157 -0
- package/dist/components/Raw.vue +28 -0
- package/dist/components/Row.vue +184 -0
- package/dist/components/Section.vue +124 -0
- package/dist/components/Spacer.vue +70 -21
- package/dist/components/Tailwind.vue +43 -0
- package/dist/components/Text.vue +29 -0
- package/dist/components/utils.d.ts +28 -0
- package/dist/components/utils.d.ts.map +1 -0
- package/dist/components/utils.js +50 -0
- package/dist/components/utils.js.map +1 -0
- package/dist/components/utils.ts +51 -0
- package/dist/composables/{defineConfig.d.mts → defineConfig.d.ts} +2 -2
- package/dist/composables/defineConfig.d.ts.map +1 -0
- package/dist/composables/{defineConfig.mjs → defineConfig.js} +4 -5
- 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.mjs → renderContext.js} +2 -2
- 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.mts → useConfig.d.ts} +2 -2
- package/dist/composables/useConfig.d.ts.map +1 -0
- package/dist/composables/{useConfig.mjs → useConfig.js} +2 -3
- package/dist/composables/useConfig.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} +2 -2
- package/dist/composables/useEvent.d.ts.map +1 -0
- package/dist/composables/{useEvent.mjs → useEvent.js} +3 -4
- 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/{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 +24 -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.mts → index.d.ts} +4 -4
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/{index.mjs → index.js} +12 -10
- package/dist/config/index.js.map +1 -0
- package/dist/events/{index.d.mts → index.d.ts} +10 -4
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/{index.mjs → index.js} +21 -5
- package/dist/events/index.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.js +37 -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.js +57 -0
- 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 +144 -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.js +68 -0
- 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/{createRenderer.d.mts → createRenderer.d.ts} +15 -7
- package/dist/render/createRenderer.d.ts.map +1 -0
- package/dist/render/createRenderer.js +319 -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 +53 -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/plugins/codeBlockExtract.d.ts +14 -0
- package/dist/render/plugins/codeBlockExtract.d.ts.map +1 -0
- package/dist/render/plugins/codeBlockExtract.js +34 -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} +4 -2
- package/dist/serve.d.ts.map +1 -0
- package/dist/{serve.mjs → serve.js} +203 -79
- 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 +911 -0
- package/dist/server/compatibility.js.map +1 -0
- package/dist/server/email.d.ts +17 -0
- package/dist/server/email.d.ts.map +1 -0
- package/dist/server/email.js +40 -0
- 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 +339 -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/App.vue +253 -77
- package/dist/server/ui/components/SidebarClose.vue +12 -0
- package/dist/server/ui/components/ui/checkbox/Checkbox.vue +35 -0
- package/dist/server/ui/components/ui/checkbox/index.ts +1 -0
- package/dist/server/ui/components/ui/command/Command.vue +5 -1
- package/dist/server/ui/components/ui/command/CommandDialog.vue +1 -1
- package/dist/server/ui/components/ui/command/CommandInput.vue +19 -1
- package/dist/server/ui/components/ui/command/CommandItem.vue +1 -1
- package/dist/server/ui/components/ui/command/CommandList.vue +1 -1
- package/dist/server/ui/components/ui/command/CommandShortcut.vue +1 -1
- package/dist/server/ui/components/ui/dialog/DialogOverlay.vue +9 -1
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuItem.vue +1 -1
- package/dist/server/ui/components/ui/input/Input.vue +1 -1
- package/dist/server/ui/components/ui/scroll-area/ScrollBar.vue +1 -1
- package/dist/server/ui/components/ui/sheet/SheetContent.vue +1 -1
- package/dist/server/ui/components/ui/sheet/SheetOverlay.vue +9 -1
- package/dist/server/ui/components/ui/sidebar/Sidebar.vue +8 -1
- package/dist/server/ui/components/ui/sidebar/SidebarProvider.vue +1 -1
- package/dist/server/ui/components/ui/sidebar/SidebarTrigger.vue +5 -4
- package/dist/server/ui/components/ui/tags-input/TagsInput.vue +26 -0
- package/dist/server/ui/components/ui/tags-input/TagsInputInput.vue +17 -0
- package/dist/server/ui/components/ui/tags-input/TagsInputItem.vue +19 -0
- package/dist/server/ui/components/ui/tags-input/TagsInputItemDelete.vue +22 -0
- package/dist/server/ui/components/ui/tags-input/TagsInputItemText.vue +17 -0
- package/dist/server/ui/components/ui/tags-input/index.ts +5 -0
- package/dist/server/ui/components/ui/toggle/index.ts +3 -3
- package/dist/server/ui/components/ui/toggle-group/ToggleGroup.vue +1 -1
- package/dist/server/ui/components/ui/toggle-group/ToggleGroupItem.vue +2 -2
- package/dist/server/ui/lib/emulated-dark-mode.ts +131 -0
- package/dist/server/ui/main.css +20 -20
- package/dist/server/ui/pages/Home.vue +12 -5
- package/dist/server/ui/pages/Preview.vue +716 -276
- 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.mts → addAttributes.d.ts} +2 -2
- package/dist/transformers/addAttributes.d.ts.map +1 -0
- package/dist/transformers/{addAttributes.mjs → addAttributes.js} +16 -13
- 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} +56 -30
- 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 +546 -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 +73 -0
- package/dist/transformers/entities.js.map +1 -0
- package/dist/transformers/filters/defaults.d.ts +6 -0
- package/dist/transformers/filters/defaults.d.ts.map +1 -0
- package/dist/transformers/filters/defaults.js +78 -0
- 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/{index.d.mts → index.d.ts} +14 -11
- package/dist/transformers/index.d.ts.map +1 -0
- package/dist/transformers/index.js +133 -0
- package/dist/transformers/index.js.map +1 -0
- package/dist/transformers/inlineCss.d.ts +84 -0
- package/dist/transformers/inlineCss.d.ts.map +1 -0
- package/dist/transformers/inlineCss.js +91 -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} +34 -10
- 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/msoPlaceholders.d.ts +28 -0
- package/dist/transformers/msoPlaceholders.d.ts.map +1 -0
- package/dist/transformers/msoPlaceholders.js +88 -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 +181 -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 +70 -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/{safeClassNames.d.mts → safeClassNames.d.ts} +2 -2
- package/dist/transformers/safeClassNames.d.ts.map +1 -0
- package/dist/transformers/{safeClassNames.mjs → safeClassNames.js} +4 -5
- package/dist/transformers/safeClassNames.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 +61 -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 +92 -0
- package/dist/transformers/tailwindComponent.js.map +1 -0
- package/dist/transformers/{tailwindcss.d.mts → tailwindcss.d.ts} +8 -4
- package/dist/transformers/tailwindcss.d.ts.map +1 -0
- package/dist/transformers/tailwindcss.js +97 -0
- 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.ts +727 -0
- 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.ts +8 -0
- package/dist/utils/ast/serializer.d.ts.map +1 -0
- package/dist/utils/ast/serializer.js +36 -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/compileTailwindCss.d.ts +16 -0
- package/dist/utils/compileTailwindCss.d.ts.map +1 -0
- package/dist/utils/compileTailwindCss.js +54 -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/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.ts +5 -0
- package/dist/utils/detect.d.ts.map +1 -0
- package/dist/utils/detect.js +10 -0
- 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/node_modules/@clack/core/CHANGELOG.md +8 -0
- package/node_modules/@clack/core/dist/index.d.mts +18 -4
- package/node_modules/@clack/core/dist/index.mjs +16 -10
- package/node_modules/@clack/core/dist/index.mjs.map +1 -1
- package/node_modules/@clack/core/package.json +5 -2
- package/node_modules/@clack/prompts/CHANGELOG.md +15 -0
- package/node_modules/@clack/prompts/README.md +107 -2
- package/node_modules/@clack/prompts/dist/index.d.mts +16 -11
- package/node_modules/@clack/prompts/dist/index.mjs +114 -107
- package/node_modules/@clack/prompts/dist/index.mjs.map +1 -1
- 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 -1
- package/node_modules/fast-wrap-ansi/lib/main.js.map +1 -1
- package/node_modules/fast-wrap-ansi/package.json +2 -2
- 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 +1 -1
- 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 +32 -52
- 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 +4 -3
- 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 +1 -1
- package/node_modules/tinyexec/dist/main.d.mts +6 -6
- package/node_modules/tinyexec/dist/main.mjs +126 -134
- package/node_modules/tinyexec/package.json +9 -9
- package/package.json +31 -21
- package/dist/build.d.mts +0 -19
- package/dist/build.d.mts.map +0 -1
- package/dist/build.mjs.map +0 -1
- package/dist/components/Divider.vue +0 -105
- package/dist/components/Vml.vue +0 -89
- 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.map +0 -1
- package/dist/composables/defineConfig.mjs.map +0 -1
- package/dist/composables/renderContext.d.mts +0 -19
- package/dist/composables/renderContext.d.mts.map +0 -1
- package/dist/composables/renderContext.mjs.map +0 -1
- package/dist/composables/useConfig.d.mts.map +0 -1
- 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/config/defaults.d.mts.map +0 -1
- package/dist/config/defaults.mjs.map +0 -1
- 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 -29
- package/dist/index.mjs +0 -29
- 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 +0 -41
- 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 +0 -35
- package/dist/plugins/postcss/tailwindCleanup.mjs.map +0 -1
- package/dist/render/createRenderer.d.mts.map +0 -1
- package/dist/render/createRenderer.mjs +0 -155
- 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 -44
- 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 -6
- package/dist/server/compatibility.d.mts.map +0 -1
- package/dist/server/compatibility.mjs +0 -83
- package/dist/server/compatibility.mjs.map +0 -1
- package/dist/server/linter.d.mts +0 -6
- package/dist/server/linter.d.mts.map +0 -1
- package/dist/server/linter.mjs +0 -200
- package/dist/server/linter.mjs.map +0 -1
- package/dist/server/ui/components/ui/resizable/ResizableHandle.vue +0 -30
- package/dist/server/ui/components/ui/resizable/ResizablePanel.vue +0 -21
- package/dist/server/ui/components/ui/resizable/ResizablePanelGroup.vue +0 -25
- package/dist/server/ui/components/ui/resizable/index.ts +0 -3
- 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 -38
- package/dist/transformers/entities.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 -73
- package/dist/transformers/index.mjs.map +0 -1
- package/dist/transformers/inlineCSS.d.mts +0 -30
- package/dist/transformers/inlineCSS.d.mts.map +0 -1
- package/dist/transformers/inlineCSS.mjs +0 -79
- 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 -66
- 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.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 +0 -136
- 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 +0 -149
- 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 +0 -7
- package/dist/utils/ast/serializer.d.mts.map +0 -1
- package/dist/utils/ast/serializer.mjs +0 -13
- 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/url.d.mts.map +0 -1
- package/dist/utils/url.mjs.map +0 -1
- package/node_modules/maizzle/dist/commands/make/stubs/layout.vue +0 -39
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js","../src/common.ts","../src/limit-options.ts","../src/autocomplete.ts","../src/box.ts","../src/confirm.ts","../src/date.ts","../src/group.ts","../src/group-multi-select.ts","../src/log.ts","../src/messages.ts","../src/multi-select.ts","../src/note.ts","../src/password.ts","../src/path.ts","../src/spinner.ts","../src/progress-bar.ts","../src/select.ts","../src/select-key.ts","../src/stream.ts","../src/task.ts","../src/task-log.ts","../src/text.ts"],"sourcesContent":["import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import type { Readable, Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport type { State } from '@clack/core';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nexport const unicode = isUnicodeSupported();\nexport const isCI = (): boolean => process.env.CI === 'true';\nexport const isTTY = (output: Writable): boolean => {\n\treturn (output as Writable & { isTTY?: boolean }).isTTY === true;\n};\nexport const unicodeOr = (c: string, fallback: string) => (unicode ? c : fallback);\nexport const S_STEP_ACTIVE = unicodeOr('◆', '*');\nexport const S_STEP_CANCEL = unicodeOr('■', 'x');\nexport const S_STEP_ERROR = unicodeOr('▲', 'x');\nexport const S_STEP_SUBMIT = unicodeOr('◇', 'o');\n\nexport const S_BAR_START = unicodeOr('┌', 'T');\nexport const S_BAR = unicodeOr('│', '|');\nexport const S_BAR_END = unicodeOr('└', '—');\nexport const S_BAR_START_RIGHT = unicodeOr('┐', 'T');\nexport const S_BAR_END_RIGHT = unicodeOr('┘', '—');\n\nexport const S_RADIO_ACTIVE = unicodeOr('●', '>');\nexport const S_RADIO_INACTIVE = unicodeOr('○', ' ');\nexport const S_CHECKBOX_ACTIVE = unicodeOr('◻', '[•]');\nexport const S_CHECKBOX_SELECTED = unicodeOr('◼', '[+]');\nexport const S_CHECKBOX_INACTIVE = unicodeOr('◻', '[ ]');\nexport const S_PASSWORD_MASK = unicodeOr('▪', '•');\n\nexport const S_BAR_H = unicodeOr('─', '-');\nexport const S_CORNER_TOP_RIGHT = unicodeOr('╮', '+');\nexport const S_CONNECT_LEFT = unicodeOr('├', '+');\nexport const S_CORNER_BOTTOM_RIGHT = unicodeOr('╯', '+');\nexport const S_CORNER_BOTTOM_LEFT = unicodeOr('╰', '+');\nexport const S_CORNER_TOP_LEFT = unicodeOr('╭', '+');\n\nexport const S_INFO = unicodeOr('●', '•');\nexport const S_SUCCESS = unicodeOr('◆', '*');\nexport const S_WARN = unicodeOr('▲', '!');\nexport const S_ERROR = unicodeOr('■', 'x');\n\nexport const symbol = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn styleText('cyan', S_STEP_ACTIVE);\n\t\tcase 'cancel':\n\t\t\treturn styleText('red', S_STEP_CANCEL);\n\t\tcase 'error':\n\t\t\treturn styleText('yellow', S_STEP_ERROR);\n\t\tcase 'submit':\n\t\t\treturn styleText('green', S_STEP_SUBMIT);\n\t}\n};\n\nexport const symbolBar = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn styleText('cyan', S_BAR);\n\t\tcase 'cancel':\n\t\t\treturn styleText('red', S_BAR);\n\t\tcase 'error':\n\t\t\treturn styleText('yellow', S_BAR);\n\t\tcase 'submit':\n\t\t\treturn styleText('green', S_BAR);\n\t}\n};\n\nexport interface CommonOptions {\n\tinput?: Readable;\n\toutput?: Writable;\n\tsignal?: AbortSignal;\n\twithGuide?: boolean;\n}\n","import { styleText } from 'node:util';\nimport { getColumns, getRows } from '@clack/core';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport type { CommonOptions } from './common.js';\n\nexport interface LimitOptionsParams<TOption> extends CommonOptions {\n\toptions: TOption[];\n\tcursor: number;\n\tstyle: (option: TOption, active: boolean) => string;\n\tmaxItems?: number;\n\tcolumnPadding?: number;\n\trowPadding?: number;\n}\n\nconst trimLines = (\n\tgroups: Array<string[]>,\n\tinitialLineCount: number,\n\tstartIndex: number,\n\tendIndex: number,\n\tmaxLines: number\n) => {\n\tlet lineCount = initialLineCount;\n\tlet removals = 0;\n\tfor (let i = startIndex; i < endIndex; i++) {\n\t\tconst group = groups[i];\n\t\tlineCount = lineCount - group.length;\n\t\tremovals++;\n\t\tif (lineCount <= maxLines) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn { lineCount, removals };\n};\n\nexport const limitOptions = <TOption>({\n\tcursor,\n\toptions,\n\tstyle,\n\toutput = process.stdout,\n\tmaxItems = Number.POSITIVE_INFINITY,\n\tcolumnPadding = 0,\n\trowPadding = 4,\n}: LimitOptionsParams<TOption>): string[] => {\n\tconst columns = getColumns(output);\n\tconst maxWidth = columns - columnPadding;\n\tconst rows = getRows(output);\n\tconst overflowFormat = styleText('dim', '...');\n\n\tconst outputMaxItems = Math.max(rows - rowPadding, 0);\n\t// We clamp to minimum 5 because anything less doesn't make sense UX wise\n\tconst computedMaxItems = Math.max(Math.min(maxItems, outputMaxItems), 5);\n\tlet slidingWindowLocation = 0;\n\n\tif (cursor >= computedMaxItems - 3) {\n\t\tslidingWindowLocation = Math.max(\n\t\t\tMath.min(cursor - computedMaxItems + 3, options.length - computedMaxItems),\n\t\t\t0\n\t\t);\n\t}\n\n\tlet shouldRenderTopEllipsis = computedMaxItems < options.length && slidingWindowLocation > 0;\n\tlet shouldRenderBottomEllipsis =\n\t\tcomputedMaxItems < options.length && slidingWindowLocation + computedMaxItems < options.length;\n\n\tconst slidingWindowLocationEnd = Math.min(\n\t\tslidingWindowLocation + computedMaxItems,\n\t\toptions.length\n\t);\n\tconst lineGroups: Array<string[]> = [];\n\tlet lineCount = 0;\n\tif (shouldRenderTopEllipsis) {\n\t\tlineCount++;\n\t}\n\tif (shouldRenderBottomEllipsis) {\n\t\tlineCount++;\n\t}\n\n\tconst slidingWindowLocationWithEllipsis =\n\t\tslidingWindowLocation + (shouldRenderTopEllipsis ? 1 : 0);\n\tconst slidingWindowLocationEndWithEllipsis =\n\t\tslidingWindowLocationEnd - (shouldRenderBottomEllipsis ? 1 : 0);\n\n\tfor (let i = slidingWindowLocationWithEllipsis; i < slidingWindowLocationEndWithEllipsis; i++) {\n\t\tconst wrappedLines = wrapAnsi(style(options[i], i === cursor), maxWidth, {\n\t\t\thard: true,\n\t\t\ttrim: false,\n\t\t}).split('\\n');\n\t\tlineGroups.push(wrappedLines);\n\t\tlineCount += wrappedLines.length;\n\t}\n\n\tif (lineCount > outputMaxItems) {\n\t\tlet precedingRemovals = 0;\n\t\tlet followingRemovals = 0;\n\t\tlet newLineCount = lineCount;\n\t\tconst cursorGroupIndex = cursor - slidingWindowLocationWithEllipsis;\n\t\tconst trimLinesLocal = (startIndex: number, endIndex: number) =>\n\t\t\ttrimLines(lineGroups, newLineCount, startIndex, endIndex, outputMaxItems);\n\n\t\tif (shouldRenderTopEllipsis) {\n\t\t\t({ lineCount: newLineCount, removals: precedingRemovals } = trimLinesLocal(\n\t\t\t\t0,\n\t\t\t\tcursorGroupIndex\n\t\t\t));\n\t\t\tif (newLineCount > outputMaxItems) {\n\t\t\t\t({ lineCount: newLineCount, removals: followingRemovals } = trimLinesLocal(\n\t\t\t\t\tcursorGroupIndex + 1,\n\t\t\t\t\tlineGroups.length\n\t\t\t\t));\n\t\t\t}\n\t\t} else {\n\t\t\t({ lineCount: newLineCount, removals: followingRemovals } = trimLinesLocal(\n\t\t\t\tcursorGroupIndex + 1,\n\t\t\t\tlineGroups.length\n\t\t\t));\n\t\t\tif (newLineCount > outputMaxItems) {\n\t\t\t\t({ lineCount: newLineCount, removals: precedingRemovals } = trimLinesLocal(\n\t\t\t\t\t0,\n\t\t\t\t\tcursorGroupIndex\n\t\t\t\t));\n\t\t\t}\n\t\t}\n\n\t\tif (precedingRemovals > 0) {\n\t\t\tshouldRenderTopEllipsis = true;\n\t\t\tlineGroups.splice(0, precedingRemovals);\n\t\t}\n\t\tif (followingRemovals > 0) {\n\t\t\tshouldRenderBottomEllipsis = true;\n\t\t\tlineGroups.splice(lineGroups.length - followingRemovals, followingRemovals);\n\t\t}\n\t}\n\n\tconst result: string[] = [];\n\tif (shouldRenderTopEllipsis) {\n\t\tresult.push(overflowFormat);\n\t}\n\tfor (const lineGroup of lineGroups) {\n\t\tfor (const line of lineGroup) {\n\t\t\tresult.push(line);\n\t\t}\n\t}\n\tif (shouldRenderBottomEllipsis) {\n\t\tresult.push(overflowFormat);\n\t}\n\n\treturn result;\n};\n","import { styleText } from 'node:util';\nimport { AutocompletePrompt, settings } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_CHECKBOX_INACTIVE,\n\tS_CHECKBOX_SELECTED,\n\tS_RADIO_ACTIVE,\n\tS_RADIO_INACTIVE,\n\tsymbol,\n} from './common.js';\nimport { limitOptions } from './limit-options.js';\nimport type { Option } from './select.js';\n\nfunction getLabel<T>(option: Option<T>) {\n\treturn option.label ?? String(option.value ?? '');\n}\n\nfunction getFilteredOption<T>(searchText: string, option: Option<T>): boolean {\n\tif (!searchText) {\n\t\treturn true;\n\t}\n\tconst label = (option.label ?? String(option.value ?? '')).toLowerCase();\n\tconst hint = (option.hint ?? '').toLowerCase();\n\tconst value = String(option.value).toLowerCase();\n\tconst term = searchText.toLowerCase();\n\n\treturn label.includes(term) || hint.includes(term) || value.includes(term);\n}\n\nfunction getSelectedOptions<T>(values: T[], options: Option<T>[]): Option<T>[] {\n\tconst results: Option<T>[] = [];\n\n\tfor (const option of options) {\n\t\tif (values.includes(option.value)) {\n\t\t\tresults.push(option);\n\t\t}\n\t}\n\n\treturn results;\n}\n\ninterface AutocompleteSharedOptions<Value> extends CommonOptions {\n\t/**\n\t * The message to display to the user.\n\t */\n\tmessage: string;\n\t/**\n\t * Available options for the autocomplete prompt.\n\t */\n\toptions: Option<Value>[] | ((this: AutocompletePrompt<Option<Value>>) => Option<Value>[]);\n\t/**\n\t * Maximum number of items to display at once.\n\t */\n\tmaxItems?: number;\n\t/**\n\t * Placeholder text to display when no input is provided.\n\t */\n\tplaceholder?: string;\n\t/**\n\t * Validates the value\n\t */\n\tvalidate?: (value: Value | Value[] | undefined) => string | Error | undefined;\n\t/**\n\t * Custom filter function to match options against search input.\n\t * If not provided, a default filter that matches label, hint, and value is used.\n\t */\n\tfilter?: (search: string, option: Option<Value>) => boolean;\n}\n\nexport interface AutocompleteOptions<Value> extends AutocompleteSharedOptions<Value> {\n\t/**\n\t * The initial selected value.\n\t */\n\tinitialValue?: Value;\n\t/**\n\t * The initial user input\n\t */\n\tinitialUserInput?: string;\n}\n\nexport const autocomplete = <Value>(opts: AutocompleteOptions<Value>) => {\n\tconst prompt = new AutocompletePrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue ? [opts.initialValue] : undefined,\n\t\tinitialUserInput: opts.initialUserInput,\n\t\tplaceholder: opts.placeholder,\n\t\tfilter:\n\t\t\topts.filter ??\n\t\t\t((search: string, opt: Option<Value>) => {\n\t\t\t\treturn getFilteredOption(search, opt);\n\t\t\t}),\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tvalidate: opts.validate,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\t// Title and message display\n\t\t\tconst headings = hasGuide\n\t\t\t\t? [`${styleText('gray', S_BAR)}`, `${symbol(this.state)} ${opts.message}`]\n\t\t\t\t: [`${symbol(this.state)} ${opts.message}`];\n\t\t\tconst userInput = this.userInput;\n\t\t\tconst options = this.options;\n\t\t\tconst placeholder = opts.placeholder;\n\t\t\tconst showPlaceholder = userInput === '' && placeholder !== undefined;\n\t\t\tconst opt = (option: Option<Value>, state: 'inactive' | 'active' | 'disabled') => {\n\t\t\t\tconst label = getLabel(option);\n\t\t\t\tconst hint =\n\t\t\t\t\toption.hint && option.value === this.focusedValue\n\t\t\t\t\t\t? styleText('dim', ` (${option.hint})`)\n\t\t\t\t\t\t: '';\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase 'active':\n\t\t\t\t\t\treturn `${styleText('green', S_RADIO_ACTIVE)} ${label}${hint}`;\n\t\t\t\t\tcase 'inactive':\n\t\t\t\t\t\treturn `${styleText('dim', S_RADIO_INACTIVE)} ${styleText('dim', label)}`;\n\t\t\t\t\tcase 'disabled':\n\t\t\t\t\t\treturn `${styleText('gray', S_RADIO_INACTIVE)} ${styleText(['strikethrough', 'gray'], label)}`;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Handle different states\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\t// Show selected value\n\t\t\t\t\tconst selected = getSelectedOptions(this.selectedValues, options);\n\t\t\t\t\tconst label =\n\t\t\t\t\t\tselected.length > 0 ? ` ${styleText('dim', selected.map(getLabel).join(', '))}` : '';\n\t\t\t\t\tconst submitPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${headings.join('\\n')}\\n${submitPrefix}${label}`;\n\t\t\t\t}\n\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst userInputText = userInput\n\t\t\t\t\t\t? ` ${styleText(['strikethrough', 'dim'], userInput)}`\n\t\t\t\t\t\t: '';\n\t\t\t\t\tconst cancelPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${headings.join('\\n')}\\n${cancelPrefix}${userInputText}`;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconst barStyle = this.state === 'error' ? 'yellow' : 'cyan';\n\t\t\t\t\tconst guidePrefix = hasGuide ? `${styleText(barStyle, S_BAR)} ` : '';\n\t\t\t\t\tconst guidePrefixEnd = hasGuide ? styleText(barStyle, S_BAR_END) : '';\n\t\t\t\t\t// Display cursor position - show plain text in navigation mode\n\t\t\t\t\tlet searchText = '';\n\t\t\t\t\tif (this.isNavigating || showPlaceholder) {\n\t\t\t\t\t\tconst searchTextValue = showPlaceholder ? placeholder : userInput;\n\t\t\t\t\t\tsearchText = searchTextValue !== '' ? ` ${styleText('dim', searchTextValue)}` : '';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsearchText = ` ${this.userInputWithCursor}`;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Show match count if filtered\n\t\t\t\t\tconst matches =\n\t\t\t\t\t\tthis.filteredOptions.length !== options.length\n\t\t\t\t\t\t\t? styleText(\n\t\t\t\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t\t\t\t` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: '';\n\n\t\t\t\t\t// No matches message\n\t\t\t\t\tconst noResults =\n\t\t\t\t\t\tthis.filteredOptions.length === 0 && userInput\n\t\t\t\t\t\t\t? [`${guidePrefix}${styleText('yellow', 'No matches found')}`]\n\t\t\t\t\t\t\t: [];\n\n\t\t\t\t\tconst validationError =\n\t\t\t\t\t\tthis.state === 'error' ? [`${guidePrefix}${styleText('yellow', this.error)}`] : [];\n\n\t\t\t\t\tif (hasGuide) {\n\t\t\t\t\t\theadings.push(`${guidePrefix.trimEnd()}`);\n\t\t\t\t\t}\n\t\t\t\t\theadings.push(\n\t\t\t\t\t\t`${guidePrefix}${styleText('dim', 'Search:')}${searchText}${matches}`,\n\t\t\t\t\t\t...noResults,\n\t\t\t\t\t\t...validationError\n\t\t\t\t\t);\n\n\t\t\t\t\t// Show instructions\n\t\t\t\t\tconst instructions = [\n\t\t\t\t\t\t`${styleText('dim', '↑/↓')} to select`,\n\t\t\t\t\t\t`${styleText('dim', 'Enter:')} confirm`,\n\t\t\t\t\t\t`${styleText('dim', 'Type:')} to search`,\n\t\t\t\t\t];\n\n\t\t\t\t\tconst footers = [`${guidePrefix}${instructions.join(' • ')}`, guidePrefixEnd];\n\n\t\t\t\t\t// Render options with selection\n\t\t\t\t\tconst displayOptions =\n\t\t\t\t\t\tthis.filteredOptions.length === 0\n\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t: limitOptions({\n\t\t\t\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\t\t\t\toptions: this.filteredOptions,\n\t\t\t\t\t\t\t\t\tcolumnPadding: hasGuide ? 3 : 0, // for `| ` when guide is shown\n\t\t\t\t\t\t\t\t\trowPadding: headings.length + footers.length,\n\t\t\t\t\t\t\t\t\tstyle: (option, active) => {\n\t\t\t\t\t\t\t\t\t\treturn opt(\n\t\t\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\t\t\toption.disabled ? 'disabled' : active ? 'active' : 'inactive'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t// Return the formatted prompt\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...headings,\n\t\t\t\t\t\t...displayOptions.map((option) => `${guidePrefix}${option}`),\n\t\t\t\t\t\t...footers,\n\t\t\t\t\t].join('\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n\n\t// Return the result or cancel symbol\n\treturn prompt.prompt() as Promise<Value | symbol>;\n};\n\n// Type definition for the autocompleteMultiselect component\nexport interface AutocompleteMultiSelectOptions<Value> extends AutocompleteSharedOptions<Value> {\n\t/**\n\t * The initial selected values\n\t */\n\tinitialValues?: Value[];\n\t/**\n\t * If true, at least one option must be selected\n\t */\n\trequired?: boolean;\n}\n\n/**\n * Integrated autocomplete multiselect - combines type-ahead filtering with multiselect in one UI\n */\nexport const autocompleteMultiselect = <Value>(opts: AutocompleteMultiSelectOptions<Value>) => {\n\tconst formatOption = (\n\t\toption: Option<Value>,\n\t\tactive: boolean,\n\t\tselectedValues: Value[],\n\t\tfocusedValue: Value | undefined\n\t) => {\n\t\tconst isSelected = selectedValues.includes(option.value);\n\t\tconst label = option.label ?? String(option.value ?? '');\n\t\tconst hint =\n\t\t\toption.hint && focusedValue !== undefined && option.value === focusedValue\n\t\t\t\t? styleText('dim', ` (${option.hint})`)\n\t\t\t\t: '';\n\t\tconst checkbox = isSelected\n\t\t\t? styleText('green', S_CHECKBOX_SELECTED)\n\t\t\t: styleText('dim', S_CHECKBOX_INACTIVE);\n\n\t\tif (option.disabled) {\n\t\t\treturn `${styleText('gray', S_CHECKBOX_INACTIVE)} ${styleText(['strikethrough', 'gray'], label)}`;\n\t\t}\n\t\tif (active) {\n\t\t\treturn `${checkbox} ${label}${hint}`;\n\t\t}\n\t\treturn `${checkbox} ${styleText('dim', label)}`;\n\t};\n\n\t// Create text prompt which we'll use as foundation\n\tconst prompt = new AutocompletePrompt<Option<Value>>({\n\t\toptions: opts.options,\n\t\tmultiple: true,\n\t\tplaceholder: opts.placeholder,\n\t\tfilter:\n\t\t\topts.filter ??\n\t\t\t((search, opt) => {\n\t\t\t\treturn getFilteredOption(search, opt);\n\t\t\t}),\n\t\tvalidate: () => {\n\t\t\tif (opts.required && prompt.selectedValues.length === 0) {\n\t\t\t\treturn 'Please select at least one item';\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tinitialValue: opts.initialValues,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\t// Title and symbol\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${\n\t\t\t\topts.message\n\t\t\t}\\n`;\n\n\t\t\t// Selection counter\n\t\t\tconst userInput = this.userInput;\n\t\t\tconst placeholder = opts.placeholder;\n\t\t\tconst showPlaceholder = userInput === '' && placeholder !== undefined;\n\n\t\t\t// Search input display\n\t\t\tconst searchText =\n\t\t\t\tthis.isNavigating || showPlaceholder\n\t\t\t\t\t? styleText('dim', showPlaceholder ? placeholder : userInput) // Just show plain text when in navigation mode\n\t\t\t\t\t: this.userInputWithCursor;\n\n\t\t\tconst options = this.options;\n\n\t\t\tconst matches =\n\t\t\t\tthis.filteredOptions.length !== options.length\n\t\t\t\t\t? styleText(\n\t\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t\t` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})`\n\t\t\t\t\t\t)\n\t\t\t\t\t: '';\n\n\t\t\t// Render prompt state\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${styleText(\n\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t`${this.selectedValues.length} items selected`\n\t\t\t\t\t)}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${styleText(\n\t\t\t\t\t\t['strikethrough', 'dim'],\n\t\t\t\t\t\tuserInput\n\t\t\t\t\t)}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst barStyle = this.state === 'error' ? 'yellow' : 'cyan';\n\t\t\t\t\tconst guidePrefix = hasGuide ? `${styleText(barStyle, S_BAR)} ` : '';\n\t\t\t\t\tconst guidePrefixEnd = hasGuide ? styleText(barStyle, S_BAR_END) : '';\n\t\t\t\t\t// Instructions\n\t\t\t\t\tconst instructions = [\n\t\t\t\t\t\t`${styleText('dim', '↑/↓')} to navigate`,\n\t\t\t\t\t\t`${styleText('dim', this.isNavigating ? 'Space/Tab:' : 'Tab:')} select`,\n\t\t\t\t\t\t`${styleText('dim', 'Enter:')} confirm`,\n\t\t\t\t\t\t`${styleText('dim', 'Type:')} to search`,\n\t\t\t\t\t];\n\n\t\t\t\t\t// No results message\n\t\t\t\t\tconst noResults =\n\t\t\t\t\t\tthis.filteredOptions.length === 0 && userInput\n\t\t\t\t\t\t\t? [`${guidePrefix}${styleText('yellow', 'No matches found')}`]\n\t\t\t\t\t\t\t: [];\n\n\t\t\t\t\tconst errorMessage =\n\t\t\t\t\t\tthis.state === 'error' ? [`${guidePrefix}${styleText('yellow', this.error)}`] : [];\n\n\t\t\t\t\t// Calculate header and footer line counts for rowPadding\n\t\t\t\t\tconst headerLines = [\n\t\t\t\t\t\t...`${title}${hasGuide ? styleText(barStyle, S_BAR) : ''}`.split('\\n'),\n\t\t\t\t\t\t`${guidePrefix}${styleText('dim', 'Search:')} ${searchText}${matches}`,\n\t\t\t\t\t\t...noResults,\n\t\t\t\t\t\t...errorMessage,\n\t\t\t\t\t];\n\t\t\t\t\tconst footerLines = [`${guidePrefix}${instructions.join(' • ')}`, guidePrefixEnd];\n\n\t\t\t\t\t// Get limited options for display\n\t\t\t\t\tconst displayOptions = limitOptions({\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.filteredOptions,\n\t\t\t\t\t\tstyle: (option, active) =>\n\t\t\t\t\t\t\tformatOption(option, active, this.selectedValues, this.focusedValue),\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\trowPadding: headerLines.length + footerLines.length,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Build the prompt display\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...headerLines,\n\t\t\t\t\t\t...displayOptions.map((option) => `${guidePrefix}${option}`),\n\t\t\t\t\t\t...footerLines,\n\t\t\t\t\t].join('\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n\n\t// Return the result or cancel symbol\n\treturn prompt.prompt() as Promise<Value[] | symbol>;\n};\n","import type { Writable } from 'node:stream';\nimport { getColumns, settings } from '@clack/core';\nimport stringWidth from 'fast-string-width';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_BAR_END_RIGHT,\n\tS_BAR_H,\n\tS_BAR_START,\n\tS_BAR_START_RIGHT,\n\tS_CORNER_BOTTOM_LEFT,\n\tS_CORNER_BOTTOM_RIGHT,\n\tS_CORNER_TOP_LEFT,\n\tS_CORNER_TOP_RIGHT,\n} from './common.js';\n\nexport type BoxAlignment = 'left' | 'center' | 'right';\n\ntype BoxSymbols = [topLeft: string, topRight: string, bottomLeft: string, bottomRight: string];\n\nconst roundedSymbols: BoxSymbols = [\n\tS_CORNER_TOP_LEFT,\n\tS_CORNER_TOP_RIGHT,\n\tS_CORNER_BOTTOM_LEFT,\n\tS_CORNER_BOTTOM_RIGHT,\n];\nconst squareSymbols: BoxSymbols = [S_BAR_START, S_BAR_START_RIGHT, S_BAR_END, S_BAR_END_RIGHT];\n\nexport interface BoxOptions extends CommonOptions {\n\tcontentAlign?: BoxAlignment;\n\ttitleAlign?: BoxAlignment;\n\twidth?: number | 'auto';\n\ttitlePadding?: number;\n\tcontentPadding?: number;\n\trounded?: boolean;\n\tformatBorder?: (text: string) => string;\n}\n\nfunction getPaddingForLine(\n\tlineLength: number,\n\tinnerWidth: number,\n\tpadding: number,\n\tcontentAlign: BoxAlignment | undefined\n): [number, number] {\n\tlet leftPadding = padding;\n\tlet rightPadding = padding;\n\tif (contentAlign === 'center') {\n\t\tleftPadding = Math.floor((innerWidth - lineLength) / 2);\n\t} else if (contentAlign === 'right') {\n\t\tleftPadding = innerWidth - lineLength - padding;\n\t}\n\n\trightPadding = innerWidth - leftPadding - lineLength;\n\n\treturn [leftPadding, rightPadding];\n}\n\nconst defaultFormatBorder = (text: string) => text;\n\nexport const box = (message = '', title = '', opts?: BoxOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst columns = getColumns(output);\n\tconst borderWidth = 1;\n\tconst borderTotalWidth = borderWidth * 2;\n\tconst titlePadding = opts?.titlePadding ?? 1;\n\tconst contentPadding = opts?.contentPadding ?? 2;\n\tconst width = opts?.width === undefined || opts.width === 'auto' ? 1 : Math.min(1, opts.width);\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst linePrefix = !hasGuide ? '' : `${S_BAR} `;\n\tconst formatBorder = opts?.formatBorder ?? defaultFormatBorder;\n\tconst symbols = (opts?.rounded ? roundedSymbols : squareSymbols).map(formatBorder);\n\tconst hSymbol = formatBorder(S_BAR_H);\n\tconst vSymbol = formatBorder(S_BAR);\n\tconst linePrefixWidth = stringWidth(linePrefix);\n\tconst titleWidth = stringWidth(title);\n\tconst maxBoxWidth = columns - linePrefixWidth;\n\tlet boxWidth = Math.floor(columns * width) - linePrefixWidth;\n\tif (opts?.width === 'auto') {\n\t\tconst lines = message.split('\\n');\n\t\tlet longestLine = titleWidth + titlePadding * 2;\n\t\tfor (const line of lines) {\n\t\t\tconst lineWithPadding = stringWidth(line) + contentPadding * 2;\n\t\t\tif (lineWithPadding > longestLine) {\n\t\t\t\tlongestLine = lineWithPadding;\n\t\t\t}\n\t\t}\n\t\tconst longestLineWidth = longestLine + borderTotalWidth;\n\t\tif (longestLineWidth < boxWidth) {\n\t\t\tboxWidth = longestLineWidth;\n\t\t}\n\t}\n\tif (boxWidth % 2 !== 0) {\n\t\tif (boxWidth < maxBoxWidth) {\n\t\t\tboxWidth++;\n\t\t} else {\n\t\t\tboxWidth--;\n\t\t}\n\t}\n\tconst innerWidth = boxWidth - borderTotalWidth;\n\tconst maxTitleLength = innerWidth - titlePadding * 2;\n\tconst truncatedTitle =\n\t\ttitleWidth > maxTitleLength ? `${title.slice(0, maxTitleLength - 3)}...` : title;\n\tconst [titlePaddingLeft, titlePaddingRight] = getPaddingForLine(\n\t\tstringWidth(truncatedTitle),\n\t\tinnerWidth,\n\t\ttitlePadding,\n\t\topts?.titleAlign\n\t);\n\tconst wrappedMessage = wrapAnsi(message, innerWidth - contentPadding * 2, {\n\t\thard: true,\n\t\ttrim: false,\n\t});\n\toutput.write(\n\t\t`${linePrefix}${symbols[0]}${hSymbol.repeat(titlePaddingLeft)}${truncatedTitle}${hSymbol.repeat(titlePaddingRight)}${symbols[1]}\\n`\n\t);\n\tconst wrappedLines = wrappedMessage.split('\\n');\n\tfor (const line of wrappedLines) {\n\t\tconst [leftLinePadding, rightLinePadding] = getPaddingForLine(\n\t\t\tstringWidth(line),\n\t\t\tinnerWidth,\n\t\t\tcontentPadding,\n\t\t\topts?.contentAlign\n\t\t);\n\t\toutput.write(\n\t\t\t`${linePrefix}${vSymbol}${' '.repeat(leftLinePadding)}${line}${' '.repeat(rightLinePadding)}${vSymbol}\\n`\n\t\t);\n\t}\n\toutput.write(`${linePrefix}${symbols[2]}${hSymbol.repeat(innerWidth)}${symbols[3]}\\n`);\n};\n","import { styleText } from 'node:util';\nimport { ConfirmPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_RADIO_ACTIVE,\n\tS_RADIO_INACTIVE,\n\tsymbol,\n} from './common.js';\n\nexport interface ConfirmOptions extends CommonOptions {\n\tmessage: string;\n\tactive?: string;\n\tinactive?: string;\n\tinitialValue?: boolean;\n\tvertical?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n\tconst active = opts.active ?? 'Yes';\n\tconst inactive = opts.inactive ?? 'No';\n\treturn new ConfirmPrompt({\n\t\tactive,\n\t\tinactive,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValue: opts.initialValue ?? true,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${symbol(this.state)} `;\n\t\t\tconst titlePrefixBar = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\tconst messageLines = wrapTextWithPrefix(\n\t\t\t\topts.output,\n\t\t\t\topts.message,\n\t\t\t\ttitlePrefixBar,\n\t\t\t\ttitlePrefix\n\t\t\t);\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${messageLines}\\n`;\n\t\t\tconst value = this.value ? active : inactive;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\treturn `${title}${submitPrefix}${styleText('dim', value)}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\treturn `${title}${cancelPrefix}${styleText(['strikethrough', 'dim'], value)}${\n\t\t\t\t\t\thasGuide ? `\\n${styleText('gray', S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\treturn `${title}${defaultPrefix}${\n\t\t\t\t\t\tthis.value\n\t\t\t\t\t\t\t? `${styleText('green', S_RADIO_ACTIVE)} ${active}`\n\t\t\t\t\t\t\t: `${styleText('dim', S_RADIO_INACTIVE)} ${styleText('dim', active)}`\n\t\t\t\t\t}${opts.vertical ? (hasGuide ? `\\n${styleText('cyan', S_BAR)} ` : '\\n') : ` ${styleText('dim', '/')} `}${\n\t\t\t\t\t\t!this.value\n\t\t\t\t\t\t\t? `${styleText('green', S_RADIO_ACTIVE)} ${inactive}`\n\t\t\t\t\t\t\t: `${styleText('dim', S_RADIO_INACTIVE)} ${styleText('dim', inactive)}`\n\t\t\t\t\t}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<boolean | symbol>;\n};\n","import { styleText } from 'node:util';\nimport type { DateFormat, State } from '@clack/core';\nimport { DatePrompt, settings } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, symbol } from './common.js';\n\nexport type { DateFormat };\n\nexport interface DateOptions extends CommonOptions {\n\tmessage: string;\n\tformat?: DateFormat;\n\tlocale?: string;\n\tdefaultValue?: Date;\n\tinitialValue?: Date;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tvalidate?: (value: Date | undefined) => string | Error | undefined;\n}\n\nexport const date = (opts: DateOptions) => {\n\tconst validate = opts.validate;\n\treturn new DatePrompt({\n\t\t...opts,\n\t\tvalidate(value: Date | undefined) {\n\t\t\tif (value === undefined) {\n\t\t\t\tif (opts.defaultValue !== undefined) return undefined;\n\t\t\t\tif (validate) return validate(value);\n\t\t\t\treturn settings.date.messages.required;\n\t\t\t}\n\t\t\tconst iso = (d: Date) => d.toISOString().slice(0, 10);\n\t\t\tif (opts.minDate && iso(value) < iso(opts.minDate)) {\n\t\t\t\treturn settings.date.messages.afterMin(opts.minDate);\n\t\t\t}\n\t\t\tif (opts.maxDate && iso(value) > iso(opts.maxDate)) {\n\t\t\t\treturn settings.date.messages.beforeMax(opts.maxDate);\n\t\t\t}\n\t\t\tif (validate) return validate(value);\n\t\t\treturn undefined;\n\t\t},\n\t\trender() {\n\t\t\tconst hasGuide = (opts?.withGuide ?? settings.withGuide) !== false;\n\t\t\tconst titlePrefix = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} `;\n\t\t\tconst title = `${titlePrefix}${opts.message}\\n`;\n\n\t\t\tconst state = this.state !== 'initial' ? this.state : 'active';\n\n\t\t\tconst userInput = renderDate(this, state);\n\t\t\tconst value = this.value instanceof Date ? this.formattedValue : '';\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorText = this.error ? ` ${styleText('yellow', this.error)}` : '';\n\t\t\t\t\tconst bar = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst barEnd = hasGuide ? styleText('yellow', S_BAR_END) : '';\n\t\t\t\t\treturn `${title.trim()}\\n${bar}${userInput}\\n${barEnd}${errorText}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText('dim', value)}` : '';\n\t\t\t\t\tconst bar = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${bar}${valueText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText(['strikethrough', 'dim'], value)}` : '';\n\t\t\t\t\tconst bar = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${bar}${valueText}${value.trim() ? `\\n${bar}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst bar = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst barEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\tconst inlineBar = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst inlineError = this.inlineError\n\t\t\t\t\t\t? `\\n${inlineBar}${styleText('yellow', this.inlineError)}`\n\t\t\t\t\t\t: '';\n\t\t\t\t\treturn `${title}${bar}${userInput}${inlineError}\\n${barEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Date | symbol>;\n};\n\nfunction renderDate(prompt: Omit<InstanceType<typeof DatePrompt>, 'prompt'>, state: State): string {\n\tconst parts = prompt.segmentValues;\n\tconst cursor = prompt.segmentCursor;\n\n\tif (state === 'submit' || state === 'cancel') {\n\t\treturn prompt.formattedValue;\n\t}\n\n\tconst sep = styleText('gray', prompt.separator);\n\treturn prompt.segments\n\t\t.map((seg, i) => {\n\t\t\tconst isActive = i === cursor.segmentIndex && !['submit', 'cancel'].includes(state);\n\t\t\tconst label = DEFAULT_LABELS[seg.type];\n\t\t\treturn renderSegment(parts[seg.type], { isActive, label });\n\t\t})\n\t\t.join(sep);\n}\n\ninterface SegmentOptions {\n\tisActive: boolean;\n\tlabel: string;\n}\nfunction renderSegment(value: string, opts: SegmentOptions): string {\n\tconst isBlank = !value || value.replace(/_/g, '') === '';\n\tif (opts.isActive) return styleText('inverse', isBlank ? opts.label : value.replace(/_/g, ' '));\n\tif (isBlank) return styleText('dim', opts.label);\n\treturn value.replace(/_/g, styleText('dim', ' '));\n}\n\nconst DEFAULT_LABELS: Record<'year' | 'month' | 'day', string> = {\n\tyear: 'yyyy',\n\tmonth: 'mm',\n\tday: 'dd',\n};\n","import { isCancel } from '@clack/core';\n\ntype Prettify<T> = {\n\t[P in keyof T]: T[P];\n} & {};\n\nexport type PromptGroupAwaitedReturn<T> = {\n\t[P in keyof T]: Exclude<Awaited<T[P]>, symbol>;\n};\n\nexport interface PromptGroupOptions<T> {\n\t/**\n\t * Control how the group can be canceled\n\t * if one of the prompts is canceled.\n\t */\n\tonCancel?: (opts: { results: Prettify<Partial<PromptGroupAwaitedReturn<T>>> }) => void;\n}\n\nexport type PromptGroup<T> = {\n\t[P in keyof T]: (opts: {\n\t\tresults: Prettify<Partial<PromptGroupAwaitedReturn<Omit<T, P>>>>;\n\t}) => undefined | Promise<T[P] | undefined>;\n};\n\n/**\n * Define a group of prompts to be displayed\n * and return a results of objects within the group\n */\nexport const group = async <T>(\n\tprompts: PromptGroup<T>,\n\topts?: PromptGroupOptions<T>\n): Promise<Prettify<PromptGroupAwaitedReturn<T>>> => {\n\tconst results = {} as any;\n\tconst promptNames = Object.keys(prompts);\n\n\tfor (const name of promptNames) {\n\t\tconst prompt = prompts[name as keyof T];\n\t\tconst result = await prompt({ results })?.catch((e) => {\n\t\t\tthrow e;\n\t\t});\n\n\t\t// Pass the results to the onCancel function\n\t\t// so the user can decide what to do with the results\n\t\t// TODO: Switch to callback within core to avoid isCancel Fn\n\t\tif (typeof opts?.onCancel === 'function' && isCancel(result)) {\n\t\t\tresults[name] = 'canceled';\n\t\t\topts.onCancel({ results });\n\t\t\tcontinue;\n\t\t}\n\n\t\tresults[name] = result;\n\t}\n\n\treturn results;\n};\n","import { styleText } from 'node:util';\nimport { GroupMultiSelectPrompt, settings } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_CHECKBOX_ACTIVE,\n\tS_CHECKBOX_INACTIVE,\n\tS_CHECKBOX_SELECTED,\n\tsymbol,\n} from './common.js';\nimport type { Option } from './select.js';\n\nexport interface GroupMultiSelectOptions<Value> extends CommonOptions {\n\tmessage: string;\n\toptions: Record<string, Option<Value>[]>;\n\tinitialValues?: Value[];\n\trequired?: boolean;\n\tcursorAt?: Value;\n\tselectableGroups?: boolean;\n\tgroupSpacing?: number;\n}\nexport const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) => {\n\tconst { selectableGroups = true, groupSpacing = 0 } = opts;\n\tconst opt = (\n\t\toption: Option<Value> & { group: string | boolean },\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'group-active'\n\t\t\t| 'group-active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled',\n\t\toptions: (Option<Value> & { group: string | boolean })[] = []\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tconst isItem = typeof option.group === 'string';\n\t\tconst next = isItem && (options[options.indexOf(option) + 1] ?? { group: true });\n\t\tconst isLast = isItem && next && next.group === true;\n\t\tconst prefix = isItem ? (selectableGroups ? `${isLast ? S_BAR_END : S_BAR} ` : ' ') : '';\n\t\tlet spacingPrefix = '';\n\t\tif (groupSpacing > 0 && !isItem) {\n\t\t\tconst spacingPrefixText = `\\n${styleText('cyan', S_BAR)}`;\n\t\t\tspacingPrefix = `${spacingPrefixText.repeat(groupSpacing - 1)}${spacingPrefixText} `;\n\t\t}\n\n\t\tif (state === 'active') {\n\t\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${styleText('cyan', S_CHECKBOX_ACTIVE)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'group-active') {\n\t\t\treturn `${spacingPrefix}${prefix}${styleText('cyan', S_CHECKBOX_ACTIVE)} ${styleText('dim', label)}`;\n\t\t}\n\t\tif (state === 'group-active-selected') {\n\t\t\treturn `${spacingPrefix}${prefix}${styleText('green', S_CHECKBOX_SELECTED)} ${styleText('dim', label)}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\tconst selectedCheckbox =\n\t\t\t\tisItem || selectableGroups ? styleText('green', S_CHECKBOX_SELECTED) : '';\n\t\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${selectedCheckbox} ${styleText('dim', label)}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${styleText(['strikethrough', 'dim'], label)}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${styleText('green', S_CHECKBOX_SELECTED)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${styleText('dim', label)}`;\n\t\t}\n\t\tconst unselectedCheckbox =\n\t\t\tisItem || selectableGroups ? styleText('dim', S_CHECKBOX_INACTIVE) : '';\n\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${unselectedCheckbox} ${styleText('dim', label)}`;\n\t};\n\tconst required = opts.required ?? true;\n\n\treturn new GroupMultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValues: opts.initialValues,\n\t\trequired,\n\t\tcursorAt: opts.cursorAt,\n\t\tselectableGroups,\n\t\tvalidate(selected: Value[] | undefined) {\n\t\t\tif (required && (selected === undefined || selected.length === 0))\n\t\t\t\treturn `Please select at least one option.\\n${styleText(\n\t\t\t\t\t'reset',\n\t\t\t\t\tstyleText(\n\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t`Press ${styleText(['gray', 'bgWhite', 'inverse'], ' space ')} to select, ${styleText(\n\t\t\t\t\t\t\t'gray',\n\t\t\t\t\t\t\tstyleText(['bgWhite', 'inverse'], ' enter ')\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.value ?? [];\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst selectedOptions = this.options\n\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t.map((option) => opt(option, 'submitted'));\n\t\t\t\t\tconst optionsText =\n\t\t\t\t\t\tselectedOptions.length === 0 ? '' : ` ${selectedOptions.join(styleText('dim', ', '))}`;\n\t\t\t\t\treturn `${title}${hasGuide ? styleText('gray', S_BAR) : ''}${optionsText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(styleText('dim', ', '));\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${\n\t\t\t\t\t\tlabel.trim() ? `${label}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0\n\t\t\t\t\t\t\t\t? `${hasGuide ? `${styleText('yellow', S_BAR_END)} ` : ''}${styleText('yellow', ln)}`\n\t\t\t\t\t\t\t\t: ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('yellow', S_BAR)} ` : ''}${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tvalue.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${hasGuide ? `${styleText('yellow', S_BAR)} ` : ''}`)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst optionsText = this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tvalue.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tlet optionText = '';\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\toptionText = opt(\n\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\tselected ? 'group-active-selected' : 'group-active',\n\t\t\t\t\t\t\t\t\toptions\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else if (active && selected) {\n\t\t\t\t\t\t\t\toptionText = opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t} else if (selected) {\n\t\t\t\t\t\t\t\toptionText = opt(option, 'selected', options);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\toptionText = opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst prefix = i !== 0 && !optionText.startsWith('\\n') ? ' ' : '';\n\t\t\t\t\t\t\treturn `${prefix}${optionText}`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${hasGuide ? styleText('cyan', S_BAR) : ''}`);\n\t\t\t\t\tconst optionsPrefix = optionsText.startsWith('\\n') ? '' : ' ';\n\t\t\t\t\treturn `${title}${hasGuide ? styleText('cyan', S_BAR) : ''}${optionsPrefix}${optionsText}\\n${\n\t\t\t\t\t\thasGuide ? styleText('cyan', S_BAR_END) : ''\n\t\t\t\t\t}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n","import { styleText } from 'node:util';\nimport { settings } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_ERROR,\n\tS_INFO,\n\tS_STEP_SUBMIT,\n\tS_SUCCESS,\n\tS_WARN,\n} from './common.js';\n\nexport interface LogMessageOptions extends CommonOptions {\n\tsymbol?: string;\n\tspacing?: number;\n\tsecondarySymbol?: string;\n}\n\nexport const log = {\n\tmessage: (\n\t\tmessage: string | string[] = [],\n\t\t{\n\t\t\tsymbol = styleText('gray', S_BAR),\n\t\t\tsecondarySymbol = styleText('gray', S_BAR),\n\t\t\toutput = process.stdout,\n\t\t\tspacing = 1,\n\t\t\twithGuide,\n\t\t}: LogMessageOptions = {}\n\t) => {\n\t\tconst parts: string[] = [];\n\t\tconst hasGuide = withGuide ?? settings.withGuide;\n\t\tconst spacingString = !hasGuide ? '' : secondarySymbol;\n\t\tconst prefix = !hasGuide ? '' : `${symbol} `;\n\t\tconst secondaryPrefix = !hasGuide ? '' : `${secondarySymbol} `;\n\n\t\tfor (let i = 0; i < spacing; i++) {\n\t\t\tparts.push(spacingString);\n\t\t}\n\n\t\tconst messageParts = Array.isArray(message) ? message : message.split('\\n');\n\t\tif (messageParts.length > 0) {\n\t\t\tconst [firstLine, ...lines] = messageParts;\n\t\t\tif (firstLine.length > 0) {\n\t\t\t\tparts.push(`${prefix}${firstLine}`);\n\t\t\t} else {\n\t\t\t\tparts.push(hasGuide ? symbol : '');\n\t\t\t}\n\t\t\tfor (const ln of lines) {\n\t\t\t\tif (ln.length > 0) {\n\t\t\t\t\tparts.push(`${secondaryPrefix}${ln}`);\n\t\t\t\t} else {\n\t\t\t\t\tparts.push(hasGuide ? secondarySymbol : '');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\toutput.write(`${parts.join('\\n')}\\n`);\n\t},\n\tinfo: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('blue', S_INFO) });\n\t},\n\tsuccess: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('green', S_SUCCESS) });\n\t},\n\tstep: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('green', S_STEP_SUBMIT) });\n\t},\n\twarn: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('yellow', S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.warn(message, opts);\n\t},\n\terror: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('red', S_ERROR) });\n\t},\n};\n","import type { Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport { settings } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, S_BAR_START } from './common.js';\n\nexport const cancel = (message = '', opts?: CommonOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst prefix = hasGuide ? `${styleText('gray', S_BAR_END)} ` : '';\n\toutput.write(`${prefix}${styleText('red', message)}\\n\\n`);\n};\n\nexport const intro = (title = '', opts?: CommonOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst prefix = hasGuide ? `${styleText('gray', S_BAR_START)} ` : '';\n\toutput.write(`${prefix}${title}\\n`);\n};\n\nexport const outro = (message = '', opts?: CommonOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst prefix = hasGuide ? `${styleText('gray', S_BAR)}\\n${styleText('gray', S_BAR_END)} ` : '';\n\toutput.write(`${prefix}${message}\\n\\n`);\n};\n","import { styleText } from 'node:util';\nimport { MultiSelectPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_CHECKBOX_ACTIVE,\n\tS_CHECKBOX_INACTIVE,\n\tS_CHECKBOX_SELECTED,\n\tsymbol,\n\tsymbolBar,\n} from './common.js';\nimport { limitOptions } from './limit-options.js';\nimport type { Option } from './select.js';\n\nexport interface MultiSelectOptions<Value> extends CommonOptions {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValues?: Value[];\n\tmaxItems?: number;\n\trequired?: boolean;\n\tcursorAt?: Value;\n}\nconst computeLabel = (label: string, format: (text: string) => string) => {\n\treturn label\n\t\t.split('\\n')\n\t\t.map((line) => format(line))\n\t\t.join('\\n');\n};\n\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled'\n\t\t\t| 'disabled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'disabled') {\n\t\t\treturn `${styleText('gray', S_CHECKBOX_INACTIVE)} ${computeLabel(label, (str) => styleText(['strikethrough', 'gray'], str))}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint ?? 'disabled'})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${styleText('cyan', S_CHECKBOX_ACTIVE)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\treturn `${styleText('green', S_CHECKBOX_SELECTED)} ${computeLabel(label, (text) => styleText('dim', text))}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${computeLabel(label, (text) => styleText(['strikethrough', 'dim'], text))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${styleText('green', S_CHECKBOX_SELECTED)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${computeLabel(label, (text) => styleText('dim', text))}`;\n\t\t}\n\t\treturn `${styleText('dim', S_CHECKBOX_INACTIVE)} ${computeLabel(label, (text) => styleText('dim', text))}`;\n\t};\n\tconst required = opts.required ?? true;\n\n\treturn new MultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValues: opts.initialValues,\n\t\trequired,\n\t\tcursorAt: opts.cursorAt,\n\t\tvalidate(selected: Value[] | undefined) {\n\t\t\tif (required && (selected === undefined || selected.length === 0))\n\t\t\t\treturn `Please select at least one option.\\n${styleText(\n\t\t\t\t\t'reset',\n\t\t\t\t\tstyleText(\n\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t`Press ${styleText(['gray', 'bgWhite', 'inverse'], ' space ')} to select, ${styleText(\n\t\t\t\t\t\t\t'gray',\n\t\t\t\t\t\t\tstyleText('bgWhite', styleText('inverse', ' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst wrappedMessage = wrapTextWithPrefix(\n\t\t\t\topts.output,\n\t\t\t\topts.message,\n\t\t\t\thasGuide ? `${symbolBar(this.state)} ` : '',\n\t\t\t\t`${symbol(this.state)} `\n\t\t\t);\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${wrappedMessage}\\n`;\n\t\t\tconst value = this.value ?? [];\n\n\t\t\tconst styleOption = (option: Option<Value>, active: boolean) => {\n\t\t\t\tif (option.disabled) {\n\t\t\t\t\treturn opt(option, 'disabled');\n\t\t\t\t}\n\t\t\t\tconst selected = value.includes(option.value);\n\t\t\t\tif (active && selected) {\n\t\t\t\t\treturn opt(option, 'active-selected');\n\t\t\t\t}\n\t\t\t\tif (selected) {\n\t\t\t\t\treturn opt(option, 'selected');\n\t\t\t\t}\n\t\t\t\treturn opt(option, active ? 'active' : 'inactive');\n\t\t\t};\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitText =\n\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t\t.join(styleText('dim', ', ')) || styleText('dim', 'none');\n\t\t\t\t\tconst wrappedSubmitText = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\tsubmitText,\n\t\t\t\t\t\thasGuide ? `${styleText('gray', S_BAR)} ` : ''\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedSubmitText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(styleText('dim', ', '));\n\t\t\t\t\tif (label.trim() === '') {\n\t\t\t\t\t\treturn `${title}${styleText('gray', S_BAR)}`;\n\t\t\t\t\t}\n\t\t\t\t\tconst wrappedLabel = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\thasGuide ? `${styleText('gray', S_BAR)} ` : ''\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedLabel}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst prefix = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0\n\t\t\t\t\t\t\t\t? `${hasGuide ? `${styleText('yellow', S_BAR_END)} ` : ''}${styleText('yellow', ln)}`\n\t\t\t\t\t\t\t\t: ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\t// Calculate rowPadding: title lines + footer lines (error message + trailing newline)\n\t\t\t\t\tconst titleLineCount = title.split('\\n').length;\n\t\t\t\t\tconst footerLineCount = footer.split('\\n').length + 1; // footer + trailing newline\n\t\t\t\t\treturn `${title}${prefix}${limitOptions({\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tcolumnPadding: prefix.length,\n\t\t\t\t\t\trowPadding: titleLineCount + footerLineCount,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${prefix}`)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst prefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\t// Calculate rowPadding: title lines + footer lines (S_BAR_END + trailing newline)\n\t\t\t\t\tconst titleLineCount = title.split('\\n').length;\n\t\t\t\t\tconst footerLineCount = hasGuide ? 2 : 1; // S_BAR_END + trailing newline\n\t\t\t\t\treturn `${title}${prefix}${limitOptions({\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tcolumnPadding: prefix.length,\n\t\t\t\t\t\trowPadding: titleLineCount + footerLineCount,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${prefix}`)}\\n${hasGuide ? styleText('cyan', S_BAR_END) : ''}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n","import process from 'node:process';\nimport type { Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport { getColumns, settings } from '@clack/core';\nimport stringWidth from 'fast-string-width';\nimport { type Options as WrapAnsiOptions, wrapAnsi } from 'fast-wrap-ansi';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_H,\n\tS_CONNECT_LEFT,\n\tS_CORNER_BOTTOM_LEFT,\n\tS_CORNER_BOTTOM_RIGHT,\n\tS_CORNER_TOP_RIGHT,\n\tS_STEP_SUBMIT,\n} from './common.js';\n\ntype FormatFn = (line: string) => string;\nexport interface NoteOptions extends CommonOptions {\n\tformat?: FormatFn;\n}\n\nconst defaultNoteFormatter = (line: string): string => styleText('dim', line);\n\nconst wrapWithFormat = (message: string, width: number, format: FormatFn): string => {\n\tconst opts: WrapAnsiOptions = {\n\t\thard: true,\n\t\ttrim: false,\n\t};\n\tconst wrapMsg = wrapAnsi(message, width, opts).split('\\n');\n\tconst maxWidthNormal = wrapMsg.reduce((sum, ln) => Math.max(stringWidth(ln), sum), 0);\n\tconst maxWidthFormat = wrapMsg.map(format).reduce((sum, ln) => Math.max(stringWidth(ln), sum), 0);\n\tconst wrapWidth = width - (maxWidthFormat - maxWidthNormal);\n\treturn wrapAnsi(message, wrapWidth, opts);\n};\n\nexport const note = (message = '', title = '', opts?: NoteOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst format = opts?.format ?? defaultNoteFormatter;\n\tconst wrapMsg = wrapWithFormat(message, getColumns(output) - 6, format);\n\tconst lines = ['', ...wrapMsg.split('\\n').map(format), ''];\n\tconst titleLen = stringWidth(title);\n\tconst len =\n\t\tMath.max(\n\t\t\tlines.reduce((sum, ln) => {\n\t\t\t\tconst width = stringWidth(ln);\n\t\t\t\treturn width > sum ? width : sum;\n\t\t\t}, 0),\n\t\t\ttitleLen\n\t\t) + 2;\n\tconst msg = lines\n\t\t.map(\n\t\t\t(ln) =>\n\t\t\t\t`${styleText('gray', S_BAR)} ${ln}${' '.repeat(len - stringWidth(ln))}${styleText('gray', S_BAR)}`\n\t\t)\n\t\t.join('\\n');\n\tconst leadingBorder = hasGuide ? `${styleText('gray', S_BAR)}\\n` : '';\n\tconst bottomLeft = hasGuide ? S_CONNECT_LEFT : S_CORNER_BOTTOM_LEFT;\n\toutput.write(\n\t\t`${leadingBorder}${styleText('green', S_STEP_SUBMIT)} ${styleText('reset', title)} ${styleText(\n\t\t\t'gray',\n\t\t\tS_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT\n\t\t)}\\n${msg}\\n${styleText('gray', bottomLeft + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\\n`\n\t);\n};\n","import { styleText } from 'node:util';\nimport { PasswordPrompt, settings } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, S_PASSWORD_MASK, symbol } from './common.js';\n\nexport interface PasswordOptions extends CommonOptions {\n\tmessage: string;\n\tmask?: string;\n\tvalidate?: (value: string | undefined) => string | Error | undefined;\n\tclearOnError?: boolean;\n}\nexport const password = (opts: PasswordOptions) => {\n\treturn new PasswordPrompt({\n\t\tvalidate: opts.validate,\n\t\tmask: opts.mask ?? S_PASSWORD_MASK,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst userInput = this.userInputWithCursor;\n\t\t\tconst masked = this.masked;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorPrefix = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst errorPrefixEnd = hasGuide ? `${styleText('yellow', S_BAR_END)} ` : '';\n\t\t\t\t\tconst maskedText = masked ?? '';\n\t\t\t\t\tif (opts.clearOnError) {\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t}\n\t\t\t\t\treturn `${title.trim()}\\n${errorPrefix}${maskedText}\\n${errorPrefixEnd}${styleText('yellow', this.error)}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst maskedText = masked ? styleText('dim', masked) : '';\n\t\t\t\t\treturn `${title}${submitPrefix}${maskedText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst maskedText = masked ? styleText(['strikethrough', 'dim'], masked) : '';\n\t\t\t\t\treturn `${title}${cancelPrefix}${maskedText}${\n\t\t\t\t\t\tmasked && hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\treturn `${title}${defaultPrefix}${userInput}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n","import { existsSync, lstatSync, readdirSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { autocomplete } from './autocomplete.js';\nimport type { CommonOptions } from './common.js';\n\nexport interface PathOptions extends CommonOptions {\n\troot?: string;\n\tdirectory?: boolean;\n\tinitialValue?: string;\n\tmessage: string;\n\tvalidate?: (value: string | undefined) => string | Error | undefined;\n}\n\nexport const path = (opts: PathOptions) => {\n\tconst validate = opts.validate;\n\n\treturn autocomplete({\n\t\t...opts,\n\t\tinitialUserInput: opts.initialValue ?? opts.root ?? process.cwd(),\n\t\tmaxItems: 5,\n\t\tvalidate(value) {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\t// Shouldn't ever happen since we don't enable `multiple: true`\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (!value) {\n\t\t\t\treturn 'Please select a path';\n\t\t\t}\n\t\t\tif (validate) {\n\t\t\t\treturn validate(value);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\toptions() {\n\t\t\tconst userInput = this.userInput;\n\t\t\tif (userInput === '') {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tlet searchPath: string;\n\n\t\t\t\tif (!existsSync(userInput)) {\n\t\t\t\t\tsearchPath = dirname(userInput);\n\t\t\t\t} else {\n\t\t\t\t\tconst stat = lstatSync(userInput);\n\t\t\t\t\tif (stat.isDirectory() && (!opts.directory || userInput.endsWith('/'))) {\n\t\t\t\t\t\tsearchPath = userInput;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsearchPath = dirname(userInput);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Strip trailing slash so startsWith matches the directory itself among its siblings\n\t\t\t\tconst prefix =\n\t\t\t\t\tuserInput.length > 1 && userInput.endsWith('/') ? userInput.slice(0, -1) : userInput;\n\n\t\t\t\tconst items = readdirSync(searchPath)\n\t\t\t\t\t.map((item) => {\n\t\t\t\t\t\tconst path = join(searchPath, item);\n\t\t\t\t\t\tconst stats = lstatSync(path);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tname: item,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tisDirectory: stats.isDirectory(),\n\t\t\t\t\t\t};\n\t\t\t\t\t})\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t({ path, isDirectory }) => path.startsWith(prefix) && (isDirectory || !opts.directory)\n\t\t\t\t\t);\n\n\t\t\t\treturn items.map((item) => ({\n\t\t\t\t\tvalue: item.path,\n\t\t\t\t}));\n\t\t\t} catch (_e) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t});\n};\n","import { styleText } from 'node:util';\nimport { block, getColumns, settings } from '@clack/core';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor, erase } from 'sisteransi';\nimport {\n\ttype CommonOptions,\n\tisCI as isCIFn,\n\tS_BAR,\n\tS_STEP_CANCEL,\n\tS_STEP_ERROR,\n\tS_STEP_SUBMIT,\n\tunicode,\n} from './common.js';\n\nexport interface SpinnerOptions extends CommonOptions {\n\tindicator?: 'dots' | 'timer';\n\tonCancel?: () => void;\n\tcancelMessage?: string;\n\terrorMessage?: string;\n\tframes?: string[];\n\tdelay?: number;\n\tstyleFrame?: (frame: string) => string;\n}\n\nexport interface SpinnerResult {\n\tstart(msg?: string): void;\n\tstop(msg?: string): void;\n\tcancel(msg?: string): void;\n\terror(msg?: string): void;\n\tmessage(msg?: string): void;\n\tclear(): void;\n\treadonly isCancelled: boolean;\n}\n\nconst defaultStyleFn: SpinnerOptions['styleFrame'] = (frame) => styleText('magenta', frame);\n\nexport const spinner = ({\n\tindicator = 'dots',\n\tonCancel,\n\toutput = process.stdout,\n\tcancelMessage,\n\terrorMessage,\n\tframes = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'],\n\tdelay = unicode ? 80 : 120,\n\tsignal,\n\t...opts\n}: SpinnerOptions = {}): SpinnerResult => {\n\tconst isCI = isCIFn();\n\n\tlet unblock: () => void;\n\tlet loop: NodeJS.Timeout;\n\tlet isSpinnerActive = false;\n\tlet isCancelled = false;\n\tlet _message = '';\n\tlet _prevMessage: string | undefined;\n\tlet _origin: number = performance.now();\n\tconst columns = getColumns(output);\n\tconst styleFn = opts?.styleFrame ?? defaultStyleFn;\n\n\tconst handleExit = (code: number) => {\n\t\tconst msg =\n\t\t\tcode > 1\n\t\t\t\t? (errorMessage ?? settings.messages.error)\n\t\t\t\t: (cancelMessage ?? settings.messages.cancel);\n\t\tisCancelled = code === 1;\n\t\tif (isSpinnerActive) {\n\t\t\t_stop(msg, code);\n\t\t\tif (isCancelled && typeof onCancel === 'function') {\n\t\t\t\tonCancel();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst errorEventHandler = () => handleExit(2);\n\tconst signalEventHandler = () => handleExit(1);\n\n\tconst registerHooks = () => {\n\t\t// Reference: https://nodejs.org/api/process.html#event-uncaughtexception\n\t\tprocess.on('uncaughtExceptionMonitor', errorEventHandler);\n\t\t// Reference: https://nodejs.org/api/process.html#event-unhandledrejection\n\t\tprocess.on('unhandledRejection', errorEventHandler);\n\t\t// Reference Signal Events: https://nodejs.org/api/process.html#signal-events\n\t\tprocess.on('SIGINT', signalEventHandler);\n\t\tprocess.on('SIGTERM', signalEventHandler);\n\t\tprocess.on('exit', handleExit);\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', signalEventHandler);\n\t\t}\n\t};\n\n\tconst clearHooks = () => {\n\t\tprocess.removeListener('uncaughtExceptionMonitor', errorEventHandler);\n\t\tprocess.removeListener('unhandledRejection', errorEventHandler);\n\t\tprocess.removeListener('SIGINT', signalEventHandler);\n\t\tprocess.removeListener('SIGTERM', signalEventHandler);\n\t\tprocess.removeListener('exit', handleExit);\n\n\t\tif (signal) {\n\t\t\tsignal.removeEventListener('abort', signalEventHandler);\n\t\t}\n\t};\n\n\tconst clearPrevMessage = () => {\n\t\tif (_prevMessage === undefined) return;\n\t\tif (isCI) output.write('\\n');\n\t\tconst wrapped = wrapAnsi(_prevMessage, columns, {\n\t\t\thard: true,\n\t\t\ttrim: false,\n\t\t});\n\t\tconst prevLines = wrapped.split('\\n');\n\t\tif (prevLines.length > 1) {\n\t\t\toutput.write(cursor.up(prevLines.length - 1));\n\t\t}\n\t\toutput.write(cursor.to(0));\n\t\toutput.write(erase.down());\n\t};\n\n\tconst removeTrailingDots = (msg: string): string => {\n\t\treturn msg.replace(/\\.+$/, '');\n\t};\n\n\tconst formatTimer = (origin: number): string => {\n\t\tconst duration = (performance.now() - origin) / 1000;\n\t\tconst min = Math.floor(duration / 60);\n\t\tconst secs = Math.floor(duration % 60);\n\t\treturn min > 0 ? `[${min}m ${secs}s]` : `[${secs}s]`;\n\t};\n\n\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\n\tconst start = (msg = ''): void => {\n\t\tisSpinnerActive = true;\n\t\tunblock = block({ output });\n\t\t_message = removeTrailingDots(msg);\n\t\t_origin = performance.now();\n\t\tif (hasGuide) {\n\t\t\toutput.write(`${styleText('gray', S_BAR)}\\n`);\n\t\t}\n\t\tlet frameIndex = 0;\n\t\tlet indicatorTimer = 0;\n\t\tregisterHooks();\n\t\tloop = setInterval(() => {\n\t\t\tif (isCI && _message === _prevMessage) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPrevMessage();\n\t\t\t_prevMessage = _message;\n\t\t\tconst frame = styleFn(frames[frameIndex]);\n\t\t\tlet outputMessage: string;\n\n\t\t\tif (isCI) {\n\t\t\t\toutputMessage = `${frame} ${_message}...`;\n\t\t\t} else if (indicator === 'timer') {\n\t\t\t\toutputMessage = `${frame} ${_message} ${formatTimer(_origin)}`;\n\t\t\t} else {\n\t\t\t\tconst loadingDots = '.'.repeat(Math.floor(indicatorTimer)).slice(0, 3);\n\t\t\t\toutputMessage = `${frame} ${_message}${loadingDots}`;\n\t\t\t}\n\n\t\t\tconst wrapped = wrapAnsi(outputMessage, columns, {\n\t\t\t\thard: true,\n\t\t\t\ttrim: false,\n\t\t\t});\n\t\t\toutput.write(wrapped);\n\n\t\t\tframeIndex = frameIndex + 1 < frames.length ? frameIndex + 1 : 0;\n\t\t\t// indicator increase by 1 every 8 frames\n\t\t\tindicatorTimer = indicatorTimer < 4 ? indicatorTimer + 0.125 : 0;\n\t\t}, delay);\n\t};\n\n\tconst _stop = (msg = '', code = 0, silent: boolean = false): void => {\n\t\tif (!isSpinnerActive) return;\n\t\tisSpinnerActive = false;\n\t\tclearInterval(loop);\n\t\tclearPrevMessage();\n\t\tconst step =\n\t\t\tcode === 0\n\t\t\t\t? styleText('green', S_STEP_SUBMIT)\n\t\t\t\t: code === 1\n\t\t\t\t\t? styleText('red', S_STEP_CANCEL)\n\t\t\t\t\t: styleText('red', S_STEP_ERROR);\n\t\t_message = msg ?? _message;\n\t\tif (!silent) {\n\t\t\tif (indicator === 'timer') {\n\t\t\t\toutput.write(`${step} ${_message} ${formatTimer(_origin)}\\n`);\n\t\t\t} else {\n\t\t\t\toutput.write(`${step} ${_message}\\n`);\n\t\t\t}\n\t\t}\n\t\tclearHooks();\n\t\tunblock();\n\t};\n\n\tconst stop = (msg = ''): void => _stop(msg, 0);\n\tconst cancel = (msg = ''): void => _stop(msg, 1);\n\tconst error = (msg = ''): void => _stop(msg, 2);\n\t// TODO (43081j): this will leave the initial S_BAR since we purposely\n\t// don't erase that in `clearPrevMessage`. In future, we may want to treat\n\t// `clear` as a special case and remove the bar too.\n\tconst clear = (): void => _stop('', 0, true);\n\n\tconst message = (msg = ''): void => {\n\t\t_message = removeTrailingDots(msg ?? _message);\n\t};\n\n\treturn {\n\t\tstart,\n\t\tstop,\n\t\tmessage,\n\t\tcancel,\n\t\terror,\n\t\tclear,\n\t\tget isCancelled() {\n\t\t\treturn isCancelled;\n\t\t},\n\t};\n};\n","import { styleText } from 'node:util';\nimport type { State } from '@clack/core';\nimport { unicodeOr } from './common.js';\nimport { type SpinnerOptions, type SpinnerResult, spinner } from './spinner.js';\n\nconst S_PROGRESS_CHAR: Record<NonNullable<ProgressOptions['style']>, string> = {\n\tlight: unicodeOr('─', '-'),\n\theavy: unicodeOr('━', '='),\n\tblock: unicodeOr('█', '#'),\n};\n\nexport interface ProgressOptions extends SpinnerOptions {\n\tstyle?: 'light' | 'heavy' | 'block';\n\tmax?: number;\n\tsize?: number;\n}\n\nexport interface ProgressResult extends SpinnerResult {\n\tadvance(step?: number, msg?: string): void;\n}\n\nexport function progress({\n\tstyle = 'heavy',\n\tmax: userMax = 100,\n\tsize: userSize = 40,\n\t...spinnerOptions\n}: ProgressOptions = {}): ProgressResult {\n\tconst spin = spinner(spinnerOptions);\n\tlet value = 0;\n\tlet previousMessage = '';\n\n\tconst max = Math.max(1, userMax);\n\tconst size = Math.max(1, userSize);\n\n\tconst activeStyle = (state: State) => {\n\t\tswitch (state) {\n\t\t\tcase 'initial':\n\t\t\tcase 'active':\n\t\t\t\treturn (text: string) => styleText('magenta', text);\n\t\t\tcase 'error':\n\t\t\tcase 'cancel':\n\t\t\t\treturn (text: string) => styleText('red', text);\n\t\t\tcase 'submit':\n\t\t\t\treturn (text: string) => styleText('green', text);\n\t\t\tdefault:\n\t\t\t\treturn (text: string) => styleText('magenta', text);\n\t\t}\n\t};\n\tconst drawProgress = (state: State, msg: string) => {\n\t\tconst active = Math.floor((value / max) * size);\n\t\treturn `${activeStyle(state)(S_PROGRESS_CHAR[style].repeat(active))}${styleText('dim', S_PROGRESS_CHAR[style].repeat(size - active))} ${msg}`;\n\t};\n\n\tconst start = (msg = '') => {\n\t\tpreviousMessage = msg;\n\t\tspin.start(drawProgress('initial', msg));\n\t};\n\tconst advance = (step = 1, msg?: string): void => {\n\t\tvalue = Math.min(max, step + value);\n\t\tspin.message(drawProgress('active', msg ?? previousMessage));\n\t\tpreviousMessage = msg ?? previousMessage;\n\t};\n\treturn {\n\t\tstart,\n\t\tstop: spin.stop,\n\t\tcancel: spin.cancel,\n\t\terror: spin.error,\n\t\tclear: spin.clear,\n\t\tadvance,\n\t\tisCancelled: spin.isCancelled,\n\t\tmessage: (msg: string) => advance(0, msg),\n\t};\n}\n","import { styleText } from 'node:util';\nimport { SelectPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_RADIO_ACTIVE,\n\tS_RADIO_INACTIVE,\n\tsymbol,\n\tsymbolBar,\n} from './common.js';\nimport { limitOptions } from './limit-options.js';\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n\t? {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * The optional, user-facing text for this option.\n\t\t\t *\n\t\t\t * By default, the `value` is converted to a string.\n\t\t\t */\n\t\t\tlabel?: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t\t/**\n\t\t\t * Whether this option is disabled.\n\t\t\t * Disabled options are visible but cannot be selected.\n\t\t\t *\n\t\t\t * By default, options are not disabled.\n\t\t\t */\n\t\t\tdisabled?: boolean;\n\t\t}\n\t: {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * Required. The user-facing text for this option.\n\t\t\t */\n\t\t\tlabel: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t\t/**\n\t\t\t * Whether this option is disabled.\n\t\t\t * Disabled options are visible but cannot be selected.\n\t\t\t *\n\t\t\t * By default, options are not disabled.\n\t\t\t */\n\t\t\tdisabled?: boolean;\n\t\t};\n\nexport interface SelectOptions<Value> extends CommonOptions {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tmaxItems?: number;\n}\n\nconst computeLabel = (label: string, format: (text: string) => string) => {\n\tif (!label.includes('\\n')) {\n\t\treturn format(label);\n\t}\n\treturn label\n\t\t.split('\\n')\n\t\t.map((line) => format(line))\n\t\t.join('\\n');\n};\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' | 'disabled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tswitch (state) {\n\t\t\tcase 'disabled':\n\t\t\t\treturn `${styleText('gray', S_RADIO_INACTIVE)} ${computeLabel(label, (text) => styleText('gray', text))}${\n\t\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint ?? 'disabled'})`)}` : ''\n\t\t\t\t}`;\n\t\t\tcase 'selected':\n\t\t\t\treturn `${computeLabel(label, (text) => styleText('dim', text))}`;\n\t\t\tcase 'active':\n\t\t\t\treturn `${styleText('green', S_RADIO_ACTIVE)} ${label}${\n\t\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t\t}`;\n\t\t\tcase 'cancelled':\n\t\t\t\treturn `${computeLabel(label, (str) => styleText(['strikethrough', 'dim'], str))}`;\n\t\t\tdefault:\n\t\t\t\treturn `${styleText('dim', S_RADIO_INACTIVE)} ${computeLabel(label, (text) => styleText('dim', text))}`;\n\t\t}\n\t};\n\n\treturn new SelectPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${symbol(this.state)} `;\n\t\t\tconst titlePrefixBar = `${symbolBar(this.state)} `;\n\t\t\tconst messageLines = wrapTextWithPrefix(\n\t\t\t\topts.output,\n\t\t\t\topts.message,\n\t\t\t\ttitlePrefixBar,\n\t\t\t\ttitlePrefix\n\t\t\t);\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${messageLines}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst wrappedLines = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(this.options[this.cursor], 'selected'),\n\t\t\t\t\t\tsubmitPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedLines}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst wrappedLines = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(this.options[this.cursor], 'cancelled'),\n\t\t\t\t\t\tcancelPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedLines}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst prefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst prefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\t// Calculate rowPadding: title lines + footer lines (S_BAR_END + trailing newline)\n\t\t\t\t\tconst titleLineCount = title.split('\\n').length;\n\t\t\t\t\tconst footerLineCount = hasGuide ? 2 : 1; // S_BAR_END + trailing newline (or just trailing newline)\n\t\t\t\t\treturn `${title}${prefix}${limitOptions({\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tcolumnPadding: prefix.length,\n\t\t\t\t\t\trowPadding: titleLineCount + footerLineCount,\n\t\t\t\t\t\tstyle: (item, active) =>\n\t\t\t\t\t\t\topt(item, item.disabled ? 'disabled' : active ? 'active' : 'inactive'),\n\t\t\t\t\t}).join(`\\n${prefix}`)}\\n${prefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n","import { styleText } from 'node:util';\nimport { SelectKeyPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, symbol } from './common.js';\nimport type { Option } from './select.js';\n\nexport interface SelectKeyOptions<Value extends string> extends CommonOptions {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tcaseSensitive?: boolean;\n}\n\nexport const selectKey = <Value extends string>(opts: SelectKeyOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'selected') {\n\t\t\treturn `${styleText('dim', label)}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${styleText(['strikethrough', 'dim'], label)}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${styleText(['bgCyan', 'gray'], ` ${option.value} `)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\treturn `${styleText(['gray', 'bgWhite', 'inverse'], ` ${option.value} `)} ${label}${\n\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t}`;\n\t};\n\n\treturn new SelectKeyPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValue: opts.initialValue,\n\t\tcaseSensitive: opts.caseSensitive,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst selectedOption =\n\t\t\t\t\t\tthis.options.find((opt) => opt.value === this.value) ?? opts.options[0];\n\t\t\t\t\tconst wrapped = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(selectedOption, 'selected'),\n\t\t\t\t\t\tsubmitPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrapped}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst wrapped = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(this.options[0], 'cancelled'),\n\t\t\t\t\t\tcancelPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrapped}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\tconst wrapped = this.options\n\t\t\t\t\t\t.map((option, i) =>\n\t\t\t\t\t\t\twrapTextWithPrefix(\n\t\t\t\t\t\t\t\topts.output,\n\t\t\t\t\t\t\t\topt(option, i === this.cursor ? 'active' : 'inactive'),\n\t\t\t\t\t\t\t\tdefaultPrefix\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${wrapped}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n","import { stripVTControlCharacters as strip, styleText } from 'node:util';\nimport { S_BAR, S_ERROR, S_INFO, S_STEP_SUBMIT, S_SUCCESS, S_WARN } from './common.js';\nimport type { LogMessageOptions } from './log.js';\n\nconst prefix = `${styleText('gray', S_BAR)} `;\n\n// TODO (43081j): this currently doesn't support custom `output` writables\n// because we rely on `columns` existing (i.e. `process.stdout.columns).\n//\n// If we want to support `output` being passed in, we will need to use\n// a condition like `if (output insance Writable)` to check if it has columns\nexport const stream = {\n\tmessage: async (\n\t\titerable: Iterable<string> | AsyncIterable<string>,\n\t\t{ symbol = styleText('gray', S_BAR) }: LogMessageOptions = {}\n\t) => {\n\t\tprocess.stdout.write(`${styleText('gray', S_BAR)}\\n${symbol} `);\n\t\tlet lineWidth = 3;\n\t\tfor await (let chunk of iterable) {\n\t\t\tchunk = chunk.replace(/\\n/g, `\\n${prefix}`);\n\t\t\tif (chunk.includes('\\n')) {\n\t\t\t\tlineWidth = 3 + strip(chunk.slice(chunk.lastIndexOf('\\n'))).length;\n\t\t\t}\n\t\t\tconst chunkLen = strip(chunk).length;\n\t\t\tif (lineWidth + chunkLen < process.stdout.columns) {\n\t\t\t\tlineWidth += chunkLen;\n\t\t\t\tprocess.stdout.write(chunk);\n\t\t\t} else {\n\t\t\t\tprocess.stdout.write(`\\n${prefix}${chunk.trimStart()}`);\n\t\t\t\tlineWidth = 3 + strip(chunk.trimStart()).length;\n\t\t\t}\n\t\t}\n\t\tprocess.stdout.write('\\n');\n\t},\n\tinfo: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('blue', S_INFO) });\n\t},\n\tsuccess: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('green', S_SUCCESS) });\n\t},\n\tstep: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('green', S_STEP_SUBMIT) });\n\t},\n\twarn: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('yellow', S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.warn(iterable);\n\t},\n\terror: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('red', S_ERROR) });\n\t},\n};\n","import type { CommonOptions } from './common.js';\nimport { spinner } from './spinner.js';\n\nexport type Task = {\n\t/**\n\t * Task title\n\t */\n\ttitle: string;\n\t/**\n\t * Task function\n\t */\n\ttask: (message: (string: string) => void) => string | Promise<string> | void | Promise<void>;\n\n\t/**\n\t * If enabled === false the task will be skipped\n\t */\n\tenabled?: boolean;\n};\n\n/**\n * Define a group of tasks to be executed\n */\nexport const tasks = async (tasks: Task[], opts?: CommonOptions) => {\n\tfor (const task of tasks) {\n\t\tif (task.enabled === false) continue;\n\n\t\tconst s = spinner(opts);\n\t\ts.start(task.title);\n\t\tconst result = await task.task(s.message);\n\t\ts.stop(result || task.title);\n\t}\n};\n","import type { Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport { getColumns } from '@clack/core';\nimport { erase } from 'sisteransi';\nimport {\n\ttype CommonOptions,\n\tisCI as isCIFn,\n\tisTTY as isTTYFn,\n\tS_BAR,\n\tS_STEP_SUBMIT,\n} from './common.js';\nimport { log } from './log.js';\n\nexport interface TaskLogOptions extends CommonOptions {\n\ttitle: string;\n\tlimit?: number;\n\tspacing?: number;\n\tretainLog?: boolean;\n}\n\nexport interface TaskLogMessageOptions {\n\traw?: boolean;\n}\n\nexport interface TaskLogCompletionOptions {\n\tshowLog?: boolean;\n}\n\ninterface BufferEntry {\n\theader?: string;\n\tvalue: string;\n\tfull: string;\n\tresult?: {\n\t\tstatus: 'success' | 'error';\n\t\tmessage: string;\n\t};\n}\n\nconst stripDestructiveANSI = (input: string): string => {\n\t// biome-ignore lint/suspicious/noControlCharactersInRegex: intentional\n\treturn input.replace(/\\x1b\\[(?:\\d+;)*\\d*[ABCDEFGHfJKSTsu]|\\x1b\\[(s|u)/g, '');\n};\n\n/**\n * Renders a log which clears on success and remains on failure\n */\nexport const taskLog = (opts: TaskLogOptions) => {\n\tconst output: Writable = opts.output ?? process.stdout;\n\tconst columns = getColumns(output);\n\tconst secondarySymbol = styleText('gray', S_BAR);\n\tconst spacing = opts.spacing ?? 1;\n\tconst barSize = 3;\n\tconst retainLog = opts.retainLog === true;\n\tconst isTTY = !isCIFn() && isTTYFn(output);\n\n\toutput.write(`${secondarySymbol}\\n`);\n\toutput.write(`${styleText('green', S_STEP_SUBMIT)} ${opts.title}\\n`);\n\tfor (let i = 0; i < spacing; i++) {\n\t\toutput.write(`${secondarySymbol}\\n`);\n\t}\n\n\tconst buffers: BufferEntry[] = [\n\t\t{\n\t\t\tvalue: '',\n\t\t\tfull: '',\n\t\t},\n\t];\n\tlet lastMessageWasRaw = false;\n\n\tconst clear = (clearTitle: boolean): void => {\n\t\tif (buffers.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet lines = 0;\n\n\t\tif (clearTitle) {\n\t\t\tlines += spacing + 2;\n\t\t}\n\n\t\tfor (const buffer of buffers) {\n\t\t\tconst { value, result } = buffer;\n\t\t\tlet text = result?.message ?? value;\n\n\t\t\tif (text.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (result === undefined && buffer.header !== undefined && buffer.header !== '') {\n\t\t\t\ttext += `\\n${buffer.header}`;\n\t\t\t}\n\n\t\t\tconst bufferHeight = text.split('\\n').reduce((count, line) => {\n\t\t\t\tif (line === '') {\n\t\t\t\t\treturn count + 1;\n\t\t\t\t}\n\t\t\t\treturn count + Math.ceil((line.length + barSize) / columns);\n\t\t\t}, 0);\n\n\t\t\tlines += bufferHeight;\n\t\t}\n\n\t\tif (lines > 0) {\n\t\t\tlines += 1;\n\t\t\toutput.write(erase.lines(lines));\n\t\t}\n\t};\n\tconst printBuffer = (buffer: BufferEntry, messageSpacing?: number, full?: boolean): void => {\n\t\tconst messages = full ? `${buffer.full}\\n${buffer.value}` : buffer.value;\n\t\tif (buffer.header !== undefined && buffer.header !== '') {\n\t\t\tlog.message(\n\t\t\t\tbuffer.header.split('\\n').map((line) => styleText('bold', line)),\n\t\t\t\t{\n\t\t\t\t\toutput,\n\t\t\t\t\tsecondarySymbol,\n\t\t\t\t\tsymbol: secondarySymbol,\n\t\t\t\t\tspacing: 0,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tlog.message(\n\t\t\tmessages.split('\\n').map((line) => styleText('dim', line)),\n\t\t\t{\n\t\t\t\toutput,\n\t\t\t\tsecondarySymbol,\n\t\t\t\tsymbol: secondarySymbol,\n\t\t\t\tspacing: messageSpacing ?? spacing,\n\t\t\t}\n\t\t);\n\t};\n\tconst renderBuffer = (): void => {\n\t\tfor (const buffer of buffers) {\n\t\t\tconst { header, value, full } = buffer;\n\t\t\tif ((header === undefined || header.length === 0) && value.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tprintBuffer(buffer, undefined, retainLog === true && full.length > 0);\n\t\t}\n\t};\n\tconst message = (buffer: BufferEntry, msg: string, mopts?: TaskLogMessageOptions) => {\n\t\tclear(false);\n\t\tif ((mopts?.raw !== true || !lastMessageWasRaw) && buffer.value !== '') {\n\t\t\tbuffer.value += '\\n';\n\t\t}\n\t\tbuffer.value += stripDestructiveANSI(msg);\n\t\tlastMessageWasRaw = mopts?.raw === true;\n\t\tif (opts.limit !== undefined) {\n\t\t\tconst lines = buffer.value.split('\\n');\n\t\t\tconst linesToRemove = lines.length - opts.limit;\n\t\t\tif (linesToRemove > 0) {\n\t\t\t\tconst removedLines = lines.splice(0, linesToRemove);\n\t\t\t\tif (retainLog) {\n\t\t\t\t\tbuffer.full += (buffer.full === '' ? '' : '\\n') + removedLines.join('\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuffer.value = lines.join('\\n');\n\t\t}\n\t\tif (isTTY) {\n\t\t\tprintBuffers();\n\t\t}\n\t};\n\tconst printBuffers = (): void => {\n\t\tfor (const buffer of buffers) {\n\t\t\tif (buffer.result) {\n\t\t\t\tif (buffer.result.status === 'error') {\n\t\t\t\t\tlog.error(buffer.result.message, { output, secondarySymbol, spacing: 0 });\n\t\t\t\t} else {\n\t\t\t\t\tlog.success(buffer.result.message, { output, secondarySymbol, spacing: 0 });\n\t\t\t\t}\n\t\t\t} else if (buffer.value !== '') {\n\t\t\t\tprintBuffer(buffer, 0);\n\t\t\t}\n\t\t}\n\t};\n\tconst completeBuffer = (buffer: BufferEntry, result: BufferEntry['result']): void => {\n\t\tclear(false);\n\n\t\tbuffer.result = result;\n\n\t\tif (isTTY) {\n\t\t\tprintBuffers();\n\t\t}\n\t};\n\n\treturn {\n\t\tmessage(msg: string, mopts?: TaskLogMessageOptions) {\n\t\t\tmessage(buffers[0], msg, mopts);\n\t\t},\n\t\tgroup(name: string) {\n\t\t\tconst buffer: BufferEntry = {\n\t\t\t\theader: name,\n\t\t\t\tvalue: '',\n\t\t\t\tfull: '',\n\t\t\t};\n\t\t\tbuffers.push(buffer);\n\t\t\treturn {\n\t\t\t\tmessage(msg: string, mopts?: TaskLogMessageOptions) {\n\t\t\t\t\tmessage(buffer, msg, mopts);\n\t\t\t\t},\n\t\t\t\terror(message: string) {\n\t\t\t\t\tcompleteBuffer(buffer, {\n\t\t\t\t\t\tstatus: 'error',\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tsuccess(message: string) {\n\t\t\t\t\tcompleteBuffer(buffer, {\n\t\t\t\t\t\tstatus: 'success',\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\terror(message: string, opts?: TaskLogCompletionOptions): void {\n\t\t\tclear(true);\n\t\t\tlog.error(message, { output, secondarySymbol, spacing: 1 });\n\t\t\tif (opts?.showLog !== false) {\n\t\t\t\trenderBuffer();\n\t\t\t}\n\t\t\t// clear buffer since error is an end state\n\t\t\tbuffers.splice(1, buffers.length - 1);\n\t\t\tbuffers[0].value = '';\n\t\t\tbuffers[0].full = '';\n\t\t},\n\t\tsuccess(message: string, opts?: TaskLogCompletionOptions): void {\n\t\t\tclear(true);\n\t\t\tlog.success(message, { output, secondarySymbol, spacing: 1 });\n\t\t\tif (opts?.showLog === true) {\n\t\t\t\trenderBuffer();\n\t\t\t}\n\t\t\t// clear buffer since success is an end state\n\t\t\tbuffers.splice(1, buffers.length - 1);\n\t\t\tbuffers[0].value = '';\n\t\t\tbuffers[0].full = '';\n\t\t},\n\t};\n};\n","import { styleText } from 'node:util';\nimport { settings, TextPrompt } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, symbol } from './common.js';\n\nexport interface TextOptions extends CommonOptions {\n\tmessage: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\tinitialValue?: string;\n\tvalidate?: (value: string | undefined) => string | Error | undefined;\n}\n\nexport const text = (opts: TextOptions) => {\n\treturn new TextPrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\toutput: opts.output,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\trender() {\n\t\t\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} `;\n\t\t\tconst title = `${titlePrefix}${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? styleText('inverse', opts.placeholder[0]) + styleText('dim', opts.placeholder.slice(1))\n\t\t\t\t: styleText(['inverse', 'hidden'], '_');\n\t\t\tconst userInput = !this.userInput ? placeholder : this.userInputWithCursor;\n\t\t\tconst value = this.value ?? '';\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorText = this.error ? ` ${styleText('yellow', this.error)}` : '';\n\t\t\t\t\tconst errorPrefix = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst errorPrefixEnd = hasGuide ? styleText('yellow', S_BAR_END) : '';\n\t\t\t\t\treturn `${title.trim()}\\n${errorPrefix}${userInput}\\n${errorPrefixEnd}${errorText}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText('dim', value)}` : '';\n\t\t\t\t\tconst submitPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${submitPrefix}${valueText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText(['strikethrough', 'dim'], value)}` : '';\n\t\t\t\t\tconst cancelPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${cancelPrefix}${valueText}${value.trim() ? `\\n${cancelPrefix}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\treturn `${title}${defaultPrefix}${userInput}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n"],"names":["isUnicodeSupported","process","unicode","isCI","isTTY","output","unicodeOr","c","fallback","S_STEP_ACTIVE","S_STEP_CANCEL","S_STEP_ERROR","S_STEP_SUBMIT","S_BAR_START","S_BAR","S_BAR_END","S_BAR_START_RIGHT","S_BAR_END_RIGHT","S_RADIO_ACTIVE","S_RADIO_INACTIVE","S_CHECKBOX_ACTIVE","S_CHECKBOX_SELECTED","S_CHECKBOX_INACTIVE","S_PASSWORD_MASK","S_BAR_H","S_CORNER_TOP_RIGHT","S_CONNECT_LEFT","S_CORNER_BOTTOM_RIGHT","S_CORNER_BOTTOM_LEFT","S_CORNER_TOP_LEFT","S_INFO","S_SUCCESS","S_WARN","S_ERROR","symbol","state","styleText","symbolBar","trimLines","groups","initialLineCount","startIndex","endIndex","maxLines","lineCount","removals","i","group","limitOptions","cursor","options","style","maxItems","columnPadding","rowPadding","maxWidth","getColumns","rows","getRows","overflowFormat","outputMaxItems","computedMaxItems","slidingWindowLocation","shouldRenderTopEllipsis","shouldRenderBottomEllipsis","slidingWindowLocationEnd","lineGroups","slidingWindowLocationWithEllipsis","slidingWindowLocationEndWithEllipsis","wrappedLines","wrapAnsi","precedingRemovals","followingRemovals","newLineCount","cursorGroupIndex","trimLinesLocal","result","lineGroup","line","getLabel","option","getFilteredOption","searchText","label","hint","value","term","getSelectedOptions","values","results","autocomplete","opts","AutocompletePrompt","search","opt","hasGuide","settings","headings","userInput","placeholder","showPlaceholder","selected","submitPrefix","userInputText","cancelPrefix","barStyle","guidePrefix","guidePrefixEnd","searchTextValue","matches","noResults","validationError","instructions","footers","displayOptions","active","autocompleteMultiselect","formatOption","selectedValues","focusedValue","isSelected","checkbox","prompt","title","errorMessage","headerLines","footerLines","roundedSymbols","squareSymbols","getPaddingForLine","lineLength","innerWidth","padding","contentAlign","leftPadding","rightPadding","defaultFormatBorder","text","box","message","columns","borderTotalWidth","titlePadding","contentPadding","width","linePrefix","formatBorder","symbols","hSymbol","vSymbol","linePrefixWidth","stringWidth","titleWidth","maxBoxWidth","boxWidth","lines","longestLine","lineWithPadding","longestLineWidth","maxTitleLength","truncatedTitle","titlePaddingLeft","titlePaddingRight","wrappedMessage","leftLinePadding","rightLinePadding","confirm","inactive","ConfirmPrompt","titlePrefix","titlePrefixBar","messageLines","wrapTextWithPrefix","defaultPrefix","defaultPrefixEnd","date","validate","DatePrompt","iso","d","renderDate","errorText","bar","barEnd","valueText","inlineBar","inlineError","parts","sep","seg","isActive","DEFAULT_LABELS","renderSegment","isBlank","prompts","promptNames","name","e","isCancel","groupMultiselect","selectableGroups","groupSpacing","isItem","next","isLast","prefix","spacingPrefix","spacingPrefixText","selectedCheckbox","unselectedCheckbox","required","GroupMultiSelectPrompt","selectedOptions","optionValue","optionsText","footer","ln","groupActive","optionText","optionsPrefix","log","secondarySymbol","spacing","withGuide","spacingString","secondaryPrefix","messageParts","firstLine","cancel","intro","outro","computeLabel","format","multiselect","str","MultiSelectPrompt","styleOption","submitText","wrappedSubmitText","wrappedLabel","titleLineCount","footerLineCount","defaultNoteFormatter","wrapWithFormat","wrapMsg","maxWidthNormal","sum","maxWidthFormat","wrapWidth","note","titleLen","len","msg","leadingBorder","bottomLeft","password","PasswordPrompt","masked","errorPrefix","errorPrefixEnd","maskedText","path","searchPath","existsSync","lstatSync","dirname","readdirSync","item","join","stats","isDirectory","defaultStyleFn","frame","spinner","indicator","onCancel","cancelMessage","frames","delay","signal","isCIFn","unblock","loop","isSpinnerActive","isCancelled","_message","_prevMessage","_origin","styleFn","handleExit","code","_stop","errorEventHandler","signalEventHandler","registerHooks","clearHooks","clearPrevMessage","prevLines","erase","removeTrailingDots","formatTimer","origin","duration","min","secs","start","block","frameIndex","indicatorTimer","outputMessage","loadingDots","wrapped","silent","step","S_PROGRESS_CHAR","progress","userMax","userSize","spinnerOptions","spin","previousMessage","max","size","activeStyle","drawProgress","advance","select","SelectPrompt","prefixEnd","selectKey","SelectKeyPrompt","selectedOption","stream","iterable","lineWidth","chunk","strip","chunkLen","tasks","task","s","stripDestructiveANSI","input","taskLog","barSize","retainLog","isTTYFn","buffers","lastMessageWasRaw","clear","clearTitle","buffer","bufferHeight","count","printBuffer","messageSpacing","full","messages","renderBuffer","header","mopts","linesToRemove","removedLines","printBuffers","completeBuffer","TextPrompt"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js","../src/common.ts","../src/limit-options.ts","../src/autocomplete.ts","../src/box.ts","../src/confirm.ts","../src/date.ts","../src/group.ts","../src/group-multi-select.ts","../src/log.ts","../src/messages.ts","../src/multi-line.ts","../src/multi-select.ts","../src/note.ts","../src/password.ts","../src/path.ts","../src/spinner.ts","../src/progress-bar.ts","../src/select.ts","../src/select-key.ts","../src/stream.ts","../src/task.ts","../src/task-log.ts","../src/text.ts"],"sourcesContent":["import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import type { Readable, Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport type { State } from '@clack/core';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nexport const unicode = isUnicodeSupported();\nexport const isCI = (): boolean => process.env.CI === 'true';\nexport const isTTY = (output: Writable): boolean => {\n\treturn (output as Writable & { isTTY?: boolean }).isTTY === true;\n};\nexport const unicodeOr = (c: string, fallback: string) => (unicode ? c : fallback);\nexport const S_STEP_ACTIVE = unicodeOr('◆', '*');\nexport const S_STEP_CANCEL = unicodeOr('■', 'x');\nexport const S_STEP_ERROR = unicodeOr('▲', 'x');\nexport const S_STEP_SUBMIT = unicodeOr('◇', 'o');\n\nexport const S_BAR_START = unicodeOr('┌', 'T');\nexport const S_BAR = unicodeOr('│', '|');\nexport const S_BAR_END = unicodeOr('└', '—');\nexport const S_BAR_START_RIGHT = unicodeOr('┐', 'T');\nexport const S_BAR_END_RIGHT = unicodeOr('┘', '—');\n\nexport const S_RADIO_ACTIVE = unicodeOr('●', '>');\nexport const S_RADIO_INACTIVE = unicodeOr('○', ' ');\nexport const S_CHECKBOX_ACTIVE = unicodeOr('◻', '[•]');\nexport const S_CHECKBOX_SELECTED = unicodeOr('◼', '[+]');\nexport const S_CHECKBOX_INACTIVE = unicodeOr('◻', '[ ]');\nexport const S_PASSWORD_MASK = unicodeOr('▪', '•');\n\nexport const S_BAR_H = unicodeOr('─', '-');\nexport const S_CORNER_TOP_RIGHT = unicodeOr('╮', '+');\nexport const S_CONNECT_LEFT = unicodeOr('├', '+');\nexport const S_CORNER_BOTTOM_RIGHT = unicodeOr('╯', '+');\nexport const S_CORNER_BOTTOM_LEFT = unicodeOr('╰', '+');\nexport const S_CORNER_TOP_LEFT = unicodeOr('╭', '+');\n\nexport const S_INFO = unicodeOr('●', '•');\nexport const S_SUCCESS = unicodeOr('◆', '*');\nexport const S_WARN = unicodeOr('▲', '!');\nexport const S_ERROR = unicodeOr('■', 'x');\n\nexport const symbol = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn styleText('cyan', S_STEP_ACTIVE);\n\t\tcase 'cancel':\n\t\t\treturn styleText('red', S_STEP_CANCEL);\n\t\tcase 'error':\n\t\t\treturn styleText('yellow', S_STEP_ERROR);\n\t\tcase 'submit':\n\t\t\treturn styleText('green', S_STEP_SUBMIT);\n\t}\n};\n\nexport const symbolBar = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn styleText('cyan', S_BAR);\n\t\tcase 'cancel':\n\t\t\treturn styleText('red', S_BAR);\n\t\tcase 'error':\n\t\t\treturn styleText('yellow', S_BAR);\n\t\tcase 'submit':\n\t\t\treturn styleText('green', S_BAR);\n\t}\n};\n\nexport interface CommonOptions {\n\tinput?: Readable;\n\toutput?: Writable;\n\tsignal?: AbortSignal;\n\twithGuide?: boolean;\n}\n","import { styleText } from 'node:util';\nimport { getColumns, getRows } from '@clack/core';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport type { CommonOptions } from './common.js';\n\nexport interface LimitOptionsParams<TOption> extends CommonOptions {\n\toptions: TOption[];\n\tcursor: number;\n\tstyle: (option: TOption, active: boolean) => string;\n\tmaxItems?: number;\n\tcolumnPadding?: number;\n\trowPadding?: number;\n}\n\nconst trimLines = (\n\tgroups: Array<string[]>,\n\tinitialLineCount: number,\n\tstartIndex: number,\n\tendIndex: number,\n\tmaxLines: number\n) => {\n\tlet lineCount = initialLineCount;\n\tlet removals = 0;\n\tfor (let i = startIndex; i < endIndex; i++) {\n\t\tconst group = groups[i];\n\t\tlineCount = lineCount - group.length;\n\t\tremovals++;\n\t\tif (lineCount <= maxLines) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn { lineCount, removals };\n};\n\nexport const limitOptions = <TOption>({\n\tcursor,\n\toptions,\n\tstyle,\n\toutput = process.stdout,\n\tmaxItems = Number.POSITIVE_INFINITY,\n\tcolumnPadding = 0,\n\trowPadding = 4,\n}: LimitOptionsParams<TOption>): string[] => {\n\tconst columns = getColumns(output);\n\tconst maxWidth = columns - columnPadding;\n\tconst rows = getRows(output);\n\tconst overflowFormat = styleText('dim', '...');\n\n\tconst outputMaxItems = Math.max(rows - rowPadding, 0);\n\t// We clamp to minimum 5 because anything less doesn't make sense UX wise\n\tconst computedMaxItems = Math.max(Math.min(maxItems, outputMaxItems), 5);\n\tlet slidingWindowLocation = 0;\n\n\tif (cursor >= computedMaxItems - 3) {\n\t\tslidingWindowLocation = Math.max(\n\t\t\tMath.min(cursor - computedMaxItems + 3, options.length - computedMaxItems),\n\t\t\t0\n\t\t);\n\t}\n\n\tlet shouldRenderTopEllipsis = computedMaxItems < options.length && slidingWindowLocation > 0;\n\tlet shouldRenderBottomEllipsis =\n\t\tcomputedMaxItems < options.length && slidingWindowLocation + computedMaxItems < options.length;\n\n\tconst slidingWindowLocationEnd = Math.min(\n\t\tslidingWindowLocation + computedMaxItems,\n\t\toptions.length\n\t);\n\tconst lineGroups: Array<string[]> = [];\n\tlet lineCount = 0;\n\tif (shouldRenderTopEllipsis) {\n\t\tlineCount++;\n\t}\n\tif (shouldRenderBottomEllipsis) {\n\t\tlineCount++;\n\t}\n\n\tconst slidingWindowLocationWithEllipsis =\n\t\tslidingWindowLocation + (shouldRenderTopEllipsis ? 1 : 0);\n\tconst slidingWindowLocationEndWithEllipsis =\n\t\tslidingWindowLocationEnd - (shouldRenderBottomEllipsis ? 1 : 0);\n\n\tfor (let i = slidingWindowLocationWithEllipsis; i < slidingWindowLocationEndWithEllipsis; i++) {\n\t\tconst wrappedLines = wrapAnsi(style(options[i], i === cursor), maxWidth, {\n\t\t\thard: true,\n\t\t\ttrim: false,\n\t\t}).split('\\n');\n\t\tlineGroups.push(wrappedLines);\n\t\tlineCount += wrappedLines.length;\n\t}\n\n\tif (lineCount > outputMaxItems) {\n\t\tlet precedingRemovals = 0;\n\t\tlet followingRemovals = 0;\n\t\tlet newLineCount = lineCount;\n\t\tconst cursorGroupIndex = cursor - slidingWindowLocationWithEllipsis;\n\t\tconst trimLinesLocal = (startIndex: number, endIndex: number) =>\n\t\t\ttrimLines(lineGroups, newLineCount, startIndex, endIndex, outputMaxItems);\n\n\t\tif (shouldRenderTopEllipsis) {\n\t\t\t({ lineCount: newLineCount, removals: precedingRemovals } = trimLinesLocal(\n\t\t\t\t0,\n\t\t\t\tcursorGroupIndex\n\t\t\t));\n\t\t\tif (newLineCount > outputMaxItems) {\n\t\t\t\t({ lineCount: newLineCount, removals: followingRemovals } = trimLinesLocal(\n\t\t\t\t\tcursorGroupIndex + 1,\n\t\t\t\t\tlineGroups.length\n\t\t\t\t));\n\t\t\t}\n\t\t} else {\n\t\t\t({ lineCount: newLineCount, removals: followingRemovals } = trimLinesLocal(\n\t\t\t\tcursorGroupIndex + 1,\n\t\t\t\tlineGroups.length\n\t\t\t));\n\t\t\tif (newLineCount > outputMaxItems) {\n\t\t\t\t({ lineCount: newLineCount, removals: precedingRemovals } = trimLinesLocal(\n\t\t\t\t\t0,\n\t\t\t\t\tcursorGroupIndex\n\t\t\t\t));\n\t\t\t}\n\t\t}\n\n\t\tif (precedingRemovals > 0) {\n\t\t\tshouldRenderTopEllipsis = true;\n\t\t\tlineGroups.splice(0, precedingRemovals);\n\t\t}\n\t\tif (followingRemovals > 0) {\n\t\t\tshouldRenderBottomEllipsis = true;\n\t\t\tlineGroups.splice(lineGroups.length - followingRemovals, followingRemovals);\n\t\t}\n\t}\n\n\tconst result: string[] = [];\n\tif (shouldRenderTopEllipsis) {\n\t\tresult.push(overflowFormat);\n\t}\n\tfor (const lineGroup of lineGroups) {\n\t\tfor (const line of lineGroup) {\n\t\t\tresult.push(line);\n\t\t}\n\t}\n\tif (shouldRenderBottomEllipsis) {\n\t\tresult.push(overflowFormat);\n\t}\n\n\treturn result;\n};\n","import { styleText } from 'node:util';\nimport { AutocompletePrompt, settings } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_CHECKBOX_INACTIVE,\n\tS_CHECKBOX_SELECTED,\n\tS_RADIO_ACTIVE,\n\tS_RADIO_INACTIVE,\n\tsymbol,\n} from './common.js';\nimport { limitOptions } from './limit-options.js';\nimport type { Option } from './select.js';\n\nfunction getLabel<T>(option: Option<T>) {\n\treturn option.label ?? String(option.value ?? '');\n}\n\nfunction getFilteredOption<T>(searchText: string, option: Option<T>): boolean {\n\tif (!searchText) {\n\t\treturn true;\n\t}\n\tconst label = (option.label ?? String(option.value ?? '')).toLowerCase();\n\tconst hint = (option.hint ?? '').toLowerCase();\n\tconst value = String(option.value).toLowerCase();\n\tconst term = searchText.toLowerCase();\n\n\treturn label.includes(term) || hint.includes(term) || value.includes(term);\n}\n\nfunction getSelectedOptions<T>(values: T[], options: Option<T>[]): Option<T>[] {\n\tconst results: Option<T>[] = [];\n\n\tfor (const option of options) {\n\t\tif (values.includes(option.value)) {\n\t\t\tresults.push(option);\n\t\t}\n\t}\n\n\treturn results;\n}\n\ninterface AutocompleteSharedOptions<Value> extends CommonOptions {\n\t/**\n\t * The message to display to the user.\n\t */\n\tmessage: string;\n\t/**\n\t * Available options for the autocomplete prompt.\n\t */\n\toptions: Option<Value>[] | ((this: AutocompletePrompt<Option<Value>>) => Option<Value>[]);\n\t/**\n\t * Maximum number of items to display at once.\n\t */\n\tmaxItems?: number;\n\t/**\n\t * Placeholder text to display when no input is provided.\n\t */\n\tplaceholder?: string;\n\t/**\n\t * Validates the value\n\t */\n\tvalidate?: (value: Value | Value[] | undefined) => string | Error | undefined;\n\t/**\n\t * Custom filter function to match options against search input.\n\t * If not provided, a default filter that matches label, hint, and value is used.\n\t */\n\tfilter?: (search: string, option: Option<Value>) => boolean;\n}\n\nexport interface AutocompleteOptions<Value> extends AutocompleteSharedOptions<Value> {\n\t/**\n\t * The initial selected value.\n\t */\n\tinitialValue?: Value;\n\t/**\n\t * The initial user input\n\t */\n\tinitialUserInput?: string;\n}\n\nexport const autocomplete = <Value>(opts: AutocompleteOptions<Value>) => {\n\tconst prompt = new AutocompletePrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue ? [opts.initialValue] : undefined,\n\t\tinitialUserInput: opts.initialUserInput,\n\t\tplaceholder: opts.placeholder,\n\t\tfilter:\n\t\t\topts.filter ??\n\t\t\t((search: string, opt: Option<Value>) => {\n\t\t\t\treturn getFilteredOption(search, opt);\n\t\t\t}),\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tvalidate: opts.validate,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\t// Title and message display\n\t\t\tconst headings = hasGuide\n\t\t\t\t? [`${styleText('gray', S_BAR)}`, `${symbol(this.state)} ${opts.message}`]\n\t\t\t\t: [`${symbol(this.state)} ${opts.message}`];\n\t\t\tconst userInput = this.userInput;\n\t\t\tconst options = this.options;\n\t\t\tconst placeholder = opts.placeholder;\n\t\t\tconst showPlaceholder = userInput === '' && placeholder !== undefined;\n\t\t\tconst opt = (option: Option<Value>, state: 'inactive' | 'active' | 'disabled') => {\n\t\t\t\tconst label = getLabel(option);\n\t\t\t\tconst hint =\n\t\t\t\t\toption.hint && option.value === this.focusedValue\n\t\t\t\t\t\t? styleText('dim', ` (${option.hint})`)\n\t\t\t\t\t\t: '';\n\t\t\t\tswitch (state) {\n\t\t\t\t\tcase 'active':\n\t\t\t\t\t\treturn `${styleText('green', S_RADIO_ACTIVE)} ${label}${hint}`;\n\t\t\t\t\tcase 'inactive':\n\t\t\t\t\t\treturn `${styleText('dim', S_RADIO_INACTIVE)} ${styleText('dim', label)}`;\n\t\t\t\t\tcase 'disabled':\n\t\t\t\t\t\treturn `${styleText('gray', S_RADIO_INACTIVE)} ${styleText(['strikethrough', 'gray'], label)}`;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Handle different states\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\t// Show selected value\n\t\t\t\t\tconst selected = getSelectedOptions(this.selectedValues, options);\n\t\t\t\t\tconst label =\n\t\t\t\t\t\tselected.length > 0 ? ` ${styleText('dim', selected.map(getLabel).join(', '))}` : '';\n\t\t\t\t\tconst submitPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${headings.join('\\n')}\\n${submitPrefix}${label}`;\n\t\t\t\t}\n\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst userInputText = userInput\n\t\t\t\t\t\t? ` ${styleText(['strikethrough', 'dim'], userInput)}`\n\t\t\t\t\t\t: '';\n\t\t\t\t\tconst cancelPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${headings.join('\\n')}\\n${cancelPrefix}${userInputText}`;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconst barStyle = this.state === 'error' ? 'yellow' : 'cyan';\n\t\t\t\t\tconst guidePrefix = hasGuide ? `${styleText(barStyle, S_BAR)} ` : '';\n\t\t\t\t\tconst guidePrefixEnd = hasGuide ? styleText(barStyle, S_BAR_END) : '';\n\t\t\t\t\t// Display cursor position - show plain text in navigation mode\n\t\t\t\t\tlet searchText = '';\n\t\t\t\t\tif (this.isNavigating || showPlaceholder) {\n\t\t\t\t\t\tconst searchTextValue = showPlaceholder ? placeholder : userInput;\n\t\t\t\t\t\tsearchText = searchTextValue !== '' ? ` ${styleText('dim', searchTextValue)}` : '';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsearchText = ` ${this.userInputWithCursor}`;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Show match count if filtered\n\t\t\t\t\tconst matches =\n\t\t\t\t\t\tthis.filteredOptions.length !== options.length\n\t\t\t\t\t\t\t? styleText(\n\t\t\t\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t\t\t\t` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: '';\n\n\t\t\t\t\t// No matches message\n\t\t\t\t\tconst noResults =\n\t\t\t\t\t\tthis.filteredOptions.length === 0 && userInput\n\t\t\t\t\t\t\t? [`${guidePrefix}${styleText('yellow', 'No matches found')}`]\n\t\t\t\t\t\t\t: [];\n\n\t\t\t\t\tconst validationError =\n\t\t\t\t\t\tthis.state === 'error' ? [`${guidePrefix}${styleText('yellow', this.error)}`] : [];\n\n\t\t\t\t\tif (hasGuide) {\n\t\t\t\t\t\theadings.push(`${guidePrefix.trimEnd()}`);\n\t\t\t\t\t}\n\t\t\t\t\theadings.push(\n\t\t\t\t\t\t`${guidePrefix}${styleText('dim', 'Search:')}${searchText}${matches}`,\n\t\t\t\t\t\t...noResults,\n\t\t\t\t\t\t...validationError\n\t\t\t\t\t);\n\n\t\t\t\t\t// Show instructions\n\t\t\t\t\tconst instructions = [\n\t\t\t\t\t\t`${styleText('dim', '↑/↓')} to select`,\n\t\t\t\t\t\t`${styleText('dim', 'Enter:')} confirm`,\n\t\t\t\t\t\t`${styleText('dim', 'Type:')} to search`,\n\t\t\t\t\t];\n\n\t\t\t\t\tconst footers = [`${guidePrefix}${instructions.join(' • ')}`, guidePrefixEnd];\n\n\t\t\t\t\t// Render options with selection\n\t\t\t\t\tconst displayOptions =\n\t\t\t\t\t\tthis.filteredOptions.length === 0\n\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t: limitOptions({\n\t\t\t\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\t\t\t\toptions: this.filteredOptions,\n\t\t\t\t\t\t\t\t\tcolumnPadding: hasGuide ? 3 : 0, // for `| ` when guide is shown\n\t\t\t\t\t\t\t\t\trowPadding: headings.length + footers.length,\n\t\t\t\t\t\t\t\t\tstyle: (option, active) => {\n\t\t\t\t\t\t\t\t\t\treturn opt(\n\t\t\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\t\t\toption.disabled ? 'disabled' : active ? 'active' : 'inactive'\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t// Return the formatted prompt\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...headings,\n\t\t\t\t\t\t...displayOptions.map((option) => `${guidePrefix}${option}`),\n\t\t\t\t\t\t...footers,\n\t\t\t\t\t].join('\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n\n\t// Return the result or cancel symbol\n\treturn prompt.prompt() as Promise<Value | symbol>;\n};\n\n// Type definition for the autocompleteMultiselect component\nexport interface AutocompleteMultiSelectOptions<Value> extends AutocompleteSharedOptions<Value> {\n\t/**\n\t * The initial selected values\n\t */\n\tinitialValues?: Value[];\n\t/**\n\t * If true, at least one option must be selected\n\t */\n\trequired?: boolean;\n}\n\n/**\n * Integrated autocomplete multiselect - combines type-ahead filtering with multiselect in one UI\n */\nexport const autocompleteMultiselect = <Value>(opts: AutocompleteMultiSelectOptions<Value>) => {\n\tconst formatOption = (\n\t\toption: Option<Value>,\n\t\tactive: boolean,\n\t\tselectedValues: Value[],\n\t\tfocusedValue: Value | undefined\n\t) => {\n\t\tconst isSelected = selectedValues.includes(option.value);\n\t\tconst label = option.label ?? String(option.value ?? '');\n\t\tconst hint =\n\t\t\toption.hint && focusedValue !== undefined && option.value === focusedValue\n\t\t\t\t? styleText('dim', ` (${option.hint})`)\n\t\t\t\t: '';\n\t\tconst checkbox = isSelected\n\t\t\t? styleText('green', S_CHECKBOX_SELECTED)\n\t\t\t: styleText('dim', S_CHECKBOX_INACTIVE);\n\n\t\tif (option.disabled) {\n\t\t\treturn `${styleText('gray', S_CHECKBOX_INACTIVE)} ${styleText(['strikethrough', 'gray'], label)}`;\n\t\t}\n\t\tif (active) {\n\t\t\treturn `${checkbox} ${label}${hint}`;\n\t\t}\n\t\treturn `${checkbox} ${styleText('dim', label)}`;\n\t};\n\n\t// Create text prompt which we'll use as foundation\n\tconst prompt = new AutocompletePrompt<Option<Value>>({\n\t\toptions: opts.options,\n\t\tmultiple: true,\n\t\tplaceholder: opts.placeholder,\n\t\tfilter:\n\t\t\topts.filter ??\n\t\t\t((search, opt) => {\n\t\t\t\treturn getFilteredOption(search, opt);\n\t\t\t}),\n\t\tvalidate: () => {\n\t\t\tif (opts.required && prompt.selectedValues.length === 0) {\n\t\t\t\treturn 'Please select at least one item';\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tinitialValue: opts.initialValues,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\t// Title and symbol\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${\n\t\t\t\topts.message\n\t\t\t}\\n`;\n\n\t\t\t// Selection counter\n\t\t\tconst userInput = this.userInput;\n\t\t\tconst placeholder = opts.placeholder;\n\t\t\tconst showPlaceholder = userInput === '' && placeholder !== undefined;\n\n\t\t\t// Search input display\n\t\t\tconst searchText =\n\t\t\t\tthis.isNavigating || showPlaceholder\n\t\t\t\t\t? styleText('dim', showPlaceholder ? placeholder : userInput) // Just show plain text when in navigation mode\n\t\t\t\t\t: this.userInputWithCursor;\n\n\t\t\tconst options = this.options;\n\n\t\t\tconst matches =\n\t\t\t\tthis.filteredOptions.length !== options.length\n\t\t\t\t\t? styleText(\n\t\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t\t` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? '' : 'es'})`\n\t\t\t\t\t\t)\n\t\t\t\t\t: '';\n\n\t\t\t// Render prompt state\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${styleText(\n\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t`${this.selectedValues.length} items selected`\n\t\t\t\t\t)}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${styleText(\n\t\t\t\t\t\t['strikethrough', 'dim'],\n\t\t\t\t\t\tuserInput\n\t\t\t\t\t)}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst barStyle = this.state === 'error' ? 'yellow' : 'cyan';\n\t\t\t\t\tconst guidePrefix = hasGuide ? `${styleText(barStyle, S_BAR)} ` : '';\n\t\t\t\t\tconst guidePrefixEnd = hasGuide ? styleText(barStyle, S_BAR_END) : '';\n\t\t\t\t\t// Instructions\n\t\t\t\t\tconst instructions = [\n\t\t\t\t\t\t`${styleText('dim', '↑/↓')} to navigate`,\n\t\t\t\t\t\t`${styleText('dim', this.isNavigating ? 'Space/Tab:' : 'Tab:')} select`,\n\t\t\t\t\t\t`${styleText('dim', 'Enter:')} confirm`,\n\t\t\t\t\t\t`${styleText('dim', 'Type:')} to search`,\n\t\t\t\t\t];\n\n\t\t\t\t\t// No results message\n\t\t\t\t\tconst noResults =\n\t\t\t\t\t\tthis.filteredOptions.length === 0 && userInput\n\t\t\t\t\t\t\t? [`${guidePrefix}${styleText('yellow', 'No matches found')}`]\n\t\t\t\t\t\t\t: [];\n\n\t\t\t\t\tconst errorMessage =\n\t\t\t\t\t\tthis.state === 'error' ? [`${guidePrefix}${styleText('yellow', this.error)}`] : [];\n\n\t\t\t\t\t// Calculate header and footer line counts for rowPadding\n\t\t\t\t\tconst headerLines = [\n\t\t\t\t\t\t...`${title}${hasGuide ? styleText(barStyle, S_BAR) : ''}`.split('\\n'),\n\t\t\t\t\t\t`${guidePrefix}${styleText('dim', 'Search:')} ${searchText}${matches}`,\n\t\t\t\t\t\t...noResults,\n\t\t\t\t\t\t...errorMessage,\n\t\t\t\t\t];\n\t\t\t\t\tconst footerLines = [`${guidePrefix}${instructions.join(' • ')}`, guidePrefixEnd];\n\n\t\t\t\t\t// Get limited options for display\n\t\t\t\t\tconst displayOptions = limitOptions({\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.filteredOptions,\n\t\t\t\t\t\tstyle: (option, active) =>\n\t\t\t\t\t\t\tformatOption(option, active, this.selectedValues, this.focusedValue),\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\trowPadding: headerLines.length + footerLines.length,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Build the prompt display\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...headerLines,\n\t\t\t\t\t\t...displayOptions.map((option) => `${guidePrefix}${option}`),\n\t\t\t\t\t\t...footerLines,\n\t\t\t\t\t].join('\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n\n\t// Return the result or cancel symbol\n\treturn prompt.prompt() as Promise<Value[] | symbol>;\n};\n","import type { Writable } from 'node:stream';\nimport { getColumns, settings } from '@clack/core';\nimport stringWidth from 'fast-string-width';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_BAR_END_RIGHT,\n\tS_BAR_H,\n\tS_BAR_START,\n\tS_BAR_START_RIGHT,\n\tS_CORNER_BOTTOM_LEFT,\n\tS_CORNER_BOTTOM_RIGHT,\n\tS_CORNER_TOP_LEFT,\n\tS_CORNER_TOP_RIGHT,\n} from './common.js';\n\nexport type BoxAlignment = 'left' | 'center' | 'right';\n\ntype BoxSymbols = [topLeft: string, topRight: string, bottomLeft: string, bottomRight: string];\n\nconst roundedSymbols: BoxSymbols = [\n\tS_CORNER_TOP_LEFT,\n\tS_CORNER_TOP_RIGHT,\n\tS_CORNER_BOTTOM_LEFT,\n\tS_CORNER_BOTTOM_RIGHT,\n];\nconst squareSymbols: BoxSymbols = [S_BAR_START, S_BAR_START_RIGHT, S_BAR_END, S_BAR_END_RIGHT];\n\nexport interface BoxOptions extends CommonOptions {\n\tcontentAlign?: BoxAlignment;\n\ttitleAlign?: BoxAlignment;\n\twidth?: number | 'auto';\n\ttitlePadding?: number;\n\tcontentPadding?: number;\n\trounded?: boolean;\n\tformatBorder?: (text: string) => string;\n}\n\nfunction getPaddingForLine(\n\tlineLength: number,\n\tinnerWidth: number,\n\tpadding: number,\n\tcontentAlign: BoxAlignment | undefined\n): [number, number] {\n\tlet leftPadding = padding;\n\tlet rightPadding = padding;\n\tif (contentAlign === 'center') {\n\t\tleftPadding = Math.floor((innerWidth - lineLength) / 2);\n\t} else if (contentAlign === 'right') {\n\t\tleftPadding = innerWidth - lineLength - padding;\n\t}\n\n\trightPadding = innerWidth - leftPadding - lineLength;\n\n\treturn [leftPadding, rightPadding];\n}\n\nconst defaultFormatBorder = (text: string) => text;\n\nexport const box = (message = '', title = '', opts?: BoxOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst columns = getColumns(output);\n\tconst borderWidth = 1;\n\tconst borderTotalWidth = borderWidth * 2;\n\tconst titlePadding = opts?.titlePadding ?? 1;\n\tconst contentPadding = opts?.contentPadding ?? 2;\n\tconst width = opts?.width === undefined || opts.width === 'auto' ? 1 : Math.min(1, opts.width);\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst linePrefix = !hasGuide ? '' : `${S_BAR} `;\n\tconst formatBorder = opts?.formatBorder ?? defaultFormatBorder;\n\tconst symbols = (opts?.rounded ? roundedSymbols : squareSymbols).map(formatBorder);\n\tconst hSymbol = formatBorder(S_BAR_H);\n\tconst vSymbol = formatBorder(S_BAR);\n\tconst linePrefixWidth = stringWidth(linePrefix);\n\tconst titleWidth = stringWidth(title);\n\tconst maxBoxWidth = columns - linePrefixWidth;\n\tlet boxWidth = Math.floor(columns * width) - linePrefixWidth;\n\tif (opts?.width === 'auto') {\n\t\tconst lines = message.split('\\n');\n\t\tlet longestLine = titleWidth + titlePadding * 2;\n\t\tfor (const line of lines) {\n\t\t\tconst lineWithPadding = stringWidth(line) + contentPadding * 2;\n\t\t\tif (lineWithPadding > longestLine) {\n\t\t\t\tlongestLine = lineWithPadding;\n\t\t\t}\n\t\t}\n\t\tconst longestLineWidth = longestLine + borderTotalWidth;\n\t\tif (longestLineWidth < boxWidth) {\n\t\t\tboxWidth = longestLineWidth;\n\t\t}\n\t}\n\tif (boxWidth % 2 !== 0) {\n\t\tif (boxWidth < maxBoxWidth) {\n\t\t\tboxWidth++;\n\t\t} else {\n\t\t\tboxWidth--;\n\t\t}\n\t}\n\tconst innerWidth = boxWidth - borderTotalWidth;\n\tconst maxTitleLength = innerWidth - titlePadding * 2;\n\tconst truncatedTitle =\n\t\ttitleWidth > maxTitleLength ? `${title.slice(0, maxTitleLength - 3)}...` : title;\n\tconst [titlePaddingLeft, titlePaddingRight] = getPaddingForLine(\n\t\tstringWidth(truncatedTitle),\n\t\tinnerWidth,\n\t\ttitlePadding,\n\t\topts?.titleAlign\n\t);\n\tconst wrappedMessage = wrapAnsi(message, innerWidth - contentPadding * 2, {\n\t\thard: true,\n\t\ttrim: false,\n\t});\n\toutput.write(\n\t\t`${linePrefix}${symbols[0]}${hSymbol.repeat(titlePaddingLeft)}${truncatedTitle}${hSymbol.repeat(titlePaddingRight)}${symbols[1]}\\n`\n\t);\n\tconst wrappedLines = wrappedMessage.split('\\n');\n\tfor (const line of wrappedLines) {\n\t\tconst [leftLinePadding, rightLinePadding] = getPaddingForLine(\n\t\t\tstringWidth(line),\n\t\t\tinnerWidth,\n\t\t\tcontentPadding,\n\t\t\topts?.contentAlign\n\t\t);\n\t\toutput.write(\n\t\t\t`${linePrefix}${vSymbol}${' '.repeat(leftLinePadding)}${line}${' '.repeat(rightLinePadding)}${vSymbol}\\n`\n\t\t);\n\t}\n\toutput.write(`${linePrefix}${symbols[2]}${hSymbol.repeat(innerWidth)}${symbols[3]}\\n`);\n};\n","import { styleText } from 'node:util';\nimport { ConfirmPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_RADIO_ACTIVE,\n\tS_RADIO_INACTIVE,\n\tsymbol,\n} from './common.js';\n\nexport interface ConfirmOptions extends CommonOptions {\n\tmessage: string;\n\tactive?: string;\n\tinactive?: string;\n\tinitialValue?: boolean;\n\tvertical?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n\tconst active = opts.active ?? 'Yes';\n\tconst inactive = opts.inactive ?? 'No';\n\treturn new ConfirmPrompt({\n\t\tactive,\n\t\tinactive,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValue: opts.initialValue ?? true,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${symbol(this.state)} `;\n\t\t\tconst titlePrefixBar = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\tconst messageLines = wrapTextWithPrefix(\n\t\t\t\topts.output,\n\t\t\t\topts.message,\n\t\t\t\ttitlePrefixBar,\n\t\t\t\ttitlePrefix\n\t\t\t);\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${messageLines}\\n`;\n\t\t\tconst value = this.value ? active : inactive;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\treturn `${title}${submitPrefix}${styleText('dim', value)}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\treturn `${title}${cancelPrefix}${styleText(['strikethrough', 'dim'], value)}${\n\t\t\t\t\t\thasGuide ? `\\n${styleText('gray', S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\treturn `${title}${defaultPrefix}${\n\t\t\t\t\t\tthis.value\n\t\t\t\t\t\t\t? `${styleText('green', S_RADIO_ACTIVE)} ${active}`\n\t\t\t\t\t\t\t: `${styleText('dim', S_RADIO_INACTIVE)} ${styleText('dim', active)}`\n\t\t\t\t\t}${opts.vertical ? (hasGuide ? `\\n${styleText('cyan', S_BAR)} ` : '\\n') : ` ${styleText('dim', '/')} `}${\n\t\t\t\t\t\t!this.value\n\t\t\t\t\t\t\t? `${styleText('green', S_RADIO_ACTIVE)} ${inactive}`\n\t\t\t\t\t\t\t: `${styleText('dim', S_RADIO_INACTIVE)} ${styleText('dim', inactive)}`\n\t\t\t\t\t}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<boolean | symbol>;\n};\n","import { styleText } from 'node:util';\nimport type { DateFormat, State } from '@clack/core';\nimport { DatePrompt, settings } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, symbol } from './common.js';\n\nexport type { DateFormat };\n\nexport interface DateOptions extends CommonOptions {\n\tmessage: string;\n\tformat?: DateFormat;\n\tlocale?: string;\n\tdefaultValue?: Date;\n\tinitialValue?: Date;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tvalidate?: (value: Date | undefined) => string | Error | undefined;\n}\n\nexport const date = (opts: DateOptions) => {\n\tconst validate = opts.validate;\n\treturn new DatePrompt({\n\t\t...opts,\n\t\tvalidate(value: Date | undefined) {\n\t\t\tif (value === undefined) {\n\t\t\t\tif (opts.defaultValue !== undefined) return undefined;\n\t\t\t\tif (validate) return validate(value);\n\t\t\t\treturn settings.date.messages.required;\n\t\t\t}\n\t\t\tconst iso = (d: Date) => d.toISOString().slice(0, 10);\n\t\t\tif (opts.minDate && iso(value) < iso(opts.minDate)) {\n\t\t\t\treturn settings.date.messages.afterMin(opts.minDate);\n\t\t\t}\n\t\t\tif (opts.maxDate && iso(value) > iso(opts.maxDate)) {\n\t\t\t\treturn settings.date.messages.beforeMax(opts.maxDate);\n\t\t\t}\n\t\t\tif (validate) return validate(value);\n\t\t\treturn undefined;\n\t\t},\n\t\trender() {\n\t\t\tconst hasGuide = (opts?.withGuide ?? settings.withGuide) !== false;\n\t\t\tconst titlePrefix = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} `;\n\t\t\tconst title = `${titlePrefix}${opts.message}\\n`;\n\n\t\t\tconst state = this.state !== 'initial' ? this.state : 'active';\n\n\t\t\tconst userInput = renderDate(this, state);\n\t\t\tconst value = this.value instanceof Date ? this.formattedValue : '';\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorText = this.error ? ` ${styleText('yellow', this.error)}` : '';\n\t\t\t\t\tconst bar = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst barEnd = hasGuide ? styleText('yellow', S_BAR_END) : '';\n\t\t\t\t\treturn `${title.trim()}\\n${bar}${userInput}\\n${barEnd}${errorText}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText('dim', value)}` : '';\n\t\t\t\t\tconst bar = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${bar}${valueText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText(['strikethrough', 'dim'], value)}` : '';\n\t\t\t\t\tconst bar = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${bar}${valueText}${value.trim() ? `\\n${bar}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst bar = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst barEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\tconst inlineBar = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst inlineError = this.inlineError\n\t\t\t\t\t\t? `\\n${inlineBar}${styleText('yellow', this.inlineError)}`\n\t\t\t\t\t\t: '';\n\t\t\t\t\treturn `${title}${bar}${userInput}${inlineError}\\n${barEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Date | symbol>;\n};\n\nfunction renderDate(prompt: Omit<InstanceType<typeof DatePrompt>, 'prompt'>, state: State): string {\n\tconst parts = prompt.segmentValues;\n\tconst cursor = prompt.segmentCursor;\n\n\tif (state === 'submit' || state === 'cancel') {\n\t\treturn prompt.formattedValue;\n\t}\n\n\tconst sep = styleText('gray', prompt.separator);\n\treturn prompt.segments\n\t\t.map((seg, i) => {\n\t\t\tconst isActive = i === cursor.segmentIndex && !['submit', 'cancel'].includes(state);\n\t\t\tconst label = DEFAULT_LABELS[seg.type];\n\t\t\treturn renderSegment(parts[seg.type], { isActive, label });\n\t\t})\n\t\t.join(sep);\n}\n\ninterface SegmentOptions {\n\tisActive: boolean;\n\tlabel: string;\n}\nfunction renderSegment(value: string, opts: SegmentOptions): string {\n\tconst isBlank = !value || value.replace(/_/g, '') === '';\n\tif (opts.isActive) return styleText('inverse', isBlank ? opts.label : value.replace(/_/g, ' '));\n\tif (isBlank) return styleText('dim', opts.label);\n\treturn value.replace(/_/g, styleText('dim', ' '));\n}\n\nconst DEFAULT_LABELS: Record<'year' | 'month' | 'day', string> = {\n\tyear: 'yyyy',\n\tmonth: 'mm',\n\tday: 'dd',\n};\n","import { isCancel } from '@clack/core';\n\ntype Prettify<T> = {\n\t[P in keyof T]: T[P];\n} & {};\n\nexport type PromptGroupAwaitedReturn<T> = {\n\t[P in keyof T]: Exclude<Awaited<T[P]>, symbol>;\n};\n\nexport interface PromptGroupOptions<T> {\n\t/**\n\t * Control how the group can be canceled\n\t * if one of the prompts is canceled.\n\t */\n\tonCancel?: (opts: { results: Prettify<Partial<PromptGroupAwaitedReturn<T>>> }) => void;\n}\n\nexport type PromptGroup<T> = {\n\t[P in keyof T]: (opts: {\n\t\tresults: Prettify<Partial<PromptGroupAwaitedReturn<Omit<T, P>>>>;\n\t}) => undefined | Promise<T[P] | undefined>;\n};\n\n/**\n * Define a group of prompts to be displayed\n * and return a results of objects within the group\n */\nexport const group = async <T>(\n\tprompts: PromptGroup<T>,\n\topts?: PromptGroupOptions<T>\n): Promise<Prettify<PromptGroupAwaitedReturn<T>>> => {\n\tconst results = {} as any;\n\tconst promptNames = Object.keys(prompts);\n\n\tfor (const name of promptNames) {\n\t\tconst prompt = prompts[name as keyof T];\n\t\tconst result = await prompt({ results })?.catch((e) => {\n\t\t\tthrow e;\n\t\t});\n\n\t\t// Pass the results to the onCancel function\n\t\t// so the user can decide what to do with the results\n\t\t// TODO: Switch to callback within core to avoid isCancel Fn\n\t\tif (typeof opts?.onCancel === 'function' && isCancel(result)) {\n\t\t\tresults[name] = 'canceled';\n\t\t\topts.onCancel({ results });\n\t\t\tcontinue;\n\t\t}\n\n\t\tresults[name] = result;\n\t}\n\n\treturn results;\n};\n","import { styleText } from 'node:util';\nimport { GroupMultiSelectPrompt, settings } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_CHECKBOX_ACTIVE,\n\tS_CHECKBOX_INACTIVE,\n\tS_CHECKBOX_SELECTED,\n\tsymbol,\n} from './common.js';\nimport type { Option } from './select.js';\n\nexport interface GroupMultiSelectOptions<Value> extends CommonOptions {\n\tmessage: string;\n\toptions: Record<string, Option<Value>[]>;\n\tinitialValues?: Value[];\n\trequired?: boolean;\n\tcursorAt?: Value;\n\tselectableGroups?: boolean;\n\tgroupSpacing?: number;\n}\nexport const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) => {\n\tconst { selectableGroups = true, groupSpacing = 0 } = opts;\n\tconst opt = (\n\t\toption: Option<Value> & { group: string | boolean },\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'group-active'\n\t\t\t| 'group-active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled',\n\t\toptions: (Option<Value> & { group: string | boolean })[] = []\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tconst isItem = typeof option.group === 'string';\n\t\tconst next = isItem && (options[options.indexOf(option) + 1] ?? { group: true });\n\t\tconst isLast = isItem && next && next.group === true;\n\t\tconst prefix = isItem ? (selectableGroups ? `${isLast ? S_BAR_END : S_BAR} ` : ' ') : '';\n\t\tlet spacingPrefix = '';\n\t\tif (groupSpacing > 0 && !isItem) {\n\t\t\tconst spacingPrefixText = `\\n${styleText('cyan', S_BAR)}`;\n\t\t\tspacingPrefix = `${spacingPrefixText.repeat(groupSpacing - 1)}${spacingPrefixText} `;\n\t\t}\n\n\t\tif (state === 'active') {\n\t\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${styleText('cyan', S_CHECKBOX_ACTIVE)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'group-active') {\n\t\t\treturn `${spacingPrefix}${prefix}${styleText('cyan', S_CHECKBOX_ACTIVE)} ${styleText('dim', label)}`;\n\t\t}\n\t\tif (state === 'group-active-selected') {\n\t\t\treturn `${spacingPrefix}${prefix}${styleText('green', S_CHECKBOX_SELECTED)} ${styleText('dim', label)}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\tconst selectedCheckbox =\n\t\t\t\tisItem || selectableGroups ? styleText('green', S_CHECKBOX_SELECTED) : '';\n\t\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${selectedCheckbox} ${styleText('dim', label)}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${styleText(['strikethrough', 'dim'], label)}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${styleText('green', S_CHECKBOX_SELECTED)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${styleText('dim', label)}`;\n\t\t}\n\t\tconst unselectedCheckbox =\n\t\t\tisItem || selectableGroups ? styleText('dim', S_CHECKBOX_INACTIVE) : '';\n\t\treturn `${spacingPrefix}${styleText('dim', prefix)}${unselectedCheckbox} ${styleText('dim', label)}`;\n\t};\n\tconst required = opts.required ?? true;\n\n\treturn new GroupMultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValues: opts.initialValues,\n\t\trequired,\n\t\tcursorAt: opts.cursorAt,\n\t\tselectableGroups,\n\t\tvalidate(selected: Value[] | undefined) {\n\t\t\tif (required && (selected === undefined || selected.length === 0))\n\t\t\t\treturn `Please select at least one option.\\n${styleText(\n\t\t\t\t\t'reset',\n\t\t\t\t\tstyleText(\n\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t`Press ${styleText(['gray', 'bgWhite', 'inverse'], ' space ')} to select, ${styleText(\n\t\t\t\t\t\t\t'gray',\n\t\t\t\t\t\t\tstyleText(['bgWhite', 'inverse'], ' enter ')\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.value ?? [];\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst selectedOptions = this.options\n\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t.map((option) => opt(option, 'submitted'));\n\t\t\t\t\tconst optionsText =\n\t\t\t\t\t\tselectedOptions.length === 0 ? '' : ` ${selectedOptions.join(styleText('dim', ', '))}`;\n\t\t\t\t\treturn `${title}${hasGuide ? styleText('gray', S_BAR) : ''}${optionsText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(styleText('dim', ', '));\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('gray', S_BAR)} ` : ''}${\n\t\t\t\t\t\tlabel.trim() ? `${label}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0\n\t\t\t\t\t\t\t\t? `${hasGuide ? `${styleText('yellow', S_BAR_END)} ` : ''}${styleText('yellow', ln)}`\n\t\t\t\t\t\t\t\t: ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${hasGuide ? `${styleText('yellow', S_BAR)} ` : ''}${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tvalue.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${hasGuide ? `${styleText('yellow', S_BAR)} ` : ''}`)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst optionsText = this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tvalue.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tlet optionText = '';\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\toptionText = opt(\n\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\tselected ? 'group-active-selected' : 'group-active',\n\t\t\t\t\t\t\t\t\toptions\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else if (active && selected) {\n\t\t\t\t\t\t\t\toptionText = opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t} else if (selected) {\n\t\t\t\t\t\t\t\toptionText = opt(option, 'selected', options);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\toptionText = opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst prefix = i !== 0 && !optionText.startsWith('\\n') ? ' ' : '';\n\t\t\t\t\t\t\treturn `${prefix}${optionText}`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${hasGuide ? styleText('cyan', S_BAR) : ''}`);\n\t\t\t\t\tconst optionsPrefix = optionsText.startsWith('\\n') ? '' : ' ';\n\t\t\t\t\treturn `${title}${hasGuide ? styleText('cyan', S_BAR) : ''}${optionsPrefix}${optionsText}\\n${\n\t\t\t\t\t\thasGuide ? styleText('cyan', S_BAR_END) : ''\n\t\t\t\t\t}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n","import { styleText } from 'node:util';\nimport { settings } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_ERROR,\n\tS_INFO,\n\tS_STEP_SUBMIT,\n\tS_SUCCESS,\n\tS_WARN,\n} from './common.js';\n\nexport interface LogMessageOptions extends CommonOptions {\n\tsymbol?: string;\n\tspacing?: number;\n\tsecondarySymbol?: string;\n}\n\nexport const log = {\n\tmessage: (\n\t\tmessage: string | string[] = [],\n\t\t{\n\t\t\tsymbol = styleText('gray', S_BAR),\n\t\t\tsecondarySymbol = styleText('gray', S_BAR),\n\t\t\toutput = process.stdout,\n\t\t\tspacing = 1,\n\t\t\twithGuide,\n\t\t}: LogMessageOptions = {}\n\t) => {\n\t\tconst parts: string[] = [];\n\t\tconst hasGuide = withGuide ?? settings.withGuide;\n\t\tconst spacingString = !hasGuide ? '' : secondarySymbol;\n\t\tconst prefix = !hasGuide ? '' : `${symbol} `;\n\t\tconst secondaryPrefix = !hasGuide ? '' : `${secondarySymbol} `;\n\n\t\tfor (let i = 0; i < spacing; i++) {\n\t\t\tparts.push(spacingString);\n\t\t}\n\n\t\tconst messageParts = Array.isArray(message) ? message : message.split('\\n');\n\t\tif (messageParts.length > 0) {\n\t\t\tconst [firstLine, ...lines] = messageParts;\n\t\t\tif (firstLine.length > 0) {\n\t\t\t\tparts.push(`${prefix}${firstLine}`);\n\t\t\t} else {\n\t\t\t\tparts.push(hasGuide ? symbol : '');\n\t\t\t}\n\t\t\tfor (const ln of lines) {\n\t\t\t\tif (ln.length > 0) {\n\t\t\t\t\tparts.push(`${secondaryPrefix}${ln}`);\n\t\t\t\t} else {\n\t\t\t\t\tparts.push(hasGuide ? secondarySymbol : '');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\toutput.write(`${parts.join('\\n')}\\n`);\n\t},\n\tinfo: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('blue', S_INFO) });\n\t},\n\tsuccess: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('green', S_SUCCESS) });\n\t},\n\tstep: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('green', S_STEP_SUBMIT) });\n\t},\n\twarn: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('yellow', S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.warn(message, opts);\n\t},\n\terror: (message: string, opts?: LogMessageOptions) => {\n\t\tlog.message(message, { ...opts, symbol: styleText('red', S_ERROR) });\n\t},\n};\n","import type { Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport { settings } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, S_BAR_START } from './common.js';\n\nexport const cancel = (message = '', opts?: CommonOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst prefix = hasGuide ? `${styleText('gray', S_BAR_END)} ` : '';\n\toutput.write(`${prefix}${styleText('red', message)}\\n\\n`);\n};\n\nexport const intro = (title = '', opts?: CommonOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst prefix = hasGuide ? `${styleText('gray', S_BAR_START)} ` : '';\n\toutput.write(`${prefix}${title}\\n`);\n};\n\nexport const outro = (message = '', opts?: CommonOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst prefix = hasGuide ? `${styleText('gray', S_BAR)}\\n${styleText('gray', S_BAR_END)} ` : '';\n\toutput.write(`${prefix}${message}\\n\\n`);\n};\n","import { styleText } from 'node:util';\nimport { MultiLinePrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport { S_BAR, S_BAR_END, symbol } from './common.js';\nimport type { TextOptions } from './text.js';\n\nexport interface MultiLineOptions extends TextOptions {\n\tshowSubmit?: boolean;\n}\n\nexport const multiline = (opts: MultiLineOptions) => {\n\treturn new MultiLinePrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\tshowSubmit: opts.showSubmit,\n\t\toutput: opts.output,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\trender() {\n\t\t\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} `;\n\t\t\tconst title = `${titlePrefix}${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? styleText('inverse', opts.placeholder[0]) + styleText('dim', opts.placeholder.slice(1))\n\t\t\t\t: styleText(['inverse', 'hidden'], '_');\n\t\t\tconst userInput = !this.userInput ? placeholder : this.userInputWithCursor;\n\t\t\tconst value = this.value ?? '';\n\t\t\tconst submitButton = opts.showSubmit\n\t\t\t\t? `\\n ${styleText(this.focused === 'submit' ? 'cyan' : 'dim', '[ submit ]')}`\n\t\t\t\t: '';\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorPrefix = `${styleText('yellow', S_BAR)} `;\n\t\t\t\t\tconst lines = hasGuide\n\t\t\t\t\t\t? wrapTextWithPrefix(opts.output, userInput, errorPrefix, undefined)\n\t\t\t\t\t\t: userInput;\n\t\t\t\t\tconst errorPrefixEnd = styleText('yellow', S_BAR_END);\n\t\t\t\t\treturn `${title}${lines}\\n${errorPrefixEnd} ${styleText('yellow', this.error)}${submitButton}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = `${styleText('gray', S_BAR)} `;\n\t\t\t\t\tconst lines = hasGuide\n\t\t\t\t\t\t? wrapTextWithPrefix(opts.output, value, submitPrefix, undefined, (str) =>\n\t\t\t\t\t\t\t\tstyleText('dim', str)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: value\n\t\t\t\t\t\t\t? styleText('dim', value)\n\t\t\t\t\t\t\t: '';\n\t\t\t\t\treturn `${title}${lines}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = `${styleText('gray', S_BAR)} `;\n\t\t\t\t\tconst lines = hasGuide\n\t\t\t\t\t\t? wrapTextWithPrefix(opts.output, value, cancelPrefix, undefined, (str) =>\n\t\t\t\t\t\t\t\tstyleText(['strikethrough', 'dim'], str)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: value\n\t\t\t\t\t\t\t? styleText(['strikethrough', 'dim'], value)\n\t\t\t\t\t\t\t: '';\n\t\t\t\t\treturn `${title}${lines}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\tconst lines = hasGuide\n\t\t\t\t\t\t? wrapTextWithPrefix(opts.output, userInput, defaultPrefix)\n\t\t\t\t\t\t: userInput;\n\t\t\t\t\treturn `${title}${lines}\\n${defaultPrefixEnd}${submitButton}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n","import { styleText } from 'node:util';\nimport { MultiSelectPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_CHECKBOX_ACTIVE,\n\tS_CHECKBOX_INACTIVE,\n\tS_CHECKBOX_SELECTED,\n\tsymbol,\n\tsymbolBar,\n} from './common.js';\nimport { limitOptions } from './limit-options.js';\nimport type { Option } from './select.js';\n\nexport interface MultiSelectOptions<Value> extends CommonOptions {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValues?: Value[];\n\tmaxItems?: number;\n\trequired?: boolean;\n\tcursorAt?: Value;\n}\nconst computeLabel = (label: string, format: (text: string) => string) => {\n\treturn label\n\t\t.split('\\n')\n\t\t.map((line) => format(line))\n\t\t.join('\\n');\n};\n\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled'\n\t\t\t| 'disabled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'disabled') {\n\t\t\treturn `${styleText('gray', S_CHECKBOX_INACTIVE)} ${computeLabel(label, (str) => styleText(['strikethrough', 'gray'], str))}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint ?? 'disabled'})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${styleText('cyan', S_CHECKBOX_ACTIVE)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\treturn `${styleText('green', S_CHECKBOX_SELECTED)} ${computeLabel(label, (text) => styleText('dim', text))}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${computeLabel(label, (text) => styleText(['strikethrough', 'dim'], text))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${styleText('green', S_CHECKBOX_SELECTED)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${computeLabel(label, (text) => styleText('dim', text))}`;\n\t\t}\n\t\treturn `${styleText('dim', S_CHECKBOX_INACTIVE)} ${computeLabel(label, (text) => styleText('dim', text))}`;\n\t};\n\tconst required = opts.required ?? true;\n\n\treturn new MultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValues: opts.initialValues,\n\t\trequired,\n\t\tcursorAt: opts.cursorAt,\n\t\tvalidate(selected: Value[] | undefined) {\n\t\t\tif (required && (selected === undefined || selected.length === 0))\n\t\t\t\treturn `Please select at least one option.\\n${styleText(\n\t\t\t\t\t'reset',\n\t\t\t\t\tstyleText(\n\t\t\t\t\t\t'dim',\n\t\t\t\t\t\t`Press ${styleText(['gray', 'bgWhite', 'inverse'], ' space ')} to select, ${styleText(\n\t\t\t\t\t\t\t'gray',\n\t\t\t\t\t\t\tstyleText('bgWhite', styleText('inverse', ' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst wrappedMessage = wrapTextWithPrefix(\n\t\t\t\topts.output,\n\t\t\t\topts.message,\n\t\t\t\thasGuide ? `${symbolBar(this.state)} ` : '',\n\t\t\t\t`${symbol(this.state)} `\n\t\t\t);\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${wrappedMessage}\\n`;\n\t\t\tconst value = this.value ?? [];\n\n\t\t\tconst styleOption = (option: Option<Value>, active: boolean) => {\n\t\t\t\tif (option.disabled) {\n\t\t\t\t\treturn opt(option, 'disabled');\n\t\t\t\t}\n\t\t\t\tconst selected = value.includes(option.value);\n\t\t\t\tif (active && selected) {\n\t\t\t\t\treturn opt(option, 'active-selected');\n\t\t\t\t}\n\t\t\t\tif (selected) {\n\t\t\t\t\treturn opt(option, 'selected');\n\t\t\t\t}\n\t\t\t\treturn opt(option, active ? 'active' : 'inactive');\n\t\t\t};\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitText =\n\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t\t.join(styleText('dim', ', ')) || styleText('dim', 'none');\n\t\t\t\t\tconst wrappedSubmitText = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\tsubmitText,\n\t\t\t\t\t\thasGuide ? `${styleText('gray', S_BAR)} ` : ''\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedSubmitText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value: optionValue }) => value.includes(optionValue))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(styleText('dim', ', '));\n\t\t\t\t\tif (label.trim() === '') {\n\t\t\t\t\t\treturn `${title}${styleText('gray', S_BAR)}`;\n\t\t\t\t\t}\n\t\t\t\t\tconst wrappedLabel = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\thasGuide ? `${styleText('gray', S_BAR)} ` : ''\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedLabel}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst prefix = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0\n\t\t\t\t\t\t\t\t? `${hasGuide ? `${styleText('yellow', S_BAR_END)} ` : ''}${styleText('yellow', ln)}`\n\t\t\t\t\t\t\t\t: ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\t// Calculate rowPadding: title lines + footer lines (error message + trailing newline)\n\t\t\t\t\tconst titleLineCount = title.split('\\n').length;\n\t\t\t\t\tconst footerLineCount = footer.split('\\n').length + 1; // footer + trailing newline\n\t\t\t\t\treturn `${title}${prefix}${limitOptions({\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tcolumnPadding: prefix.length,\n\t\t\t\t\t\trowPadding: titleLineCount + footerLineCount,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${prefix}`)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst prefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\t// Calculate rowPadding: title lines + footer lines (S_BAR_END + trailing newline)\n\t\t\t\t\tconst titleLineCount = title.split('\\n').length;\n\t\t\t\t\tconst footerLineCount = hasGuide ? 2 : 1; // S_BAR_END + trailing newline\n\t\t\t\t\treturn `${title}${prefix}${limitOptions({\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tcolumnPadding: prefix.length,\n\t\t\t\t\t\trowPadding: titleLineCount + footerLineCount,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${prefix}`)}\\n${hasGuide ? styleText('cyan', S_BAR_END) : ''}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n","import process from 'node:process';\nimport type { Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport { getColumns, settings } from '@clack/core';\nimport stringWidth from 'fast-string-width';\nimport { type Options as WrapAnsiOptions, wrapAnsi } from 'fast-wrap-ansi';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_H,\n\tS_CONNECT_LEFT,\n\tS_CORNER_BOTTOM_LEFT,\n\tS_CORNER_BOTTOM_RIGHT,\n\tS_CORNER_TOP_RIGHT,\n\tS_STEP_SUBMIT,\n} from './common.js';\n\ntype FormatFn = (line: string) => string;\nexport interface NoteOptions extends CommonOptions {\n\tformat?: FormatFn;\n}\n\nconst defaultNoteFormatter = (line: string): string => styleText('dim', line);\n\nconst wrapWithFormat = (message: string, width: number, format: FormatFn): string => {\n\tconst opts: WrapAnsiOptions = {\n\t\thard: true,\n\t\ttrim: false,\n\t};\n\tconst wrapMsg = wrapAnsi(message, width, opts).split('\\n');\n\tconst maxWidthNormal = wrapMsg.reduce((sum, ln) => Math.max(stringWidth(ln), sum), 0);\n\tconst maxWidthFormat = wrapMsg.map(format).reduce((sum, ln) => Math.max(stringWidth(ln), sum), 0);\n\tconst wrapWidth = width - (maxWidthFormat - maxWidthNormal);\n\treturn wrapAnsi(message, wrapWidth, opts);\n};\n\nexport const note = (message = '', title = '', opts?: NoteOptions) => {\n\tconst output: Writable = opts?.output ?? process.stdout;\n\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\tconst format = opts?.format ?? defaultNoteFormatter;\n\tconst wrapMsg = wrapWithFormat(message, getColumns(output) - 6, format);\n\tconst lines = ['', ...wrapMsg.split('\\n').map(format), ''];\n\tconst titleLen = stringWidth(title);\n\tconst len =\n\t\tMath.max(\n\t\t\tlines.reduce((sum, ln) => {\n\t\t\t\tconst width = stringWidth(ln);\n\t\t\t\treturn width > sum ? width : sum;\n\t\t\t}, 0),\n\t\t\ttitleLen\n\t\t) + 2;\n\tconst msg = lines\n\t\t.map(\n\t\t\t(ln) =>\n\t\t\t\t`${styleText('gray', S_BAR)} ${ln}${' '.repeat(len - stringWidth(ln))}${styleText('gray', S_BAR)}`\n\t\t)\n\t\t.join('\\n');\n\tconst leadingBorder = hasGuide ? `${styleText('gray', S_BAR)}\\n` : '';\n\tconst bottomLeft = hasGuide ? S_CONNECT_LEFT : S_CORNER_BOTTOM_LEFT;\n\toutput.write(\n\t\t`${leadingBorder}${styleText('green', S_STEP_SUBMIT)} ${styleText('reset', title)} ${styleText(\n\t\t\t'gray',\n\t\t\tS_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT\n\t\t)}\\n${msg}\\n${styleText('gray', bottomLeft + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\\n`\n\t);\n};\n","import { styleText } from 'node:util';\nimport { PasswordPrompt, settings } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, S_PASSWORD_MASK, symbol } from './common.js';\n\nexport interface PasswordOptions extends CommonOptions {\n\tmessage: string;\n\tmask?: string;\n\tvalidate?: (value: string | undefined) => string | Error | undefined;\n\tclearOnError?: boolean;\n}\nexport const password = (opts: PasswordOptions) => {\n\treturn new PasswordPrompt({\n\t\tvalidate: opts.validate,\n\t\tmask: opts.mask ?? S_PASSWORD_MASK,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst userInput = this.userInputWithCursor;\n\t\t\tconst masked = this.masked;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorPrefix = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst errorPrefixEnd = hasGuide ? `${styleText('yellow', S_BAR_END)} ` : '';\n\t\t\t\t\tconst maskedText = masked ?? '';\n\t\t\t\t\tif (opts.clearOnError) {\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t}\n\t\t\t\t\treturn `${title.trim()}\\n${errorPrefix}${maskedText}\\n${errorPrefixEnd}${styleText('yellow', this.error)}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst maskedText = masked ? styleText('dim', masked) : '';\n\t\t\t\t\treturn `${title}${submitPrefix}${maskedText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst maskedText = masked ? styleText(['strikethrough', 'dim'], masked) : '';\n\t\t\t\t\treturn `${title}${cancelPrefix}${maskedText}${\n\t\t\t\t\t\tmasked && hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\treturn `${title}${defaultPrefix}${userInput}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n","import { existsSync, lstatSync, readdirSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { autocomplete } from './autocomplete.js';\nimport type { CommonOptions } from './common.js';\n\nexport interface PathOptions extends CommonOptions {\n\troot?: string;\n\tdirectory?: boolean;\n\tinitialValue?: string;\n\tmessage: string;\n\tvalidate?: (value: string | undefined) => string | Error | undefined;\n}\n\nexport const path = (opts: PathOptions) => {\n\tconst validate = opts.validate;\n\n\treturn autocomplete({\n\t\t...opts,\n\t\tinitialUserInput: opts.initialValue ?? opts.root ?? process.cwd(),\n\t\tmaxItems: 5,\n\t\tvalidate(value) {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\t// Shouldn't ever happen since we don't enable `multiple: true`\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (!value) {\n\t\t\t\treturn 'Please select a path';\n\t\t\t}\n\t\t\tif (validate) {\n\t\t\t\treturn validate(value);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\toptions() {\n\t\t\tconst userInput = this.userInput;\n\t\t\tif (userInput === '') {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tlet searchPath: string;\n\n\t\t\t\tif (!existsSync(userInput)) {\n\t\t\t\t\tsearchPath = dirname(userInput);\n\t\t\t\t} else {\n\t\t\t\t\tconst stat = lstatSync(userInput);\n\t\t\t\t\tif (stat.isDirectory() && (!opts.directory || userInput.endsWith('/'))) {\n\t\t\t\t\t\tsearchPath = userInput;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsearchPath = dirname(userInput);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Strip trailing slash so startsWith matches the directory itself among its siblings\n\t\t\t\tconst prefix =\n\t\t\t\t\tuserInput.length > 1 && userInput.endsWith('/') ? userInput.slice(0, -1) : userInput;\n\n\t\t\t\tconst items = readdirSync(searchPath)\n\t\t\t\t\t.map((item) => {\n\t\t\t\t\t\tconst path = join(searchPath, item);\n\t\t\t\t\t\tconst stats = lstatSync(path);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tname: item,\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tisDirectory: stats.isDirectory(),\n\t\t\t\t\t\t};\n\t\t\t\t\t})\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t({ path, isDirectory }) => path.startsWith(prefix) && (isDirectory || !opts.directory)\n\t\t\t\t\t);\n\n\t\t\t\treturn items.map((item) => ({\n\t\t\t\t\tvalue: item.path,\n\t\t\t\t}));\n\t\t\t} catch (_e) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t});\n};\n","import { styleText } from 'node:util';\nimport { block, getColumns, settings } from '@clack/core';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor, erase } from 'sisteransi';\nimport {\n\ttype CommonOptions,\n\tisCI as isCIFn,\n\tS_BAR,\n\tS_STEP_CANCEL,\n\tS_STEP_ERROR,\n\tS_STEP_SUBMIT,\n\tunicode,\n} from './common.js';\n\nexport interface SpinnerOptions extends CommonOptions {\n\tindicator?: 'dots' | 'timer';\n\tonCancel?: () => void;\n\tcancelMessage?: string;\n\terrorMessage?: string;\n\tframes?: string[];\n\tdelay?: number;\n\tstyleFrame?: (frame: string) => string;\n}\n\nexport interface SpinnerResult {\n\tstart(msg?: string): void;\n\tstop(msg?: string): void;\n\tcancel(msg?: string): void;\n\terror(msg?: string): void;\n\tmessage(msg?: string): void;\n\tclear(): void;\n\treadonly isCancelled: boolean;\n}\n\nconst defaultStyleFn: SpinnerOptions['styleFrame'] = (frame) => styleText('magenta', frame);\n\nexport const spinner = ({\n\tindicator = 'dots',\n\tonCancel,\n\toutput = process.stdout,\n\tcancelMessage,\n\terrorMessage,\n\tframes = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'],\n\tdelay = unicode ? 80 : 120,\n\tsignal,\n\t...opts\n}: SpinnerOptions = {}): SpinnerResult => {\n\tconst isCI = isCIFn();\n\n\tlet unblock: () => void;\n\tlet loop: NodeJS.Timeout;\n\tlet isSpinnerActive = false;\n\tlet isCancelled = false;\n\tlet _message = '';\n\tlet _prevMessage: string | undefined;\n\tlet _origin: number = performance.now();\n\tconst columns = getColumns(output);\n\tconst styleFn = opts?.styleFrame ?? defaultStyleFn;\n\n\tconst handleExit = (code: number) => {\n\t\tconst msg =\n\t\t\tcode > 1\n\t\t\t\t? (errorMessage ?? settings.messages.error)\n\t\t\t\t: (cancelMessage ?? settings.messages.cancel);\n\t\tisCancelled = code === 1;\n\t\tif (isSpinnerActive) {\n\t\t\t_stop(msg, code);\n\t\t\tif (isCancelled && typeof onCancel === 'function') {\n\t\t\t\tonCancel();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst errorEventHandler = () => handleExit(2);\n\tconst signalEventHandler = () => handleExit(1);\n\n\tconst registerHooks = () => {\n\t\t// Reference: https://nodejs.org/api/process.html#event-uncaughtexception\n\t\tprocess.on('uncaughtExceptionMonitor', errorEventHandler);\n\t\t// Reference: https://nodejs.org/api/process.html#event-unhandledrejection\n\t\tprocess.on('unhandledRejection', errorEventHandler);\n\t\t// Reference Signal Events: https://nodejs.org/api/process.html#signal-events\n\t\tprocess.on('SIGINT', signalEventHandler);\n\t\tprocess.on('SIGTERM', signalEventHandler);\n\t\tprocess.on('exit', handleExit);\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', signalEventHandler);\n\t\t}\n\t};\n\n\tconst clearHooks = () => {\n\t\tprocess.removeListener('uncaughtExceptionMonitor', errorEventHandler);\n\t\tprocess.removeListener('unhandledRejection', errorEventHandler);\n\t\tprocess.removeListener('SIGINT', signalEventHandler);\n\t\tprocess.removeListener('SIGTERM', signalEventHandler);\n\t\tprocess.removeListener('exit', handleExit);\n\n\t\tif (signal) {\n\t\t\tsignal.removeEventListener('abort', signalEventHandler);\n\t\t}\n\t};\n\n\tconst clearPrevMessage = () => {\n\t\tif (_prevMessage === undefined) return;\n\t\tif (isCI) output.write('\\n');\n\t\tconst wrapped = wrapAnsi(_prevMessage, columns, {\n\t\t\thard: true,\n\t\t\ttrim: false,\n\t\t});\n\t\tconst prevLines = wrapped.split('\\n');\n\t\tif (prevLines.length > 1) {\n\t\t\toutput.write(cursor.up(prevLines.length - 1));\n\t\t}\n\t\toutput.write(cursor.to(0));\n\t\toutput.write(erase.down());\n\t};\n\n\tconst removeTrailingDots = (msg: string): string => {\n\t\treturn msg.replace(/\\.+$/, '');\n\t};\n\n\tconst formatTimer = (origin: number): string => {\n\t\tconst duration = (performance.now() - origin) / 1000;\n\t\tconst min = Math.floor(duration / 60);\n\t\tconst secs = Math.floor(duration % 60);\n\t\treturn min > 0 ? `[${min}m ${secs}s]` : `[${secs}s]`;\n\t};\n\n\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\n\tconst start = (msg = ''): void => {\n\t\tisSpinnerActive = true;\n\t\tunblock = block({ output });\n\t\t_message = removeTrailingDots(msg);\n\t\t_origin = performance.now();\n\t\tif (hasGuide) {\n\t\t\toutput.write(`${styleText('gray', S_BAR)}\\n`);\n\t\t}\n\t\tlet frameIndex = 0;\n\t\tlet indicatorTimer = 0;\n\t\tregisterHooks();\n\t\tloop = setInterval(() => {\n\t\t\tif (isCI && _message === _prevMessage) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPrevMessage();\n\t\t\t_prevMessage = _message;\n\t\t\tconst frame = styleFn(frames[frameIndex]);\n\t\t\tlet outputMessage: string;\n\n\t\t\tif (isCI) {\n\t\t\t\toutputMessage = `${frame} ${_message}...`;\n\t\t\t} else if (indicator === 'timer') {\n\t\t\t\toutputMessage = `${frame} ${_message} ${formatTimer(_origin)}`;\n\t\t\t} else {\n\t\t\t\tconst loadingDots = '.'.repeat(Math.floor(indicatorTimer)).slice(0, 3);\n\t\t\t\toutputMessage = `${frame} ${_message}${loadingDots}`;\n\t\t\t}\n\n\t\t\tconst wrapped = wrapAnsi(outputMessage, columns, {\n\t\t\t\thard: true,\n\t\t\t\ttrim: false,\n\t\t\t});\n\t\t\toutput.write(wrapped);\n\n\t\t\tframeIndex = frameIndex + 1 < frames.length ? frameIndex + 1 : 0;\n\t\t\t// indicator increase by 1 every 8 frames\n\t\t\tindicatorTimer = indicatorTimer < 4 ? indicatorTimer + 0.125 : 0;\n\t\t}, delay);\n\t};\n\n\tconst _stop = (msg = '', code = 0, silent: boolean = false): void => {\n\t\tif (!isSpinnerActive) return;\n\t\tisSpinnerActive = false;\n\t\tclearInterval(loop);\n\t\tclearPrevMessage();\n\t\tconst step =\n\t\t\tcode === 0\n\t\t\t\t? styleText('green', S_STEP_SUBMIT)\n\t\t\t\t: code === 1\n\t\t\t\t\t? styleText('red', S_STEP_CANCEL)\n\t\t\t\t\t: styleText('red', S_STEP_ERROR);\n\t\t_message = msg ?? _message;\n\t\tif (!silent) {\n\t\t\tif (indicator === 'timer') {\n\t\t\t\toutput.write(`${step} ${_message} ${formatTimer(_origin)}\\n`);\n\t\t\t} else {\n\t\t\t\toutput.write(`${step} ${_message}\\n`);\n\t\t\t}\n\t\t}\n\t\tclearHooks();\n\t\tunblock();\n\t};\n\n\tconst stop = (msg = ''): void => _stop(msg, 0);\n\tconst cancel = (msg = ''): void => _stop(msg, 1);\n\tconst error = (msg = ''): void => _stop(msg, 2);\n\t// TODO (43081j): this will leave the initial S_BAR since we purposely\n\t// don't erase that in `clearPrevMessage`. In future, we may want to treat\n\t// `clear` as a special case and remove the bar too.\n\tconst clear = (): void => _stop('', 0, true);\n\n\tconst message = (msg = ''): void => {\n\t\t_message = removeTrailingDots(msg ?? _message);\n\t};\n\n\treturn {\n\t\tstart,\n\t\tstop,\n\t\tmessage,\n\t\tcancel,\n\t\terror,\n\t\tclear,\n\t\tget isCancelled() {\n\t\t\treturn isCancelled;\n\t\t},\n\t};\n};\n","import { styleText } from 'node:util';\nimport type { State } from '@clack/core';\nimport { unicodeOr } from './common.js';\nimport { type SpinnerOptions, type SpinnerResult, spinner } from './spinner.js';\n\nconst S_PROGRESS_CHAR: Record<NonNullable<ProgressOptions['style']>, string> = {\n\tlight: unicodeOr('─', '-'),\n\theavy: unicodeOr('━', '='),\n\tblock: unicodeOr('█', '#'),\n};\n\nexport interface ProgressOptions extends SpinnerOptions {\n\tstyle?: 'light' | 'heavy' | 'block';\n\tmax?: number;\n\tsize?: number;\n}\n\nexport interface ProgressResult extends SpinnerResult {\n\tadvance(step?: number, msg?: string): void;\n}\n\nexport function progress({\n\tstyle = 'heavy',\n\tmax: userMax = 100,\n\tsize: userSize = 40,\n\t...spinnerOptions\n}: ProgressOptions = {}): ProgressResult {\n\tconst spin = spinner(spinnerOptions);\n\tlet value = 0;\n\tlet previousMessage = '';\n\n\tconst max = Math.max(1, userMax);\n\tconst size = Math.max(1, userSize);\n\n\tconst activeStyle = (state: State) => {\n\t\tswitch (state) {\n\t\t\tcase 'initial':\n\t\t\tcase 'active':\n\t\t\t\treturn (text: string) => styleText('magenta', text);\n\t\t\tcase 'error':\n\t\t\tcase 'cancel':\n\t\t\t\treturn (text: string) => styleText('red', text);\n\t\t\tcase 'submit':\n\t\t\t\treturn (text: string) => styleText('green', text);\n\t\t\tdefault:\n\t\t\t\treturn (text: string) => styleText('magenta', text);\n\t\t}\n\t};\n\tconst drawProgress = (state: State, msg: string) => {\n\t\tconst active = Math.floor((value / max) * size);\n\t\treturn `${activeStyle(state)(S_PROGRESS_CHAR[style].repeat(active))}${styleText('dim', S_PROGRESS_CHAR[style].repeat(size - active))} ${msg}`;\n\t};\n\n\tconst start = (msg = '') => {\n\t\tpreviousMessage = msg;\n\t\tspin.start(drawProgress('initial', msg));\n\t};\n\tconst advance = (step = 1, msg?: string): void => {\n\t\tvalue = Math.min(max, step + value);\n\t\tspin.message(drawProgress('active', msg ?? previousMessage));\n\t\tpreviousMessage = msg ?? previousMessage;\n\t};\n\treturn {\n\t\tstart,\n\t\tstop: spin.stop,\n\t\tcancel: spin.cancel,\n\t\terror: spin.error,\n\t\tclear: spin.clear,\n\t\tadvance,\n\t\tisCancelled: spin.isCancelled,\n\t\tmessage: (msg: string) => advance(0, msg),\n\t};\n}\n","import { styleText } from 'node:util';\nimport { SelectPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport {\n\ttype CommonOptions,\n\tS_BAR,\n\tS_BAR_END,\n\tS_RADIO_ACTIVE,\n\tS_RADIO_INACTIVE,\n\tsymbol,\n\tsymbolBar,\n} from './common.js';\nimport { limitOptions } from './limit-options.js';\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n\t? {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * The optional, user-facing text for this option.\n\t\t\t *\n\t\t\t * By default, the `value` is converted to a string.\n\t\t\t */\n\t\t\tlabel?: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t\t/**\n\t\t\t * Whether this option is disabled.\n\t\t\t * Disabled options are visible but cannot be selected.\n\t\t\t *\n\t\t\t * By default, options are not disabled.\n\t\t\t */\n\t\t\tdisabled?: boolean;\n\t\t}\n\t: {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * Required. The user-facing text for this option.\n\t\t\t */\n\t\t\tlabel: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t\t/**\n\t\t\t * Whether this option is disabled.\n\t\t\t * Disabled options are visible but cannot be selected.\n\t\t\t *\n\t\t\t * By default, options are not disabled.\n\t\t\t */\n\t\t\tdisabled?: boolean;\n\t\t};\n\nexport interface SelectOptions<Value> extends CommonOptions {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tmaxItems?: number;\n}\n\nconst computeLabel = (label: string, format: (text: string) => string) => {\n\tif (!label.includes('\\n')) {\n\t\treturn format(label);\n\t}\n\treturn label\n\t\t.split('\\n')\n\t\t.map((line) => format(line))\n\t\t.join('\\n');\n};\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' | 'disabled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tswitch (state) {\n\t\t\tcase 'disabled':\n\t\t\t\treturn `${styleText('gray', S_RADIO_INACTIVE)} ${computeLabel(label, (text) => styleText('gray', text))}${\n\t\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint ?? 'disabled'})`)}` : ''\n\t\t\t\t}`;\n\t\t\tcase 'selected':\n\t\t\t\treturn `${computeLabel(label, (text) => styleText('dim', text))}`;\n\t\t\tcase 'active':\n\t\t\t\treturn `${styleText('green', S_RADIO_ACTIVE)} ${label}${\n\t\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t\t}`;\n\t\t\tcase 'cancelled':\n\t\t\t\treturn `${computeLabel(label, (str) => styleText(['strikethrough', 'dim'], str))}`;\n\t\t\tdefault:\n\t\t\t\treturn `${styleText('dim', S_RADIO_INACTIVE)} ${computeLabel(label, (text) => styleText('dim', text))}`;\n\t\t}\n\t};\n\n\treturn new SelectPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${symbol(this.state)} `;\n\t\t\tconst titlePrefixBar = `${symbolBar(this.state)} `;\n\t\t\tconst messageLines = wrapTextWithPrefix(\n\t\t\t\topts.output,\n\t\t\t\topts.message,\n\t\t\t\ttitlePrefixBar,\n\t\t\t\ttitlePrefix\n\t\t\t);\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${messageLines}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst wrappedLines = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(this.options[this.cursor], 'selected'),\n\t\t\t\t\t\tsubmitPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedLines}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst wrappedLines = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(this.options[this.cursor], 'cancelled'),\n\t\t\t\t\t\tcancelPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrappedLines}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst prefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst prefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\t// Calculate rowPadding: title lines + footer lines (S_BAR_END + trailing newline)\n\t\t\t\t\tconst titleLineCount = title.split('\\n').length;\n\t\t\t\t\tconst footerLineCount = hasGuide ? 2 : 1; // S_BAR_END + trailing newline (or just trailing newline)\n\t\t\t\t\treturn `${title}${prefix}${limitOptions({\n\t\t\t\t\t\toutput: opts.output,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tcolumnPadding: prefix.length,\n\t\t\t\t\t\trowPadding: titleLineCount + footerLineCount,\n\t\t\t\t\t\tstyle: (item, active) =>\n\t\t\t\t\t\t\topt(item, item.disabled ? 'disabled' : active ? 'active' : 'inactive'),\n\t\t\t\t\t}).join(`\\n${prefix}`)}\\n${prefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n","import { styleText } from 'node:util';\nimport { SelectKeyPrompt, settings, wrapTextWithPrefix } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, symbol } from './common.js';\nimport type { Option } from './select.js';\n\nexport interface SelectKeyOptions<Value extends string> extends CommonOptions {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tcaseSensitive?: boolean;\n}\n\nexport const selectKey = <Value extends string>(opts: SelectKeyOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'selected') {\n\t\t\treturn `${styleText('dim', label)}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${styleText(['strikethrough', 'dim'], label)}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${styleText(['bgCyan', 'gray'], ` ${option.value} `)} ${label}${\n\t\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t\t}`;\n\t\t}\n\t\treturn `${styleText(['gray', 'bgWhite', 'inverse'], ` ${option.value} `)} ${label}${\n\t\t\toption.hint ? ` ${styleText('dim', `(${option.hint})`)}` : ''\n\t\t}`;\n\t};\n\n\treturn new SelectKeyPrompt({\n\t\toptions: opts.options,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\toutput: opts.output,\n\t\tinitialValue: opts.initialValue,\n\t\tcaseSensitive: opts.caseSensitive,\n\t\trender() {\n\t\t\tconst hasGuide = opts.withGuide ?? settings.withGuide;\n\t\t\tconst title = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst submitPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst selectedOption =\n\t\t\t\t\t\tthis.options.find((opt) => opt.value === this.value) ?? opts.options[0];\n\t\t\t\t\tconst wrapped = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(selectedOption, 'selected'),\n\t\t\t\t\t\tsubmitPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrapped}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst cancelPrefix = hasGuide ? `${styleText('gray', S_BAR)} ` : '';\n\t\t\t\t\tconst wrapped = wrapTextWithPrefix(\n\t\t\t\t\t\topts.output,\n\t\t\t\t\t\topt(this.options[0], 'cancelled'),\n\t\t\t\t\t\tcancelPrefix\n\t\t\t\t\t);\n\t\t\t\t\treturn `${title}${wrapped}${hasGuide ? `\\n${styleText('gray', S_BAR)}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\tconst wrapped = this.options\n\t\t\t\t\t\t.map((option, i) =>\n\t\t\t\t\t\t\twrapTextWithPrefix(\n\t\t\t\t\t\t\t\topts.output,\n\t\t\t\t\t\t\t\topt(option, i === this.cursor ? 'active' : 'inactive'),\n\t\t\t\t\t\t\t\tdefaultPrefix\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${wrapped}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n","import { stripVTControlCharacters as strip, styleText } from 'node:util';\nimport { S_BAR, S_ERROR, S_INFO, S_STEP_SUBMIT, S_SUCCESS, S_WARN } from './common.js';\nimport type { LogMessageOptions } from './log.js';\n\nconst prefix = `${styleText('gray', S_BAR)} `;\n\n// TODO (43081j): this currently doesn't support custom `output` writables\n// because we rely on `columns` existing (i.e. `process.stdout.columns).\n//\n// If we want to support `output` being passed in, we will need to use\n// a condition like `if (output insance Writable)` to check if it has columns\nexport const stream = {\n\tmessage: async (\n\t\titerable: Iterable<string> | AsyncIterable<string>,\n\t\t{ symbol = styleText('gray', S_BAR) }: LogMessageOptions = {}\n\t) => {\n\t\tprocess.stdout.write(`${styleText('gray', S_BAR)}\\n${symbol} `);\n\t\tlet lineWidth = 3;\n\t\tfor await (let chunk of iterable) {\n\t\t\tchunk = chunk.replace(/\\n/g, `\\n${prefix}`);\n\t\t\tif (chunk.includes('\\n')) {\n\t\t\t\tlineWidth = 3 + strip(chunk.slice(chunk.lastIndexOf('\\n'))).length;\n\t\t\t}\n\t\t\tconst chunkLen = strip(chunk).length;\n\t\t\tif (lineWidth + chunkLen < process.stdout.columns) {\n\t\t\t\tlineWidth += chunkLen;\n\t\t\t\tprocess.stdout.write(chunk);\n\t\t\t} else {\n\t\t\t\tprocess.stdout.write(`\\n${prefix}${chunk.trimStart()}`);\n\t\t\t\tlineWidth = 3 + strip(chunk.trimStart()).length;\n\t\t\t}\n\t\t}\n\t\tprocess.stdout.write('\\n');\n\t},\n\tinfo: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('blue', S_INFO) });\n\t},\n\tsuccess: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('green', S_SUCCESS) });\n\t},\n\tstep: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('green', S_STEP_SUBMIT) });\n\t},\n\twarn: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('yellow', S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.warn(iterable);\n\t},\n\terror: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: styleText('red', S_ERROR) });\n\t},\n};\n","import type { CommonOptions } from './common.js';\nimport { spinner } from './spinner.js';\n\nexport type Task = {\n\t/**\n\t * Task title\n\t */\n\ttitle: string;\n\t/**\n\t * Task function\n\t */\n\ttask: (message: (string: string) => void) => string | Promise<string> | void | Promise<void>;\n\n\t/**\n\t * If enabled === false the task will be skipped\n\t */\n\tenabled?: boolean;\n};\n\n/**\n * Define a group of tasks to be executed\n */\nexport const tasks = async (tasks: Task[], opts?: CommonOptions) => {\n\tfor (const task of tasks) {\n\t\tif (task.enabled === false) continue;\n\n\t\tconst s = spinner(opts);\n\t\ts.start(task.title);\n\t\tconst result = await task.task(s.message);\n\t\ts.stop(result || task.title);\n\t}\n};\n","import type { Writable } from 'node:stream';\nimport { styleText } from 'node:util';\nimport { getColumns } from '@clack/core';\nimport { erase } from 'sisteransi';\nimport {\n\ttype CommonOptions,\n\tisCI as isCIFn,\n\tisTTY as isTTYFn,\n\tS_BAR,\n\tS_STEP_SUBMIT,\n} from './common.js';\nimport { log } from './log.js';\n\nexport interface TaskLogOptions extends CommonOptions {\n\ttitle: string;\n\tlimit?: number;\n\tspacing?: number;\n\tretainLog?: boolean;\n}\n\nexport interface TaskLogMessageOptions {\n\traw?: boolean;\n}\n\nexport interface TaskLogCompletionOptions {\n\tshowLog?: boolean;\n}\n\ninterface BufferEntry {\n\theader?: string;\n\tvalue: string;\n\tfull: string;\n\tresult?: {\n\t\tstatus: 'success' | 'error';\n\t\tmessage: string;\n\t};\n}\n\nconst stripDestructiveANSI = (input: string): string => {\n\t// biome-ignore lint/suspicious/noControlCharactersInRegex: intentional\n\treturn input.replace(/\\x1b\\[(?:\\d+;)*\\d*[ABCDEFGHfJKSTsu]|\\x1b\\[(s|u)/g, '');\n};\n\n/**\n * Renders a log which clears on success and remains on failure\n */\nexport const taskLog = (opts: TaskLogOptions) => {\n\tconst output: Writable = opts.output ?? process.stdout;\n\tconst columns = getColumns(output);\n\tconst secondarySymbol = styleText('gray', S_BAR);\n\tconst spacing = opts.spacing ?? 1;\n\tconst barSize = 3;\n\tconst retainLog = opts.retainLog === true;\n\tconst isTTY = !isCIFn() && isTTYFn(output);\n\n\toutput.write(`${secondarySymbol}\\n`);\n\toutput.write(`${styleText('green', S_STEP_SUBMIT)} ${opts.title}\\n`);\n\tfor (let i = 0; i < spacing; i++) {\n\t\toutput.write(`${secondarySymbol}\\n`);\n\t}\n\n\tconst buffers: BufferEntry[] = [\n\t\t{\n\t\t\tvalue: '',\n\t\t\tfull: '',\n\t\t},\n\t];\n\tlet lastMessageWasRaw = false;\n\n\tconst clear = (clearTitle: boolean): void => {\n\t\tif (buffers.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet lines = 0;\n\n\t\tif (clearTitle) {\n\t\t\tlines += spacing + 2;\n\t\t}\n\n\t\tfor (const buffer of buffers) {\n\t\t\tconst { value, result } = buffer;\n\t\t\tlet text = result?.message ?? value;\n\n\t\t\tif (text.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (result === undefined && buffer.header !== undefined && buffer.header !== '') {\n\t\t\t\ttext += `\\n${buffer.header}`;\n\t\t\t}\n\n\t\t\tconst bufferHeight = text.split('\\n').reduce((count, line) => {\n\t\t\t\tif (line === '') {\n\t\t\t\t\treturn count + 1;\n\t\t\t\t}\n\t\t\t\treturn count + Math.ceil((line.length + barSize) / columns);\n\t\t\t}, 0);\n\n\t\t\tlines += bufferHeight;\n\t\t}\n\n\t\tif (lines > 0) {\n\t\t\tlines += 1;\n\t\t\toutput.write(erase.lines(lines));\n\t\t}\n\t};\n\tconst printBuffer = (buffer: BufferEntry, messageSpacing?: number, full?: boolean): void => {\n\t\tconst messages = full ? `${buffer.full}\\n${buffer.value}` : buffer.value;\n\t\tif (buffer.header !== undefined && buffer.header !== '') {\n\t\t\tlog.message(\n\t\t\t\tbuffer.header.split('\\n').map((line) => styleText('bold', line)),\n\t\t\t\t{\n\t\t\t\t\toutput,\n\t\t\t\t\tsecondarySymbol,\n\t\t\t\t\tsymbol: secondarySymbol,\n\t\t\t\t\tspacing: 0,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tlog.message(\n\t\t\tmessages.split('\\n').map((line) => styleText('dim', line)),\n\t\t\t{\n\t\t\t\toutput,\n\t\t\t\tsecondarySymbol,\n\t\t\t\tsymbol: secondarySymbol,\n\t\t\t\tspacing: messageSpacing ?? spacing,\n\t\t\t}\n\t\t);\n\t};\n\tconst renderBuffer = (): void => {\n\t\tfor (const buffer of buffers) {\n\t\t\tconst { header, value, full } = buffer;\n\t\t\tif ((header === undefined || header.length === 0) && value.length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tprintBuffer(buffer, undefined, retainLog === true && full.length > 0);\n\t\t}\n\t};\n\tconst message = (buffer: BufferEntry, msg: string, mopts?: TaskLogMessageOptions) => {\n\t\tclear(false);\n\t\tif ((mopts?.raw !== true || !lastMessageWasRaw) && buffer.value !== '') {\n\t\t\tbuffer.value += '\\n';\n\t\t}\n\t\tbuffer.value += stripDestructiveANSI(msg);\n\t\tlastMessageWasRaw = mopts?.raw === true;\n\t\tif (opts.limit !== undefined) {\n\t\t\tconst lines = buffer.value.split('\\n');\n\t\t\tconst linesToRemove = lines.length - opts.limit;\n\t\t\tif (linesToRemove > 0) {\n\t\t\t\tconst removedLines = lines.splice(0, linesToRemove);\n\t\t\t\tif (retainLog) {\n\t\t\t\t\tbuffer.full += (buffer.full === '' ? '' : '\\n') + removedLines.join('\\n');\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuffer.value = lines.join('\\n');\n\t\t}\n\t\tif (isTTY) {\n\t\t\tprintBuffers();\n\t\t}\n\t};\n\tconst printBuffers = (): void => {\n\t\tfor (const buffer of buffers) {\n\t\t\tif (buffer.result) {\n\t\t\t\tif (buffer.result.status === 'error') {\n\t\t\t\t\tlog.error(buffer.result.message, { output, secondarySymbol, spacing: 0 });\n\t\t\t\t} else {\n\t\t\t\t\tlog.success(buffer.result.message, { output, secondarySymbol, spacing: 0 });\n\t\t\t\t}\n\t\t\t} else if (buffer.value !== '') {\n\t\t\t\tprintBuffer(buffer, 0);\n\t\t\t}\n\t\t}\n\t};\n\tconst completeBuffer = (buffer: BufferEntry, result: BufferEntry['result']): void => {\n\t\tclear(false);\n\n\t\tbuffer.result = result;\n\n\t\tif (isTTY) {\n\t\t\tprintBuffers();\n\t\t}\n\t};\n\n\treturn {\n\t\tmessage(msg: string, mopts?: TaskLogMessageOptions) {\n\t\t\tmessage(buffers[0], msg, mopts);\n\t\t},\n\t\tgroup(name: string) {\n\t\t\tconst buffer: BufferEntry = {\n\t\t\t\theader: name,\n\t\t\t\tvalue: '',\n\t\t\t\tfull: '',\n\t\t\t};\n\t\t\tbuffers.push(buffer);\n\t\t\treturn {\n\t\t\t\tmessage(msg: string, mopts?: TaskLogMessageOptions) {\n\t\t\t\t\tmessage(buffer, msg, mopts);\n\t\t\t\t},\n\t\t\t\terror(message: string) {\n\t\t\t\t\tcompleteBuffer(buffer, {\n\t\t\t\t\t\tstatus: 'error',\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tsuccess(message: string) {\n\t\t\t\t\tcompleteBuffer(buffer, {\n\t\t\t\t\t\tstatus: 'success',\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\terror(message: string, opts?: TaskLogCompletionOptions): void {\n\t\t\tclear(true);\n\t\t\tlog.error(message, { output, secondarySymbol, spacing: 1 });\n\t\t\tif (opts?.showLog !== false) {\n\t\t\t\trenderBuffer();\n\t\t\t}\n\t\t\t// clear buffer since error is an end state\n\t\t\tbuffers.splice(1, buffers.length - 1);\n\t\t\tbuffers[0].value = '';\n\t\t\tbuffers[0].full = '';\n\t\t},\n\t\tsuccess(message: string, opts?: TaskLogCompletionOptions): void {\n\t\t\tclear(true);\n\t\t\tlog.success(message, { output, secondarySymbol, spacing: 1 });\n\t\t\tif (opts?.showLog === true) {\n\t\t\t\trenderBuffer();\n\t\t\t}\n\t\t\t// clear buffer since success is an end state\n\t\t\tbuffers.splice(1, buffers.length - 1);\n\t\t\tbuffers[0].value = '';\n\t\t\tbuffers[0].full = '';\n\t\t},\n\t};\n};\n","import { styleText } from 'node:util';\nimport { settings, TextPrompt } from '@clack/core';\nimport { type CommonOptions, S_BAR, S_BAR_END, symbol } from './common.js';\n\nexport interface TextOptions extends CommonOptions {\n\tmessage: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\tinitialValue?: string;\n\tvalidate?: (value: string | undefined) => string | Error | undefined;\n}\n\nexport const text = (opts: TextOptions) => {\n\treturn new TextPrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\toutput: opts.output,\n\t\tsignal: opts.signal,\n\t\tinput: opts.input,\n\t\trender() {\n\t\t\tconst hasGuide = opts?.withGuide ?? settings.withGuide;\n\t\t\tconst titlePrefix = `${hasGuide ? `${styleText('gray', S_BAR)}\\n` : ''}${symbol(this.state)} `;\n\t\t\tconst title = `${titlePrefix}${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? styleText('inverse', opts.placeholder[0]) + styleText('dim', opts.placeholder.slice(1))\n\t\t\t\t: styleText(['inverse', 'hidden'], '_');\n\t\t\tconst userInput = !this.userInput ? placeholder : this.userInputWithCursor;\n\t\t\tconst value = this.value ?? '';\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst errorText = this.error ? ` ${styleText('yellow', this.error)}` : '';\n\t\t\t\t\tconst errorPrefix = hasGuide ? `${styleText('yellow', S_BAR)} ` : '';\n\t\t\t\t\tconst errorPrefixEnd = hasGuide ? styleText('yellow', S_BAR_END) : '';\n\t\t\t\t\treturn `${title.trim()}\\n${errorPrefix}${userInput}\\n${errorPrefixEnd}${errorText}\\n`;\n\t\t\t\t}\n\t\t\t\tcase 'submit': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText('dim', value)}` : '';\n\t\t\t\t\tconst submitPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${submitPrefix}${valueText}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst valueText = value ? ` ${styleText(['strikethrough', 'dim'], value)}` : '';\n\t\t\t\t\tconst cancelPrefix = hasGuide ? styleText('gray', S_BAR) : '';\n\t\t\t\t\treturn `${title}${cancelPrefix}${valueText}${value.trim() ? `\\n${cancelPrefix}` : ''}`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tconst defaultPrefix = hasGuide ? `${styleText('cyan', S_BAR)} ` : '';\n\t\t\t\t\tconst defaultPrefixEnd = hasGuide ? styleText('cyan', S_BAR_END) : '';\n\t\t\t\t\treturn `${title}${defaultPrefix}${userInput}\\n${defaultPrefixEnd}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n"],"names":["isUnicodeSupported","process","unicode","isCI","isTTY","output","unicodeOr","c","fallback","S_STEP_ACTIVE","S_STEP_CANCEL","S_STEP_ERROR","S_STEP_SUBMIT","S_BAR_START","S_BAR","S_BAR_END","S_BAR_START_RIGHT","S_BAR_END_RIGHT","S_RADIO_ACTIVE","S_RADIO_INACTIVE","S_CHECKBOX_ACTIVE","S_CHECKBOX_SELECTED","S_CHECKBOX_INACTIVE","S_PASSWORD_MASK","S_BAR_H","S_CORNER_TOP_RIGHT","S_CONNECT_LEFT","S_CORNER_BOTTOM_RIGHT","S_CORNER_BOTTOM_LEFT","S_CORNER_TOP_LEFT","S_INFO","S_SUCCESS","S_WARN","S_ERROR","symbol","state","styleText","symbolBar","trimLines","groups","initialLineCount","startIndex","endIndex","maxLines","lineCount","removals","i","group","limitOptions","cursor","options","style","maxItems","columnPadding","rowPadding","maxWidth","getColumns","rows","getRows","overflowFormat","outputMaxItems","computedMaxItems","slidingWindowLocation","shouldRenderTopEllipsis","shouldRenderBottomEllipsis","slidingWindowLocationEnd","lineGroups","slidingWindowLocationWithEllipsis","slidingWindowLocationEndWithEllipsis","wrappedLines","wrapAnsi","precedingRemovals","followingRemovals","newLineCount","cursorGroupIndex","trimLinesLocal","result","lineGroup","line","getLabel","option","getFilteredOption","searchText","label","hint","value","term","getSelectedOptions","values","results","autocomplete","opts","AutocompletePrompt","search","opt","hasGuide","settings","headings","userInput","placeholder","showPlaceholder","selected","submitPrefix","userInputText","cancelPrefix","barStyle","guidePrefix","guidePrefixEnd","searchTextValue","matches","noResults","validationError","instructions","footers","displayOptions","active","autocompleteMultiselect","formatOption","selectedValues","focusedValue","isSelected","checkbox","prompt","title","errorMessage","headerLines","footerLines","roundedSymbols","squareSymbols","getPaddingForLine","lineLength","innerWidth","padding","contentAlign","leftPadding","rightPadding","defaultFormatBorder","text","box","message","columns","borderTotalWidth","titlePadding","contentPadding","width","linePrefix","formatBorder","symbols","hSymbol","vSymbol","linePrefixWidth","stringWidth","titleWidth","maxBoxWidth","boxWidth","lines","longestLine","lineWithPadding","longestLineWidth","maxTitleLength","truncatedTitle","titlePaddingLeft","titlePaddingRight","wrappedMessage","leftLinePadding","rightLinePadding","confirm","inactive","ConfirmPrompt","titlePrefix","titlePrefixBar","messageLines","wrapTextWithPrefix","defaultPrefix","defaultPrefixEnd","date","validate","DatePrompt","iso","d","renderDate","errorText","bar","barEnd","valueText","inlineBar","inlineError","parts","sep","seg","isActive","DEFAULT_LABELS","renderSegment","isBlank","prompts","promptNames","name","e","isCancel","groupMultiselect","selectableGroups","groupSpacing","isItem","next","isLast","prefix","spacingPrefix","spacingPrefixText","selectedCheckbox","unselectedCheckbox","required","GroupMultiSelectPrompt","selectedOptions","optionValue","optionsText","footer","ln","groupActive","optionText","optionsPrefix","log","secondarySymbol","spacing","withGuide","spacingString","secondaryPrefix","messageParts","firstLine","cancel","intro","outro","multiline","MultiLinePrompt","submitButton","errorPrefix","errorPrefixEnd","str","computeLabel","format","multiselect","MultiSelectPrompt","styleOption","submitText","wrappedSubmitText","wrappedLabel","titleLineCount","footerLineCount","defaultNoteFormatter","wrapWithFormat","wrapMsg","maxWidthNormal","sum","maxWidthFormat","wrapWidth","note","titleLen","len","msg","leadingBorder","bottomLeft","password","PasswordPrompt","masked","maskedText","path","searchPath","existsSync","lstatSync","dirname","readdirSync","item","join","stats","isDirectory","defaultStyleFn","frame","spinner","indicator","onCancel","cancelMessage","frames","delay","signal","isCIFn","unblock","loop","isSpinnerActive","isCancelled","_message","_prevMessage","_origin","styleFn","handleExit","code","_stop","errorEventHandler","signalEventHandler","registerHooks","clearHooks","clearPrevMessage","prevLines","erase","removeTrailingDots","formatTimer","origin","duration","min","secs","start","block","frameIndex","indicatorTimer","outputMessage","loadingDots","wrapped","silent","step","S_PROGRESS_CHAR","progress","userMax","userSize","spinnerOptions","spin","previousMessage","max","size","activeStyle","drawProgress","advance","select","SelectPrompt","prefixEnd","selectKey","SelectKeyPrompt","selectedOption","stream","iterable","lineWidth","chunk","strip","chunkLen","tasks","task","s","stripDestructiveANSI","input","taskLog","barSize","retainLog","isTTYFn","buffers","lastMessageWasRaw","clear","clearTitle","buffer","bufferHeight","count","printBuffer","messageSpacing","full","messages","renderBuffer","header","mopts","linesToRemove","removedLines","printBuffers","completeBuffer","TextPrompt"],"mappings":"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","x_google_ignoreList":[0]}
|