@shell-shock/preset-script 0.3.1 → 0.3.3

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 (84) hide show
  1. package/README.md +1 -1
  2. package/dist/components/banner-function-declaration.cjs +68 -0
  3. package/dist/components/banner-function-declaration.cjs.map +1 -0
  4. package/dist/components/banner-function-declaration.d.cts +19 -0
  5. package/dist/components/banner-function-declaration.d.cts.map +1 -0
  6. package/dist/components/banner-function-declaration.d.mts +19 -0
  7. package/dist/components/banner-function-declaration.d.mts.map +1 -0
  8. package/dist/components/banner-function-declaration.mjs +67 -0
  9. package/dist/components/banner-function-declaration.mjs.map +1 -0
  10. package/dist/components/bin-entry.cjs +1 -1
  11. package/dist/components/bin-entry.mjs +1 -1
  12. package/dist/components/command-entry.cjs +28 -18
  13. package/dist/components/command-entry.cjs.map +1 -1
  14. package/dist/components/command-entry.d.cts +5 -5
  15. package/dist/components/command-entry.d.cts.map +1 -1
  16. package/dist/components/command-entry.d.mts +4 -4
  17. package/dist/components/command-entry.d.mts.map +1 -1
  18. package/dist/components/command-entry.mjs +27 -17
  19. package/dist/components/command-entry.mjs.map +1 -1
  20. package/dist/components/command-router.cjs +8 -29
  21. package/dist/components/command-router.cjs.map +1 -1
  22. package/dist/components/command-router.mjs +8 -29
  23. package/dist/components/command-router.mjs.map +1 -1
  24. package/dist/components/console-builtin.cjs +10 -66
  25. package/dist/components/console-builtin.cjs.map +1 -1
  26. package/dist/components/console-builtin.d.cts +2 -11
  27. package/dist/components/console-builtin.d.cts.map +1 -1
  28. package/dist/components/console-builtin.d.mts +2 -11
  29. package/dist/components/console-builtin.d.mts.map +1 -1
  30. package/dist/components/console-builtin.mjs +12 -67
  31. package/dist/components/console-builtin.mjs.map +1 -1
  32. package/dist/components/help.cjs +75 -9
  33. package/dist/components/help.cjs.map +1 -1
  34. package/dist/components/help.d.cts +15 -1
  35. package/dist/components/help.d.cts.map +1 -1
  36. package/dist/components/help.d.mts +20 -6
  37. package/dist/components/help.d.mts.map +1 -1
  38. package/dist/components/help.mjs +75 -10
  39. package/dist/components/help.mjs.map +1 -1
  40. package/dist/components/index.cjs +3 -8
  41. package/dist/components/index.d.cts +4 -4
  42. package/dist/components/index.d.mts +4 -4
  43. package/dist/components/index.mjs +4 -4
  44. package/dist/components/utils-builtin.cjs +2 -2
  45. package/dist/components/utils-builtin.cjs.map +1 -1
  46. package/dist/components/utils-builtin.d.cts +7 -7
  47. package/dist/components/utils-builtin.d.mts +7 -7
  48. package/dist/components/utils-builtin.mjs +2 -2
  49. package/dist/components/utils-builtin.mjs.map +1 -1
  50. package/dist/components/virtual-command-entry.cjs +3 -3
  51. package/dist/components/virtual-command-entry.cjs.map +1 -1
  52. package/dist/components/virtual-command-entry.d.cts +4 -4
  53. package/dist/components/virtual-command-entry.d.mts +3 -3
  54. package/dist/components/virtual-command-entry.d.mts.map +1 -1
  55. package/dist/components/virtual-command-entry.mjs +3 -3
  56. package/dist/components/virtual-command-entry.mjs.map +1 -1
  57. package/dist/contexts/theme.cjs +2 -2
  58. package/dist/contexts/theme.cjs.map +1 -1
  59. package/dist/helpers/ansi-utils.cjs +3 -0
  60. package/dist/helpers/ansi-utils.d.cts +8 -1
  61. package/dist/helpers/ansi-utils.d.cts.map +1 -1
  62. package/dist/helpers/ansi-utils.d.mts +8 -1
  63. package/dist/helpers/ansi-utils.d.mts.map +1 -1
  64. package/dist/helpers/ansi-utils.mjs +1 -1
  65. package/dist/helpers/get-default-options.d.cts +13 -0
  66. package/dist/helpers/get-default-options.d.cts.map +1 -0
  67. package/dist/helpers/get-default-options.d.mts +13 -0
  68. package/dist/helpers/get-default-options.d.mts.map +1 -0
  69. package/dist/index.cjs +20 -53
  70. package/dist/index.cjs.map +1 -1
  71. package/dist/index.d.cts.map +1 -1
  72. package/dist/index.d.mts.map +1 -1
  73. package/dist/index.mjs +19 -52
  74. package/dist/index.mjs.map +1 -1
  75. package/dist/types/plugin.d.mts.map +1 -1
  76. package/package.json +47 -20
  77. package/dist/components/args-parser-logic.cjs +0 -678
  78. package/dist/components/args-parser-logic.cjs.map +0 -1
  79. package/dist/components/args-parser-logic.d.cts +0 -45
  80. package/dist/components/args-parser-logic.d.cts.map +0 -1
  81. package/dist/components/args-parser-logic.d.mts +0 -45
  82. package/dist/components/args-parser-logic.d.mts.map +0 -1
  83. package/dist/components/args-parser-logic.mjs +0 -672
  84. package/dist/components/args-parser-logic.mjs.map +0 -1
@@ -1,16 +1,16 @@
1
- import { OptionsInterfaceDeclaration, OptionsParserLogic, ParamsParserLogic, VariablePathsParserLogic } from "./args-parser-logic.mjs";
2
1
  import { Help } from "./help.mjs";
3
2
  import { VirtualCommandEntry } from "./virtual-command-entry.mjs";
4
3
  import { createComponent, createIntrinsic, memo, mergeProps } from "@alloy-js/core/jsx-runtime";
5
4
  import { For, Show, code, computed } from "@alloy-js/core";
6
5
  import { ElseClause, FunctionDeclaration, IfStatement } from "@alloy-js/typescript";
7
- import { getAppBin, getAppTitle, getVariableCommandPathName, isVariableCommandPath } from "@shell-shock/core/plugin-utils/context-helpers";
8
6
  import { usePowerlines } from "@powerlines/plugin-alloy/core/contexts/context";
7
+ import { getAppBin, getAppTitle, getPositionalCommandOptionName, isPositionalCommandOption } from "@shell-shock/core/plugin-utils/context-helpers";
9
8
  import { EntryFile } from "@powerlines/plugin-alloy/typescript/components/entry-file";
10
9
  import { TSDoc, TSDocParam, TSDocRemarks, TSDocTitle } from "@powerlines/plugin-alloy/typescript/components/tsdoc";
11
10
  import { replaceExtension } from "@stryke/path/replace";
12
11
  import { pascalCase } from "@stryke/string-format/pascal-case";
13
12
  import defu from "defu";
13
+ import { OptionsInterfaceDeclaration, OptionsParserLogic, PositionalOptionsParserLogic } from "@shell-shock/core/components/options-parser-logic";
14
14
  import { findFilePath, relativePath } from "@stryke/path/find";
15
15
  import { joinPaths } from "@stryke/path/join";
16
16
  import { camelCase } from "@stryke/string-format/camel-case";
@@ -19,7 +19,7 @@ import { constantCase } from "@stryke/string-format/constant-case";
19
19
  //#region src/components/command-entry.tsx
20
20
  function CommandInvocation(props) {
21
21
  const { command } = props;
22
- return [memo(() => code`return Promise.resolve(handle${pascalCase(command.name)}(options${command.path.segments.filter((segment) => isVariableCommandPath(segment)).length > 0 ? `, ${command.path.segments.filter((segment) => isVariableCommandPath(segment)).map((segment) => camelCase(getVariableCommandPathName(segment))).join(", ")}` : ""}${command.params.length > 0 ? `, ${command.params.map((param) => camelCase(param.name)).join(", ")}` : ""}));`), createIntrinsic("hbr", {})];
22
+ return [memo(() => code`return Promise.resolve(handle${pascalCase(command.name)}(options${command.path.segments.filter((segment) => isPositionalCommandOption(segment)).length > 0 ? `, ${command.path.segments.filter((segment) => isPositionalCommandOption(segment)).map((segment) => camelCase(getPositionalCommandOptionName(segment))).join(", ")}` : ""}));`), createIntrinsic("hbr", {})];
23
23
  }
24
24
  /**
25
25
  * A component that generates the `handler` function declaration for a command.
@@ -29,7 +29,7 @@ function CommandHandlerDeclaration(props) {
29
29
  const context = usePowerlines();
30
30
  return [createComponent(TSDoc, {
31
31
  get heading() {
32
- return `The ${command.title} (${getAppBin(context)} ${command.path.segments.map((segment) => isVariableCommandPath(segment) ? `[${constantCase(getVariableCommandPathName(segment))}]` : segment).join(" ")}) command.`;
32
+ return `The ${command.title} (${getAppBin(context)} ${command.path.segments.map((segment) => isPositionalCommandOption(segment) ? `[${constantCase(getPositionalCommandOptionName(segment))}]` : segment).join(" ")}) command.`;
33
33
  },
34
34
  get children() {
35
35
  return [
@@ -57,17 +57,25 @@ function CommandHandlerDeclaration(props) {
57
57
  }],
58
58
  get children() {
59
59
  return [
60
- createComponent(VariablePathsParserLogic, { get path() {
61
- return command.path;
62
- } }),
63
- createIntrinsic("hbr", {}),
64
- createIntrinsic("hbr", {}),
65
- createComponent(OptionsParserLogic, { command }),
60
+ createComponent(PositionalOptionsParserLogic, {
61
+ get path() {
62
+ return command.path;
63
+ },
64
+ get envPrefix() {
65
+ return context.config.envPrefix;
66
+ }
67
+ }),
66
68
  createIntrinsic("hbr", {}),
67
69
  createIntrinsic("hbr", {}),
68
- createComponent(ParamsParserLogic, { get params() {
69
- return command.params;
70
- } }),
70
+ createComponent(OptionsParserLogic, {
71
+ command,
72
+ get envPrefix() {
73
+ return context.config.envPrefix;
74
+ },
75
+ get isCaseSensitive() {
76
+ return context.config.isCaseSensitive;
77
+ }
78
+ }),
71
79
  createIntrinsic("hbr", {}),
72
80
  createIntrinsic("hbr", {}),
73
81
  createComponent(IfStatement, {
@@ -98,7 +106,7 @@ function CommandHandlerDeclaration(props) {
98
106
  function CommandEntry(props) {
99
107
  const { command, imports, builtinImports, ...rest } = props;
100
108
  const context = usePowerlines();
101
- const filePath = computed(() => joinPaths(command.path.segments.filter((segment) => !isVariableCommandPath(segment)).join("/"), "index.ts"));
109
+ const filePath = computed(() => joinPaths(command.path.segments.filter((segment) => !isPositionalCommandOption(segment)).join("/"), "index.ts"));
102
110
  const commandSourcePath = computed(() => replaceExtension(relativePath(joinPaths(context.entryPath, findFilePath(filePath.value)), command.entry.input?.file || command.entry.file)));
103
111
  const typeDefinition = computed(() => ({
104
112
  ...command.entry,
@@ -116,15 +124,17 @@ function CommandEntry(props) {
116
124
  },
117
125
  get builtinImports() {
118
126
  return defu(builtinImports ?? {}, {
119
- env: ["env"],
127
+ env: ["env", "isCI"],
120
128
  console: [
121
129
  "warn",
122
130
  "error",
123
131
  "table",
124
132
  "colors",
125
- "writeLine"
133
+ "stripAnsi",
134
+ "writeLine",
135
+ "splitText"
126
136
  ],
127
- utils: ["getArgs"]
137
+ utils: ["getArgs", "isMinimal"]
128
138
  });
129
139
  },
130
140
  get children() {
@@ -1 +1 @@
1
- {"version":3,"file":"command-entry.mjs","names":["code","computed","For","Show","ElseClause","FunctionDeclaration","IfStatement","usePowerlines","EntryFile","TSDoc","TSDocParam","TSDocRemarks","TSDocTitle","getAppBin","getAppTitle","getVariableCommandPathName","isVariableCommandPath","findFilePath","relativePath","joinPaths","replaceExtension","camelCase","constantCase","pascalCase","defu","OptionsInterfaceDeclaration","OptionsParserLogic","ParamsParserLogic","VariablePathsParserLogic","Help","VirtualCommandEntry","CommandInvocation","props","command","_$memo","name","path","segments","filter","segment","length","map","join","params","param","_$createIntrinsic","CommandHandlerDeclaration","context","_$createComponent","heading","title","children","description","replace","async","parameters","type","default","condition","CommandEntry","imports","builtinImports","rest","filePath","commandSourcePath","entryPath","value","entry","input","file","typeDefinition","output","id","_$mergeProps","env","console","utils","each","Object","values","child","when","isVirtual","fallback"],"sources":["../../src/components/command-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 { code, computed, For, Show } from \"@alloy-js/core\";\nimport {\n ElseClause,\n FunctionDeclaration,\n IfStatement\n} from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\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 TSDocParam,\n TSDocRemarks,\n TSDocTitle\n} from \"@powerlines/plugin-alloy/typescript/components/tsdoc\";\nimport {\n getAppBin,\n getAppTitle,\n getVariableCommandPathName,\n isVariableCommandPath\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport { findFilePath, relativePath } from \"@stryke/path/find\";\nimport { joinPaths } from \"@stryke/path/join\";\nimport { replaceExtension } from \"@stryke/path/replace\";\nimport { camelCase } from \"@stryke/string-format/camel-case\";\nimport { constantCase } from \"@stryke/string-format/constant-case\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport defu from \"defu\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\nimport {\n OptionsInterfaceDeclaration,\n OptionsParserLogic,\n ParamsParserLogic,\n VariablePathsParserLogic\n} from \"./args-parser-logic\";\nimport { Help } from \"./help\";\nimport { VirtualCommandEntry } from \"./virtual-command-entry\";\n\nexport function CommandInvocation(props: { command: CommandTree }) {\n const { command } = props;\n\n return (\n <>\n {code`return Promise.resolve(handle${pascalCase(command.name)}(options${\n command.path.segments.filter(segment => isVariableCommandPath(segment))\n .length > 0\n ? `, ${command.path.segments\n .filter(segment => isVariableCommandPath(segment))\n .map(segment => camelCase(getVariableCommandPathName(segment)))\n .join(\", \")}`\n : \"\"\n }${\n command.params.length > 0\n ? `, ${command.params.map(param => camelCase(param.name)).join(\", \")}`\n : \"\"\n }));`}\n <hbr />\n </>\n );\n}\n\n/**\n * A component that generates the `handler` function declaration for a command.\n */\nexport function CommandHandlerDeclaration(props: { command: CommandTree }) {\n const { command } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n\n return (\n <>\n <TSDoc\n heading={`The ${command.title} (${getAppBin(\n context\n )} ${command.path.segments\n .map(segment =>\n isVariableCommandPath(segment)\n ? `[${constantCase(getVariableCommandPathName(segment))}]`\n : segment\n )\n .join(\" \")}) command.`}>\n <TSDocRemarks>{`${command.description.replace(/\\.+$/, \"\")}.`}</TSDocRemarks>\n <hbr />\n <TSDocTitle>{command.title}</TSDocTitle>\n <TSDocParam name=\"args\">{`The command-line arguments passed to the command.`}</TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n async\n name=\"handler\"\n parameters={[{ name: \"args\", type: \"string[]\", default: \"getArgs()\" }]}>\n <VariablePathsParserLogic path={command.path} />\n <hbr />\n <hbr />\n <OptionsParserLogic command={command} />\n <hbr />\n <hbr />\n <ParamsParserLogic params={command.params} />\n <hbr />\n <hbr />\n <IfStatement condition={code`options.help`}>\n {code`\n writeLine(\"\");\n writeLine(colors.text.heading.primary(\"${getAppTitle(context)} - ${\n command.title\n }\"));\n writeLine(\"\");\n writeLine(colors.text.body.primary(\"${command.description.replace(\n /\\.+$/,\n \"\"\n )}.\"));\n writeLine(\"\");`}\n <hbr />\n <Help command={command} />\n </IfStatement>\n <ElseClause>\n <hbr />\n <CommandInvocation command={command} />\n </ElseClause>\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface CommandEntryProps extends Omit<\n EntryFileProps,\n \"path\" | \"typeDefinition\"\n> {\n command: CommandTree;\n}\n\n/**\n * The command entry point for the Shell Shock project.\n */\nexport function CommandEntry(props: CommandEntryProps) {\n const { command, imports, builtinImports, ...rest } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const filePath = computed(() =>\n joinPaths(\n command.path.segments\n .filter(segment => !isVariableCommandPath(segment))\n .join(\"/\"),\n \"index.ts\"\n )\n );\n const commandSourcePath = computed(() =>\n replaceExtension(\n relativePath(\n joinPaths(context.entryPath, findFilePath(filePath.value)),\n command.entry.input?.file || command.entry.file\n )\n )\n );\n const typeDefinition = computed(() => ({\n ...command.entry,\n output: command.id\n }));\n\n return (\n <>\n <EntryFile\n {...rest}\n path={filePath.value}\n typeDefinition={typeDefinition.value}\n imports={defu(imports ?? {}, {\n [commandSourcePath.value]: `handle${pascalCase(command.name)}`\n })}\n builtinImports={defu(builtinImports ?? {}, {\n env: [\"env\"],\n console: [\"warn\", \"error\", \"table\", \"colors\", \"writeLine\"],\n utils: [\"getArgs\"]\n })}>\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <CommandHandlerDeclaration command={command} />\n </EntryFile>\n <For each={Object.values(command.children)}>\n {child => (\n <Show\n when={child.isVirtual}\n fallback={<CommandEntry command={child} />}>\n <VirtualCommandEntry command={child} />\n </Show>\n )}\n </For>\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"command-entry.mjs","names":["code","computed","For","Show","ElseClause","FunctionDeclaration","IfStatement","usePowerlines","EntryFile","TSDoc","TSDocParam","TSDocRemarks","TSDocTitle","OptionsInterfaceDeclaration","OptionsParserLogic","PositionalOptionsParserLogic","getAppBin","getAppTitle","getPositionalCommandOptionName","isPositionalCommandOption","findFilePath","relativePath","joinPaths","replaceExtension","camelCase","constantCase","pascalCase","defu","Help","VirtualCommandEntry","CommandInvocation","props","command","_$memo","name","path","segments","filter","segment","length","map","join","_$createIntrinsic","CommandHandlerDeclaration","context","_$createComponent","heading","title","children","description","replace","async","parameters","type","default","envPrefix","config","isCaseSensitive","condition","CommandEntry","imports","builtinImports","rest","filePath","commandSourcePath","entryPath","value","entry","input","file","typeDefinition","output","id","_$mergeProps","env","console","utils","each","Object","values","child","when","isVirtual","fallback"],"sources":["../../src/components/command-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 { code, computed, For, Show } from \"@alloy-js/core\";\nimport {\n ElseClause,\n FunctionDeclaration,\n IfStatement\n} from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\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 TSDocParam,\n TSDocRemarks,\n TSDocTitle\n} from \"@powerlines/plugin-alloy/typescript/components/tsdoc\";\nimport {\n OptionsInterfaceDeclaration,\n OptionsParserLogic,\n PositionalOptionsParserLogic\n} from \"@shell-shock/core/components/options-parser-logic\";\nimport {\n getAppBin,\n getAppTitle,\n getPositionalCommandOptionName,\n isPositionalCommandOption\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport { findFilePath, relativePath } from \"@stryke/path/find\";\nimport { joinPaths } from \"@stryke/path/join\";\nimport { replaceExtension } from \"@stryke/path/replace\";\nimport { camelCase } from \"@stryke/string-format/camel-case\";\nimport { constantCase } from \"@stryke/string-format/constant-case\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport defu from \"defu\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\nimport { Help } from \"./help\";\nimport { VirtualCommandEntry } from \"./virtual-command-entry\";\n\nexport function CommandInvocation(props: { command: CommandTree }) {\n const { command } = props;\n\n return (\n <>\n {code`return Promise.resolve(handle${pascalCase(command.name)}(options${\n command.path.segments.filter(segment =>\n isPositionalCommandOption(segment)\n ).length > 0\n ? `, ${command.path.segments\n .filter(segment => isPositionalCommandOption(segment))\n .map(segment =>\n camelCase(getPositionalCommandOptionName(segment))\n )\n .join(\", \")}`\n : \"\"\n }));`}\n <hbr />\n </>\n );\n}\n\n/**\n * A component that generates the `handler` function declaration for a command.\n */\nexport function CommandHandlerDeclaration(props: { command: CommandTree }) {\n const { command } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n\n return (\n <>\n <TSDoc\n heading={`The ${command.title} (${getAppBin(\n context\n )} ${command.path.segments\n .map(segment =>\n isPositionalCommandOption(segment)\n ? `[${constantCase(getPositionalCommandOptionName(segment))}]`\n : segment\n )\n .join(\" \")}) command.`}>\n <TSDocRemarks>{`${command.description.replace(/\\.+$/, \"\")}.`}</TSDocRemarks>\n <hbr />\n <TSDocTitle>{command.title}</TSDocTitle>\n <TSDocParam name=\"args\">{`The command-line arguments passed to the command.`}</TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n async\n name=\"handler\"\n parameters={[{ name: \"args\", type: \"string[]\", default: \"getArgs()\" }]}>\n <PositionalOptionsParserLogic\n path={command.path}\n envPrefix={context.config.envPrefix}\n />\n <hbr />\n <hbr />\n <OptionsParserLogic\n command={command}\n envPrefix={context.config.envPrefix}\n isCaseSensitive={context.config.isCaseSensitive}\n />\n <hbr />\n <hbr />\n <IfStatement condition={code`options.help`}>\n {code`\n writeLine(\"\");\n writeLine(colors.text.heading.primary(\"${getAppTitle(context)} - ${\n command.title\n }\"));\n writeLine(\"\");\n writeLine(colors.text.body.primary(\"${command.description.replace(\n /\\.+$/,\n \"\"\n )}.\"));\n writeLine(\"\");`}\n <hbr />\n <Help command={command} />\n </IfStatement>\n <ElseClause>\n <hbr />\n <CommandInvocation command={command} />\n </ElseClause>\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface CommandEntryProps extends Omit<\n EntryFileProps,\n \"path\" | \"typeDefinition\"\n> {\n command: CommandTree;\n}\n\n/**\n * The command entry point for the Shell Shock project.\n */\nexport function CommandEntry(props: CommandEntryProps) {\n const { command, imports, builtinImports, ...rest } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const filePath = computed(() =>\n joinPaths(\n command.path.segments\n .filter(segment => !isPositionalCommandOption(segment))\n .join(\"/\"),\n \"index.ts\"\n )\n );\n const commandSourcePath = computed(() =>\n replaceExtension(\n relativePath(\n joinPaths(context.entryPath, findFilePath(filePath.value)),\n command.entry.input?.file || command.entry.file\n )\n )\n );\n const typeDefinition = computed(() => ({\n ...command.entry,\n output: command.id\n }));\n\n return (\n <>\n <EntryFile\n {...rest}\n path={filePath.value}\n typeDefinition={typeDefinition.value}\n imports={defu(imports ?? {}, {\n [commandSourcePath.value]: `handle${pascalCase(command.name)}`\n })}\n builtinImports={defu(builtinImports ?? {}, {\n env: [\"env\", \"isCI\"],\n console: [\n \"warn\",\n \"error\",\n \"table\",\n \"colors\",\n \"stripAnsi\",\n \"writeLine\",\n \"splitText\"\n ],\n utils: [\"getArgs\", \"isMinimal\"]\n })}>\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <CommandHandlerDeclaration command={command} />\n </EntryFile>\n <For each={Object.values(command.children)}>\n {child => (\n <Show\n when={child.isVirtual}\n fallback={<CommandEntry command={child} />}>\n <VirtualCommandEntry command={child} />\n </Show>\n )}\n </For>\n </>\n );\n}\n"],"mappings":"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"}
@@ -2,11 +2,11 @@ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  let __alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
3
3
  let __alloy_js_core = require("@alloy-js/core");
4
4
  let __alloy_js_typescript = require("@alloy-js/typescript");
5
- let __shell_shock_core_plugin_utils_context_helpers = require("@shell-shock/core/plugin-utils/context-helpers");
6
5
  let __powerlines_plugin_alloy_core_contexts_context = require("@powerlines/plugin-alloy/core/contexts/context");
6
+ let __shell_shock_core_contexts_command = require("@shell-shock/core/contexts/command");
7
+ let __shell_shock_core_plugin_utils_context_helpers = require("@shell-shock/core/plugin-utils/context-helpers");
7
8
  let __stryke_string_format_pascal_case = require("@stryke/string-format/pascal-case");
8
9
  let __powerlines_plugin_alloy_typescript_components_dynamic_import_statement = require("@powerlines/plugin-alloy/typescript/components/dynamic-import-statement");
9
- let __shell_shock_core_contexts_command = require("@shell-shock/core/contexts/command");
10
10
 
11
11
  //#region src/components/command-router.tsx
12
12
  function CommandRouterRoute() {
@@ -22,7 +22,7 @@ function CommandRouterRoute() {
22
22
  return `handle${(0, __stryke_string_format_pascal_case.pascalCase)(command.name)}`;
23
23
  },
24
24
  get importPath() {
25
- return `./${command.path.segments.filter((segment) => !(0, __shell_shock_core_plugin_utils_context_helpers.isVariableCommandPath)(segment))[command.path.segments.filter((segment) => !(0, __shell_shock_core_plugin_utils_context_helpers.isVariableCommandPath)(segment)).length - 1]}`;
25
+ return `./${command.path.segments.filter((segment) => !(0, __shell_shock_core_plugin_utils_context_helpers.isPositionalCommandOption)(segment))[command.path.segments.filter((segment) => !(0, __shell_shock_core_plugin_utils_context_helpers.isPositionalCommandOption)(segment)).length - 1]}`;
26
26
  },
27
27
  exportName: "handler"
28
28
  });
@@ -68,14 +68,14 @@ function CommandRouter(props) {
68
68
  children: (subcommand, idx) => (0, __alloy_js_core_jsx_runtime.createComponent)(__shell_shock_core_contexts_command.CommandContext.Provider, {
69
69
  value: subcommand,
70
70
  get children() {
71
- return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
71
+ return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
72
72
  get when() {
73
73
  return Boolean(idx);
74
74
  },
75
75
  get fallback() {
76
76
  return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
77
77
  get condition() {
78
- return __alloy_js_core.code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? subcommand.name : subcommand.name.toLowerCase().replaceAll(/-/g, "")}"`;
78
+ return __alloy_js_core.code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? subcommand.name : subcommand.name.toLowerCase().replaceAll(/-/g, "")}"${subcommand.alias && subcommand.alias.length > 0 ? ` || ${subcommand.alias.map((alias) => `${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? alias : alias.toLowerCase().replaceAll(/-/g, "")}"`).join(" || ")}` : ""}`;
79
79
  },
80
80
  get children() {
81
81
  return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
@@ -93,7 +93,7 @@ function CommandRouter(props) {
93
93
  get children() {
94
94
  return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.ElseIfClause, {
95
95
  get condition() {
96
- return __alloy_js_core.code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? subcommand.name : subcommand.name.toLowerCase().replaceAll(/-/g, "")}"`;
96
+ return __alloy_js_core.code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? subcommand.name : subcommand.name.toLowerCase().replaceAll(/-/g, "")}"${subcommand.alias && subcommand.alias.length > 0 ? ` || ${subcommand.alias.map((alias) => `${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? alias : alias.toLowerCase().replaceAll(/-/g, "")}"`).join(" || ")}` : ""}`;
97
97
  },
98
98
  get children() {
99
99
  return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
@@ -108,35 +108,14 @@ function CommandRouter(props) {
108
108
  }
109
109
  });
110
110
  }
111
- }), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.For, {
112
- get each() {
113
- return subcommand?.alias ?? [];
114
- },
115
- doubleHardline: true,
116
- children: (alias) => (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.ElseIfClause, {
117
- get condition() {
118
- return __alloy_js_core.code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? alias : alias.toLowerCase().replaceAll(/-/g, "")}"`;
119
- },
120
- get children() {
121
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
122
- get when() {
123
- return Boolean(route);
124
- },
125
- get fallback() {
126
- return (0, __alloy_js_core_jsx_runtime.createComponent)(CommandRouterRoute, {});
127
- },
128
- children: route
129
- });
130
- }
131
- })
132
- })];
111
+ });
133
112
  }
134
113
  })
135
114
  }),
136
115
  (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.ElseIfClause, {
137
116
  condition: __alloy_js_core.code`Boolean(command)`,
138
117
  get children() {
139
- return __alloy_js_core.code`const suggestions = didYouMean(command, [${Object.values(commands ?? {}).map((cmd) => `"${cmd.name}"${(cmd.alias ?? []).map((alias) => `", "${alias}"`).join("")}`).join(", ")}], {
118
+ return __alloy_js_core.code`const suggestions = didYouMean(command, [${Object.values(commands ?? {}).map((cmd) => `"${cmd.name}"${(cmd.alias ?? []).map((alias, i) => i === 0 ? `, "${alias}"` : ` "${alias}"`).join("")}`).join(", ")}], {
140
119
  caseSensitive: ${JSON.stringify(context.config.isCaseSensitive)},
141
120
  returnType: ReturnTypeEnums.ALL_CLOSEST_MATCHES,
142
121
  thresholdType: ThresholdTypeEnums.SIMILARITY,
@@ -1 +1 @@
1
- {"version":3,"file":"command-router.cjs","names":["code","computed","For","Show","ElseIfClause","IfStatement","VarDeclaration","usePowerlines","DynamicImportStatement","CommandContext","useCommand","isVariableCommandPath","pascalCase","CommandRouterRoute","command","_$createComponent","when","isVirtual","children","name","importPath","path","segments","filter","segment","length","exportName","_$createIntrinsic","_$memo","CommandRouter","props","commands","route","context","index","Object","keys","type","initializer","condition","value","each","values","subcommand","idx","Provider","Boolean","fallback","config","isCaseSensitive","toLowerCase","replaceAll","alias","doubleHardline","map","cmd","join","JSON","stringify"],"sources":["../../src/components/command-router.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 {\n ElseIfClause,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport { DynamicImportStatement } from \"@powerlines/plugin-alloy/typescript/components/dynamic-import-statement\";\nimport { CommandContext, useCommand } from \"@shell-shock/core/contexts/command\";\nimport { isVariableCommandPath } from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\n\nexport function CommandRouterRoute() {\n const command = useCommand();\n\n return (\n <>\n <Show when={!command.isVirtual}>\n <DynamicImportStatement\n name={`handle${pascalCase(command.name)}`}\n importPath={`./${\n command.path.segments.filter(\n segment => !isVariableCommandPath(segment)\n )[\n command.path.segments.filter(\n segment => !isVariableCommandPath(segment)\n ).length - 1\n ]\n }`}\n exportName=\"handler\"\n />\n </Show>\n <hbr />\n {code`return handle${pascalCase(command.name)}(args);`}\n </>\n );\n}\n\nexport interface CommandRouterProps {\n path: string[];\n commands?: Record<string, CommandTree>;\n route?: Children;\n}\n\n/**\n * The command router component.\n */\nexport function CommandRouter(props: CommandRouterProps) {\n const { path, commands, route } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const index = computed(() => 2 + (path.length ?? 0));\n\n return (\n <Show when={commands && Object.keys(commands).length > 0}>\n <VarDeclaration\n let\n name=\"command\"\n type=\"string\"\n initializer={code`\"\";`}\n />\n <hbr />\n <IfStatement\n condition={code`args.length > ${\n index.value\n } && args[${index.value}]`}>{code`command = args[${\n index.value\n }];`}</IfStatement>\n <hbr />\n <For each={Object.values(commands ?? {})}>\n {(subcommand, idx) => (\n <CommandContext.Provider value={subcommand}>\n <Show\n when={Boolean(idx)}\n fallback={\n <IfStatement\n condition={code`${\n context.config.isCaseSensitive\n ? \"command\"\n : 'command.toLowerCase().replaceAll(/-/g, \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? subcommand.name\n : subcommand.name.toLowerCase().replaceAll(/-/g, \"\")\n }\"`}>\n <Show when={Boolean(route)} fallback={<CommandRouterRoute />}>\n {route}\n </Show>\n </IfStatement>\n }>\n <ElseIfClause\n condition={code`${\n context.config.isCaseSensitive\n ? \"command\"\n : 'command.toLowerCase().replaceAll(/-/g, \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? subcommand.name\n : subcommand.name.toLowerCase().replaceAll(/-/g, \"\")\n }\"`}>\n <Show when={Boolean(route)} fallback={<CommandRouterRoute />}>\n {route}\n </Show>\n </ElseIfClause>\n </Show>\n <For each={subcommand?.alias ?? []} doubleHardline>\n {alias => (\n <ElseIfClause\n condition={code`${\n context.config.isCaseSensitive\n ? \"command\"\n : 'command.toLowerCase().replaceAll(/-/g, \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? alias\n : alias.toLowerCase().replaceAll(/-/g, \"\")\n }\"`}>\n <Show when={Boolean(route)} fallback={<CommandRouterRoute />}>\n {route}\n </Show>\n </ElseIfClause>\n )}\n </For>\n </CommandContext.Provider>\n )}\n </For>\n <ElseIfClause\n condition={code`Boolean(command)`}>{code`const suggestions = didYouMean(command, [${Object.values(\n commands ?? {}\n )\n .map(\n cmd =>\n `\"${cmd.name}\"${(cmd.alias ?? []).map(alias => `\", \"${alias}\"`).join(\"\")}`\n )\n .join(\", \")}], {\n caseSensitive: ${JSON.stringify(context.config.isCaseSensitive)},\n returnType: ReturnTypeEnums.ALL_CLOSEST_MATCHES,\n thresholdType: ThresholdTypeEnums.SIMILARITY,\n threshold: 0.75\n });\n error(\\`Unknown command: \"\\${command}\"\\${suggestions && suggestions.length > 0 ? \\`, did you mean: \\${suggestions.length === 1 ? \\`\"\\${suggestions[0]}\"\\` : suggestions.map((suggestion, i) => i < suggestions.length - 1 ? \\`\"\\${suggestion}\", \\` : \\`or \"\\${suggestion}\"\\`)}?\\` : \"\"} \\`);`}</ElseIfClause>\n </Show>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"command-router.cjs","names":["code","computed","For","Show","ElseIfClause","IfStatement","VarDeclaration","usePowerlines","DynamicImportStatement","CommandContext","useCommand","isPositionalCommandOption","pascalCase","CommandRouterRoute","command","_$createComponent","when","isVirtual","children","name","importPath","path","segments","filter","segment","length","exportName","_$createIntrinsic","_$memo","CommandRouter","props","commands","route","context","index","Object","keys","type","initializer","condition","value","each","values","subcommand","idx","Provider","Boolean","fallback","config","isCaseSensitive","toLowerCase","replaceAll","alias","map","join","cmd","i","JSON","stringify"],"sources":["../../src/components/command-router.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 {\n ElseIfClause,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport { DynamicImportStatement } from \"@powerlines/plugin-alloy/typescript/components/dynamic-import-statement\";\nimport { CommandContext, useCommand } from \"@shell-shock/core/contexts/command\";\nimport { isPositionalCommandOption } from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\n\nexport function CommandRouterRoute() {\n const command = useCommand();\n\n return (\n <>\n <Show when={!command.isVirtual}>\n <DynamicImportStatement\n name={`handle${pascalCase(command.name)}`}\n importPath={`./${\n command.path.segments.filter(\n segment => !isPositionalCommandOption(segment)\n )[\n command.path.segments.filter(\n segment => !isPositionalCommandOption(segment)\n ).length - 1\n ]\n }`}\n exportName=\"handler\"\n />\n </Show>\n <hbr />\n {code`return handle${pascalCase(command.name)}(args);`}\n </>\n );\n}\n\nexport interface CommandRouterProps {\n path: string[];\n commands?: Record<string, CommandTree>;\n route?: Children;\n}\n\n/**\n * The command router component.\n */\nexport function CommandRouter(props: CommandRouterProps) {\n const { path, commands, route } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const index = computed(() => 2 + (path.length ?? 0));\n\n return (\n <Show when={commands && Object.keys(commands).length > 0}>\n <VarDeclaration\n let\n name=\"command\"\n type=\"string\"\n initializer={code`\"\";`}\n />\n <hbr />\n <IfStatement\n condition={code`args.length > ${\n index.value\n } && args[${index.value}]`}>{code`command = args[${\n index.value\n }];`}</IfStatement>\n <hbr />\n <For each={Object.values(commands ?? {})}>\n {(subcommand, idx) => (\n <CommandContext.Provider value={subcommand}>\n <Show\n when={Boolean(idx)}\n fallback={\n <IfStatement\n condition={code`${\n context.config.isCaseSensitive\n ? \"command\"\n : 'command.toLowerCase().replaceAll(/-/g, \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? subcommand.name\n : subcommand.name.toLowerCase().replaceAll(/-/g, \"\")\n }\"${\n subcommand.alias && subcommand.alias.length > 0\n ? ` || ${subcommand.alias\n .map(\n alias =>\n `${context.config.isCaseSensitive ? \"command\" : 'command.toLowerCase().replaceAll(/-/g, \"\")'} === \"${\n context.config.isCaseSensitive\n ? alias\n : alias.toLowerCase().replaceAll(/-/g, \"\")\n }\"`\n )\n .join(\" || \")}`\n : \"\"\n }`}>\n <Show when={Boolean(route)} fallback={<CommandRouterRoute />}>\n {route}\n </Show>\n </IfStatement>\n }>\n <ElseIfClause\n condition={code`${\n context.config.isCaseSensitive\n ? \"command\"\n : 'command.toLowerCase().replaceAll(/-/g, \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? subcommand.name\n : subcommand.name.toLowerCase().replaceAll(/-/g, \"\")\n }\"${\n subcommand.alias && subcommand.alias.length > 0\n ? ` || ${subcommand.alias\n .map(\n alias =>\n `${context.config.isCaseSensitive ? \"command\" : 'command.toLowerCase().replaceAll(/-/g, \"\")'} === \"${\n context.config.isCaseSensitive\n ? alias\n : alias.toLowerCase().replaceAll(/-/g, \"\")\n }\"`\n )\n .join(\" || \")}`\n : \"\"\n }`}>\n <Show when={Boolean(route)} fallback={<CommandRouterRoute />}>\n {route}\n </Show>\n </ElseIfClause>\n </Show>\n </CommandContext.Provider>\n )}\n </For>\n <ElseIfClause\n condition={code`Boolean(command)`}>{code`const suggestions = didYouMean(command, [${Object.values(\n commands ?? {}\n )\n .map(\n cmd =>\n `\"${cmd.name}\"${(cmd.alias ?? []).map((alias, i) => (i === 0 ? `, \"${alias}\"` : ` \"${alias}\"`)).join(\"\")}`\n )\n .join(\", \")}], {\n caseSensitive: ${JSON.stringify(context.config.isCaseSensitive)},\n returnType: ReturnTypeEnums.ALL_CLOSEST_MATCHES,\n thresholdType: ThresholdTypeEnums.SIMILARITY,\n threshold: 0.75\n });\n error(\\`Unknown command: \"\\${command}\"\\${suggestions && suggestions.length > 0 ? \\`, did you mean: \\${suggestions.length === 1 ? \\`\"\\${suggestions[0]}\"\\` : suggestions.map((suggestion, i) => i < suggestions.length - 1 ? \\`\"\\${suggestion}\", \\` : \\`or \"\\${suggestion}\"\\`)}?\\` : \"\"} \\`);`}</ElseIfClause>\n </Show>\n );\n}\n"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { createComponent, createIntrinsic, memo } from "@alloy-js/core/jsx-runtime";
2
2
  import { For, Show, code, computed } from "@alloy-js/core";
3
3
  import { ElseIfClause, IfStatement, VarDeclaration } from "@alloy-js/typescript";
4
- import { isVariableCommandPath } from "@shell-shock/core/plugin-utils/context-helpers";
5
4
  import { usePowerlines } from "@powerlines/plugin-alloy/core/contexts/context";
5
+ import { CommandContext, useCommand } from "@shell-shock/core/contexts/command";
6
+ import { isPositionalCommandOption } from "@shell-shock/core/plugin-utils/context-helpers";
6
7
  import { pascalCase } from "@stryke/string-format/pascal-case";
7
8
  import { DynamicImportStatement } from "@powerlines/plugin-alloy/typescript/components/dynamic-import-statement";
8
- import { CommandContext, useCommand } from "@shell-shock/core/contexts/command";
9
9
 
10
10
  //#region src/components/command-router.tsx
11
11
  function CommandRouterRoute() {
@@ -21,7 +21,7 @@ function CommandRouterRoute() {
21
21
  return `handle${pascalCase(command.name)}`;
22
22
  },
23
23
  get importPath() {
24
- return `./${command.path.segments.filter((segment) => !isVariableCommandPath(segment))[command.path.segments.filter((segment) => !isVariableCommandPath(segment)).length - 1]}`;
24
+ return `./${command.path.segments.filter((segment) => !isPositionalCommandOption(segment))[command.path.segments.filter((segment) => !isPositionalCommandOption(segment)).length - 1]}`;
25
25
  },
26
26
  exportName: "handler"
27
27
  });
@@ -67,14 +67,14 @@ function CommandRouter(props) {
67
67
  children: (subcommand, idx) => createComponent(CommandContext.Provider, {
68
68
  value: subcommand,
69
69
  get children() {
70
- return [createComponent(Show, {
70
+ return createComponent(Show, {
71
71
  get when() {
72
72
  return Boolean(idx);
73
73
  },
74
74
  get fallback() {
75
75
  return createComponent(IfStatement, {
76
76
  get condition() {
77
- return code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? subcommand.name : subcommand.name.toLowerCase().replaceAll(/-/g, "")}"`;
77
+ return code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? subcommand.name : subcommand.name.toLowerCase().replaceAll(/-/g, "")}"${subcommand.alias && subcommand.alias.length > 0 ? ` || ${subcommand.alias.map((alias) => `${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? alias : alias.toLowerCase().replaceAll(/-/g, "")}"`).join(" || ")}` : ""}`;
78
78
  },
79
79
  get children() {
80
80
  return createComponent(Show, {
@@ -92,7 +92,7 @@ function CommandRouter(props) {
92
92
  get children() {
93
93
  return createComponent(ElseIfClause, {
94
94
  get condition() {
95
- return code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? subcommand.name : subcommand.name.toLowerCase().replaceAll(/-/g, "")}"`;
95
+ return code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? subcommand.name : subcommand.name.toLowerCase().replaceAll(/-/g, "")}"${subcommand.alias && subcommand.alias.length > 0 ? ` || ${subcommand.alias.map((alias) => `${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? alias : alias.toLowerCase().replaceAll(/-/g, "")}"`).join(" || ")}` : ""}`;
96
96
  },
97
97
  get children() {
98
98
  return createComponent(Show, {
@@ -107,35 +107,14 @@ function CommandRouter(props) {
107
107
  }
108
108
  });
109
109
  }
110
- }), createComponent(For, {
111
- get each() {
112
- return subcommand?.alias ?? [];
113
- },
114
- doubleHardline: true,
115
- children: (alias) => createComponent(ElseIfClause, {
116
- get condition() {
117
- return code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(/-/g, \"\")"} === "${context.config.isCaseSensitive ? alias : alias.toLowerCase().replaceAll(/-/g, "")}"`;
118
- },
119
- get children() {
120
- return createComponent(Show, {
121
- get when() {
122
- return Boolean(route);
123
- },
124
- get fallback() {
125
- return createComponent(CommandRouterRoute, {});
126
- },
127
- children: route
128
- });
129
- }
130
- })
131
- })];
110
+ });
132
111
  }
133
112
  })
134
113
  }),
135
114
  createComponent(ElseIfClause, {
136
115
  condition: code`Boolean(command)`,
137
116
  get children() {
138
- return code`const suggestions = didYouMean(command, [${Object.values(commands ?? {}).map((cmd) => `"${cmd.name}"${(cmd.alias ?? []).map((alias) => `", "${alias}"`).join("")}`).join(", ")}], {
117
+ return code`const suggestions = didYouMean(command, [${Object.values(commands ?? {}).map((cmd) => `"${cmd.name}"${(cmd.alias ?? []).map((alias, i) => i === 0 ? `, "${alias}"` : ` "${alias}"`).join("")}`).join(", ")}], {
139
118
  caseSensitive: ${JSON.stringify(context.config.isCaseSensitive)},
140
119
  returnType: ReturnTypeEnums.ALL_CLOSEST_MATCHES,
141
120
  thresholdType: ThresholdTypeEnums.SIMILARITY,
@@ -1 +1 @@
1
- {"version":3,"file":"command-router.mjs","names":["code","computed","For","Show","ElseIfClause","IfStatement","VarDeclaration","usePowerlines","DynamicImportStatement","CommandContext","useCommand","isVariableCommandPath","pascalCase","CommandRouterRoute","command","_$createComponent","when","isVirtual","children","name","importPath","path","segments","filter","segment","length","exportName","_$createIntrinsic","_$memo","CommandRouter","props","commands","route","context","index","Object","keys","type","initializer","condition","value","each","values","subcommand","idx","Provider","Boolean","fallback","config","isCaseSensitive","toLowerCase","replaceAll","alias","doubleHardline","map","cmd","join","JSON","stringify"],"sources":["../../src/components/command-router.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 {\n ElseIfClause,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport { DynamicImportStatement } from \"@powerlines/plugin-alloy/typescript/components/dynamic-import-statement\";\nimport { CommandContext, useCommand } from \"@shell-shock/core/contexts/command\";\nimport { isVariableCommandPath } from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\n\nexport function CommandRouterRoute() {\n const command = useCommand();\n\n return (\n <>\n <Show when={!command.isVirtual}>\n <DynamicImportStatement\n name={`handle${pascalCase(command.name)}`}\n importPath={`./${\n command.path.segments.filter(\n segment => !isVariableCommandPath(segment)\n )[\n command.path.segments.filter(\n segment => !isVariableCommandPath(segment)\n ).length - 1\n ]\n }`}\n exportName=\"handler\"\n />\n </Show>\n <hbr />\n {code`return handle${pascalCase(command.name)}(args);`}\n </>\n );\n}\n\nexport interface CommandRouterProps {\n path: string[];\n commands?: Record<string, CommandTree>;\n route?: Children;\n}\n\n/**\n * The command router component.\n */\nexport function CommandRouter(props: CommandRouterProps) {\n const { path, commands, route } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const index = computed(() => 2 + (path.length ?? 0));\n\n return (\n <Show when={commands && Object.keys(commands).length > 0}>\n <VarDeclaration\n let\n name=\"command\"\n type=\"string\"\n initializer={code`\"\";`}\n />\n <hbr />\n <IfStatement\n condition={code`args.length > ${\n index.value\n } && args[${index.value}]`}>{code`command = args[${\n index.value\n }];`}</IfStatement>\n <hbr />\n <For each={Object.values(commands ?? {})}>\n {(subcommand, idx) => (\n <CommandContext.Provider value={subcommand}>\n <Show\n when={Boolean(idx)}\n fallback={\n <IfStatement\n condition={code`${\n context.config.isCaseSensitive\n ? \"command\"\n : 'command.toLowerCase().replaceAll(/-/g, \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? subcommand.name\n : subcommand.name.toLowerCase().replaceAll(/-/g, \"\")\n }\"`}>\n <Show when={Boolean(route)} fallback={<CommandRouterRoute />}>\n {route}\n </Show>\n </IfStatement>\n }>\n <ElseIfClause\n condition={code`${\n context.config.isCaseSensitive\n ? \"command\"\n : 'command.toLowerCase().replaceAll(/-/g, \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? subcommand.name\n : subcommand.name.toLowerCase().replaceAll(/-/g, \"\")\n }\"`}>\n <Show when={Boolean(route)} fallback={<CommandRouterRoute />}>\n {route}\n </Show>\n </ElseIfClause>\n </Show>\n <For each={subcommand?.alias ?? []} doubleHardline>\n {alias => (\n <ElseIfClause\n condition={code`${\n context.config.isCaseSensitive\n ? \"command\"\n : 'command.toLowerCase().replaceAll(/-/g, \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? alias\n : alias.toLowerCase().replaceAll(/-/g, \"\")\n }\"`}>\n <Show when={Boolean(route)} fallback={<CommandRouterRoute />}>\n {route}\n </Show>\n </ElseIfClause>\n )}\n </For>\n </CommandContext.Provider>\n )}\n </For>\n <ElseIfClause\n condition={code`Boolean(command)`}>{code`const suggestions = didYouMean(command, [${Object.values(\n commands ?? {}\n )\n .map(\n cmd =>\n `\"${cmd.name}\"${(cmd.alias ?? []).map(alias => `\", \"${alias}\"`).join(\"\")}`\n )\n .join(\", \")}], {\n caseSensitive: ${JSON.stringify(context.config.isCaseSensitive)},\n returnType: ReturnTypeEnums.ALL_CLOSEST_MATCHES,\n thresholdType: ThresholdTypeEnums.SIMILARITY,\n threshold: 0.75\n });\n error(\\`Unknown command: \"\\${command}\"\\${suggestions && suggestions.length > 0 ? \\`, did you mean: \\${suggestions.length === 1 ? \\`\"\\${suggestions[0]}\"\\` : suggestions.map((suggestion, i) => i < suggestions.length - 1 ? \\`\"\\${suggestion}\", \\` : \\`or \"\\${suggestion}\"\\`)}?\\` : \"\"} \\`);`}</ElseIfClause>\n </Show>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"command-router.mjs","names":["code","computed","For","Show","ElseIfClause","IfStatement","VarDeclaration","usePowerlines","DynamicImportStatement","CommandContext","useCommand","isPositionalCommandOption","pascalCase","CommandRouterRoute","command","_$createComponent","when","isVirtual","children","name","importPath","path","segments","filter","segment","length","exportName","_$createIntrinsic","_$memo","CommandRouter","props","commands","route","context","index","Object","keys","type","initializer","condition","value","each","values","subcommand","idx","Provider","Boolean","fallback","config","isCaseSensitive","toLowerCase","replaceAll","alias","map","join","cmd","i","JSON","stringify"],"sources":["../../src/components/command-router.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 {\n ElseIfClause,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport { DynamicImportStatement } from \"@powerlines/plugin-alloy/typescript/components/dynamic-import-statement\";\nimport { CommandContext, useCommand } from \"@shell-shock/core/contexts/command\";\nimport { isPositionalCommandOption } from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type { CommandTree } from \"@shell-shock/core/types/command\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\n\nexport function CommandRouterRoute() {\n const command = useCommand();\n\n return (\n <>\n <Show when={!command.isVirtual}>\n <DynamicImportStatement\n name={`handle${pascalCase(command.name)}`}\n importPath={`./${\n command.path.segments.filter(\n segment => !isPositionalCommandOption(segment)\n )[\n command.path.segments.filter(\n segment => !isPositionalCommandOption(segment)\n ).length - 1\n ]\n }`}\n exportName=\"handler\"\n />\n </Show>\n <hbr />\n {code`return handle${pascalCase(command.name)}(args);`}\n </>\n );\n}\n\nexport interface CommandRouterProps {\n path: string[];\n commands?: Record<string, CommandTree>;\n route?: Children;\n}\n\n/**\n * The command router component.\n */\nexport function CommandRouter(props: CommandRouterProps) {\n const { path, commands, route } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const index = computed(() => 2 + (path.length ?? 0));\n\n return (\n <Show when={commands && Object.keys(commands).length > 0}>\n <VarDeclaration\n let\n name=\"command\"\n type=\"string\"\n initializer={code`\"\";`}\n />\n <hbr />\n <IfStatement\n condition={code`args.length > ${\n index.value\n } && args[${index.value}]`}>{code`command = args[${\n index.value\n }];`}</IfStatement>\n <hbr />\n <For each={Object.values(commands ?? {})}>\n {(subcommand, idx) => (\n <CommandContext.Provider value={subcommand}>\n <Show\n when={Boolean(idx)}\n fallback={\n <IfStatement\n condition={code`${\n context.config.isCaseSensitive\n ? \"command\"\n : 'command.toLowerCase().replaceAll(/-/g, \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? subcommand.name\n : subcommand.name.toLowerCase().replaceAll(/-/g, \"\")\n }\"${\n subcommand.alias && subcommand.alias.length > 0\n ? ` || ${subcommand.alias\n .map(\n alias =>\n `${context.config.isCaseSensitive ? \"command\" : 'command.toLowerCase().replaceAll(/-/g, \"\")'} === \"${\n context.config.isCaseSensitive\n ? alias\n : alias.toLowerCase().replaceAll(/-/g, \"\")\n }\"`\n )\n .join(\" || \")}`\n : \"\"\n }`}>\n <Show when={Boolean(route)} fallback={<CommandRouterRoute />}>\n {route}\n </Show>\n </IfStatement>\n }>\n <ElseIfClause\n condition={code`${\n context.config.isCaseSensitive\n ? \"command\"\n : 'command.toLowerCase().replaceAll(/-/g, \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? subcommand.name\n : subcommand.name.toLowerCase().replaceAll(/-/g, \"\")\n }\"${\n subcommand.alias && subcommand.alias.length > 0\n ? ` || ${subcommand.alias\n .map(\n alias =>\n `${context.config.isCaseSensitive ? \"command\" : 'command.toLowerCase().replaceAll(/-/g, \"\")'} === \"${\n context.config.isCaseSensitive\n ? alias\n : alias.toLowerCase().replaceAll(/-/g, \"\")\n }\"`\n )\n .join(\" || \")}`\n : \"\"\n }`}>\n <Show when={Boolean(route)} fallback={<CommandRouterRoute />}>\n {route}\n </Show>\n </ElseIfClause>\n </Show>\n </CommandContext.Provider>\n )}\n </For>\n <ElseIfClause\n condition={code`Boolean(command)`}>{code`const suggestions = didYouMean(command, [${Object.values(\n commands ?? {}\n )\n .map(\n cmd =>\n `\"${cmd.name}\"${(cmd.alias ?? []).map((alias, i) => (i === 0 ? `, \"${alias}\"` : ` \"${alias}\"`)).join(\"\")}`\n )\n .join(\", \")}], {\n caseSensitive: ${JSON.stringify(context.config.isCaseSensitive)},\n returnType: ReturnTypeEnums.ALL_CLOSEST_MATCHES,\n thresholdType: ThresholdTypeEnums.SIMILARITY,\n threshold: 0.75\n });\n error(\\`Unknown command: \"\\${command}\"\\${suggestions && suggestions.length > 0 ? \\`, did you mean: \\${suggestions.length === 1 ? \\`\"\\${suggestions[0]}\"\\` : suggestions.map((suggestion, i) => i < suggestions.length - 1 ? \\`\"\\${suggestion}\", \\` : \\`or \"\\${suggestion}\"\\`)}?\\` : \"\"} \\`);`}</ElseIfClause>\n </Show>\n );\n}\n"],"mappings":"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"}
@@ -3,11 +3,8 @@ const require_contexts_theme = require('../contexts/theme.cjs');
3
3
  let __alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
4
4
  let __alloy_js_core = require("@alloy-js/core");
5
5
  let __alloy_js_typescript = require("@alloy-js/typescript");
6
- let __shell_shock_core_plugin_utils_context_helpers = require("@shell-shock/core/plugin-utils/context-helpers");
7
- let __powerlines_plugin_alloy_core_contexts_context = require("@powerlines/plugin-alloy/core/contexts/context");
8
6
  let __powerlines_plugin_alloy_typescript_components_tsdoc = require("@powerlines/plugin-alloy/typescript/components/tsdoc");
9
7
  let __powerlines_deepkit_vendor_type = require("@powerlines/deepkit/vendor/type");
10
- let __shell_shock_core_contexts_command = require("@shell-shock/core/contexts/command");
11
8
  let __powerlines_plugin_alloy_typescript_components_builtin_file = require("@powerlines/plugin-alloy/typescript/components/builtin-file");
12
9
  let __stryke_string_format_vowels = require("@stryke/string-format/vowels");
13
10
 
@@ -1124,6 +1121,7 @@ function WriteLineFunctionDeclaration() {
1124
1121
  }
1125
1122
  }),
1126
1123
  (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.FunctionDeclaration, {
1124
+ "export": true,
1127
1125
  name: "splitText",
1128
1126
  parameters: [{
1129
1127
  name: "text",
@@ -1136,10 +1134,12 @@ function WriteLineFunctionDeclaration() {
1136
1134
  let line = text;
1137
1135
  let result = [] as string[];
1138
1136
 
1139
- while (stripAnsi(line).length > maxLength) {
1140
- if (line.indexOf("\\n") !== -1 && stripAnsi(line).indexOf("\\n") <= maxLength) {
1141
- result.push(line.slice(0, line.indexOf("\\n")));
1142
- line = line.slice(line.indexOf("\\n") + 1);
1137
+ while (stripAnsi(line).length > maxLength || line.indexOf("\\n") !== -1) {
1138
+ if (line.indexOf("\\n") !== -1) {
1139
+ result.push(...splitText(line.slice(0, line.indexOf("\\n")).replace(/\\n/, ""), maxLength));
1140
+ line = line.indexOf("\\n") + 1 < line.length
1141
+ ? line.slice(line.indexOf("\\n") + 1)
1142
+ : "";
1143
1143
  } else {
1144
1144
  const index = [" ", "/", "\\\\", ".", ",", "-", ":", "|", "@", "+"].reduce((ret, split) => {
1145
1145
  let current = ret;
@@ -1163,10 +1163,7 @@ function WriteLineFunctionDeclaration() {
1163
1163
  line = line.slice(maxLength + 1);
1164
1164
  }
1165
1165
 
1166
- if (line.length > 0) {
1167
- result.push(line);
1168
- }
1169
-
1166
+ result.push(line);
1170
1167
  return result;
1171
1168
  `
1172
1169
  }),
@@ -1316,68 +1313,19 @@ function MessageFunctionDeclaration(props) {
1316
1313
  }
1317
1314
 
1318
1315
  ${!theme.labels.message.footer[variant] && timestamp ? `const timestamp = \`\${colors.text.message.footer.${variant}(new Date().toLocaleDateString())} \${colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].bottom}")} \${colors.text.message.footer.${variant}(new Date().toLocaleTimeString())}\`; ` : ""}
1319
- writeLine(colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].topLeft}") + ${theme.labels.message.header[variant] || theme.icons.message.header[variant] ? `colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].top}".repeat(4)) + " " + ${theme.icons.message.header[variant] ? `colors.border.message.outline.${variant}("${theme.icons.message.header[variant]}") + " " +` : ""} colors.text.message.header.${variant}("${theme.labels.message.header[variant]}") + " " + colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${Math.max(theme.padding.app, 0) * 2 + 4 + (theme.icons.message.header[variant] ? theme.icons.message.header[variant].length + 1 + (theme.labels.message.header[variant] ? 0 : 1) : 0) + (theme.labels.message.header[variant] ? theme.labels.message.header[variant].length + 2 : 0) + theme.borderStyles.message.outline[variant].topLeft.length + theme.borderStyles.message.outline[variant].topRight.length}, 0)))` : `colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${Math.max(theme.padding.app, 0) * 2 + theme.borderStyles.message.outline[variant].topLeft.length + theme.borderStyles.message.outline[variant].topRight.length}, 0)))`} + colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} });
1316
+ writeLine(colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].topLeft}") + ${theme.labels.message.header[variant] || theme.icons.message.header[variant] ? `colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].top}".repeat(4)) + " " + ${theme.icons.message.header[variant] ? `colors.border.message.outline.${variant}("${theme.icons.message.header[variant]}") + " " +` : ""} colors.bold(colors.text.message.header.${variant}("${theme.labels.message.header[variant]}")) + " " + colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${Math.max(theme.padding.app, 0) * 2 + 4 + (theme.icons.message.header[variant] ? theme.icons.message.header[variant].length + 1 + (theme.labels.message.header[variant] ? 0 : 1) : 0) + (theme.labels.message.header[variant] ? theme.labels.message.header[variant].length + 2 : 0) + theme.borderStyles.message.outline[variant].topLeft.length + theme.borderStyles.message.outline[variant].topRight.length}, 0)))` : `colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${Math.max(theme.padding.app, 0) * 2 + theme.borderStyles.message.outline[variant].topLeft.length + theme.borderStyles.message.outline[variant].topRight.length}, 0)))`} + colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} });
1320
1317
  splitText(
1321
1318
  message,
1322
1319
  Math.max(process.stdout.columns - ${(Math.max(theme.padding.app, 0) + Math.max(theme.padding.message, 0)) * 2 + theme.borderStyles.message.outline[variant].left.length + theme.borderStyles.message.outline[variant].right.length}, 0)
1323
1320
  ).forEach((line) => {
1324
1321
  writeLine(colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].left + " ".repeat(Math.max(theme.padding.message, 0))}") + colors.text.message.description.${variant}(line) + " ".repeat(Math.max(process.stdout.columns - (stripAnsi(line).length + ${Math.max(theme.padding.app, 0) * 2 + Math.max(theme.padding.message, 0) + theme.borderStyles.message.outline[variant].left.length + theme.borderStyles.message.outline[variant].right.length}), 0)) + colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
1325
1322
  });
1326
- writeLine(colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].bottomLeft}") + ${theme.labels.message.footer[variant] || timestamp ? `colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${Math.max(theme.padding.app, 0) * 2 + 4 + (theme.labels.message.footer[variant] ? theme.labels.message.footer[variant].length + 2 : 0) + theme.borderStyles.message.outline[variant].bottomLeft.length + theme.borderStyles.message.outline[variant].bottomRight.length}${!theme.labels.message.footer[variant] && timestamp ? " - (stripAnsi(timestamp).length + 2)" : ""}, 0))) + " " + ${theme.labels.message.footer[variant] ? `colors.text.message.footer.${variant}("${theme.labels.message.footer[variant]}")` : timestamp && "timestamp"} + " " + colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].bottom}".repeat(4))` : `colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${Math.max(theme.padding.app, 0) * 2 + theme.borderStyles.message.outline[variant].bottomLeft.length + theme.borderStyles.message.outline[variant].bottomRight.length}, 0)))`} + colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
1323
+ writeLine(colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].bottomLeft}") + ${theme.labels.message.footer[variant] || timestamp ? `colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${Math.max(theme.padding.app, 0) * 2 + 4 + (theme.labels.message.footer[variant] ? theme.labels.message.footer[variant].length + 2 : 0) + theme.borderStyles.message.outline[variant].bottomLeft.length + theme.borderStyles.message.outline[variant].bottomRight.length}${!theme.labels.message.footer[variant] && timestamp ? " - (stripAnsi(timestamp).length + 2)" : ""}, 0))) + " " + ${`colors.bold(colors.text.message.footer.${variant}(${theme.labels.message.footer[variant] ? `"${theme.labels.message.footer[variant]}"` : timestamp && "timestamp"}))`} + " " + colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].bottom}".repeat(4))` : `colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${Math.max(theme.padding.app, 0) * 2 + theme.borderStyles.message.outline[variant].bottomLeft.length + theme.borderStyles.message.outline[variant].bottomRight.length}, 0)))`} + colors.border.message.outline.${variant}("${theme.borderStyles.message.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
1327
1324
  `)];
1328
1325
  }
1329
1326
  })];
1330
1327
  }
1331
1328
  /**
1332
- * A component to generate the `banner` function in the `shell-shock:console` builtin module.
1333
- */
1334
- function BannerFunctionDeclaration(props) {
1335
- const { consoleFnName = "log", variant = "primary", title: titleProp } = props;
1336
- const theme = require_contexts_theme.useTheme();
1337
- const context = (0, __powerlines_plugin_alloy_core_contexts_context.usePowerlines)();
1338
- const command = (0, __shell_shock_core_contexts_command.useCommand)();
1339
- const header = (0, __alloy_js_core.computed)(() => `${theme.labels.banner.header[variant] || (0, __shell_shock_core_plugin_utils_context_helpers.getAppTitle)(context)} v${context.packageJson.version || "1.0.0"}`);
1340
- const description = (0, __alloy_js_core.computed)(() => command?.description || (0, __shell_shock_core_plugin_utils_context_helpers.getAppDescription)(context));
1341
- const footer = (0, __alloy_js_core.computed)(() => theme.labels.banner.footer[variant]);
1342
- const title = (0, __alloy_js_core.computed)(() => titleProp || /(?:cli|command-line|command line)\s+(?:application|app)?$/.test(header.value.toLowerCase()) ? header.value.replace(`v${context.packageJson.version || "1.0.0"}`, "").trim() : `${header.value.replace(`v${context.packageJson.version || "1.0.0"}`, "").trim()} Command-Line Application`);
1343
- 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);
1344
- const totalPadding = (0, __alloy_js_core.computed)(() => Math.max(theme.padding.banner, 0) * 2 + bannerPadding.value);
1345
- return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.FunctionDeclaration, {
1346
- "export": true,
1347
- name: "banner",
1348
- doc: "Write the application banner to the console.",
1349
- get children() {
1350
- return __alloy_js_core.code`
1351
- if (hasFlag("no-banner") || hasFlag("hide-banner") || isCI || isMinimal) {
1352
- return;
1353
- }
1354
-
1355
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topLeft}") + ${theme.icons.banner.header[variant] ? `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(4)) + " " + ${theme.icons.banner.header[variant] ? `colors.text.banner.header.${variant}("${theme.icons.banner.header[variant]}") + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}") + " " +` : ""} colors.text.banner.header.${variant}("${header.value}") + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${4 + (theme.icons.banner.header[variant] ? theme.icons.banner.header[variant].length + 3 : 0) + (header.value ? header.value.length + 2 : 0) + bannerPadding.value}, 0)))` : `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].top}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].topRight}"), { consoleFn: console.${consoleFnName} });
1356
-
1357
- splitText(
1358
- colors.text.banner.title.${variant}("${title.value}"),
1359
- Math.max(process.stdout.columns - ${totalPadding.value}, 0)
1360
- ).forEach((line) => {
1361
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.text.banner.description.${variant}(line) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
1362
- });
1363
-
1364
- ${command?.title ? `writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomLeft}") + " ".repeat(Math.max(process.stdout.columns - ${bannerPadding.value})) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
1365
-
1366
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.text.banner.command.${variant}("${command.title}") + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} }); ` : ""}
1367
-
1368
- splitText(
1369
- ${command?.title ? "colors.text.banner.description" : "colors.text.banner.command"}.${variant}("${description.value.replace(/"/g, "\\\"")}"),
1370
- Math.max(process.stdout.columns - ${totalPadding.value}, 0)
1371
- ).forEach((line) => {
1372
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].left}") + " ".repeat(Math.max(Math.floor((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.text.banner.description.${variant}(line) + " ".repeat(Math.max(Math.ceil((process.stdout.columns - (stripAnsi(line).length + ${bannerPadding.value})) / 2), 0)) + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].right}"), { consoleFn: console.${consoleFnName} });
1373
- });
1374
-
1375
- writeLine(colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomLeft}") + ${footer.value ? `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${6 + (footer.value ? footer.value.length : 0) + bannerPadding.value}, 0))) + " " + ${footer.value ? `colors.text.banner.footer.${variant}("${footer.value}")` : ""} + " " + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(4))` : `colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottom}".repeat(Math.max(process.stdout.columns - ${bannerPadding.value}, 0)))`} + colors.border.banner.outline.${variant}("${theme.borderStyles.banner.outline[variant].bottomRight}"), { consoleFn: console.${consoleFnName} });
1376
- `;
1377
- }
1378
- })];
1379
- }
1380
- /**
1381
1329
  * A component to generate the `wrapAnsi` function in the `shell-shock:console` builtin module.
1382
1330
  */
1383
1331
  function WrapAnsiFunction() {
@@ -2188,9 +2136,6 @@ function ConsoleBuiltin() {
2188
2136
  (0, __alloy_js_core_jsx_runtime.createComponent)(DividerFunctionDeclaration, {}),
2189
2137
  (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
2190
2138
  (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
2191
- (0, __alloy_js_core_jsx_runtime.createComponent)(BannerFunctionDeclaration, {}),
2192
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
2193
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
2194
2139
  (0, __alloy_js_core_jsx_runtime.createComponent)(MessageFunctionDeclaration, {
2195
2140
  type: "help",
2196
2141
  variant: "help",
@@ -2305,7 +2250,6 @@ function ConsoleBuiltin() {
2305
2250
  }
2306
2251
 
2307
2252
  //#endregion
2308
- exports.BannerFunctionDeclaration = BannerFunctionDeclaration;
2309
2253
  exports.ColorsDeclaration = ColorsDeclaration;
2310
2254
  exports.ConsoleBuiltin = ConsoleBuiltin;
2311
2255
  exports.DividerFunctionDeclaration = DividerFunctionDeclaration;