@shell-shock/preset-cli 0.1.0 → 0.1.2

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 (41) hide show
  1. package/dist/components/banner-function-declaration.cjs +68 -0
  2. package/dist/components/banner-function-declaration.d.cts +11 -0
  3. package/dist/components/banner-function-declaration.d.cts.map +1 -0
  4. package/dist/components/banner-function-declaration.d.mts +11 -0
  5. package/dist/components/banner-function-declaration.d.mts.map +1 -0
  6. package/dist/components/banner-function-declaration.mjs +68 -0
  7. package/dist/components/banner-function-declaration.mjs.map +1 -0
  8. package/dist/components/command-entry.cjs +90 -0
  9. package/dist/components/command-entry.d.cts +15 -0
  10. package/dist/components/command-entry.d.cts.map +1 -0
  11. package/dist/components/command-entry.d.mts +15 -0
  12. package/dist/components/command-entry.d.mts.map +1 -0
  13. package/dist/components/command-entry.mjs +89 -0
  14. package/dist/components/command-entry.mjs.map +1 -0
  15. package/dist/components/index.cjs +6 -2
  16. package/dist/components/index.d.cts +4 -2
  17. package/dist/components/index.d.mts +4 -2
  18. package/dist/components/index.mjs +4 -2
  19. package/dist/components/virtual-command-entry.cjs +86 -0
  20. package/dist/components/virtual-command-entry.d.cts +15 -0
  21. package/dist/components/virtual-command-entry.d.cts.map +1 -0
  22. package/dist/components/virtual-command-entry.d.mts +15 -0
  23. package/dist/components/virtual-command-entry.d.mts.map +1 -0
  24. package/dist/components/virtual-command-entry.mjs +85 -0
  25. package/dist/components/virtual-command-entry.mjs.map +1 -0
  26. package/dist/helpers/get-default-options.cjs +2 -2
  27. package/dist/helpers/get-default-options.mjs +2 -2
  28. package/dist/helpers/get-default-options.mjs.map +1 -1
  29. package/dist/index.cjs +24 -58
  30. package/dist/index.d.cts.map +1 -1
  31. package/dist/index.d.mts.map +1 -1
  32. package/dist/index.mjs +24 -58
  33. package/dist/index.mjs.map +1 -1
  34. package/package.json +49 -19
  35. package/dist/components/banner.cjs +0 -82
  36. package/dist/components/banner.d.cts +0 -16
  37. package/dist/components/banner.d.cts.map +0 -1
  38. package/dist/components/banner.d.mts +0 -16
  39. package/dist/components/banner.d.mts.map +0 -1
  40. package/dist/components/banner.mjs +0 -82
  41. package/dist/components/banner.mjs.map +0 -1
@@ -1,82 +0,0 @@
1
- const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
- let __alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
3
- let __alloy_js_core = require("@alloy-js/core");
4
- let __alloy_js_typescript = require("@alloy-js/typescript");
5
- let __shell_shock_core_plugin_utils_context_helpers = require("@shell-shock/core/plugin-utils/context-helpers");
6
- let __powerlines_plugin_alloy_core_contexts_context = require("@powerlines/plugin-alloy/core/contexts/context");
7
- let __shell_shock_core_contexts_command = require("@shell-shock/core/contexts/command");
8
- let __shell_shock_preset_script_contexts_theme = require("@shell-shock/preset-script/contexts/theme");
9
- let cfonts = require("cfonts");
10
-
11
- //#region src/components/banner.tsx
12
- /**
13
- * A component to generate the `banner` function in the `shell-shock:console` builtin module.
14
- */
15
- function BannerFunctionDeclaration(props) {
16
- const { consoleFnName = "log", variant = "primary", title: titleProp } = props;
17
- const theme = (0, __shell_shock_preset_script_contexts_theme.useTheme)();
18
- const context = (0, __powerlines_plugin_alloy_core_contexts_context.usePowerlines)();
19
- const command = (0, __shell_shock_core_contexts_command.useCommand)();
20
- const header = (0, __alloy_js_core.computed)(() => `${theme.labels.banner.header[variant] || (0, __shell_shock_core_plugin_utils_context_helpers.getAppTitle)(context)} v${context.packageJson.version || "1.0.0"}`);
21
- const description = (0, __alloy_js_core.computed)(() => command?.description || (0, __shell_shock_core_plugin_utils_context_helpers.getAppDescription)(context));
22
- const footer = (0, __alloy_js_core.computed)(() => theme.labels.banner.footer[variant]);
23
- const title = (0, __alloy_js_core.computed)(() => titleProp || /(?:cli|command-line|command line)\s+(?:application|app)?$/.test(header.value.toLowerCase()) ? header.value.replace(`v${context.packageJson.version || "1.0.0"}`, "").trim() : `${header.value.replace(`v${context.packageJson.version || "1.0.0"}`, "").trim()} Command-Line Application`);
24
- const titleLines = (0, __alloy_js_core.computed)(() => {
25
- const result = (0, cfonts.render)((0, __shell_shock_core_plugin_utils_context_helpers.getAppTitle)(context), {
26
- font: "tiny",
27
- align: "left",
28
- colors: ["system"],
29
- background: "transparent",
30
- letterSpacing: 1,
31
- lineHeight: 1,
32
- gradient: false,
33
- transitionGradient: false,
34
- env: "node"
35
- });
36
- if (!result) return [(0, __shell_shock_core_plugin_utils_context_helpers.getAppTitle)(context)];
37
- return result.array;
38
- });
39
- const bannerPadding = (0, __alloy_js_core.computed)(() => Math.max(theme.padding.app, 0) * 2 + theme.borderStyles.banner.outline[variant].left.length + theme.borderStyles.banner.outline[variant].right.length);
40
- const totalPadding = (0, __alloy_js_core.computed)(() => Math.max(theme.padding.banner, 0) * 2 + bannerPadding.value);
41
- return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.FunctionDeclaration, {
42
- "export": true,
43
- name: "banner",
44
- doc: "Write the application banner to the console.",
45
- get children() {
46
- return __alloy_js_core.code`
47
- if (hasFlag("no-banner") || hasFlag("hide-banner") || isCI || isMinimal) {
48
- return;
49
- }
50
-
51
- const titleLines = [${titleLines.value.map((line) => JSON.stringify(line)).join(", ")}];
52
- const title = Math.max(...titleLines.map(line => stripAnsi(line).trim().length)) > Math.max(process.stdout.columns - ${totalPadding.value}, 0)
53
- ? ["${title.value}"]
54
- : titleLines;
55
-
56
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topLeft}") + ${theme.icons.banner.header[variant] ? `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(4)) + " " + ${theme.icons.banner.header[variant] ? `colors.text.banner.header.${variant}("${theme.icons.banner.header[variant]}") + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}") + " " +` : ""} colors.bold(colors.text.banner.header.${variant}("${header.value}")) + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${4 + (theme.icons.banner.header[variant] ? theme.icons.banner.header[variant].length + 3 : 0) + (header.value ? header.value.length + 2 : 0) + bannerPadding.value}, 0)))` : `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} });
57
-
58
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
59
-
60
- title.map(line => line.trim()).forEach((line) => {
61
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.text.banner.title.${variant}(line) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
62
- });
63
-
64
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
65
-
66
- ${command?.title ? `writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.bold(colors.text.banner.command.${variant}("${command.title}")) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); ` : ""}
67
-
68
- splitText(
69
- ${command?.title ? "colors.text.banner.description" : "colors.text.banner.command"}.${variant}("${description.value.replace(/"/g, "\\\"")}"),
70
- Math.max(process.stdout.columns - ${totalPadding.value}, 0)
71
- ).forEach((line) => {
72
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.text.banner.description.${variant}(line) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
73
- });
74
-
75
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomLeft}") + ${footer.value ? `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${6 + (footer.value ? footer.value.length : 0) + bannerPadding.value}, 0))) + " " + ${footer.value ? `colors.bold(colors.text.banner.footer.${variant}("${footer.value}"))` : ""} + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(4))` : `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
76
- `;
77
- }
78
- })];
79
- }
80
-
81
- //#endregion
82
- exports.BannerFunctionDeclaration = BannerFunctionDeclaration;
@@ -1,16 +0,0 @@
1
- import * as _alloy_js_core0 from "@alloy-js/core";
2
- import { ThemeColorVariant } from "@shell-shock/plugin-theme/types/theme";
3
-
4
- //#region src/components/banner.d.ts
5
- interface BannerFunctionDeclarationProps {
6
- variant?: ThemeColorVariant;
7
- consoleFnName?: "log" | "info" | "warn" | "error" | "debug";
8
- title?: string;
9
- }
10
- /**
11
- * A component to generate the `banner` function in the `shell-shock:console` builtin module.
12
- */
13
- declare function BannerFunctionDeclaration(props: BannerFunctionDeclarationProps): _alloy_js_core0.Children;
14
- //#endregion
15
- export { BannerFunctionDeclaration, BannerFunctionDeclarationProps };
16
- //# sourceMappingURL=banner.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"banner.d.cts","names":[],"sources":["../../src/components/banner.tsx"],"sourcesContent":[],"mappings":";;;;UA+BiB,8BAAA;YACL;;EADK,KAAA,CAAA,EAAA,MAAA;AASjB;;;;iBAAgB,yBAAA,QACP,iCAA8B,eAAA,CAAA"}
@@ -1,16 +0,0 @@
1
- import * as _alloy_js_core0 from "@alloy-js/core";
2
- import { ThemeColorVariant } from "@shell-shock/plugin-theme/types/theme";
3
-
4
- //#region src/components/banner.d.ts
5
- interface BannerFunctionDeclarationProps {
6
- variant?: ThemeColorVariant;
7
- consoleFnName?: "log" | "info" | "warn" | "error" | "debug";
8
- title?: string;
9
- }
10
- /**
11
- * A component to generate the `banner` function in the `shell-shock:console` builtin module.
12
- */
13
- declare function BannerFunctionDeclaration(props: BannerFunctionDeclarationProps): _alloy_js_core0.Children;
14
- //#endregion
15
- export { BannerFunctionDeclaration, BannerFunctionDeclarationProps };
16
- //# sourceMappingURL=banner.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"banner.d.mts","names":[],"sources":["../../src/components/banner.tsx"],"sourcesContent":[],"mappings":";;;;UA+BiB,8BAAA;YACL;;EADK,KAAA,CAAA,EAAA,MAAA;AASjB;;;;iBAAgB,yBAAA,QACP,iCAA8B,eAAA,CAAA"}
@@ -1,82 +0,0 @@
1
- import { createComponent, memo } from "@alloy-js/core/jsx-runtime";
2
- import { code, computed } from "@alloy-js/core";
3
- import { FunctionDeclaration } from "@alloy-js/typescript";
4
- import { getAppDescription, getAppTitle } from "@shell-shock/core/plugin-utils/context-helpers";
5
- import { usePowerlines } from "@powerlines/plugin-alloy/core/contexts/context";
6
- import { useCommand } from "@shell-shock/core/contexts/command";
7
- import { useTheme } from "@shell-shock/preset-script/contexts/theme";
8
- import { render } from "cfonts";
9
-
10
- //#region src/components/banner.tsx
11
- /**
12
- * A component to generate the `banner` function in the `shell-shock:console` builtin module.
13
- */
14
- function BannerFunctionDeclaration(props) {
15
- const { consoleFnName = "log", variant = "primary", title: titleProp } = props;
16
- const theme = useTheme();
17
- const context = usePowerlines();
18
- const command = useCommand();
19
- const header = computed(() => `${theme.labels.banner.header[variant] || getAppTitle(context)} v${context.packageJson.version || "1.0.0"}`);
20
- const description = computed(() => command?.description || getAppDescription(context));
21
- const footer = computed(() => theme.labels.banner.footer[variant]);
22
- const title = computed(() => titleProp || /(?:cli|command-line|command line)\s+(?:application|app)?$/.test(header.value.toLowerCase()) ? header.value.replace(`v${context.packageJson.version || "1.0.0"}`, "").trim() : `${header.value.replace(`v${context.packageJson.version || "1.0.0"}`, "").trim()} Command-Line Application`);
23
- const titleLines = computed(() => {
24
- const result = render(getAppTitle(context), {
25
- font: "tiny",
26
- align: "left",
27
- colors: ["system"],
28
- background: "transparent",
29
- letterSpacing: 1,
30
- lineHeight: 1,
31
- gradient: false,
32
- transitionGradient: false,
33
- env: "node"
34
- });
35
- if (!result) return [getAppTitle(context)];
36
- return result.array;
37
- });
38
- const bannerPadding = computed(() => Math.max(theme.padding.app, 0) * 2 + theme.borderStyles.banner.outline[variant].left.length + theme.borderStyles.banner.outline[variant].right.length);
39
- const totalPadding = computed(() => Math.max(theme.padding.banner, 0) * 2 + bannerPadding.value);
40
- return [createComponent(FunctionDeclaration, {
41
- "export": true,
42
- name: "banner",
43
- doc: "Write the application banner to the console.",
44
- get children() {
45
- return code`
46
- if (hasFlag("no-banner") || hasFlag("hide-banner") || isCI || isMinimal) {
47
- return;
48
- }
49
-
50
- const titleLines = [${titleLines.value.map((line) => JSON.stringify(line)).join(", ")}];
51
- const title = Math.max(...titleLines.map(line => stripAnsi(line).trim().length)) > Math.max(process.stdout.columns - ${totalPadding.value}, 0)
52
- ? ["${title.value}"]
53
- : titleLines;
54
-
55
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topLeft}") + ${theme.icons.banner.header[variant] ? `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(4)) + " " + ${theme.icons.banner.header[variant] ? `colors.text.banner.header.${variant}("${theme.icons.banner.header[variant]}") + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}") + " " +` : ""} colors.bold(colors.text.banner.header.${variant}("${header.value}")) + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${4 + (theme.icons.banner.header[variant] ? theme.icons.banner.header[variant].length + 3 : 0) + (header.value ? header.value.length + 2 : 0) + bannerPadding.value}, 0)))` : `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} });
56
-
57
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
58
-
59
- title.map(line => line.trim()).forEach((line) => {
60
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.text.banner.title.${variant}(line) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
61
- });
62
-
63
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
64
-
65
- ${command?.title ? `writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.bold(colors.text.banner.command.${variant}("${command.title}")) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); ` : ""}
66
-
67
- splitText(
68
- ${command?.title ? "colors.text.banner.description" : "colors.text.banner.command"}.${variant}("${description.value.replace(/"/g, "\\\"")}"),
69
- Math.max(process.stdout.columns - ${totalPadding.value}, 0)
70
- ).forEach((line) => {
71
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.text.banner.description.${variant}(line) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
72
- });
73
-
74
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomLeft}") + ${footer.value ? `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${6 + (footer.value ? footer.value.length : 0) + bannerPadding.value}, 0))) + " " + ${footer.value ? `colors.bold(colors.text.banner.footer.${variant}("${footer.value}"))` : ""} + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(4))` : `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
75
- `;
76
- }
77
- })];
78
- }
79
-
80
- //#endregion
81
- export { BannerFunctionDeclaration };
82
- //# sourceMappingURL=banner.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"banner.mjs","names":["code","computed","FunctionDeclaration","usePowerlines","useCommand","getAppDescription","getAppTitle","useTheme","render","BannerFunctionDeclaration","props","consoleFnName","variant","title","titleProp","theme","context","command","header","labels","banner","packageJson","version","description","footer","test","value","toLowerCase","replace","trim","titleLines","result","font","align","colors","background","letterSpacing","lineHeight","gradient","transitionGradient","env","array","bannerPadding","Math","max","padding","app","borderStyles","outline","left","length","right","totalPadding","_$createComponent","name","doc","children","map","line","JSON","stringify","join","topLeft","icons","top","topRight","bottomLeft","bottom","bottomRight"],"sources":["../../src/components/banner.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 { code, computed } from \"@alloy-js/core\";\nimport { FunctionDeclaration } from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport { useCommand } from \"@shell-shock/core/contexts/command\";\nimport {\n getAppDescription,\n getAppTitle\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type { ThemeColorVariant } from \"@shell-shock/plugin-theme/types/theme\";\nimport { useTheme } from \"@shell-shock/preset-script/contexts/theme\";\nimport type { ScriptPresetContext } from \"@shell-shock/preset-script/types/plugin\";\nimport { render } from \"cfonts\";\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 titleLines = computed(() => {\n const result = render(getAppTitle(context), {\n font: \"tiny\",\n align: \"left\",\n colors: [\"system\"],\n background: \"transparent\",\n letterSpacing: 1,\n lineHeight: 1,\n gradient: false,\n transitionGradient: false,\n env: \"node\"\n });\n if (!result) {\n return [getAppTitle(context)];\n }\n\n return result.array;\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 const titleLines = [${titleLines.value\n .map(line => JSON.stringify(line))\n .join(\", \")}];\n const title = Math.max(...titleLines.map(line => stripAnsi(line).trim().length)) > Math.max(process.stdout.columns - ${\n totalPadding.value\n }, 0)\n ? [\"${title.value}\"]\n : titleLines;\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.bold(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 writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n\n title.map(line => line.trim()).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.title.${\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 writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].left\n }\") + \" \".repeat(Math.max(process.stdout.columns - ${\n bannerPadding.value\n })) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} });\n\n ${\n command?.title\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.bold(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.bold(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"],"mappings":"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"}