@shell-shock/preset-script 0.6.1 → 0.6.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.
- package/README.md +1 -1
- package/dist/components/banner-function-declaration.cjs +6 -3
- package/dist/components/banner-function-declaration.cjs.map +1 -1
- package/dist/components/banner-function-declaration.mjs +6 -3
- package/dist/components/banner-function-declaration.mjs.map +1 -1
- package/dist/components/bin-entry.cjs +12 -6
- package/dist/components/bin-entry.cjs.map +1 -1
- package/dist/components/bin-entry.d.cts.map +1 -1
- package/dist/components/bin-entry.d.mts.map +1 -1
- package/dist/components/bin-entry.mjs +12 -6
- package/dist/components/bin-entry.mjs.map +1 -1
- package/dist/components/command-entry.cjs +4 -9
- package/dist/components/command-entry.cjs.map +1 -1
- package/dist/components/command-entry.d.cts.map +1 -1
- package/dist/components/command-entry.d.mts.map +1 -1
- package/dist/components/command-entry.mjs +4 -9
- package/dist/components/command-entry.mjs.map +1 -1
- package/dist/components/command-router.cjs +91 -62
- package/dist/components/command-router.cjs.map +1 -1
- package/dist/components/command-router.d.cts +5 -1
- package/dist/components/command-router.d.cts.map +1 -1
- package/dist/components/command-router.d.mts +5 -1
- package/dist/components/command-router.d.mts.map +1 -1
- package/dist/components/command-router.mjs +91 -63
- package/dist/components/command-router.mjs.map +1 -1
- package/dist/components/console-builtin.cjs +1 -2
- package/dist/components/console-builtin.cjs.map +1 -1
- package/dist/components/console-builtin.mjs +1 -2
- package/dist/components/console-builtin.mjs.map +1 -1
- package/dist/components/help.cjs +0 -3
- package/dist/components/help.cjs.map +1 -1
- package/dist/components/help.d.cts +7 -7
- package/dist/components/help.d.cts.map +1 -1
- package/dist/components/help.d.mts +7 -7
- package/dist/components/help.d.mts.map +1 -1
- package/dist/components/help.mjs +0 -3
- package/dist/components/help.mjs.map +1 -1
- package/dist/components/helpers.d.mts +5 -5
- package/dist/components/index.cjs +1 -0
- package/dist/components/index.d.cts +2 -2
- package/dist/components/index.d.mts +2 -2
- package/dist/components/index.mjs +2 -2
- package/dist/components/utils-builtin.cjs +53 -9
- package/dist/components/utils-builtin.cjs.map +1 -1
- package/dist/components/utils-builtin.d.cts +8 -8
- package/dist/components/utils-builtin.d.cts.map +1 -1
- package/dist/components/utils-builtin.d.mts +8 -8
- package/dist/components/utils-builtin.d.mts.map +1 -1
- package/dist/components/utils-builtin.mjs +54 -10
- package/dist/components/utils-builtin.mjs.map +1 -1
- package/dist/components/virtual-command-entry.cjs +16 -12
- package/dist/components/virtual-command-entry.cjs.map +1 -1
- package/dist/components/virtual-command-entry.d.cts.map +1 -1
- package/dist/components/virtual-command-entry.d.mts.map +1 -1
- package/dist/components/virtual-command-entry.mjs +16 -12
- package/dist/components/virtual-command-entry.mjs.map +1 -1
- package/dist/index.cjs +2 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-entry.cjs","names":["code","computed","For","Show","ElseClause","ElseIfClause","FunctionDeclaration","IfStatement","VarDeclaration","ReflectionKind","SingleLineComment","usePowerlines","EntryFile","TSDoc","TSDocParam","TSDocRemarks","TSDocTitle","CommandParserLogic","OptionsInterfaceDeclaration","getAppBin","getDynamicPathSegmentName","isDynamicPathSegment","findFilePath","relativePath","joinPaths","replaceExtension","camelCase","constantCase","kebabCase","pascalCase","defu","BannerFunctionDeclaration","CommandHelp","IsDebug","VirtualCommandEntry","CommandInvocation","props","command","_$createComponent","name","initializer","segments","map","segment","join","_$createIntrinsic","_$memo","arguments","length","argument","CommandHandlerDeclaration","children","context","heading","title","description","replace","async","parameters","type","default","envPrefix","config","isCaseSensitive","condition","Object","values","options","option","CommandValidationLogic","each","doubleHardline","when","optional","includes","kind","string","number","variadic","fallback","CommandEntry","imports","builtinImports","rest","filePath","filter","commandSourcePath","entryPath","value","entry","input","file","typeDefinition","output","id","_$mergeProps","path","env","console","utils","child","isVirtual"],"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 type { Children } from \"@alloy-js/core\";\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport {\n ElseClause,\n ElseIfClause,\n FunctionDeclaration,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\nimport { SingleLineComment } from \"@powerlines/plugin-alloy/core/components/single-line-comment\";\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 CommandParserLogic,\n OptionsInterfaceDeclaration\n} from \"@shell-shock/core/components/options-parser-logic\";\nimport {\n getAppBin,\n getDynamicPathSegmentName,\n isDynamicPathSegment\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type {\n CommandTree,\n NumberCommandArgument,\n NumberCommandOption\n} 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 { kebabCase } from \"@stryke/string-format/kebab-case\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport defu from \"defu\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\nimport { BannerFunctionDeclaration } from \"./banner-function-declaration\";\nimport { CommandHelp } from \"./help\";\nimport { IsDebug } from \"./helpers\";\nimport { VirtualCommandEntry } from \"./virtual-command-entry\";\n\nexport function CommandInvocation(props: { command: CommandTree }) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration\n name=\"__context\"\n initializer={code`{ path: \\`${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `\\${${camelCase(getDynamicPathSegmentName(segment))}}`\n : segment\n )\n .join(\"/\")}\\`, segments: [${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? camelCase(getDynamicPathSegmentName(segment))\n : `\"${segment}\"`\n )\n .join(\", \")}] }`}\n />\n <hbr />\n <hbr />\n {code`\n\n internal_commandContextStore.run(__context, () => {\n return Promise.resolve(Reflect.apply(handle${pascalCase(\n command.name\n )}, __context, [options${\n command.arguments.length > 0\n ? `, ${command.arguments\n .map(argument => camelCase(argument.name))\n .join(\", \")}`\n : \"\"\n }]));\n });\n\n `}\n <hbr />\n </>\n );\n}\n\nexport interface CommandHandlerDeclarationProps {\n command: CommandTree;\n children?: Children;\n}\n\n/**\n * A component that generates the `handler` function declaration for a command.\n */\nexport function CommandHandlerDeclaration(\n props: CommandHandlerDeclarationProps\n) {\n const { command, children } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n\n return (\n <>\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <TSDoc\n heading={`The ${command.title} (${getAppBin(context)} ${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `[${constantCase(getDynamicPathSegmentName(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 <CommandParserLogic\n command={command}\n envPrefix={context.config.envPrefix}\n isCaseSensitive={context.config.isCaseSensitive}\n />\n <hbr />\n <hbr />\n {code`writeLine(\"\");\n banner(); `}\n <hbr />\n <hbr />\n <IfStatement condition={<IsDebug />}>\n {code`\n writeLine(\"\");\n writeLine(colors.text.body.tertiary(\"Debug mode is enabled. Additional debug information may be logged to the console.\"));\n\n writeLine(\"\");\n debug(\\`Command path: ${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `\\${${camelCase(getDynamicPathSegmentName(segment))}}`\n : segment\n )\n .join(\" / \")} \\\\n\\\\nOptions: \\\\n${Object.values(command.options)\n .map(\n option =>\n ` - ${kebabCase(option.name)}: \\${options.${camelCase(\n option.name\n )} === undefined ? \"\" : JSON.stringify(options.${camelCase(\n option.name\n )})}`\n )\n .join(\"\\\\n\")}${\n command.arguments.length > 0\n ? ` \\\\n\\\\nArguments: \\\\n${command.arguments\n .map(\n argument =>\n ` - ${kebabCase(argument.name)}: \\${${camelCase(\n argument.name\n )} === undefined ? \"\" : JSON.stringify(${camelCase(\n argument.name\n )})}`\n )\n .join(\"\\\\n\")}`\n : \"\"\n }\\`);\n writeLine(\"\"); `}\n </IfStatement>\n <hbr />\n <hbr />\n {children}\n <hbr />\n <hbr />\n <IfStatement condition={code`options.help`}>\n <CommandHelp command={command} />\n </IfStatement>\n <ElseClause>\n <hbr />\n <CommandInvocation command={command} />\n </ElseClause>\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface CommandValidationLogicProps {\n command: CommandTree;\n}\n\n/**\n * A component that generates command validation logic for required options and arguments.\n */\nexport function CommandValidationLogic(props: CommandValidationLogicProps) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration name=\"failures\" type=\"string[]\" initializer={code`[];`} />\n <hbr />\n <For each={Object.values(command.options ?? {})} doubleHardline>\n {option => (\n <>\n <Show when={!option.optional}>\n <IfStatement\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }`}>\n {code`failures.push(\"Missing required \\\\\"${option.name}\\\\\" option\");`}\n </IfStatement>\n <Show\n when={\n (option.kind === ReflectionKind.string ||\n option.kind === ReflectionKind.number) &&\n option.variadic\n }>\n <ElseIfClause\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.length === 0`}>\n {code`failures.push(\"No values were provided to the required \\\\\"${\n option.name\n }\\\\\" array option\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <Show\n when={(option as NumberCommandOption).variadic}\n fallback={\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n } && Number.isNaN(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\"Invalid numeric value provided for the \\\\\"${\n option.name\n }\\\\\" option\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the \\\\\"${\n option.name\n }\\\\\" array option\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n <hbr />\n <hbr />\n <For each={command.arguments} doubleHardline>\n {argument => (\n <>\n <Show when={!argument.optional}>\n <IfStatement condition={code`!${camelCase(argument.name)}`}>\n {code`failures.push(\"Missing required \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n <Show\n when={\n (argument.kind === ReflectionKind.string ||\n argument.kind === ReflectionKind.number) &&\n argument.variadic\n }>\n <ElseIfClause\n condition={code`${camelCase(argument.name)}.length === 0`}>\n {code`failures.push(\"No values were provided to the required \\\\\"${\n argument.name\n }\\\\\" array positional argument\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={argument.kind === ReflectionKind.number}>\n <Show\n when={(argument as NumberCommandArgument).variadic}\n fallback={\n <IfStatement\n condition={code`${camelCase(\n argument.name\n )} && Number.isNaN(${camelCase(argument.name)})`}>\n {code`failures.push(\"Invalid numeric value provided for the \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`${camelCase(argument.name)}.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the \\\\\"${\n argument.name\n }\\\\\" array positional argument\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n <IfStatement condition={code`failures.length > 0`}>\n {code`error(\"The following validation failures were found while processing the user provided input, and must be corrected before the command line process can be executed: \\\\n\\\\n\" + failures.map(failure => \" - \" + failure).join(\"\\\\n\"));\n options.help = true; `}\n </IfStatement>\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.segments\n .filter(segment => !isDynamicPathSegment(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\", \"isDevelopment\", \"isDebug\"],\n console: [\n \"debug\",\n \"warn\",\n \"error\",\n \"table\",\n \"colors\",\n \"stripAnsi\",\n \"writeLine\",\n \"splitText\"\n ],\n utils: [\n \"getArgs\",\n \"hasFlag\",\n \"isMinimal\",\n \"isUnicodeSupported\",\n \"internal_commandContextStore\"\n ]\n })}>\n <BannerFunctionDeclaration command={command} />\n <hbr />\n <hbr />\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <SingleLineComment>{code`Validate required options and arguments`}</SingleLineComment>\n <hbr />\n <CommandHandlerDeclaration command={command}>\n <CommandValidationLogic command={command} />\n </CommandHandlerDeclaration>\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.cjs","names":["code","computed","For","Show","ElseClause","ElseIfClause","FunctionDeclaration","IfStatement","VarDeclaration","ReflectionKind","usePowerlines","EntryFile","TSDoc","TSDocParam","TSDocRemarks","TSDocTitle","CommandParserLogic","OptionsInterfaceDeclaration","getAppBin","getDynamicPathSegmentName","isDynamicPathSegment","findFilePath","relativePath","joinPaths","replaceExtension","camelCase","constantCase","kebabCase","pascalCase","defu","BannerFunctionDeclaration","CommandHelp","IsDebug","VirtualCommandEntry","CommandInvocation","props","command","_$createComponent","name","initializer","segments","map","segment","join","_$createIntrinsic","_$memo","arguments","length","argument","CommandHandlerDeclaration","children","context","heading","title","description","replace","async","parameters","type","default","envPrefix","config","isCaseSensitive","condition","Object","values","options","option","CommandValidationLogic","each","doubleHardline","when","optional","includes","kind","string","number","variadic","fallback","CommandEntry","imports","builtinImports","rest","filePath","filter","commandSourcePath","entryPath","value","entry","input","file","typeDefinition","output","id","_$mergeProps","path","env","console","utils","child","isVirtual"],"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 type { Children } from \"@alloy-js/core\";\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport {\n ElseClause,\n ElseIfClause,\n FunctionDeclaration,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\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 CommandParserLogic,\n OptionsInterfaceDeclaration\n} from \"@shell-shock/core/components/options-parser-logic\";\nimport {\n getAppBin,\n getDynamicPathSegmentName,\n isDynamicPathSegment\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type {\n CommandTree,\n NumberCommandArgument,\n NumberCommandOption\n} 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 { kebabCase } from \"@stryke/string-format/kebab-case\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport defu from \"defu\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\nimport { BannerFunctionDeclaration } from \"./banner-function-declaration\";\nimport { CommandHelp } from \"./help\";\nimport { IsDebug } from \"./helpers\";\nimport { VirtualCommandEntry } from \"./virtual-command-entry\";\n\nexport function CommandInvocation(props: { command: CommandTree }) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration\n name=\"__context\"\n initializer={code`{ path: \\`${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `\\${${camelCase(getDynamicPathSegmentName(segment))}}`\n : segment\n )\n .join(\"/\")}\\`, segments: [${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? camelCase(getDynamicPathSegmentName(segment))\n : `\"${segment}\"`\n )\n .join(\", \")}] }`}\n />\n <hbr />\n <hbr />\n {code`\n\n return internal_commandContext.run(__context, () => {\n return Promise.resolve(Reflect.apply(handle${pascalCase(\n command.name\n )}, __context, [options${\n command.arguments.length > 0\n ? `, ${command.arguments\n .map(argument => camelCase(argument.name))\n .join(\", \")}`\n : \"\"\n }]));\n });\n\n `}\n <hbr />\n </>\n );\n}\n\nexport interface CommandHandlerDeclarationProps {\n command: CommandTree;\n children?: Children;\n}\n\n/**\n * A component that generates the `handler` function declaration for a command.\n */\nexport function CommandHandlerDeclaration(\n props: CommandHandlerDeclarationProps\n) {\n const { command, children } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n\n return (\n <>\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <TSDoc\n heading={`The ${command.title} (${getAppBin(context)} ${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `[${constantCase(getDynamicPathSegmentName(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: \"useArgs()\" }]}>\n <CommandParserLogic\n command={command}\n envPrefix={context.config.envPrefix}\n isCaseSensitive={context.config.isCaseSensitive}\n />\n <hbr />\n <hbr />\n {code`writeLine(\"\");\n banner(); `}\n <hbr />\n <hbr />\n <IfStatement condition={<IsDebug />}>\n {code`\n writeLine(colors.text.body.tertiary(\"Debug mode is enabled. Additional debug information may be logged to the console.\"));\n\n writeLine(\"\");\n debug(\\`Command path: ${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `\\${${camelCase(getDynamicPathSegmentName(segment))}}`\n : segment\n )\n .join(\" / \")} \\\\n\\\\nOptions: \\\\n${Object.values(command.options)\n .map(\n option =>\n ` - ${kebabCase(option.name)}: \\${options.${camelCase(\n option.name\n )} === undefined ? \"\" : JSON.stringify(options.${camelCase(\n option.name\n )})}`\n )\n .join(\"\\\\n\")}${\n command.arguments.length > 0\n ? ` \\\\n\\\\nArguments: \\\\n${command.arguments\n .map(\n argument =>\n ` - ${kebabCase(argument.name)}: \\${${camelCase(\n argument.name\n )} === undefined ? \"\" : JSON.stringify(${camelCase(\n argument.name\n )})}`\n )\n .join(\"\\\\n\")}`\n : \"\"\n }\\`);\n writeLine(\"\"); `}\n </IfStatement>\n <hbr />\n <hbr />\n {children}\n <hbr />\n <hbr />\n <IfStatement condition={code`options.help`}>\n <CommandHelp command={command} />\n </IfStatement>\n <ElseClause>\n <hbr />\n <CommandInvocation command={command} />\n </ElseClause>\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface CommandValidationLogicProps {\n command: CommandTree;\n}\n\n/**\n * A component that generates command validation logic for required options and arguments.\n */\nexport function CommandValidationLogic(props: CommandValidationLogicProps) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration name=\"failures\" type=\"string[]\" initializer={code`[];`} />\n <hbr />\n <For each={Object.values(command.options ?? {})} doubleHardline>\n {option => (\n <>\n <Show when={!option.optional}>\n <IfStatement\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }`}>\n {code`failures.push(\"Missing required \\\\\"${option.name}\\\\\" option\");`}\n </IfStatement>\n <Show\n when={\n (option.kind === ReflectionKind.string ||\n option.kind === ReflectionKind.number) &&\n option.variadic\n }>\n <ElseIfClause\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.length === 0`}>\n {code`failures.push(\"No values were provided to the required \\\\\"${\n option.name\n }\\\\\" array option\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <Show\n when={(option as NumberCommandOption).variadic}\n fallback={\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n } && Number.isNaN(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\"Invalid numeric value provided for the \\\\\"${\n option.name\n }\\\\\" option\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the \\\\\"${\n option.name\n }\\\\\" array option\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n <hbr />\n <hbr />\n <For each={command.arguments} doubleHardline>\n {argument => (\n <>\n <Show when={!argument.optional}>\n <IfStatement condition={code`!${camelCase(argument.name)}`}>\n {code`failures.push(\"Missing required \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n <Show\n when={\n (argument.kind === ReflectionKind.string ||\n argument.kind === ReflectionKind.number) &&\n argument.variadic\n }>\n <ElseIfClause\n condition={code`${camelCase(argument.name)}.length === 0`}>\n {code`failures.push(\"No values were provided to the required \\\\\"${\n argument.name\n }\\\\\" array positional argument\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={argument.kind === ReflectionKind.number}>\n <Show\n when={(argument as NumberCommandArgument).variadic}\n fallback={\n <IfStatement\n condition={code`${camelCase(\n argument.name\n )} && Number.isNaN(${camelCase(argument.name)})`}>\n {code`failures.push(\"Invalid numeric value provided for the \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`${camelCase(argument.name)}.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the \\\\\"${\n argument.name\n }\\\\\" array positional argument\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n <IfStatement condition={code`failures.length > 0`}>\n {code`error(\"The following validation failures were found while processing the user provided input, and must be corrected before the command line process can be executed: \\\\n\\\\n\" + failures.map(failure => \" - \" + failure).join(\"\\\\n\"));\n options.help = true; `}\n </IfStatement>\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.segments\n .filter(segment => !isDynamicPathSegment(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\", \"isDevelopment\", \"isDebug\"],\n console: [\n \"debug\",\n \"warn\",\n \"error\",\n \"table\",\n \"colors\",\n \"stripAnsi\",\n \"writeLine\",\n \"splitText\"\n ],\n utils: [\n \"useArgs\",\n \"hasFlag\",\n \"isMinimal\",\n \"isUnicodeSupported\",\n \"internal_commandContext\"\n ]\n })}>\n <BannerFunctionDeclaration command={command} />\n <hbr />\n <hbr />\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <CommandHandlerDeclaration command={command}>\n <CommandValidationLogic command={command} />\n </CommandHandlerDeclaration>\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-entry.d.cts","names":[],"sources":["../../src/components/command-entry.tsx"],"sourcesContent":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"command-entry.d.cts","names":[],"sources":["../../src/components/command-entry.tsx"],"sourcesContent":[],"mappings":";;;;;iBAiEgB,iBAAA;WAAoC;AAApD,CAAA,CAAA,EAAiE,QAAjD;AA2CC,UAAA,8BAAA,CAA8B;EAQ/B,OAAA,EAPL,WAOK;EA8FC,QAAA,CAAA,EApGJ,QAoGI;AAOjB;AAgIA;;;AAA2C,iBArO3B,yBAAA,CAqO2B,KAAA,EApOlC,8BAoOkC,CAAA,EApOJ,QAoOI;AAAI,UAvI9B,2BAAA,CAuI8B;EAU/B,OAAA,EAhJL,WAgJiB;;;;;iBA1IZ,sBAAA,QAA8B,8BAA2B;UAgIxD,iBAAA,SAA0B,KACzC;WAGS;;;;;iBAMK,YAAA,QAAoB,oBAAiB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-entry.d.mts","names":[],"sources":["../../src/components/command-entry.tsx"],"sourcesContent":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"command-entry.d.mts","names":[],"sources":["../../src/components/command-entry.tsx"],"sourcesContent":[],"mappings":";;;;;iBAiEgB,iBAAA;WAAoC;AAApD,CAAA,CAAA,EAAiE,QAAjD;AA2CC,UAAA,8BAAA,CAA8B;EAQ/B,OAAA,EAPL,WAOK;EA8FC,QAAA,CAAA,EApGJ,QAoGI;AAOjB;AAgIA;;;AAA2C,iBArO3B,yBAAA,CAqO2B,KAAA,EApOlC,8BAoOkC,CAAA,EApOJ,QAoOI;AAAI,UAvI9B,2BAAA,CAuI8B;EAU/B,OAAA,EAhJL,WAgJiB;;;;;iBA1IZ,sBAAA,QAA8B,8BAA2B;UAgIxD,iBAAA,SAA0B,KACzC;WAGS;;;;;iBAMK,YAAA,QAAoB,oBAAiB"}
|
|
@@ -13,7 +13,6 @@ import { replaceExtension } from "@stryke/path/replace";
|
|
|
13
13
|
import { pascalCase } from "@stryke/string-format/pascal-case";
|
|
14
14
|
import defu from "defu";
|
|
15
15
|
import { ReflectionKind } from "@powerlines/deepkit/vendor/type";
|
|
16
|
-
import { SingleLineComment } from "@powerlines/plugin-alloy/core/components/single-line-comment";
|
|
17
16
|
import { CommandParserLogic, OptionsInterfaceDeclaration } from "@shell-shock/core/components/options-parser-logic";
|
|
18
17
|
import { findFilePath, relativePath } from "@stryke/path/find";
|
|
19
18
|
import { joinPaths } from "@stryke/path/join";
|
|
@@ -35,7 +34,7 @@ function CommandInvocation(props) {
|
|
|
35
34
|
createIntrinsic("hbr", {}),
|
|
36
35
|
memo(() => code`
|
|
37
36
|
|
|
38
|
-
|
|
37
|
+
return internal_commandContext.run(__context, () => {
|
|
39
38
|
return Promise.resolve(Reflect.apply(handle${pascalCase(command.name)}, __context, [options${command.arguments.length > 0 ? `, ${command.arguments.map((argument) => camelCase(argument.name)).join(", ")}` : ""}]));
|
|
40
39
|
});
|
|
41
40
|
|
|
@@ -80,7 +79,7 @@ function CommandHandlerDeclaration(props) {
|
|
|
80
79
|
parameters: [{
|
|
81
80
|
name: "args",
|
|
82
81
|
type: "string[]",
|
|
83
|
-
default: "
|
|
82
|
+
default: "useArgs()"
|
|
84
83
|
}],
|
|
85
84
|
get children() {
|
|
86
85
|
return [
|
|
@@ -105,7 +104,6 @@ function CommandHandlerDeclaration(props) {
|
|
|
105
104
|
},
|
|
106
105
|
get children() {
|
|
107
106
|
return code`
|
|
108
|
-
writeLine("");
|
|
109
107
|
writeLine(colors.text.body.tertiary("Debug mode is enabled. Additional debug information may be logged to the console."));
|
|
110
108
|
|
|
111
109
|
writeLine("");
|
|
@@ -311,7 +309,6 @@ function CommandEntry(props) {
|
|
|
311
309
|
return defu(builtinImports ?? {}, {
|
|
312
310
|
env: [
|
|
313
311
|
"env",
|
|
314
|
-
"isCI",
|
|
315
312
|
"isDevelopment",
|
|
316
313
|
"isDebug"
|
|
317
314
|
],
|
|
@@ -326,11 +323,11 @@ function CommandEntry(props) {
|
|
|
326
323
|
"splitText"
|
|
327
324
|
],
|
|
328
325
|
utils: [
|
|
329
|
-
"
|
|
326
|
+
"useArgs",
|
|
330
327
|
"hasFlag",
|
|
331
328
|
"isMinimal",
|
|
332
329
|
"isUnicodeSupported",
|
|
333
|
-
"
|
|
330
|
+
"internal_commandContext"
|
|
334
331
|
]
|
|
335
332
|
});
|
|
336
333
|
},
|
|
@@ -342,8 +339,6 @@ function CommandEntry(props) {
|
|
|
342
339
|
createComponent(OptionsInterfaceDeclaration, { command }),
|
|
343
340
|
createIntrinsic("hbr", {}),
|
|
344
341
|
createIntrinsic("hbr", {}),
|
|
345
|
-
createComponent(SingleLineComment, { children: code`Validate required options and arguments` }),
|
|
346
|
-
createIntrinsic("hbr", {}),
|
|
347
342
|
createComponent(CommandHandlerDeclaration, {
|
|
348
343
|
command,
|
|
349
344
|
get children() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-entry.mjs","names":["code","computed","For","Show","ElseClause","ElseIfClause","FunctionDeclaration","IfStatement","VarDeclaration","ReflectionKind","SingleLineComment","usePowerlines","EntryFile","TSDoc","TSDocParam","TSDocRemarks","TSDocTitle","CommandParserLogic","OptionsInterfaceDeclaration","getAppBin","getDynamicPathSegmentName","isDynamicPathSegment","findFilePath","relativePath","joinPaths","replaceExtension","camelCase","constantCase","kebabCase","pascalCase","defu","BannerFunctionDeclaration","CommandHelp","IsDebug","VirtualCommandEntry","CommandInvocation","props","command","_$createComponent","name","initializer","segments","map","segment","join","_$createIntrinsic","_$memo","arguments","length","argument","CommandHandlerDeclaration","children","context","heading","title","description","replace","async","parameters","type","default","envPrefix","config","isCaseSensitive","condition","Object","values","options","option","CommandValidationLogic","each","doubleHardline","when","optional","includes","kind","string","number","variadic","fallback","CommandEntry","imports","builtinImports","rest","filePath","filter","commandSourcePath","entryPath","value","entry","input","file","typeDefinition","output","id","_$mergeProps","path","env","console","utils","child","isVirtual"],"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 type { Children } from \"@alloy-js/core\";\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport {\n ElseClause,\n ElseIfClause,\n FunctionDeclaration,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\nimport { SingleLineComment } from \"@powerlines/plugin-alloy/core/components/single-line-comment\";\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 CommandParserLogic,\n OptionsInterfaceDeclaration\n} from \"@shell-shock/core/components/options-parser-logic\";\nimport {\n getAppBin,\n getDynamicPathSegmentName,\n isDynamicPathSegment\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type {\n CommandTree,\n NumberCommandArgument,\n NumberCommandOption\n} 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 { kebabCase } from \"@stryke/string-format/kebab-case\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport defu from \"defu\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\nimport { BannerFunctionDeclaration } from \"./banner-function-declaration\";\nimport { CommandHelp } from \"./help\";\nimport { IsDebug } from \"./helpers\";\nimport { VirtualCommandEntry } from \"./virtual-command-entry\";\n\nexport function CommandInvocation(props: { command: CommandTree }) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration\n name=\"__context\"\n initializer={code`{ path: \\`${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `\\${${camelCase(getDynamicPathSegmentName(segment))}}`\n : segment\n )\n .join(\"/\")}\\`, segments: [${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? camelCase(getDynamicPathSegmentName(segment))\n : `\"${segment}\"`\n )\n .join(\", \")}] }`}\n />\n <hbr />\n <hbr />\n {code`\n\n internal_commandContextStore.run(__context, () => {\n return Promise.resolve(Reflect.apply(handle${pascalCase(\n command.name\n )}, __context, [options${\n command.arguments.length > 0\n ? `, ${command.arguments\n .map(argument => camelCase(argument.name))\n .join(\", \")}`\n : \"\"\n }]));\n });\n\n `}\n <hbr />\n </>\n );\n}\n\nexport interface CommandHandlerDeclarationProps {\n command: CommandTree;\n children?: Children;\n}\n\n/**\n * A component that generates the `handler` function declaration for a command.\n */\nexport function CommandHandlerDeclaration(\n props: CommandHandlerDeclarationProps\n) {\n const { command, children } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n\n return (\n <>\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <TSDoc\n heading={`The ${command.title} (${getAppBin(context)} ${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `[${constantCase(getDynamicPathSegmentName(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 <CommandParserLogic\n command={command}\n envPrefix={context.config.envPrefix}\n isCaseSensitive={context.config.isCaseSensitive}\n />\n <hbr />\n <hbr />\n {code`writeLine(\"\");\n banner(); `}\n <hbr />\n <hbr />\n <IfStatement condition={<IsDebug />}>\n {code`\n writeLine(\"\");\n writeLine(colors.text.body.tertiary(\"Debug mode is enabled. Additional debug information may be logged to the console.\"));\n\n writeLine(\"\");\n debug(\\`Command path: ${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `\\${${camelCase(getDynamicPathSegmentName(segment))}}`\n : segment\n )\n .join(\" / \")} \\\\n\\\\nOptions: \\\\n${Object.values(command.options)\n .map(\n option =>\n ` - ${kebabCase(option.name)}: \\${options.${camelCase(\n option.name\n )} === undefined ? \"\" : JSON.stringify(options.${camelCase(\n option.name\n )})}`\n )\n .join(\"\\\\n\")}${\n command.arguments.length > 0\n ? ` \\\\n\\\\nArguments: \\\\n${command.arguments\n .map(\n argument =>\n ` - ${kebabCase(argument.name)}: \\${${camelCase(\n argument.name\n )} === undefined ? \"\" : JSON.stringify(${camelCase(\n argument.name\n )})}`\n )\n .join(\"\\\\n\")}`\n : \"\"\n }\\`);\n writeLine(\"\"); `}\n </IfStatement>\n <hbr />\n <hbr />\n {children}\n <hbr />\n <hbr />\n <IfStatement condition={code`options.help`}>\n <CommandHelp command={command} />\n </IfStatement>\n <ElseClause>\n <hbr />\n <CommandInvocation command={command} />\n </ElseClause>\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface CommandValidationLogicProps {\n command: CommandTree;\n}\n\n/**\n * A component that generates command validation logic for required options and arguments.\n */\nexport function CommandValidationLogic(props: CommandValidationLogicProps) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration name=\"failures\" type=\"string[]\" initializer={code`[];`} />\n <hbr />\n <For each={Object.values(command.options ?? {})} doubleHardline>\n {option => (\n <>\n <Show when={!option.optional}>\n <IfStatement\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }`}>\n {code`failures.push(\"Missing required \\\\\"${option.name}\\\\\" option\");`}\n </IfStatement>\n <Show\n when={\n (option.kind === ReflectionKind.string ||\n option.kind === ReflectionKind.number) &&\n option.variadic\n }>\n <ElseIfClause\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.length === 0`}>\n {code`failures.push(\"No values were provided to the required \\\\\"${\n option.name\n }\\\\\" array option\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <Show\n when={(option as NumberCommandOption).variadic}\n fallback={\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n } && Number.isNaN(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\"Invalid numeric value provided for the \\\\\"${\n option.name\n }\\\\\" option\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the \\\\\"${\n option.name\n }\\\\\" array option\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n <hbr />\n <hbr />\n <For each={command.arguments} doubleHardline>\n {argument => (\n <>\n <Show when={!argument.optional}>\n <IfStatement condition={code`!${camelCase(argument.name)}`}>\n {code`failures.push(\"Missing required \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n <Show\n when={\n (argument.kind === ReflectionKind.string ||\n argument.kind === ReflectionKind.number) &&\n argument.variadic\n }>\n <ElseIfClause\n condition={code`${camelCase(argument.name)}.length === 0`}>\n {code`failures.push(\"No values were provided to the required \\\\\"${\n argument.name\n }\\\\\" array positional argument\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={argument.kind === ReflectionKind.number}>\n <Show\n when={(argument as NumberCommandArgument).variadic}\n fallback={\n <IfStatement\n condition={code`${camelCase(\n argument.name\n )} && Number.isNaN(${camelCase(argument.name)})`}>\n {code`failures.push(\"Invalid numeric value provided for the \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`${camelCase(argument.name)}.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the \\\\\"${\n argument.name\n }\\\\\" array positional argument\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n <IfStatement condition={code`failures.length > 0`}>\n {code`error(\"The following validation failures were found while processing the user provided input, and must be corrected before the command line process can be executed: \\\\n\\\\n\" + failures.map(failure => \" - \" + failure).join(\"\\\\n\"));\n options.help = true; `}\n </IfStatement>\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.segments\n .filter(segment => !isDynamicPathSegment(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\", \"isDevelopment\", \"isDebug\"],\n console: [\n \"debug\",\n \"warn\",\n \"error\",\n \"table\",\n \"colors\",\n \"stripAnsi\",\n \"writeLine\",\n \"splitText\"\n ],\n utils: [\n \"getArgs\",\n \"hasFlag\",\n \"isMinimal\",\n \"isUnicodeSupported\",\n \"internal_commandContextStore\"\n ]\n })}>\n <BannerFunctionDeclaration command={command} />\n <hbr />\n <hbr />\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <SingleLineComment>{code`Validate required options and arguments`}</SingleLineComment>\n <hbr />\n <CommandHandlerDeclaration command={command}>\n <CommandValidationLogic command={command} />\n </CommandHandlerDeclaration>\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":";;;;;;;;;;;;;;;;;;;;;;;;AAkEA,SAAgBmC,kBAAkBC,OAAiC;CACjE,MAAM,EAAEC,YAAYD;AAEpB,QAAA;EAAAE,gBAEK9B,gBAAc;GACb+B,MAAI;GAAA,IACJC,cAAW;AAAA,WAAExC,IAAI,aAAaqC,QAAQI,SACnCC,KAAIC,YACHtB,qBAAqBsB,QAAQ,GACzB,MAAMjB,UAAUN,0BAA0BuB,QAAQ,CAAC,CAAA,KACnDA,QACL,CACAC,KAAK,IAAI,CAAA,iBAAkBP,QAAQI,SACnCC,KAAIC,YACHtB,qBAAqBsB,QAAQ,GACzBjB,UAAUN,0BAA0BuB,QAAQ,CAAC,GAC7C,IAAIA,QAAO,GAChB,CACAC,KAAK,KAAK,CAAA;;GAAK,CAAA;EAAAC,gBAAA,OAAA,EAAA,CAAA;EAAAA,gBAAA,OAAA,EAAA,CAAA;EAAAC,WAInB9C,IAAI;;;qDAG0C6B,WAC3CQ,QAAQE,KACT,CAAA,uBACCF,QAAQU,UAAUC,SAAS,IACvB,KAAKX,QAAQU,UACVL,KAAIO,aAAYvB,UAAUuB,SAASV,KAAK,CAAC,CACzCK,KAAK,KAAK,KACb,GAAE;;;QAIT;EAAAC,gBAAA,OAAA,EAAA,CAAA;EAAA;;;;;AAcP,SAAgBK,0BACdd,OACA;CACA,MAAM,EAAEC,SAASc,aAAaf;CAE9B,MAAMgB,UAAUzC,eAAoC;AAEpD,QAAA;EAAA2B,gBAEKpB,6BAA2B,EAAUmB,SAAO,CAAA;EAAAQ,gBAAA,OAAA,EAAA,CAAA;EAAAA,gBAAA,OAAA,EAAA,CAAA;EAAAP,gBAG5CzB,OAAK;GAAA,IACJwC,UAAO;AAAA,WAAE,OAAOhB,QAAQiB,MAAK,IAAKnC,UAAUiC,QAAQ,CAAA,GAAIf,QAAQI,SAC7DC,KAAIC,YACHtB,qBAAqBsB,QAAQ,GACzB,IAAIhB,aAAaP,0BAA0BuB,QAAQ,CAAC,CAAA,KACpDA,QACL,CACAC,KAAK,IAAI,CAAA;;GAAY,IAAAO,WAAA;AAAA,WAAA;KAAAb,gBACvBvB,cAAY,EAAA,IAAAoC,WAAA;AAAA,aAAE,GAAGd,QAAQkB,YAAYC,QAAQ,QAAQ,GAAG,CAAA;QAAG,CAAA;KAAAX,gBAAA,OAAA,EAAA,CAAA;KAAAP,gBAE3DtB,YAAU,EAAA,IAAAmC,WAAA;AAAA,aAAEd,QAAQiB;QAAK,CAAA;KAAAhB,gBACzBxB,YAAU;MAACyB,MAAI;MAAAY,UAAS;MAAmD,CAAA;KAAA;;GAAA,CAAA;EAAAb,gBAE7EhC,qBAAmB;GAAA,UAAA;GAElBmD,OAAK;GACLlB,MAAI;GACJmB,YAAY,CAAC;IAAEnB,MAAM;IAAQoB,MAAM;IAAYC,SAAS;IAAa,CAAC;GAAA,IAAAT,WAAA;AAAA,WAAA;KAAAb,gBACrErB,oBAAkB;MACRoB;MAAO,IAChBwB,YAAS;AAAA,cAAET,QAAQU,OAAOD;;MAAS,IACnCE,kBAAe;AAAA,cAAEX,QAAQU,OAAOC;;MAAe,CAAA;KAAAlB,gBAAA,OAAA,EAAA,CAAA;KAAAA,gBAAA,OAAA,EAAA,CAAA;KAIhD7C,IAAI;;KACM6C,gBAAA,OAAA,EAAA,CAAA;KAAAA,gBAAA,OAAA,EAAA,CAAA;KAAAP,gBAGV/B,aAAW;MAAA,IAACyD,YAAS;AAAA,cAAA1B,gBAAGL,SAAO,EAAA,CAAA;;MAAA,IAAAkB,WAAA;AAAA,cAC7BnD,IAAI;;;;;kCAKmBqC,QAAQI,SAC7BC,KAAIC,YACHtB,qBAAqBsB,QAAQ,GACzB,MAAMjB,UAAUN,0BAA0BuB,QAAQ,CAAC,CAAA,KACnDA,QACL,CACAC,KAAK,MAAM,CAAA,qBAAsBqB,OAAOC,OAAO7B,QAAQ8B,QAAQ,CAC/DzB,KACC0B,WACE,MAAMxC,UAAUwC,OAAO7B,KAAK,CAAA,eAAgBb,UAC1C0C,OAAO7B,KACR,CAAA,+CAAgDb,UAC/C0C,OAAO7B,KACR,CAAA,IACJ,CACAK,KAAK,MAAM,GACZP,QAAQU,UAAUC,SAAS,IACvB,wBAAwBX,QAAQU,UAC7BL,KACCO,aACE,MAAMrB,UAAUqB,SAASV,KAAK,CAAA,OAAQb,UACpCuB,SAASV,KACV,CAAA,uCAAwCb,UACvCuB,SAASV,KACV,CAAA,IACJ,CACAK,KAAK,MAAM,KACd,GAAE;;;MAEQ,CAAA;KAAAC,gBAAA,OAAA,EAAA,CAAA;KAAAA,gBAAA,OAAA,EAAA,CAAA;KAIjBM;KAAQN,gBAAA,OAAA,EAAA,CAAA;KAAAA,gBAAA,OAAA,EAAA,CAAA;KAAAP,gBAGR/B,aAAW;MAACyD,WAAWhE,IAAI;MAAc,IAAAmD,WAAA;AAAA,cAAAb,gBACvCN,aAAW,EAAUK,SAAO,CAAA;;MAAA,CAAA;KAAAC,gBAE9BlC,YAAU,EAAA,IAAA+C,WAAA;AAAA,aAAA,CAAAN,gBAAA,OAAA,EAAA,CAAA,EAAAP,gBAERH,mBAAiB,EAAUE,SAAO,CAAA,CAAA;QAAA,CAAA;KAAA;;GAAA,CAAA;EAAA;;;;;AAc7C,SAAgBgC,uBAAuBjC,OAAoC;CACzE,MAAM,EAAEC,YAAYD;AAEpB,QAAA;EAAAE,gBAEK9B,gBAAc;GAAC+B,MAAI;GAAYoB,MAAI;GAAYnB,aAAaxC,IAAI;GAAK,CAAA;EAAA6C,gBAAA,OAAA,EAAA,CAAA;EAAAP,gBAErEpC,KAAG;GAAA,IAACoE,OAAI;AAAA,WAAEL,OAAOC,OAAO7B,QAAQ8B,WAAW,EAAE,CAAC;;GAAEI,gBAAc;GAAApB,WAC5DiB,WAAM,CAAA9B,gBAEFnC,MAAI;IAAA,IAACqE,OAAI;AAAA,YAAE,CAACJ,OAAOK;;IAAQ,IAAAtB,WAAA;AAAA,YAAA,CAAAb,gBACzB/B,aAAW;MAAA,IACVyD,YAAS;AAAA,cAAEhE,IAAI,WACboE,OAAO7B,KAAKmC,SAAS,IAAI,GACrB,KAAKN,OAAO7B,KAAI,MAChB,IAAIb,UAAU0C,OAAO7B,KAAK;;MAC9B,IAAAY,WAAA;AAAA,cACDnD,IAAI,sCAAsCoE,OAAO7B,KAAI;;MAAe,CAAA,EAAAD,gBAEtEnC,MAAI;MAAA,IACHqE,OAAI;AAAA,eACDJ,OAAOO,SAASlE,eAAemE,UAC9BR,OAAOO,SAASlE,eAAeoE,WACjCT,OAAOU;;MAAQ,IAAA3B,WAAA;AAAA,cAAAb,gBAEhBjC,cAAY;QAAA,IACX2D,YAAS;AAAA,gBAAEhE,IAAI,UACboE,OAAO7B,KAAKmC,SAAS,IAAI,GACrB,KAAKN,OAAO7B,KAAI,MAChB,IAAIb,UAAU0C,OAAO7B,KAAK,GAAE;;QACnB,IAAAY,WAAA;AAAA,gBACdnD,IAAI,6DACHoE,OAAO7B,KAAI;;QACQ,CAAA;;MAAA,CAAA,CAAA;;IAAA,CAAA,EAAAD,gBAI1BnC,MAAI;IAAA,IAACqE,OAAI;AAAA,YAAEJ,OAAOO,SAASlE,eAAeoE;;IAAM,IAAA1B,WAAA;AAAA,YAAAb,gBAC9CnC,MAAI;MAAA,IACHqE,OAAI;AAAA,cAAGJ,OAA+BU;;MAAQ,IAC9CC,WAAQ;AAAA,cAAAzC,gBACL/B,aAAW;QAAA,IACVyD,YAAS;AAAA,gBAAEhE,IAAI,UACboE,OAAO7B,KAAKmC,SAAS,IAAI,GACrB,KAAKN,OAAO7B,KAAI,MAChB,IAAIb,UAAU0C,OAAO7B,KAAK,GAAE,0BAEhC6B,OAAO7B,KAAKmC,SAAS,IAAI,GACrB,KAAKN,OAAO7B,KAAI,MAChB,IAAIb,UAAU0C,OAAO7B,KAAK,GAAE;;QAC/B,IAAAY,WAAA;AAAA,gBACFnD,IAAI,4DACHoE,OAAO7B,KAAI;;QACE,CAAA;;MAAA,IAAAY,WAAA;AAAA,cAAAb,gBAGlB/B,aAAW;QAAA,IACVyD,YAAS;AAAA,gBAAEhE,IAAI,UACboE,OAAO7B,KAAKmC,SAAS,IAAI,GACrB,KAAKN,OAAO7B,KAAI,MAChB,IAAIb,UAAU0C,OAAO7B,KAAK,GAAE;;QACG,IAAAY,WAAA;AAAA,gBACpCnD,IAAI,2DACHoE,OAAO7B,KAAI;;QACQ,CAAA;;MAAA,CAAA;;IAAA,CAAA,CAAA;GAK9B,CAAA;EAAAM,gBAAA,OAAA,EAAA,CAAA;EAAAA,gBAAA,OAAA,EAAA,CAAA;EAAAP,gBAIFpC,KAAG;GAAA,IAACoE,OAAI;AAAA,WAAEjC,QAAQU;;GAAWwB,gBAAc;GAAApB,WACzCF,aAAQ,CAAAX,gBAEJnC,MAAI;IAAA,IAACqE,OAAI;AAAA,YAAE,CAACvB,SAASwB;;IAAQ,IAAAtB,WAAA;AAAA,YAAA,CAAAb,gBAC3B/B,aAAW;MAAA,IAACyD,YAAS;AAAA,cAAEhE,IAAI,IAAI0B,UAAUuB,SAASV,KAAK;;MAAE,IAAAY,WAAA;AAAA,cACvDnD,IAAI,sCACHiD,SAASV,KAAI;;MACa,CAAA,EAAAD,gBAE7BnC,MAAI;MAAA,IACHqE,OAAI;AAAA,eACDvB,SAAS0B,SAASlE,eAAemE,UAChC3B,SAAS0B,SAASlE,eAAeoE,WACnC5B,SAAS6B;;MAAQ,IAAA3B,WAAA;AAAA,cAAAb,gBAElBjC,cAAY;QAAA,IACX2D,YAAS;AAAA,gBAAEhE,IAAI,GAAG0B,UAAUuB,SAASV,KAAK,CAAA;;QAAe,IAAAY,WAAA;AAAA,gBACxDnD,IAAI,6DACHiD,SAASV,KAAI;;QACmB,CAAA;;MAAA,CAAA,CAAA;;IAAA,CAAA,EAAAD,gBAIvCnC,MAAI;IAAA,IAACqE,OAAI;AAAA,YAAEvB,SAAS0B,SAASlE,eAAeoE;;IAAM,IAAA1B,WAAA;AAAA,YAAAb,gBAChDnC,MAAI;MAAA,IACHqE,OAAI;AAAA,cAAGvB,SAAmC6B;;MAAQ,IAClDC,WAAQ;AAAA,cAAAzC,gBACL/B,aAAW;QAAA,IACVyD,YAAS;AAAA,gBAAEhE,IAAI,GAAG0B,UAChBuB,SAASV,KACV,CAAA,mBAAoBb,UAAUuB,SAASV,KAAK,CAAA;;QAAG,IAAAY,WAAA;AAAA,gBAC/CnD,IAAI,4DACHiD,SAASV,KAAI;;QACa,CAAA;;MAAA,IAAAY,WAAA;AAAA,cAAAb,gBAG/B/B,aAAW;QAAA,IACVyD,YAAS;AAAA,gBAAEhE,IAAI,GAAG0B,UAAUuB,SAASV,KAAK,CAAA;;QAAqC,IAAAY,WAAA;AAAA,gBAC9EnD,IAAI,2DACHiD,SAASV,KAAI;;QACmB,CAAA;;MAAA,CAAA;;IAAA,CAAA,CAAA;GAK3C,CAAA;EAAAD,gBAEF/B,aAAW;GAACyD,WAAWhE,IAAI;GAAqBmD,UAC9CnD,IAAI;;GACiB,CAAA;EAAA;;;;;AAgB9B,SAAgBgF,aAAa5C,OAA0B;CACrD,MAAM,EAAEC,SAAS4C,SAASC,gBAAgB,GAAGC,SAAS/C;CAEtD,MAAMgB,UAAUzC,eAAoC;CACpD,MAAMyE,WAAWnF,eACfuB,UACEa,QAAQI,SACL4C,QAAO1C,YAAW,CAACtB,qBAAqBsB,QAAQ,CAAC,CACjDC,KAAK,IAAI,EACZ,WAEJ,CAAC;CACD,MAAM0C,oBAAoBrF,eACxBwB,iBACEF,aACEC,UAAU4B,QAAQmC,WAAWjE,aAAa8D,SAASI,MAAM,CAAC,EAC1DnD,QAAQoD,MAAMC,OAAOC,QAAQtD,QAAQoD,MAAME,KAE/C,CACF,CAAC;CACD,MAAMC,iBAAiB3F,gBAAgB;EACrC,GAAGoC,QAAQoD;EACXI,QAAQxD,QAAQyD;EACjB,EAAE;AAEH,QAAA,CAAAxD,gBAEK1B,WAASmF,WACJZ,MAAI;EAAA,IACRa,OAAI;AAAA,UAAEZ,SAASI;;EAAK,IACpBI,iBAAc;AAAA,UAAEA,eAAeJ;;EAAK,IACpCP,UAAO;AAAA,UAAEnD,KAAKmD,WAAW,EAAE,EAAE,GAC1BK,kBAAkBE,QAAQ,SAAS3D,WAAWQ,QAAQE,KAAK,IAC7D,CAAC;;EAAA,IACF2C,iBAAc;AAAA,UAAEpD,KAAKoD,kBAAkB,EAAE,EAAE;IACzCe,KAAK;KAAC;KAAO;KAAQ;KAAiB;KAAU;IAChDC,SAAS;KACP;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACD;IACDC,OAAO;KACL;KACA;KACA;KACA;KACA;KAA8B;IAEjC,CAAC;;EAAA,IAAAhD,WAAA;AAAA,UAAA;IAAAb,gBACDP,2BAAyB,EAAUM,SAAO,CAAA;IAAAQ,gBAAA,OAAA,EAAA,CAAA;IAAAA,gBAAA,OAAA,EAAA,CAAA;IAAAP,gBAG1CpB,6BAA2B,EAAUmB,SAAO,CAAA;IAAAQ,gBAAA,OAAA,EAAA,CAAA;IAAAA,gBAAA,OAAA,EAAA,CAAA;IAAAP,gBAG5C5B,mBAAiB,EAAAyC,UAAEnD,IAAI,2CAAyC,CAAA;IAAA6C,gBAAA,OAAA,EAAA,CAAA;IAAAP,gBAEhEY,2BAAyB;KAAUb;KAAO,IAAAc,WAAA;AAAA,aAAAb,gBACxC+B,wBAAsB,EAAUhC,SAAO,CAAA;;KAAA,CAAA;IAAA;;EAAA,CAAA,CAAA,EAAAC,gBAG3CpC,KAAG;EAAA,IAACoE,OAAI;AAAA,UAAEL,OAAOC,OAAO7B,QAAQc,SAAS;;EAAAA,WACvCiD,UAAK9D,gBACHnC,MAAI;GAAA,IACHqE,OAAI;AAAA,WAAE4B,MAAMC;;GAAS,IACrBtB,WAAQ;AAAA,WAAAzC,gBAAG0C,cAAY,EAAC3C,SAAS+D,OAAK,CAAA;;GAAA,IAAAjD,WAAA;AAAA,WAAAb,gBACrCJ,qBAAmB,EAACG,SAAS+D,OAAK,CAAA;;GAAA,CAAA;EAEtC,CAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"command-entry.mjs","names":["code","computed","For","Show","ElseClause","ElseIfClause","FunctionDeclaration","IfStatement","VarDeclaration","ReflectionKind","usePowerlines","EntryFile","TSDoc","TSDocParam","TSDocRemarks","TSDocTitle","CommandParserLogic","OptionsInterfaceDeclaration","getAppBin","getDynamicPathSegmentName","isDynamicPathSegment","findFilePath","relativePath","joinPaths","replaceExtension","camelCase","constantCase","kebabCase","pascalCase","defu","BannerFunctionDeclaration","CommandHelp","IsDebug","VirtualCommandEntry","CommandInvocation","props","command","_$createComponent","name","initializer","segments","map","segment","join","_$createIntrinsic","_$memo","arguments","length","argument","CommandHandlerDeclaration","children","context","heading","title","description","replace","async","parameters","type","default","envPrefix","config","isCaseSensitive","condition","Object","values","options","option","CommandValidationLogic","each","doubleHardline","when","optional","includes","kind","string","number","variadic","fallback","CommandEntry","imports","builtinImports","rest","filePath","filter","commandSourcePath","entryPath","value","entry","input","file","typeDefinition","output","id","_$mergeProps","path","env","console","utils","child","isVirtual"],"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 type { Children } from \"@alloy-js/core\";\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport {\n ElseClause,\n ElseIfClause,\n FunctionDeclaration,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\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 CommandParserLogic,\n OptionsInterfaceDeclaration\n} from \"@shell-shock/core/components/options-parser-logic\";\nimport {\n getAppBin,\n getDynamicPathSegmentName,\n isDynamicPathSegment\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type {\n CommandTree,\n NumberCommandArgument,\n NumberCommandOption\n} 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 { kebabCase } from \"@stryke/string-format/kebab-case\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport defu from \"defu\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\nimport { BannerFunctionDeclaration } from \"./banner-function-declaration\";\nimport { CommandHelp } from \"./help\";\nimport { IsDebug } from \"./helpers\";\nimport { VirtualCommandEntry } from \"./virtual-command-entry\";\n\nexport function CommandInvocation(props: { command: CommandTree }) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration\n name=\"__context\"\n initializer={code`{ path: \\`${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `\\${${camelCase(getDynamicPathSegmentName(segment))}}`\n : segment\n )\n .join(\"/\")}\\`, segments: [${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? camelCase(getDynamicPathSegmentName(segment))\n : `\"${segment}\"`\n )\n .join(\", \")}] }`}\n />\n <hbr />\n <hbr />\n {code`\n\n return internal_commandContext.run(__context, () => {\n return Promise.resolve(Reflect.apply(handle${pascalCase(\n command.name\n )}, __context, [options${\n command.arguments.length > 0\n ? `, ${command.arguments\n .map(argument => camelCase(argument.name))\n .join(\", \")}`\n : \"\"\n }]));\n });\n\n `}\n <hbr />\n </>\n );\n}\n\nexport interface CommandHandlerDeclarationProps {\n command: CommandTree;\n children?: Children;\n}\n\n/**\n * A component that generates the `handler` function declaration for a command.\n */\nexport function CommandHandlerDeclaration(\n props: CommandHandlerDeclarationProps\n) {\n const { command, children } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n\n return (\n <>\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <TSDoc\n heading={`The ${command.title} (${getAppBin(context)} ${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `[${constantCase(getDynamicPathSegmentName(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: \"useArgs()\" }]}>\n <CommandParserLogic\n command={command}\n envPrefix={context.config.envPrefix}\n isCaseSensitive={context.config.isCaseSensitive}\n />\n <hbr />\n <hbr />\n {code`writeLine(\"\");\n banner(); `}\n <hbr />\n <hbr />\n <IfStatement condition={<IsDebug />}>\n {code`\n writeLine(colors.text.body.tertiary(\"Debug mode is enabled. Additional debug information may be logged to the console.\"));\n\n writeLine(\"\");\n debug(\\`Command path: ${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `\\${${camelCase(getDynamicPathSegmentName(segment))}}`\n : segment\n )\n .join(\" / \")} \\\\n\\\\nOptions: \\\\n${Object.values(command.options)\n .map(\n option =>\n ` - ${kebabCase(option.name)}: \\${options.${camelCase(\n option.name\n )} === undefined ? \"\" : JSON.stringify(options.${camelCase(\n option.name\n )})}`\n )\n .join(\"\\\\n\")}${\n command.arguments.length > 0\n ? ` \\\\n\\\\nArguments: \\\\n${command.arguments\n .map(\n argument =>\n ` - ${kebabCase(argument.name)}: \\${${camelCase(\n argument.name\n )} === undefined ? \"\" : JSON.stringify(${camelCase(\n argument.name\n )})}`\n )\n .join(\"\\\\n\")}`\n : \"\"\n }\\`);\n writeLine(\"\"); `}\n </IfStatement>\n <hbr />\n <hbr />\n {children}\n <hbr />\n <hbr />\n <IfStatement condition={code`options.help`}>\n <CommandHelp command={command} />\n </IfStatement>\n <ElseClause>\n <hbr />\n <CommandInvocation command={command} />\n </ElseClause>\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface CommandValidationLogicProps {\n command: CommandTree;\n}\n\n/**\n * A component that generates command validation logic for required options and arguments.\n */\nexport function CommandValidationLogic(props: CommandValidationLogicProps) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration name=\"failures\" type=\"string[]\" initializer={code`[];`} />\n <hbr />\n <For each={Object.values(command.options ?? {})} doubleHardline>\n {option => (\n <>\n <Show when={!option.optional}>\n <IfStatement\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }`}>\n {code`failures.push(\"Missing required \\\\\"${option.name}\\\\\" option\");`}\n </IfStatement>\n <Show\n when={\n (option.kind === ReflectionKind.string ||\n option.kind === ReflectionKind.number) &&\n option.variadic\n }>\n <ElseIfClause\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.length === 0`}>\n {code`failures.push(\"No values were provided to the required \\\\\"${\n option.name\n }\\\\\" array option\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <Show\n when={(option as NumberCommandOption).variadic}\n fallback={\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n } && Number.isNaN(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\"Invalid numeric value provided for the \\\\\"${\n option.name\n }\\\\\" option\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the \\\\\"${\n option.name\n }\\\\\" array option\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n <hbr />\n <hbr />\n <For each={command.arguments} doubleHardline>\n {argument => (\n <>\n <Show when={!argument.optional}>\n <IfStatement condition={code`!${camelCase(argument.name)}`}>\n {code`failures.push(\"Missing required \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n <Show\n when={\n (argument.kind === ReflectionKind.string ||\n argument.kind === ReflectionKind.number) &&\n argument.variadic\n }>\n <ElseIfClause\n condition={code`${camelCase(argument.name)}.length === 0`}>\n {code`failures.push(\"No values were provided to the required \\\\\"${\n argument.name\n }\\\\\" array positional argument\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={argument.kind === ReflectionKind.number}>\n <Show\n when={(argument as NumberCommandArgument).variadic}\n fallback={\n <IfStatement\n condition={code`${camelCase(\n argument.name\n )} && Number.isNaN(${camelCase(argument.name)})`}>\n {code`failures.push(\"Invalid numeric value provided for the \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`${camelCase(argument.name)}.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the \\\\\"${\n argument.name\n }\\\\\" array positional argument\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n <IfStatement condition={code`failures.length > 0`}>\n {code`error(\"The following validation failures were found while processing the user provided input, and must be corrected before the command line process can be executed: \\\\n\\\\n\" + failures.map(failure => \" - \" + failure).join(\"\\\\n\"));\n options.help = true; `}\n </IfStatement>\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.segments\n .filter(segment => !isDynamicPathSegment(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\", \"isDevelopment\", \"isDebug\"],\n console: [\n \"debug\",\n \"warn\",\n \"error\",\n \"table\",\n \"colors\",\n \"stripAnsi\",\n \"writeLine\",\n \"splitText\"\n ],\n utils: [\n \"useArgs\",\n \"hasFlag\",\n \"isMinimal\",\n \"isUnicodeSupported\",\n \"internal_commandContext\"\n ]\n })}>\n <BannerFunctionDeclaration command={command} />\n <hbr />\n <hbr />\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <CommandHandlerDeclaration command={command}>\n <CommandValidationLogic command={command} />\n </CommandHandlerDeclaration>\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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"}
|
|
@@ -37,7 +37,6 @@ function CommandRouterRoute() {
|
|
|
37
37
|
*/
|
|
38
38
|
function CommandRouter(props) {
|
|
39
39
|
const { segments, commands, route } = props;
|
|
40
|
-
const context = (0, __powerlines_plugin_alloy_core_contexts_context.usePowerlines)();
|
|
41
40
|
const index = (0, __alloy_js_core.computed)(() => 2 + (segments.length ?? 0));
|
|
42
41
|
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
43
42
|
get when() {
|
|
@@ -52,84 +51,114 @@ function CommandRouter(props) {
|
|
|
52
51
|
initializer: __alloy_js_core.code`"";`
|
|
53
52
|
}),
|
|
54
53
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
55
|
-
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
56
|
-
get condition() {
|
|
57
|
-
return __alloy_js_core.code`args.length > ${index.value} && args[${index.value}]`;
|
|
58
|
-
},
|
|
59
|
-
get children() {
|
|
60
|
-
return __alloy_js_core.code`command = args[${index.value}];`;
|
|
61
|
-
}
|
|
62
|
-
}),
|
|
63
54
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
64
|
-
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.
|
|
65
|
-
get
|
|
66
|
-
return Object.
|
|
55
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
56
|
+
get when() {
|
|
57
|
+
return commands && Object.keys(commands).length > 0;
|
|
67
58
|
},
|
|
68
|
-
children
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
return Boolean(idx);
|
|
74
|
-
},
|
|
75
|
-
get fallback() {
|
|
76
|
-
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
77
|
-
get condition() {
|
|
78
|
-
return __alloy_js_core.code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${context.config.isCaseSensitive ? subcommand.name : subcommand.name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}"${subcommand.alias && subcommand.alias.length > 0 ? ` || ${subcommand.alias.map((alias) => `${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${context.config.isCaseSensitive ? alias : alias.toLowerCase().replaceAll("-", "").replaceAll("_", "")}"`).join(" || ")}` : ""}`;
|
|
79
|
-
},
|
|
80
|
-
get children() {
|
|
81
|
-
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
82
|
-
get when() {
|
|
83
|
-
return Boolean(route);
|
|
84
|
-
},
|
|
85
|
-
get fallback() {
|
|
86
|
-
return (0, __alloy_js_core_jsx_runtime.createComponent)(CommandRouterRoute, {});
|
|
87
|
-
},
|
|
88
|
-
children: route
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
});
|
|
59
|
+
get children() {
|
|
60
|
+
return [
|
|
61
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
62
|
+
get condition() {
|
|
63
|
+
return __alloy_js_core.code`args.length > ${index.value} && args[${index.value}]`;
|
|
92
64
|
},
|
|
93
65
|
get children() {
|
|
94
|
-
return
|
|
95
|
-
get condition() {
|
|
96
|
-
return __alloy_js_core.code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${context.config.isCaseSensitive ? subcommand.name : subcommand.name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}"${subcommand.alias && subcommand.alias.length > 0 ? ` || ${subcommand.alias.map((alias) => `${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${context.config.isCaseSensitive ? alias : alias.toLowerCase().replaceAll("-", "").replaceAll("_", "")}"`).join(" || ")}` : ""}`;
|
|
97
|
-
},
|
|
98
|
-
get children() {
|
|
99
|
-
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
100
|
-
get when() {
|
|
101
|
-
return Boolean(route);
|
|
102
|
-
},
|
|
103
|
-
get fallback() {
|
|
104
|
-
return (0, __alloy_js_core_jsx_runtime.createComponent)(CommandRouterRoute, {});
|
|
105
|
-
},
|
|
106
|
-
children: route
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
});
|
|
66
|
+
return __alloy_js_core.code`command = args[${index.value}];`;
|
|
110
67
|
}
|
|
111
|
-
})
|
|
112
|
-
|
|
113
|
-
|
|
68
|
+
}),
|
|
69
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
70
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
71
|
+
];
|
|
72
|
+
}
|
|
114
73
|
}),
|
|
115
|
-
(0, __alloy_js_core_jsx_runtime.createComponent)(
|
|
116
|
-
|
|
74
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(CommandRouterBody, {
|
|
75
|
+
segments,
|
|
76
|
+
commands,
|
|
77
|
+
route
|
|
78
|
+
})
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The internal command router body logic component.
|
|
85
|
+
*/
|
|
86
|
+
function CommandRouterBody(props) {
|
|
87
|
+
const { commands, route } = props;
|
|
88
|
+
const context = (0, __powerlines_plugin_alloy_core_contexts_context.usePowerlines)();
|
|
89
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
90
|
+
get when() {
|
|
91
|
+
return commands && Object.keys(commands).length > 0;
|
|
92
|
+
},
|
|
93
|
+
get children() {
|
|
94
|
+
return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.For, {
|
|
95
|
+
get each() {
|
|
96
|
+
return Object.values(commands ?? {});
|
|
97
|
+
},
|
|
98
|
+
children: (subcommand, idx) => (0, __alloy_js_core_jsx_runtime.createComponent)(__shell_shock_core_contexts_command.CommandContext.Provider, {
|
|
99
|
+
value: subcommand,
|
|
117
100
|
get children() {
|
|
118
|
-
return
|
|
101
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
102
|
+
get when() {
|
|
103
|
+
return Boolean(idx);
|
|
104
|
+
},
|
|
105
|
+
get fallback() {
|
|
106
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
107
|
+
get condition() {
|
|
108
|
+
return __alloy_js_core.code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${context.config.isCaseSensitive ? subcommand.name : subcommand.name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}"${subcommand.alias && subcommand.alias.length > 0 ? ` || ${subcommand.alias.map((alias) => `${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${context.config.isCaseSensitive ? alias : alias.toLowerCase().replaceAll("-", "").replaceAll("_", "")}"`).join(" || ")}` : ""}`;
|
|
109
|
+
},
|
|
110
|
+
get children() {
|
|
111
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
112
|
+
get when() {
|
|
113
|
+
return Boolean(route);
|
|
114
|
+
},
|
|
115
|
+
get fallback() {
|
|
116
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(CommandRouterRoute, {});
|
|
117
|
+
},
|
|
118
|
+
children: route
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
},
|
|
123
|
+
get children() {
|
|
124
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.ElseIfClause, {
|
|
125
|
+
get condition() {
|
|
126
|
+
return __alloy_js_core.code`${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${context.config.isCaseSensitive ? subcommand.name : subcommand.name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}"${subcommand.alias && subcommand.alias.length > 0 ? ` || ${subcommand.alias.map((alias) => `${context.config.isCaseSensitive ? "command" : "command.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${context.config.isCaseSensitive ? alias : alias.toLowerCase().replaceAll("-", "").replaceAll("_", "")}"`).join(" || ")}` : ""}`;
|
|
127
|
+
},
|
|
128
|
+
get children() {
|
|
129
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
130
|
+
get when() {
|
|
131
|
+
return Boolean(route);
|
|
132
|
+
},
|
|
133
|
+
get fallback() {
|
|
134
|
+
return (0, __alloy_js_core_jsx_runtime.createComponent)(CommandRouterRoute, {});
|
|
135
|
+
},
|
|
136
|
+
children: route
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
})
|
|
144
|
+
}), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.ElseIfClause, {
|
|
145
|
+
condition: __alloy_js_core.code`Boolean(command) && !command.startsWith("-")`,
|
|
146
|
+
get children() {
|
|
147
|
+
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(", ")}], {
|
|
119
148
|
caseSensitive: ${JSON.stringify(context.config.isCaseSensitive)},
|
|
120
149
|
returnType: ReturnTypeEnums.ALL_CLOSEST_MATCHES,
|
|
121
150
|
thresholdType: ThresholdTypeEnums.SIMILARITY,
|
|
122
|
-
threshold: 0.
|
|
151
|
+
threshold: 0.25
|
|
123
152
|
});
|
|
124
153
|
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}"\`)}?\` : ""} \`);`;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
];
|
|
154
|
+
}
|
|
155
|
+
})];
|
|
128
156
|
}
|
|
129
157
|
});
|
|
130
158
|
}
|
|
131
159
|
|
|
132
160
|
//#endregion
|
|
133
161
|
exports.CommandRouter = CommandRouter;
|
|
162
|
+
exports.CommandRouterBody = CommandRouterBody;
|
|
134
163
|
exports.CommandRouterRoute = CommandRouterRoute;
|
|
135
164
|
//# sourceMappingURL=command-router.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-router.cjs","names":["code","computed","For","Show","ElseIfClause","IfStatement","VarDeclaration","usePowerlines","DynamicImportStatement","CommandContext","useCommand","isDynamicPathSegment","pascalCase","CommandRouterRoute","command","_$createComponent","when","isVirtual","children","name","importPath","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 { isDynamicPathSegment } 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.segments.filter(segment => !isDynamicPathSegment(segment))[\n command.segments.filter(segment => !isDynamicPathSegment(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 segments: 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 { segments, commands, route } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const index = computed(() => 2 + (segments.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(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? subcommand.name\n : subcommand.name\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\n }\"${\n subcommand.alias && subcommand.alias.length > 0\n ? ` || ${subcommand.alias\n .map(\n alias =>\n `${context.config.isCaseSensitive ? \"command\" : 'command.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'} === \"${\n context.config.isCaseSensitive\n ? alias\n : alias\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\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(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? subcommand.name\n : subcommand.name\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\n }\"${\n subcommand.alias && subcommand.alias.length > 0\n ? ` || ${subcommand.alias\n .map(\n alias =>\n `${context.config.isCaseSensitive ? \"command\" : 'command.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'} === \"${\n context.config.isCaseSensitive\n ? alias\n : alias\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\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
|
+
{"version":3,"file":"command-router.cjs","names":["code","computed","For","Show","ElseIfClause","IfStatement","VarDeclaration","usePowerlines","DynamicImportStatement","CommandContext","useCommand","isDynamicPathSegment","pascalCase","CommandRouterRoute","command","_$createComponent","when","isVirtual","children","name","importPath","segments","filter","segment","length","exportName","_$createIntrinsic","_$memo","CommandRouter","props","commands","route","index","Object","keys","type","initializer","condition","value","CommandRouterBody","context","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 { isDynamicPathSegment } 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.segments.filter(segment => !isDynamicPathSegment(segment))[\n command.segments.filter(segment => !isDynamicPathSegment(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 segments: 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 { segments, commands, route } = props;\n\n const index = computed(() => 2 + (segments.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 <hbr />\n <Show when={commands && Object.keys(commands).length > 0}>\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 <hbr />\n </Show>\n <CommandRouterBody\n segments={segments}\n commands={commands}\n route={route}\n />\n </Show>\n );\n}\n\n/**\n * The internal command router body logic component.\n */\nexport function CommandRouterBody(props: CommandRouterProps) {\n const { commands, route } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n\n return (\n <Show when={commands && Object.keys(commands).length > 0}>\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(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? subcommand.name\n : subcommand.name\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\n }\"${\n subcommand.alias && subcommand.alias.length > 0\n ? ` || ${subcommand.alias\n .map(\n alias =>\n `${context.config.isCaseSensitive ? \"command\" : 'command.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'} === \"${\n context.config.isCaseSensitive\n ? alias\n : alias\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\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(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n context.config.isCaseSensitive\n ? subcommand.name\n : subcommand.name\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\n }\"${\n subcommand.alias && subcommand.alias.length > 0\n ? ` || ${subcommand.alias\n .map(\n alias =>\n `${context.config.isCaseSensitive ? \"command\" : 'command.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'} === \"${\n context.config.isCaseSensitive\n ? alias\n : alias\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\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) && !command.startsWith(\"-\")`}>{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.25\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":";;;;;;;;;;;AAiCA,SAAgBa,qBAAqB;CACnC,MAAMC,+DAAsB;AAE5B,QAAA;mDAEKX,sBAAI;GAAA,IAACa,OAAI;AAAA,WAAE,CAACF,QAAQG;;GAAS,IAAAC,WAAA;AAAA,4DAC3BV,iGAAsB;KAAA,IACrBW,OAAI;AAAA,aAAE,4DAAoBL,QAAQK,KAAK;;KAAE,IACzCC,aAAU;AAAA,aAAE,KACVN,QAAQO,SAASC,QAAOC,YAAW,2EAAsBA,QAAQ,CAAC,CAChET,QAAQO,SAASC,QAAOC,YAAW,2EAAsBA,QAAQ,CAAC,CAC/DC,SAAS;;KAGhBC,YAAU;KAAA,CAAA;;GAAA,CAAA;mDAAA,OAAA,EAAA,CAAA;8CAIbzB,oBAAI,mEAA2Bc,QAAQK,KAAK,CAAA,SAAS;EAAA;;;;;AAc5D,SAAgBS,cAAcC,OAA2B;CACvD,MAAM,EAAER,UAAUS,UAAUC,UAAUF;CAEtC,MAAMG,4CAAuB,KAAKX,SAASG,UAAU,GAAG;AAExD,yDACGrB,sBAAI;EAAA,IAACa,OAAI;AAAA,UAAEc,YAAYG,OAAOC,KAAKJ,SAAS,CAACN,SAAS;;EAAC,IAAAN,WAAA;AAAA,UAAA;qDACrDZ,sCAAc;KAAA,OAAA;KAEba,MAAI;KACJgB,MAAI;KACJC,aAAapC,oBAAI;KAAK,CAAA;qDAAA,OAAA,EAAA,CAAA;qDAAA,OAAA,EAAA,CAAA;qDAIvBG,sBAAI;KAAA,IAACa,OAAI;AAAA,aAAEc,YAAYG,OAAOC,KAAKJ,SAAS,CAACN,SAAS;;KAAC,IAAAN,WAAA;AAAA,aAAA;wDACrDb,mCAAW;QAAA,IACVgC,YAAS;AAAA,gBAAErC,oBAAI,iBACbgC,MAAMM,MAAK,WACDN,MAAMM,MAAK;;QAAG,IAAApB,WAAA;AAAA,gBAAGlB,oBAAI,kBACjCgC,MAAMM,MAAK;;QACT,CAAA;wDAAA,OAAA,EAAA,CAAA;wDAAA,OAAA,EAAA,CAAA;OAAA;;KAAA,CAAA;qDAILC,mBAAiB;KACNlB;KACAS;KACHC;KAAK,CAAA;IAAA;;EAAA,CAAA;;;;;AASpB,SAAgBQ,kBAAkBV,OAA2B;CAC3D,MAAM,EAAEC,UAAUC,UAAUF;CAE5B,MAAMW,8EAA8C;AAEpD,yDACGrC,sBAAI;EAAA,IAACa,OAAI;AAAA,UAAEc,YAAYG,OAAOC,KAAKJ,SAAS,CAACN,SAAS;;EAAC,IAAAN,WAAA;AAAA,UAAA,kDACrDhB,qBAAG;IAAA,IAACuC,OAAI;AAAA,YAAER,OAAOS,OAAOZ,YAAY,EAAE,CAAC;;IAAAZ,WACpCyB,YAAYC,yDACXnC,mDAAeoC,UAAQ;KAACP,OAAOK;KAAU,IAAAzB,WAAA;AAAA,8DACvCf,sBAAI;OAAA,IACHa,OAAI;AAAA,eAAE8B,QAAQF,IAAI;;OAAA,IAClBG,WAAQ;AAAA,gEACL1C,mCAAW;SAAA,IACVgC,YAAS;AAAA,iBAAErC,oBAAI,GACbwC,QAAQQ,OAAOC,kBACX,YACA,wEAA+D,QAEnET,QAAQQ,OAAOC,kBACXN,WAAWxB,OACXwB,WAAWxB,KACR+B,aAAa,CACbC,WAAW,KAAK,GAAG,CACnBA,WAAW,KAAK,GAAG,CAAA,GAE1BR,WAAWS,SAAST,WAAWS,MAAM5B,SAAS,IAC1C,OAAOmB,WAAWS,MACfC,KACCD,UACE,GAAGZ,QAAQQ,OAAOC,kBAAkB,YAAY,wEAA+D,QAC7GT,QAAQQ,OAAOC,kBACXG,QACAA,MACGF,aAAa,CACbC,WAAW,KAAK,GAAG,CACnBA,WAAW,KAAK,GAAG,CAAA,GAE/B,CACAG,KAAK,OAAO,KACf;;SACJ,IAAApC,WAAA;AAAA,kEACDf,sBAAI;WAAA,IAACa,OAAI;AAAA,mBAAE8B,QAAQf,MAAM;;WAAA,IAAEgB,WAAQ;AAAA,oEAAGlC,oBAAkB,EAAA,CAAA;;WAAAK,UACtDa;WAAK,CAAA;;SAAA,CAAA;;OAAA,IAAAb,WAAA;AAAA,gEAIXd,oCAAY;SAAA,IACXiC,YAAS;AAAA,iBAAErC,oBAAI,GACbwC,QAAQQ,OAAOC,kBACX,YACA,wEAA+D,QAEnET,QAAQQ,OAAOC,kBACXN,WAAWxB,OACXwB,WAAWxB,KACR+B,aAAa,CACbC,WAAW,KAAK,GAAG,CACnBA,WAAW,KAAK,GAAG,CAAA,GAE1BR,WAAWS,SAAST,WAAWS,MAAM5B,SAAS,IAC1C,OAAOmB,WAAWS,MACfC,KACCD,UACE,GAAGZ,QAAQQ,OAAOC,kBAAkB,YAAY,wEAA+D,QAC7GT,QAAQQ,OAAOC,kBACXG,QACAA,MACGF,aAAa,CACbC,WAAW,KAAK,GAAG,CACnBA,WAAW,KAAK,GAAG,CAAA,GAE/B,CACAG,KAAK,OAAO,KACf;;SACJ,IAAApC,WAAA;AAAA,kEACDf,sBAAI;WAAA,IAACa,OAAI;AAAA,mBAAE8B,QAAQf,MAAM;;WAAA,IAAEgB,WAAQ;AAAA,oEAAGlC,oBAAkB,EAAA,CAAA;;WAAAK,UACtDa;WAAK,CAAA;;SAAA,CAAA;;OAAA,CAAA;;KAAA,CAAA;IAKf,CAAA,mDAEF3B,oCAAY;IACXiC,WAAWrC,oBAAI;IAA8C,IAAAkB,WAAA;AAAA,YAAGlB,oBAAI,4CAA4CiC,OAAOS,OACvHZ,YAAY,EACd,CAAC,CACEuB,KACCE,QACE,IAAIA,IAAIpC,KAAI,IAAKoC,IAAIH,SAAS,EAAE,EAAEC,KAAKD,OAAOI,MAAOA,MAAM,IAAI,MAAMJ,MAAK,KAAM,KAAKA,MAAK,GAAK,CAACE,KAAK,GAAG,GAC3G,CACAA,KAAK,KAAK,CAAA;2BACQG,KAAKC,UAAUlB,QAAQQ,OAAOC,gBAAgB,CAAA;;;;;;;IAK4N,CAAA,CAAA;;EAAA,CAAA"}
|
|
@@ -12,6 +12,10 @@ interface CommandRouterProps {
|
|
|
12
12
|
* The command router component.
|
|
13
13
|
*/
|
|
14
14
|
declare function CommandRouter(props: CommandRouterProps): Children;
|
|
15
|
+
/**
|
|
16
|
+
* The internal command router body logic component.
|
|
17
|
+
*/
|
|
18
|
+
declare function CommandRouterBody(props: CommandRouterProps): Children;
|
|
15
19
|
//#endregion
|
|
16
|
-
export { CommandRouter, CommandRouterProps, CommandRouterRoute };
|
|
20
|
+
export { CommandRouter, CommandRouterBody, CommandRouterProps, CommandRouterRoute };
|
|
17
21
|
//# sourceMappingURL=command-router.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-router.d.cts","names":[],"sources":["../../src/components/command-router.tsx"],"sourcesContent":[],"mappings":";;;;iBAiCgB,kBAAA,CAAA,GAAkB;UAuBjB,kBAAA;EAvBD,QAAA,EAAA,MAAA,EAAA;EAuBC,QAAA,CAAA,EAEJ,MAFI,CAAA,MAAkB,EAEP,WAFO,CAAA;EAEP,KAAA,CAAA,EAClB,QADkB;;;;AAO5B;
|
|
1
|
+
{"version":3,"file":"command-router.d.cts","names":[],"sources":["../../src/components/command-router.tsx"],"sourcesContent":[],"mappings":";;;;iBAiCgB,kBAAA,CAAA,GAAkB;UAuBjB,kBAAA;EAvBD,QAAA,EAAA,MAAA,EAAA;EAuBC,QAAA,CAAA,EAEJ,MAFI,CAAA,MAAkB,EAEP,WAFO,CAAA;EAEP,KAAA,CAAA,EAClB,QADkB;;;;AAO5B;AAqCgB,iBArCA,aAAA,CAqCyB,KAAA,EArCJ,kBAqCsB,CAAA,EArCJ,QAqCI;;;;iBAA3C,iBAAA,QAAyB,qBAAkB"}
|
|
@@ -12,6 +12,10 @@ interface CommandRouterProps {
|
|
|
12
12
|
* The command router component.
|
|
13
13
|
*/
|
|
14
14
|
declare function CommandRouter(props: CommandRouterProps): Children;
|
|
15
|
+
/**
|
|
16
|
+
* The internal command router body logic component.
|
|
17
|
+
*/
|
|
18
|
+
declare function CommandRouterBody(props: CommandRouterProps): Children;
|
|
15
19
|
//#endregion
|
|
16
|
-
export { CommandRouter, CommandRouterProps, CommandRouterRoute };
|
|
20
|
+
export { CommandRouter, CommandRouterBody, CommandRouterProps, CommandRouterRoute };
|
|
17
21
|
//# sourceMappingURL=command-router.d.mts.map
|