@shell-shock/plugin-banner 0.1.27 → 0.1.29

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.
@@ -31,7 +31,8 @@ function BannerBuiltin(props) {
31
31
  "isUnicodeSupported",
32
32
  "isMinimal",
33
33
  "sleep",
34
- "isInteractive"
34
+ "isInteractive",
35
+ "getTerminalSize"
35
36
  ],
36
37
  state: [
37
38
  "useGlobal",
@@ -28,7 +28,8 @@ function BannerBuiltin(props) {
28
28
  "isUnicodeSupported",
29
29
  "isMinimal",
30
30
  "sleep",
31
- "isInteractive"
31
+ "isInteractive",
32
+ "getTerminalSize"
32
33
  ],
33
34
  state: [
34
35
  "useGlobal",
@@ -1 +1 @@
1
- {"version":3,"file":"banner-builtin.mjs","names":[],"sources":["../../src/components/banner-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 { Show, splitProps } from \"@alloy-js/core\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport type { BuiltinFileProps } from \"@powerlines/plugin-alloy/typescript/components/builtin-file\";\nimport { BuiltinFile } from \"@powerlines/plugin-alloy/typescript/components/builtin-file\";\nimport type { CommandTree } from \"@shell-shock/core\";\nimport {\n getAppTitle,\n isDynamicPathSegment\n} from \"@shell-shock/core/plugin-utils\";\nimport { joinPaths } from \"@stryke/path\";\nimport defu from \"defu\";\nimport type { BannerPluginContext } from \"../types\";\nimport { BannerFunctionDeclaration } from \"./banner-function-declaration\";\n\nexport type BannerBuiltinProps = Omit<\n BuiltinFileProps,\n \"id\" | \"description\"\n> & {\n /**\n * The command to generate the `banner` function declaration for.\n */\n command: CommandTree;\n};\n\n/**\n * A built-in banner module for Shell Shock.\n */\nexport function BannerBuiltin(props: BannerBuiltinProps) {\n const [{ command, children }, rest] = splitProps(props, [\n \"command\",\n \"children\"\n ]);\n const context = usePowerlines<BannerPluginContext>();\n\n return (\n <BuiltinFile\n id={joinPaths(\n \"banner\",\n ...command.segments.filter(segment => !isDynamicPathSegment(segment))\n )}\n description={\n command.path\n ? `A collection of utility functions that assist in displaying banner information for the ${command.title} command.`\n : `A collection of utility functions that assist in displaying banner information for the ${getAppTitle(\n context,\n true\n )} command-line interface application.`\n }\n {...rest}\n builtinImports={defu(rest.builtinImports ?? {}, {\n utils: [\"isUnicodeSupported\", \"isMinimal\", \"sleep\", \"isInteractive\"],\n state: [\"useGlobal\", \"hasFlag\", \"isHelp\", \"useMeta\"],\n console: [\n \"splitText\",\n \"writeLine\",\n \"help\",\n \"bold\",\n \"table\",\n \"stripAnsi\",\n \"textColors\",\n \"borderColors\"\n ]\n })}>\n <Show\n when={Boolean(children)}\n fallback={<BannerFunctionDeclaration command={command} />}>\n {children}\n </Show>\n </BuiltinFile>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAuCA,SAAW,cAAW,OAAA;CACrB,MAAA,CAAA,WAEC,YACG,QAAQ,WAAQ,OAAU,CAAC,WAAW,WAAA,CAAA;CACzC,MAAA,UAAA,eAAA;AACF,QAAO,gBAAS,aAAqB,WAAA;EACnC,IAAM,KAAG;AACN,UAAQ,UAAA,UAAA,GAAA,QAAA,SAAA,QAAA,YAAA,CAAA,qBAAA,QAAA,CAAA,CAAA;;EAET,IAAA,cAAA;AACF,UAAM,WAAU,CAAA,CAAA,QAAc,KAAA,EAAA,GAAA,0FAAsB,QAAA,MAAA,aAAA,0FAAA,YAAA,SAAA,KAAA,CAAA;;EAEpD,EAAA,MAAO;EACL,IAAC,iBAAA;AACC,UAAI,KAAA,KAAS,kBAAA,EAAA,EAAA;IACX,OAAO;KAAC;KAAA;KAAA;KAAA;KAAA;IACR,OAAG;KAAA;KAAiB;KAAO;KAAY;KAAA;IACxC,SAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IACD,CAAA;;EAEF,IAAI,WAAO;AACT,UAAO,gBAAgB,MAAQ;IAC7B,IAAI,OAAE;AACJ,YAAI,QAAA,SAAA;;IAER,IAAA,WAAA;AACI,YAAI,gBAAA,2BAAA,EACO,SACb,CAAA;;IAES;IACV,CAAC;;EAEL,CAAC,CAAC"}
1
+ {"version":3,"file":"banner-builtin.mjs","names":[],"sources":["../../src/components/banner-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 { Show, splitProps } from \"@alloy-js/core\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport type { BuiltinFileProps } from \"@powerlines/plugin-alloy/typescript/components/builtin-file\";\nimport { BuiltinFile } from \"@powerlines/plugin-alloy/typescript/components/builtin-file\";\nimport type { CommandTree } from \"@shell-shock/core\";\nimport {\n getAppTitle,\n isDynamicPathSegment\n} from \"@shell-shock/core/plugin-utils\";\nimport { joinPaths } from \"@stryke/path\";\nimport defu from \"defu\";\nimport type { BannerPluginContext } from \"../types\";\nimport { BannerFunctionDeclaration } from \"./banner-function-declaration\";\n\nexport type BannerBuiltinProps = Omit<\n BuiltinFileProps,\n \"id\" | \"description\"\n> & {\n /**\n * The command to generate the `banner` function declaration for.\n */\n command: CommandTree;\n};\n\n/**\n * A built-in banner module for Shell Shock.\n */\nexport function BannerBuiltin(props: BannerBuiltinProps) {\n const [{ command, children }, rest] = splitProps(props, [\n \"command\",\n \"children\"\n ]);\n const context = usePowerlines<BannerPluginContext>();\n\n return (\n <BuiltinFile\n id={joinPaths(\n \"banner\",\n ...command.segments.filter(segment => !isDynamicPathSegment(segment))\n )}\n description={\n command.path\n ? `A collection of utility functions that assist in displaying banner information for the ${command.title} command.`\n : `A collection of utility functions that assist in displaying banner information for the ${getAppTitle(\n context,\n true\n )} command-line interface application.`\n }\n {...rest}\n builtinImports={defu(rest.builtinImports ?? {}, {\n utils: [\n \"isUnicodeSupported\",\n \"isMinimal\",\n \"sleep\",\n \"isInteractive\",\n \"getTerminalSize\"\n ],\n state: [\"useGlobal\", \"hasFlag\", \"isHelp\", \"useMeta\"],\n console: [\n \"splitText\",\n \"writeLine\",\n \"help\",\n \"bold\",\n \"table\",\n \"stripAnsi\",\n \"textColors\",\n \"borderColors\"\n ]\n })}>\n <Show\n when={Boolean(children)}\n fallback={<BannerFunctionDeclaration command={command} />}>\n {children}\n </Show>\n </BuiltinFile>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAuCA,SAAW,cAAW,OAAA;CACrB,MAAA,CAAA,WAEC,YACG,QAAQ,WAAQ,OAAU,CAAC,WAAW,WAAA,CAAA;CACzC,MAAA,UAAA,eAAA;AACF,QAAO,gBAAS,aAAqB,WAAA;EACnC,IAAM,KAAG;AACN,UAAQ,UAAA,UAAA,GAAA,QAAA,SAAA,QAAA,YAAA,CAAA,qBAAA,QAAA,CAAA,CAAA;;EAET,IAAA,cAAA;AACF,UAAM,WAAU,CAAA,CAAA,QAAc,KAAA,EAAA,GAAA,0FAAsB,QAAA,MAAA,aAAA,0FAAA,YAAA,SAAA,KAAA,CAAA;;EAEpD,EAAA,MAAO;EACL,IAAC,iBAAA;AACC,UAAI,KAAA,KAAS,kBAAA,EAAA,EAAA;IACX,OAAO;KAAC;KAAA;KAAA;KAAA;KAAA;KAAA;IACR,OAAG;KAAA;KAAiB;KAAO;KAAY;KAAA;IACxC,SAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IACD,CAAA;;EAEF,IAAI,WAAO;AACT,UAAO,gBAAgB,MAAQ;IAC7B,IAAI,OAAE;AACJ,YAAI,QAAA,SAAA;;IAER,IAAA,WAAA;AACI,YAAI,gBAAA,2BAAA,EACO,SACb,CAAA;;IAEG;IACJ,CAAC;;EAEL,CAAC,CAAC"}
@@ -64,7 +64,7 @@ function BannerFunctionBodyDeclaration(props) {
64
64
  }),
65
65
  (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
66
66
  (0, _alloy_js_core_jsx_runtime.memo)(() => _alloy_js_core.code`
67
- writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topLeft}") + ${theme.icons.banner.header[variant] ? `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(6)) + " " + ${theme.icons.banner.header[variant] ? `textColors.banner.header.${variant}("${theme.icons.banner.header[variant]}") + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}") + " " +` : ""} bold(textColors.banner.header.${variant}("${header}")) + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${6 + (theme.icons.banner.header[variant] ? theme.icons.banner.header[variant].length + 3 : 0) + (header ? header.length + 2 : 0) + bannerPadding.value}, 0)))` : `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} }); `),
67
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topLeft}") + ${theme.icons.banner.header[variant] ? `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(6)) + " " + ${theme.icons.banner.header[variant] ? `textColors.banner.header.${variant}("${theme.icons.banner.header[variant]}") + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}") + " " +` : ""} bold(textColors.banner.header.${variant}("${header}")) + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(getTerminalSize().columns - ${6 + (theme.icons.banner.header[variant] ? theme.icons.banner.header[variant].length + 3 : 0) + (header ? header.length + 2 : 0) + bannerPadding.value}, 0)))` : `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(getTerminalSize().columns - ${bannerPadding.value}, 0)))`} + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} }); `),
68
68
  (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
69
69
  when: !!children,
70
70
  get fallback() {
@@ -79,9 +79,9 @@ function BannerFunctionBodyDeclaration(props) {
79
79
  },
80
80
  hardline: true,
81
81
  children: (line) => _alloy_js_core.code`splitText("${line}",
82
- Math.max(process.stdout.columns - ${totalPadding.value}, 20)
82
+ Math.max(getTerminalSize().columns - ${totalPadding.value}, 20)
83
83
  ).forEach((line) => {
84
- writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + bold(textColors.banner.title.${variant}(line)) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
84
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((getTerminalSize().columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + bold(textColors.banner.title.${variant}(line)) + " ".repeat(Math.max(Math.ceil((getTerminalSize().columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
85
85
  }); `
86
86
  });
87
87
  }
@@ -98,20 +98,20 @@ function BannerFunctionBodyDeclaration(props) {
98
98
  return [(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
99
99
  when: insertNewlineBeforeCommand,
100
100
  get children() {
101
- return _alloy_js_core.code`writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `;
101
+ return _alloy_js_core.code`writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(getTerminalSize().columns - ${bannerPadding.value})) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `;
102
102
  }
103
- }), (0, _alloy_js_core_jsx_runtime.memo)(() => `writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + bold(textColors.banner.command.${variant}("${command?.icon ? `${command.icon} ` : ""}${command?.title}")) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `)];
103
+ }), (0, _alloy_js_core_jsx_runtime.memo)(() => `writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((getTerminalSize().columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + bold(textColors.banner.command.${variant}("${command?.icon ? `${command.icon} ` : ""}${command?.title}")) + " ".repeat(Math.max(Math.ceil((getTerminalSize().columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `)];
104
104
  }
105
105
  }),
106
106
  (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
107
107
  (0, _alloy_js_core_jsx_runtime.memo)(() => _alloy_js_core.code`splitText(
108
108
  bold(${command?.title ? "textColors.banner.description" : "textColors.banner.command"}.${variant}(\`${(0, _shell_shock_core_plugin_utils.formatDescription)(description)}\`)),
109
- Math.max(${command?.title ? `${totalPadding.value} * 2 > process.stdout.columns / 2 ? process.stdout.columns - 6 : process.stdout.columns - ${totalPadding.value}` : `process.stdout.columns - ${totalPadding.value}`} , 20)
109
+ Math.max(${command?.title ? `${totalPadding.value} * 2 > getTerminalSize().columns / 2 ? getTerminalSize().columns - 6 : getTerminalSize().columns - ${totalPadding.value}` : `getTerminalSize().columns - ${totalPadding.value}`} , 20)
110
110
  ).forEach((line) => {
111
- writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + textColors.banner.description.${variant}(line) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
111
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((getTerminalSize().columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + textColors.banner.description.${variant}(line) + " ".repeat(Math.max(Math.ceil((getTerminalSize().columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
112
112
  });
113
- ${insertNewlineAfterDescription ? `writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });` : ""}
114
- writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomLeft}") + ${footer ? `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${8 + (footer ? footer.length : 0) + bannerPadding.value}, 0))) + " " + ${footer ? `bold(textColors.banner.footer.${variant}("${footer}"))` : ""} + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(6))` : `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
113
+ ${insertNewlineAfterDescription ? `writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(getTerminalSize().columns - ${bannerPadding.value})) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });` : ""}
114
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomLeft}") + ${footer ? `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(getTerminalSize().columns - ${8 + (footer ? footer.length : 0) + bannerPadding.value}, 0))) + " " + ${footer ? `bold(textColors.banner.footer.${variant}("${footer}"))` : ""} + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(6))` : `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(getTerminalSize().columns - ${bannerPadding.value}, 0)))`} + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
115
115
 
116
116
  writeLine(""); `)
117
117
  ];
@@ -62,7 +62,7 @@ function BannerFunctionBodyDeclaration(props) {
62
62
  }),
63
63
  createComponent(Spacing, {}),
64
64
  memo(() => code`
65
- writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topLeft}") + ${theme.icons.banner.header[variant] ? `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(6)) + " " + ${theme.icons.banner.header[variant] ? `textColors.banner.header.${variant}("${theme.icons.banner.header[variant]}") + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}") + " " +` : ""} bold(textColors.banner.header.${variant}("${header}")) + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${6 + (theme.icons.banner.header[variant] ? theme.icons.banner.header[variant].length + 3 : 0) + (header ? header.length + 2 : 0) + bannerPadding.value}, 0)))` : `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} }); `),
65
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topLeft}") + ${theme.icons.banner.header[variant] ? `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(6)) + " " + ${theme.icons.banner.header[variant] ? `textColors.banner.header.${variant}("${theme.icons.banner.header[variant]}") + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}") + " " +` : ""} bold(textColors.banner.header.${variant}("${header}")) + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(getTerminalSize().columns - ${6 + (theme.icons.banner.header[variant] ? theme.icons.banner.header[variant].length + 3 : 0) + (header ? header.length + 2 : 0) + bannerPadding.value}, 0)))` : `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(getTerminalSize().columns - ${bannerPadding.value}, 0)))`} + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} }); `),
66
66
  createComponent(Show, {
67
67
  when: !!children,
68
68
  get fallback() {
@@ -77,9 +77,9 @@ function BannerFunctionBodyDeclaration(props) {
77
77
  },
78
78
  hardline: true,
79
79
  children: (line) => code`splitText("${line}",
80
- Math.max(process.stdout.columns - ${totalPadding.value}, 20)
80
+ Math.max(getTerminalSize().columns - ${totalPadding.value}, 20)
81
81
  ).forEach((line) => {
82
- writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + bold(textColors.banner.title.${variant}(line)) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
82
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((getTerminalSize().columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + bold(textColors.banner.title.${variant}(line)) + " ".repeat(Math.max(Math.ceil((getTerminalSize().columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
83
83
  }); `
84
84
  });
85
85
  }
@@ -96,20 +96,20 @@ function BannerFunctionBodyDeclaration(props) {
96
96
  return [createComponent(Show, {
97
97
  when: insertNewlineBeforeCommand,
98
98
  get children() {
99
- return code`writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `;
99
+ return code`writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(getTerminalSize().columns - ${bannerPadding.value})) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `;
100
100
  }
101
- }), memo(() => `writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + bold(textColors.banner.command.${variant}("${command?.icon ? `${command.icon} ` : ""}${command?.title}")) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `)];
101
+ }), memo(() => `writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((getTerminalSize().columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + bold(textColors.banner.command.${variant}("${command?.icon ? `${command.icon} ` : ""}${command?.title}")) + " ".repeat(Math.max(Math.ceil((getTerminalSize().columns - (stripAnsi("${command?.title}").length ${command?.icon ? " + 3" : ""} + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); `)];
102
102
  }
103
103
  }),
104
104
  createComponent(Spacing, {}),
105
105
  memo(() => code`splitText(
106
106
  bold(${command?.title ? "textColors.banner.description" : "textColors.banner.command"}.${variant}(\`${formatDescription(description)}\`)),
107
- Math.max(${command?.title ? `${totalPadding.value} * 2 > process.stdout.columns / 2 ? process.stdout.columns - 6 : process.stdout.columns - ${totalPadding.value}` : `process.stdout.columns - ${totalPadding.value}`} , 20)
107
+ Math.max(${command?.title ? `${totalPadding.value} * 2 > getTerminalSize().columns / 2 ? getTerminalSize().columns - 6 : getTerminalSize().columns - ${totalPadding.value}` : `getTerminalSize().columns - ${totalPadding.value}`} , 20)
108
108
  ).forEach((line) => {
109
- writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + textColors.banner.description.${variant}(line) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
109
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((getTerminalSize().columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + textColors.banner.description.${variant}(line) + " ".repeat(Math.max(Math.ceil((getTerminalSize().columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
110
110
  });
111
- ${insertNewlineAfterDescription ? `writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });` : ""}
112
- writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomLeft}") + ${footer ? `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${8 + (footer ? footer.length : 0) + bannerPadding.value}, 0))) + " " + ${footer ? `bold(textColors.banner.footer.${variant}("${footer}"))` : ""} + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(6))` : `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
111
+ ${insertNewlineAfterDescription ? `writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(getTerminalSize().columns - ${bannerPadding.value})) + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });` : ""}
112
+ writeLine(borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomLeft}") + ${footer ? `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(getTerminalSize().columns - ${8 + (footer ? footer.length : 0) + bannerPadding.value}, 0))) + " " + ${footer ? `bold(textColors.banner.footer.${variant}("${footer}"))` : ""} + " " + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(6))` : `borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(getTerminalSize().columns - ${bannerPadding.value}, 0)))`} + borderColors.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
113
113
 
114
114
  writeLine(""); `)
115
115
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"banner-function-declaration.mjs","names":[],"sources":["../../src/components/banner-function-declaration.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 { FunctionDeclaration, IfStatement } from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport {\n formatDescription,\n getAppDescription,\n getAppTitle\n} from \"@shell-shock/core/plugin-utils\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport { useTheme } from \"@shell-shock/plugin-theme/contexts/theme\";\nimport type { ThemeColorVariant } from \"@shell-shock/plugin-theme/types/theme\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport type { BannerPluginContext } from \"../types\";\n\nexport interface BannerFunctionDeclarationWrapperProps {\n command?: CommandTree;\n children?: Children;\n}\n\n/**\n * A component to generate the `banner` function for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionDeclarationWrapper(\n props: BannerFunctionDeclarationWrapperProps\n) {\n const { command, children } = props;\n\n const context = usePowerlines<BannerPluginContext>();\n\n return (\n <FunctionDeclaration\n export\n async\n name=\"showBanner\"\n doc={`Write the ${getAppTitle(context, true)} command-line interface application banner ${\n command ? `for the ${command.title} command ` : \"\"\n }to the console.`}\n parameters={[{ name: \"sleepTimeoutMs\", type: \"number\", default: 500 }]}>\n {children}\n <IfStatement condition={code`isInteractive && !isHelp()`}>\n {code`await sleep(sleepTimeoutMs);`}\n </IfStatement>\n </FunctionDeclaration>\n );\n}\n\nexport interface BannerFunctionBodyDeclarationProps extends BannerFunctionDeclarationProps {\n title?: string;\n header?: string;\n footer?: string;\n description: string;\n insertNewlineBeforeCommand?: boolean;\n insertNewlineBeforeBanner?: boolean;\n insertNewlineAfterDescription?: boolean;\n}\n\n/**\n * A component to generate the `banner` function's body for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionBodyDeclaration(\n props: BannerFunctionBodyDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n title,\n header,\n footer,\n description,\n command,\n children,\n insertNewlineBeforeCommand = false,\n insertNewlineBeforeBanner = true,\n insertNewlineAfterDescription = false\n } = props;\n\n const theme = useTheme();\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 {code`\n if (useMeta().get(\"banner\") || hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isMinimal) {\n return;\n }\n\n useMeta().set(\"banner\", true); `}\n <Spacing />\n <Show when={insertNewlineBeforeBanner}>{code`writeLine(\"\"); `}</Show>\n <Spacing />\n\n {code`\n writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topLeft\n }\") + ${\n theme.icons.banner.header[variant]\n ? `borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(6)) + \" \" + ${\n theme.icons.banner.header[variant]\n ? `textColors.banner.header.${variant}(\"${\n theme.icons.banner.header[variant]\n }\") + \" \" + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\") + \" \" +`\n : \"\"\n } bold(textColors.banner.header.${variant}(\"${\n header\n }\")) + \" \" + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n 6 +\n (theme.icons.banner.header[variant]\n ? theme.icons.banner.header[variant].length + 3\n : 0) +\n (header ? header.length + 2 : 0) +\n bannerPadding.value\n }, 0)))`\n : `borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} }); `}\n\n <Show\n when={!!children}\n fallback={\n <Show when={isSetString(title)}>\n <For each={title ? title.split(\"\\n\") : []} hardline>\n {line => code`splitText(\"${line}\",\n Math.max(process.stdout.columns - ${totalPadding.value}, 20)\n ).forEach((line) => {\n writeLine(borderColors.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)) + bold(textColors.banner.title.${variant}(line)) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n }); `}\n </For>\n </Show>\n }>\n {children}\n </Show>\n <Spacing />\n\n <Show when={isSetString(command?.title) && !!command?.path}>\n <Show when={insertNewlineBeforeCommand}>\n {code`writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `}\n </Show>\n {`writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(\"${\n command?.title\n }\").length ${command?.icon ? \" + 3\" : \"\"} + ${\n bannerPadding.value\n })) / 2), 0)) + bold(textColors.banner.command.${\n variant\n }(\"${command?.icon ? `${command.icon} ` : \"\"}${command?.title}\")) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(\"${command?.title}\").length ${\n command?.icon ? \" + 3\" : \"\"\n } + ${\n bannerPadding.value\n })) / 2), 0)) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `}\n </Show>\n <Spacing />\n\n {code`splitText(\n bold(${\n command?.title\n ? \"textColors.banner.description\"\n : \"textColors.banner.command\"\n }.${variant}(\\`${formatDescription(description)}\\`)),\n Math.max(${\n command?.title\n ? `${totalPadding.value} * 2 > process.stdout.columns / 2 ? process.stdout.columns - 6 : process.stdout.columns - ${totalPadding.value}`\n : `process.stdout.columns - ${totalPadding.value}`\n } , 20)\n ).forEach((line) => {\n writeLine(borderColors.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)) + textColors.banner.description.${variant}(line) + \" \".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n ${\n insertNewlineAfterDescription\n ? `writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });`\n : \"\"\n }\n writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer\n ? `borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n 8 + (footer ? footer.length : 0) + bannerPadding.value\n }, 0))) + \" \" + ${\n footer\n ? `bold(textColors.banner.footer.${variant}(\"${footer}\"))`\n : \"\"\n } + \" \" + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(6))`\n : `borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n }, 0)))`\n } + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n\n writeLine(\"\"); `}\n </>\n );\n}\n\nexport interface BannerFunctionDeclarationProps extends BannerFunctionDeclarationWrapperProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n insertNewlineBeforeBanner?: boolean;\n}\n\n/**\n * A component to generate the `banner` function for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionDeclaration(\n props: BannerFunctionDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n command,\n children,\n insertNewlineBeforeBanner = true\n } = props;\n\n const theme = useTheme();\n const context = usePowerlines<BannerPluginContext>();\n\n const header = computed(\n () =>\n `${theme.labels.banner.header[variant] || getAppTitle(context, false)} v${\n context.packageJson.version || \"1.0.0\"\n }`\n );\n const footer = computed(() => theme.labels.banner.footer[variant]);\n const title = computed(\n () =>\n context.config.banner.title ||\n getAppTitle(context, true).replace(\n `v${context.packageJson.version || \"1.0.0\"}`,\n \"\"\n )\n );\n const description = computed(\n () => command?.description || getAppDescription(context)\n );\n\n return (\n <BannerFunctionDeclarationWrapper command={command}>\n <BannerFunctionBodyDeclaration\n title={!children ? title.value : undefined}\n header={header.value}\n description={description.value}\n footer={footer.value}\n variant={variant}\n consoleFnName={consoleFnName}\n command={command}\n insertNewlineBeforeCommand\n insertNewlineBeforeBanner={insertNewlineBeforeBanner}>\n {children}\n </BannerFunctionBodyDeclaration>\n </BannerFunctionDeclarationWrapper>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"banner-function-declaration.mjs","names":[],"sources":["../../src/components/banner-function-declaration.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 { FunctionDeclaration, IfStatement } from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport {\n formatDescription,\n getAppDescription,\n getAppTitle\n} from \"@shell-shock/core/plugin-utils\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport { useTheme } from \"@shell-shock/plugin-theme/contexts/theme\";\nimport type { ThemeColorVariant } from \"@shell-shock/plugin-theme/types/theme\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport type { BannerPluginContext } from \"../types\";\n\nexport interface BannerFunctionDeclarationWrapperProps {\n command?: CommandTree;\n children?: Children;\n}\n\n/**\n * A component to generate the `banner` function for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionDeclarationWrapper(\n props: BannerFunctionDeclarationWrapperProps\n) {\n const { command, children } = props;\n\n const context = usePowerlines<BannerPluginContext>();\n\n return (\n <FunctionDeclaration\n export\n async\n name=\"showBanner\"\n doc={`Write the ${getAppTitle(context, true)} command-line interface application banner ${\n command ? `for the ${command.title} command ` : \"\"\n }to the console.`}\n parameters={[{ name: \"sleepTimeoutMs\", type: \"number\", default: 500 }]}>\n {children}\n <IfStatement condition={code`isInteractive && !isHelp()`}>\n {code`await sleep(sleepTimeoutMs);`}\n </IfStatement>\n </FunctionDeclaration>\n );\n}\n\nexport interface BannerFunctionBodyDeclarationProps extends BannerFunctionDeclarationProps {\n title?: string;\n header?: string;\n footer?: string;\n description: string;\n insertNewlineBeforeCommand?: boolean;\n insertNewlineBeforeBanner?: boolean;\n insertNewlineAfterDescription?: boolean;\n}\n\n/**\n * A component to generate the `banner` function's body for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionBodyDeclaration(\n props: BannerFunctionBodyDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n title,\n header,\n footer,\n description,\n command,\n children,\n insertNewlineBeforeCommand = false,\n insertNewlineBeforeBanner = true,\n insertNewlineAfterDescription = false\n } = props;\n\n const theme = useTheme();\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 {code`\n if (useMeta().get(\"banner\") || hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isMinimal) {\n return;\n }\n\n useMeta().set(\"banner\", true); `}\n <Spacing />\n <Show when={insertNewlineBeforeBanner}>{code`writeLine(\"\"); `}</Show>\n <Spacing />\n\n {code`\n writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topLeft\n }\") + ${\n theme.icons.banner.header[variant]\n ? `borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(6)) + \" \" + ${\n theme.icons.banner.header[variant]\n ? `textColors.banner.header.${variant}(\"${\n theme.icons.banner.header[variant]\n }\") + \" \" + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\") + \" \" +`\n : \"\"\n } bold(textColors.banner.header.${variant}(\"${\n header\n }\")) + \" \" + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(getTerminalSize().columns - ${\n 6 +\n (theme.icons.banner.header[variant]\n ? theme.icons.banner.header[variant].length + 3\n : 0) +\n (header ? header.length + 2 : 0) +\n bannerPadding.value\n }, 0)))`\n : `borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].top\n }\".repeat(Math.max(getTerminalSize().columns - ${\n bannerPadding.value\n }, 0)))`\n } + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].topRight\n }\"), { consoleFn: console.${consoleFnName} }); `}\n\n <Show\n when={!!children}\n fallback={\n <Show when={isSetString(title)}>\n <For each={title ? title.split(\"\\n\") : []} hardline>\n {line => code`splitText(\"${line}\",\n Math.max(getTerminalSize().columns - ${totalPadding.value}, 20)\n ).forEach((line) => {\n writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((getTerminalSize().columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + bold(textColors.banner.title.${variant}(line)) + \" \".repeat(Math.max(Math.ceil((getTerminalSize().columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n }); `}\n </For>\n </Show>\n }>\n {children}\n </Show>\n <Spacing />\n\n <Show when={isSetString(command?.title) && !!command?.path}>\n <Show when={insertNewlineBeforeCommand}>\n {code`writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(getTerminalSize().columns - ${\n bannerPadding.value\n })) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `}\n </Show>\n {`writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((getTerminalSize().columns - (stripAnsi(\"${\n command?.title\n }\").length ${command?.icon ? \" + 3\" : \"\"} + ${\n bannerPadding.value\n })) / 2), 0)) + bold(textColors.banner.command.${\n variant\n }(\"${command?.icon ? `${command.icon} ` : \"\"}${command?.title}\")) + \" \".repeat(Math.max(Math.ceil((getTerminalSize().columns - (stripAnsi(\"${command?.title}\").length ${\n command?.icon ? \" + 3\" : \"\"\n } + ${\n bannerPadding.value\n })) / 2), 0)) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `}\n </Show>\n <Spacing />\n\n {code`splitText(\n bold(${\n command?.title\n ? \"textColors.banner.description\"\n : \"textColors.banner.command\"\n }.${variant}(\\`${formatDescription(description)}\\`)),\n Math.max(${\n command?.title\n ? `${totalPadding.value} * 2 > getTerminalSize().columns / 2 ? getTerminalSize().columns - 6 : getTerminalSize().columns - ${totalPadding.value}`\n : `getTerminalSize().columns - ${totalPadding.value}`\n } , 20)\n ).forEach((line) => {\n writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(Math.floor((getTerminalSize().columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + textColors.banner.description.${variant}(line) + \" \".repeat(Math.max(Math.ceil((getTerminalSize().columns - (stripAnsi(line).length + ${\n bannerPadding.value\n })) / 2), 0)) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n });\n ${\n insertNewlineAfterDescription\n ? `writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(getTerminalSize().columns - ${\n bannerPadding.value\n })) + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });`\n : \"\"\n }\n writeLine(borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer\n ? `borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(getTerminalSize().columns - ${\n 8 + (footer ? footer.length : 0) + bannerPadding.value\n }, 0))) + \" \" + ${\n footer\n ? `bold(textColors.banner.footer.${variant}(\"${footer}\"))`\n : \"\"\n } + \" \" + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(6))`\n : `borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(Math.max(getTerminalSize().columns - ${\n bannerPadding.value\n }, 0)))`\n } + borderColors.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomRight\n }\"), { consoleFn: console.${consoleFnName} });\n\n writeLine(\"\"); `}\n </>\n );\n}\n\nexport interface BannerFunctionDeclarationProps extends BannerFunctionDeclarationWrapperProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n insertNewlineBeforeBanner?: boolean;\n}\n\n/**\n * A component to generate the `banner` function for a specific command or application.\n *\n * @remarks\n * This function will display a banner in the console with the application's name, version, and description. It can be customized with different variants for styling and supports conditional rendering based on flags or environment variables.\n */\nexport function BannerFunctionDeclaration(\n props: BannerFunctionDeclarationProps\n) {\n const {\n consoleFnName = \"log\",\n variant = \"primary\",\n command,\n children,\n insertNewlineBeforeBanner = true\n } = props;\n\n const theme = useTheme();\n const context = usePowerlines<BannerPluginContext>();\n\n const header = computed(\n () =>\n `${theme.labels.banner.header[variant] || getAppTitle(context, false)} v${\n context.packageJson.version || \"1.0.0\"\n }`\n );\n const footer = computed(() => theme.labels.banner.footer[variant]);\n const title = computed(\n () =>\n context.config.banner.title ||\n getAppTitle(context, true).replace(\n `v${context.packageJson.version || \"1.0.0\"}`,\n \"\"\n )\n );\n const description = computed(\n () => command?.description || getAppDescription(context)\n );\n\n return (\n <BannerFunctionDeclarationWrapper command={command}>\n <BannerFunctionBodyDeclaration\n title={!children ? title.value : undefined}\n header={header.value}\n description={description.value}\n footer={footer.value}\n variant={variant}\n consoleFnName={consoleFnName}\n command={command}\n insertNewlineBeforeCommand\n insertNewlineBeforeBanner={insertNewlineBeforeBanner}>\n {children}\n </BannerFunctionBodyDeclaration>\n </BannerFunctionDeclarationWrapper>\n );\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shell-shock/plugin-banner",
3
- "version": "0.1.27",
3
+ "version": "0.1.29",
4
4
  "private": false,
5
5
  "description": "A package containing a Shell Shock plugin to generate banner built-in modules that display information about the application.",
6
6
  "keywords": [
@@ -53,19 +53,19 @@
53
53
  "@alloy-js/core": "0.23.0-dev.8",
54
54
  "@alloy-js/typescript": "0.23.0-dev.4",
55
55
  "@powerlines/deepkit": "^0.6.167",
56
- "@powerlines/plugin-alloy": "^0.26.9",
57
- "@powerlines/plugin-plugin": "^0.12.343",
58
- "@shell-shock/core": "^0.17.0",
59
- "@shell-shock/plugin-theme": "^0.4.13",
60
- "@shell-shock/plugin-console": "^0.2.4",
56
+ "@powerlines/plugin-alloy": "^0.26.10",
57
+ "@powerlines/plugin-plugin": "^0.12.344",
58
+ "@shell-shock/core": "^0.17.2",
59
+ "@shell-shock/plugin-theme": "^0.4.15",
60
+ "@shell-shock/plugin-console": "^0.2.6",
61
61
  "@stryke/path": "^0.27.4",
62
62
  "@stryke/type-checks": "^0.6.1",
63
63
  "defu": "^6.1.7",
64
- "powerlines": "^0.42.33"
64
+ "powerlines": "^0.42.34"
65
65
  },
66
66
  "devDependencies": {
67
- "@powerlines/plugin-deepkit": "^0.11.271",
68
- "@types/node": "^25.5.2"
67
+ "@powerlines/plugin-deepkit": "^0.11.272",
68
+ "@types/node": "^25.6.0"
69
69
  },
70
70
  "publishConfig": { "access": "public" },
71
71
  "exports": {
@@ -155,5 +155,5 @@
155
155
  }
156
156
  }
157
157
  },
158
- "gitHead": "8ca409c1453d9722650670c3df4f4da72abdc308"
158
+ "gitHead": "38e2393cfc876607226b05a59cc9bd62e3b59960"
159
159
  }