@shell-shock/preset-script 0.6.22 → 0.6.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/dist/_virtual/{rolldown_runtime.cjs → _rolldown/runtime.cjs} +1 -1
  2. package/dist/_virtual/_rolldown/runtime.mjs +3 -0
  3. package/dist/components/banner-function-declaration.cjs +28 -27
  4. package/dist/components/banner-function-declaration.cjs.map +1 -1
  5. package/dist/components/banner-function-declaration.d.cts.map +1 -1
  6. package/dist/components/banner-function-declaration.d.mts.map +1 -1
  7. package/dist/components/banner-function-declaration.mjs +2 -2
  8. package/dist/components/banner-function-declaration.mjs.map +1 -1
  9. package/dist/components/bin-entry.cjs +54 -45
  10. package/dist/components/bin-entry.cjs.map +1 -1
  11. package/dist/components/bin-entry.d.cts +0 -1
  12. package/dist/components/bin-entry.d.cts.map +1 -1
  13. package/dist/components/bin-entry.d.mts +0 -1
  14. package/dist/components/bin-entry.d.mts.map +1 -1
  15. package/dist/components/bin-entry.mjs +17 -9
  16. package/dist/components/bin-entry.mjs.map +1 -1
  17. package/dist/components/command-entry.cjs +78 -237
  18. package/dist/components/command-entry.cjs.map +1 -1
  19. package/dist/components/command-entry.d.cts +1 -8
  20. package/dist/components/command-entry.d.cts.map +1 -1
  21. package/dist/components/command-entry.d.mts +2 -9
  22. package/dist/components/command-entry.d.mts.map +1 -1
  23. package/dist/components/command-entry.mjs +26 -185
  24. package/dist/components/command-entry.mjs.map +1 -1
  25. package/dist/components/command-router.cjs +85 -83
  26. package/dist/components/command-router.cjs.map +1 -1
  27. package/dist/components/command-router.d.cts.map +1 -1
  28. package/dist/components/command-router.d.mts.map +1 -1
  29. package/dist/components/command-router.mjs +59 -58
  30. package/dist/components/command-router.mjs.map +1 -1
  31. package/dist/components/exit-function-declaration.cjs +38 -37
  32. package/dist/components/exit-function-declaration.cjs.map +1 -1
  33. package/dist/components/exit-function-declaration.d.cts +2 -2
  34. package/dist/components/exit-function-declaration.d.cts.map +1 -1
  35. package/dist/components/exit-function-declaration.d.mts +2 -2
  36. package/dist/components/exit-function-declaration.d.mts.map +1 -1
  37. package/dist/components/exit-function-declaration.mjs +3 -3
  38. package/dist/components/exit-function-declaration.mjs.map +1 -1
  39. package/dist/components/index.cjs +2 -9
  40. package/dist/components/index.d.cts +2 -3
  41. package/dist/components/index.d.mts +2 -3
  42. package/dist/components/index.mjs +2 -3
  43. package/dist/components/virtual-command-entry.cjs +43 -59
  44. package/dist/components/virtual-command-entry.cjs.map +1 -1
  45. package/dist/components/virtual-command-entry.d.cts.map +1 -1
  46. package/dist/components/virtual-command-entry.d.mts.map +1 -1
  47. package/dist/components/virtual-command-entry.mjs +13 -30
  48. package/dist/components/virtual-command-entry.mjs.map +1 -1
  49. package/dist/helpers/get-default-options.cjs +8 -7
  50. package/dist/helpers/get-default-options.cjs.map +1 -1
  51. package/dist/helpers/get-default-options.d.cts +0 -1
  52. package/dist/helpers/get-default-options.d.cts.map +1 -1
  53. package/dist/helpers/get-default-options.d.mts +0 -1
  54. package/dist/helpers/get-default-options.d.mts.map +1 -1
  55. package/dist/helpers/get-default-options.mjs.map +1 -1
  56. package/dist/index.cjs +30 -42
  57. package/dist/index.cjs.map +1 -1
  58. package/dist/index.d.cts +0 -1
  59. package/dist/index.d.cts.map +1 -1
  60. package/dist/index.d.mts +0 -1
  61. package/dist/index.d.mts.map +1 -1
  62. package/dist/index.mjs +8 -20
  63. package/dist/index.mjs.map +1 -1
  64. package/dist/plugin-help/dist/components/display.cjs +260 -0
  65. package/dist/plugin-help/dist/components/display.cjs.map +1 -0
  66. package/dist/{components/help.mjs → plugin-help/dist/components/display.mjs} +30 -34
  67. package/dist/plugin-help/dist/components/display.mjs.map +1 -0
  68. package/dist/plugin-help/dist/components/help-builtin.cjs +86 -0
  69. package/dist/plugin-help/dist/components/help-builtin.cjs.map +1 -0
  70. package/dist/plugin-help/dist/components/help-builtin.mjs +84 -0
  71. package/dist/plugin-help/dist/components/help-builtin.mjs.map +1 -0
  72. package/dist/plugin-help/dist/components/help-command.cjs +97 -0
  73. package/dist/plugin-help/dist/components/help-command.cjs.map +1 -0
  74. package/dist/plugin-help/dist/components/help-command.mjs +96 -0
  75. package/dist/plugin-help/dist/components/help-command.mjs.map +1 -0
  76. package/dist/plugin-help/dist/components/index.cjs +3 -0
  77. package/dist/plugin-help/dist/components/index.mjs +5 -0
  78. package/dist/plugin-help/dist/index.cjs +104 -0
  79. package/dist/plugin-help/dist/index.cjs.map +1 -0
  80. package/dist/plugin-help/dist/index.d.cts +2 -0
  81. package/dist/plugin-help/dist/index.d.mts +2 -0
  82. package/dist/plugin-help/dist/index.mjs +100 -0
  83. package/dist/plugin-help/dist/index.mjs.map +1 -0
  84. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/constant-case.cjs +18 -0
  85. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/constant-case.cjs.map +1 -0
  86. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/constant-case.mjs +17 -0
  87. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/constant-case.mjs.map +1 -0
  88. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/get-words.cjs +39 -0
  89. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/get-words.cjs.map +1 -0
  90. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/get-words.mjs +38 -0
  91. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/get-words.mjs.map +1 -0
  92. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/kebab-case.cjs +34 -0
  93. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/kebab-case.cjs.map +1 -0
  94. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/kebab-case.mjs +34 -0
  95. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/kebab-case.mjs.map +1 -0
  96. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/snake-case.cjs +41 -0
  97. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/snake-case.cjs.map +1 -0
  98. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/snake-case.mjs +41 -0
  99. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/snake-case.mjs.map +1 -0
  100. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/upper-case-first.cjs +18 -0
  101. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/upper-case-first.cjs.map +1 -0
  102. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/upper-case-first.mjs +17 -0
  103. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_string-format@0.17.4/node_modules/@stryke/string-format/dist/upper-case-first.mjs.map +1 -0
  104. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-empty.cjs +21 -0
  105. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-empty.cjs.map +1 -0
  106. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-empty.mjs +21 -0
  107. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-empty.mjs.map +1 -0
  108. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-null.cjs +13 -0
  109. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-null.cjs.map +1 -0
  110. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-null.mjs +12 -0
  111. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-null.mjs.map +1 -0
  112. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set-string.cjs +21 -0
  113. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set-string.cjs.map +1 -0
  114. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set-string.mjs +21 -0
  115. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set-string.mjs.map +1 -0
  116. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set.cjs +20 -0
  117. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set.cjs.map +1 -0
  118. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set.mjs +20 -0
  119. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-set.mjs.map +1 -0
  120. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-string.cjs +13 -0
  121. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-string.cjs.map +1 -0
  122. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-string.mjs +12 -0
  123. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-string.mjs.map +1 -0
  124. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-undefined.cjs +9 -0
  125. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-undefined.cjs.map +1 -0
  126. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-undefined.mjs +8 -0
  127. package/dist/plugin-help/dist/node_modules/.pnpm/@stryke_type-checks@0.5.39/node_modules/@stryke/type-checks/dist/is-undefined.mjs.map +1 -0
  128. package/dist/plugin-help/dist/types/plugin.d.cts +62 -0
  129. package/dist/plugin-help/dist/types/plugin.d.cts.map +1 -0
  130. package/dist/plugin-help/dist/types/plugin.d.mts +62 -0
  131. package/dist/plugin-help/dist/types/plugin.d.mts.map +1 -0
  132. package/dist/types/plugin.d.cts +9 -9
  133. package/dist/types/plugin.d.cts.map +1 -1
  134. package/dist/types/plugin.d.mts +9 -9
  135. package/dist/types/plugin.d.mts.map +1 -1
  136. package/package.json +15 -29
  137. package/dist/components/help.cjs +0 -264
  138. package/dist/components/help.cjs.map +0 -1
  139. package/dist/components/help.d.cts +0 -105
  140. package/dist/components/help.d.cts.map +0 -1
  141. package/dist/components/help.d.mts +0 -105
  142. package/dist/components/help.d.mts.map +0 -1
  143. package/dist/components/help.mjs.map +0 -1
@@ -1,36 +1,37 @@
1
- const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
- let __alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
3
- let __alloy_js_core = require("@alloy-js/core");
4
- let __alloy_js_typescript = require("@alloy-js/typescript");
5
- let __powerlines_plugin_alloy_core_components_spacing = require("@powerlines/plugin-alloy/core/components/spacing");
6
- let __powerlines_plugin_alloy_core_contexts_context = require("@powerlines/plugin-alloy/core/contexts/context");
7
- let __shell_shock_core_plugin_utils = require("@shell-shock/core/plugin-utils");
8
- let __stryke_string_format_pascal_case = require("@stryke/string-format/pascal-case");
9
- let __powerlines_plugin_alloy_typescript_components_dynamic_import_statement = require("@powerlines/plugin-alloy/typescript/components/dynamic-import-statement");
10
- let __shell_shock_core_contexts_command = require("@shell-shock/core/contexts/command");
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
+ let _alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
4
+ let _alloy_js_core = require("@alloy-js/core");
5
+ let _alloy_js_typescript = require("@alloy-js/typescript");
6
+ let _shell_shock_core_plugin_utils = require("@shell-shock/core/plugin-utils");
7
+ let _powerlines_plugin_alloy_core_components_spacing = require("@powerlines/plugin-alloy/core/components/spacing");
8
+ let _powerlines_plugin_alloy_core_contexts_context = require("@powerlines/plugin-alloy/core/contexts/context");
9
+ let _stryke_string_format_pascal_case = require("@stryke/string-format/pascal-case");
10
+ let _powerlines_plugin_alloy_typescript_components_dynamic_import_statement = require("@powerlines/plugin-alloy/typescript/components/dynamic-import-statement");
11
+ let _shell_shock_core_contexts_command = require("@shell-shock/core/contexts/command");
11
12
 
12
13
  //#region src/components/command-router.tsx
13
14
  function CommandRouterRoute() {
14
- const command = (0, __shell_shock_core_contexts_command.useCommand)();
15
+ const command = (0, _shell_shock_core_contexts_command.useCommand)();
15
16
  return [
16
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
17
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
17
18
  get when() {
18
19
  return !command.isVirtual;
19
20
  },
20
21
  get children() {
21
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_typescript_components_dynamic_import_statement.DynamicImportStatement, {
22
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_typescript_components_dynamic_import_statement.DynamicImportStatement, {
22
23
  get name() {
23
- return `handle${(0, __stryke_string_format_pascal_case.pascalCase)(command.name)}`;
24
+ return `handle${(0, _stryke_string_format_pascal_case.pascalCase)(command.name)}`;
24
25
  },
25
26
  get importPath() {
26
- return `./${command.segments.filter((segment) => !(0, __shell_shock_core_plugin_utils.isDynamicPathSegment)(segment))[command.segments.filter((segment) => !(0, __shell_shock_core_plugin_utils.isDynamicPathSegment)(segment)).length - 1]}`;
27
+ return `./${command.segments.filter((segment) => !(0, _shell_shock_core_plugin_utils.isDynamicPathSegment)(segment))[command.segments.filter((segment) => !(0, _shell_shock_core_plugin_utils.isDynamicPathSegment)(segment)).length - 1]}`;
27
28
  },
28
29
  exportName: "handler"
29
30
  });
30
31
  }
31
32
  }),
32
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
33
- (0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code`return handle${(0, __stryke_string_format_pascal_case.pascalCase)(command.name)}(args);`)
33
+ (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
34
+ (0, _alloy_js_core_jsx_runtime.memo)(() => _alloy_js_core.code`return handle${(0, _stryke_string_format_pascal_case.pascalCase)(command.name)}(args);`)
34
35
  ];
35
36
  }
36
37
  /**
@@ -38,40 +39,36 @@ function CommandRouterRoute() {
38
39
  */
39
40
  function CommandRouter(props) {
40
41
  const { segments, commands, route } = props;
41
- const index = (0, __alloy_js_core.computed)(() => 2 + (segments.length ?? 0));
42
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
42
+ const index = (0, _alloy_js_core.computed)(() => 2 + (segments.length ?? 0));
43
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
43
44
  get when() {
44
45
  return commands && Object.keys(commands).length > 0;
45
46
  },
46
47
  get children() {
47
48
  return [
48
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
49
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.VarDeclaration, {
49
50
  "let": true,
50
51
  name: "command",
51
52
  type: "string",
52
- initializer: __alloy_js_core.code`"";`
53
+ initializer: _alloy_js_core.code`"";`
53
54
  }),
54
- (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
55
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
55
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
56
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
56
57
  get when() {
57
58
  return commands && Object.keys(commands).length > 0;
58
59
  },
59
60
  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}]`;
64
- },
65
- get children() {
66
- return __alloy_js_core.code`command = args[${index.value}];`;
67
- }
68
- }),
69
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
70
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
71
- ];
61
+ return [(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}]`;
64
+ },
65
+ get children() {
66
+ return _alloy_js_core.code`command = args[${index.value}];`;
67
+ }
68
+ }), (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {})];
72
69
  }
73
70
  }),
74
- (0, __alloy_js_core_jsx_runtime.createComponent)(CommandRouterBody, {
71
+ (0, _alloy_js_core_jsx_runtime.createComponent)(CommandRouterBody, {
75
72
  segments,
76
73
  commands,
77
74
  route
@@ -85,69 +82,74 @@ function CommandRouter(props) {
85
82
  */
86
83
  function CommandRouterBody(props) {
87
84
  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, {
85
+ const context = (0, _powerlines_plugin_alloy_core_contexts_context.usePowerlines)();
86
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
90
87
  get when() {
91
88
  return commands && Object.keys(commands).length > 0;
92
89
  },
93
90
  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,
100
- get children() {
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(" || ")}` : ""}`;
91
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.IfStatement, {
92
+ condition: _alloy_js_core.code`!command.startsWith("-")`,
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,
100
+ get children() {
101
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
102
+ get when() {
103
+ return Boolean(idx);
109
104
  },
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, {});
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(" || ")}` : ""}`;
117
109
  },
118
- children: route
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
+ }
119
121
  });
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
122
  },
128
123
  get children() {
129
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
130
- get when() {
131
- return Boolean(route);
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(" || ")}` : ""}`;
132
127
  },
133
- get fallback() {
134
- return (0, __alloy_js_core_jsx_runtime.createComponent)(CommandRouterRoute, {});
135
- },
136
- children: route
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
+ }
137
139
  });
138
140
  }
139
141
  });
140
142
  }
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 = findSuggestions(command, [${Object.values(commands ?? {}).map((cmd) => `"${cmd.name}"${(cmd.alias ?? []).map((alias) => `, "${alias}"`).join("")}`).join(", ")}]).slice(0, 3);
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 = findSuggestions(command, [${Object.values(commands ?? {}).map((cmd) => `"${cmd.name}"${(cmd.alias ?? []).map((alias) => `, "${alias}"`).join("")}`).join(", ")}]).slice(0, 3);
148
148
  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}"\`)}?\` : ""} \`);`;
149
+ }
150
+ })];
149
151
  }
150
- })];
152
+ });
151
153
  }
152
154
  });
153
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command-router.cjs","names":["code","computed","For","Show","ElseIfClause","IfStatement","VarDeclaration","Spacing","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"],"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 { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\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\";\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 <Spacing />\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 = findSuggestions(command, [${Object.values(\n commands ?? {}\n )\n .map(\n cmd =>\n `\"${cmd.name}\"${(cmd.alias ?? []).map(alias => `, \"${alias}\"`).join(\"\")}`\n )\n .join(\", \")}]).slice(0, 3);\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":[],"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 { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\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\";\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 <Spacing />\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 <Spacing />\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 <IfStatement condition={code`!command.startsWith(\"-\")`}>\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\n when={Boolean(route)}\n 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 = findSuggestions(command, [${Object.values(\n commands ?? {}\n )\n .map(\n cmd =>\n `\"${cmd.name}\"${(cmd.alias ?? []).map(alias => `, \"${alias}\"`).join(\"\")}`\n )\n .join(\", \")}]).slice(0, 3);\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 </IfStatement>\n </Show>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"command-router.d.cts","names":[],"sources":["../../src/components/command-router.tsx"],"sourcesContent":[],"mappings":";;;;iBAkCgB,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;AAoCgB,iBApCA,aAAA,CAoCyB,KAAA,EApCJ,kBAoCsB,CAAA,EApCJ,QAoCI;;;;iBAA3C,iBAAA,QAAyB,qBAAkB"}
1
+ {"version":3,"file":"command-router.d.cts","names":[],"sources":["../../src/components/command-router.tsx"],"mappings":";;;;iBAkCgB,kBAAA,CAAA,GAAkB,QAAA;AAAA,UAuBjB,kBAAA;EACf,QAAA;EACA,QAAA,GAAW,MAAA,SAAe,WAAA;EAC1B,KAAA,GAAQ,QAAA;AAAA;;AAHV;;iBASgB,aAAA,CAAc,KAAA,EAAO,kBAAA,GAAkB,QAAA;;;;iBAmCvC,iBAAA,CAAkB,KAAA,EAAO,kBAAA,GAAkB,QAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"command-router.d.mts","names":[],"sources":["../../src/components/command-router.tsx"],"sourcesContent":[],"mappings":";;;;iBAkCgB,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;AAoCgB,iBApCA,aAAA,CAoCyB,KAAA,EApCJ,kBAoCsB,CAAA,EApCJ,QAoCI;;;;iBAA3C,iBAAA,QAAyB,qBAAkB"}
1
+ {"version":3,"file":"command-router.d.mts","names":[],"sources":["../../src/components/command-router.tsx"],"mappings":";;;;iBAkCgB,kBAAA,CAAA,GAAkB,QAAA;AAAA,UAuBjB,kBAAA;EACf,QAAA;EACA,QAAA,GAAW,MAAA,SAAe,WAAA;EAC1B,KAAA,GAAQ,QAAA;AAAA;;AAHV;;iBASgB,aAAA,CAAc,KAAA,EAAO,kBAAA,GAAkB,QAAA;;;;iBAmCvC,iBAAA,CAAkB,KAAA,EAAO,kBAAA,GAAkB,QAAA"}
@@ -1,9 +1,9 @@
1
1
  import { createComponent, createIntrinsic, memo } from "@alloy-js/core/jsx-runtime";
2
2
  import { For, Show, code, computed } from "@alloy-js/core";
3
3
  import { ElseIfClause, IfStatement, VarDeclaration } from "@alloy-js/typescript";
4
+ import { isDynamicPathSegment } from "@shell-shock/core/plugin-utils";
4
5
  import { Spacing } from "@powerlines/plugin-alloy/core/components/spacing";
5
6
  import { usePowerlines } from "@powerlines/plugin-alloy/core/contexts/context";
6
- import { isDynamicPathSegment } from "@shell-shock/core/plugin-utils";
7
7
  import { pascalCase } from "@stryke/string-format/pascal-case";
8
8
  import { DynamicImportStatement } from "@powerlines/plugin-alloy/typescript/components/dynamic-import-statement";
9
9
  import { CommandContext, useCommand } from "@shell-shock/core/contexts/command";
@@ -56,18 +56,14 @@ function CommandRouter(props) {
56
56
  return commands && Object.keys(commands).length > 0;
57
57
  },
58
58
  get children() {
59
- return [
60
- createComponent(IfStatement, {
61
- get condition() {
62
- return code`args.length > ${index.value} && args[${index.value}]`;
63
- },
64
- get children() {
65
- return code`command = args[${index.value}];`;
66
- }
67
- }),
68
- createIntrinsic("hbr", {}),
69
- createIntrinsic("hbr", {})
70
- ];
59
+ return [createComponent(IfStatement, {
60
+ get condition() {
61
+ return code`args.length > ${index.value} && args[${index.value}]`;
62
+ },
63
+ get children() {
64
+ return code`command = args[${index.value}];`;
65
+ }
66
+ }), createComponent(Spacing, {})];
71
67
  }
72
68
  }),
73
69
  createComponent(CommandRouterBody, {
@@ -90,63 +86,68 @@ function CommandRouterBody(props) {
90
86
  return commands && Object.keys(commands).length > 0;
91
87
  },
92
88
  get children() {
93
- return [createComponent(For, {
94
- get each() {
95
- return Object.values(commands ?? {});
96
- },
97
- children: (subcommand, idx) => createComponent(CommandContext.Provider, {
98
- value: subcommand,
99
- get children() {
100
- return createComponent(Show, {
101
- get when() {
102
- return Boolean(idx);
103
- },
104
- get fallback() {
105
- return createComponent(IfStatement, {
106
- get condition() {
107
- return 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(" || ")}` : ""}`;
89
+ return createComponent(IfStatement, {
90
+ condition: code`!command.startsWith("-")`,
91
+ get children() {
92
+ return [createComponent(For, {
93
+ get each() {
94
+ return Object.values(commands ?? {});
95
+ },
96
+ children: (subcommand, idx) => createComponent(CommandContext.Provider, {
97
+ value: subcommand,
98
+ get children() {
99
+ return createComponent(Show, {
100
+ get when() {
101
+ return Boolean(idx);
108
102
  },
109
- get children() {
110
- return createComponent(Show, {
111
- get when() {
112
- return Boolean(route);
103
+ get fallback() {
104
+ return createComponent(IfStatement, {
105
+ get condition() {
106
+ return 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(" || ")}` : ""}`;
113
107
  },
114
- get fallback() {
115
- return createComponent(CommandRouterRoute, {});
116
- },
117
- children: route
108
+ get children() {
109
+ return createComponent(Show, {
110
+ get when() {
111
+ return Boolean(route);
112
+ },
113
+ get fallback() {
114
+ return createComponent(CommandRouterRoute, {});
115
+ },
116
+ children: route
117
+ });
118
+ }
118
119
  });
119
- }
120
- });
121
- },
122
- get children() {
123
- return createComponent(ElseIfClause, {
124
- get condition() {
125
- return 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(" || ")}` : ""}`;
126
120
  },
127
121
  get children() {
128
- return createComponent(Show, {
129
- get when() {
130
- return Boolean(route);
122
+ return createComponent(ElseIfClause, {
123
+ get condition() {
124
+ return 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(" || ")}` : ""}`;
131
125
  },
132
- get fallback() {
133
- return createComponent(CommandRouterRoute, {});
134
- },
135
- children: route
126
+ get children() {
127
+ return createComponent(Show, {
128
+ get when() {
129
+ return Boolean(route);
130
+ },
131
+ get fallback() {
132
+ return createComponent(CommandRouterRoute, {});
133
+ },
134
+ children: route
135
+ });
136
+ }
136
137
  });
137
138
  }
138
139
  });
139
140
  }
140
- });
141
- }
142
- })
143
- }), createComponent(ElseIfClause, {
144
- condition: code`Boolean(command) && !command.startsWith("-")`,
145
- get children() {
146
- return code`const suggestions = findSuggestions(command, [${Object.values(commands ?? {}).map((cmd) => `"${cmd.name}"${(cmd.alias ?? []).map((alias) => `, "${alias}"`).join("")}`).join(", ")}]).slice(0, 3);
141
+ })
142
+ }), createComponent(ElseIfClause, {
143
+ condition: code`Boolean(command) && !command.startsWith("-")`,
144
+ get children() {
145
+ return code`const suggestions = findSuggestions(command, [${Object.values(commands ?? {}).map((cmd) => `"${cmd.name}"${(cmd.alias ?? []).map((alias) => `, "${alias}"`).join("")}`).join(", ")}]).slice(0, 3);
147
146
  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}"\`)}?\` : ""} \`);`;
147
+ }
148
+ })];
148
149
  }
149
- })];
150
+ });
150
151
  }
151
152
  });
152
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command-router.mjs","names":["code","computed","For","Show","ElseIfClause","IfStatement","VarDeclaration","Spacing","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"],"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 { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\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\";\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 <Spacing />\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 = findSuggestions(command, [${Object.values(\n commands ?? {}\n )\n .map(\n cmd =>\n `\"${cmd.name}\"${(cmd.alias ?? []).map(alias => `, \"${alias}\"`).join(\"\")}`\n )\n .join(\", \")}]).slice(0, 3);\n error(\\`Unknown command: \"\\${command}\"\\${suggestions && suggestions.length > 0 ? \\`, did you mean: \\${suggestions.length === 1 ? \\`\"\\${suggestions[0]}\"\\` : suggestions.map((suggestion, i) => i < suggestions.length - 1 ? \\`\"\\${suggestion}\", \\` : \\`or \"\\${suggestion}\"\\`)}?\\` : \"\"} \\`);`}</ElseIfClause>\n </Show>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"command-router.mjs","names":[],"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 { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\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\";\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 <Spacing />\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 <Spacing />\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 <IfStatement condition={code`!command.startsWith(\"-\")`}>\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\n when={Boolean(route)}\n 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 = findSuggestions(command, [${Object.values(\n commands ?? {}\n )\n .map(\n cmd =>\n `\"${cmd.name}\"${(cmd.alias ?? []).map(alias => `, \"${alias}\"`).join(\"\")}`\n )\n .join(\", \")}]).slice(0, 3);\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 </IfStatement>\n </Show>\n );\n}\n"],"mappings":"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"}