@shell-shock/preset-script 0.6.23 → 0.6.26

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 (143) hide show
  1. package/dist/_virtual/{rolldown_runtime.cjs → _rolldown/runtime.cjs} +1 -1
  2. package/dist/_virtual/_rolldown/runtime.mjs +3 -0
  3. package/dist/components/banner-function-declaration.cjs +28 -27
  4. package/dist/components/banner-function-declaration.cjs.map +1 -1
  5. package/dist/components/banner-function-declaration.d.cts.map +1 -1
  6. package/dist/components/banner-function-declaration.d.mts.map +1 -1
  7. package/dist/components/banner-function-declaration.mjs +2 -2
  8. package/dist/components/banner-function-declaration.mjs.map +1 -1
  9. package/dist/components/bin-entry.cjs +54 -45
  10. package/dist/components/bin-entry.cjs.map +1 -1
  11. package/dist/components/bin-entry.d.cts +0 -1
  12. package/dist/components/bin-entry.d.cts.map +1 -1
  13. package/dist/components/bin-entry.d.mts +0 -1
  14. package/dist/components/bin-entry.d.mts.map +1 -1
  15. package/dist/components/bin-entry.mjs +17 -9
  16. package/dist/components/bin-entry.mjs.map +1 -1
  17. package/dist/components/command-entry.cjs +76 -235
  18. package/dist/components/command-entry.cjs.map +1 -1
  19. package/dist/components/command-entry.d.cts +1 -8
  20. package/dist/components/command-entry.d.cts.map +1 -1
  21. package/dist/components/command-entry.d.mts +2 -9
  22. package/dist/components/command-entry.d.mts.map +1 -1
  23. package/dist/components/command-entry.mjs +24 -183
  24. package/dist/components/command-entry.mjs.map +1 -1
  25. package/dist/components/command-router.cjs +85 -83
  26. package/dist/components/command-router.cjs.map +1 -1
  27. package/dist/components/command-router.d.cts.map +1 -1
  28. package/dist/components/command-router.d.mts.map +1 -1
  29. package/dist/components/command-router.mjs +59 -58
  30. package/dist/components/command-router.mjs.map +1 -1
  31. package/dist/components/exit-function-declaration.cjs +38 -37
  32. package/dist/components/exit-function-declaration.cjs.map +1 -1
  33. package/dist/components/exit-function-declaration.d.cts +2 -2
  34. package/dist/components/exit-function-declaration.d.cts.map +1 -1
  35. package/dist/components/exit-function-declaration.d.mts +2 -2
  36. package/dist/components/exit-function-declaration.d.mts.map +1 -1
  37. package/dist/components/exit-function-declaration.mjs +3 -3
  38. package/dist/components/exit-function-declaration.mjs.map +1 -1
  39. package/dist/components/index.cjs +2 -9
  40. package/dist/components/index.d.cts +2 -3
  41. package/dist/components/index.d.mts +2 -3
  42. package/dist/components/index.mjs +2 -3
  43. package/dist/components/virtual-command-entry.cjs +43 -59
  44. package/dist/components/virtual-command-entry.cjs.map +1 -1
  45. package/dist/components/virtual-command-entry.d.cts.map +1 -1
  46. package/dist/components/virtual-command-entry.d.mts.map +1 -1
  47. package/dist/components/virtual-command-entry.mjs +13 -30
  48. package/dist/components/virtual-command-entry.mjs.map +1 -1
  49. package/dist/helpers/get-default-options.cjs +8 -7
  50. package/dist/helpers/get-default-options.cjs.map +1 -1
  51. package/dist/helpers/get-default-options.d.cts +0 -1
  52. package/dist/helpers/get-default-options.d.cts.map +1 -1
  53. package/dist/helpers/get-default-options.d.mts +0 -1
  54. package/dist/helpers/get-default-options.d.mts.map +1 -1
  55. package/dist/helpers/get-default-options.mjs.map +1 -1
  56. package/dist/index.cjs +30 -42
  57. package/dist/index.cjs.map +1 -1
  58. package/dist/index.d.cts +0 -1
  59. package/dist/index.d.cts.map +1 -1
  60. package/dist/index.d.mts +0 -1
  61. package/dist/index.d.mts.map +1 -1
  62. package/dist/index.mjs +8 -20
  63. package/dist/index.mjs.map +1 -1
  64. package/dist/plugin-help/dist/components/display.cjs +260 -0
  65. package/dist/plugin-help/dist/components/display.cjs.map +1 -0
  66. package/dist/{components/help.mjs → plugin-help/dist/components/display.mjs} +26 -30
  67. package/dist/plugin-help/dist/components/display.mjs.map +1 -0
  68. package/dist/plugin-help/dist/components/help-builtin.cjs +86 -0
  69. package/dist/plugin-help/dist/components/help-builtin.cjs.map +1 -0
  70. package/dist/plugin-help/dist/components/help-builtin.mjs +84 -0
  71. package/dist/plugin-help/dist/components/help-builtin.mjs.map +1 -0
  72. package/dist/plugin-help/dist/components/help-command.cjs +97 -0
  73. package/dist/plugin-help/dist/components/help-command.cjs.map +1 -0
  74. package/dist/plugin-help/dist/components/help-command.mjs +96 -0
  75. package/dist/plugin-help/dist/components/help-command.mjs.map +1 -0
  76. package/dist/plugin-help/dist/components/index.cjs +3 -0
  77. package/dist/plugin-help/dist/components/index.mjs +5 -0
  78. package/dist/plugin-help/dist/index.cjs +104 -0
  79. package/dist/plugin-help/dist/index.cjs.map +1 -0
  80. package/dist/plugin-help/dist/index.d.cts +2 -0
  81. package/dist/plugin-help/dist/index.d.mts +2 -0
  82. package/dist/plugin-help/dist/index.mjs +100 -0
  83. package/dist/plugin-help/dist/index.mjs.map +1 -0
  84. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/constant-case.cjs +18 -0
  85. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/constant-case.cjs.map +1 -0
  86. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/constant-case.mjs +17 -0
  87. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/constant-case.mjs.map +1 -0
  88. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/get-words.cjs +39 -0
  89. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/get-words.cjs.map +1 -0
  90. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/get-words.mjs +38 -0
  91. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/get-words.mjs.map +1 -0
  92. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/kebab-case.cjs +34 -0
  93. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/kebab-case.cjs.map +1 -0
  94. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/kebab-case.mjs +34 -0
  95. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/kebab-case.mjs.map +1 -0
  96. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/snake-case.cjs +41 -0
  97. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/snake-case.cjs.map +1 -0
  98. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/snake-case.mjs +41 -0
  99. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/snake-case.mjs.map +1 -0
  100. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/upper-case-first.cjs +18 -0
  101. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/upper-case-first.cjs.map +1 -0
  102. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/upper-case-first.mjs +17 -0
  103. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/upper-case-first.mjs.map +1 -0
  104. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-empty.cjs +21 -0
  105. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-empty.cjs.map +1 -0
  106. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-empty.mjs +21 -0
  107. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-empty.mjs.map +1 -0
  108. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-null.cjs +13 -0
  109. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-null.cjs.map +1 -0
  110. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-null.mjs +12 -0
  111. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-null.mjs.map +1 -0
  112. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set-string.cjs +21 -0
  113. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set-string.cjs.map +1 -0
  114. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set-string.mjs +21 -0
  115. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set-string.mjs.map +1 -0
  116. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set.cjs +20 -0
  117. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set.cjs.map +1 -0
  118. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set.mjs +20 -0
  119. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set.mjs.map +1 -0
  120. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-string.cjs +13 -0
  121. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-string.cjs.map +1 -0
  122. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-string.mjs +12 -0
  123. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-string.mjs.map +1 -0
  124. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-undefined.cjs +9 -0
  125. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-undefined.cjs.map +1 -0
  126. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-undefined.mjs +8 -0
  127. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-undefined.mjs.map +1 -0
  128. package/dist/plugin-help/dist/types/plugin.d.cts +62 -0
  129. package/dist/plugin-help/dist/types/plugin.d.cts.map +1 -0
  130. package/dist/plugin-help/dist/types/plugin.d.mts +62 -0
  131. package/dist/plugin-help/dist/types/plugin.d.mts.map +1 -0
  132. package/dist/types/plugin.d.cts +9 -9
  133. package/dist/types/plugin.d.cts.map +1 -1
  134. package/dist/types/plugin.d.mts +9 -9
  135. package/dist/types/plugin.d.mts.map +1 -1
  136. package/package.json +15 -29
  137. package/dist/components/help.cjs +0 -264
  138. package/dist/components/help.cjs.map +0 -1
  139. package/dist/components/help.d.cts +0 -105
  140. package/dist/components/help.d.cts.map +0 -1
  141. package/dist/components/help.d.mts +0 -105
  142. package/dist/components/help.d.mts.map +0 -1
  143. package/dist/components/help.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- //#region rolldown:runtime
1
+ //#region \0rolldown/runtime.js
2
2
  var __create = Object.create;
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -0,0 +1,3 @@
1
+ import "node:module";
2
+
3
+ export { };
@@ -1,11 +1,12 @@
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 __powerlines_plugin_alloy_core_components_spacing = require("@powerlines/plugin-alloy/core/components/spacing");
6
- let __powerlines_plugin_alloy_core_contexts_context = require("@powerlines/plugin-alloy/core/contexts/context");
7
- let __shell_shock_core_plugin_utils = require("@shell-shock/core/plugin-utils");
8
- let __shell_shock_plugin_theme_contexts_theme = require("@shell-shock/plugin-theme/contexts/theme");
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
+ let _alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
4
+ let _alloy_js_core = require("@alloy-js/core");
5
+ let _alloy_js_typescript = require("@alloy-js/typescript");
6
+ let _shell_shock_core_plugin_utils = require("@shell-shock/core/plugin-utils");
7
+ let _powerlines_plugin_alloy_core_components_spacing = require("@powerlines/plugin-alloy/core/components/spacing");
8
+ let _powerlines_plugin_alloy_core_contexts_context = require("@powerlines/plugin-alloy/core/contexts/context");
9
+ let _shell_shock_plugin_theme_contexts_theme = require("@shell-shock/plugin-theme/contexts/theme");
9
10
 
10
11
  //#region src/components/banner-function-declaration.tsx
11
12
  /**
@@ -16,19 +17,19 @@ let __shell_shock_plugin_theme_contexts_theme = require("@shell-shock/plugin-the
16
17
  */
17
18
  function BannerFunctionDeclaration(props) {
18
19
  const { consoleFnName = "log", variant = "primary", command, children, insertNewlineBeforeBanner = true } = props;
19
- const theme = (0, __shell_shock_plugin_theme_contexts_theme.useTheme)();
20
- const context = (0, __powerlines_plugin_alloy_core_contexts_context.usePowerlines)();
21
- const header = (0, __alloy_js_core.computed)(() => `${theme.labels.banner.header[variant] || (0, __shell_shock_core_plugin_utils.getAppTitle)(context, false)} v${context.packageJson.version || "1.0.0"}`);
22
- const footer = (0, __alloy_js_core.computed)(() => theme.labels.banner.footer[variant]);
23
- const title = (0, __alloy_js_core.computed)(() => (0, __shell_shock_core_plugin_utils.getAppTitle)(context, true).replace(`v${context.packageJson.version || "1.0.0"}`, ""));
24
- const description = (0, __alloy_js_core.computed)(() => command?.description || (0, __shell_shock_core_plugin_utils.getAppDescription)(context));
25
- return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.FunctionDeclaration, {
20
+ const theme = (0, _shell_shock_plugin_theme_contexts_theme.useTheme)();
21
+ const context = (0, _powerlines_plugin_alloy_core_contexts_context.usePowerlines)();
22
+ const header = (0, _alloy_js_core.computed)(() => `${theme.labels.banner.header[variant] || (0, _shell_shock_core_plugin_utils.getAppTitle)(context, false)} v${context.packageJson.version || "1.0.0"}`);
23
+ const footer = (0, _alloy_js_core.computed)(() => theme.labels.banner.footer[variant]);
24
+ const title = (0, _alloy_js_core.computed)(() => (0, _shell_shock_core_plugin_utils.getAppTitle)(context, true).replace(`v${context.packageJson.version || "1.0.0"}`, ""));
25
+ const description = (0, _alloy_js_core.computed)(() => command?.description || (0, _shell_shock_core_plugin_utils.getAppDescription)(context));
26
+ return [(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.FunctionDeclaration, {
26
27
  name: "banner",
27
28
  get doc() {
28
- return `Write the ${(0, __shell_shock_core_plugin_utils.getAppTitle)(context)} application banner ${command ? `for the ${command.title} command ` : ""}to the console.`;
29
+ return `Write the ${(0, _shell_shock_core_plugin_utils.getAppTitle)(context, true)} command-line interface application banner ${command ? `for the ${command.title} command ` : ""}to the console.`;
29
30
  },
30
31
  get children() {
31
- return (0, __alloy_js_core_jsx_runtime.createComponent)(BannerFunctionBodyDeclaration, {
32
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(BannerFunctionBodyDeclaration, {
32
33
  get title() {
33
34
  return title.value;
34
35
  },
@@ -59,25 +60,25 @@ function BannerFunctionDeclaration(props) {
59
60
  */
60
61
  function BannerFunctionBodyDeclaration(props) {
61
62
  const { consoleFnName = "log", variant = "primary", title, header, footer, description, command, children, insertNewlineBeforeCommand = false, insertNewlineBeforeBanner = true, insertNewlineAfterDescription = false } = props;
62
- const theme = (0, __shell_shock_plugin_theme_contexts_theme.useTheme)();
63
- 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);
64
- const totalPadding = (0, __alloy_js_core.computed)(() => Math.max(theme.padding.banner, 0) * 2 + bannerPadding.value);
63
+ const theme = (0, _shell_shock_plugin_theme_contexts_theme.useTheme)();
64
+ 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);
65
+ const totalPadding = (0, _alloy_js_core.computed)(() => Math.max(theme.padding.banner, 0) * 2 + bannerPadding.value);
65
66
  return [
66
- __alloy_js_core.code`
67
+ _alloy_js_core.code`
67
68
  if (useApp().get("banner") || hasFlag("no-banner") || hasFlag("hide-banner") || isMinimal) {
68
69
  return;
69
70
  }
70
71
 
71
72
  useApp().set("banner", true); `,
72
- (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
73
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
73
74
  children,
74
- (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
75
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
75
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
76
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
76
77
  when: insertNewlineBeforeBanner,
77
- children: __alloy_js_core.code`writeLine(""); `
78
+ children: _alloy_js_core.code`writeLine(""); `
78
79
  }),
79
- (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
80
- (0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code`
80
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
81
+ (0, _alloy_js_core_jsx_runtime.memo)(() => _alloy_js_core.code`
81
82
  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(6)) + " " + ${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}")) + " " + colors.border.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)))` : `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} });
82
83
 
83
84
  splitText(
@@ -1 +1 @@
1
- {"version":3,"file":"banner-function-declaration.cjs","names":["code","computed","Show","FunctionDeclaration","Spacing","usePowerlines","getAppDescription","getAppTitle","useTheme","BannerFunctionDeclaration","props","consoleFnName","variant","command","children","insertNewlineBeforeBanner","theme","context","header","labels","banner","packageJson","version","footer","title","replace","description","_$createComponent","name","doc","BannerFunctionBodyDeclaration","value","insertNewlineBeforeCommand","insertNewlineAfterDescription","bannerPadding","Math","max","padding","app","borderStyles","outline","left","length","right","totalPadding","when","_$memo","topLeft","icons","top","topRight","icon","bottomLeft","bottom","bottomRight"],"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, Show } from \"@alloy-js/core\";\nimport { FunctionDeclaration } from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport { getAppDescription, getAppTitle } 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 type { ScriptPresetContext } from \"../types\";\n\nexport interface BannerFunctionDeclarationProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n insertNewlineBeforeBanner?: boolean;\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 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<ScriptPresetContext>();\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 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 <>\n <FunctionDeclaration\n name=\"banner\"\n doc={`Write the ${getAppTitle(context)} application banner ${\n command ? `for the ${command.title} command ` : \"\"\n }to the console.`}>\n <BannerFunctionBodyDeclaration\n title={title.value}\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 </FunctionDeclaration>\n </>\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 (useApp().get(\"banner\") || hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isMinimal) {\n return;\n }\n\n useApp().set(\"banner\", true); `}\n <Spacing />\n {children}\n <Spacing />\n <Show when={insertNewlineBeforeBanner}>{code`writeLine(\"\"); `}</Show>\n <Spacing />\n {code`\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(6)) + \" \" + ${\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\n }\")) + \" \" + colors.border.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 : `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 ${title ? `\"${title}\"` : \"title\"},\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.bold(colors.text.banner.title.${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 ${\n command?.title\n ? `${\n insertNewlineBeforeCommand\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 ${`writeLine(colors.border.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)) + colors.bold(colors.text.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)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `} `\n : \"\"\n }\n\n splitText(\n colors.bold(${\n command?.title\n ? \"colors.text.banner.description\"\n : \"colors.text.banner.command\"\n }.${variant}(\"${description.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 insertNewlineAfterDescription\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 writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer\n ? `colors.border.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 ? `colors.bold(colors.text.banner.footer.${variant}(\"${footer}\"))`\n : \"\"\n } + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(6))`\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 writeLine(\"\"); `}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"banner-function-declaration.cjs","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, Show } from \"@alloy-js/core\";\nimport { FunctionDeclaration } from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport { getAppDescription, getAppTitle } 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 type { ScriptPresetContext } from \"../types\";\n\nexport interface BannerFunctionDeclarationProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n insertNewlineBeforeBanner?: boolean;\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 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<ScriptPresetContext>();\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 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 <>\n <FunctionDeclaration\n name=\"banner\"\n doc={`Write the ${getAppTitle(context, true)} command-line interface application banner ${\n command ? `for the ${command.title} command ` : \"\"\n }to the console.`}>\n <BannerFunctionBodyDeclaration\n title={title.value}\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 </FunctionDeclaration>\n </>\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 (useApp().get(\"banner\") || hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isMinimal) {\n return;\n }\n\n useApp().set(\"banner\", true); `}\n <Spacing />\n {children}\n <Spacing />\n <Show when={insertNewlineBeforeBanner}>{code`writeLine(\"\"); `}</Show>\n <Spacing />\n {code`\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(6)) + \" \" + ${\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\n }\")) + \" \" + colors.border.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 : `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 ${title ? `\"${title}\"` : \"title\"},\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.bold(colors.text.banner.title.${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 ${\n command?.title\n ? `${\n insertNewlineBeforeCommand\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 ${`writeLine(colors.border.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)) + colors.bold(colors.text.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)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `} `\n : \"\"\n }\n\n splitText(\n colors.bold(${\n command?.title\n ? \"colors.text.banner.description\"\n : \"colors.text.banner.command\"\n }.${variant}(\"${description.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 insertNewlineAfterDescription\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 writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer\n ? `colors.border.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 ? `colors.bold(colors.text.banner.footer.${variant}(\"${footer}\"))`\n : \"\"\n } + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(6))`\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 writeLine(\"\"); `}\n </>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"banner-function-declaration.d.cts","names":[],"sources":["../../src/components/banner-function-declaration.tsx"],"sourcesContent":[],"mappings":";;;;;UA6BiB,8BAAA;YACL;EADK,aAAA,CAAA,EAAA,KAAA,GAAA,MAAA,GAA8B,MAAA,GAAA,OAAA,GAAA,OAAA;EACnC,yBAAA,CAAA,EAAA,OAAA;EAGA,OAAA,CAAA,EAAA,WAAA;EACC,QAAA,CAAA,EAAA,QAAA;;AASb;AAuDA;AAgBA;;;;iBAvEgB,yBAAA,QACP,iCAA8B;UAsDtB,kCAAA,SAA2C;;;;;;;;;;;;;;;iBAgB5C,6BAAA,QACP,qCAAkC"}
1
+ {"version":3,"file":"banner-function-declaration.d.cts","names":[],"sources":["../../src/components/banner-function-declaration.tsx"],"mappings":";;;;;UA6BiB,8BAAA;EACf,OAAA,GAAU,iBAAA;EACV,aAAA;EACA,yBAAA;EACA,OAAA,GAAU,WAAA;EACV,QAAA,GAAW,QAAA;AAAA;;;;;;;iBASG,yBAAA,CACd,KAAA,EAAO,8BAAA,GAA8B,QAAA;AAAA,UAsDtB,kCAAA,SAA2C,8BAAA;EAC1D,KAAA;EACA,MAAA;EACA,MAAA;EACA,WAAA;EACA,0BAAA;EACA,yBAAA;EACA,6BAAA;AAAA;;;;;;;iBASc,6BAAA,CACd,KAAA,EAAO,kCAAA,GAAkC,QAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"banner-function-declaration.d.mts","names":[],"sources":["../../src/components/banner-function-declaration.tsx"],"sourcesContent":[],"mappings":";;;;;UA6BiB,8BAAA;YACL;EADK,aAAA,CAAA,EAAA,KAAA,GAAA,MAAA,GAA8B,MAAA,GAAA,OAAA,GAAA,OAAA;EACnC,yBAAA,CAAA,EAAA,OAAA;EAGA,OAAA,CAAA,EAAA,WAAA;EACC,QAAA,CAAA,EAAA,QAAA;;AASb;AAuDA;AAgBA;;;;iBAvEgB,yBAAA,QACP,iCAA8B;UAsDtB,kCAAA,SAA2C;;;;;;;;;;;;;;;iBAgB5C,6BAAA,QACP,qCAAkC"}
1
+ {"version":3,"file":"banner-function-declaration.d.mts","names":[],"sources":["../../src/components/banner-function-declaration.tsx"],"mappings":";;;;;UA6BiB,8BAAA;EACf,OAAA,GAAU,iBAAA;EACV,aAAA;EACA,yBAAA;EACA,OAAA,GAAU,WAAA;EACV,QAAA,GAAW,QAAA;AAAA;;;;;;;iBASG,yBAAA,CACd,KAAA,EAAO,8BAAA,GAA8B,QAAA;AAAA,UAsDtB,kCAAA,SAA2C,8BAAA;EAC1D,KAAA;EACA,MAAA;EACA,MAAA;EACA,WAAA;EACA,0BAAA;EACA,yBAAA;EACA,6BAAA;AAAA;;;;;;;iBASc,6BAAA,CACd,KAAA,EAAO,kCAAA,GAAkC,QAAA"}
@@ -1,9 +1,9 @@
1
1
  import { createComponent, memo } from "@alloy-js/core/jsx-runtime";
2
2
  import { Show, code, computed } from "@alloy-js/core";
3
3
  import { FunctionDeclaration } from "@alloy-js/typescript";
4
+ import { getAppDescription, getAppTitle } from "@shell-shock/core/plugin-utils";
4
5
  import { Spacing } from "@powerlines/plugin-alloy/core/components/spacing";
5
6
  import { usePowerlines } from "@powerlines/plugin-alloy/core/contexts/context";
6
- import { getAppDescription, getAppTitle } from "@shell-shock/core/plugin-utils";
7
7
  import { useTheme } from "@shell-shock/plugin-theme/contexts/theme";
8
8
 
9
9
  //#region src/components/banner-function-declaration.tsx
@@ -24,7 +24,7 @@ function BannerFunctionDeclaration(props) {
24
24
  return [createComponent(FunctionDeclaration, {
25
25
  name: "banner",
26
26
  get doc() {
27
- return `Write the ${getAppTitle(context)} application banner ${command ? `for the ${command.title} command ` : ""}to the console.`;
27
+ return `Write the ${getAppTitle(context, true)} command-line interface application banner ${command ? `for the ${command.title} command ` : ""}to the console.`;
28
28
  },
29
29
  get children() {
30
30
  return createComponent(BannerFunctionBodyDeclaration, {
@@ -1 +1 @@
1
- {"version":3,"file":"banner-function-declaration.mjs","names":["code","computed","Show","FunctionDeclaration","Spacing","usePowerlines","getAppDescription","getAppTitle","useTheme","BannerFunctionDeclaration","props","consoleFnName","variant","command","children","insertNewlineBeforeBanner","theme","context","header","labels","banner","packageJson","version","footer","title","replace","description","_$createComponent","name","doc","BannerFunctionBodyDeclaration","value","insertNewlineBeforeCommand","insertNewlineAfterDescription","bannerPadding","Math","max","padding","app","borderStyles","outline","left","length","right","totalPadding","when","_$memo","topLeft","icons","top","topRight","icon","bottomLeft","bottom","bottomRight"],"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, Show } from \"@alloy-js/core\";\nimport { FunctionDeclaration } from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport { getAppDescription, getAppTitle } 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 type { ScriptPresetContext } from \"../types\";\n\nexport interface BannerFunctionDeclarationProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n insertNewlineBeforeBanner?: boolean;\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 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<ScriptPresetContext>();\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 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 <>\n <FunctionDeclaration\n name=\"banner\"\n doc={`Write the ${getAppTitle(context)} application banner ${\n command ? `for the ${command.title} command ` : \"\"\n }to the console.`}>\n <BannerFunctionBodyDeclaration\n title={title.value}\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 </FunctionDeclaration>\n </>\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 (useApp().get(\"banner\") || hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isMinimal) {\n return;\n }\n\n useApp().set(\"banner\", true); `}\n <Spacing />\n {children}\n <Spacing />\n <Show when={insertNewlineBeforeBanner}>{code`writeLine(\"\"); `}</Show>\n <Spacing />\n {code`\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(6)) + \" \" + ${\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\n }\")) + \" \" + colors.border.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 : `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 ${title ? `\"${title}\"` : \"title\"},\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.bold(colors.text.banner.title.${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 ${\n command?.title\n ? `${\n insertNewlineBeforeCommand\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 ${`writeLine(colors.border.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)) + colors.bold(colors.text.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)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `} `\n : \"\"\n }\n\n splitText(\n colors.bold(${\n command?.title\n ? \"colors.text.banner.description\"\n : \"colors.text.banner.command\"\n }.${variant}(\"${description.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 insertNewlineAfterDescription\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 writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer\n ? `colors.border.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 ? `colors.bold(colors.text.banner.footer.${variant}(\"${footer}\"))`\n : \"\"\n } + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(6))`\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 writeLine(\"\"); `}\n </>\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, Show } from \"@alloy-js/core\";\nimport { FunctionDeclaration } from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport { getAppDescription, getAppTitle } 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 type { ScriptPresetContext } from \"../types\";\n\nexport interface BannerFunctionDeclarationProps {\n variant?: ThemeColorVariant;\n consoleFnName?: \"log\" | \"info\" | \"warn\" | \"error\" | \"debug\";\n insertNewlineBeforeBanner?: boolean;\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 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<ScriptPresetContext>();\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 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 <>\n <FunctionDeclaration\n name=\"banner\"\n doc={`Write the ${getAppTitle(context, true)} command-line interface application banner ${\n command ? `for the ${command.title} command ` : \"\"\n }to the console.`}>\n <BannerFunctionBodyDeclaration\n title={title.value}\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 </FunctionDeclaration>\n </>\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 (useApp().get(\"banner\") || hasFlag(\"no-banner\") || hasFlag(\"hide-banner\") || isMinimal) {\n return;\n }\n\n useApp().set(\"banner\", true); `}\n <Spacing />\n {children}\n <Spacing />\n <Show when={insertNewlineBeforeBanner}>{code`writeLine(\"\"); `}</Show>\n <Spacing />\n {code`\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(6)) + \" \" + ${\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\n }\")) + \" \" + colors.border.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 : `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 ${title ? `\"${title}\"` : \"title\"},\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.bold(colors.text.banner.title.${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 ${\n command?.title\n ? `${\n insertNewlineBeforeCommand\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 ${`writeLine(colors.border.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)) + colors.bold(colors.text.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)) + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].right\n }\"), { consoleFn: console.${consoleFnName} }); `} `\n : \"\"\n }\n\n splitText(\n colors.bold(${\n command?.title\n ? \"colors.text.banner.description\"\n : \"colors.text.banner.command\"\n }.${variant}(\"${description.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 insertNewlineAfterDescription\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 writeLine(colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottomLeft\n }\") + ${\n footer\n ? `colors.border.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 ? `colors.bold(colors.text.banner.footer.${variant}(\"${footer}\"))`\n : \"\"\n } + \" \" + colors.border.banner.outline.${variant}(\"${\n theme.borderStyles.banner.outline[variant].bottom\n }\".repeat(6))`\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 writeLine(\"\"); `}\n </>\n );\n}\n"],"mappings":"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"}
@@ -1,19 +1,20 @@
1
- const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
3
  const require_components_exit_function_declaration = require('./exit-function-declaration.cjs');
3
- let __alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
4
- let __alloy_js_core = require("@alloy-js/core");
5
- let __alloy_js_typescript = require("@alloy-js/typescript");
6
- let __powerlines_plugin_alloy_core_components_spacing = require("@powerlines/plugin-alloy/core/components/spacing");
7
- let __powerlines_plugin_alloy_core_contexts_context = require("@powerlines/plugin-alloy/core/contexts/context");
8
- let __shell_shock_core_plugin_utils = require("@shell-shock/core/plugin-utils");
9
- let __powerlines_plugin_alloy_typescript_components_entry_file = require("@powerlines/plugin-alloy/typescript/components/entry-file");
10
- let __powerlines_plugin_alloy_typescript_components_tsdoc = require("@powerlines/plugin-alloy/typescript/components/tsdoc");
11
- let __stryke_helpers_get_unique = require("@stryke/helpers/get-unique");
12
- let __stryke_path_file_path_fns = require("@stryke/path/file-path-fns");
13
- let __stryke_path_replace = require("@stryke/path/replace");
14
- let __stryke_string_format_pascal_case = require("@stryke/string-format/pascal-case");
4
+ let _alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
5
+ let _alloy_js_core = require("@alloy-js/core");
6
+ let _alloy_js_typescript = require("@alloy-js/typescript");
7
+ let _shell_shock_core_plugin_utils = require("@shell-shock/core/plugin-utils");
8
+ let _powerlines_plugin_alloy_core_components_spacing = require("@powerlines/plugin-alloy/core/components/spacing");
9
+ let _powerlines_plugin_alloy_core_contexts_context = require("@powerlines/plugin-alloy/core/contexts/context");
15
10
  let defu = require("defu");
16
- defu = require_rolldown_runtime.__toESM(defu);
11
+ defu = require_runtime.__toESM(defu);
12
+ let _powerlines_plugin_alloy_typescript_components_tsdoc = require("@powerlines/plugin-alloy/typescript/components/tsdoc");
13
+ let _powerlines_plugin_alloy_typescript_components_entry_file = require("@powerlines/plugin-alloy/typescript/components/entry-file");
14
+ let _stryke_helpers_get_unique = require("@stryke/helpers/get-unique");
15
+ let _stryke_path_file_path_fns = require("@stryke/path/file-path-fns");
16
+ let _stryke_path_replace = require("@stryke/path/replace");
17
+ let _stryke_string_format_pascal_case = require("@stryke/string-format/pascal-case");
17
18
 
18
19
  //#region src/components/bin-entry.tsx
19
20
  /**
@@ -21,8 +22,8 @@ defu = require_rolldown_runtime.__toESM(defu);
21
22
  */
22
23
  function RunApplication() {
23
24
  return [
24
- (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
25
- __alloy_js_core.code`// Run the application main logic inside an asynchronous IIFE
25
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
26
+ _alloy_js_core.code`// Run the application main logic inside an asynchronous IIFE
26
27
  (async () => {
27
28
  const startDate = new Date();
28
29
  try {
@@ -89,7 +90,7 @@ function RunApplication() {
89
90
  }
90
91
  })();
91
92
  `,
92
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
93
+ (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
93
94
  ];
94
95
  }
95
96
  /**
@@ -97,15 +98,15 @@ function RunApplication() {
97
98
  */
98
99
  function BinEntry(props) {
99
100
  const { prefix, postfix, builtinImports, imports, children, ...rest } = props;
100
- const context = (0, __powerlines_plugin_alloy_core_contexts_context.usePowerlines)();
101
- const bins = (0, __alloy_js_core.computed)(() => (0, __stryke_helpers_get_unique.getUnique)(Object.values(context.config.bin)));
102
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.For, {
101
+ const context = (0, _powerlines_plugin_alloy_core_contexts_context.usePowerlines)();
102
+ const bins = (0, _alloy_js_core.computed)(() => (0, _stryke_helpers_get_unique.getUnique)(Object.values(context.config.bin)));
103
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.For, {
103
104
  get each() {
104
105
  return bins.value;
105
106
  },
106
- children: (bin) => (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_typescript_components_entry_file.EntryFile, (0, __alloy_js_core_jsx_runtime.mergeProps)(rest, {
107
+ children: (bin) => (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_typescript_components_entry_file.EntryFile, (0, _alloy_js_core_jsx_runtime.mergeProps)(rest, {
107
108
  get path() {
108
- return (0, __stryke_path_file_path_fns.findFileName)((0, __stryke_path_replace.replaceExtension)(bin));
109
+ return (0, _stryke_path_file_path_fns.findFileName)((0, _stryke_path_replace.replaceExtension)(bin));
109
110
  },
110
111
  typeDefinition: {
111
112
  file: bin,
@@ -115,7 +116,7 @@ function BinEntry(props) {
115
116
  return (0, defu.default)(imports ?? {}, Object.entries(context.commands).filter(([, command]) => command.isVirtual).reduce((ret, [name, command]) => {
116
117
  ret[`./${command.name}`] = [{
117
118
  name: "handler",
118
- alias: `handle${(0, __stryke_string_format_pascal_case.pascalCase)(name)}`
119
+ alias: `handle${(0, _stryke_string_format_pascal_case.pascalCase)(name)}`
119
120
  }];
120
121
  return ret;
121
122
  }, {}));
@@ -140,56 +141,64 @@ function BinEntry(props) {
140
141
  "internal_appContext",
141
142
  "getArgs",
142
143
  "findSuggestions"
143
- ]
144
+ ],
145
+ help: ["showHelp"]
144
146
  });
145
147
  },
146
148
  get children() {
147
149
  return [
148
- (0, __alloy_js_core_jsx_runtime.createComponent)(require_components_exit_function_declaration.ExitFunctionDeclaration, {}),
149
- (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
150
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
150
+ (0, _alloy_js_core_jsx_runtime.createComponent)(require_components_exit_function_declaration.ExitFunctionDeclaration, {}),
151
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
152
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
151
153
  get when() {
152
154
  return Boolean(prefix);
153
155
  },
154
156
  get children() {
155
- return [prefix, (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_core_components_spacing.Spacing, {})];
157
+ return [prefix, (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {})];
158
+ }
159
+ }),
160
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_typescript_components_tsdoc.TSDoc, {
161
+ get heading() {
162
+ return `Binary entry point for the ${(0, _shell_shock_core_plugin_utils.getAppTitle)(context, true)} command-line interface application.`;
163
+ },
164
+ get children() {
165
+ return [(0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_typescript_components_tsdoc.TSDocRemarks, { get children() {
166
+ return `This file serves as the main entry point for the binary executable of the ${(0, _shell_shock_core_plugin_utils.getAppTitle)(context, true)} command-line interface application. It sets up the necessary environment and runs the application logic with proper exit handling. The main function is defined within this file, and the application is executed inside an asynchronous IIFE to allow for the use of async/await syntax. The file also includes signal handling for graceful shutdowns and error handling for uncaught exceptions and unhandled promise rejections.`;
167
+ } }), (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_typescript_components_tsdoc.TSDocReturns, { children: `Returns a promise that resolves to either a successful result or an error object.` })];
156
168
  }
157
169
  }),
158
- (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_typescript_components_tsdoc.TSDoc, { get heading() {
159
- return `Binary entry point for the ${(0, __shell_shock_core_plugin_utils.getAppTitle)(context)} CLI application.`;
160
- } }),
161
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.FunctionDeclaration, {
170
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.FunctionDeclaration, {
162
171
  async: true,
163
- returnType: "any",
172
+ returnType: "any | { error: string | Error }",
164
173
  name: "main",
165
174
  get children() {
166
175
  return [
167
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
168
- condition: __alloy_js_core.code`hasFlag(["version", "v"])`,
176
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.IfStatement, {
177
+ condition: _alloy_js_core.code`hasFlag(["version", "v"])`,
169
178
  get children() {
170
- return __alloy_js_core.code`console.log(${context?.packageJson.version ? `"${context?.packageJson.version}"` : "0.0.1"});
171
- return;`;
179
+ return _alloy_js_core.code`console.log(${context?.packageJson.version ? `"${context?.packageJson.version}"` : "0.0.1"});
180
+ return; `;
172
181
  }
173
182
  }),
174
- (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
183
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
175
184
  children,
176
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
185
+ (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
177
186
  ];
178
187
  }
179
188
  }),
180
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
181
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
182
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
183
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
189
+ (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
190
+ (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
191
+ (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
192
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
184
193
  get when() {
185
194
  return Boolean(postfix);
186
195
  },
187
196
  get fallback() {
188
- return (0, __alloy_js_core_jsx_runtime.createComponent)(RunApplication, {});
197
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(RunApplication, {});
189
198
  },
190
199
  children: postfix
191
200
  }),
192
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
201
+ (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
193
202
  ];
194
203
  }
195
204
  }))
@@ -1 +1 @@
1
- {"version":3,"file":"bin-entry.cjs","names":["code","computed","For","Show","FunctionDeclaration","IfStatement","Spacing","usePowerlines","EntryFile","TSDoc","getAppTitle","getUnique","findFileName","replaceExtension","pascalCase","defu","ExitFunctionDeclaration","RunApplication","_$createComponent","_$createIntrinsic","BinEntry","props","prefix","postfix","builtinImports","imports","children","rest","context","bins","Object","values","config","bin","each","value","_$mergeProps","path","typeDefinition","file","output","entries","commands","filter","command","isVirtual","reduce","ret","name","alias","env","console","utils","when","Boolean","heading","async","returnType","condition","packageJson","version","fallback"],"sources":["../../src/components/bin-entry.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 type { TypescriptFileImports } from \"@powerlines/plugin-alloy/types/components\";\nimport type { EntryFileProps } from \"@powerlines/plugin-alloy/typescript/components/entry-file\";\nimport { EntryFile } from \"@powerlines/plugin-alloy/typescript/components/entry-file\";\nimport { TSDoc } from \"@powerlines/plugin-alloy/typescript/components/tsdoc\";\nimport { getAppTitle } from \"@shell-shock/core/plugin-utils\";\nimport { getUnique } from \"@stryke/helpers/get-unique\";\nimport { findFileName } from \"@stryke/path/file-path-fns\";\nimport { replaceExtension } from \"@stryke/path/replace\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport defu from \"defu\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\nimport { ExitFunctionDeclaration } from \"./exit-function-declaration\";\n\n/**\n * Runs the application main logic with proper exit handling.\n */\nexport function RunApplication() {\n return (\n <>\n <Spacing />\n {code`// Run the application main logic inside an asynchronous IIFE\n (async () => {\n const startDate = new Date();\n try {\n process.on(\"exit\", () => exit({\n startDate,\n skipProcessExit: true,\n isSynchronous: true,\n signal: 0\n }));\n process.on(\"beforeExit\", () => exit({\n startDate,\n signal: 0\n }));\n process.on(\"message\", message => {\n if (message === 'shutdown') {\n exit({\n startDate,\n isSynchronous: true,\n signal: -128\n });\n }\n });\n\n process.once(\"SIGTERM\", () => exit({\n startDate,\n signal: 15\n }));\n process.once(\"SIGINT\", () => exit({\n startDate,\n signal: 2\n }));\n process.once(\"SIGUSR2\", () => {\n verbose(\"The application was terminated by the user\");\n return exit({\n startDate,\n signal: 12\n });\n });\n process.once(\"SIGQUIT\", () => {\n verbose(\"The application was terminated by the user\");\n return exit({\n startDate,\n signal: 12\n });\n });\n\n for (const type of [\"unhandledRejection\", \"uncaughtException\"]) {\n process.on(type, err => exit({\n startDate,\n exception: err || new Error(\\`An \\${type === \"unhandledRejection\" ? \"unhandled promise rejection\" : \"uncaught exception\"} occurred during processing - the application is shutting down.\\`)\n }));\n }\n\n await internal_appContext.run(new Map([[\"args\", getArgs()]]), async () => {\n const result = await main();\n if (result?.error) {\n error(result.error);\n }\n });\n\n exit({ startDate });\n } catch (err) {\n exit({ startDate, exception: err as Error });\n }\n })();\n `}\n <hbr />\n </>\n );\n}\n\nexport interface BinEntryProps extends Omit<\n EntryFileProps,\n \"path\" | \"hashbang\"\n> {\n prefix?: Children;\n postfix?: Children;\n children: Children;\n}\n\n/**\n * The binary entry point for the Shell Shock project.\n */\nexport function BinEntry(props: BinEntryProps) {\n const { prefix, postfix, builtinImports, imports, children, ...rest } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const bins = computed(() => getUnique(Object.values(context.config.bin)));\n\n return (\n <For each={bins.value}>\n {bin => (\n <EntryFile\n {...rest}\n path={findFileName(replaceExtension(bin))}\n typeDefinition={{\n file: bin,\n output: \"bin\"\n }}\n imports={defu(\n imports ?? {},\n Object.entries(context.commands)\n .filter(([, command]) => command.isVirtual)\n .reduce((ret, [name, command]) => {\n ret[`./${command.name}`] = [\n { name: \"handler\", alias: `handle${pascalCase(name)}` }\n ];\n\n return ret;\n }, {} as TypescriptFileImports)\n )}\n builtinImports={defu(builtinImports ?? {}, {\n env: [\"env\", \"isDevelopment\", \"isDebug\"],\n console: [\"error\", \"verbose\", \"table\", \"writeLine\"],\n utils: [\n \"useApp\",\n \"hasFlag\",\n \"isUnicodeSupported\",\n \"internal_appContext\",\n \"getArgs\",\n \"findSuggestions\"\n ]\n })}>\n <ExitFunctionDeclaration />\n <Spacing />\n <Show when={Boolean(prefix)}>\n {prefix}\n <Spacing />\n </Show>\n <TSDoc\n heading={`Binary entry point for the ${getAppTitle(\n context\n )} CLI application.`}></TSDoc>\n <FunctionDeclaration async returnType=\"any\" name=\"main\">\n <IfStatement condition={code`hasFlag([\"version\", \"v\"])`}>\n {code`console.log(${\n context?.packageJson.version\n ? `\"${context?.packageJson.version}\"`\n : \"0.0.1\"\n });\n return;`}\n </IfStatement>\n <Spacing />\n {children}\n <hbr />\n </FunctionDeclaration>\n <hbr />\n <hbr />\n <hbr />\n <Show when={Boolean(postfix)} fallback={<RunApplication />}>\n {postfix}\n </Show>\n <hbr />\n </EntryFile>\n )}\n </For>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAuCA,SAAgBiB,iBAAiB;AAC/B,QAAA;mDAEKX,2DAAO,EAAA,CAAA;EACPN,oBAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDAkEJ,OAAA,EAAA,CAAA;EAAA;;;;;AAkBP,SAAgBoB,SAASC,OAAsB;CAC7C,MAAM,EAAEC,QAAQC,SAASC,gBAAgBC,SAASC,UAAU,GAAGC,SAASN;CAExE,MAAMO,8EAA8C;CACpD,MAAMC,sFAAgCC,OAAOC,OAAOH,QAAQI,OAAOC,IAAI,CAAC,CAAC;AAEzE,yDACG/B,qBAAG;EAAA,IAACgC,OAAI;AAAA,UAAEL,KAAKM;;EAAKT,WAClBO,yDACEzB,kHACKmB,MAAI;GAAA,IACRU,OAAI;AAAA,qGAAgCJ,IAAI,CAAC;;GACzCK,gBAAgB;IACdC,MAAMN;IACNO,QAAQ;IACT;GAAA,IACDf,UAAO;AAAA,6BACLA,WAAW,EAAE,EACbK,OAAOW,QAAQb,QAAQc,SAAS,CAC7BC,QAAQ,GAAGC,aAAaA,QAAQC,UAAU,CAC1CC,QAAQC,KAAK,CAACC,MAAMJ,aAAa;AAChCG,SAAI,KAAKH,QAAQI,UAAU,CACzB;MAAEA,MAAM;MAAWC,OAAO,4DAAoBD,KAAK;MAAI,CACxD;AAED,YAAOD;OACN,EAA2B,CAClC,CAAC;;GAAA,IACDvB,iBAAc;AAAA,6BAAOA,kBAAkB,EAAE,EAAE;KACzC0B,KAAK;MAAC;MAAO;MAAiB;MAAU;KACxCC,SAAS;MAAC;MAAS;MAAW;MAAS;MAAY;KACnDC,OAAO;MACL;MACA;MACA;MACA;MACA;MACA;MAAiB;KAEpB,CAAC;;GAAA,IAAA1B,WAAA;AAAA,WAAA;sDACDV,sEAAuB,EAAA,CAAA;sDACvBV,2DAAO,EAAA,CAAA;sDACPH,sBAAI;MAAA,IAACkD,OAAI;AAAA,cAAEC,QAAQhC,OAAO;;MAAA,IAAAI,WAAA;AAAA,cAAA,CACxBJ,yDACAhB,2DAAO,EAAA,CAAA,CAAA;;MAAA,CAAA;sDAETG,6DAAK,EAAA,IACJ8C,UAAO;AAAA,aAAE,+EACP3B,QACD,CAAA;QAAmB,CAAA;sDACrBxB,2CAAmB;MAACoD,OAAK;MAACC,YAAU;MAAOT,MAAI;MAAA,IAAAtB,WAAA;AAAA,cAAA;yDAC7CrB,mCAAW;SAACqD,WAAW1D,oBAAI;SAA2B,IAAA0B,WAAA;AAAA,iBACpD1B,oBAAI,eACH4B,SAAS+B,YAAYC,UACjB,IAAIhC,SAAS+B,YAAYC,QAAO,KAChC,QAAO;;;SAET,CAAA;yDAELtD,2DAAO,EAAA,CAAA;QACPoB;yDAAQ,OAAA,EAAA,CAAA;QAAA;;MAAA,CAAA;sDAAA,OAAA,EAAA,CAAA;sDAAA,OAAA,EAAA,CAAA;sDAAA,OAAA,EAAA,CAAA;sDAMVvB,sBAAI;MAAA,IAACkD,OAAI;AAAA,cAAEC,QAAQ/B,QAAQ;;MAAA,IAAEsC,WAAQ;AAAA,+DAAG5C,gBAAc,EAAA,CAAA;;MAAAS,UACpDH;MAAO,CAAA;sDAAA,OAAA,EAAA,CAAA;KAAA;;GAAA,CAAA,CAAA;EAIb,CAAA"}
1
+ {"version":3,"file":"bin-entry.cjs","names":[],"sources":["../../src/components/bin-entry.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 type { TypescriptFileImports } from \"@powerlines/plugin-alloy/types/components\";\nimport type { EntryFileProps } from \"@powerlines/plugin-alloy/typescript/components/entry-file\";\nimport { EntryFile } from \"@powerlines/plugin-alloy/typescript/components/entry-file\";\nimport {\n TSDoc,\n TSDocRemarks,\n TSDocReturns\n} from \"@powerlines/plugin-alloy/typescript/components/tsdoc\";\nimport { getAppTitle } from \"@shell-shock/core/plugin-utils\";\nimport { getUnique } from \"@stryke/helpers/get-unique\";\nimport { findFileName } from \"@stryke/path/file-path-fns\";\nimport { replaceExtension } from \"@stryke/path/replace\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport defu from \"defu\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\nimport { ExitFunctionDeclaration } from \"./exit-function-declaration\";\n\n/**\n * Runs the application main logic with proper exit handling.\n */\nexport function RunApplication() {\n return (\n <>\n <Spacing />\n {code`// Run the application main logic inside an asynchronous IIFE\n (async () => {\n const startDate = new Date();\n try {\n process.on(\"exit\", () => exit({\n startDate,\n skipProcessExit: true,\n isSynchronous: true,\n signal: 0\n }));\n process.on(\"beforeExit\", () => exit({\n startDate,\n signal: 0\n }));\n process.on(\"message\", message => {\n if (message === 'shutdown') {\n exit({\n startDate,\n isSynchronous: true,\n signal: -128\n });\n }\n });\n\n process.once(\"SIGTERM\", () => exit({\n startDate,\n signal: 15\n }));\n process.once(\"SIGINT\", () => exit({\n startDate,\n signal: 2\n }));\n process.once(\"SIGUSR2\", () => {\n verbose(\"The application was terminated by the user\");\n return exit({\n startDate,\n signal: 12\n });\n });\n process.once(\"SIGQUIT\", () => {\n verbose(\"The application was terminated by the user\");\n return exit({\n startDate,\n signal: 12\n });\n });\n\n for (const type of [\"unhandledRejection\", \"uncaughtException\"]) {\n process.on(type, err => exit({\n startDate,\n exception: err || new Error(\\`An \\${type === \"unhandledRejection\" ? \"unhandled promise rejection\" : \"uncaught exception\"} occurred during processing - the application is shutting down.\\`)\n }));\n }\n\n await internal_appContext.run(new Map([[\"args\", getArgs()]]), async () => {\n const result = await main();\n if (result?.error) {\n error(result.error);\n }\n });\n\n exit({ startDate });\n } catch (err) {\n exit({ startDate, exception: err as Error });\n }\n })();\n `}\n <hbr />\n </>\n );\n}\n\nexport interface BinEntryProps extends Omit<\n EntryFileProps,\n \"path\" | \"hashbang\"\n> {\n prefix?: Children;\n postfix?: Children;\n children: Children;\n}\n\n/**\n * The binary entry point for the Shell Shock project.\n */\nexport function BinEntry(props: BinEntryProps) {\n const { prefix, postfix, builtinImports, imports, children, ...rest } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const bins = computed(() => getUnique(Object.values(context.config.bin)));\n\n return (\n <For each={bins.value}>\n {bin => (\n <EntryFile\n {...rest}\n path={findFileName(replaceExtension(bin))}\n typeDefinition={{\n file: bin,\n output: \"bin\"\n }}\n imports={defu(\n imports ?? {},\n Object.entries(context.commands)\n .filter(([, command]) => command.isVirtual)\n .reduce((ret, [name, command]) => {\n ret[`./${command.name}`] = [\n { name: \"handler\", alias: `handle${pascalCase(name)}` }\n ];\n\n return ret;\n }, {} as TypescriptFileImports)\n )}\n builtinImports={defu(builtinImports ?? {}, {\n env: [\"env\", \"isDevelopment\", \"isDebug\"],\n console: [\"error\", \"verbose\", \"table\", \"writeLine\"],\n utils: [\n \"useApp\",\n \"hasFlag\",\n \"isUnicodeSupported\",\n \"internal_appContext\",\n \"getArgs\",\n \"findSuggestions\"\n ],\n help: [\"showHelp\"]\n })}>\n <ExitFunctionDeclaration />\n <Spacing />\n <Show when={Boolean(prefix)}>\n {prefix}\n <Spacing />\n </Show>\n <TSDoc\n heading={`Binary entry point for the ${getAppTitle(\n context,\n true\n )} command-line interface application.`}>\n <TSDocRemarks>\n {`This file serves as the main entry point for the binary executable of the ${getAppTitle(\n context,\n true\n )} command-line interface application. It sets up the necessary environment and runs the application logic with proper exit handling. The main function is defined within this file, and the application is executed inside an asynchronous IIFE to allow for the use of async/await syntax. The file also includes signal handling for graceful shutdowns and error handling for uncaught exceptions and unhandled promise rejections.`}\n </TSDocRemarks>\n <TSDocReturns>\n {`Returns a promise that resolves to either a successful result or an error object.`}\n </TSDocReturns>\n </TSDoc>\n <FunctionDeclaration\n async\n returnType=\"any | { error: string | Error }\"\n name=\"main\">\n <IfStatement condition={code`hasFlag([\"version\", \"v\"])`}>\n {code`console.log(${\n context?.packageJson.version\n ? `\"${context?.packageJson.version}\"`\n : \"0.0.1\"\n });\n return; `}\n </IfStatement>\n <Spacing />\n {children}\n <hbr />\n </FunctionDeclaration>\n <hbr />\n <hbr />\n <hbr />\n <Show when={Boolean(postfix)} fallback={<RunApplication />}>\n {postfix}\n </Show>\n <hbr />\n </EntryFile>\n )}\n </For>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAwCA,SAAE,iBAAA;AACA,QAAM;kDAAoB,0DAAO,EAAI,CAAC;EAAA,mBAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8E9C,MAAO,EACL,QACC,SACD,gBACA,SACA,UACA,GAAA,SACF;;CAEE,MAAA,oFAAA,OAAA,OAAA,QAAA,OAAA,IAAA,CAAA,CAAA;AACA,wDAAwB,oBAAI;EAC5B,IAAA,OAAA;AACI,UAAC,KAAS;;;GAGd,IAAM,OAAS;AACT,mGAAgC,IAAO,CAAA;;GAE7C,gBAAO;IACD,MAAM;IACP,QAAO;IACP;GACD,IAAI,UAAQ;AACV,6BAAQ,WAAa,EAAA,EAAA,OAAA,QAAqB,QAAC,SAAA,CAAA,QAAA,GAAA,aAAA,QAAA,UAAA,CAAA,QAAA,KAAA,CAAA,MAAA,aAAA;AACzC,SAAA,KAAA,QAAgB,UAAA,CAAA;MACd,MAAM;MACN,OAAO,2DAAK,KAAA;MACb,CAAA;AACD,YAAO;OACN,EAAC,CAAa,CAAA;;GAEnB,IAAI,iBAAgB;AAClB,6BAAO,kBAAoB,EAAA,EAAO;KAChC,KAAK;MAAC;MAAO;MAAiB;MAAG;KACjC,SAAS;MAAC;MAAO;MAAU;MAAQ;MAAQ;KAC3C,OAAO;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;;KAER,CAAC;;GAEJ,IAAI,WAAC;AACH,WAAE;qDAAqB,sEAAsB,EAAA,CAAA;qDAAA,0DAAA,EAAA,CAAA;qDAAA,qBAAA;MAC3C,IAAE,OAAO;AACP,cAAO,QAAI,OAAS;;MAEtB,IAAI,WAAQ;AACV,cAAG,CAAA,wDAAQ,0DAAA,EAAA,CAAA,CAAA;;MAEd,CAAC;qDAAK,4DAAoB;MACzB,IAAI,UAAS;AACX,cAAG,8EAAe,SAAA,KAAA,CAAA;;MAEpB,IAAE,WAAQ;AACR,cAAC,iDAAA,mEAAA,EACF,IAAA,WAAA;AACA,eAAS,6HAAA,SAAA,KAAA,CAAA;UAEP,CAAA,kDAAM,mEAAA,EACN,UAAS,qFACV,CAAA,CAAA;;MAEH,CAAC;qDAAmB,0CAAsB;MACzC,OAAI;MACJ,YAAI;MACJ,MAAK;MACL,IAAG,WAAY;AACb,cAAI;wDAAoB,kCAAe;SACrC,WAAS,mBAAA;SACT,IAAE,WAAA;AACA,iBAAC,mBAAQ,eAAe,SAAW,YAAY,UAAK,IAAS,SAAC,YAAoB,QAAK,KAAA,QAAY;;;SAGtG,CAAC;wDAAoB,0DAAK,EAAA,CAAA;QAAS;wDAAuB,OAAY,EAAC,CAAA;QAAA;;MAE3E,CAAC;qDAAO,OAAA,EAAA,CAAA;qDAAA,OAAA,EAAA,CAAA;qDAAA,OAAA,EAAA,CAAA;qDAAA,qBAAA;MACP,IAAC,OAAA;AACC,cAAA,QAAA,QAAA;;MAEF,IAAE,WAAW;AACX,8DAAwB,gBAAe,EAAA,CAAA;;MAEzC,UAAM;MACP,CAAC;qDAAc,OAAS,EAAA,CAAA;KAAA;;GAE5B,CAAC,CAAC;EACJ,CAAC"}
@@ -2,7 +2,6 @@ import { Children } from "@alloy-js/core";
2
2
  import { EntryFileProps } from "@powerlines/plugin-alloy/typescript/components/entry-file";
3
3
 
4
4
  //#region src/components/bin-entry.d.ts
5
-
6
5
  /**
7
6
  * Runs the application main logic with proper exit handling.
8
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bin-entry.d.cts","names":[],"sources":["../../src/components/bin-entry.tsx"],"sourcesContent":[],"mappings":";;;;;;;AAuCA;AA4EiB,iBA5ED,cAAA,CAAA,CA4Ee,EA5ED,QA4EC;AAC7B,UADe,aAAA,SAAsB,IACrC,CAAA,cAAA,EAAA,MAAA,GAAA,UAAA,CAAA,CAAA;EAGS,MAAA,CAAA,EAAA,QAAA;EACC,OAAA,CAAA,EAAA,QAAA;EACA,QAAA,EAAA,QAAA;;;AAMZ;;iBAAgB,QAAA,QAAgB,gBAAa"}
1
+ {"version":3,"file":"bin-entry.d.cts","names":[],"sources":["../../src/components/bin-entry.tsx"],"mappings":";;;;;;AA2CA;iBAAgB,cAAA,CAAA,GAAc,QAAA;AAAA,UA4Eb,aAAA,SAAsB,IAAA,CACrC,cAAA;EAGA,MAAA,GAAS,QAAA;EACT,OAAA,GAAU,QAAA;EACV,QAAA,EAAU,QAAA;AAAA;;;;iBAMI,QAAA,CAAS,KAAA,EAAO,aAAA,GAAa,QAAA"}
@@ -2,7 +2,6 @@ import { Children } from "@alloy-js/core";
2
2
  import { EntryFileProps } from "@powerlines/plugin-alloy/typescript/components/entry-file";
3
3
 
4
4
  //#region src/components/bin-entry.d.ts
5
-
6
5
  /**
7
6
  * Runs the application main logic with proper exit handling.
8
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bin-entry.d.mts","names":[],"sources":["../../src/components/bin-entry.tsx"],"sourcesContent":[],"mappings":";;;;;;;AAuCA;AA4EiB,iBA5ED,cAAA,CAAA,CA4Ee,EA5ED,QA4EC;AAC7B,UADe,aAAA,SAAsB,IACrC,CAAA,cAAA,EAAA,MAAA,GAAA,UAAA,CAAA,CAAA;EAGS,MAAA,CAAA,EAAA,QAAA;EACC,OAAA,CAAA,EAAA,QAAA;EACA,QAAA,EAAA,QAAA;;;AAMZ;;iBAAgB,QAAA,QAAgB,gBAAa"}
1
+ {"version":3,"file":"bin-entry.d.mts","names":[],"sources":["../../src/components/bin-entry.tsx"],"mappings":";;;;;;AA2CA;iBAAgB,cAAA,CAAA,GAAc,QAAA;AAAA,UA4Eb,aAAA,SAAsB,IAAA,CACrC,cAAA;EAGA,MAAA,GAAS,QAAA;EACT,OAAA,GAAU,QAAA;EACV,QAAA,EAAU,QAAA;AAAA;;;;iBAMI,QAAA,CAAS,KAAA,EAAO,aAAA,GAAa,QAAA"}