@maizzle/framework 6.0.0-8 → 6.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/maizzle.mjs +10 -0
- package/dist/build.d.mts +19 -0
- package/dist/build.d.mts.map +1 -0
- package/dist/build.mjs +121 -0
- package/dist/build.mjs.map +1 -0
- package/dist/components/Button.vue +141 -0
- package/dist/components/Divider.vue +105 -0
- package/dist/components/NoWidows.vue +123 -0
- package/dist/components/NotOutlook.vue +17 -0
- package/dist/components/Outlook.vue +74 -0
- package/dist/components/Spacer.vue +36 -0
- package/dist/components/Vml.vue +89 -0
- package/dist/components/WithUrl.vue +190 -0
- package/dist/components/utils.d.mts +5 -0
- package/dist/components/utils.d.mts.map +1 -0
- package/dist/components/utils.mjs +9 -0
- package/dist/components/utils.mjs.map +1 -0
- package/dist/components/utils.ts +6 -0
- package/dist/composables/defineConfig.d.mts +14 -0
- package/dist/composables/defineConfig.d.mts.map +1 -0
- package/dist/composables/defineConfig.mjs +34 -0
- package/dist/composables/defineConfig.mjs.map +1 -0
- package/dist/composables/renderContext.d.mts +19 -0
- package/dist/composables/renderContext.d.mts.map +1 -0
- package/dist/composables/renderContext.mjs +6 -0
- package/dist/composables/renderContext.mjs.map +1 -0
- package/dist/composables/useConfig.d.mts +9 -0
- package/dist/composables/useConfig.d.mts.map +1 -0
- package/dist/composables/useConfig.mjs +13 -0
- package/dist/composables/useConfig.mjs.map +1 -0
- package/dist/composables/useDoctype.d.mts +13 -0
- package/dist/composables/useDoctype.d.mts.map +1 -0
- package/dist/composables/useDoctype.mjs +20 -0
- package/dist/composables/useDoctype.mjs.map +1 -0
- package/dist/composables/useEvent.d.mts +17 -0
- package/dist/composables/useEvent.d.mts.map +1 -0
- package/dist/composables/useEvent.mjs +25 -0
- package/dist/composables/useEvent.mjs.map +1 -0
- package/dist/composables/usePlaintext.d.mts +19 -0
- package/dist/composables/usePlaintext.d.mts.map +1 -0
- package/dist/composables/usePlaintext.mjs +22 -0
- package/dist/composables/usePlaintext.mjs.map +1 -0
- package/dist/config/defaults.d.mts +6 -0
- package/dist/config/defaults.d.mts.map +1 -0
- package/dist/config/defaults.mjs +28 -0
- package/dist/config/defaults.mjs.map +1 -0
- package/dist/config/index.d.mts +15 -0
- package/dist/config/index.d.mts.map +1 -0
- package/dist/config/index.mjs +47 -0
- package/dist/config/index.mjs.map +1 -0
- package/dist/events/index.d.mts +91 -0
- package/dist/events/index.d.mts.map +1 -0
- package/dist/events/index.mjs +110 -0
- package/dist/events/index.mjs.map +1 -0
- package/dist/index.d.mts +29 -0
- package/dist/index.mjs +29 -0
- package/dist/plaintext.d.mts +5 -0
- package/dist/plaintext.d.mts.map +1 -0
- package/dist/plaintext.mjs +15 -0
- package/dist/plaintext.mjs.map +1 -0
- package/dist/plugin.d.mts +17 -0
- package/dist/plugin.d.mts.map +1 -0
- package/dist/plugin.mjs +41 -0
- package/dist/plugin.mjs.map +1 -0
- package/dist/plugins/postcss/mergeMediaQueries.d.mts +18 -0
- package/dist/plugins/postcss/mergeMediaQueries.d.mts.map +1 -0
- package/dist/plugins/postcss/mergeMediaQueries.mjs +22 -0
- package/dist/plugins/postcss/mergeMediaQueries.mjs.map +1 -0
- package/dist/plugins/postcss/pruneVars.d.mts +8 -0
- package/dist/plugins/postcss/pruneVars.d.mts.map +1 -0
- package/dist/plugins/postcss/pruneVars.mjs +49 -0
- package/dist/plugins/postcss/pruneVars.mjs.map +1 -0
- package/dist/plugins/postcss/removeDeclarations.d.mts +12 -0
- package/dist/plugins/postcss/removeDeclarations.d.mts.map +1 -0
- package/dist/plugins/postcss/removeDeclarations.mjs +45 -0
- package/dist/plugins/postcss/removeDeclarations.mjs.map +1 -0
- package/dist/plugins/postcss/tailwindCleanup.d.mts +18 -0
- package/dist/plugins/postcss/tailwindCleanup.d.mts.map +1 -0
- package/dist/plugins/postcss/tailwindCleanup.mjs +35 -0
- package/dist/plugins/postcss/tailwindCleanup.mjs.map +1 -0
- package/dist/render/createRenderer.d.mts +34 -0
- package/dist/render/createRenderer.d.mts.map +1 -0
- package/dist/render/createRenderer.mjs +149 -0
- package/dist/render/createRenderer.mjs.map +1 -0
- package/dist/render/index.d.mts +26 -0
- package/dist/render/index.d.mts.map +1 -0
- package/dist/render/index.mjs +40 -0
- package/dist/render/index.mjs.map +1 -0
- package/dist/serve.d.mts +25 -0
- package/dist/serve.d.mts.map +1 -0
- package/dist/serve.mjs +402 -0
- package/dist/serve.mjs.map +1 -0
- package/dist/server/compatibility.d.mts +6 -0
- package/dist/server/compatibility.d.mts.map +1 -0
- package/dist/server/compatibility.mjs +83 -0
- package/dist/server/compatibility.mjs.map +1 -0
- package/dist/server/linter.d.mts +6 -0
- package/dist/server/linter.d.mts.map +1 -0
- package/dist/server/linter.mjs +200 -0
- package/dist/server/linter.mjs.map +1 -0
- package/dist/server/ui/App.vue +360 -0
- package/dist/server/ui/components/ui/button/Button.vue +31 -0
- package/dist/server/ui/components/ui/button/index.ts +38 -0
- package/dist/server/ui/components/ui/command/Command.vue +87 -0
- package/dist/server/ui/components/ui/command/CommandDialog.vue +31 -0
- package/dist/server/ui/components/ui/command/CommandEmpty.vue +27 -0
- package/dist/server/ui/components/ui/command/CommandGroup.vue +45 -0
- package/dist/server/ui/components/ui/command/CommandInput.vue +39 -0
- package/dist/server/ui/components/ui/command/CommandItem.vue +76 -0
- package/dist/server/ui/components/ui/command/CommandList.vue +25 -0
- package/dist/server/ui/components/ui/command/CommandSeparator.vue +21 -0
- package/dist/server/ui/components/ui/command/CommandShortcut.vue +17 -0
- package/dist/server/ui/components/ui/command/index.ts +25 -0
- package/dist/server/ui/components/ui/dialog/Dialog.vue +19 -0
- package/dist/server/ui/components/ui/dialog/DialogClose.vue +15 -0
- package/dist/server/ui/components/ui/dialog/DialogContent.vue +53 -0
- package/dist/server/ui/components/ui/dialog/DialogDescription.vue +23 -0
- package/dist/server/ui/components/ui/dialog/DialogFooter.vue +27 -0
- package/dist/server/ui/components/ui/dialog/DialogHeader.vue +17 -0
- package/dist/server/ui/components/ui/dialog/DialogOverlay.vue +21 -0
- package/dist/server/ui/components/ui/dialog/DialogScrollContent.vue +59 -0
- package/dist/server/ui/components/ui/dialog/DialogTitle.vue +23 -0
- package/dist/server/ui/components/ui/dialog/DialogTrigger.vue +15 -0
- package/dist/server/ui/components/ui/dialog/index.ts +10 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenu.vue +19 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +39 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuContent.vue +39 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuGroup.vue +15 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuItem.vue +31 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuLabel.vue +23 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +21 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +40 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuSeparator.vue +23 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuShortcut.vue +17 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuSub.vue +18 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuSubContent.vue +27 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +31 -0
- package/dist/server/ui/components/ui/dropdown-menu/DropdownMenuTrigger.vue +17 -0
- package/dist/server/ui/components/ui/dropdown-menu/index.ts +16 -0
- package/dist/server/ui/components/ui/empty/Empty.vue +20 -0
- package/dist/server/ui/components/ui/empty/EmptyContent.vue +20 -0
- package/dist/server/ui/components/ui/empty/EmptyDescription.vue +20 -0
- package/dist/server/ui/components/ui/empty/EmptyHeader.vue +20 -0
- package/dist/server/ui/components/ui/empty/EmptyMedia.vue +21 -0
- package/dist/server/ui/components/ui/empty/EmptyTitle.vue +17 -0
- package/dist/server/ui/components/ui/empty/index.ts +26 -0
- package/dist/server/ui/components/ui/input/Input.vue +33 -0
- package/dist/server/ui/components/ui/input/index.ts +1 -0
- package/dist/server/ui/components/ui/kbd/Kbd.vue +20 -0
- package/dist/server/ui/components/ui/kbd/KbdGroup.vue +17 -0
- package/dist/server/ui/components/ui/kbd/index.ts +2 -0
- package/dist/server/ui/components/ui/resizable/ResizableHandle.vue +30 -0
- package/dist/server/ui/components/ui/resizable/ResizablePanel.vue +21 -0
- package/dist/server/ui/components/ui/resizable/ResizablePanelGroup.vue +25 -0
- package/dist/server/ui/components/ui/resizable/index.ts +3 -0
- package/dist/server/ui/components/ui/scroll-area/ScrollArea.vue +33 -0
- package/dist/server/ui/components/ui/scroll-area/ScrollBar.vue +32 -0
- package/dist/server/ui/components/ui/scroll-area/index.ts +2 -0
- package/dist/server/ui/components/ui/separator/Separator.vue +29 -0
- package/dist/server/ui/components/ui/separator/index.ts +1 -0
- package/dist/server/ui/components/ui/sheet/Sheet.vue +19 -0
- package/dist/server/ui/components/ui/sheet/SheetClose.vue +15 -0
- package/dist/server/ui/components/ui/sheet/SheetContent.vue +62 -0
- package/dist/server/ui/components/ui/sheet/SheetDescription.vue +21 -0
- package/dist/server/ui/components/ui/sheet/SheetFooter.vue +16 -0
- package/dist/server/ui/components/ui/sheet/SheetHeader.vue +15 -0
- package/dist/server/ui/components/ui/sheet/SheetOverlay.vue +21 -0
- package/dist/server/ui/components/ui/sheet/SheetTitle.vue +21 -0
- package/dist/server/ui/components/ui/sheet/SheetTrigger.vue +15 -0
- package/dist/server/ui/components/ui/sheet/index.ts +8 -0
- package/dist/server/ui/components/ui/sidebar/Sidebar.vue +96 -0
- package/dist/server/ui/components/ui/sidebar/SidebarContent.vue +18 -0
- package/dist/server/ui/components/ui/sidebar/SidebarFooter.vue +18 -0
- package/dist/server/ui/components/ui/sidebar/SidebarGroup.vue +18 -0
- package/dist/server/ui/components/ui/sidebar/SidebarGroupAction.vue +27 -0
- package/dist/server/ui/components/ui/sidebar/SidebarGroupContent.vue +18 -0
- package/dist/server/ui/components/ui/sidebar/SidebarGroupLabel.vue +25 -0
- package/dist/server/ui/components/ui/sidebar/SidebarHeader.vue +18 -0
- package/dist/server/ui/components/ui/sidebar/SidebarInput.vue +31 -0
- package/dist/server/ui/components/ui/sidebar/SidebarInset.vue +21 -0
- package/dist/server/ui/components/ui/sidebar/SidebarMenu.vue +18 -0
- package/dist/server/ui/components/ui/sidebar/SidebarMenuAction.vue +35 -0
- package/dist/server/ui/components/ui/sidebar/SidebarMenuBadge.vue +26 -0
- package/dist/server/ui/components/ui/sidebar/SidebarMenuButton.vue +48 -0
- package/dist/server/ui/components/ui/sidebar/SidebarMenuButtonChild.vue +36 -0
- package/dist/server/ui/components/ui/sidebar/SidebarMenuItem.vue +18 -0
- package/dist/server/ui/components/ui/sidebar/SidebarMenuSkeleton.vue +35 -0
- package/dist/server/ui/components/ui/sidebar/SidebarMenuSub.vue +22 -0
- package/dist/server/ui/components/ui/sidebar/SidebarMenuSubButton.vue +36 -0
- package/dist/server/ui/components/ui/sidebar/SidebarMenuSubItem.vue +18 -0
- package/dist/server/ui/components/ui/sidebar/SidebarProvider.vue +82 -0
- package/dist/server/ui/components/ui/sidebar/SidebarRail.vue +33 -0
- package/dist/server/ui/components/ui/sidebar/SidebarSeparator.vue +19 -0
- package/dist/server/ui/components/ui/sidebar/SidebarTrigger.vue +28 -0
- package/dist/server/ui/components/ui/sidebar/index.ts +60 -0
- package/dist/server/ui/components/ui/sidebar/utils.ts +19 -0
- package/dist/server/ui/components/ui/skeleton/Skeleton.vue +17 -0
- package/dist/server/ui/components/ui/skeleton/index.ts +1 -0
- package/dist/server/ui/components/ui/tabs/Tabs.vue +24 -0
- package/dist/server/ui/components/ui/tabs/TabsContent.vue +21 -0
- package/dist/server/ui/components/ui/tabs/TabsList.vue +24 -0
- package/dist/server/ui/components/ui/tabs/TabsTrigger.vue +26 -0
- package/dist/server/ui/components/ui/tabs/index.ts +4 -0
- package/dist/server/ui/components/ui/toggle/Toggle.vue +35 -0
- package/dist/server/ui/components/ui/toggle/index.ts +28 -0
- package/dist/server/ui/components/ui/toggle-group/ToggleGroup.vue +49 -0
- package/dist/server/ui/components/ui/toggle-group/ToggleGroupItem.vue +46 -0
- package/dist/server/ui/components/ui/toggle-group/index.ts +2 -0
- package/dist/server/ui/components/ui/tooltip/Tooltip.vue +19 -0
- package/dist/server/ui/components/ui/tooltip/TooltipContent.vue +34 -0
- package/dist/server/ui/components/ui/tooltip/TooltipProvider.vue +14 -0
- package/dist/server/ui/components/ui/tooltip/TooltipTrigger.vue +15 -0
- package/dist/server/ui/components/ui/tooltip/index.ts +4 -0
- package/dist/server/ui/favicon.svg +1 -0
- package/dist/server/ui/index.html +13 -0
- package/dist/server/ui/lib/utils.ts +7 -0
- package/dist/server/ui/logo-gradient.svg +1 -0
- package/dist/server/ui/logo.svg +1 -0
- package/dist/server/ui/main.css +129 -0
- package/dist/server/ui/main.ts +16 -0
- package/dist/server/ui/mark-gradient.svg +1 -0
- package/dist/server/ui/mark.svg +1 -0
- package/dist/server/ui/pages/Home.vue +39 -0
- package/dist/server/ui/pages/Preview.vue +609 -0
- package/dist/server/ui/stripes.svg +174 -0
- package/dist/transformers/addAttributes.d.mts +32 -0
- package/dist/transformers/addAttributes.d.mts.map +1 -0
- package/dist/transformers/addAttributes.mjs +101 -0
- package/dist/transformers/addAttributes.mjs.map +1 -0
- package/dist/transformers/attributeToStyle.d.mts +25 -0
- package/dist/transformers/attributeToStyle.d.mts.map +1 -0
- package/dist/transformers/attributeToStyle.mjs +80 -0
- package/dist/transformers/attributeToStyle.mjs.map +1 -0
- package/dist/transformers/base.d.mts +8 -0
- package/dist/transformers/base.d.mts.map +1 -0
- package/dist/transformers/base.mjs +160 -0
- package/dist/transformers/base.mjs.map +1 -0
- package/dist/transformers/entities.d.mts +8 -0
- package/dist/transformers/entities.d.mts.map +1 -0
- package/dist/transformers/entities.mjs +38 -0
- package/dist/transformers/entities.mjs.map +1 -0
- package/dist/transformers/format.d.mts +15 -0
- package/dist/transformers/format.d.mts.map +1 -0
- package/dist/transformers/format.mjs +26 -0
- package/dist/transformers/format.mjs.map +1 -0
- package/dist/transformers/index.d.mts +35 -0
- package/dist/transformers/index.d.mts.map +1 -0
- package/dist/transformers/index.mjs +73 -0
- package/dist/transformers/index.mjs.map +1 -0
- package/dist/transformers/inlineCSS.d.mts +30 -0
- package/dist/transformers/inlineCSS.d.mts.map +1 -0
- package/dist/transformers/inlineCSS.mjs +79 -0
- package/dist/transformers/inlineCSS.mjs.map +1 -0
- package/dist/transformers/inlineLink.d.mts +14 -0
- package/dist/transformers/inlineLink.d.mts.map +1 -0
- package/dist/transformers/inlineLink.mjs +76 -0
- package/dist/transformers/inlineLink.mjs.map +1 -0
- package/dist/transformers/minify.d.mts +17 -0
- package/dist/transformers/minify.d.mts.map +1 -0
- package/dist/transformers/minify.mjs +24 -0
- package/dist/transformers/minify.mjs.map +1 -0
- package/dist/transformers/purgeCSS.d.mts +23 -0
- package/dist/transformers/purgeCSS.d.mts.map +1 -0
- package/dist/transformers/purgeCSS.mjs +66 -0
- package/dist/transformers/purgeCSS.mjs.map +1 -0
- package/dist/transformers/removeAttributes.d.mts +31 -0
- package/dist/transformers/removeAttributes.d.mts.map +1 -0
- package/dist/transformers/removeAttributes.mjs +63 -0
- package/dist/transformers/removeAttributes.mjs.map +1 -0
- package/dist/transformers/replaceStrings.d.mts +16 -0
- package/dist/transformers/replaceStrings.d.mts.map +1 -0
- package/dist/transformers/replaceStrings.mjs +19 -0
- package/dist/transformers/replaceStrings.mjs.map +1 -0
- package/dist/transformers/safeClassNames.d.mts +22 -0
- package/dist/transformers/safeClassNames.d.mts.map +1 -0
- package/dist/transformers/safeClassNames.mjs +103 -0
- package/dist/transformers/safeClassNames.mjs.map +1 -0
- package/dist/transformers/shorthandCSS.d.mts +24 -0
- package/dist/transformers/shorthandCSS.d.mts.map +1 -0
- package/dist/transformers/shorthandCSS.mjs +48 -0
- package/dist/transformers/shorthandCSS.mjs.map +1 -0
- package/dist/transformers/tailwindcss.d.mts +20 -0
- package/dist/transformers/tailwindcss.d.mts.map +1 -0
- package/dist/transformers/tailwindcss.mjs +136 -0
- package/dist/transformers/tailwindcss.mjs.map +1 -0
- package/dist/transformers/urlQuery.d.mts +24 -0
- package/dist/transformers/urlQuery.d.mts.map +1 -0
- package/dist/transformers/urlQuery.mjs +65 -0
- package/dist/transformers/urlQuery.mjs.map +1 -0
- package/dist/types/config.d.mts +129 -0
- package/dist/types/config.d.mts.map +1 -0
- package/dist/types/config.mjs +1 -0
- package/dist/types/index.d.mts +2 -0
- package/dist/types/index.mjs +1 -0
- package/dist/utils/ast/index.d.mts +4 -0
- package/dist/utils/ast/index.mjs +5 -0
- package/dist/utils/ast/parser.d.mts +7 -0
- package/dist/utils/ast/parser.d.mts.map +1 -0
- package/dist/utils/ast/parser.mjs +15 -0
- package/dist/utils/ast/parser.mjs.map +1 -0
- package/dist/utils/ast/serializer.d.mts +7 -0
- package/dist/utils/ast/serializer.d.mts.map +1 -0
- package/dist/utils/ast/serializer.mjs +13 -0
- package/dist/utils/ast/serializer.mjs.map +1 -0
- package/dist/utils/ast/walker.d.mts +7 -0
- package/dist/utils/ast/walker.d.mts.map +1 -0
- package/dist/utils/ast/walker.mjs +12 -0
- package/dist/utils/ast/walker.mjs.map +1 -0
- package/dist/utils/url.d.mts +8 -0
- package/dist/utils/url.d.mts.map +1 -0
- package/dist/utils/url.mjs +32 -0
- package/dist/utils/url.mjs.map +1 -0
- package/node_modules/@clack/core/CHANGELOG.md +257 -0
- package/node_modules/@clack/core/LICENSE +9 -0
- package/node_modules/@clack/core/README.md +22 -0
- package/node_modules/@clack/core/dist/index.cjs +15 -0
- package/node_modules/@clack/core/dist/index.cjs.map +1 -0
- package/node_modules/@clack/core/dist/index.d.cts +211 -0
- package/node_modules/@clack/core/dist/index.d.mts +211 -0
- package/node_modules/@clack/core/dist/index.d.ts +211 -0
- package/node_modules/@clack/core/dist/index.mjs +15 -0
- package/node_modules/@clack/core/dist/index.mjs.map +1 -0
- package/node_modules/@clack/core/package.json +62 -0
- package/node_modules/@clack/prompts/CHANGELOG.md +412 -0
- package/node_modules/@clack/prompts/LICENSE +9 -0
- package/node_modules/@clack/prompts/README.md +207 -0
- package/node_modules/@clack/prompts/dist/index.cjs +87 -0
- package/node_modules/@clack/prompts/dist/index.cjs.map +1 -0
- package/node_modules/@clack/prompts/dist/index.d.cts +165 -0
- package/node_modules/@clack/prompts/dist/index.d.mts +165 -0
- package/node_modules/@clack/prompts/dist/index.d.ts +165 -0
- package/node_modules/@clack/prompts/dist/index.mjs +87 -0
- package/node_modules/@clack/prompts/dist/index.mjs.map +1 -0
- package/node_modules/@clack/prompts/package.json +61 -0
- package/node_modules/@maizzle/cli/LICENSE +21 -0
- package/node_modules/@maizzle/cli/README.md +58 -0
- package/node_modules/@maizzle/cli/dist/commands/make/component.d.mts +4 -0
- package/node_modules/@maizzle/cli/dist/commands/make/component.mjs +31 -0
- package/node_modules/@maizzle/cli/dist/commands/make/config.d.mts +4 -0
- package/node_modules/@maizzle/cli/dist/commands/make/config.mjs +21 -0
- package/node_modules/@maizzle/cli/dist/commands/make/layout.d.mts +4 -0
- package/node_modules/@maizzle/cli/dist/commands/make/layout.mjs +31 -0
- package/node_modules/@maizzle/cli/dist/commands/make/scaffold.d.mts +5 -0
- package/node_modules/@maizzle/cli/dist/commands/make/scaffold.mjs +28 -0
- package/node_modules/@maizzle/cli/dist/commands/make/stubs/component.vue +9 -0
- package/node_modules/@maizzle/cli/dist/commands/make/stubs/config.ts +9 -0
- package/node_modules/@maizzle/cli/dist/commands/make/stubs/layout.vue +39 -0
- package/node_modules/@maizzle/cli/dist/commands/make/stubs/template.vue +8 -0
- package/node_modules/@maizzle/cli/dist/commands/make/template.d.mts +4 -0
- package/node_modules/@maizzle/cli/dist/commands/make/template.mjs +31 -0
- package/node_modules/@maizzle/cli/dist/index.d.mts +8 -0
- package/node_modules/@maizzle/cli/dist/index.mjs +42 -0
- package/node_modules/@maizzle/cli/package.json +59 -0
- package/node_modules/citty/LICENSE +36 -0
- package/node_modules/citty/README.md +134 -0
- package/node_modules/citty/dist/index.cjs +475 -0
- package/node_modules/citty/dist/index.d.cts +80 -0
- package/node_modules/citty/dist/index.d.mts +80 -0
- package/node_modules/citty/dist/index.d.ts +80 -0
- package/node_modules/citty/dist/index.mjs +463 -0
- package/node_modules/citty/package.json +49 -0
- package/node_modules/commander/LICENSE +22 -0
- package/node_modules/commander/Readme.md +1149 -0
- package/node_modules/commander/esm.mjs +16 -0
- package/node_modules/commander/index.js +24 -0
- package/node_modules/commander/lib/argument.js +149 -0
- package/node_modules/commander/lib/command.js +2662 -0
- package/node_modules/commander/lib/error.js +39 -0
- package/node_modules/commander/lib/help.js +709 -0
- package/node_modules/commander/lib/option.js +367 -0
- package/node_modules/commander/lib/suggestSimilar.js +101 -0
- package/node_modules/commander/package-support.json +16 -0
- package/node_modules/commander/package.json +82 -0
- package/node_modules/commander/typings/esm.d.mts +3 -0
- package/node_modules/commander/typings/index.d.ts +1045 -0
- package/node_modules/consola/LICENSE +47 -0
- package/node_modules/consola/README.md +352 -0
- package/node_modules/consola/basic.d.ts +1 -0
- package/node_modules/consola/browser.d.ts +1 -0
- package/node_modules/consola/core.d.ts +1 -0
- package/node_modules/consola/dist/basic.cjs +32 -0
- package/node_modules/consola/dist/basic.d.cts +23 -0
- package/node_modules/consola/dist/basic.d.mts +21 -0
- package/node_modules/consola/dist/basic.d.ts +23 -0
- package/node_modules/consola/dist/basic.mjs +24 -0
- package/node_modules/consola/dist/browser.cjs +84 -0
- package/node_modules/consola/dist/browser.d.cts +23 -0
- package/node_modules/consola/dist/browser.d.mts +21 -0
- package/node_modules/consola/dist/browser.d.ts +23 -0
- package/node_modules/consola/dist/browser.mjs +76 -0
- package/node_modules/consola/dist/chunks/prompt.cjs +288 -0
- package/node_modules/consola/dist/chunks/prompt.mjs +280 -0
- package/node_modules/consola/dist/core.cjs +517 -0
- package/node_modules/consola/dist/core.d.cts +459 -0
- package/node_modules/consola/dist/core.d.mts +459 -0
- package/node_modules/consola/dist/core.d.ts +459 -0
- package/node_modules/consola/dist/core.mjs +512 -0
- package/node_modules/consola/dist/index.cjs +663 -0
- package/node_modules/consola/dist/index.d.cts +24 -0
- package/node_modules/consola/dist/index.d.mts +22 -0
- package/node_modules/consola/dist/index.d.ts +24 -0
- package/node_modules/consola/dist/index.mjs +651 -0
- package/node_modules/consola/dist/shared/consola.DCGIlDNP.cjs +75 -0
- package/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
- package/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
- package/node_modules/consola/dist/shared/consola.DwRq1yyg.cjs +312 -0
- package/node_modules/consola/dist/utils.cjs +64 -0
- package/node_modules/consola/dist/utils.d.cts +286 -0
- package/node_modules/consola/dist/utils.d.mts +286 -0
- package/node_modules/consola/dist/utils.d.ts +286 -0
- package/node_modules/consola/dist/utils.mjs +54 -0
- package/node_modules/consola/lib/index.cjs +10 -0
- package/node_modules/consola/package.json +136 -0
- package/node_modules/consola/utils.d.ts +1 -0
- package/node_modules/create-maizzle/README.md +86 -0
- package/node_modules/create-maizzle/bin/create-maizzle.mjs +4 -0
- package/node_modules/create-maizzle/node_modules/@clack/core/CHANGELOG.md +340 -0
- package/node_modules/create-maizzle/node_modules/@clack/core/LICENSE +9 -0
- package/node_modules/create-maizzle/node_modules/@clack/core/README.md +22 -0
- package/node_modules/create-maizzle/node_modules/@clack/core/dist/index.d.mts +349 -0
- package/node_modules/create-maizzle/node_modules/@clack/core/dist/index.mjs +11 -0
- package/node_modules/create-maizzle/node_modules/@clack/core/dist/index.mjs.map +1 -0
- package/node_modules/create-maizzle/node_modules/@clack/core/package.json +60 -0
- package/node_modules/create-maizzle/node_modules/@clack/prompts/CHANGELOG.md +576 -0
- package/node_modules/create-maizzle/node_modules/@clack/prompts/LICENSE +9 -0
- package/node_modules/create-maizzle/node_modules/@clack/prompts/README.md +270 -0
- package/node_modules/create-maizzle/node_modules/@clack/prompts/dist/index.d.mts +391 -0
- package/node_modules/create-maizzle/node_modules/@clack/prompts/dist/index.mjs +137 -0
- package/node_modules/create-maizzle/node_modules/@clack/prompts/dist/index.mjs.map +1 -0
- package/node_modules/create-maizzle/node_modules/@clack/prompts/package.json +65 -0
- package/node_modules/create-maizzle/package.json +47 -0
- package/node_modules/create-maizzle/src/index.js +242 -0
- package/node_modules/defu/LICENSE +21 -0
- package/node_modules/defu/README.md +171 -0
- package/node_modules/defu/dist/defu.cjs +77 -0
- package/node_modules/defu/dist/defu.d.cts +31 -0
- package/node_modules/defu/dist/defu.d.mts +29 -0
- package/node_modules/defu/dist/defu.d.ts +31 -0
- package/node_modules/defu/dist/defu.mjs +69 -0
- package/node_modules/defu/lib/defu.cjs +10 -0
- package/node_modules/defu/lib/defu.d.cts +12 -0
- package/node_modules/defu/package.json +48 -0
- package/node_modules/fast-string-truncated-width/dist/index.d.ts +4 -0
- package/node_modules/fast-string-truncated-width/dist/index.js +171 -0
- package/node_modules/fast-string-truncated-width/dist/types.d.ts +22 -0
- package/node_modules/fast-string-truncated-width/dist/types.js +2 -0
- package/node_modules/fast-string-truncated-width/dist/utils.d.ts +4 -0
- package/node_modules/fast-string-truncated-width/dist/utils.js +15 -0
- package/node_modules/fast-string-truncated-width/license +21 -0
- package/node_modules/fast-string-truncated-width/package.json +35 -0
- package/node_modules/fast-string-truncated-width/readme.md +60 -0
- package/node_modules/fast-string-width/dist/index.d.ts +4 -0
- package/node_modules/fast-string-width/dist/index.js +14 -0
- package/node_modules/fast-string-width/license +21 -0
- package/node_modules/fast-string-width/package.json +34 -0
- package/node_modules/fast-string-width/readme.md +45 -0
- package/node_modules/fast-wrap-ansi/LICENSE +23 -0
- package/node_modules/fast-wrap-ansi/README.md +26 -0
- package/node_modules/fast-wrap-ansi/lib/main.d.ts +6 -0
- package/node_modules/fast-wrap-ansi/lib/main.js +216 -0
- package/node_modules/fast-wrap-ansi/lib/main.js.map +1 -0
- package/node_modules/fast-wrap-ansi/package.json +51 -0
- package/node_modules/giget/LICENSE +184 -0
- package/node_modules/giget/README.md +248 -0
- package/node_modules/giget/dist/cli.mjs +112 -0
- package/node_modules/giget/dist/index.d.mts +49 -0
- package/node_modules/giget/dist/index.mjs +22 -0
- package/node_modules/giget/dist/shared/giget.OCaTp9b-.mjs +468 -0
- package/node_modules/giget/package.json +62 -0
- package/node_modules/node-fetch-native/LICENSE +114 -0
- package/node_modules/node-fetch-native/README.md +225 -0
- package/node_modules/node-fetch-native/dist/chunks/multipart-parser.cjs +2 -0
- package/node_modules/node-fetch-native/dist/chunks/multipart-parser.mjs +2 -0
- package/node_modules/node-fetch-native/dist/index.cjs +1 -0
- package/node_modules/node-fetch-native/dist/index.mjs +1 -0
- package/node_modules/node-fetch-native/dist/native.cjs +1 -0
- package/node_modules/node-fetch-native/dist/native.mjs +1 -0
- package/node_modules/node-fetch-native/dist/node.cjs +19 -0
- package/node_modules/node-fetch-native/dist/node.mjs +19 -0
- package/node_modules/node-fetch-native/dist/polyfill.cjs +1 -0
- package/node_modules/node-fetch-native/dist/polyfill.mjs +1 -0
- package/node_modules/node-fetch-native/dist/proxy-stub.cjs +1 -0
- package/node_modules/node-fetch-native/dist/proxy-stub.mjs +1 -0
- package/node_modules/node-fetch-native/dist/proxy.cjs +58 -0
- package/node_modules/node-fetch-native/dist/shared/node-fetch-native.DfbY2q-x.mjs +1 -0
- package/node_modules/node-fetch-native/dist/shared/node-fetch-native.DhEqb06g.cjs +1 -0
- package/node_modules/node-fetch-native/index.d.ts +1 -0
- package/node_modules/node-fetch-native/lib/empty.cjs +0 -0
- package/node_modules/node-fetch-native/lib/empty.mjs +0 -0
- package/node_modules/node-fetch-native/lib/index.cjs +11 -0
- package/node_modules/node-fetch-native/lib/index.d.cts +10 -0
- package/node_modules/node-fetch-native/lib/index.d.mts +10 -0
- package/node_modules/node-fetch-native/lib/index.d.ts +10 -0
- package/node_modules/node-fetch-native/lib/native.cjs +11 -0
- package/node_modules/node-fetch-native/lib/polyfill.d.cts +1 -0
- package/node_modules/node-fetch-native/lib/polyfill.d.mts +1 -0
- package/node_modules/node-fetch-native/lib/polyfill.d.ts +1 -0
- package/node_modules/node-fetch-native/lib/proxy.d.ts +32 -0
- package/node_modules/node-fetch-native/node.d.ts +1 -0
- package/node_modules/node-fetch-native/package.json +138 -0
- package/node_modules/node-fetch-native/polyfill.d.ts +1 -0
- package/node_modules/node-fetch-native/proxy.d.ts +1 -0
- package/node_modules/nypm/LICENSE +21 -0
- package/node_modules/nypm/README.md +152 -0
- package/node_modules/nypm/dist/cli.d.mts +1 -0
- package/node_modules/nypm/dist/cli.mjs +460 -0
- package/node_modules/nypm/dist/index.d.mts +209 -0
- package/node_modules/nypm/dist/index.mjs +423 -0
- package/node_modules/nypm/node_modules/citty/LICENSE +21 -0
- package/node_modules/nypm/node_modules/citty/README.md +231 -0
- package/node_modules/nypm/node_modules/citty/dist/THIRD-PARTY-LICENSES.md +33 -0
- package/node_modules/nypm/node_modules/citty/dist/_chunks/libs/scule.mjs +70 -0
- package/node_modules/nypm/node_modules/citty/dist/index.d.mts +112 -0
- package/node_modules/nypm/node_modules/citty/dist/index.mjs +425 -0
- package/node_modules/nypm/node_modules/citty/package.json +42 -0
- package/node_modules/nypm/package.json +54 -0
- package/node_modules/pathe/LICENSE +70 -0
- package/node_modules/pathe/README.md +73 -0
- package/node_modules/pathe/dist/index.cjs +39 -0
- package/node_modules/pathe/dist/index.d.cts +47 -0
- package/node_modules/pathe/dist/index.d.mts +47 -0
- package/node_modules/pathe/dist/index.d.ts +47 -0
- package/node_modules/pathe/dist/index.mjs +19 -0
- package/node_modules/pathe/dist/shared/pathe.BSlhyZSM.cjs +266 -0
- package/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs +249 -0
- package/node_modules/pathe/dist/utils.cjs +82 -0
- package/node_modules/pathe/dist/utils.d.cts +32 -0
- package/node_modules/pathe/dist/utils.d.mts +32 -0
- package/node_modules/pathe/dist/utils.d.ts +32 -0
- package/node_modules/pathe/dist/utils.mjs +77 -0
- package/node_modules/pathe/package.json +61 -0
- package/node_modules/pathe/utils.d.ts +1 -0
- package/node_modules/picocolors/LICENSE +15 -0
- package/node_modules/picocolors/README.md +21 -0
- package/node_modules/picocolors/package.json +25 -0
- package/node_modules/picocolors/picocolors.browser.js +4 -0
- package/node_modules/picocolors/picocolors.d.ts +5 -0
- package/node_modules/picocolors/picocolors.js +75 -0
- package/node_modules/picocolors/types.d.ts +51 -0
- package/node_modules/sisteransi/license +21 -0
- package/node_modules/sisteransi/package.json +34 -0
- package/node_modules/sisteransi/readme.md +113 -0
- package/node_modules/sisteransi/src/index.js +58 -0
- package/node_modules/sisteransi/src/sisteransi.d.ts +35 -0
- package/node_modules/tinyexec/LICENSE +21 -0
- package/node_modules/tinyexec/README.md +269 -0
- package/node_modules/tinyexec/dist/LICENSES.txt +83 -0
- package/node_modules/tinyexec/dist/main.d.mts +71 -0
- package/node_modules/tinyexec/dist/main.mjs +642 -0
- package/node_modules/tinyexec/package.json +62 -0
- package/package.json +74 -74
- package/CHANGELOG.md +0 -764
- package/bin/maizzle +0 -5
- package/src/commands/build.js +0 -348
- package/src/commands/serve.js +0 -3
- package/src/generators/plaintext.js +0 -222
- package/src/generators/render.js +0 -129
- package/src/index.js +0 -49
- package/src/posthtml/defaultComponentsConfig.js +0 -19
- package/src/posthtml/defaultConfig.js +0 -14
- package/src/posthtml/index.js +0 -102
- package/src/posthtml/plugins/combineMediaQueries.js +0 -42
- package/src/posthtml/plugins/envAttributes.js +0 -32
- package/src/posthtml/plugins/envTags.js +0 -33
- package/src/posthtml/plugins/expandLinkTag.js +0 -59
- package/src/posthtml/plugins/postcss/compileCss.js +0 -129
- package/src/posthtml/plugins/removeRawStyleAttributes.js +0 -30
- package/src/server/client.js +0 -182
- package/src/server/index.js +0 -464
- package/src/server/routes/hmr.js +0 -26
- package/src/server/routes/index.js +0 -77
- package/src/server/views/404.html +0 -59
- package/src/server/views/error.html +0 -83
- package/src/server/views/index.html +0 -172
- package/src/server/websockets.js +0 -27
- package/src/transformers/addAttributes.js +0 -29
- package/src/transformers/attributeToStyle.js +0 -90
- package/src/transformers/baseUrl.js +0 -154
- package/src/transformers/core.js +0 -32
- package/src/transformers/filters/defaultFilters.js +0 -146
- package/src/transformers/filters/index.js +0 -18
- package/src/transformers/index.js +0 -259
- package/src/transformers/inline.js +0 -306
- package/src/transformers/markdown.js +0 -26
- package/src/transformers/minify.js +0 -27
- package/src/transformers/posthtmlMso.js +0 -14
- package/src/transformers/prettify.js +0 -29
- package/src/transformers/preventWidows.js +0 -37
- package/src/transformers/purge.js +0 -56
- package/src/transformers/removeAttributes.js +0 -55
- package/src/transformers/replaceStrings.js +0 -37
- package/src/transformers/safeClassNames.js +0 -29
- package/src/transformers/shorthandCss.js +0 -20
- package/src/transformers/sixHex.js +0 -30
- package/src/transformers/template.js +0 -26
- package/src/transformers/urlParameters.js +0 -20
- package/src/transformers/useAttributeSizes.js +0 -63
- package/src/utils/getConfigByFilePath.js +0 -143
- package/src/utils/node.js +0 -68
- package/src/utils/string.js +0 -186
- package/types/build.d.ts +0 -166
- package/types/config.d.ts +0 -638
- package/types/css/combineMediaQueries.d.ts +0 -90
- package/types/css/inline.d.ts +0 -218
- package/types/css/purge.d.ts +0 -125
- package/types/events.d.ts +0 -153
- package/types/index.d.ts +0 -232
- package/types/markdown.d.ts +0 -33
- package/types/minify.d.ts +0 -138
- package/types/plaintext.d.ts +0 -56
- package/types/posthtml.d.ts +0 -162
- package/types/render.d.ts +0 -13
- package/types/urlParameters.d.ts +0 -40
- package/types/widowWords.d.ts +0 -38
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import{getColumns as X,getRows as ke,AutocompletePrompt as ve,settings as I,ConfirmPrompt as Le,wrapTextWithPrefix as N,DatePrompt as De,isCancel as We,GroupMultiSelectPrompt as Fe,MultiSelectPrompt as He,PasswordPrompt as Ue,block as Ke,SelectPrompt as qe,SelectKeyPrompt as Je,TextPrompt as Ye}from"@clack/core";export{isCancel,settings,updateSettings}from"@clack/core";import{styleText as t,stripVTControlCharacters as ne}from"node:util";import P from"node:process";import{wrapAnsi as q}from"fast-wrap-ansi";import B from"fast-string-width";import{existsSync as Xe,lstatSync as we,readdirSync as ze}from"node:fs";import{dirname as be,join as Qe}from"node:path";import{cursor as Se,erase as Ce}from"sisteransi";function Ze(){return P.platform!=="win32"?P.env.TERM!=="linux":!!P.env.CI||!!P.env.WT_SESSION||!!P.env.TERMINUS_SUBLIME||P.env.ConEmuTask==="{cmd::Cmder}"||P.env.TERM_PROGRAM==="Terminus-Sublime"||P.env.TERM_PROGRAM==="vscode"||P.env.TERM==="xterm-256color"||P.env.TERM==="alacritty"||P.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}const ee=Ze(),ae=()=>process.env.CI==="true",Te=e=>e.isTTY===!0,w=(e,i)=>ee?e:i,_e=w("\u25C6","*"),oe=w("\u25A0","x"),ue=w("\u25B2","x"),F=w("\u25C7","o"),le=w("\u250C","T"),d=w("\u2502","|"),E=w("\u2514","\u2014"),Ie=w("\u2510","T"),Ee=w("\u2518","\u2014"),z=w("\u25CF",">"),H=w("\u25CB"," "),te=w("\u25FB","[\u2022]"),U=w("\u25FC","[+]"),J=w("\u25FB","[ ]"),xe=w("\u25AA","\u2022"),se=w("\u2500","-"),ce=w("\u256E","+"),Ge=w("\u251C","+"),$e=w("\u256F","+"),de=w("\u2570","+"),Oe=w("\u256D","+"),he=w("\u25CF","\u2022"),pe=w("\u25C6","*"),me=w("\u25B2","!"),ge=w("\u25A0","x"),V=e=>{switch(e){case"initial":case"active":return t("cyan",_e);case"cancel":return t("red",oe);case"error":return t("yellow",ue);case"submit":return t("green",F)}},ye=e=>{switch(e){case"initial":case"active":return t("cyan",d);case"cancel":return t("red",d);case"error":return t("yellow",d);case"submit":return t("green",d)}},et=(e,i,s,r,u)=>{let n=i,o=0;for(let c=s;c<r;c++){const a=e[c];if(n=n-a.length,o++,n<=u)break}return{lineCount:n,removals:o}},Y=({cursor:e,options:i,style:s,output:r=process.stdout,maxItems:u=Number.POSITIVE_INFINITY,columnPadding:n=0,rowPadding:o=4})=>{const c=X(r)-n,a=ke(r),l=t("dim","..."),$=Math.max(a-o,0),y=Math.max(Math.min(u,$),5);let p=0;e>=y-3&&(p=Math.max(Math.min(e-y+3,i.length-y),0));let m=y<i.length&&p>0,g=y<i.length&&p+y<i.length;const S=Math.min(p+y,i.length),h=[];let f=0;m&&f++,g&&f++;const v=p+(m?1:0),T=S-(g?1:0);for(let b=v;b<T;b++){const x=q(s(i[b],b===e),c,{hard:!0,trim:!1}).split(`
|
|
2
|
+
`);h.push(x),f+=x.length}if(f>$){let b=0,x=0,G=f;const M=e-v,R=(j,D)=>et(h,G,j,D,$);m?({lineCount:G,removals:b}=R(0,M),G>$&&({lineCount:G,removals:x}=R(M+1,h.length))):({lineCount:G,removals:x}=R(M+1,h.length),G>$&&({lineCount:G,removals:b}=R(0,M))),b>0&&(m=!0,h.splice(0,b)),x>0&&(g=!0,h.splice(h.length-x,x))}const C=[];m&&C.push(l);for(const b of h)for(const x of b)C.push(x);return g&&C.push(l),C};function Me(e){return e.label??String(e.value??"")}function Re(e,i){if(!e)return!0;const s=(i.label??String(i.value??"")).toLowerCase(),r=(i.hint??"").toLowerCase(),u=String(i.value).toLowerCase(),n=e.toLowerCase();return s.includes(n)||r.includes(n)||u.includes(n)}function tt(e,i){const s=[];for(const r of i)e.includes(r.value)&&s.push(r);return s}const Ae=e=>new ve({options:e.options,initialValue:e.initialValue?[e.initialValue]:void 0,initialUserInput:e.initialUserInput,placeholder:e.placeholder,filter:e.filter??((i,s)=>Re(i,s)),signal:e.signal,input:e.input,output:e.output,validate:e.validate,render(){const i=e.withGuide??I.withGuide,s=i?[`${t("gray",d)}`,`${V(this.state)} ${e.message}`]:[`${V(this.state)} ${e.message}`],r=this.userInput,u=this.options,n=e.placeholder,o=r===""&&n!==void 0,c=(a,l)=>{const $=Me(a),y=a.hint&&a.value===this.focusedValue?t("dim",` (${a.hint})`):"";switch(l){case"active":return`${t("green",z)} ${$}${y}`;case"inactive":return`${t("dim",H)} ${t("dim",$)}`;case"disabled":return`${t("gray",H)} ${t(["strikethrough","gray"],$)}`}};switch(this.state){case"submit":{const a=tt(this.selectedValues,u),l=a.length>0?` ${t("dim",a.map(Me).join(", "))}`:"",$=i?t("gray",d):"";return`${s.join(`
|
|
3
|
+
`)}
|
|
4
|
+
${$}${l}`}case"cancel":{const a=r?` ${t(["strikethrough","dim"],r)}`:"",l=i?t("gray",d):"";return`${s.join(`
|
|
5
|
+
`)}
|
|
6
|
+
${l}${a}`}default:{const a=this.state==="error"?"yellow":"cyan",l=i?`${t(a,d)} `:"",$=i?t(a,E):"";let y="";if(this.isNavigating||o){const v=o?n:r;y=v!==""?` ${t("dim",v)}`:""}else y=` ${this.userInputWithCursor}`;const p=this.filteredOptions.length!==u.length?t("dim",` (${this.filteredOptions.length} match${this.filteredOptions.length===1?"":"es"})`):"",m=this.filteredOptions.length===0&&r?[`${l}${t("yellow","No matches found")}`]:[],g=this.state==="error"?[`${l}${t("yellow",this.error)}`]:[];i&&s.push(`${l.trimEnd()}`),s.push(`${l}${t("dim","Search:")}${y}${p}`,...m,...g);const S=[`${t("dim","\u2191/\u2193")} to select`,`${t("dim","Enter:")} confirm`,`${t("dim","Type:")} to search`],h=[`${l}${S.join(" \u2022 ")}`,$],f=this.filteredOptions.length===0?[]:Y({cursor:this.cursor,options:this.filteredOptions,columnPadding:i?3:0,rowPadding:s.length+h.length,style:(v,T)=>c(v,v.disabled?"disabled":T?"active":"inactive"),maxItems:e.maxItems,output:e.output});return[...s,...f.map(v=>`${l}${v}`),...h].join(`
|
|
7
|
+
`)}}}}).prompt(),st=e=>{const i=(r,u,n,o)=>{const c=n.includes(r.value),a=r.label??String(r.value??""),l=r.hint&&o!==void 0&&r.value===o?t("dim",` (${r.hint})`):"",$=c?t("green",U):t("dim",J);return r.disabled?`${t("gray",J)} ${t(["strikethrough","gray"],a)}`:u?`${$} ${a}${l}`:`${$} ${t("dim",a)}`},s=new ve({options:e.options,multiple:!0,placeholder:e.placeholder,filter:e.filter??((r,u)=>Re(r,u)),validate:()=>{if(e.required&&s.selectedValues.length===0)return"Please select at least one item"},initialValue:e.initialValues,signal:e.signal,input:e.input,output:e.output,render(){const r=e.withGuide??I.withGuide,u=`${r?`${t("gray",d)}
|
|
8
|
+
`:""}${V(this.state)} ${e.message}
|
|
9
|
+
`,n=this.userInput,o=e.placeholder,c=n===""&&o!==void 0,a=this.isNavigating||c?t("dim",c?o:n):this.userInputWithCursor,l=this.options,$=this.filteredOptions.length!==l.length?t("dim",` (${this.filteredOptions.length} match${this.filteredOptions.length===1?"":"es"})`):"";switch(this.state){case"submit":return`${u}${r?`${t("gray",d)} `:""}${t("dim",`${this.selectedValues.length} items selected`)}`;case"cancel":return`${u}${r?`${t("gray",d)} `:""}${t(["strikethrough","dim"],n)}`;default:{const y=this.state==="error"?"yellow":"cyan",p=r?`${t(y,d)} `:"",m=r?t(y,E):"",g=[`${t("dim","\u2191/\u2193")} to navigate`,`${t("dim",this.isNavigating?"Space/Tab:":"Tab:")} select`,`${t("dim","Enter:")} confirm`,`${t("dim","Type:")} to search`],S=this.filteredOptions.length===0&&n?[`${p}${t("yellow","No matches found")}`]:[],h=this.state==="error"?[`${p}${t("yellow",this.error)}`]:[],f=[...`${u}${r?t(y,d):""}`.split(`
|
|
10
|
+
`),`${p}${t("dim","Search:")} ${a}${$}`,...S,...h],v=[`${p}${g.join(" \u2022 ")}`,m],T=Y({cursor:this.cursor,options:this.filteredOptions,style:(C,b)=>i(C,b,this.selectedValues,this.focusedValue),maxItems:e.maxItems,output:e.output,rowPadding:f.length+v.length});return[...f,...T.map(C=>`${p}${C}`),...v].join(`
|
|
11
|
+
`)}}}});return s.prompt()},rt=[Oe,ce,de,$e],it=[le,Ie,E,Ee];function Pe(e,i,s,r){let u=s,n=s;return r==="center"?u=Math.floor((i-e)/2):r==="right"&&(u=i-e-s),n=i-u-e,[u,n]}const nt=e=>e,at=(e="",i="",s)=>{const r=s?.output??process.stdout,u=X(r),n=2,o=s?.titlePadding??1,c=s?.contentPadding??2,a=s?.width===void 0||s.width==="auto"?1:Math.min(1,s.width),l=s?.withGuide??I.withGuide?`${d} `:"",$=s?.formatBorder??nt,y=(s?.rounded?rt:it).map($),p=$(se),m=$(d),g=B(l),S=B(i),h=u-g;let f=Math.floor(u*a)-g;if(s?.width==="auto"){const R=e.split(`
|
|
12
|
+
`);let j=S+o*2;for(const ie of R){const W=B(ie)+c*2;W>j&&(j=W)}const D=j+n;D<f&&(f=D)}f%2!==0&&(f<h?f++:f--);const v=f-n,T=v-o*2,C=S>T?`${i.slice(0,T-3)}...`:i,[b,x]=Pe(B(C),v,o,s?.titleAlign),G=q(e,v-c*2,{hard:!0,trim:!1});r.write(`${l}${y[0]}${p.repeat(b)}${C}${p.repeat(x)}${y[1]}
|
|
13
|
+
`);const M=G.split(`
|
|
14
|
+
`);for(const R of M){const[j,D]=Pe(B(R),v,c,s?.contentAlign);r.write(`${l}${m}${" ".repeat(j)}${R}${" ".repeat(D)}${m}
|
|
15
|
+
`)}r.write(`${l}${y[2]}${p.repeat(v)}${y[3]}
|
|
16
|
+
`)},ot=e=>{const i=e.active??"Yes",s=e.inactive??"No";return new Le({active:i,inactive:s,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){const r=e.withGuide??I.withGuide,u=`${V(this.state)} `,n=r?`${t("gray",d)} `:"",o=N(e.output,e.message,n,u),c=`${r?`${t("gray",d)}
|
|
17
|
+
`:""}${o}
|
|
18
|
+
`,a=this.value?i:s;switch(this.state){case"submit":{const l=r?`${t("gray",d)} `:"";return`${c}${l}${t("dim",a)}`}case"cancel":{const l=r?`${t("gray",d)} `:"";return`${c}${l}${t(["strikethrough","dim"],a)}${r?`
|
|
19
|
+
${t("gray",d)}`:""}`}default:{const l=r?`${t("cyan",d)} `:"",$=r?t("cyan",E):"";return`${c}${l}${this.value?`${t("green",z)} ${i}`:`${t("dim",H)} ${t("dim",i)}`}${e.vertical?r?`
|
|
20
|
+
${t("cyan",d)} `:`
|
|
21
|
+
`:` ${t("dim","/")} `}${this.value?`${t("dim",H)} ${t("dim",s)}`:`${t("green",z)} ${s}`}
|
|
22
|
+
${$}
|
|
23
|
+
`}}}}).prompt()},ut=e=>{const i=e.validate;return new De({...e,validate(s){if(s===void 0)return e.defaultValue!==void 0?void 0:i?i(s):I.date.messages.required;const r=u=>u.toISOString().slice(0,10);if(e.minDate&&r(s)<r(e.minDate))return I.date.messages.afterMin(e.minDate);if(e.maxDate&&r(s)>r(e.maxDate))return I.date.messages.beforeMax(e.maxDate);if(i)return i(s)},render(){const s=(e?.withGuide??I.withGuide)!==!1,r=`${`${s?`${t("gray",d)}
|
|
24
|
+
`:""}${V(this.state)} `}${e.message}
|
|
25
|
+
`,u=this.state!=="initial"?this.state:"active",n=lt(this,u),o=this.value instanceof Date?this.formattedValue:"";switch(this.state){case"error":{const c=this.error?` ${t("yellow",this.error)}`:"",a=s?`${t("yellow",d)} `:"",l=s?t("yellow",E):"";return`${r.trim()}
|
|
26
|
+
${a}${n}
|
|
27
|
+
${l}${c}
|
|
28
|
+
`}case"submit":{const c=o?` ${t("dim",o)}`:"",a=s?t("gray",d):"";return`${r}${a}${c}`}case"cancel":{const c=o?` ${t(["strikethrough","dim"],o)}`:"",a=s?t("gray",d):"";return`${r}${a}${c}${o.trim()?`
|
|
29
|
+
${a}`:""}`}default:{const c=s?`${t("cyan",d)} `:"",a=s?t("cyan",E):"",l=s?`${t("cyan",d)} `:"",$=this.inlineError?`
|
|
30
|
+
${l}${t("yellow",this.inlineError)}`:"";return`${r}${c}${n}${$}
|
|
31
|
+
${a}
|
|
32
|
+
`}}}}).prompt()};function lt(e,i){const s=e.segmentValues,r=e.segmentCursor;if(i==="submit"||i==="cancel")return e.formattedValue;const u=t("gray",e.separator);return e.segments.map((n,o)=>{const c=o===r.segmentIndex&&!["submit","cancel"].includes(i),a=$t[n.type];return ct(s[n.type],{isActive:c,label:a})}).join(u)}function ct(e,i){const s=!e||e.replace(/_/g,"")==="";return i.isActive?t("inverse",s?i.label:e.replace(/_/g," ")):s?t("dim",i.label):e.replace(/_/g,t("dim"," "))}const $t={year:"yyyy",month:"mm",day:"dd"},dt=async(e,i)=>{const s={},r=Object.keys(e);for(const u of r){const n=e[u],o=await n({results:s})?.catch(c=>{throw c});if(typeof i?.onCancel=="function"&&We(o)){s[u]="canceled",i.onCancel({results:s});continue}s[u]=o}return s},ht=e=>{const{selectableGroups:i=!0,groupSpacing:s=0}=e,r=(n,o,c=[])=>{const a=n.label??String(n.value),l=typeof n.group=="string",$=l&&(c[c.indexOf(n)+1]??{group:!0}),y=l&&$&&$.group===!0,p=l?i?`${y?E:d} `:" ":"";let m="";if(s>0&&!l){const S=`
|
|
33
|
+
${t("cyan",d)}`;m=`${S.repeat(s-1)}${S} `}if(o==="active")return`${m}${t("dim",p)}${t("cyan",te)} ${a}${n.hint?` ${t("dim",`(${n.hint})`)}`:""}`;if(o==="group-active")return`${m}${p}${t("cyan",te)} ${t("dim",a)}`;if(o==="group-active-selected")return`${m}${p}${t("green",U)} ${t("dim",a)}`;if(o==="selected"){const S=l||i?t("green",U):"";return`${m}${t("dim",p)}${S} ${t("dim",a)}${n.hint?` ${t("dim",`(${n.hint})`)}`:""}`}if(o==="cancelled")return`${t(["strikethrough","dim"],a)}`;if(o==="active-selected")return`${m}${t("dim",p)}${t("green",U)} ${a}${n.hint?` ${t("dim",`(${n.hint})`)}`:""}`;if(o==="submitted")return`${t("dim",a)}`;const g=l||i?t("dim",J):"";return`${m}${t("dim",p)}${g} ${t("dim",a)}`},u=e.required??!0;return new Fe({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValues:e.initialValues,required:u,cursorAt:e.cursorAt,selectableGroups:i,validate(n){if(u&&(n===void 0||n.length===0))return`Please select at least one option.
|
|
34
|
+
${t("reset",t("dim",`Press ${t(["gray","bgWhite","inverse"]," space ")} to select, ${t("gray",t(["bgWhite","inverse"]," enter "))} to submit`))}`},render(){const n=e.withGuide??I.withGuide,o=`${n?`${t("gray",d)}
|
|
35
|
+
`:""}${V(this.state)} ${e.message}
|
|
36
|
+
`,c=this.value??[];switch(this.state){case"submit":{const a=this.options.filter(({value:$})=>c.includes($)).map($=>r($,"submitted")),l=a.length===0?"":` ${a.join(t("dim",", "))}`;return`${o}${n?t("gray",d):""}${l}`}case"cancel":{const a=this.options.filter(({value:l})=>c.includes(l)).map(l=>r(l,"cancelled")).join(t("dim",", "));return`${o}${n?`${t("gray",d)} `:""}${a.trim()?`${a}${n?`
|
|
37
|
+
${t("gray",d)}`:""}`:""}`}case"error":{const a=this.error.split(`
|
|
38
|
+
`).map((l,$)=>$===0?`${n?`${t("yellow",E)} `:""}${t("yellow",l)}`:` ${l}`).join(`
|
|
39
|
+
`);return`${o}${n?`${t("yellow",d)} `:""}${this.options.map((l,$,y)=>{const p=c.includes(l.value)||l.group===!0&&this.isGroupSelected(`${l.value}`),m=$===this.cursor;return!m&&typeof l.group=="string"&&this.options[this.cursor].value===l.group?r(l,p?"group-active-selected":"group-active",y):m&&p?r(l,"active-selected",y):p?r(l,"selected",y):r(l,m?"active":"inactive",y)}).join(`
|
|
40
|
+
${n?`${t("yellow",d)} `:""}`)}
|
|
41
|
+
${a}
|
|
42
|
+
`}default:{const a=this.options.map(($,y,p)=>{const m=c.includes($.value)||$.group===!0&&this.isGroupSelected(`${$.value}`),g=y===this.cursor,S=!g&&typeof $.group=="string"&&this.options[this.cursor].value===$.group;let h="";return S?h=r($,m?"group-active-selected":"group-active",p):g&&m?h=r($,"active-selected",p):m?h=r($,"selected",p):h=r($,g?"active":"inactive",p),`${y!==0&&!h.startsWith(`
|
|
43
|
+
`)?" ":""}${h}`}).join(`
|
|
44
|
+
${n?t("cyan",d):""}`),l=a.startsWith(`
|
|
45
|
+
`)?"":" ";return`${o}${n?t("cyan",d):""}${l}${a}
|
|
46
|
+
${n?t("cyan",E):""}
|
|
47
|
+
`}}}}).prompt()},O={message:(e=[],{symbol:i=t("gray",d),secondarySymbol:s=t("gray",d),output:r=process.stdout,spacing:u=1,withGuide:n}={})=>{const o=[],c=n??I.withGuide,a=c?s:"",l=c?`${i} `:"",$=c?`${s} `:"";for(let p=0;p<u;p++)o.push(a);const y=Array.isArray(e)?e:e.split(`
|
|
48
|
+
`);if(y.length>0){const[p,...m]=y;p.length>0?o.push(`${l}${p}`):o.push(c?i:"");for(const g of m)g.length>0?o.push(`${$}${g}`):o.push(c?s:"")}r.write(`${o.join(`
|
|
49
|
+
`)}
|
|
50
|
+
`)},info:(e,i)=>{O.message(e,{...i,symbol:t("blue",he)})},success:(e,i)=>{O.message(e,{...i,symbol:t("green",pe)})},step:(e,i)=>{O.message(e,{...i,symbol:t("green",F)})},warn:(e,i)=>{O.message(e,{...i,symbol:t("yellow",me)})},warning:(e,i)=>{O.warn(e,i)},error:(e,i)=>{O.message(e,{...i,symbol:t("red",ge)})}},pt=(e="",i)=>{const s=i?.output??process.stdout,r=i?.withGuide??I.withGuide?`${t("gray",E)} `:"";s.write(`${r}${t("red",e)}
|
|
51
|
+
|
|
52
|
+
`)},mt=(e="",i)=>{const s=i?.output??process.stdout,r=i?.withGuide??I.withGuide?`${t("gray",le)} `:"";s.write(`${r}${e}
|
|
53
|
+
`)},gt=(e="",i)=>{const s=i?.output??process.stdout,r=i?.withGuide??I.withGuide?`${t("gray",d)}
|
|
54
|
+
${t("gray",E)} `:"";s.write(`${r}${e}
|
|
55
|
+
|
|
56
|
+
`)},Q=(e,i)=>e.split(`
|
|
57
|
+
`).map(s=>i(s)).join(`
|
|
58
|
+
`),yt=e=>{const i=(r,u)=>{const n=r.label??String(r.value);return u==="disabled"?`${t("gray",J)} ${Q(n,o=>t(["strikethrough","gray"],o))}${r.hint?` ${t("dim",`(${r.hint??"disabled"})`)}`:""}`:u==="active"?`${t("cyan",te)} ${n}${r.hint?` ${t("dim",`(${r.hint})`)}`:""}`:u==="selected"?`${t("green",U)} ${Q(n,o=>t("dim",o))}${r.hint?` ${t("dim",`(${r.hint})`)}`:""}`:u==="cancelled"?`${Q(n,o=>t(["strikethrough","dim"],o))}`:u==="active-selected"?`${t("green",U)} ${n}${r.hint?` ${t("dim",`(${r.hint})`)}`:""}`:u==="submitted"?`${Q(n,o=>t("dim",o))}`:`${t("dim",J)} ${Q(n,o=>t("dim",o))}`},s=e.required??!0;return new He({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValues:e.initialValues,required:s,cursorAt:e.cursorAt,validate(r){if(s&&(r===void 0||r.length===0))return`Please select at least one option.
|
|
59
|
+
${t("reset",t("dim",`Press ${t(["gray","bgWhite","inverse"]," space ")} to select, ${t("gray",t("bgWhite",t("inverse"," enter ")))} to submit`))}`},render(){const r=e.withGuide??I.withGuide,u=N(e.output,e.message,r?`${ye(this.state)} `:"",`${V(this.state)} `),n=`${r?`${t("gray",d)}
|
|
60
|
+
`:""}${u}
|
|
61
|
+
`,o=this.value??[],c=(a,l)=>{if(a.disabled)return i(a,"disabled");const $=o.includes(a.value);return l&&$?i(a,"active-selected"):$?i(a,"selected"):i(a,l?"active":"inactive")};switch(this.state){case"submit":{const a=this.options.filter(({value:$})=>o.includes($)).map($=>i($,"submitted")).join(t("dim",", "))||t("dim","none"),l=N(e.output,a,r?`${t("gray",d)} `:"");return`${n}${l}`}case"cancel":{const a=this.options.filter(({value:$})=>o.includes($)).map($=>i($,"cancelled")).join(t("dim",", "));if(a.trim()==="")return`${n}${t("gray",d)}`;const l=N(e.output,a,r?`${t("gray",d)} `:"");return`${n}${l}${r?`
|
|
62
|
+
${t("gray",d)}`:""}`}case"error":{const a=r?`${t("yellow",d)} `:"",l=this.error.split(`
|
|
63
|
+
`).map((p,m)=>m===0?`${r?`${t("yellow",E)} `:""}${t("yellow",p)}`:` ${p}`).join(`
|
|
64
|
+
`),$=n.split(`
|
|
65
|
+
`).length,y=l.split(`
|
|
66
|
+
`).length+1;return`${n}${a}${Y({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:a.length,rowPadding:$+y,style:c}).join(`
|
|
67
|
+
${a}`)}
|
|
68
|
+
${l}
|
|
69
|
+
`}default:{const a=r?`${t("cyan",d)} `:"",l=n.split(`
|
|
70
|
+
`).length,$=r?2:1;return`${n}${a}${Y({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:a.length,rowPadding:l+$,style:c}).join(`
|
|
71
|
+
${a}`)}
|
|
72
|
+
${r?t("cyan",E):""}
|
|
73
|
+
`}}}}).prompt()},ft=e=>t("dim",e),vt=(e,i,s)=>{const r={hard:!0,trim:!1},u=q(e,i,r).split(`
|
|
74
|
+
`),n=u.reduce((a,l)=>Math.max(B(l),a),0),o=u.map(s).reduce((a,l)=>Math.max(B(l),a),0),c=i-(o-n);return q(e,c,r)},wt=(e="",i="",s)=>{const r=s?.output??P.stdout,u=s?.withGuide??I.withGuide,n=s?.format??ft,o=["",...vt(e,X(r)-6,n).split(`
|
|
75
|
+
`).map(n),""],c=B(i),a=Math.max(o.reduce((p,m)=>{const g=B(m);return g>p?g:p},0),c)+2,l=o.map(p=>`${t("gray",d)} ${p}${" ".repeat(a-B(p))}${t("gray",d)}`).join(`
|
|
76
|
+
`),$=u?`${t("gray",d)}
|
|
77
|
+
`:"",y=u?Ge:de;r.write(`${$}${t("green",F)} ${t("reset",i)} ${t("gray",se.repeat(Math.max(a-c-1,1))+ce)}
|
|
78
|
+
${l}
|
|
79
|
+
${t("gray",y+se.repeat(a+2)+$e)}
|
|
80
|
+
`)},bt=e=>new Ue({validate:e.validate,mask:e.mask??xe,signal:e.signal,input:e.input,output:e.output,render(){const i=e.withGuide??I.withGuide,s=`${i?`${t("gray",d)}
|
|
81
|
+
`:""}${V(this.state)} ${e.message}
|
|
82
|
+
`,r=this.userInputWithCursor,u=this.masked;switch(this.state){case"error":{const n=i?`${t("yellow",d)} `:"",o=i?`${t("yellow",E)} `:"",c=u??"";return e.clearOnError&&this.clear(),`${s.trim()}
|
|
83
|
+
${n}${c}
|
|
84
|
+
${o}${t("yellow",this.error)}
|
|
85
|
+
`}case"submit":{const n=i?`${t("gray",d)} `:"",o=u?t("dim",u):"";return`${s}${n}${o}`}case"cancel":{const n=i?`${t("gray",d)} `:"",o=u?t(["strikethrough","dim"],u):"";return`${s}${n}${o}${u&&i?`
|
|
86
|
+
${t("gray",d)}`:""}`}default:{const n=i?`${t("cyan",d)} `:"",o=i?t("cyan",E):"";return`${s}${n}${r}
|
|
87
|
+
${o}
|
|
88
|
+
`}}}}).prompt(),St=e=>{const i=e.validate;return Ae({...e,initialUserInput:e.initialValue??e.root??process.cwd(),maxItems:5,validate(s){if(!Array.isArray(s)){if(!s)return"Please select a path";if(i)return i(s)}},options(){const s=this.userInput;if(s==="")return[];try{let r;Xe(s)?we(s).isDirectory()&&(!e.directory||s.endsWith("/"))?r=s:r=be(s):r=be(s);const u=s.length>1&&s.endsWith("/")?s.slice(0,-1):s;return ze(r).map(n=>{const o=Qe(r,n),c=we(o);return{name:n,path:o,isDirectory:c.isDirectory()}}).filter(({path:n,isDirectory:o})=>n.startsWith(u)&&(o||!e.directory)).map(n=>({value:n.path}))}catch{return[]}}})},Ct=e=>t("magenta",e),fe=({indicator:e="dots",onCancel:i,output:s=process.stdout,cancelMessage:r,errorMessage:u,frames:n=ee?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],delay:o=ee?80:120,signal:c,...a}={})=>{const l=ae();let $,y,p=!1,m=!1,g="",S,h=performance.now();const f=X(s),v=a?.styleFrame??Ct,T=_=>{const A=_>1?u??I.messages.error:r??I.messages.cancel;m=_===1,p&&(W(A,_),m&&typeof i=="function"&&i())},C=()=>T(2),b=()=>T(1),x=()=>{process.on("uncaughtExceptionMonitor",C),process.on("unhandledRejection",C),process.on("SIGINT",b),process.on("SIGTERM",b),process.on("exit",T),c&&c.addEventListener("abort",b)},G=()=>{process.removeListener("uncaughtExceptionMonitor",C),process.removeListener("unhandledRejection",C),process.removeListener("SIGINT",b),process.removeListener("SIGTERM",b),process.removeListener("exit",T),c&&c.removeEventListener("abort",b)},M=()=>{if(S===void 0)return;l&&s.write(`
|
|
89
|
+
`);const _=q(S,f,{hard:!0,trim:!1}).split(`
|
|
90
|
+
`);_.length>1&&s.write(Se.up(_.length-1)),s.write(Se.to(0)),s.write(Ce.down())},R=_=>_.replace(/\.+$/,""),j=_=>{const A=(performance.now()-_)/1e3,k=Math.floor(A/60),L=Math.floor(A%60);return k>0?`[${k}m ${L}s]`:`[${L}s]`},D=a.withGuide??I.withGuide,ie=(_="")=>{p=!0,$=Ke({output:s}),g=R(_),h=performance.now(),D&&s.write(`${t("gray",d)}
|
|
91
|
+
`);let A=0,k=0;x(),y=setInterval(()=>{if(l&&g===S)return;M(),S=g;const L=v(n[A]);let Z;if(l)Z=`${L} ${g}...`;else if(e==="timer")Z=`${L} ${g} ${j(h)}`;else{const Be=".".repeat(Math.floor(k)).slice(0,3);Z=`${L} ${g}${Be}`}const Ne=q(Z,f,{hard:!0,trim:!1});s.write(Ne),A=A+1<n.length?A+1:0,k=k<4?k+.125:0},o)},W=(_="",A=0,k=!1)=>{if(!p)return;p=!1,clearInterval(y),M();const L=A===0?t("green",F):A===1?t("red",oe):t("red",ue);g=_??g,k||(e==="timer"?s.write(`${L} ${g} ${j(h)}
|
|
92
|
+
`):s.write(`${L} ${g}
|
|
93
|
+
`)),G(),$()};return{start:ie,stop:(_="")=>W(_,0),message:(_="")=>{g=R(_??g)},cancel:(_="")=>W(_,1),error:(_="")=>W(_,2),clear:()=>W("",0,!0),get isCancelled(){return m}}},Ve={light:w("\u2500","-"),heavy:w("\u2501","="),block:w("\u2588","#")};function Tt({style:e="heavy",max:i=100,size:s=40,...r}={}){const u=fe(r);let n=0,o="";const c=Math.max(1,i),a=Math.max(1,s),l=m=>{switch(m){case"initial":case"active":return g=>t("magenta",g);case"error":case"cancel":return g=>t("red",g);case"submit":return g=>t("green",g);default:return g=>t("magenta",g)}},$=(m,g)=>{const S=Math.floor(n/c*a);return`${l(m)(Ve[e].repeat(S))}${t("dim",Ve[e].repeat(a-S))} ${g}`},y=(m="")=>{o=m,u.start($("initial",m))},p=(m=1,g)=>{n=Math.min(c,m+n),u.message($("active",g??o)),o=g??o};return{start:y,stop:u.stop,cancel:u.cancel,error:u.error,clear:u.clear,advance:p,isCancelled:u.isCancelled,message:m=>p(0,m)}}const re=(e,i)=>e.includes(`
|
|
94
|
+
`)?e.split(`
|
|
95
|
+
`).map(s=>i(s)).join(`
|
|
96
|
+
`):i(e),_t=e=>{const i=(s,r)=>{const u=s.label??String(s.value);switch(r){case"disabled":return`${t("gray",H)} ${re(u,n=>t("gray",n))}${s.hint?` ${t("dim",`(${s.hint??"disabled"})`)}`:""}`;case"selected":return`${re(u,n=>t("dim",n))}`;case"active":return`${t("green",z)} ${u}${s.hint?` ${t("dim",`(${s.hint})`)}`:""}`;case"cancelled":return`${re(u,n=>t(["strikethrough","dim"],n))}`;default:return`${t("dim",H)} ${re(u,n=>t("dim",n))}`}};return new qe({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){const s=e.withGuide??I.withGuide,r=`${V(this.state)} `,u=`${ye(this.state)} `,n=N(e.output,e.message,u,r),o=`${s?`${t("gray",d)}
|
|
97
|
+
`:""}${n}
|
|
98
|
+
`;switch(this.state){case"submit":{const c=s?`${t("gray",d)} `:"",a=N(e.output,i(this.options[this.cursor],"selected"),c);return`${o}${a}`}case"cancel":{const c=s?`${t("gray",d)} `:"",a=N(e.output,i(this.options[this.cursor],"cancelled"),c);return`${o}${a}${s?`
|
|
99
|
+
${t("gray",d)}`:""}`}default:{const c=s?`${t("cyan",d)} `:"",a=s?t("cyan",E):"",l=o.split(`
|
|
100
|
+
`).length,$=s?2:1;return`${o}${c}${Y({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:c.length,rowPadding:l+$,style:(y,p)=>i(y,y.disabled?"disabled":p?"active":"inactive")}).join(`
|
|
101
|
+
${c}`)}
|
|
102
|
+
${a}
|
|
103
|
+
`}}}}).prompt()},It=e=>{const i=(s,r="inactive")=>{const u=s.label??String(s.value);return r==="selected"?`${t("dim",u)}`:r==="cancelled"?`${t(["strikethrough","dim"],u)}`:r==="active"?`${t(["bgCyan","gray"],` ${s.value} `)} ${u}${s.hint?` ${t("dim",`(${s.hint})`)}`:""}`:`${t(["gray","bgWhite","inverse"],` ${s.value} `)} ${u}${s.hint?` ${t("dim",`(${s.hint})`)}`:""}`};return new Je({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,caseSensitive:e.caseSensitive,render(){const s=e.withGuide??I.withGuide,r=`${s?`${t("gray",d)}
|
|
104
|
+
`:""}${V(this.state)} ${e.message}
|
|
105
|
+
`;switch(this.state){case"submit":{const u=s?`${t("gray",d)} `:"",n=this.options.find(c=>c.value===this.value)??e.options[0],o=N(e.output,i(n,"selected"),u);return`${r}${o}`}case"cancel":{const u=s?`${t("gray",d)} `:"",n=N(e.output,i(this.options[0],"cancelled"),u);return`${r}${n}${s?`
|
|
106
|
+
${t("gray",d)}`:""}`}default:{const u=s?`${t("cyan",d)} `:"",n=s?t("cyan",E):"",o=this.options.map((c,a)=>N(e.output,i(c,a===this.cursor?"active":"inactive"),u)).join(`
|
|
107
|
+
`);return`${r}${o}
|
|
108
|
+
${n}
|
|
109
|
+
`}}}}).prompt()},je=`${t("gray",d)} `,K={message:async(e,{symbol:i=t("gray",d)}={})=>{process.stdout.write(`${t("gray",d)}
|
|
110
|
+
${i} `);let s=3;for await(let r of e){r=r.replace(/\n/g,`
|
|
111
|
+
${je}`),r.includes(`
|
|
112
|
+
`)&&(s=3+ne(r.slice(r.lastIndexOf(`
|
|
113
|
+
`))).length);const u=ne(r).length;s+u<process.stdout.columns?(s+=u,process.stdout.write(r)):(process.stdout.write(`
|
|
114
|
+
${je}${r.trimStart()}`),s=3+ne(r.trimStart()).length)}process.stdout.write(`
|
|
115
|
+
`)},info:e=>K.message(e,{symbol:t("blue",he)}),success:e=>K.message(e,{symbol:t("green",pe)}),step:e=>K.message(e,{symbol:t("green",F)}),warn:e=>K.message(e,{symbol:t("yellow",me)}),warning:e=>K.warn(e),error:e=>K.message(e,{symbol:t("red",ge)})},Et=async(e,i)=>{for(const s of e){if(s.enabled===!1)continue;const r=fe(i);r.start(s.title);const u=await s.task(r.message);r.stop(u||s.title)}},xt=e=>e.replace(/\x1b\[(?:\d+;)*\d*[ABCDEFGHfJKSTsu]|\x1b\[(s|u)/g,""),Gt=e=>{const i=e.output??process.stdout,s=X(i),r=t("gray",d),u=e.spacing??1,n=3,o=e.retainLog===!0,c=!ae()&&Te(i);i.write(`${r}
|
|
116
|
+
`),i.write(`${t("green",F)} ${e.title}
|
|
117
|
+
`);for(let h=0;h<u;h++)i.write(`${r}
|
|
118
|
+
`);const a=[{value:"",full:""}];let l=!1;const $=h=>{if(a.length===0)return;let f=0;h&&(f+=u+2);for(const v of a){const{value:T,result:C}=v;let b=C?.message??T;if(b.length===0)continue;C===void 0&&v.header!==void 0&&v.header!==""&&(b+=`
|
|
119
|
+
${v.header}`);const x=b.split(`
|
|
120
|
+
`).reduce((G,M)=>M===""?G+1:G+Math.ceil((M.length+n)/s),0);f+=x}f>0&&(f+=1,i.write(Ce.lines(f)))},y=(h,f,v)=>{const T=v?`${h.full}
|
|
121
|
+
${h.value}`:h.value;h.header!==void 0&&h.header!==""&&O.message(h.header.split(`
|
|
122
|
+
`).map(C=>t("bold",C)),{output:i,secondarySymbol:r,symbol:r,spacing:0}),O.message(T.split(`
|
|
123
|
+
`).map(C=>t("dim",C)),{output:i,secondarySymbol:r,symbol:r,spacing:f??u})},p=()=>{for(const h of a){const{header:f,value:v,full:T}=h;(f===void 0||f.length===0)&&v.length===0||y(h,void 0,o===!0&&T.length>0)}},m=(h,f,v)=>{if($(!1),(v?.raw!==!0||!l)&&h.value!==""&&(h.value+=`
|
|
124
|
+
`),h.value+=xt(f),l=v?.raw===!0,e.limit!==void 0){const T=h.value.split(`
|
|
125
|
+
`),C=T.length-e.limit;if(C>0){const b=T.splice(0,C);o&&(h.full+=(h.full===""?"":`
|
|
126
|
+
`)+b.join(`
|
|
127
|
+
`))}h.value=T.join(`
|
|
128
|
+
`)}c&&g()},g=()=>{for(const h of a)h.result?h.result.status==="error"?O.error(h.result.message,{output:i,secondarySymbol:r,spacing:0}):O.success(h.result.message,{output:i,secondarySymbol:r,spacing:0}):h.value!==""&&y(h,0)},S=(h,f)=>{$(!1),h.result=f,c&&g()};return{message(h,f){m(a[0],h,f)},group(h){const f={header:h,value:"",full:""};return a.push(f),{message(v,T){m(f,v,T)},error(v){S(f,{status:"error",message:v})},success(v){S(f,{status:"success",message:v})}}},error(h,f){$(!0),O.error(h,{output:i,secondarySymbol:r,spacing:1}),f?.showLog!==!1&&p(),a.splice(1,a.length-1),a[0].value="",a[0].full=""},success(h,f){$(!0),O.success(h,{output:i,secondarySymbol:r,spacing:1}),f?.showLog===!0&&p(),a.splice(1,a.length-1),a[0].value="",a[0].full=""}}},Ot=e=>new Ye({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){const i=e?.withGuide??I.withGuide,s=`${`${i?`${t("gray",d)}
|
|
129
|
+
`:""}${V(this.state)} `}${e.message}
|
|
130
|
+
`,r=e.placeholder?t("inverse",e.placeholder[0])+t("dim",e.placeholder.slice(1)):t(["inverse","hidden"],"_"),u=this.userInput?this.userInputWithCursor:r,n=this.value??"";switch(this.state){case"error":{const o=this.error?` ${t("yellow",this.error)}`:"",c=i?`${t("yellow",d)} `:"",a=i?t("yellow",E):"";return`${s.trim()}
|
|
131
|
+
${c}${u}
|
|
132
|
+
${a}${o}
|
|
133
|
+
`}case"submit":{const o=n?` ${t("dim",n)}`:"",c=i?t("gray",d):"";return`${s}${c}${o}`}case"cancel":{const o=n?` ${t(["strikethrough","dim"],n)}`:"",c=i?t("gray",d):"";return`${s}${c}${o}${n.trim()?`
|
|
134
|
+
${c}`:""}`}default:{const o=i?`${t("cyan",d)} `:"",c=i?t("cyan",E):"";return`${s}${o}${u}
|
|
135
|
+
${c}
|
|
136
|
+
`}}}}).prompt();export{d as S_BAR,E as S_BAR_END,Ee as S_BAR_END_RIGHT,se as S_BAR_H,le as S_BAR_START,Ie as S_BAR_START_RIGHT,te as S_CHECKBOX_ACTIVE,J as S_CHECKBOX_INACTIVE,U as S_CHECKBOX_SELECTED,Ge as S_CONNECT_LEFT,de as S_CORNER_BOTTOM_LEFT,$e as S_CORNER_BOTTOM_RIGHT,Oe as S_CORNER_TOP_LEFT,ce as S_CORNER_TOP_RIGHT,ge as S_ERROR,he as S_INFO,xe as S_PASSWORD_MASK,z as S_RADIO_ACTIVE,H as S_RADIO_INACTIVE,_e as S_STEP_ACTIVE,oe as S_STEP_CANCEL,ue as S_STEP_ERROR,F as S_STEP_SUBMIT,pe as S_SUCCESS,me as S_WARN,Ae as autocomplete,st as autocompleteMultiselect,at as box,pt as cancel,ot as confirm,ut as date,dt as group,ht as groupMultiselect,mt as intro,ae as isCI,Te as isTTY,Y as limitOptions,O as log,yt as multiselect,wt as note,gt as outro,bt as password,St as path,Tt as progress,_t as select,It as selectKey,fe as spinner,K as stream,V as symbol,ye as symbolBar,Gt as taskLog,Et as tasks,Ot as text,ee as unicode,w as unicodeOr};
|
|
137
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +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]}
|