@shell-shock/preset-script 0.2.1 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +1 -1
  2. package/dist/components/args-parser-logic.d.cts +7 -7
  3. package/dist/components/args-parser-logic.d.mts +7 -7
  4. package/dist/components/args-parser-logic.d.mts.map +1 -1
  5. package/dist/components/bin-entry.cjs +0 -1
  6. package/dist/components/bin-entry.cjs.map +1 -1
  7. package/dist/components/bin-entry.d.cts.map +1 -1
  8. package/dist/components/bin-entry.d.mts.map +1 -1
  9. package/dist/components/bin-entry.mjs +0 -1
  10. package/dist/components/bin-entry.mjs.map +1 -1
  11. package/dist/components/command-entry.d.cts +4 -4
  12. package/dist/components/command-entry.d.mts +4 -4
  13. package/dist/components/command-router.cjs +2 -2
  14. package/dist/components/command-router.cjs.map +1 -1
  15. package/dist/components/command-router.mjs +2 -2
  16. package/dist/components/command-router.mjs.map +1 -1
  17. package/dist/components/console-builtin.cjs +246 -34
  18. package/dist/components/console-builtin.cjs.map +1 -1
  19. package/dist/components/console-builtin.d.cts +12 -2
  20. package/dist/components/console-builtin.d.cts.map +1 -1
  21. package/dist/components/console-builtin.d.mts +12 -2
  22. package/dist/components/console-builtin.d.mts.map +1 -1
  23. package/dist/components/console-builtin.mjs +247 -36
  24. package/dist/components/console-builtin.mjs.map +1 -1
  25. package/dist/components/help.cjs +4 -4
  26. package/dist/components/help.cjs.map +1 -1
  27. package/dist/components/help.d.mts +5 -5
  28. package/dist/components/help.mjs +4 -4
  29. package/dist/components/help.mjs.map +1 -1
  30. package/dist/components/index.cjs +1 -0
  31. package/dist/components/index.d.cts +2 -2
  32. package/dist/components/index.d.mts +2 -2
  33. package/dist/components/index.mjs +2 -2
  34. package/dist/components/utils-builtin.cjs +18 -16
  35. package/dist/components/utils-builtin.cjs.map +1 -1
  36. package/dist/components/utils-builtin.d.cts.map +1 -1
  37. package/dist/components/utils-builtin.d.mts +7 -7
  38. package/dist/components/utils-builtin.d.mts.map +1 -1
  39. package/dist/components/utils-builtin.mjs +18 -16
  40. package/dist/components/utils-builtin.mjs.map +1 -1
  41. package/dist/components/virtual-command-entry.d.mts +3 -3
  42. package/dist/components/virtual-command-entry.d.mts.map +1 -1
  43. package/dist/helpers/ansi-utils.cjs +74 -10
  44. package/dist/helpers/ansi-utils.cjs.map +1 -1
  45. package/dist/helpers/ansi-utils.mjs +74 -10
  46. package/dist/helpers/ansi-utils.mjs.map +1 -1
  47. package/dist/helpers/get-default-options.cjs +20 -0
  48. package/dist/helpers/get-default-options.cjs.map +1 -1
  49. package/dist/helpers/get-default-options.mjs +20 -0
  50. package/dist/helpers/get-default-options.mjs.map +1 -1
  51. package/dist/index.cjs +10 -8
  52. package/dist/index.cjs.map +1 -1
  53. package/dist/index.d.cts.map +1 -1
  54. package/dist/index.d.mts.map +1 -1
  55. package/dist/index.mjs +11 -9
  56. package/dist/index.mjs.map +1 -1
  57. package/dist/types/plugin.d.mts.map +1 -1
  58. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"console-builtin.mjs","names":["code","For","Show","ElseClause","FunctionDeclaration","IfStatement","InterfaceDeclaration","InterfaceMember","TypeDeclaration","VarDeclaration","ReflectionKind","BuiltinFile","TSDoc","TSDocDefaultValue","TSDocExample","TSDocParam","TSDocRemarks","TSDocReturns","useColors","useTheme","ColorFunction","ansi16","ansi256","ansi16m","open","close","ColorsDeclaration","colors","_$createComponent","name","doc","children","each","Object","keys","filter","color","idx","_$createIntrinsic","heading","type","initializer","comma","doubleHardline","enderPunctuation","theme","text","banner","title","header","footer","command","description","primary","secondary","tertiary","body","link","message","help","success","info","debug","warning","danger","error","usage","bin","subcommand","options","params","border","outline","divider","app","table","WriteLineFunctionDeclaration","parameters","optional","method","defaultValue","default","padding","MessageFunctionDeclaration","props","variant","consoleFnName","prefix","includes","charAt","when","Boolean","_$memo","borderStyles","topLeft","top","Math","max","length","topRight","left","right","repeat","bottomLeft","bottom","bottomRight","WrapAnsiFunction","StripAnsiFunctionDeclaration","DividerFunctionDeclaration","string","number","LinkFunctionDeclaration","condition","extractBorderOptionsObject","direction","extractBorderOptionsString","TableFunctionDeclaration","property","_$mergeProps","ConsoleBuiltin","id","imports","builtinImports","utils","env"],"sources":["../../src/components/console-builtin.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { Children } from \"@alloy-js/core\";\nimport { code, For, Show } from \"@alloy-js/core\";\nimport type { FunctionDeclarationProps } from \"@alloy-js/typescript\";\nimport {\n ElseClause,\n FunctionDeclaration,\n IfStatement,\n InterfaceDeclaration,\n InterfaceMember,\n TypeDeclaration,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\nimport { BuiltinFile } from \"@powerlines/plugin-alloy/typescript/components/builtin-file\";\nimport {\n TSDoc,\n TSDocDefaultValue,\n TSDocExample,\n TSDocParam,\n TSDocRemarks,\n TSDocReturns\n} from \"@powerlines/plugin-alloy/typescript/components/tsdoc\";\nimport type {\n ThemeMessageVariant,\n ThemeResolvedConfig\n} from \"@shell-shock/plugin-theme/types/theme\";\nimport { useColors, useTheme } from \"../contexts/theme\";\nimport type { AnsiWrappers, BaseAnsiStylesKeys } from \"../helpers/ansi-utils\";\n\n/**\n * A component to generate a console message function in a Shell Shock project.\n */\nfunction ColorFunction({\n ansi16,\n ansi256,\n ansi16m\n}: Record<\"ansi16\" | \"ansi256\" | \"ansi16m\", AnsiWrappers>) {\n return code` (text: string) => {\n try {\n if (!isColorSupported) {\n return String(text);\n }\n\n if (colorSupportLevels.stdout === 1) {\n return wrapAnsi(text, \"${ansi16.open}\", \"${ansi16.close}\");\n } else if (colorSupportLevels.stdout === 2) {\n return wrapAnsi(text, \"${ansi256.open}\", \"${ansi256.close}\");\n }\n\n return wrapAnsi(text, \"${ansi16m.open}\", \"${ansi16m.close}\");\n } catch {\n return String(text);\n }\n }\n`;\n}\n\n/**\n * A component to generate an object containing functions for coloring text in a Shell Shock project.\n */\nexport function ColorsDeclaration() {\n const colors = useColors();\n\n return (\n <>\n <TypeDeclaration\n export\n name=\"AnsiColor\"\n doc=\"The available ANSI colors for console text.\">\n <For\n each={Object.keys(colors.ansi16).filter(color => color !== \"theme\")}>\n {(color, idx) => `${idx > 0 ? \" | \" : \"\"}\"${color}\"`}\n </For>\n </TypeDeclaration>\n <hbr />\n <hbr />\n <hbr />\n {code`\n /**\n * A recursive type that defines theme colors for console text.\n *\n * @remarks\n * This type allows for nested theme color definitions, enabling complex theming structures for console applications.\n */\n export type ThemeColors<T> = T extends object ? { [K in keyof T]: ThemeColors<T[K]>; } : ((text: string) => string); `}\n <hbr />\n <hbr />\n <TypeDeclaration\n export\n name=\"Colors\"\n doc=\"An object containing functions for coloring console applications. Each function corresponds to a terminal color. See {@link AnsiColor} for available colors.\">\n {code`Record<AnsiColor, (text: string) => string> & ThemeColors<ThemeColorsResolvedConfig>`}\n </TypeDeclaration>\n <hbr />\n <hbr />\n <TSDoc heading=\"An object containing functions for coloring console applications. Each function corresponds to a terminal color. See {@link Colors} for available colors.\" />\n <VarDeclaration\n const\n export\n name=\"colors\"\n type=\"Colors\"\n initializer={\n <>\n {code` {\n `}\n <hbr />\n <For\n each={Object.keys(colors.ansi16).filter(\n color => color !== \"theme\"\n )}\n comma\n doubleHardline\n enderPunctuation>\n {color => (\n <>\n {code`${color}: `}\n <ColorFunction\n ansi16={colors.ansi16[color as BaseAnsiStylesKeys]}\n ansi256={colors.ansi256[color as BaseAnsiStylesKeys]}\n ansi16m={colors.ansi16m[color as BaseAnsiStylesKeys]}\n />\n </>\n )}\n </For>\n <hbr />\n {code`text: {\n banner: {\n title: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.banner.title}\n ansi256={colors.ansi256.theme.text.banner.title}\n ansi16m={colors.ansi16m.theme.text.banner.title}\n />\n )},\n header: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.banner.header}\n ansi256={colors.ansi256.theme.text.banner.header}\n ansi16m={colors.ansi16m.theme.text.banner.header}\n />\n )},\n footer: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.banner.footer}\n ansi256={colors.ansi256.theme.text.banner.footer}\n ansi16m={colors.ansi16m.theme.text.banner.footer}\n />\n )},\n command: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.banner.command}\n ansi256={colors.ansi256.theme.text.banner.command}\n ansi16m={colors.ansi16m.theme.text.banner.command}\n />\n )},\n description: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.banner.description}\n ansi256={colors.ansi256.theme.text.banner.description}\n ansi16m={colors.ansi16m.theme.text.banner.description}\n />\n )}\n },\n heading: {\n primary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.heading.primary}\n ansi256={colors.ansi256.theme.text.heading.primary}\n ansi16m={colors.ansi16m.theme.text.heading.primary}\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.heading.secondary}\n ansi256={colors.ansi256.theme.text.heading.secondary}\n ansi16m={colors.ansi16m.theme.text.heading.secondary}\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.heading.tertiary}\n ansi256={colors.ansi256.theme.text.heading.tertiary}\n ansi16m={colors.ansi16m.theme.text.heading.tertiary}\n />\n )}\n },\n body: {\n primary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.primary}\n ansi256={colors.ansi256.theme.text.body.primary}\n ansi16m={colors.ansi16m.theme.text.body.primary}\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.secondary}\n ansi256={colors.ansi256.theme.text.body.secondary}\n ansi16m={colors.ansi16m.theme.text.body.secondary}\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.tertiary}\n ansi256={colors.ansi256.theme.text.body.tertiary}\n ansi16m={colors.ansi16m.theme.text.body.tertiary}\n />\n )},\n link: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.link}\n ansi256={colors.ansi256.theme.text.body.link}\n ansi16m={colors.ansi16m.theme.text.body.link}\n />\n )}\n },\n message: {\n link: {\n help: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.help}\n ansi256={\n colors.ansi256.theme.text.message.link.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.link.success\n }\n ansi256={\n colors.ansi256.theme.text.message.link.success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.info}\n ansi256={\n colors.ansi256.theme.text.message.link.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.debug}\n ansi256={\n colors.ansi256.theme.text.message.link.debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.link.warning\n }\n ansi256={\n colors.ansi256.theme.text.message.link.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.link.danger\n }\n ansi256={\n colors.ansi256.theme.text.message.link.danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.error}\n ansi256={\n colors.ansi256.theme.text.message.link.error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.error\n }\n />\n )}\n },\n header: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.help\n }\n ansi256={\n colors.ansi256.theme.text.message.header.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.success\n }\n ansi256={\n colors.ansi256.theme.text.message.header.success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.info\n }\n ansi256={\n colors.ansi256.theme.text.message.header.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.debug\n }\n ansi256={\n colors.ansi256.theme.text.message.header.debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.warning\n }\n ansi256={\n colors.ansi256.theme.text.message.header.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.danger\n }\n ansi256={\n colors.ansi256.theme.text.message.header.danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.error\n }\n ansi256={\n colors.ansi256.theme.text.message.header.error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.error\n }\n />\n )}\n },\n footer: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.help\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.success\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.info\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.debug\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.warning\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.danger\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.error\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.error\n }\n />\n )}\n },\n description: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.help\n }\n ansi256={\n colors.ansi256.theme.text.message.description.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description\n .success\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.info\n }\n ansi256={\n colors.ansi256.theme.text.message.description.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.debug\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description\n .warning\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description\n .danger\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.error\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .error\n }\n />\n )}\n }\n },\n usage: {\n bin: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.bin}\n ansi256={colors.ansi256.theme.text.usage.bin}\n ansi16m={colors.ansi16m.theme.text.usage.bin}\n />\n )},\n command: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.command}\n ansi256={colors.ansi256.theme.text.usage.command}\n ansi16m={colors.ansi16m.theme.text.usage.command}\n />\n )},\n subcommand: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.subcommand}\n ansi256={colors.ansi256.theme.text.usage.subcommand}\n ansi16m={colors.ansi16m.theme.text.usage.subcommand}\n />\n )},\n options: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.options}\n ansi256={colors.ansi256.theme.text.usage.options}\n ansi16m={colors.ansi16m.theme.text.usage.options}\n />\n )},\n params: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.params}\n ansi256={colors.ansi256.theme.text.usage.params}\n ansi16m={colors.ansi16m.theme.text.usage.params}\n />\n )},\n description: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.description}\n ansi256={colors.ansi256.theme.text.usage.description}\n ansi16m={colors.ansi16m.theme.text.usage.description}\n />\n )}\n }\n },\n border: {\n banner: {\n outline: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.outline.primary\n }\n ansi256={\n colors.ansi256.theme.border.banner.outline.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.outline.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.outline\n .secondary\n }\n ansi256={\n colors.ansi256.theme.border.banner.outline\n .secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.outline\n .secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.outline.tertiary\n }\n ansi256={\n colors.ansi256.theme.border.banner.outline\n .tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.outline\n .tertiary\n }\n />\n )}\n },\n divider: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.divider.primary\n }\n ansi256={\n colors.ansi256.theme.border.banner.divider.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.divider.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.divider\n .secondary\n }\n ansi256={\n colors.ansi256.theme.border.banner.divider\n .secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.divider\n .secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.divider.tertiary\n }\n ansi256={\n colors.ansi256.theme.border.banner.divider\n .tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.divider\n .tertiary\n }\n />\n )}\n }\n },\n app: {\n table: {\n primary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.border.app.table.primary}\n ansi256={\n colors.ansi256.theme.border.app.table.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.table.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.table.secondary\n }\n ansi256={\n colors.ansi256.theme.border.app.table.secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.table.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.border.app.table.tertiary}\n ansi256={\n colors.ansi256.theme.border.app.table.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.table.tertiary\n }\n />\n )}\n },\n divider: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.divider.primary\n }\n ansi256={\n colors.ansi256.theme.border.app.divider.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.divider.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.divider.secondary\n }\n ansi256={\n colors.ansi256.theme.border.app.divider.secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.divider.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.divider.tertiary\n }\n ansi256={\n colors.ansi256.theme.border.app.divider.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.divider.tertiary\n }\n />\n )}\n }\n },\n message: {\n outline: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.help\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.help\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.success\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.success\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.info\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.info\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.debug\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.debug\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.warning\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.warning\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.danger\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.danger\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.error\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.error\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.error\n }\n />\n )}\n },\n divider: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.help\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.help\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.success\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.success\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.info\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.info\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.debug\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.debug\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.warning\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.warning\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.danger\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.danger\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.error\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.error\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.error\n }\n />\n )}\n }\n }\n }\n }\n`}\n </>\n }\n />\n </>\n );\n}\n\n/**\n * A component to generate the `writeLine` function in the `shell-shock:console` builtin module.\n */\nexport function WriteLineFunctionDeclaration() {\n const theme = useTheme();\n\n return (\n <>\n <TSDoc heading=\"Split text into multiple lines based on a maximum length.\">\n <TSDocRemarks>\n {`This function splits the provided text into multiple lines based on the specified maximum length, ensuring that words are not broken in the middle.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"text\">\n {`The text to split into multiple lines.`}\n </TSDocParam>\n <TSDocParam name=\"maxLength\">\n {`The maximum length of each line.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n name=\"splitText\"\n parameters={[\n {\n name: \"text\",\n type: \"string\"\n },\n {\n name: \"maxLength\",\n type: \"number\"\n }\n ]}>\n {code`\n let line = text;\n let result = [] as string[];\n\n while (stripAnsi(line).length > maxLength) {\n if (line.indexOf(\"\\\\n\") !== -1 && stripAnsi(line).indexOf(\"\\\\n\") <= maxLength) {\n result.push(line.slice(0, line.indexOf(\"\\\\n\")));\n line = line.slice(line.indexOf(\"\\\\n\") + 1);\n } else {\n const index = [\" \", \"/\", \"\\\\\\\\\", \".\", \",\", \"-\", \":\", \"|\", \"@\", \"+\"].reduce((ret, split) => {\n let current = ret;\n while (stripAnsi(line).indexOf(split, current + 1) !== -1 && stripAnsi(line).indexOf(split, current + 1) <= maxLength && (!/.*\\\\([^)]*$/.test(stripAnsi(line).slice(0, line.indexOf(split, current + 1))) || !/^[^(]*\\\\).*/.test(stripAnsi(line).slice(line.indexOf(split, current + 1) + 1)) || stripAnsi(line).slice(line.indexOf(split, current + 1) + 1).replace(/^.*\\\\)/, \"\").indexOf(split) !== -1)) {\n current = line.indexOf(split, current + 1);\n }\n\n return current;\n }, -1);\n if (index === -1) {\n break;\n }\n\n result.push(line.slice(0, index));\n line = line.slice(index + 1);\n }\n }\n\n while (stripAnsi(line).length > maxLength) {\n result.push(line.slice(0, maxLength));\n line = line.slice(maxLength + 1);\n }\n\n if (line.length > 0) {\n result.push(line);\n }\n\n return result;\n`}\n </FunctionDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n export\n name=\"WriteLineOptions\"\n doc=\"Options for writing a line to the console.\">\n <TSDoc heading=\"Padding to apply to the line\">\n <TSDocRemarks>\n {`The amount of padding (in spaces) to apply to the line when writing to the console. This value is applied to both the left and right sides of the line. If not specified, the default padding defined in the current theme configuration will be used.`}\n </TSDocRemarks>\n </TSDoc>\n <InterfaceMember name=\"padding\" optional type=\"number\" />\n <hbr />\n <TSDoc heading=\"Console function to use for writing the line\">\n <TSDocRemarks>\n {`The console function to use for writing the line. If not specified, the default console function \\`console.log\\` will be used.`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.method}\n defaultValue={`\\`console.log\\``}\n />\n </TSDoc>\n <InterfaceMember\n name=\"consoleFn\"\n optional\n type=\"(text: string) => void\"\n />\n <hbr />\n <TSDoc heading=\"Color of the line text\">\n <TSDocRemarks>\n {`The color to apply to the line text when writing to the console. This can be one of the predefined color themes: \"primary\", \"secondary\", or \"tertiary\". If not specified, no specific coloring will be applied to the text (the default/system terminal text color will likely be used).`}\n </TSDocRemarks>\n <hbr />\n </TSDoc>\n <InterfaceMember\n name=\"color\"\n optional\n type='\"primary\" | \"secondary\" | \"tertiary\"'\n />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <TSDoc heading=\"Write a line to the console.\">\n <TSDocRemarks>\n {`This function writes a line to the console, applying the appropriate padding as defined in the current theme configuration and wrapping as needed.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"text\">\n {`The line text to write to the console.`}\n </TSDocParam>\n <TSDocParam name=\"options\">{`The options to apply when writing the line to the console.`}</TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"writeLine\"\n parameters={[\n {\n name: \"text\",\n type: \"string | number | boolean | null\",\n optional: true\n },\n {\n name: \"options\",\n type: \"WriteLineOptions\",\n default: \"{}\"\n }\n ]}>\n {code`const consoleFn = options.consoleFn ?? console.log;\n const color = options.color;\nif (text === undefined || text === null || text === \"\") {\n consoleFn(\"\");\n return;\n}\n\nconsoleFn(\\`\\${\" \".repeat(Math.max(options.padding ?? ${\n theme.padding.app\n }, 0))}\\${color ? colors.text.body[color](String(text)) : String(text)}\\`);\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\nexport type MessageFunctionDeclarationProps = Partial<\n Pick<FunctionDeclarationProps, \"parameters\">\n> & {\n type:\n | \"success\"\n | \"help\"\n | \"info\"\n | \"debug\"\n | \"verbose\"\n | \"warn\"\n | \"danger\"\n | \"error\";\n variant: ThemeMessageVariant;\n consoleFnName: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n description: string;\n prefix?: Children;\n};\n\n/**\n * A component to generate the message functions in the `shell-shock:console` builtin module.\n */\nexport function MessageFunctionDeclaration(\n props: MessageFunctionDeclarationProps\n) {\n const { type, variant, consoleFnName, description, prefix, parameters } =\n props;\n\n const theme = useTheme();\n\n return (\n <>\n <TSDoc\n heading={`Write ${\n [\"a\", \"e\", \"i\", \"o\", \"u\"].includes(description.charAt(0)) ? \"an\" : \"a\"\n } ${description} message to the console.`}>\n <TSDocRemarks>\n {`This function initializes the Powerlines environment configuration object.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"message\">\n {`The message to write to the console.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name={type}\n parameters={\n parameters ?? [\n {\n name: \"message\",\n type: \"string\",\n optional: false\n }\n ]\n }>\n <Show when={Boolean(prefix)}>\n {prefix}\n <hbr />\n <hbr />\n </Show>\n {code`\n if (!message) {\n return;\n }\n\n writeLine(colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].topLeft\n }\") + colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n (Math.max(theme.padding.app, 0) +\n Math.max(theme.padding.message, 0)) *\n 2 +\n theme.borderStyles.message.outline[variant].topLeft.length +\n theme.borderStyles.message.outline[variant].topRight.length\n }, 0) / ${\n theme.borderStyles.message.outline[variant].top.length ?? 1\n })) + colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} });\n splitText(\n message,\n Math.max(process.stdout.columns - ${\n (Math.max(theme.padding.app, 0) +\n Math.max(theme.padding.message, 0)) *\n 2 +\n theme.borderStyles.message.outline[variant].left.length +\n theme.borderStyles.message.outline[variant].right.length\n }, 0)\n ).forEach((line) => {\n writeLine(colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].left +\n \" \".repeat(Math.max(theme.padding.message, 0))\n }\") + line + colors.border.message.outline.${variant}(\"${\n \" \".repeat(Math.max(theme.padding.message, 0)) +\n theme.borderStyles.message.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n writeLine(colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].bottomLeft\n }\") + colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n (Math.max(theme.padding.app, 0) +\n Math.max(theme.padding.message, 0)) *\n 2 +\n theme.borderStyles.message.outline[variant].bottomLeft.length +\n theme.borderStyles.message.outline[variant].bottomRight.length\n }, 0) / ${\n theme.borderStyles.message.outline[variant].bottom.length ?? 1\n })) + colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `wrapAnsi` function in the `shell-shock:console` builtin module.\n */\nexport function WrapAnsiFunction() {\n return (\n <>\n <TSDoc heading=\"Applies ANSI escape codes to a string.\">\n <TSDocRemarks>\n {`Split text by /\\\\\\\\u001b[\\\\[|\\\\]][0-9;]*m/ and wrap non-ANSI parts with open/closeing tags.`}\n </TSDocRemarks>\n\n <TSDocExample>\n {`const result = wrapAnsi(\"Hello\\\\\\\\u001b[31mWorld\\\\\\\\u001b[0mAgain\", \"\\\\\\\\u001b[36m\", \"\\\\\\\\u001b[39\");\\nconsole.log(result); // \"\\\\\\\\u001b[36mHello\\\\\\\\u001b[39\\\\\\\\u001b[31mWorld\\\\\\\\u001b[0m\\\\\\\\u001b[36mAgain\\\\\\\\u001b[39\"`}\n </TSDocExample>\n\n <TSDocParam name=\"text\">\n {`The text to apply ANSI codes to.`}\n </TSDocParam>\n <TSDocParam name=\"open\">{`The opening ANSI code.`}</TSDocParam>\n <TSDocParam name=\"close\">{`The closing ANSI code.`}</TSDocParam>\n <TSDocReturns>{`The text with ANSI codes applied.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n name=\"wrapAnsi\"\n parameters={[\n {\n name: \"text\",\n type: \"string | number\",\n optional: false\n },\n {\n name: \"open\",\n type: \"string\",\n optional: false\n },\n { name: \"close\", type: \"string\", optional: false }\n ]}>\n {code`const str = String(text);\n const tokens = [] as string[];\n\n let last = 0;\n let match: RegExpExecArray | null;\n while ((match = /\\\\\\\\u001b[\\\\[|\\\\]][0-9;]*m/g.exec(str)) !== null) {\n if (match.index > last) tokens.push(str.slice(last, match.index));\n tokens.push(match[0]);\n last = match.index + match[0].length;\n }\n\n if (last < str.length) {\n tokens.push(str.slice(last));\n }\n\n let result = \"\";\n for (let i = 0; i < tokens.length; i++) {\n const seg = tokens[i]!;\n if (/^\\\\\\\\u001b[\\\\[|\\\\]][0-9;]*m$/.test(seg)) {\n result += seg;\n continue;\n }\n\n if (!seg) {\n continue;\n }\n\n result += i > 0 && /^\\\\\\\\u001b[\\\\[|\\\\]][0-9;]*m$/.test(tokens[i - 1]!) && i + 1 < tokens.length && /^\\\\\\\\u001b[\\\\[|\\\\]][0-9;]*m$/.test(tokens[i + 1]!)\n ? seg\n : \\`\\${open}\\${seg}\\${close}\\`;\n }\n\n return result;\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `stripAnsi` function in the `shell-shock:console` builtin module.\n */\nexport function StripAnsiFunctionDeclaration() {\n return (\n <>\n <TSDoc heading=\"Removes ANSI escape codes from a string.\">\n <TSDocExample>\n {`const result = stripAnsi(\"Hello\\\\\\\\u001b[31mWorld\\\\\\\\u001b[0mAgain\"); // \"HelloWorldAgain\"`}\n </TSDocExample>\n\n <TSDocParam name=\"text\">\n {`The text to strip ANSI codes from.`}\n </TSDocParam>\n <TSDocReturns>{`The text with ANSI codes removed.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"stripAnsi\"\n parameters={[\n {\n name: \"text\",\n type: \"string | number\",\n optional: false\n }\n ]}>\n {code`return String(text).replace(new RegExp([\n String.raw\\`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\\`,\n String.raw\\`(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\\`\n ].join(\"|\"), \"g\"), \"\");`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `stripAnsi` function in the `shell-shock:console` builtin module.\n */\nexport function DividerFunctionDeclaration() {\n const theme = useTheme();\n\n return (\n <>\n <InterfaceDeclaration\n export\n name=\"DividerOptions\"\n doc=\"Options for formatting the divider line written to console.\">\n <InterfaceMember\n name=\"width\"\n optional\n type=\"number\"\n doc=\"The width of the divider line. If not specified, the divider will span the full width of the console, minus the padding.\"\n />\n <hbr />\n <TSDoc heading=\"The border of the divider line. Can be 'primary', 'secondary', 'tertiary', or 'none'. If not specified, the default border style will be used.\">\n <TSDocRemarks>\n {`The value provided will determine the border style and color based on the current theme configuration.`}\n </TSDocRemarks>\n <TSDocDefaultValue\n type={ReflectionKind.string}\n defaultValue=\"primary\"\n />\n </TSDoc>\n <InterfaceMember\n name=\"border\"\n optional\n type='\"primary\" | \"secondary\" | \"tertiary\"'\n doc=\"The border style/color of the divider line. Can be 'primary', 'secondary', 'tertiary', or 'none'. If not specified, the default border style will be used.\"\n />\n <hbr />\n <TSDoc heading=\"Padding to apply to the line\">\n <TSDocRemarks>\n {`The amount of padding (in spaces) to apply to the line when writing to the console. This value is applied to both the left and right sides of the line. If not specified, the default padding defined in the current theme configuration will be used.`}\n </TSDocRemarks>\n <TSDocDefaultValue\n type={ReflectionKind.number}\n defaultValue={theme.padding.app * 4}\n />\n </TSDoc>\n <InterfaceMember name=\"padding\" optional type=\"number\" />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <TSDoc heading=\"Write a divider line to the console.\">\n <TSDocExample>\n {`divider({ width: 50, border: \"primary\" }); // Writes a divider line of width 50 with primary border.`}\n </TSDocExample>\n\n <TSDocParam name=\"options\">\n {`Options for formatting the divider line.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"divider\"\n parameters={[\n {\n name: \"options\",\n type: \"DividerOptions\",\n optional: false\n }\n ]}>\n {code`const padding = options.padding ?? ${Math.max(theme.padding.app, 1) * 4};\n const width = options.width ?? (process.stdout.columns - (Math.max(padding, 0) * 2));\n const border = options.border === \"tertiary\" ? colors.border.app.divider.tertiary(\"${\n theme.borderStyles.app.divider.tertiary.top\n }\") : options.border === \"secondary\" ? colors.border.app.divider.secondary(\"${\n theme.borderStyles.app.divider.secondary.top\n }\") : colors.border.app.divider.primary(\"${\n theme.borderStyles.app.divider.primary.top\n }\");\n\n writeLine(\" \".repeat(Math.max(padding - ${theme.padding.app}, 0)) + border.repeat(Math.max(width / ${\n theme.borderStyles.app.divider.primary.top.length ?? 1\n }, 0)));\n `}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `link` function in the `shell-shock:console` builtin module.\n */\nexport function LinkFunctionDeclaration() {\n return (\n <>\n <TSDoc heading=\"Render a hyperlink in the console.\">\n <TSDocParam name=\"url\">\n {`The URL to render as a hyperlink.`}\n </TSDocParam>\n <TSDocParam name=\"text\">\n {`The text to display for the link. If not provided, the URL will be used as the text.`}\n </TSDocParam>\n <TSDocReturns>{`The formatted hyperlink string.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"link\"\n parameters={[\n {\n name: \"url\",\n type: \"string\",\n optional: false\n },\n { name: \"text\", type: \"string\", optional: true }\n ]}>\n <IfStatement condition={code`isHyperlinkSupported()`}>\n {code`return \\`\\\\u001b]8;;\\${url}\\\\u0007\\${text ?? url}\\\\u001b]8;;\\\\u0007\\`;`}\n </IfStatement>\n <hbr />\n <IfStatement condition={code`isColorSupported`}>\n {code`return colors.underline(colors.text.body.link(\\`$\\{text ?? url\\} $\\{url\\}\\`));`}\n </IfStatement>\n <hbr />\n {code`return \\`$\\{text ?? url\\} $\\{url\\}\\`;`}\n </FunctionDeclaration>\n </>\n );\n}\n\nfunction extractBorderOptionsObject(\n direction:\n | \"top\"\n | \"right\"\n | \"bottom\"\n | \"left\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottomRight\",\n theme: ThemeResolvedConfig\n): string {\n return `borderOptions.${\n direction\n } === \"primary\" ? colors.border.app.table.primary(\"${\n theme.borderStyles.app.table.primary[direction]\n }\") : borderOptions.${\n direction\n } === \"secondary\" ? colors.border.app.table.secondary(\"${\n theme.borderStyles.app.table.secondary[direction]\n }\") : borderOptions.${\n direction\n } === \"tertiary\" ? colors.border.app.table.tertiary(\"${\n theme.borderStyles.app.table.tertiary[direction]\n }\") : !borderOptions.${direction} || borderOptions.${\n direction\n } === \"none\" ? \"\" : borderOptions.${direction}`;\n}\n\nfunction extractBorderOptionsString(\n direction:\n | \"top\"\n | \"right\"\n | \"bottom\"\n | \"left\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottomRight\",\n theme: ThemeResolvedConfig\n): string {\n return `borderOptions === \"primary\" ? colors.border.app.table.primary(\"${\n theme.borderStyles.app.table.primary[direction]\n }\") : borderOptions === \"secondary\" ? colors.border.app.table.secondary(\"${\n theme.borderStyles.app.table.secondary[direction]\n }\") : borderOptions === \"tertiary\" ? colors.border.app.table.tertiary(\"${\n theme.borderStyles.app.table.tertiary[direction]\n }\") : !borderOptions || borderOptions === \"none\" ? \"\" : borderOptions`;\n}\n\n/**\n * Props for the TableFunctionDeclaration component.\n */\nexport type TableFunctionDeclarationProps = Omit<\n FunctionDeclarationProps,\n \"parameters\" | \"name\"\n>;\n\n/**\n * A component to generate the table functions in the `shell-shock:console` builtin module.\n */\nexport function TableFunctionDeclaration(props: TableFunctionDeclarationProps) {\n const theme = useTheme();\n\n return (\n <>\n <TypeDeclaration\n export\n name=\"BorderOption\"\n doc=\"The border options applied to table cells.\">\n {code`\"primary\" | \"secondary\" | \"tertiary\" | \"none\" | string; `}\n </TypeDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n export\n name=\"TableOutputOptions\"\n doc=\"Options to customize the output of the {@link table} function.\">\n <TSDoc heading=\"Border variant for the table cell.\">\n <TSDocRemarks>\n {`The border variant to use for the table cell. This determines the color and style of the border around the cell.`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.property}\n defaultValue=\"primary\"\n />\n </TSDoc>\n <InterfaceMember\n name=\"border\"\n optional\n type=\"BorderOption | { top?: BorderOption; right?: BorderOption; bottom?: BorderOption; left?: BorderOption; topLeft?: BorderOption; topRight?: BorderOption; bottomLeft?: BorderOption; bottomRight?: BorderOption; }\"\n />\n <hbr />\n <TSDoc heading=\"Padding for the table cell.\">\n <TSDocRemarks>\n {`The amount of padding (in spaces) to apply to the table cell. This value is applied to both the left and right sides of the cell. If not specified, the default table padding defined in the current theme configuration will be used.`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.property}\n defaultValue={`\\`${theme.padding.table}\\``}\n />\n </TSDoc>\n <InterfaceMember name=\"padding\" optional type=\"number\" />\n <hbr />\n <TSDoc heading=\"Alignment for the table cell.\">\n <TSDocRemarks>\n {`The alignment for the table cell. This determines how the text within the cell is aligned. If not specified, the default alignment is \"left\".`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.property}\n defaultValue=\"left\"\n />\n </TSDoc>\n <InterfaceMember\n name=\"align\"\n optional\n type='\"left\" | \"right\" | \"center\"'\n />\n <hbr />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n export\n name=\"TableCellOptions\"\n extends=\"TableOutputOptions\"\n doc=\"Options for a specific table cell provided to the {@link table} function.\">\n <InterfaceMember\n name=\"value\"\n optional\n type=\"string\"\n doc=\"The actual string value of the table cell.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n export\n name=\"TableRowOptions\"\n extends=\"TableOutputOptions\"\n doc=\"Options for a specific table row provided to the {@link table} function.\">\n <InterfaceMember\n name=\"values\"\n optional\n type=\"(string | TableCellOptions)[]\"\n doc=\"The actual string values of the table row's cells.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n export\n name=\"TableOptions\"\n extends=\"TableOutputOptions\"\n doc=\"Options for a specific table cell provided to the {@link table} function.\">\n <InterfaceMember\n name=\"values\"\n optional\n type=\"(string | TableCellOptions)[][]\"\n doc=\"The actual string values of the table's rows' cells.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n name=\"Dimensions\"\n doc=\"The height and width for a specific table/cell used internally in the {@link table} function.\">\n <InterfaceMember\n name=\"height\"\n type=\"number\"\n doc=\"The height of the row/cell (where 1 is a single line in the terminal).\"\n />\n <hbr />\n <InterfaceMember\n name=\"width\"\n type=\"number\"\n doc=\"The width of the row/cell (where 1 is a single character in the terminal).\"\n />\n <hbr />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n name=\"TableCellBorder\"\n doc=\"The resolved complete border styles for a table cell.\">\n <InterfaceMember\n name=\"top\"\n type=\"string\"\n doc=\"The top border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"bottom\"\n type=\"string\"\n doc=\"The bottom border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"right\"\n type=\"string\"\n doc=\"The right border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"left\"\n type=\"string\"\n doc=\"The left border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"topLeft\"\n type=\"string\"\n doc=\"The top-left border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"topRight\"\n type=\"string\"\n doc=\"The top-right border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"bottomLeft\"\n type=\"string\"\n doc=\"The bottom-left border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"bottomRight\"\n type=\"string\"\n doc=\"The bottom-right border style of the table cell.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <TypeDeclaration\n name=\"TableCell\"\n doc=\"The internal state of a formatted table cell in the {@link table} function.\">\n {code`Required<Omit<TableCellOptions, \"border\">> & Dimensions & {\n border: TableCellBorder;\n };\n `}\n </TypeDeclaration>\n <hbr />\n <hbr />\n <TSDoc heading=\"Write a table to the console.\">\n <TSDocRemarks>\n {`This function writes a table to the console, applying the appropriate padding as defined in the current theme configuration and wrapping as needed.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"options\">\n {`Options to customize the table output.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n {...props}\n name=\"table\"\n parameters={[\n {\n name: \"options\",\n type: \"TableOptions | TableRowOptions[] | TableCellOptions[][] | string[] | string[][]\",\n optional: false\n }\n ]}>\n <IfStatement\n condition={code`!options ||\n (!Array.isArray(options) && (typeof options !== \"object\" || !options.values || !Array.isArray(options.values) || options.values.length === 0)) ||\n (Array.isArray(options) && !options.every(item => typeof item === \"object\" || typeof item === \"string\" || Array.isArray(item))) `}>\n {code`return;`}\n </IfStatement>\n <hbr />\n <hbr />\n <VarDeclaration\n let\n name=\"cells\"\n type={`TableCell[][]`}\n initializer={code`[];`}\n />\n <hbr />\n {code`\n const extractTableCell = (cell: string | TableCellOptions, opts?: TableOutputOptions): TableCell => {\n if (typeof cell === \"string\") {\n const borderOptions = opts?.border || \"primary\";\n\n let border = {} as TableCellBorder;\n if (typeof borderOptions === \"object\") {\n border = {\n top: ${extractBorderOptionsObject(\"top\", theme)},\n bottom: ${extractBorderOptionsObject(\"bottom\", theme)},\n left: ${extractBorderOptionsObject(\"left\", theme)},\n right: ${extractBorderOptionsObject(\"right\", theme)},\n topLeft: ${extractBorderOptionsObject(\"topLeft\", theme)},\n topRight: ${extractBorderOptionsObject(\"topRight\", theme)},\n bottomLeft: ${extractBorderOptionsObject(\"bottomLeft\", theme)},\n bottomRight: ${extractBorderOptionsObject(\"bottomRight\", theme)},\n };\n } else {\n border.top = ${extractBorderOptionsString(\"top\", theme)};\n border.bottom = ${extractBorderOptionsString(\"bottom\", theme)};\n border.left = ${extractBorderOptionsString(\"left\", theme)};\n border.right = ${extractBorderOptionsString(\"right\", theme)};\n border.topLeft = ${extractBorderOptionsString(\"topLeft\", theme)};\n border.topRight = ${extractBorderOptionsString(\"topRight\", theme)};\n border.bottomLeft = ${extractBorderOptionsString(\"bottomLeft\", theme)};\n border.bottomRight = ${extractBorderOptionsString(\"bottomRight\", theme)};\n }\n\n const padding = Math.max(0, opts?.padding ?? ${theme.padding.table});\n const value = cell ?? \"\";\n const width = stripAnsi(value).length + padding * 2;\n\n return {\n value,\n height: 1,\n width,\n border,\n padding,\n align: opts?.align || \"left\",\n };\n } else {\n const borderOptions = cell.border || opts?.border || \"primary\";\n\n let border = {} as TableCellBorder;\n if (typeof borderOptions === \"object\") {\n border = {\n top: ${extractBorderOptionsObject(\"top\", theme)},\n bottom: ${extractBorderOptionsObject(\"bottom\", theme)},\n left: ${extractBorderOptionsObject(\"left\", theme)},\n right: ${extractBorderOptionsObject(\"right\", theme)},\n topLeft: ${extractBorderOptionsObject(\"topLeft\", theme)},\n topRight: ${extractBorderOptionsObject(\"topRight\", theme)},\n bottomLeft: ${extractBorderOptionsObject(\"bottomLeft\", theme)},\n bottomRight: ${extractBorderOptionsObject(\"bottomRight\", theme)},\n };\n } else {\n border.top = ${extractBorderOptionsString(\"top\", theme)};\n border.bottom = ${extractBorderOptionsString(\"bottom\", theme)};\n border.left = ${extractBorderOptionsString(\"left\", theme)};\n border.right = ${extractBorderOptionsString(\"right\", theme)};\n border.topLeft = ${extractBorderOptionsString(\"topLeft\", theme)};\n border.topRight = ${extractBorderOptionsString(\"topRight\", theme)};\n border.bottomLeft = ${extractBorderOptionsString(\"bottomLeft\", theme)};\n border.bottomRight = ${extractBorderOptionsString(\"bottomRight\", theme)};\n }\n\n const padding = Math.max(0, cell.padding ?? opts?.padding ?? ${\n theme.padding.table\n });\n const value = cell.value ?? \"\";\n const width = stripAnsi(value).length + padding * 2;\n\n return {\n value,\n height: 1,\n width,\n border,\n padding,\n align: cell.align || opts?.align || \"left\",\n };\n }\n };\n `}\n <hbr />\n <IfStatement condition={code`Array.isArray(options)`}>\n <IfStatement\n condition={code`options.every(row => typeof row === \"string\" || (typeof row === \"object\" && !Array.isArray(row) && !(\"values\" in row)))`}>\n {code`cells.push(options.map(cell => extractTableCell(cell as string | TableCellOptions)));`}\n </IfStatement>\n <ElseClause>\n {code`\n cells.push(\n ...options.map(row => Array.isArray(row)\n ? row.reduce((cellRow, cell) => {\n cellRow.push(extractTableCell(cell));\n return cellRow;\n }, [] as TableCell[])\n : (row as TableRowOptions).values?.reduce((cellRow, cell) => {\n cellRow.push(extractTableCell(cell, row as TableRowOptions));\n return cellRow;\n }, [] as TableCell[]) ?? []\n )\n );\n `}\n </ElseClause>\n </IfStatement>\n <ElseClause>\n {code`\n cells.push(\n ...options.values!.map(row => Array.isArray(row)\n ? row.reduce((cellRow, cell) => {\n cellRow.push(extractTableCell(cell));\n return cellRow;\n }, [] as TableCell[])\n : (row as TableRowOptions).values?.reduce((cellRow, cell) => {\n cellRow.push(extractTableCell(cell, options));\n return cellRow;\n }, [] as TableCell[]) ?? []\n )\n );\n\n `}\n </ElseClause>\n <hbr />\n {code`\ncells = cells.filter(row => row.length > 0);\nif (cells.length === 0) {\n return;\n}\n\n// Calculate table dimensions\nlet colWidths = [] as number[];\nlet rowDims = [] as Dimensions[];\n\nconst calculateRowDimensions = () => {\n colWidths = [];\n return cells.reduce((dims, row) => {\n dims.push(row.reduce((dim, cell, index) => {\n dim.width += cell.width;\n if (cell.height > dim.height) {\n dim.height = cell.height;\n }\n if (!colWidths[index] || cell.width > colWidths[index]!) {\n colWidths[index] = cell.width;\n }\n\n return dim;\n }, { width: 0, height: 0 } as Dimensions));\n\n return dims;\n }, [] as Dimensions[]);\n}\n\nlet recalculate!: boolean;\ndo {\n recalculate = false;\n rowDims = calculateRowDimensions();\n\n rowDims.forEach((row, rowIndex) => {\n if (!recalculate && row.width > Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n }, 0)) {\n const cell = cells[rowIndex]!.reduce((largestCell, cell) => {\n if (cell.width > largestCell.width) {\n return cell;\n }\n return largestCell;\n }, cells[rowIndex]![0]!);\n\n const lines = splitText(\n cell.value,\n Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n } - (row.width - (cell.width - cell.padding * 2)), 0)\n );\n\n cell.value = lines.join(\"\\\\n\");\n cell.height = lines.length;\n cell.width = Math.max(...lines.map(line => stripAnsi(line).length)) + cell.padding * 2;\n\n recalculate = true;\n }\n });\n\n if (!recalculate && colWidths.reduce((a, b) => a + b, 0) > Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n }, 0)) {\n let colIndex = 0;\n const cell = cells.reduce((ret, row) => {\n return row.reduce((largest, current, i) => {\n if (largest.width < current.width) {\n colIndex = i;\n return current;\n }\n return largest;\n }, ret);\n }, cells[0]![0]!);\n\n const lines = splitText(\n cell.value,\n Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n } - (colWidths.filter((_, i) => i !== colIndex).reduce((a, b) => a + b, 0)) - cell.padding * 2), 0)\n );\n\n cell.value = lines.join(\"\\\\n\");\n cell.height = lines.length;\n cell.width = Math.max(...lines.map(line => stripAnsi(line).length)) + cell.padding * 2;\n\n recalculate = true;\n }\n} while (recalculate);\n\n// Render table\ncells.forEach((row, rowIndex) => {\n const outputs = [] as string[][];\n row.forEach((cell, colIndex) => {\n const lines = cell.value.split(\"\\\\n\");\n while (lines.length < rowDims[rowIndex]!.height) {\n lines.push(\"\");\n }\n\n outputs.push(lines.map(line => {\n let paddedContent = \"\";\n switch (cell.align) {\n case \"right\":\n paddedContent = \" \".repeat(Math.max(colWidths[colIndex] - stripAnsi(line).length - cell.padding, 0)) + line + \" \".repeat(cell.padding);\n break;\n case \"center\":\n const leftPadding = Math.floor((colWidths[colIndex] - stripAnsi(line).length - cell.padding) / 2);\n const rightPadding = colWidths[colIndex] - stripAnsi(line).length - leftPadding;\n paddedContent = \" \".repeat(leftPadding) + line + \" \".repeat(rightPadding);\n break;\n case \"left\":\n default:\n paddedContent = \" \".repeat(cell.padding) + line + \" \".repeat(Math.max(colWidths[colIndex] - stripAnsi(line).length - cell.padding, 0));\n break;\n }\n\n if (colIndex === row.length - 1) {\n return cell.border.left + paddedContent + cell.border.right;\n } else {\n return cell.border.left + paddedContent;\n }\n }));\n });\n\n for (let index = 0; index < rowDims[rowIndex]!.height; index++) {\n writeLine(outputs.map(output => output[index] ?? \"\").join(\"\"));\n }\n});\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A built-in console utilities module for Shell Shock.\n */\nexport function ConsoleBuiltin() {\n return (\n <BuiltinFile\n id=\"console\"\n description=\"A collection of helper utilities to assist in generating content meant for display in the console.\"\n imports={{\n \"@shell-shock/plugin-theme/types/theme\": [\n { name: \"ThemeColorsResolvedConfig\", type: true }\n ]\n }}\n builtinImports={{\n utils: [\n \"hasFlag\",\n \"isColorSupported\",\n \"colorSupportLevels\",\n \"isHyperlinkSupported\"\n ],\n env: [\"env\", \"isDevelopment\", \"isDebug\"]\n }}>\n <StripAnsiFunctionDeclaration />\n <hbr />\n <hbr />\n <WrapAnsiFunction />\n <hbr />\n <hbr />\n <ColorsDeclaration />\n <hbr />\n <hbr />\n <WriteLineFunctionDeclaration />\n <hbr />\n <hbr />\n <LinkFunctionDeclaration />\n <hbr />\n <hbr />\n <DividerFunctionDeclaration />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"help\"\n variant=\"help\"\n consoleFnName=\"log\"\n description=\"help\"\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"success\"\n variant=\"success\"\n consoleFnName=\"info\"\n description=\"success\"\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"info\"\n variant=\"info\"\n consoleFnName=\"info\"\n description=\"informational\"\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"debug\"\n variant=\"debug\"\n consoleFnName=\"debug\"\n description=\"debug\"\n prefix={\n <IfStatement\n condition={code`!isDevelopment && !isDebug && env.LOG_LEVEL !== \"debug\"`}>{code`return; `}</IfStatement>\n }\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"verbose\"\n variant=\"debug\"\n consoleFnName=\"debug\"\n description=\"verbose\"\n prefix={\n <IfStatement\n condition={code`!(isDevelopment || isDebug || env.LOG_LEVEL === \"debug\" || hasFlag([\"verbose\", \"verbose=true\", \"verbose=always\"]))`}>{code`return; `}</IfStatement>\n }\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"warn\"\n variant=\"warning\"\n consoleFnName=\"warn\"\n description=\"warning\"\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"danger\"\n variant=\"danger\"\n consoleFnName=\"error\"\n description=\"destructive/danger\"\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"error\"\n variant=\"error\"\n consoleFnName=\"error\"\n description=\"error\"\n parameters={[\n {\n name: \"err\",\n type: \"string | Error\",\n optional: false\n }\n ]}\n prefix={\n <>\n <VarDeclaration let name=\"message\" type=\"string | undefined\" />\n <hbr />\n <hbr />\n <IfStatement condition={code`(err as Error)?.message`}>\n {code`message = (err as Error).message;`}\n <IfStatement\n condition={code`env.STACKTRACE && (err as Error)?.stack`}>\n {code`message += \" \\\\n\\\\n\" + (err as Error).stack;`}\n </IfStatement>\n </IfStatement>\n <ElseClause>{code`message = String(err);`}</ElseClause>\n </>\n }\n />\n <hbr />\n <hbr />\n <TableFunctionDeclaration />\n <hbr />\n <hbr />\n </BuiltinFile>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"console-builtin.mjs","names":["code","computed","For","Show","ElseClause","FunctionDeclaration","IfStatement","InterfaceDeclaration","InterfaceMember","TypeDeclaration","VarDeclaration","ReflectionKind","usePowerlines","BuiltinFile","TSDoc","TSDocDefaultValue","TSDocExample","TSDocParam","TSDocRemarks","TSDocReturns","useCommand","getAppDescription","getAppTitle","getIndefiniteArticle","useColors","useTheme","ColorFunction","ansi16","ansi256","ansi16m","open","close","ColorsDeclaration","colors","_$createComponent","name","doc","children","each","Object","keys","filter","color","idx","_$createIntrinsic","heading","type","initializer","comma","doubleHardline","enderPunctuation","theme","text","banner","header","primary","secondary","tertiary","footer","command","title","link","description","body","message","help","success","info","debug","warning","danger","error","usage","bin","subcommand","options","params","border","outline","divider","app","table","WriteLineFunctionDeclaration","parameters","optional","method","defaultValue","default","padding","MessageFunctionDeclaration","props","variant","consoleFnName","prefix","timestamp","when","Boolean","_$memo","labels","borderStyles","bottom","topLeft","icons","top","Math","max","length","topRight","left","right","repeat","bottomLeft","bottomRight","BannerFunctionDeclaration","titleProp","context","packageJson","version","test","value","toLowerCase","replace","trim","bannerPadding","totalPadding","WrapAnsiFunction","StripAnsiFunctionDeclaration","DividerFunctionDeclaration","string","number","LinkFunctionDeclaration","condition","extractBorderOptionsObject","direction","extractBorderOptionsString","TableFunctionDeclaration","property","_$mergeProps","ConsoleBuiltin","id","imports","builtinImports","utils","env"],"sources":["../../src/components/console-builtin.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { Children } from \"@alloy-js/core\";\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport type { FunctionDeclarationProps } from \"@alloy-js/typescript\";\nimport {\n ElseClause,\n FunctionDeclaration,\n IfStatement,\n InterfaceDeclaration,\n InterfaceMember,\n TypeDeclaration,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport { BuiltinFile } from \"@powerlines/plugin-alloy/typescript/components/builtin-file\";\nimport {\n TSDoc,\n TSDocDefaultValue,\n TSDocExample,\n TSDocParam,\n TSDocRemarks,\n TSDocReturns\n} from \"@powerlines/plugin-alloy/typescript/components/tsdoc\";\nimport { useCommand } from \"@shell-shock/core/contexts/command\";\nimport {\n getAppDescription,\n getAppTitle\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type {\n ThemeColorVariant,\n ThemeMessageVariant,\n ThemeResolvedConfig\n} from \"@shell-shock/plugin-theme/types/theme\";\nimport { getIndefiniteArticle } from \"@stryke/string-format/vowels\";\nimport { useColors, useTheme } from \"../contexts/theme\";\nimport type { AnsiWrappers, BaseAnsiStylesKeys } from \"../helpers/ansi-utils\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\n\n/**\n * A component to generate a console message function in a Shell Shock project.\n */\nfunction ColorFunction({\n ansi16,\n ansi256,\n ansi16m\n}: Record<\"ansi16\" | \"ansi256\" | \"ansi16m\", AnsiWrappers>) {\n return code` (text: string) => {\n try {\n if (!isColorSupported) {\n return String(text);\n }\n\n if (colorSupportLevels.stdout === 1) {\n return wrapAnsi(text, \"${ansi16.open}\", \"${ansi16.close}\");\n } else if (colorSupportLevels.stdout === 2) {\n return wrapAnsi(text, \"${ansi256.open}\", \"${ansi256.close}\");\n }\n\n return wrapAnsi(text, \"${ansi16m.open}\", \"${ansi16m.close}\");\n } catch {\n return String(text);\n }\n }\n`;\n}\n\n/**\n * A component to generate an object containing functions for coloring text in a Shell Shock project.\n */\nexport function ColorsDeclaration() {\n const colors = useColors();\n\n return (\n <>\n <TypeDeclaration\n export\n name=\"AnsiColor\"\n doc=\"The available ANSI colors for console text.\">\n <For\n each={Object.keys(colors.ansi16).filter(color => color !== \"theme\")}>\n {(color, idx) => `${idx > 0 ? \" | \" : \"\"}\"${color}\"`}\n </For>\n </TypeDeclaration>\n <hbr />\n <hbr />\n <hbr />\n {code`\n /**\n * A recursive type that defines theme colors for console text.\n *\n * @remarks\n * This type allows for nested theme color definitions, enabling complex theming structures for console applications.\n */\n export type ThemeColors<T> = T extends object ? { [K in keyof T]: ThemeColors<T[K]>; } : ((text: string) => string); `}\n <hbr />\n <hbr />\n <TypeDeclaration\n export\n name=\"Colors\"\n doc=\"An object containing functions for coloring console applications. Each function corresponds to a terminal color. See {@link AnsiColor} for available colors.\">\n {code`Record<AnsiColor, (text: string) => string> & ThemeColors<ThemeColorsResolvedConfig>`}\n </TypeDeclaration>\n <hbr />\n <hbr />\n <TSDoc heading=\"An object containing functions for coloring console applications. Each function corresponds to a terminal color. See {@link Colors} for available colors.\" />\n <VarDeclaration\n const\n export\n name=\"colors\"\n type=\"Colors\"\n initializer={\n <>\n {code` {\n `}\n <hbr />\n <For\n each={Object.keys(colors.ansi16).filter(\n color => color !== \"theme\"\n )}\n comma\n doubleHardline\n enderPunctuation>\n {color => (\n <>\n {code`${color}: `}\n <ColorFunction\n ansi16={colors.ansi16[color as BaseAnsiStylesKeys]}\n ansi256={colors.ansi256[color as BaseAnsiStylesKeys]}\n ansi16m={colors.ansi16m[color as BaseAnsiStylesKeys]}\n />\n </>\n )}\n </For>\n <hbr />\n {code`text: {\n banner: {\n header: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.header.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.header.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.header.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.header.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.header.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.header.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.header.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.header.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.header.tertiary\n }\n />\n )}\n },\n footer: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.footer.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.footer.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.footer.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.footer.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.footer.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.footer.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.footer.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.footer.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.footer.tertiary\n }\n />\n )}\n },\n command: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.command.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.command.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.command.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.command.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.command.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.command.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.command.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.command.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.command.tertiary\n }\n />\n )},\n },\n title: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.title.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.title.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.title.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.title.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.title.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.title.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.title.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.title.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.title.tertiary\n }\n />\n )},\n },\n link: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.link.primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.link.primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.link.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.link.secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.link.secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.link.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.link.tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.link.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.link.tertiary\n }\n />\n )},\n },\n description: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.description\n .primary\n }\n ansi256={\n colors.ansi256.theme.text.banner.description\n .primary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.description\n .primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.description\n .secondary\n }\n ansi256={\n colors.ansi256.theme.text.banner.description\n .secondary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.description\n .secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.banner.description\n .tertiary\n }\n ansi256={\n colors.ansi256.theme.text.banner.description\n .tertiary\n }\n ansi16m={\n colors.ansi16m.theme.text.banner.description\n .tertiary\n }\n />\n )},\n }\n },\n heading: {\n primary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.heading.primary}\n ansi256={colors.ansi256.theme.text.heading.primary}\n ansi16m={colors.ansi16m.theme.text.heading.primary}\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.heading.secondary}\n ansi256={colors.ansi256.theme.text.heading.secondary}\n ansi16m={colors.ansi16m.theme.text.heading.secondary}\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.heading.tertiary}\n ansi256={colors.ansi256.theme.text.heading.tertiary}\n ansi16m={colors.ansi16m.theme.text.heading.tertiary}\n />\n )},\n },\n body: {\n primary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.primary}\n ansi256={colors.ansi256.theme.text.body.primary}\n ansi16m={colors.ansi16m.theme.text.body.primary}\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.secondary}\n ansi256={colors.ansi256.theme.text.body.secondary}\n ansi16m={colors.ansi16m.theme.text.body.secondary}\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.tertiary}\n ansi256={colors.ansi256.theme.text.body.tertiary}\n ansi16m={colors.ansi16m.theme.text.body.tertiary}\n />\n )},\n link: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.body.link}\n ansi256={colors.ansi256.theme.text.body.link}\n ansi16m={colors.ansi16m.theme.text.body.link}\n />\n )}\n },\n message: {\n link: {\n help: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.help}\n ansi256={\n colors.ansi256.theme.text.message.link.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.link.success\n }\n ansi256={\n colors.ansi256.theme.text.message.link.success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.info}\n ansi256={\n colors.ansi256.theme.text.message.link.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.debug}\n ansi256={\n colors.ansi256.theme.text.message.link.debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.link.warning\n }\n ansi256={\n colors.ansi256.theme.text.message.link.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.link.danger\n }\n ansi256={\n colors.ansi256.theme.text.message.link.danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.message.link.error}\n ansi256={\n colors.ansi256.theme.text.message.link.error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.link.error\n }\n />\n )}\n },\n header: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.help\n }\n ansi256={\n colors.ansi256.theme.text.message.header.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.success\n }\n ansi256={\n colors.ansi256.theme.text.message.header.success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.info\n }\n ansi256={\n colors.ansi256.theme.text.message.header.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.debug\n }\n ansi256={\n colors.ansi256.theme.text.message.header.debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.warning\n }\n ansi256={\n colors.ansi256.theme.text.message.header.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.danger\n }\n ansi256={\n colors.ansi256.theme.text.message.header.danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.header.error\n }\n ansi256={\n colors.ansi256.theme.text.message.header.error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.header.error\n }\n />\n )}\n },\n footer: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.help\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.success\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.info\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.debug\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.warning\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.danger\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.footer.error\n }\n ansi256={\n colors.ansi256.theme.text.message.footer.error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.footer.error\n }\n />\n )}\n },\n description: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.help\n }\n ansi256={\n colors.ansi256.theme.text.message.description.help\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description\n .success\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .success\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.info\n }\n ansi256={\n colors.ansi256.theme.text.message.description.info\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.debug\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .debug\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description\n .warning\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .warning\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description\n .danger\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .danger\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.text.message.description.error\n }\n ansi256={\n colors.ansi256.theme.text.message.description\n .error\n }\n ansi16m={\n colors.ansi16m.theme.text.message.description\n .error\n }\n />\n )}\n }\n },\n usage: {\n bin: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.bin}\n ansi256={colors.ansi256.theme.text.usage.bin}\n ansi16m={colors.ansi16m.theme.text.usage.bin}\n />\n )},\n command: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.command}\n ansi256={colors.ansi256.theme.text.usage.command}\n ansi16m={colors.ansi16m.theme.text.usage.command}\n />\n )},\n subcommand: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.subcommand}\n ansi256={colors.ansi256.theme.text.usage.subcommand}\n ansi16m={colors.ansi16m.theme.text.usage.subcommand}\n />\n )},\n options: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.options}\n ansi256={colors.ansi256.theme.text.usage.options}\n ansi16m={colors.ansi16m.theme.text.usage.options}\n />\n )},\n params: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.params}\n ansi256={colors.ansi256.theme.text.usage.params}\n ansi16m={colors.ansi16m.theme.text.usage.params}\n />\n )},\n description: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.text.usage.description}\n ansi256={colors.ansi256.theme.text.usage.description}\n ansi16m={colors.ansi16m.theme.text.usage.description}\n />\n )}\n }\n },\n border: {\n banner: {\n outline: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.outline.primary\n }\n ansi256={\n colors.ansi256.theme.border.banner.outline.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.outline.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.outline\n .secondary\n }\n ansi256={\n colors.ansi256.theme.border.banner.outline\n .secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.outline\n .secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.outline.tertiary\n }\n ansi256={\n colors.ansi256.theme.border.banner.outline\n .tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.outline\n .tertiary\n }\n />\n )}\n },\n divider: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.divider.primary\n }\n ansi256={\n colors.ansi256.theme.border.banner.divider.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.divider.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.divider\n .secondary\n }\n ansi256={\n colors.ansi256.theme.border.banner.divider\n .secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.divider\n .secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.banner.divider.tertiary\n }\n ansi256={\n colors.ansi256.theme.border.banner.divider\n .tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.banner.divider\n .tertiary\n }\n />\n )}\n }\n },\n app: {\n table: {\n primary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.border.app.table.primary}\n ansi256={\n colors.ansi256.theme.border.app.table.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.table.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.table.secondary\n }\n ansi256={\n colors.ansi256.theme.border.app.table.secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.table.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={colors.ansi16.theme.border.app.table.tertiary}\n ansi256={\n colors.ansi256.theme.border.app.table.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.table.tertiary\n }\n />\n )}\n },\n divider: {\n primary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.divider.primary\n }\n ansi256={\n colors.ansi256.theme.border.app.divider.primary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.divider.primary\n }\n />\n )},\n secondary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.divider.secondary\n }\n ansi256={\n colors.ansi256.theme.border.app.divider.secondary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.divider.secondary\n }\n />\n )},\n tertiary: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.app.divider.tertiary\n }\n ansi256={\n colors.ansi256.theme.border.app.divider.tertiary\n }\n ansi16m={\n colors.ansi16m.theme.border.app.divider.tertiary\n }\n />\n )}\n }\n },\n message: {\n outline: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.help\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.help\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.success\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.success\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.info\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.info\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.debug\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.debug\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.warning\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.warning\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.danger\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.danger\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.outline.error\n }\n ansi256={\n colors.ansi256.theme.border.message.outline.error\n }\n ansi16m={\n colors.ansi16m.theme.border.message.outline.error\n }\n />\n )}\n },\n divider: {\n help: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.help\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.help\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.help\n }\n />\n )},\n success: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.success\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.success\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.success\n }\n />\n )},\n info: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.info\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.info\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.info\n }\n />\n )},\n debug: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.debug\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.debug\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.debug\n }\n />\n )},\n warning: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.warning\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.warning\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.warning\n }\n />\n )},\n danger: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.danger\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.danger\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.danger\n }\n />\n )},\n error: ${(\n <ColorFunction\n ansi16={\n colors.ansi16.theme.border.message.divider.error\n }\n ansi256={\n colors.ansi256.theme.border.message.divider.error\n }\n ansi16m={\n colors.ansi16m.theme.border.message.divider.error\n }\n />\n )}\n }\n }\n }\n }\n`}\n </>\n }\n />\n </>\n );\n}\n\n/**\n * A component to generate the `writeLine` function in the `shell-shock:console` builtin module.\n */\nexport function WriteLineFunctionDeclaration() {\n const theme = useTheme();\n\n return (\n <>\n <TSDoc heading=\"Split text into multiple lines based on a maximum length.\">\n <TSDocRemarks>\n {`This function splits the provided text into multiple lines based on the specified maximum length, ensuring that words are not broken in the middle.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"text\">\n {`The text to split into multiple lines.`}\n </TSDocParam>\n <TSDocParam name=\"maxLength\">\n {`The maximum length of each line.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n name=\"splitText\"\n parameters={[\n {\n name: \"text\",\n type: \"string\"\n },\n {\n name: \"maxLength\",\n type: \"number\"\n }\n ]}>\n {code`\n let line = text;\n let result = [] as string[];\n\n while (stripAnsi(line).length > maxLength) {\n if (line.indexOf(\"\\\\n\") !== -1 && stripAnsi(line).indexOf(\"\\\\n\") <= maxLength) {\n result.push(line.slice(0, line.indexOf(\"\\\\n\")));\n line = line.slice(line.indexOf(\"\\\\n\") + 1);\n } else {\n const index = [\" \", \"/\", \"\\\\\\\\\", \".\", \",\", \"-\", \":\", \"|\", \"@\", \"+\"].reduce((ret, split) => {\n let current = ret;\n while (stripAnsi(line).indexOf(split, current + 1) !== -1 && stripAnsi(line).indexOf(split, current + 1) <= maxLength && (!/.*\\\\([^)]*$/.test(stripAnsi(line).slice(0, line.indexOf(split, current + 1))) || !/^[^(]*\\\\).*/.test(stripAnsi(line).slice(line.indexOf(split, current + 1) + 1)) || stripAnsi(line).slice(line.indexOf(split, current + 1) + 1).replace(/^.*\\\\)/, \"\").indexOf(split) !== -1)) {\n current = line.indexOf(split, current + 1);\n }\n\n return current;\n }, -1);\n if (index === -1) {\n break;\n }\n\n result.push(line.slice(0, index));\n line = line.slice(index + 1);\n }\n }\n\n while (stripAnsi(line).length > maxLength) {\n result.push(line.slice(0, maxLength));\n line = line.slice(maxLength + 1);\n }\n\n if (line.length > 0) {\n result.push(line);\n }\n\n return result;\n`}\n </FunctionDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n export\n name=\"WriteLineOptions\"\n doc=\"Options for writing a line to the console.\">\n <TSDoc heading=\"Padding to apply to the line\">\n <TSDocRemarks>\n {`The amount of padding (in spaces) to apply to the line when writing to the console. This value is applied to both the left and right sides of the line. If not specified, the default padding defined in the current theme configuration will be used.`}\n </TSDocRemarks>\n </TSDoc>\n <InterfaceMember name=\"padding\" optional type=\"number\" />\n <hbr />\n <TSDoc heading=\"Console function to use for writing the line\">\n <TSDocRemarks>\n {`The console function to use for writing the line. If not specified, the default console function \\`console.log\\` will be used.`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.method}\n defaultValue={`\\`console.log\\``}\n />\n </TSDoc>\n <InterfaceMember\n name=\"consoleFn\"\n optional\n type=\"(text: string) => void\"\n />\n <hbr />\n <TSDoc heading=\"Color of the line text\">\n <TSDocRemarks>\n {`The color to apply to the line text when writing to the console. This can be one of the predefined color themes: \"primary\", \"secondary\", or \"tertiary\". If not specified, no specific coloring will be applied to the text (the default/system terminal text color will likely be used).`}\n </TSDocRemarks>\n <hbr />\n </TSDoc>\n <InterfaceMember\n name=\"color\"\n optional\n type='\"primary\" | \"secondary\" | \"tertiary\"'\n />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <TSDoc heading=\"Write a line to the console.\">\n <TSDocRemarks>\n {`This function writes a line to the console, applying the appropriate padding as defined in the current theme configuration and wrapping as needed.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"text\">\n {`The line text to write to the console.`}\n </TSDocParam>\n <TSDocParam name=\"options\">{`The options to apply when writing the line to the console.`}</TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"writeLine\"\n parameters={[\n {\n name: \"text\",\n type: \"string | number | boolean | null\",\n optional: true\n },\n {\n name: \"options\",\n type: \"WriteLineOptions\",\n default: \"{}\"\n }\n ]}>\n {code`const consoleFn = options.consoleFn ?? console.log;\n const color = options.color;\nif (text === undefined || text === null || text === \"\") {\n consoleFn(\"\");\n return;\n}\n\nconsoleFn(\\`\\${\" \".repeat(Math.max(options.padding ?? ${\n theme.padding.app\n }, 0))}\\${color ? colors.text.body[color](String(text)) : String(text)}\\`);\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\nexport type MessageFunctionDeclarationProps = Partial<\n Pick<FunctionDeclarationProps, \"parameters\">\n> & {\n type:\n | \"success\"\n | \"help\"\n | \"info\"\n | \"debug\"\n | \"verbose\"\n | \"warn\"\n | \"danger\"\n | \"error\";\n variant: ThemeMessageVariant;\n consoleFnName: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n description: string;\n prefix?: Children;\n timestamp?: boolean;\n};\n\n/**\n * A component to generate the message functions in the `shell-shock:console` builtin module.\n */\nexport function MessageFunctionDeclaration(\n props: MessageFunctionDeclarationProps\n) {\n const {\n type,\n variant,\n consoleFnName,\n description,\n prefix,\n parameters,\n timestamp\n } = props;\n\n const theme = useTheme();\n\n return (\n <>\n <TSDoc\n heading={`Write ${getIndefiniteArticle(\n description\n )} ${description} message to the console.`}>\n <TSDocRemarks>\n {`This function initializes the Powerlines environment configuration object.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"message\">\n {`The message to write to the console.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name={type}\n parameters={\n parameters ?? [\n {\n name: \"message\",\n type: \"string\",\n optional: false\n }\n ]\n }>\n <Show when={Boolean(prefix)}>\n {prefix}\n <hbr />\n <hbr />\n </Show>\n {code`\n if (!message) {\n return;\n }\n\n ${\n !theme.labels.message.footer[variant] && timestamp\n ? `const timestamp = \\`\\${colors.text.message.footer.${\n variant\n }(new Date().toLocaleDateString())} \\${colors.border.message.outline.${\n variant\n }(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\")} \\${colors.text.message.footer.${\n variant\n }(new Date().toLocaleTimeString())}\\`; `\n : \"\"\n }\n writeLine(colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].topLeft\n }\") + ${\n theme.labels.message.header[variant] ||\n theme.icons.message.header[variant]\n ? `colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].top\n }\".repeat(4)) + \" \" + ${\n theme.icons.message.header[variant]\n ? `colors.border.message.outline.${variant}(\"${\n theme.icons.message.header[variant]\n }\") + \" \" +`\n : \"\"\n } colors.text.message.header.${variant}(\"${\n theme.labels.message.header[variant]\n }\") + \" \" + colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2 +\n 4 +\n (theme.icons.message.header[variant]\n ? theme.icons.message.header[variant].length +\n 1 +\n (theme.labels.message.header[variant] ? 0 : 1)\n : 0) +\n (theme.labels.message.header[variant]\n ? theme.labels.message.header[variant].length + 2\n : 0) +\n theme.borderStyles.message.outline[variant].topLeft.length +\n theme.borderStyles.message.outline[variant].topRight.length\n }, 0)))`\n : `colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.message.outline[variant].topLeft.length +\n theme.borderStyles.message.outline[variant].topRight.length\n }, 0)))`\n } + colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} });\n splitText(\n message,\n Math.max(process.stdout.columns - ${\n (Math.max(theme.padding.app, 0) +\n Math.max(theme.padding.message, 0)) *\n 2 +\n theme.borderStyles.message.outline[variant].left.length +\n theme.borderStyles.message.outline[variant].right.length\n }, 0)\n ).forEach((line) => {\n writeLine(colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].left +\n \" \".repeat(Math.max(theme.padding.message, 0))\n }\") + colors.text.message.description.${variant}(line) + \" \".repeat(Math.max(process.stdout.columns - (stripAnsi(line).length + ${\n Math.max(theme.padding.app, 0) * 2 +\n Math.max(theme.padding.message, 0) +\n theme.borderStyles.message.outline[variant].left.length +\n theme.borderStyles.message.outline[variant].right.length\n }), 0)) + colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n writeLine(colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].bottomLeft\n }\") + ${\n theme.labels.message.footer[variant] || timestamp\n ? `colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2 +\n 4 +\n (theme.labels.message.footer[variant]\n ? theme.labels.message.footer[variant].length + 2\n : 0) +\n theme.borderStyles.message.outline[variant].bottomLeft.length +\n theme.borderStyles.message.outline[variant].bottomRight.length\n }${\n !theme.labels.message.footer[variant] && timestamp\n ? \" - (stripAnsi(timestamp).length + 2)\"\n : \"\"\n }, 0))) + \" \" + ${\n theme.labels.message.footer[variant]\n ? `colors.text.message.footer.${variant}(\"${theme.labels.message.footer[variant]}\")`\n : timestamp && \"timestamp\"\n } + \" \" + colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\".repeat(4))`\n : `colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.message.outline[variant].bottomLeft.length +\n theme.borderStyles.message.outline[variant].bottomRight.length\n }, 0)))`\n } + colors.border.message.outline.${variant}(\"${\n theme.borderStyles.message.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface BannerFunctionDeclarationProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n title?: string;\n}\n\n/**\n * A component to generate the `banner` function in the `shell-shock:console` builtin module.\n */\nexport function BannerFunctionDeclaration(\n props: BannerFunctionDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n title: titleProp\n } = props;\n\n const theme = useTheme();\n\n const context = usePowerlines<ScriptPresetContext>();\n const command = useCommand();\n\n const header = computed(\n () =>\n `${theme.labels.banner.header[variant] || getAppTitle(context)} v${context.packageJson.version || \"1.0.0\"}`\n );\n const description = computed(\n () => command?.description || getAppDescription(context)\n );\n const footer = computed(() => theme.labels.banner.footer[variant]);\n\n const title = computed(() =>\n titleProp ||\n /(?:cli|command-line|command line)\\s+(?:application|app)?$/.test(\n header.value.toLowerCase()\n )\n ? header.value\n .replace(`v${context.packageJson.version || \"1.0.0\"}`, \"\")\n .trim()\n : `${header.value\n .replace(`v${context.packageJson.version || \"1.0.0\"}`, \"\")\n .trim()} Command-Line Application`\n );\n\n const bannerPadding = computed(\n () =>\n Math.max(theme.padding.app, 0) * 2 +\n theme.borderStyles.banner.outline[variant].left.length +\n theme.borderStyles.banner.outline[variant].right.length\n );\n const totalPadding = computed(\n () => Math.max(theme.padding.banner, 0) * 2 + bannerPadding.value\n );\n\n return (\n <>\n <FunctionDeclaration\n export\n name=\"banner\"\n doc=\"Write the application banner to the console.\">\n {code`\n if (hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isCI || isMinimal) {\n return;\n }\n\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topLeft\n }\") + ${\n theme.icons.banner.header[variant]\n ? `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(4)) + \" \" + ${\n theme.icons.banner.header[variant]\n ? `colors.text.banner.header.${variant}(\"${\n theme.icons.banner.header[variant]\n }\") + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\") + \" \" +`\n : \"\"\n } colors.text.banner.header.${variant}(\"${\n header.value\n }\") + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n 4 +\n (theme.icons.banner.header[variant]\n ? theme.icons.banner.header[variant].length + 3\n : 0) +\n (header.value ? header.value.length + 2 : 0) +\n bannerPadding.value\n }, 0)))`\n : `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} });\n\n splitText(\n colors.text.banner.title.${variant}(\"${title.value}\"),\n Math.max(process.stdout.columns - ${totalPadding.value}, 0)\n ).forEach((line) => {\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.text.banner.description.${\n variant\n }(line) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n\n ${\n command?.title\n ? `writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.text.banner.command.${\n variant\n }(\"${command.title}\") + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `\n : \"\"\n }\n\n splitText(\n ${\n command?.title\n ? \"colors.text.banner.description\"\n : \"colors.text.banner.command\"\n }.${variant}(\"${description.value.replace(/\"/g, '\\\\\"')}\"),\n Math.max(process.stdout.columns - ${totalPadding.value}, 0)\n ).forEach((line) => {\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.text.banner.description.${variant}(line) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n\n writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer.value\n ? `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n 6 +\n (footer.value ? footer.value.length : 0) +\n bannerPadding.value\n }, 0))) + \" \" + ${\n footer.value\n ? `colors.text.banner.footer.${variant}(\"${footer.value}\")`\n : \"\"\n } + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(4))`\n : `colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `wrapAnsi` function in the `shell-shock:console` builtin module.\n */\nexport function WrapAnsiFunction() {\n return (\n <>\n <TSDoc heading=\"Applies ANSI escape codes to a string.\">\n <TSDocRemarks>\n {`Split text by /\\\\\\\\u001b[\\\\[|\\\\]][0-9;]*m/ and wrap non-ANSI parts with open/closeing tags.`}\n </TSDocRemarks>\n\n <TSDocExample>\n {`const result = wrapAnsi(\"Hello\\\\\\\\u001b[31mWorld\\\\\\\\u001b[0mAgain\", \"\\\\\\\\u001b[36m\", \"\\\\\\\\u001b[39\");\\nconsole.log(result); // \"\\\\\\\\u001b[36mHello\\\\\\\\u001b[39\\\\\\\\u001b[31mWorld\\\\\\\\u001b[0m\\\\\\\\u001b[36mAgain\\\\\\\\u001b[39\"`}\n </TSDocExample>\n\n <TSDocParam name=\"text\">\n {`The text to apply ANSI codes to.`}\n </TSDocParam>\n <TSDocParam name=\"open\">{`The opening ANSI code.`}</TSDocParam>\n <TSDocParam name=\"close\">{`The closing ANSI code.`}</TSDocParam>\n <TSDocReturns>{`The text with ANSI codes applied.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n name=\"wrapAnsi\"\n parameters={[\n {\n name: \"text\",\n type: \"string | number\",\n optional: false\n },\n {\n name: \"open\",\n type: \"string\",\n optional: false\n },\n { name: \"close\", type: \"string\", optional: false }\n ]}>\n {code`const str = String(text);\n const tokens = [] as string[];\n\n let last = 0;\n let match: RegExpExecArray | null;\n while ((match = /\\\\\\\\u001b[\\\\[|\\\\]][0-9;]*m/g.exec(str)) !== null) {\n if (match.index > last) tokens.push(str.slice(last, match.index));\n tokens.push(match[0]);\n last = match.index + match[0].length;\n }\n\n if (last < str.length) {\n tokens.push(str.slice(last));\n }\n\n let result = \"\";\n for (let i = 0; i < tokens.length; i++) {\n const seg = tokens[i]!;\n if (/^\\\\\\\\u001b[\\\\[|\\\\]][0-9;]*m$/.test(seg)) {\n result += seg;\n continue;\n }\n\n if (!seg) {\n continue;\n }\n\n result += i > 0 && /^\\\\\\\\u001b[\\\\[|\\\\]][0-9;]*m$/.test(tokens[i - 1]!) && i + 1 < tokens.length && /^\\\\\\\\u001b[\\\\[|\\\\]][0-9;]*m$/.test(tokens[i + 1]!)\n ? seg\n : \\`\\${open}\\${seg}\\${close}\\`;\n }\n\n return result;\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `stripAnsi` function in the `shell-shock:console` builtin module.\n */\nexport function StripAnsiFunctionDeclaration() {\n return (\n <>\n <TSDoc heading=\"Removes ANSI escape codes from a string.\">\n <TSDocExample>\n {`const result = stripAnsi(\"Hello\\\\\\\\u001b[31mWorld\\\\\\\\u001b[0mAgain\"); // \"HelloWorldAgain\"`}\n </TSDocExample>\n\n <TSDocParam name=\"text\">\n {`The text to strip ANSI codes from.`}\n </TSDocParam>\n <TSDocReturns>{`The text with ANSI codes removed.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"stripAnsi\"\n parameters={[\n {\n name: \"text\",\n type: \"string | number\",\n optional: false\n }\n ]}>\n {code`return String(text).replace(new RegExp([\n String.raw\\`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\\`,\n String.raw\\`(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\\`\n ].join(\"|\"), \"g\"), \"\");`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `stripAnsi` function in the `shell-shock:console` builtin module.\n */\nexport function DividerFunctionDeclaration() {\n const theme = useTheme();\n\n return (\n <>\n <InterfaceDeclaration\n export\n name=\"DividerOptions\"\n doc=\"Options for formatting the divider line written to console.\">\n <InterfaceMember\n name=\"width\"\n optional\n type=\"number\"\n doc=\"The width of the divider line. If not specified, the divider will span the full width of the console, minus the padding.\"\n />\n <hbr />\n <TSDoc heading=\"The border of the divider line. Can be 'primary', 'secondary', 'tertiary', or 'none'. If not specified, the default border style will be used.\">\n <TSDocRemarks>\n {`The value provided will determine the border style and color based on the current theme configuration.`}\n </TSDocRemarks>\n <TSDocDefaultValue\n type={ReflectionKind.string}\n defaultValue=\"primary\"\n />\n </TSDoc>\n <InterfaceMember\n name=\"border\"\n optional\n type='\"primary\" | \"secondary\" | \"tertiary\"'\n doc=\"The border style/color of the divider line. Can be 'primary', 'secondary', 'tertiary', or 'none'. If not specified, the default border style will be used.\"\n />\n <hbr />\n <TSDoc heading=\"Padding to apply to the line\">\n <TSDocRemarks>\n {`The amount of padding (in spaces) to apply to the line when writing to the console. This value is applied to both the left and right sides of the line. If not specified, the default padding defined in the current theme configuration will be used.`}\n </TSDocRemarks>\n <TSDocDefaultValue\n type={ReflectionKind.number}\n defaultValue={theme.padding.app * 4}\n />\n </TSDoc>\n <InterfaceMember name=\"padding\" optional type=\"number\" />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <TSDoc heading=\"Write a divider line to the console.\">\n <TSDocExample>\n {`divider({ width: 50, border: \"primary\" }); // Writes a divider line of width 50 with primary border.`}\n </TSDocExample>\n\n <TSDocParam name=\"options\">\n {`Options for formatting the divider line.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"divider\"\n parameters={[\n {\n name: \"options\",\n type: \"DividerOptions\",\n optional: false\n }\n ]}>\n {code`const padding = options.padding ?? ${Math.max(theme.padding.app, 1) * 4};\n const width = options.width ?? (process.stdout.columns - (Math.max(padding, 0) * 2));\n const border = options.border === \"tertiary\" ? colors.border.app.divider.tertiary(\"${\n theme.borderStyles.app.divider.tertiary.top\n }\") : options.border === \"secondary\" ? colors.border.app.divider.secondary(\"${\n theme.borderStyles.app.divider.secondary.top\n }\") : colors.border.app.divider.primary(\"${\n theme.borderStyles.app.divider.primary.top\n }\");\n\n writeLine(\" \".repeat(Math.max(padding - ${theme.padding.app}, 0)) + border.repeat(Math.max(width / ${\n theme.borderStyles.app.divider.primary.top.length ?? 1\n }, 0)));\n `}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A component to generate the `link` function in the `shell-shock:console` builtin module.\n */\nexport function LinkFunctionDeclaration() {\n return (\n <>\n <TSDoc heading=\"Render a hyperlink in the console.\">\n <TSDocParam name=\"url\">\n {`The URL to render as a hyperlink.`}\n </TSDocParam>\n <TSDocParam name=\"text\">\n {`The text to display for the link. If not provided, the URL will be used as the text.`}\n </TSDocParam>\n <TSDocReturns>{`The formatted hyperlink string.`}</TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n export\n name=\"link\"\n parameters={[\n {\n name: \"url\",\n type: \"string\",\n optional: false\n },\n { name: \"text\", type: \"string\", optional: true }\n ]}>\n <IfStatement condition={code`isHyperlinkSupported()`}>\n {code`return \\`\\\\u001b]8;;\\${url}\\\\u0007\\${text ?? url}\\\\u001b]8;;\\\\u0007\\`;`}\n </IfStatement>\n <hbr />\n <IfStatement condition={code`isColorSupported`}>\n {code`return colors.underline(colors.text.body.link(\\`$\\{text ?? url\\} $\\{url\\}\\`));`}\n </IfStatement>\n <hbr />\n {code`return \\`$\\{text ?? url\\} $\\{url\\}\\`;`}\n </FunctionDeclaration>\n </>\n );\n}\n\nfunction extractBorderOptionsObject(\n direction:\n | \"top\"\n | \"right\"\n | \"bottom\"\n | \"left\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottomRight\",\n theme: ThemeResolvedConfig\n): string {\n return `borderOptions.${\n direction\n } === \"primary\" ? colors.border.app.table.primary(\"${\n theme.borderStyles.app.table.primary[direction]\n }\") : borderOptions.${\n direction\n } === \"secondary\" ? colors.border.app.table.secondary(\"${\n theme.borderStyles.app.table.secondary[direction]\n }\") : borderOptions.${\n direction\n } === \"tertiary\" ? colors.border.app.table.tertiary(\"${\n theme.borderStyles.app.table.tertiary[direction]\n }\") : !borderOptions.${direction} || borderOptions.${\n direction\n } === \"none\" ? \"\" : borderOptions.${direction}`;\n}\n\nfunction extractBorderOptionsString(\n direction:\n | \"top\"\n | \"right\"\n | \"bottom\"\n | \"left\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottomLeft\"\n | \"bottomRight\",\n theme: ThemeResolvedConfig\n): string {\n return `borderOptions === \"primary\" ? colors.border.app.table.primary(\"${\n theme.borderStyles.app.table.primary[direction]\n }\") : borderOptions === \"secondary\" ? colors.border.app.table.secondary(\"${\n theme.borderStyles.app.table.secondary[direction]\n }\") : borderOptions === \"tertiary\" ? colors.border.app.table.tertiary(\"${\n theme.borderStyles.app.table.tertiary[direction]\n }\") : !borderOptions || borderOptions === \"none\" ? \"\" : borderOptions`;\n}\n\n/**\n * Props for the TableFunctionDeclaration component.\n */\nexport type TableFunctionDeclarationProps = Omit<\n FunctionDeclarationProps,\n \"parameters\" | \"name\"\n>;\n\n/**\n * A component to generate the table functions in the `shell-shock:console` builtin module.\n */\nexport function TableFunctionDeclaration(props: TableFunctionDeclarationProps) {\n const theme = useTheme();\n\n return (\n <>\n <TypeDeclaration\n export\n name=\"BorderOption\"\n doc=\"The border options applied to table cells.\">\n {code`\"primary\" | \"secondary\" | \"tertiary\" | \"none\" | string; `}\n </TypeDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n export\n name=\"TableOutputOptions\"\n doc=\"Options to customize the output of the {@link table} function.\">\n <TSDoc heading=\"Border variant for the table cell.\">\n <TSDocRemarks>\n {`The border variant to use for the table cell. This determines the color and style of the border around the cell.`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.property}\n defaultValue=\"primary\"\n />\n </TSDoc>\n <InterfaceMember\n name=\"border\"\n optional\n type=\"BorderOption | { top?: BorderOption; right?: BorderOption; bottom?: BorderOption; left?: BorderOption; topLeft?: BorderOption; topRight?: BorderOption; bottomLeft?: BorderOption; bottomRight?: BorderOption; }\"\n />\n <hbr />\n <TSDoc heading=\"Padding for the table cell.\">\n <TSDocRemarks>\n {`The amount of padding (in spaces) to apply to the table cell. This value is applied to both the left and right sides of the cell. If not specified, the default table padding defined in the current theme configuration will be used.`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.property}\n defaultValue={`\\`${theme.padding.table}\\``}\n />\n </TSDoc>\n <InterfaceMember name=\"padding\" optional type=\"number\" />\n <hbr />\n <TSDoc heading=\"Alignment for the table cell.\">\n <TSDocRemarks>\n {`The alignment for the table cell. This determines how the text within the cell is aligned. If not specified, the default alignment is \"left\".`}\n </TSDocRemarks>\n <hbr />\n <TSDocDefaultValue\n type={ReflectionKind.property}\n defaultValue=\"left\"\n />\n </TSDoc>\n <InterfaceMember\n name=\"align\"\n optional\n type='\"left\" | \"right\" | \"center\"'\n />\n <hbr />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n export\n name=\"TableCellOptions\"\n extends=\"TableOutputOptions\"\n doc=\"Options for a specific table cell provided to the {@link table} function.\">\n <InterfaceMember\n name=\"value\"\n optional\n type=\"string\"\n doc=\"The actual string value of the table cell.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n export\n name=\"TableRowOptions\"\n extends=\"TableOutputOptions\"\n doc=\"Options for a specific table row provided to the {@link table} function.\">\n <InterfaceMember\n name=\"values\"\n optional\n type=\"(string | TableCellOptions)[]\"\n doc=\"The actual string values of the table row's cells.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n export\n name=\"TableOptions\"\n extends=\"TableOutputOptions\"\n doc=\"Options for a specific table cell provided to the {@link table} function.\">\n <InterfaceMember\n name=\"values\"\n optional\n type=\"(string | TableCellOptions)[][]\"\n doc=\"The actual string values of the table's rows' cells.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n name=\"Dimensions\"\n doc=\"The height and width for a specific table/cell used internally in the {@link table} function.\">\n <InterfaceMember\n name=\"height\"\n type=\"number\"\n doc=\"The height of the row/cell (where 1 is a single line in the terminal).\"\n />\n <hbr />\n <InterfaceMember\n name=\"width\"\n type=\"number\"\n doc=\"The width of the row/cell (where 1 is a single character in the terminal).\"\n />\n <hbr />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <InterfaceDeclaration\n name=\"TableCellBorder\"\n doc=\"The resolved complete border styles for a table cell.\">\n <InterfaceMember\n name=\"top\"\n type=\"string\"\n doc=\"The top border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"bottom\"\n type=\"string\"\n doc=\"The bottom border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"right\"\n type=\"string\"\n doc=\"The right border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"left\"\n type=\"string\"\n doc=\"The left border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"topLeft\"\n type=\"string\"\n doc=\"The top-left border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"topRight\"\n type=\"string\"\n doc=\"The top-right border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"bottomLeft\"\n type=\"string\"\n doc=\"The bottom-left border style of the table cell.\"\n />\n <hbr />\n <InterfaceMember\n name=\"bottomRight\"\n type=\"string\"\n doc=\"The bottom-right border style of the table cell.\"\n />\n <hbr />\n </InterfaceDeclaration>\n <hbr />\n <hbr />\n <TypeDeclaration\n name=\"TableCell\"\n doc=\"The internal state of a formatted table cell in the {@link table} function.\">\n {code`Required<Omit<TableCellOptions, \"border\">> & Dimensions & {\n border: TableCellBorder;\n };\n `}\n </TypeDeclaration>\n <hbr />\n <hbr />\n <TSDoc heading=\"Write a table to the console.\">\n <TSDocRemarks>\n {`This function writes a table to the console, applying the appropriate padding as defined in the current theme configuration and wrapping as needed.`}\n </TSDocRemarks>\n <hbr />\n <TSDocParam name=\"options\">\n {`Options to customize the table output.`}\n </TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n {...props}\n name=\"table\"\n parameters={[\n {\n name: \"options\",\n type: \"TableOptions | TableRowOptions[] | TableCellOptions[][] | string[] | string[][]\",\n optional: false\n }\n ]}>\n <IfStatement\n condition={code`!options ||\n (!Array.isArray(options) && (typeof options !== \"object\" || !options.values || !Array.isArray(options.values) || options.values.length === 0)) ||\n (Array.isArray(options) && !options.every(item => typeof item === \"object\" || typeof item === \"string\" || Array.isArray(item))) `}>\n {code`return;`}\n </IfStatement>\n <hbr />\n <hbr />\n <VarDeclaration\n let\n name=\"cells\"\n type={`TableCell[][]`}\n initializer={code`[];`}\n />\n <hbr />\n {code`\n const extractTableCell = (cell: string | TableCellOptions, opts?: TableOutputOptions): TableCell => {\n if (typeof cell === \"string\") {\n const borderOptions = opts?.border || \"primary\";\n\n let border = {} as TableCellBorder;\n if (typeof borderOptions === \"object\") {\n border = {\n top: ${extractBorderOptionsObject(\"top\", theme)},\n bottom: ${extractBorderOptionsObject(\"bottom\", theme)},\n left: ${extractBorderOptionsObject(\"left\", theme)},\n right: ${extractBorderOptionsObject(\"right\", theme)},\n topLeft: ${extractBorderOptionsObject(\"topLeft\", theme)},\n topRight: ${extractBorderOptionsObject(\"topRight\", theme)},\n bottomLeft: ${extractBorderOptionsObject(\"bottomLeft\", theme)},\n bottomRight: ${extractBorderOptionsObject(\"bottomRight\", theme)},\n };\n } else {\n border.top = ${extractBorderOptionsString(\"top\", theme)};\n border.bottom = ${extractBorderOptionsString(\"bottom\", theme)};\n border.left = ${extractBorderOptionsString(\"left\", theme)};\n border.right = ${extractBorderOptionsString(\"right\", theme)};\n border.topLeft = ${extractBorderOptionsString(\"topLeft\", theme)};\n border.topRight = ${extractBorderOptionsString(\"topRight\", theme)};\n border.bottomLeft = ${extractBorderOptionsString(\"bottomLeft\", theme)};\n border.bottomRight = ${extractBorderOptionsString(\"bottomRight\", theme)};\n }\n\n const padding = Math.max(0, opts?.padding ?? ${theme.padding.table});\n const value = cell ?? \"\";\n const width = stripAnsi(value).length + padding * 2;\n\n return {\n value,\n height: 1,\n width,\n border,\n padding,\n align: opts?.align || \"left\",\n };\n } else {\n const borderOptions = cell.border || opts?.border || \"primary\";\n\n let border = {} as TableCellBorder;\n if (typeof borderOptions === \"object\") {\n border = {\n top: ${extractBorderOptionsObject(\"top\", theme)},\n bottom: ${extractBorderOptionsObject(\"bottom\", theme)},\n left: ${extractBorderOptionsObject(\"left\", theme)},\n right: ${extractBorderOptionsObject(\"right\", theme)},\n topLeft: ${extractBorderOptionsObject(\"topLeft\", theme)},\n topRight: ${extractBorderOptionsObject(\"topRight\", theme)},\n bottomLeft: ${extractBorderOptionsObject(\"bottomLeft\", theme)},\n bottomRight: ${extractBorderOptionsObject(\"bottomRight\", theme)},\n };\n } else {\n border.top = ${extractBorderOptionsString(\"top\", theme)};\n border.bottom = ${extractBorderOptionsString(\"bottom\", theme)};\n border.left = ${extractBorderOptionsString(\"left\", theme)};\n border.right = ${extractBorderOptionsString(\"right\", theme)};\n border.topLeft = ${extractBorderOptionsString(\"topLeft\", theme)};\n border.topRight = ${extractBorderOptionsString(\"topRight\", theme)};\n border.bottomLeft = ${extractBorderOptionsString(\"bottomLeft\", theme)};\n border.bottomRight = ${extractBorderOptionsString(\"bottomRight\", theme)};\n }\n\n const padding = Math.max(0, cell.padding ?? opts?.padding ?? ${\n theme.padding.table\n });\n const value = cell.value ?? \"\";\n const width = stripAnsi(value).length + padding * 2;\n\n return {\n value,\n height: 1,\n width,\n border,\n padding,\n align: cell.align || opts?.align || \"left\",\n };\n }\n };\n `}\n <hbr />\n <IfStatement condition={code`Array.isArray(options)`}>\n <IfStatement\n condition={code`options.every(row => typeof row === \"string\" || (typeof row === \"object\" && !Array.isArray(row) && !(\"values\" in row)))`}>\n {code`cells.push(options.map(cell => extractTableCell(cell as string | TableCellOptions)));`}\n </IfStatement>\n <ElseClause>\n {code`\n cells.push(\n ...options.map(row => Array.isArray(row)\n ? row.reduce((cellRow, cell) => {\n cellRow.push(extractTableCell(cell));\n return cellRow;\n }, [] as TableCell[])\n : (row as TableRowOptions).values?.reduce((cellRow, cell) => {\n cellRow.push(extractTableCell(cell, row as TableRowOptions));\n return cellRow;\n }, [] as TableCell[]) ?? []\n )\n );\n `}\n </ElseClause>\n </IfStatement>\n <ElseClause>\n {code`\n cells.push(\n ...options.values!.map(row => Array.isArray(row)\n ? row.reduce((cellRow, cell) => {\n cellRow.push(extractTableCell(cell));\n return cellRow;\n }, [] as TableCell[])\n : (row as TableRowOptions).values?.reduce((cellRow, cell) => {\n cellRow.push(extractTableCell(cell, options));\n return cellRow;\n }, [] as TableCell[]) ?? []\n )\n );\n\n `}\n </ElseClause>\n <hbr />\n {code`\ncells = cells.filter(row => row.length > 0);\nif (cells.length === 0) {\n return;\n}\n\n// Calculate table dimensions\nlet colWidths = [] as number[];\nlet rowDims = [] as Dimensions[];\n\nconst calculateRowDimensions = () => {\n colWidths = [];\n return cells.reduce((dims, row) => {\n dims.push(row.reduce((dim, cell, index) => {\n dim.width += cell.width;\n if (cell.height > dim.height) {\n dim.height = cell.height;\n }\n if (!colWidths[index] || cell.width > colWidths[index]!) {\n colWidths[index] = cell.width;\n }\n\n return dim;\n }, { width: 0, height: 0 } as Dimensions));\n\n return dims;\n }, [] as Dimensions[]);\n}\n\nlet recalculate!: boolean;\ndo {\n recalculate = false;\n rowDims = calculateRowDimensions();\n\n rowDims.forEach((row, rowIndex) => {\n if (!recalculate && row.width > Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n }, 0)) {\n const cell = cells[rowIndex]!.reduce((largestCell, cell) => {\n if (cell.width > largestCell.width) {\n return cell;\n }\n return largestCell;\n }, cells[rowIndex]![0]!);\n\n const lines = splitText(\n cell.value,\n Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n } - (row.width - (cell.width - cell.padding * 2)), 0)\n );\n\n cell.value = lines.join(\"\\\\n\");\n cell.height = lines.length;\n cell.width = Math.max(...lines.map(line => stripAnsi(line).length)) + cell.padding * 2;\n\n recalculate = true;\n }\n });\n\n if (!recalculate && colWidths.reduce((a, b) => a + b, 0) > Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n }, 0)) {\n let colIndex = 0;\n const cell = cells.reduce((ret, row) => {\n return row.reduce((largest, current, i) => {\n if (largest.width < current.width) {\n colIndex = i;\n return current;\n }\n return largest;\n }, ret);\n }, cells[0]![0]!);\n\n const lines = splitText(\n cell.value,\n Math.max(process.stdout.columns - ${\n Math.max(theme.padding.app, 0) * 2\n } - (colWidths.filter((_, i) => i !== colIndex).reduce((a, b) => a + b, 0)) - cell.padding * 2, 0)\n );\n\n cell.value = lines.join(\"\\\\n\");\n cell.height = lines.length;\n cell.width = Math.max(...lines.map(line => stripAnsi(line).length)) + cell.padding * 2;\n\n recalculate = true;\n }\n} while (recalculate);\n\n// Render table\ncells.forEach((row, rowIndex) => {\n const outputs = [] as string[][];\n row.forEach((cell, colIndex) => {\n const lines = cell.value.split(\"\\\\n\");\n while (lines.length < rowDims[rowIndex]!.height) {\n lines.push(\"\");\n }\n\n outputs.push(lines.map(line => {\n let paddedContent = \"\";\n switch (cell.align) {\n case \"right\":\n paddedContent = \" \".repeat(Math.max(colWidths[colIndex] - stripAnsi(line).length - cell.padding, 0)) + line + \" \".repeat(cell.padding);\n break;\n case \"center\":\n const leftPadding = Math.floor((colWidths[colIndex] - stripAnsi(line).length - cell.padding) / 2);\n const rightPadding = colWidths[colIndex] - stripAnsi(line).length - leftPadding;\n paddedContent = \" \".repeat(leftPadding) + line + \" \".repeat(rightPadding);\n break;\n case \"left\":\n default:\n paddedContent = \" \".repeat(cell.padding) + line + \" \".repeat(Math.max(colWidths[colIndex] - stripAnsi(line).length - cell.padding, 0));\n break;\n }\n\n if (colIndex === row.length - 1) {\n return cell.border.left + paddedContent + cell.border.right;\n } else {\n return cell.border.left + paddedContent;\n }\n }));\n });\n\n for (let index = 0; index < rowDims[rowIndex]!.height; index++) {\n writeLine(outputs.map(output => output[index] ?? \"\").join(\"\"));\n }\n});\n`}\n </FunctionDeclaration>\n </>\n );\n}\n\n/**\n * A built-in console utilities module for Shell Shock.\n */\nexport function ConsoleBuiltin() {\n return (\n <BuiltinFile\n id=\"console\"\n description=\"A collection of helper utilities to assist in generating content meant for display in the console.\"\n imports={{\n \"@shell-shock/plugin-theme/types/theme\": [\n { name: \"ThemeColorsResolvedConfig\", type: true }\n ]\n }}\n builtinImports={{\n utils: [\n \"hasFlag\",\n \"isMinimal\",\n \"isColorSupported\",\n \"colorSupportLevels\",\n \"isHyperlinkSupported\"\n ],\n env: [\"env\", \"isDevelopment\", \"isDebug\", \"isCI\"]\n }}>\n <StripAnsiFunctionDeclaration />\n <hbr />\n <hbr />\n <WrapAnsiFunction />\n <hbr />\n <hbr />\n <ColorsDeclaration />\n <hbr />\n <hbr />\n <WriteLineFunctionDeclaration />\n <hbr />\n <hbr />\n <LinkFunctionDeclaration />\n <hbr />\n <hbr />\n <DividerFunctionDeclaration />\n <hbr />\n <hbr />\n <BannerFunctionDeclaration />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"help\"\n variant=\"help\"\n consoleFnName=\"log\"\n description=\"help\"\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"success\"\n variant=\"success\"\n consoleFnName=\"info\"\n description=\"success\"\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"info\"\n variant=\"info\"\n consoleFnName=\"info\"\n description=\"informational\"\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"debug\"\n variant=\"debug\"\n consoleFnName=\"debug\"\n description=\"debug\"\n timestamp\n prefix={\n <IfStatement\n condition={code`!isDevelopment && !isDebug && env.LOG_LEVEL !== \"debug\"`}>{code`return; `}</IfStatement>\n }\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"verbose\"\n variant=\"debug\"\n consoleFnName=\"debug\"\n description=\"verbose\"\n timestamp\n prefix={\n <IfStatement\n condition={code`!(isDevelopment || isDebug || env.LOG_LEVEL === \"debug\" || hasFlag([\"verbose\", \"verbose=true\", \"verbose=always\"]))`}>{code`return; `}</IfStatement>\n }\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"warn\"\n variant=\"warning\"\n consoleFnName=\"warn\"\n description=\"warning\"\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"danger\"\n variant=\"danger\"\n consoleFnName=\"error\"\n description=\"destructive/danger\"\n />\n <hbr />\n <hbr />\n <MessageFunctionDeclaration\n type=\"error\"\n variant=\"error\"\n consoleFnName=\"error\"\n description=\"error\"\n timestamp\n parameters={[\n {\n name: \"err\",\n type: \"string | Error\",\n optional: false\n }\n ]}\n prefix={\n <>\n <VarDeclaration let name=\"message\" type=\"string | undefined\" />\n <hbr />\n <hbr />\n <IfStatement condition={code`(err as Error)?.message`}>\n {code`message = (err as Error).message;`}\n <IfStatement\n condition={code`env.STACKTRACE && (err as Error)?.stack`}>\n {code`message += \" \\\\n\\\\n\" + (err as Error).stack;`}\n </IfStatement>\n </IfStatement>\n <ElseClause>{code`message = String(err);`}</ElseClause>\n </>\n }\n />\n <hbr />\n <hbr />\n <TableFunctionDeclaration />\n <hbr />\n <hbr />\n </BuiltinFile>\n );\n}\n"],"mappings":"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"}