@shell-shock/core 0.12.2 → 0.13.1

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 (191) 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/api.cjs +3 -2
  4. package/dist/api.cjs.map +1 -1
  5. package/dist/api.d.cts +0 -1
  6. package/dist/api.d.cts.map +1 -1
  7. package/dist/api.d.mts +0 -1
  8. package/dist/api.d.mts.map +1 -1
  9. package/dist/api.mjs +1 -1
  10. package/dist/api.mjs.map +1 -1
  11. package/dist/components/command-validation-logic.cjs +54 -53
  12. package/dist/components/command-validation-logic.cjs.map +1 -1
  13. package/dist/components/command-validation-logic.d.cts +2 -3
  14. package/dist/components/command-validation-logic.d.cts.map +1 -1
  15. package/dist/components/command-validation-logic.d.mts +2 -3
  16. package/dist/components/command-validation-logic.d.mts.map +1 -1
  17. package/dist/components/command-validation-logic.mjs +1 -1
  18. package/dist/components/command-validation-logic.mjs.map +1 -1
  19. package/dist/components/docs.cjs +45 -44
  20. package/dist/components/docs.cjs.map +1 -1
  21. package/dist/components/docs.d.cts +5 -5
  22. package/dist/components/docs.d.cts.map +1 -1
  23. package/dist/components/docs.d.mts +5 -5
  24. package/dist/components/docs.d.mts.map +1 -1
  25. package/dist/components/docs.mjs.map +1 -1
  26. package/dist/components/helpers.cjs +16 -15
  27. package/dist/components/helpers.cjs.map +1 -1
  28. package/dist/components/helpers.d.cts +7 -8
  29. package/dist/components/helpers.d.cts.map +1 -1
  30. package/dist/components/helpers.d.mts +7 -8
  31. package/dist/components/helpers.d.mts.map +1 -1
  32. package/dist/components/helpers.mjs.map +1 -1
  33. package/dist/components/index.cjs +1 -0
  34. package/dist/components/options-parser-logic.cjs +187 -186
  35. package/dist/components/options-parser-logic.cjs.map +1 -1
  36. package/dist/components/options-parser-logic.d.cts +9 -9
  37. package/dist/components/options-parser-logic.d.cts.map +1 -1
  38. package/dist/components/options-parser-logic.d.mts +9 -9
  39. package/dist/components/options-parser-logic.d.mts.map +1 -1
  40. package/dist/components/options-parser-logic.mjs.map +1 -1
  41. package/dist/components/usage.cjs +21 -20
  42. package/dist/components/usage.cjs.map +1 -1
  43. package/dist/components/usage.d.cts +2 -2
  44. package/dist/components/usage.d.cts.map +1 -1
  45. package/dist/components/usage.d.mts.map +1 -1
  46. package/dist/components/usage.mjs.map +1 -1
  47. package/dist/components/utils-builtin.cjs +128 -127
  48. package/dist/components/utils-builtin.cjs.map +1 -1
  49. package/dist/components/utils-builtin.d.cts.map +1 -1
  50. package/dist/components/utils-builtin.d.mts.map +1 -1
  51. package/dist/components/utils-builtin.mjs +4 -4
  52. package/dist/components/utils-builtin.mjs.map +1 -1
  53. package/dist/config.cjs +1 -0
  54. package/dist/config.cjs.map +1 -1
  55. package/dist/config.d.cts +0 -1
  56. package/dist/config.d.cts.map +1 -1
  57. package/dist/config.d.mts +0 -1
  58. package/dist/config.d.mts.map +1 -1
  59. package/dist/config.mjs.map +1 -1
  60. package/dist/contexts/command.cjs +5 -4
  61. package/dist/contexts/command.cjs.map +1 -1
  62. package/dist/contexts/command.d.cts +0 -1
  63. package/dist/contexts/command.d.cts.map +1 -1
  64. package/dist/contexts/command.d.mts +0 -1
  65. package/dist/contexts/command.d.mts.map +1 -1
  66. package/dist/contexts/index.cjs +1 -0
  67. package/dist/contexts/options.cjs +12 -11
  68. package/dist/contexts/options.cjs.map +1 -1
  69. package/dist/contexts/options.d.cts +0 -1
  70. package/dist/contexts/options.d.cts.map +1 -1
  71. package/dist/contexts/options.d.mts +0 -1
  72. package/dist/contexts/options.d.mts.map +1 -1
  73. package/dist/contexts/options.mjs +3 -3
  74. package/dist/contexts/options.mjs.map +1 -1
  75. package/dist/helpers/automd.cjs +16 -16
  76. package/dist/helpers/automd.cjs.map +1 -1
  77. package/dist/helpers/automd.mjs.map +1 -1
  78. package/dist/helpers/docs-helpers.cjs +3 -3
  79. package/dist/helpers/docs-helpers.cjs.map +1 -1
  80. package/dist/helpers/docs-helpers.mjs.map +1 -1
  81. package/dist/helpers/paths.cjs +26 -26
  82. package/dist/helpers/paths.cjs.map +1 -1
  83. package/dist/helpers/paths.mjs +1 -1
  84. package/dist/helpers/paths.mjs.map +1 -1
  85. package/dist/helpers/persistence.cjs +3 -3
  86. package/dist/helpers/persistence.cjs.map +1 -1
  87. package/dist/helpers/persistence.mjs.map +1 -1
  88. package/dist/helpers/update-package-json.cjs +16 -16
  89. package/dist/helpers/update-package-json.cjs.map +1 -1
  90. package/dist/helpers/update-package-json.mjs.map +1 -1
  91. package/dist/helpers/utilities.cjs +9 -9
  92. package/dist/helpers/utilities.cjs.map +1 -1
  93. package/dist/helpers/utilities.mjs.map +1 -1
  94. package/dist/helpers/validations.cjs.map +1 -1
  95. package/dist/helpers/validations.mjs.map +1 -1
  96. package/dist/index.cjs +1 -1
  97. package/dist/index.d.cts +0 -1
  98. package/dist/index.d.mts +0 -1
  99. package/dist/plugin-utils/context-helpers.cjs +10 -10
  100. package/dist/plugin-utils/context-helpers.cjs.map +1 -1
  101. package/dist/plugin-utils/context-helpers.d.cts +0 -3
  102. package/dist/plugin-utils/context-helpers.d.cts.map +1 -1
  103. package/dist/plugin-utils/context-helpers.d.mts +0 -3
  104. package/dist/plugin-utils/context-helpers.d.mts.map +1 -1
  105. package/dist/plugin-utils/context-helpers.mjs +1 -1
  106. package/dist/plugin-utils/context-helpers.mjs.map +1 -1
  107. package/dist/plugin-utils/deepkit.cjs +18 -18
  108. package/dist/plugin-utils/deepkit.cjs.map +1 -1
  109. package/dist/plugin-utils/deepkit.d.cts +0 -1
  110. package/dist/plugin-utils/deepkit.d.cts.map +1 -1
  111. package/dist/plugin-utils/deepkit.d.mts +0 -1
  112. package/dist/plugin-utils/deepkit.d.mts.map +1 -1
  113. package/dist/plugin-utils/deepkit.mjs.map +1 -1
  114. package/dist/plugin-utils/description-helpers.cjs.map +1 -1
  115. package/dist/plugin-utils/description-helpers.d.cts.map +1 -1
  116. package/dist/plugin-utils/description-helpers.d.mts.map +1 -1
  117. package/dist/plugin-utils/description-helpers.mjs.map +1 -1
  118. package/dist/plugin-utils/get-command-tree.cjs.map +1 -1
  119. package/dist/plugin-utils/get-command-tree.d.cts +0 -1
  120. package/dist/plugin-utils/get-command-tree.d.cts.map +1 -1
  121. package/dist/plugin-utils/get-command-tree.d.mts +0 -1
  122. package/dist/plugin-utils/get-command-tree.d.mts.map +1 -1
  123. package/dist/plugin-utils/get-command-tree.mjs.map +1 -1
  124. package/dist/plugin-utils/index.cjs +1 -0
  125. package/dist/plugin-utils/reflect.cjs.map +1 -1
  126. package/dist/plugin-utils/reflect.d.cts +0 -1
  127. package/dist/plugin-utils/reflect.d.cts.map +1 -1
  128. package/dist/plugin-utils/reflect.d.mts +0 -1
  129. package/dist/plugin-utils/reflect.d.mts.map +1 -1
  130. package/dist/plugin-utils/reflect.mjs.map +1 -1
  131. package/dist/plugin-utils/traverse-command-tree.cjs.map +1 -1
  132. package/dist/plugin-utils/traverse-command-tree.d.cts +0 -1
  133. package/dist/plugin-utils/traverse-command-tree.d.cts.map +1 -1
  134. package/dist/plugin-utils/traverse-command-tree.d.mts +0 -1
  135. package/dist/plugin-utils/traverse-command-tree.d.mts.map +1 -1
  136. package/dist/plugin-utils/traverse-command-tree.mjs.map +1 -1
  137. package/dist/plugin-utils/type-checks.cjs +7 -7
  138. package/dist/plugin-utils/type-checks.cjs.map +1 -1
  139. package/dist/plugin-utils/type-checks.d.cts +0 -1
  140. package/dist/plugin-utils/type-checks.d.cts.map +1 -1
  141. package/dist/plugin-utils/type-checks.d.mts +0 -1
  142. package/dist/plugin-utils/type-checks.d.mts.map +1 -1
  143. package/dist/plugin-utils/type-checks.mjs +1 -1
  144. package/dist/plugin-utils/type-checks.mjs.map +1 -1
  145. package/dist/plugin.cjs +68 -75
  146. package/dist/plugin.cjs.map +1 -1
  147. package/dist/plugin.d.cts +0 -1
  148. package/dist/plugin.d.cts.map +1 -1
  149. package/dist/plugin.d.mts +0 -1
  150. package/dist/plugin.d.mts.map +1 -1
  151. package/dist/plugin.mjs +23 -30
  152. package/dist/plugin.mjs.map +1 -1
  153. package/dist/resolver/deepkit.cjs +29 -29
  154. package/dist/resolver/deepkit.cjs.map +1 -1
  155. package/dist/resolver/deepkit.mjs.map +1 -1
  156. package/dist/resolver/helpers.cjs +17 -17
  157. package/dist/resolver/helpers.cjs.map +1 -1
  158. package/dist/resolver/helpers.mjs.map +1 -1
  159. package/dist/resolver/module.cjs +29 -29
  160. package/dist/resolver/module.cjs.map +1 -1
  161. package/dist/resolver/module.mjs +1 -1
  162. package/dist/resolver/module.mjs.map +1 -1
  163. package/dist/resolver/resolve.cjs +17 -17
  164. package/dist/resolver/resolve.cjs.map +1 -1
  165. package/dist/resolver/resolve.mjs +3 -3
  166. package/dist/resolver/resolve.mjs.map +1 -1
  167. package/dist/types/command.cjs +1 -0
  168. package/dist/types/command.cjs.map +1 -1
  169. package/dist/types/command.d.cts.map +1 -1
  170. package/dist/types/command.d.mts.map +1 -1
  171. package/dist/types/command.mjs.map +1 -1
  172. package/dist/types/config.cjs +1 -0
  173. package/dist/types/config.cjs.map +1 -1
  174. package/dist/types/config.d.cts.map +1 -1
  175. package/dist/types/config.d.mts.map +1 -1
  176. package/dist/types/config.mjs.map +1 -1
  177. package/dist/types/context.cjs +1 -0
  178. package/dist/types/context.cjs.map +1 -1
  179. package/dist/types/context.d.cts.map +1 -1
  180. package/dist/types/context.d.mts.map +1 -1
  181. package/dist/types/env.cjs +1 -0
  182. package/dist/types/env.d.cts.map +1 -1
  183. package/dist/types/env.d.mts.map +1 -1
  184. package/dist/types/index.cjs +1 -0
  185. package/dist/types/options.cjs +1 -0
  186. package/dist/types/options.d.cts.map +1 -1
  187. package/dist/types/options.d.mts.map +1 -1
  188. package/dist/types/runtime.cjs +1 -0
  189. package/dist/types/runtime.d.cts.map +1 -1
  190. package/dist/types/runtime.d.mts.map +1 -1
  191. package/package.json +23 -23
@@ -1,12 +1,12 @@
1
- const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
1
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
2
  const require_context_helpers = require('../plugin-utils/context-helpers.cjs');
3
3
  const require_types_command = require('../types/command.cjs');
4
- let __stryke_string_format_constant_case = require("@stryke/string-format/constant-case");
5
- let __stryke_type_checks_is_set_string = require("@stryke/type-checks/is-set-string");
4
+ let _stryke_string_format_constant_case = require("@stryke/string-format/constant-case");
5
+ let _stryke_type_checks_is_set_string = require("@stryke/type-checks/is-set-string");
6
6
  let defu = require("defu");
7
- let __stryke_string_format_title_case = require("@stryke/string-format/title-case");
8
- let __stryke_helpers_get_unique = require("@stryke/helpers/get-unique");
9
- let __stryke_type_checks_is_string = require("@stryke/type-checks/is-string");
7
+ let _stryke_string_format_title_case = require("@stryke/string-format/title-case");
8
+ let _stryke_helpers_get_unique = require("@stryke/helpers/get-unique");
9
+ let _stryke_type_checks_is_string = require("@stryke/type-checks/is-string");
10
10
 
11
11
  //#region src/resolver/helpers.ts
12
12
  function __assignType(fn, args) {
@@ -25,7 +25,7 @@ function __assignType(fn, args) {
25
25
  * @returns The resolved description for the command option.
26
26
  */
27
27
  function resolveCommandOptionDescription(name, kind, optional = false, variadic = false, title, defaultValue) {
28
- return `A${optional && !defaultValue ? "n optional" : ""} command-line ${kind === require_types_command.CommandParameterKinds.boolean ? "flag" : "option"} that allows the user to ${kind === require_types_command.CommandParameterKinds.boolean ? "set the" : variadic ? "specify custom" : "specify a custom"} ${title?.trim() || (0, __stryke_string_format_title_case.titleCase)(name)} ${kind === require_types_command.CommandParameterKinds.boolean ? "indicator" : `${kind === require_types_command.CommandParameterKinds.number ? "numeric" : "string"} value${variadic ? "s" : ""}`}.`;
28
+ return `A${optional && !defaultValue ? "n optional" : ""} command-line ${kind === require_types_command.CommandParameterKinds.boolean ? "flag" : "option"} that allows the user to ${kind === require_types_command.CommandParameterKinds.boolean ? "set the" : variadic ? "specify custom" : "specify a custom"} ${title?.trim() || (0, _stryke_string_format_title_case.titleCase)(name)} ${kind === require_types_command.CommandParameterKinds.boolean ? "indicator" : `${kind === require_types_command.CommandParameterKinds.number ? "numeric" : "string"} value${variadic ? "s" : ""}`}.`;
29
29
  }
30
30
  resolveCommandOptionDescription.__type = [
31
31
  "name",
@@ -50,7 +50,7 @@ resolveCommandOptionDescription.__type = [
50
50
  * @returns The resolved description for the command argument.
51
51
  */
52
52
  function resolveCommandArgumentDescription(name, kind, optional = false, variadic = false, title, defaultValue) {
53
- return `An${optional && !defaultValue ? " optional" : ""} argument that allows the user to ${kind === require_types_command.CommandParameterKinds.boolean ? "set the" : variadic ? "specify custom" : "specify a custom"} ${title?.trim() || (0, __stryke_string_format_title_case.titleCase)(name)} ${kind === require_types_command.CommandParameterKinds.boolean ? "indicator" : `${kind === require_types_command.CommandParameterKinds.number ? "numeric" : "string"} value${variadic ? "s" : ""}`}.`;
53
+ return `An${optional && !defaultValue ? " optional" : ""} argument that allows the user to ${kind === require_types_command.CommandParameterKinds.boolean ? "set the" : variadic ? "specify custom" : "specify a custom"} ${title?.trim() || (0, _stryke_string_format_title_case.titleCase)(name)} ${kind === require_types_command.CommandParameterKinds.boolean ? "indicator" : `${kind === require_types_command.CommandParameterKinds.number ? "numeric" : "string"} value${variadic ? "s" : ""}`}.`;
54
54
  }
55
55
  resolveCommandArgumentDescription.__type = [
56
56
  "name",
@@ -66,13 +66,13 @@ resolveCommandArgumentDescription.__type = [
66
66
  function applyOptionsDefaults(ctx) {
67
67
  return Object.fromEntries(Object.entries(ctx.output.options).map(__assignType(([key, option]) => {
68
68
  const name = option.name || key;
69
- const title = option.title || (0, __stryke_string_format_title_case.titleCase)(name);
69
+ const title = option.title || (0, _stryke_string_format_title_case.titleCase)(name);
70
70
  return [key, {
71
71
  ...option,
72
72
  name,
73
73
  title,
74
74
  description: option.description || resolveCommandOptionDescription(name, option.kind, option.optional, option.kind !== require_types_command.CommandParameterKinds.boolean && option.variadic, title, option.default),
75
- env: option.env || option.env === false ? option.env : ctx.input.context.config.autoAssignEnv ? (0, __stryke_string_format_constant_case.constantCase)(name) : false
75
+ env: option.env || option.env === false ? option.env : ctx.input.context.config.autoAssignEnv ? (0, _stryke_string_format_constant_case.constantCase)(name) : false
76
76
  }];
77
77
  }, [
78
78
  "param0",
@@ -89,13 +89,13 @@ applyOptionsDefaults.__type = [
89
89
  function applyArgsDefaults(ctx) {
90
90
  return ctx.output.args.map(__assignType((arg, i) => {
91
91
  const name = arg.name || `arg${i + 1}`;
92
- const title = arg.title || (0, __stryke_string_format_title_case.titleCase)(name);
92
+ const title = arg.title || (0, _stryke_string_format_title_case.titleCase)(name);
93
93
  return {
94
94
  ...arg,
95
95
  name,
96
96
  title,
97
97
  description: arg.description || resolveCommandArgumentDescription(name, arg.kind, arg.optional, arg.kind !== require_types_command.CommandParameterKinds.boolean && arg.variadic, title, arg.default),
98
- env: arg.name ? arg.env || arg.env === false ? arg.env : ctx.input.context.config.autoAssignEnv ? (0, __stryke_string_format_constant_case.constantCase)(name) : false : false
98
+ env: arg.name ? arg.env || arg.env === false ? arg.env : ctx.input.context.config.autoAssignEnv ? (0, _stryke_string_format_constant_case.constantCase)(name) : false : false
99
99
  };
100
100
  }, [
101
101
  "arg",
@@ -121,8 +121,8 @@ applyDefaults.__type = [
121
121
  "P\"w!2\"\"/#"
122
122
  ];
123
123
  function resolveVirtualCommand(ctx) {
124
- ctx.output.title ??= (0, __stryke_string_format_title_case.titleCase)(ctx.input.command.name);
125
- ctx.output.description ??= `A collection of available ${ctx.output.title.replace(/(?:c|C)ommands?$/, "").trim() || (0, __stryke_string_format_title_case.titleCase)(ctx.input.command.name)} commands that are included in the ${require_context_helpers.getAppTitle(ctx.input.context, true)} command-line application.`;
124
+ ctx.output.title ??= (0, _stryke_string_format_title_case.titleCase)(ctx.input.command.name);
125
+ ctx.output.description ??= `A collection of available ${ctx.output.title.replace(/(?:c|C)ommands?$/, "").trim() || (0, _stryke_string_format_title_case.titleCase)(ctx.input.command.name)} commands that are included in the ${require_context_helpers.getAppTitle(ctx.input.context, true)} command-line application.`;
126
126
  }
127
127
  resolveVirtualCommand.__type = [
128
128
  "ResolverContext",
@@ -138,11 +138,11 @@ resolveVirtualCommand.__type = [
138
138
  * @returns The merged command parameter object.
139
139
  */
140
140
  const mergeCommandParameter = (0, defu.createDefu)(__assignType((obj, key, value) => {
141
- if ((0, __stryke_type_checks_is_string.isString)(obj[key]) && (0, __stryke_type_checks_is_string.isString)(value)) {
142
- if ((0, __stryke_type_checks_is_set_string.isSetString)(value)) obj[key] = value;
141
+ if ((0, _stryke_type_checks_is_string.isString)(obj[key]) && (0, _stryke_type_checks_is_string.isString)(value)) {
142
+ if ((0, _stryke_type_checks_is_set_string.isSetString)(value)) obj[key] = value;
143
143
  return true;
144
144
  } else if (Array.isArray(obj[key]) && Array.isArray(value)) {
145
- if (value.length > 0) obj[key] = (0, __stryke_helpers_get_unique.getUniqueBy)(obj[key].concat(value), __assignType((item) => (0, __stryke_type_checks_is_string.isString)(item) ? item : JSON.stringify(item), [
145
+ if (value.length > 0) obj[key] = (0, _stryke_helpers_get_unique.getUniqueBy)(obj[key].concat(value), __assignType((item) => (0, _stryke_type_checks_is_string.isString)(item) ? item : JSON.stringify(item), [
146
146
  "item",
147
147
  "",
148
148
  "P\"2!\"/\""
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.cjs","names":[],"sources":["../../src/resolver/helpers.ts"],"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 { getUniqueBy } from \"@stryke/helpers/get-unique\";\nimport { constantCase } from \"@stryke/string-format/constant-case\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport { createDefu } from \"defu\";\nimport { getAppTitle } from \"../plugin-utils/context-helpers\";\nimport type { CommandArgument, CommandParameterKind } from \"../types/command\";\nimport { CommandParameterKinds } from \"../types/command\";\nimport type { Context } from \"../types/context\";\nimport type { ResolverContext } from \"./types\";\n\n/**\n * Resolves the description for a command option based on its reflection.\n *\n * @param name - The name of the command option.\n * @param kind - The reflection kind of the command option.\n * @param optional - Whether the command option is optional.\n * @param variadic - Whether the command option is variadic (i.e., an array).\n * @param title - The title of the command option, if any.\n * @param defaultValue - The default value of the command option, if any.\n * @returns The resolved description for the command option.\n */\nexport function resolveCommandOptionDescription(\n name: string,\n kind: CommandParameterKind,\n optional = false,\n variadic = false,\n title?: string,\n defaultValue?: any\n): string {\n return `A${optional && !defaultValue ? \"n optional\" : \"\"} command-line ${\n kind === CommandParameterKinds.boolean ? \"flag\" : \"option\"\n } that allows the user to ${\n kind === CommandParameterKinds.boolean\n ? \"set the\"\n : variadic\n ? \"specify custom\"\n : \"specify a custom\"\n } ${title?.trim() || titleCase(name)} ${\n kind === CommandParameterKinds.boolean\n ? \"indicator\"\n : `${kind === CommandParameterKinds.number ? \"numeric\" : \"string\"} value${\n variadic ? \"s\" : \"\"\n }`\n }.`;\n}\n\n/**\n * Resolves the description for a command argument based on its reflection.\n *\n * @param name - The name of the command argument.\n * @param kind - The reflection kind of the command argument.\n * @param optional - Whether the command argument is optional.\n * @param variadic - Whether the command argument is variadic (i.e., an array).\n * @param title - The title of the command argument, if any.\n * @param defaultValue - The default value of the command argument, if any.\n * @returns The resolved description for the command argument.\n */\nexport function resolveCommandArgumentDescription(\n name: string,\n kind: CommandParameterKind,\n optional = false,\n variadic = false,\n title?: string,\n defaultValue?: any\n): string {\n return `An${\n optional && !defaultValue ? \" optional\" : \"\"\n } argument that allows the user to ${\n kind === CommandParameterKinds.boolean\n ? \"set the\"\n : variadic\n ? \"specify custom\"\n : \"specify a custom\"\n } ${title?.trim() || titleCase(name)} ${\n kind === CommandParameterKinds.boolean\n ? \"indicator\"\n : `${kind === CommandParameterKinds.number ? \"numeric\" : \"string\"} value${\n variadic ? \"s\" : \"\"\n }`\n }.`;\n}\n\nexport function applyOptionsDefaults(ctx: ResolverContext) {\n return Object.fromEntries(\n Object.entries(ctx.output.options).map(([key, option]) => {\n const name = option.name || key;\n const title = option.title || titleCase(name);\n\n return [\n key,\n {\n ...option,\n name,\n title,\n description:\n option.description ||\n resolveCommandOptionDescription(\n name,\n option.kind,\n option.optional,\n option.kind !== CommandParameterKinds.boolean && option.variadic,\n title,\n option.default\n ),\n env:\n option.env || option.env === false\n ? option.env\n : ctx.input.context.config.autoAssignEnv\n ? constantCase(name)\n : false\n }\n ];\n })\n );\n}\n\nexport function applyArgsDefaults(ctx: ResolverContext): CommandArgument[] {\n return ctx.output.args.map((arg, i) => {\n const name = arg.name || `arg${i + 1}`;\n const title = arg.title || titleCase(name);\n\n return {\n ...arg,\n name,\n title,\n description:\n arg.description ||\n resolveCommandArgumentDescription(\n name,\n arg.kind,\n arg.optional,\n arg.kind !== CommandParameterKinds.boolean && arg.variadic,\n title,\n arg.default\n ),\n env: arg.name\n ? arg.env || arg.env === false\n ? arg.env\n : ctx.input.context.config.autoAssignEnv\n ? constantCase(name)\n : false\n : false\n };\n });\n}\n\nexport function applyDefaults(ctx: ResolverContext) {\n ctx.output.description ??= `The ${ctx.output.title.replace(/(?:c|C)ommands?$/, \"\").trim()} executable command-line interface.`;\n}\n\nexport function resolveVirtualCommand<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n) {\n ctx.output.title ??= titleCase(ctx.input.command.name);\n ctx.output.description ??= `A collection of available ${\n ctx.output.title.replace(/(?:c|C)ommands?$/, \"\").trim() ||\n titleCase(ctx.input.command.name)\n } commands that are included in the ${getAppTitle(\n ctx.input.context,\n true\n )} command-line application.`;\n}\n\n/**\n * Merges two command parameters, giving precedence to string values in the second configuration.\n *\n * @param objA - The first command parameter object.\n * @param objB - The second command parameter object.\n * @returns The merged command parameter object.\n */\nexport const mergeCommandParameter = createDefu((obj, key, value) => {\n if (isString(obj[key]) && isString(value)) {\n if (isSetString(value)) {\n obj[key] = value;\n }\n\n return true;\n } else if (Array.isArray(obj[key]) && Array.isArray(value)) {\n if (value.length > 0) {\n obj[key] = getUniqueBy((obj[key] as unknown[]).concat(value), item =>\n isString(item) ? item : JSON.stringify(item)\n ) as (typeof obj)[typeof key];\n }\n\n return true;\n }\n\n return false;\n});\n"],"mappings":";;;;;;;;;;;AAAA,SAAS,aAAa,IAAI,MAAM;;AAE5B,QAAO;;;;;;;;;;;;;AAsCX,SAAE,gCAAA,MAAA,MAAA,WAAA,OAAA,WAAA,OAAA,OAAA,cAAA;AACE,QAAO,IAAI,YAAY,CAAC,eAAe,eAAI,GAAA,gBAAA,SAAA,4CAAA,UAAA,SAAA,SAAA,2BAAA,SAAA,4CAAA,UACrC,YACA,WACI,mBACA,mBAAI,GAAA,OAAA,MAAA,qDAAA,KAAA,CAAA,GAAA,SAAA,4CAAA,UACR,cACA,GAAG,SAAM,4CAAA,SAAA,YAAA,SAAA,QAAA,WAAA,MAAA,KAAA;;AAEnB,gCAAgC,SAAS;CAAC;CAAQ;CAAwB;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;;;;;;;;;;;;AAY1E,SAAgB,kCAAY,MAAA,MAAA,WAAA,OAAA,WAAA,OAAA,OAAA,cAAA;AACxB,QAAK,KAAA,YAAA,CAAA,eAAA,cAAA,GAAA,oCAAA,SAAA,4CAAA,UACJ,YACL,8BAEE,mBAAA,GAAA,OAAA,MAAA,qDAAA,KAAA,CAAA,GAAA,SAAA,4CAAA,UACQ,cACT,GAAA,SAAA,4CAAA,SAAA,YAAA,SAAA,QAAA,WAAA,MAAA,KAAA;;AAED,kCAAkC,SAAS;CAAC;CAAQ;CAAQ;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;AAC5D,SAAgB,qBAAqB,KAAK;AACtC,QAAO,OAAO,YAAY,OAAO,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,cAAS,CAAA,KAAA,YAAA;EACtE,MAAM,OAAO,OAAO,QAAQ;EAC5B,MAAM,QAAQ,OAAO,0DAAmB,KAAK;AAC7C,SAAO,CACb,KACU;GACE,GAAA;GACE;GACA;GACA,aAAE,OAAA,eACF,gCAAA,MAAA,OAAA,MAAA,OAAA,UAAA,OAAA,SAAA,4CAAA,WAAA,OAAA,UAAA,OAAA,OAAA,QAAA;GACA,KAAG,OAAA,OAAA,OAAA,QAAA,QACT,OAAA,MACG,IAAA,MAAA,QAAA,OAAA,uEAC0B,KAAK,GAClB;GACb,CACJ;IACF;EAAC;EAAO;EAAA;EAAA,CAAA,CAAA,CAAA;;AAEf,qBAAqB,SAAM;CAAA;CAAA;CAAA;CAAA;CAAA;AAC3B,SAAgB,kBAAkB,KAAK;AACnC,QAAO,IAAI,OAAO,KAAK,IAAI,cAAU,KAAA,MAAA;EACjC,MAAM,OAAI,IAAA,QAAA,MAAA,IAAA;EACV,MAAM,QAAQ,IAAI,0DAAmB,KAAK;AAC1C,SAAO;GACN,GAAA;GACJ;GACL;mCAEgB,kCAAkC,MAAM,IAAG,MAAA,IAAA,UAAA,IAAA,SAAA,4CAAA,WAAA,IAAA,UAAA,OAAA,IAAA,QAAA;GAC/C,KAAK,IAAI,OACH,IAAI,OAAO,IAAI,QAAQ,QACnB,IAAI,MACJ,IAAI,MAAM,QAAQ,OAAO,+EAElC,QACF;GACH;IACD;EAAC;EAAO;EAAI;EAAA;EAAA,CAAA,CAAA;;AAEnB,kBAAe,SAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;AACf,SAAgB,cAAK,KAAA;AACjB,KAAI,OAAO,gBAAgB,OAAC,IAAA,OAAA,MAAA,QAAA,oBAAA,GAAA,CAAA,MAAA,CAAA;;AAEhC,cAAc,SAAI;CAAA;CAAA;CAAA;CAAA;CAAA;AAClB,SAAgB,sBAAS,KAAA;AACrB,KAAI,OAAO,2DAAc,IAAA,MAAA,QAAA,KAAA;AACzB,KAAI,OAAO,gBAAgB,6BAA6B,IAAI,OAAO,MAAM,QAAC,oBAAA,GAAA,CAAA,MAAA,qDAC5D,IAAC,MAAA,QAAA,KAAA,CAAA,qCAAA,oCAAA,IAAA,MAAA,SAAA,KAAA,CAAA;;AAEnB,sBAAa,SAAA;CAAA;CAAA;CAAA;CAAA;CAAA;;;;;;;;AAQb,MAAO,6CAAA,cAAA,KAAA,KAAA,UAAA;AACH,kDAAC,IAAA,KAAA,iDAAA,MAAA,EAAA;AACF,0DAAA,MAAA,CACH,KAAA,OAAA;AAEQ,SAAO;YAEF,MAAM,QAAQ,IAAI,KAAK,IAAI,MAAE,QAAA,MAAA,EAAA;AAClC,MAAI,MAAM,SAAS;;;;;AAGnB,SAAI;;AAER,QAAO;GACR;CAAC;CAAO;CAAM;CAAA;CAAA;CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"helpers.cjs","names":[],"sources":["../../src/resolver/helpers.ts"],"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 { getUniqueBy } from \"@stryke/helpers/get-unique\";\nimport { constantCase } from \"@stryke/string-format/constant-case\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport { createDefu } from \"defu\";\nimport { getAppTitle } from \"../plugin-utils/context-helpers\";\nimport type { CommandArgument, CommandParameterKind } from \"../types/command\";\nimport { CommandParameterKinds } from \"../types/command\";\nimport type { Context } from \"../types/context\";\nimport type { ResolverContext } from \"./types\";\n\n/**\n * Resolves the description for a command option based on its reflection.\n *\n * @param name - The name of the command option.\n * @param kind - The reflection kind of the command option.\n * @param optional - Whether the command option is optional.\n * @param variadic - Whether the command option is variadic (i.e., an array).\n * @param title - The title of the command option, if any.\n * @param defaultValue - The default value of the command option, if any.\n * @returns The resolved description for the command option.\n */\nexport function resolveCommandOptionDescription(\n name: string,\n kind: CommandParameterKind,\n optional = false,\n variadic = false,\n title?: string,\n defaultValue?: any\n): string {\n return `A${optional && !defaultValue ? \"n optional\" : \"\"} command-line ${\n kind === CommandParameterKinds.boolean ? \"flag\" : \"option\"\n } that allows the user to ${\n kind === CommandParameterKinds.boolean\n ? \"set the\"\n : variadic\n ? \"specify custom\"\n : \"specify a custom\"\n } ${title?.trim() || titleCase(name)} ${\n kind === CommandParameterKinds.boolean\n ? \"indicator\"\n : `${kind === CommandParameterKinds.number ? \"numeric\" : \"string\"} value${\n variadic ? \"s\" : \"\"\n }`\n }.`;\n}\n\n/**\n * Resolves the description for a command argument based on its reflection.\n *\n * @param name - The name of the command argument.\n * @param kind - The reflection kind of the command argument.\n * @param optional - Whether the command argument is optional.\n * @param variadic - Whether the command argument is variadic (i.e., an array).\n * @param title - The title of the command argument, if any.\n * @param defaultValue - The default value of the command argument, if any.\n * @returns The resolved description for the command argument.\n */\nexport function resolveCommandArgumentDescription(\n name: string,\n kind: CommandParameterKind,\n optional = false,\n variadic = false,\n title?: string,\n defaultValue?: any\n): string {\n return `An${\n optional && !defaultValue ? \" optional\" : \"\"\n } argument that allows the user to ${\n kind === CommandParameterKinds.boolean\n ? \"set the\"\n : variadic\n ? \"specify custom\"\n : \"specify a custom\"\n } ${title?.trim() || titleCase(name)} ${\n kind === CommandParameterKinds.boolean\n ? \"indicator\"\n : `${kind === CommandParameterKinds.number ? \"numeric\" : \"string\"} value${\n variadic ? \"s\" : \"\"\n }`\n }.`;\n}\n\nexport function applyOptionsDefaults(ctx: ResolverContext) {\n return Object.fromEntries(\n Object.entries(ctx.output.options).map(([key, option]) => {\n const name = option.name || key;\n const title = option.title || titleCase(name);\n\n return [\n key,\n {\n ...option,\n name,\n title,\n description:\n option.description ||\n resolveCommandOptionDescription(\n name,\n option.kind,\n option.optional,\n option.kind !== CommandParameterKinds.boolean && option.variadic,\n title,\n option.default\n ),\n env:\n option.env || option.env === false\n ? option.env\n : ctx.input.context.config.autoAssignEnv\n ? constantCase(name)\n : false\n }\n ];\n })\n );\n}\n\nexport function applyArgsDefaults(ctx: ResolverContext): CommandArgument[] {\n return ctx.output.args.map((arg, i) => {\n const name = arg.name || `arg${i + 1}`;\n const title = arg.title || titleCase(name);\n\n return {\n ...arg,\n name,\n title,\n description:\n arg.description ||\n resolveCommandArgumentDescription(\n name,\n arg.kind,\n arg.optional,\n arg.kind !== CommandParameterKinds.boolean && arg.variadic,\n title,\n arg.default\n ),\n env: arg.name\n ? arg.env || arg.env === false\n ? arg.env\n : ctx.input.context.config.autoAssignEnv\n ? constantCase(name)\n : false\n : false\n };\n });\n}\n\nexport function applyDefaults(ctx: ResolverContext) {\n ctx.output.description ??= `The ${ctx.output.title.replace(/(?:c|C)ommands?$/, \"\").trim()} executable command-line interface.`;\n}\n\nexport function resolveVirtualCommand<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n) {\n ctx.output.title ??= titleCase(ctx.input.command.name);\n ctx.output.description ??= `A collection of available ${\n ctx.output.title.replace(/(?:c|C)ommands?$/, \"\").trim() ||\n titleCase(ctx.input.command.name)\n } commands that are included in the ${getAppTitle(\n ctx.input.context,\n true\n )} command-line application.`;\n}\n\n/**\n * Merges two command parameters, giving precedence to string values in the second configuration.\n *\n * @param objA - The first command parameter object.\n * @param objB - The second command parameter object.\n * @returns The merged command parameter object.\n */\nexport const mergeCommandParameter = createDefu((obj, key, value) => {\n if (isString(obj[key]) && isString(value)) {\n if (isSetString(value)) {\n obj[key] = value;\n }\n\n return true;\n } else if (Array.isArray(obj[key]) && Array.isArray(value)) {\n if (value.length > 0) {\n obj[key] = getUniqueBy((obj[key] as unknown[]).concat(value), item =>\n isString(item) ? item : JSON.stringify(item)\n ) as (typeof obj)[typeof key];\n }\n\n return true;\n }\n\n return false;\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.mjs","names":[],"sources":["../../src/resolver/helpers.ts"],"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 { getUniqueBy } from \"@stryke/helpers/get-unique\";\nimport { constantCase } from \"@stryke/string-format/constant-case\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport { createDefu } from \"defu\";\nimport { getAppTitle } from \"../plugin-utils/context-helpers\";\nimport type { CommandArgument, CommandParameterKind } from \"../types/command\";\nimport { CommandParameterKinds } from \"../types/command\";\nimport type { Context } from \"../types/context\";\nimport type { ResolverContext } from \"./types\";\n\n/**\n * Resolves the description for a command option based on its reflection.\n *\n * @param name - The name of the command option.\n * @param kind - The reflection kind of the command option.\n * @param optional - Whether the command option is optional.\n * @param variadic - Whether the command option is variadic (i.e., an array).\n * @param title - The title of the command option, if any.\n * @param defaultValue - The default value of the command option, if any.\n * @returns The resolved description for the command option.\n */\nexport function resolveCommandOptionDescription(\n name: string,\n kind: CommandParameterKind,\n optional = false,\n variadic = false,\n title?: string,\n defaultValue?: any\n): string {\n return `A${optional && !defaultValue ? \"n optional\" : \"\"} command-line ${\n kind === CommandParameterKinds.boolean ? \"flag\" : \"option\"\n } that allows the user to ${\n kind === CommandParameterKinds.boolean\n ? \"set the\"\n : variadic\n ? \"specify custom\"\n : \"specify a custom\"\n } ${title?.trim() || titleCase(name)} ${\n kind === CommandParameterKinds.boolean\n ? \"indicator\"\n : `${kind === CommandParameterKinds.number ? \"numeric\" : \"string\"} value${\n variadic ? \"s\" : \"\"\n }`\n }.`;\n}\n\n/**\n * Resolves the description for a command argument based on its reflection.\n *\n * @param name - The name of the command argument.\n * @param kind - The reflection kind of the command argument.\n * @param optional - Whether the command argument is optional.\n * @param variadic - Whether the command argument is variadic (i.e., an array).\n * @param title - The title of the command argument, if any.\n * @param defaultValue - The default value of the command argument, if any.\n * @returns The resolved description for the command argument.\n */\nexport function resolveCommandArgumentDescription(\n name: string,\n kind: CommandParameterKind,\n optional = false,\n variadic = false,\n title?: string,\n defaultValue?: any\n): string {\n return `An${\n optional && !defaultValue ? \" optional\" : \"\"\n } argument that allows the user to ${\n kind === CommandParameterKinds.boolean\n ? \"set the\"\n : variadic\n ? \"specify custom\"\n : \"specify a custom\"\n } ${title?.trim() || titleCase(name)} ${\n kind === CommandParameterKinds.boolean\n ? \"indicator\"\n : `${kind === CommandParameterKinds.number ? \"numeric\" : \"string\"} value${\n variadic ? \"s\" : \"\"\n }`\n }.`;\n}\n\nexport function applyOptionsDefaults(ctx: ResolverContext) {\n return Object.fromEntries(\n Object.entries(ctx.output.options).map(([key, option]) => {\n const name = option.name || key;\n const title = option.title || titleCase(name);\n\n return [\n key,\n {\n ...option,\n name,\n title,\n description:\n option.description ||\n resolveCommandOptionDescription(\n name,\n option.kind,\n option.optional,\n option.kind !== CommandParameterKinds.boolean && option.variadic,\n title,\n option.default\n ),\n env:\n option.env || option.env === false\n ? option.env\n : ctx.input.context.config.autoAssignEnv\n ? constantCase(name)\n : false\n }\n ];\n })\n );\n}\n\nexport function applyArgsDefaults(ctx: ResolverContext): CommandArgument[] {\n return ctx.output.args.map((arg, i) => {\n const name = arg.name || `arg${i + 1}`;\n const title = arg.title || titleCase(name);\n\n return {\n ...arg,\n name,\n title,\n description:\n arg.description ||\n resolveCommandArgumentDescription(\n name,\n arg.kind,\n arg.optional,\n arg.kind !== CommandParameterKinds.boolean && arg.variadic,\n title,\n arg.default\n ),\n env: arg.name\n ? arg.env || arg.env === false\n ? arg.env\n : ctx.input.context.config.autoAssignEnv\n ? constantCase(name)\n : false\n : false\n };\n });\n}\n\nexport function applyDefaults(ctx: ResolverContext) {\n ctx.output.description ??= `The ${ctx.output.title.replace(/(?:c|C)ommands?$/, \"\").trim()} executable command-line interface.`;\n}\n\nexport function resolveVirtualCommand<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n) {\n ctx.output.title ??= titleCase(ctx.input.command.name);\n ctx.output.description ??= `A collection of available ${\n ctx.output.title.replace(/(?:c|C)ommands?$/, \"\").trim() ||\n titleCase(ctx.input.command.name)\n } commands that are included in the ${getAppTitle(\n ctx.input.context,\n true\n )} command-line application.`;\n}\n\n/**\n * Merges two command parameters, giving precedence to string values in the second configuration.\n *\n * @param objA - The first command parameter object.\n * @param objB - The second command parameter object.\n * @returns The merged command parameter object.\n */\nexport const mergeCommandParameter = createDefu((obj, key, value) => {\n if (isString(obj[key]) && isString(value)) {\n if (isSetString(value)) {\n obj[key] = value;\n }\n\n return true;\n } else if (Array.isArray(obj[key]) && Array.isArray(value)) {\n if (value.length > 0) {\n obj[key] = getUniqueBy((obj[key] as unknown[]).concat(value), item =>\n isString(item) ? item : JSON.stringify(item)\n ) as (typeof obj)[typeof key];\n }\n\n return true;\n }\n\n return false;\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.mjs","names":[],"sources":["../../src/resolver/helpers.ts"],"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 { getUniqueBy } from \"@stryke/helpers/get-unique\";\nimport { constantCase } from \"@stryke/string-format/constant-case\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport { createDefu } from \"defu\";\nimport { getAppTitle } from \"../plugin-utils/context-helpers\";\nimport type { CommandArgument, CommandParameterKind } from \"../types/command\";\nimport { CommandParameterKinds } from \"../types/command\";\nimport type { Context } from \"../types/context\";\nimport type { ResolverContext } from \"./types\";\n\n/**\n * Resolves the description for a command option based on its reflection.\n *\n * @param name - The name of the command option.\n * @param kind - The reflection kind of the command option.\n * @param optional - Whether the command option is optional.\n * @param variadic - Whether the command option is variadic (i.e., an array).\n * @param title - The title of the command option, if any.\n * @param defaultValue - The default value of the command option, if any.\n * @returns The resolved description for the command option.\n */\nexport function resolveCommandOptionDescription(\n name: string,\n kind: CommandParameterKind,\n optional = false,\n variadic = false,\n title?: string,\n defaultValue?: any\n): string {\n return `A${optional && !defaultValue ? \"n optional\" : \"\"} command-line ${\n kind === CommandParameterKinds.boolean ? \"flag\" : \"option\"\n } that allows the user to ${\n kind === CommandParameterKinds.boolean\n ? \"set the\"\n : variadic\n ? \"specify custom\"\n : \"specify a custom\"\n } ${title?.trim() || titleCase(name)} ${\n kind === CommandParameterKinds.boolean\n ? \"indicator\"\n : `${kind === CommandParameterKinds.number ? \"numeric\" : \"string\"} value${\n variadic ? \"s\" : \"\"\n }`\n }.`;\n}\n\n/**\n * Resolves the description for a command argument based on its reflection.\n *\n * @param name - The name of the command argument.\n * @param kind - The reflection kind of the command argument.\n * @param optional - Whether the command argument is optional.\n * @param variadic - Whether the command argument is variadic (i.e., an array).\n * @param title - The title of the command argument, if any.\n * @param defaultValue - The default value of the command argument, if any.\n * @returns The resolved description for the command argument.\n */\nexport function resolveCommandArgumentDescription(\n name: string,\n kind: CommandParameterKind,\n optional = false,\n variadic = false,\n title?: string,\n defaultValue?: any\n): string {\n return `An${\n optional && !defaultValue ? \" optional\" : \"\"\n } argument that allows the user to ${\n kind === CommandParameterKinds.boolean\n ? \"set the\"\n : variadic\n ? \"specify custom\"\n : \"specify a custom\"\n } ${title?.trim() || titleCase(name)} ${\n kind === CommandParameterKinds.boolean\n ? \"indicator\"\n : `${kind === CommandParameterKinds.number ? \"numeric\" : \"string\"} value${\n variadic ? \"s\" : \"\"\n }`\n }.`;\n}\n\nexport function applyOptionsDefaults(ctx: ResolverContext) {\n return Object.fromEntries(\n Object.entries(ctx.output.options).map(([key, option]) => {\n const name = option.name || key;\n const title = option.title || titleCase(name);\n\n return [\n key,\n {\n ...option,\n name,\n title,\n description:\n option.description ||\n resolveCommandOptionDescription(\n name,\n option.kind,\n option.optional,\n option.kind !== CommandParameterKinds.boolean && option.variadic,\n title,\n option.default\n ),\n env:\n option.env || option.env === false\n ? option.env\n : ctx.input.context.config.autoAssignEnv\n ? constantCase(name)\n : false\n }\n ];\n })\n );\n}\n\nexport function applyArgsDefaults(ctx: ResolverContext): CommandArgument[] {\n return ctx.output.args.map((arg, i) => {\n const name = arg.name || `arg${i + 1}`;\n const title = arg.title || titleCase(name);\n\n return {\n ...arg,\n name,\n title,\n description:\n arg.description ||\n resolveCommandArgumentDescription(\n name,\n arg.kind,\n arg.optional,\n arg.kind !== CommandParameterKinds.boolean && arg.variadic,\n title,\n arg.default\n ),\n env: arg.name\n ? arg.env || arg.env === false\n ? arg.env\n : ctx.input.context.config.autoAssignEnv\n ? constantCase(name)\n : false\n : false\n };\n });\n}\n\nexport function applyDefaults(ctx: ResolverContext) {\n ctx.output.description ??= `The ${ctx.output.title.replace(/(?:c|C)ommands?$/, \"\").trim()} executable command-line interface.`;\n}\n\nexport function resolveVirtualCommand<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n) {\n ctx.output.title ??= titleCase(ctx.input.command.name);\n ctx.output.description ??= `A collection of available ${\n ctx.output.title.replace(/(?:c|C)ommands?$/, \"\").trim() ||\n titleCase(ctx.input.command.name)\n } commands that are included in the ${getAppTitle(\n ctx.input.context,\n true\n )} command-line application.`;\n}\n\n/**\n * Merges two command parameters, giving precedence to string values in the second configuration.\n *\n * @param objA - The first command parameter object.\n * @param objB - The second command parameter object.\n * @returns The merged command parameter object.\n */\nexport const mergeCommandParameter = createDefu((obj, key, value) => {\n if (isString(obj[key]) && isString(value)) {\n if (isSetString(value)) {\n obj[key] = value;\n }\n\n return true;\n } else if (Array.isArray(obj[key]) && Array.isArray(value)) {\n if (value.length > 0) {\n obj[key] = getUniqueBy((obj[key] as unknown[]).concat(value), item =>\n isString(item) ? item : JSON.stringify(item)\n ) as (typeof obj)[typeof key];\n }\n\n return true;\n }\n\n return false;\n});\n"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
1
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
2
  const require_types_command = require('../types/command.cjs');
3
3
  const require_type_checks = require('../plugin-utils/type-checks.cjs');
4
4
  require('../plugin-utils/index.cjs');
5
- let __stryke_convert_to_array = require("@stryke/convert/to-array");
6
- let __stryke_type_checks_is_set_object = require("@stryke/type-checks/is-set-object");
7
- let __stryke_type_checks_is_set_string = require("@stryke/type-checks/is-set-string");
8
- let __stryke_json = require("@stryke/json");
9
- let __stryke_zod = require("@stryke/zod");
5
+ let _stryke_convert_to_array = require("@stryke/convert/to-array");
6
+ let _stryke_type_checks_is_set_string = require("@stryke/type-checks/is-set-string");
7
+ let _stryke_type_checks_is_set_object = require("@stryke/type-checks/is-set-object");
8
+ let _stryke_json = require("@stryke/json");
9
+ let _stryke_zod = require("@stryke/zod");
10
10
 
11
11
  //#region src/resolver/module.ts
12
12
  const __ΩPartial = [
@@ -21,18 +21,18 @@ function __assignType(fn, args) {
21
21
  function resolveCommandOption(name, parent, schema) {
22
22
  const result = {
23
23
  name,
24
- kind: (0, __stryke_json.isJsonSchema7ArrayType)(schema) && schema.items ? (0, __stryke_json.isJsonSchema7NumberType)(schema.items) ? require_types_command.CommandParameterKinds.number : require_types_command.CommandParameterKinds.string : (0, __stryke_json.isJsonSchema7BooleanType)(schema) ? require_types_command.CommandParameterKinds.boolean : (0, __stryke_json.isJsonSchema7NumberType)(schema) ? require_types_command.CommandParameterKinds.number : require_types_command.CommandParameterKinds.string,
24
+ kind: (0, _stryke_json.isJsonSchema7ArrayType)(schema) && schema.items ? (0, _stryke_json.isJsonSchema7NumberType)(schema.items) ? require_types_command.CommandParameterKinds.number : require_types_command.CommandParameterKinds.string : (0, _stryke_json.isJsonSchema7BooleanType)(schema) ? require_types_command.CommandParameterKinds.boolean : (0, _stryke_json.isJsonSchema7NumberType)(schema) ? require_types_command.CommandParameterKinds.number : require_types_command.CommandParameterKinds.string,
25
25
  title: schema.title,
26
26
  description: schema.description,
27
- alias: (0, __stryke_convert_to_array.toArray)(schema.alias || []),
27
+ alias: (0, _stryke_convert_to_array.toArray)(schema.alias || []),
28
28
  env: schema.env,
29
29
  optional: !parent.required?.includes(name),
30
30
  default: schema.default
31
31
  };
32
32
  if (result.kind === require_types_command.CommandParameterKinds.string || result.kind === require_types_command.CommandParameterKinds.number) {
33
- result.variadic = (0, __stryke_json.isJsonSchema7ArrayType)(schema);
33
+ result.variadic = (0, _stryke_json.isJsonSchema7ArrayType)(schema);
34
34
  if (result.kind === require_types_command.CommandParameterKinds.string) result.format = schema.format;
35
- if (((0, __stryke_json.isJsonSchema7StringType)(schema) || (0, __stryke_json.isJsonSchema7NumberType)(schema)) && schema.enum) result.choices = schema.enum;
35
+ if (((0, _stryke_json.isJsonSchema7StringType)(schema) || (0, _stryke_json.isJsonSchema7NumberType)(schema)) && schema.enum) result.choices = schema.enum;
36
36
  } else if (result.kind === require_types_command.CommandParameterKinds.boolean) {
37
37
  result.skipAddingNegative = schema.skipAddingNegative;
38
38
  result.isNegativeOf = schema.isNegativeOf;
@@ -51,17 +51,17 @@ resolveCommandOption.__type = [
51
51
  function resolveCommandArgument(schema) {
52
52
  const result = {
53
53
  name: schema.name,
54
- kind: (0, __stryke_json.isJsonSchema7ArrayType)(schema) && schema.items ? (0, __stryke_json.isJsonSchema7NumberType)(schema.items) ? require_types_command.CommandParameterKinds.number : require_types_command.CommandParameterKinds.string : (0, __stryke_json.isJsonSchema7BooleanType)(schema) ? require_types_command.CommandParameterKinds.boolean : (0, __stryke_json.isJsonSchema7NumberType)(schema) ? require_types_command.CommandParameterKinds.number : require_types_command.CommandParameterKinds.string,
54
+ kind: (0, _stryke_json.isJsonSchema7ArrayType)(schema) && schema.items ? (0, _stryke_json.isJsonSchema7NumberType)(schema.items) ? require_types_command.CommandParameterKinds.number : require_types_command.CommandParameterKinds.string : (0, _stryke_json.isJsonSchema7BooleanType)(schema) ? require_types_command.CommandParameterKinds.boolean : (0, _stryke_json.isJsonSchema7NumberType)(schema) ? require_types_command.CommandParameterKinds.number : require_types_command.CommandParameterKinds.string,
55
55
  title: schema.title,
56
56
  description: schema.description,
57
- alias: (0, __stryke_convert_to_array.toArray)(schema.alias || []),
57
+ alias: (0, _stryke_convert_to_array.toArray)(schema.alias || []),
58
58
  env: schema.env,
59
59
  default: schema.default
60
60
  };
61
61
  if (result.kind === require_types_command.CommandParameterKinds.string || result.kind === require_types_command.CommandParameterKinds.number) {
62
- result.variadic = (0, __stryke_json.isJsonSchema7ArrayType)(schema);
62
+ result.variadic = (0, _stryke_json.isJsonSchema7ArrayType)(schema);
63
63
  if (result.kind === require_types_command.CommandParameterKinds.string) result.format = schema.format;
64
- if (((0, __stryke_json.isJsonSchema7StringType)(schema) || (0, __stryke_json.isJsonSchema7NumberType)(schema)) && schema.enum) result.choices = schema.enum;
64
+ if (((0, _stryke_json.isJsonSchema7StringType)(schema) || (0, _stryke_json.isJsonSchema7NumberType)(schema)) && schema.enum) result.choices = schema.enum;
65
65
  }
66
66
  return result;
67
67
  }
@@ -75,16 +75,16 @@ resolveCommandArgument.__type = [
75
75
  async function resolveFromExports(ctx) {
76
76
  validateExports(ctx);
77
77
  const metadata = ctx.module?.metadata ?? {};
78
- if ((0, __stryke_type_checks_is_set_string.isSetString)(metadata.title)) ctx.output.title = metadata.title;
79
- if ((0, __stryke_type_checks_is_set_string.isSetString)(metadata.description)) ctx.output.description = metadata.description;
80
- if ((0, __stryke_type_checks_is_set_string.isSetString)(metadata.alias) || Array.isArray(metadata.alias) && metadata.alias.length > 0) ctx.output.alias = (0, __stryke_convert_to_array.toArray)(metadata.alias);
81
- if ((0, __stryke_type_checks_is_set_string.isSetString)(metadata.icon)) ctx.output.icon = metadata.icon;
82
- if ((0, __stryke_type_checks_is_set_object.isSetObject)(ctx.module?.options)) if ((0, __stryke_zod.isZod3Type)(ctx.module.options) || (0, __stryke_json.isStandardJsonSchema)(ctx.module.options) || (0, __stryke_json.isJsonSchema7ObjectType)(ctx.module.options)) {
78
+ if ((0, _stryke_type_checks_is_set_string.isSetString)(metadata.title)) ctx.output.title = metadata.title;
79
+ if ((0, _stryke_type_checks_is_set_string.isSetString)(metadata.description)) ctx.output.description = metadata.description;
80
+ if ((0, _stryke_type_checks_is_set_string.isSetString)(metadata.alias) || Array.isArray(metadata.alias) && metadata.alias.length > 0) ctx.output.alias = (0, _stryke_convert_to_array.toArray)(metadata.alias);
81
+ if ((0, _stryke_type_checks_is_set_string.isSetString)(metadata.icon)) ctx.output.icon = metadata.icon;
82
+ if ((0, _stryke_type_checks_is_set_object.isSetObject)(ctx.module?.options)) if ((0, _stryke_zod.isZod3Type)(ctx.module.options) || (0, _stryke_json.isStandardJsonSchema)(ctx.module.options) || (0, _stryke_json.isJsonSchema7ObjectType)(ctx.module.options)) {
83
83
  let jsonSchema;
84
- if ((0, __stryke_zod.isZod3Type)(ctx.module.options)) jsonSchema = (0, __stryke_zod.extractJsonSchema7)(ctx.module.options);
85
- else if ((0, __stryke_json.isStandardJsonSchema)(ctx.module.options)) jsonSchema = ctx.module.options["~standard"].jsonSchema.input({ target: "draft-07" });
84
+ if ((0, _stryke_zod.isZod3Type)(ctx.module.options)) jsonSchema = (0, _stryke_zod.extractJsonSchema7)(ctx.module.options);
85
+ else if ((0, _stryke_json.isStandardJsonSchema)(ctx.module.options)) jsonSchema = ctx.module.options["~standard"].jsonSchema.input({ target: "draft-07" });
86
86
  else jsonSchema = ctx.module.options;
87
- if (!(0, __stryke_json.isJsonSchema7ObjectType)(jsonSchema)) throw new TypeError(`Command options for command at path "${ctx.input.command.path}" must be defined as a Zod object schema, a standard JSON Schema object, or a JSON Schema object.`);
87
+ if (!(0, _stryke_json.isJsonSchema7ObjectType)(jsonSchema)) throw new TypeError(`Command options for command at path "${ctx.input.command.path}" must be defined as a Zod object schema, a standard JSON Schema object, or a JSON Schema object.`);
88
88
  ctx.output.options = Object.fromEntries(Object.entries(jsonSchema.properties).map(__assignType(([name, property]) => [name, resolveCommandOption(name, jsonSchema, property)], [
89
89
  "param0",
90
90
  "",
@@ -93,19 +93,19 @@ async function resolveFromExports(ctx) {
93
93
  } else if (Object.values(ctx.module.options).every(require_type_checks.isCommandParameterConfig)) ctx.output.options = Object.fromEntries(Object.entries(ctx.module.options).map(__assignType(([name, option]) => [name, {
94
94
  name,
95
95
  ...option,
96
- alias: (0, __stryke_convert_to_array.toArray)(option.alias)
96
+ alias: (0, _stryke_convert_to_array.toArray)(option.alias)
97
97
  }], [
98
98
  "param0",
99
99
  "",
100
100
  "P\"2!\"/\""
101
101
  ])).concat(Object.entries(ctx.output.options)));
102
102
  else throw new TypeError(`Command options for command at path "${ctx.input.command.path}" must be defined as a record of valid CommandOption objects, a Zod object schema, or a standard JSON Schema object.`);
103
- if ((0, __stryke_type_checks_is_set_object.isSetObject)(ctx.module?.args)) if ((0, __stryke_zod.isZod3Type)(ctx.module.args) || (0, __stryke_json.isStandardJsonSchema)(ctx.module.args) || (0, __stryke_json.isJsonSchema7TupleType)(ctx.module.args)) {
103
+ if ((0, _stryke_type_checks_is_set_object.isSetObject)(ctx.module?.args)) if ((0, _stryke_zod.isZod3Type)(ctx.module.args) || (0, _stryke_json.isStandardJsonSchema)(ctx.module.args) || (0, _stryke_json.isJsonSchema7TupleType)(ctx.module.args)) {
104
104
  let jsonSchema;
105
- if ((0, __stryke_zod.isZod3Type)(ctx.module.args)) jsonSchema = (0, __stryke_zod.extractJsonSchema7)(ctx.module.args);
106
- else if ((0, __stryke_json.isStandardJsonSchema)(ctx.module.args)) jsonSchema = ctx.module.args["~standard"].jsonSchema.input({ target: "draft-07" });
105
+ if ((0, _stryke_zod.isZod3Type)(ctx.module.args)) jsonSchema = (0, _stryke_zod.extractJsonSchema7)(ctx.module.args);
106
+ else if ((0, _stryke_json.isStandardJsonSchema)(ctx.module.args)) jsonSchema = ctx.module.args["~standard"].jsonSchema.input({ target: "draft-07" });
107
107
  else jsonSchema = ctx.module.args;
108
- if (!(0, __stryke_json.isJsonSchema7TupleType)(jsonSchema)) throw new TypeError(`Command arguments for command at path "${ctx.input.command.path}" must be defined as a Zod tuple schema, a standard JSON Schema tuple object, or a JSON Schema tuple object.`);
108
+ if (!(0, _stryke_json.isJsonSchema7TupleType)(jsonSchema)) throw new TypeError(`Command arguments for command at path "${ctx.input.command.path}" must be defined as a Zod tuple schema, a standard JSON Schema tuple object, or a JSON Schema tuple object.`);
109
109
  ctx.output.args = jsonSchema.items.map(__assignType((item) => resolveCommandArgument(item), [
110
110
  "item",
111
111
  "",
@@ -113,7 +113,7 @@ async function resolveFromExports(ctx) {
113
113
  ]));
114
114
  } else if (Object.values(ctx.module.args).every(require_type_checks.isCommandParameterConfig)) ctx.output.args = ctx.module.args.map(__assignType((arg) => ({
115
115
  ...arg,
116
- alias: (0, __stryke_convert_to_array.toArray)(arg.alias)
116
+ alias: (0, _stryke_convert_to_array.toArray)(arg.alias)
117
117
  }), [
118
118
  "arg",
119
119
  "",
@@ -129,7 +129,7 @@ resolveFromExports.__type = [
129
129
  ];
130
130
  function validateExports(ctx) {
131
131
  if (!ctx.module) throw new Error(`Command module at path "${ctx.input.command.path}" is undefined or null. Please ensure the module exports a valid command.`);
132
- else if (!(0, __stryke_type_checks_is_set_object.isSetObject)(ctx.module)) throw new TypeError(`Command module at path "${ctx.input.command.path}" is not an object. Please ensure the module exports a valid command.`);
132
+ else if (!(0, _stryke_type_checks_is_set_object.isSetObject)(ctx.module)) throw new TypeError(`Command module at path "${ctx.input.command.path}" is not an object. Please ensure the module exports a valid command.`);
133
133
  else if (!("default" in ctx.module)) throw new Error(`Command module at path "${ctx.input.command.path}" does not appear to be valid. Please ensure the module's default export is a valid command handler function.`);
134
134
  }
135
135
  validateExports.__type = [
@@ -1 +1 @@
1
- {"version":3,"file":"module.cjs","names":[],"sources":["../../src/resolver/module.ts"],"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 { toArray } from \"@stryke/convert/to-array\";\nimport type {\n JsonSchema7EnumType,\n JsonSchema7ObjectType,\n JsonSchema7Type\n} from \"@stryke/json\";\nimport {\n isJsonSchema7ArrayType,\n isJsonSchema7BooleanType,\n isJsonSchema7NumberType,\n isJsonSchema7ObjectType,\n isJsonSchema7StringType,\n isJsonSchema7TupleType,\n isStandardJsonSchema\n} from \"@stryke/json\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { extractJsonSchema7, isZod3Type } from \"@stryke/zod\";\nimport { isCommandParameterConfig } from \"../plugin-utils\";\nimport type {\n CommandArgument,\n CommandOption,\n CommandParameterConfig,\n Context,\n StringCommandParameter\n} from \"../types\";\nimport { CommandParameterKinds } from \"../types\";\nimport type { ResolverContext } from \"./types\";\n\nfunction resolveCommandOption(\n name: string,\n parent: JsonSchema7ObjectType,\n schema: JsonSchema7Type\n): Partial<CommandOption> {\n const result = {\n name,\n kind:\n isJsonSchema7ArrayType(schema) && schema.items\n ? isJsonSchema7NumberType(schema.items)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string\n : isJsonSchema7BooleanType(schema)\n ? CommandParameterKinds.boolean\n : isJsonSchema7NumberType(schema)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string,\n title: schema.title,\n description: schema.description,\n alias: toArray((schema as { alias?: string | string[] }).alias || []),\n env: (schema as { env?: string }).env,\n optional: !parent.required?.includes(name),\n default: schema.default\n } as Partial<CommandOption>;\n if (\n result.kind === CommandParameterKinds.string ||\n result.kind === CommandParameterKinds.number\n ) {\n result.variadic = isJsonSchema7ArrayType(schema);\n if (result.kind === CommandParameterKinds.string) {\n result.format = (\n schema as { format?: StringCommandParameter[\"format\"] }\n ).format;\n }\n\n if (\n (isJsonSchema7StringType(schema) || isJsonSchema7NumberType(schema)) &&\n (schema as JsonSchema7EnumType).enum\n ) {\n result.choices = (schema as JsonSchema7EnumType).enum;\n }\n } else if (result.kind === CommandParameterKinds.boolean) {\n result.skipAddingNegative = (\n schema as { skipAddingNegative?: boolean }\n ).skipAddingNegative;\n result.isNegativeOf = (schema as { isNegativeOf?: string }).isNegativeOf;\n }\n\n return result;\n}\n\nfunction resolveCommandArgument(\n schema: JsonSchema7Type\n): Partial<CommandArgument> {\n const result = {\n name: (schema as { name?: string }).name,\n kind:\n isJsonSchema7ArrayType(schema) && schema.items\n ? isJsonSchema7NumberType(schema.items)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string\n : isJsonSchema7BooleanType(schema)\n ? CommandParameterKinds.boolean\n : isJsonSchema7NumberType(schema)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string,\n title: schema.title,\n description: schema.description,\n alias: toArray((schema as { alias?: string | string[] }).alias || []),\n env: (schema as { env?: string }).env,\n default: schema.default\n } as Partial<CommandArgument>;\n if (\n result.kind === CommandParameterKinds.string ||\n result.kind === CommandParameterKinds.number\n ) {\n result.variadic = isJsonSchema7ArrayType(schema);\n if (result.kind === CommandParameterKinds.string) {\n result.format = (\n schema as { format?: StringCommandParameter[\"format\"] }\n ).format;\n }\n\n if (\n (isJsonSchema7StringType(schema) || isJsonSchema7NumberType(schema)) &&\n (schema as JsonSchema7EnumType).enum\n ) {\n result.choices = (schema as JsonSchema7EnumType).enum;\n }\n }\n\n return result;\n}\n\nexport async function resolveFromExports<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n) {\n validateExports(ctx);\n\n const metadata = ctx.module?.metadata ?? {};\n if (isSetString(metadata.title)) {\n ctx.output.title = metadata.title;\n }\n if (isSetString(metadata.description)) {\n ctx.output.description = metadata.description;\n }\n if (\n isSetString(metadata.alias) ||\n (Array.isArray(metadata.alias) && metadata.alias.length > 0)\n ) {\n ctx.output.alias = toArray(metadata.alias);\n }\n if (isSetString(metadata.icon)) {\n ctx.output.icon = metadata.icon;\n }\n\n if (isSetObject(ctx.module?.options)) {\n if (\n isZod3Type(ctx.module.options) ||\n isStandardJsonSchema(ctx.module.options) ||\n isJsonSchema7ObjectType(ctx.module.options)\n ) {\n let jsonSchema: JsonSchema7Type;\n if (isZod3Type(ctx.module.options)) {\n jsonSchema = extractJsonSchema7(ctx.module.options);\n } else if (isStandardJsonSchema(ctx.module.options)) {\n jsonSchema = ctx.module.options[\"~standard\"].jsonSchema.input({\n target: \"draft-07\"\n });\n } else {\n jsonSchema = ctx.module.options as JsonSchema7ObjectType;\n }\n\n if (!isJsonSchema7ObjectType(jsonSchema)) {\n throw new TypeError(\n `Command options for command at path \"${\n ctx.input.command.path\n }\" must be defined as a Zod object schema, a standard JSON Schema object, or a JSON Schema object.`\n );\n }\n\n ctx.output.options = Object.fromEntries(\n Object.entries((jsonSchema as JsonSchema7ObjectType).properties)\n .map(([name, property]) => [\n name,\n resolveCommandOption(name, jsonSchema, property)\n ])\n .concat(Object.entries(ctx.output.options))\n ) as Record<string, CommandOption>;\n } else if (\n Object.values(ctx.module.options).every(isCommandParameterConfig)\n ) {\n ctx.output.options = Object.fromEntries(\n Object.entries(\n ctx.module.options as Record<string, CommandParameterConfig>\n )\n .map(([name, option]) => [\n name,\n { name, ...option, alias: toArray(option.alias) }\n ])\n .concat(Object.entries(ctx.output.options))\n ) as Record<string, CommandOption>;\n } else {\n throw new TypeError(\n `Command options for command at path \"${\n ctx.input.command.path\n }\" must be defined as a record of valid CommandOption objects, a Zod object schema, or a standard JSON Schema object.`\n );\n }\n }\n\n if (isSetObject(ctx.module?.args)) {\n if (\n isZod3Type(ctx.module.args) ||\n isStandardJsonSchema(ctx.module.args) ||\n isJsonSchema7TupleType(ctx.module.args)\n ) {\n let jsonSchema: JsonSchema7Type;\n if (isZod3Type(ctx.module.args)) {\n jsonSchema = extractJsonSchema7(ctx.module.args);\n } else if (isStandardJsonSchema(ctx.module.args)) {\n jsonSchema = ctx.module.args[\"~standard\"].jsonSchema.input({\n target: \"draft-07\"\n });\n } else {\n jsonSchema = ctx.module.args;\n }\n\n if (!isJsonSchema7TupleType(jsonSchema)) {\n throw new TypeError(\n `Command arguments for command at path \"${\n ctx.input.command.path\n }\" must be defined as a Zod tuple schema, a standard JSON Schema tuple object, or a JSON Schema tuple object.`\n );\n }\n\n ctx.output.args = jsonSchema.items.map(item =>\n resolveCommandArgument(item)\n ) as CommandArgument[];\n } else if (Object.values(ctx.module.args).every(isCommandParameterConfig)) {\n ctx.output.args = ctx.module.args.map(arg => ({\n ...arg,\n alias: toArray(arg.alias)\n })) as CommandArgument[];\n } else {\n throw new TypeError(\n `Command arguments for command at path \"${\n ctx.input.command.path\n }\" must be defined as a record of valid CommandArgument objects, a Zod tuple schema, or a standard JSON Schema tuple object.`\n );\n }\n }\n}\n\nfunction validateExports<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n) {\n if (!ctx.module) {\n throw new Error(\n `Command module at path \"${\n ctx.input.command.path\n }\" is undefined or null. Please ensure the module exports a valid command.`\n );\n } else if (!isSetObject(ctx.module)) {\n throw new TypeError(\n `Command module at path \"${\n ctx.input.command.path\n }\" is not an object. Please ensure the module exports a valid command.`\n );\n } else if (!(\"default\" in ctx.module)) {\n throw new Error(\n `Command module at path \"${\n ctx.input.command.path\n }\" does not appear to be valid. Please ensure the module's default export is a valid command handler function.`\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"module.cjs","names":[],"sources":["../../src/resolver/module.ts"],"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 { toArray } from \"@stryke/convert/to-array\";\nimport type {\n JsonSchema7EnumType,\n JsonSchema7ObjectType,\n JsonSchema7Type\n} from \"@stryke/json\";\nimport {\n isJsonSchema7ArrayType,\n isJsonSchema7BooleanType,\n isJsonSchema7NumberType,\n isJsonSchema7ObjectType,\n isJsonSchema7StringType,\n isJsonSchema7TupleType,\n isStandardJsonSchema\n} from \"@stryke/json\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { extractJsonSchema7, isZod3Type } from \"@stryke/zod\";\nimport { isCommandParameterConfig } from \"../plugin-utils\";\nimport type {\n CommandArgument,\n CommandOption,\n CommandParameterConfig,\n Context,\n StringCommandParameter\n} from \"../types\";\nimport { CommandParameterKinds } from \"../types\";\nimport type { ResolverContext } from \"./types\";\n\nfunction resolveCommandOption(\n name: string,\n parent: JsonSchema7ObjectType,\n schema: JsonSchema7Type\n): Partial<CommandOption> {\n const result = {\n name,\n kind:\n isJsonSchema7ArrayType(schema) && schema.items\n ? isJsonSchema7NumberType(schema.items)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string\n : isJsonSchema7BooleanType(schema)\n ? CommandParameterKinds.boolean\n : isJsonSchema7NumberType(schema)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string,\n title: schema.title,\n description: schema.description,\n alias: toArray((schema as { alias?: string | string[] }).alias || []),\n env: (schema as { env?: string }).env,\n optional: !parent.required?.includes(name),\n default: schema.default\n } as Partial<CommandOption>;\n if (\n result.kind === CommandParameterKinds.string ||\n result.kind === CommandParameterKinds.number\n ) {\n result.variadic = isJsonSchema7ArrayType(schema);\n if (result.kind === CommandParameterKinds.string) {\n result.format = (\n schema as { format?: StringCommandParameter[\"format\"] }\n ).format;\n }\n\n if (\n (isJsonSchema7StringType(schema) || isJsonSchema7NumberType(schema)) &&\n (schema as JsonSchema7EnumType).enum\n ) {\n result.choices = (schema as JsonSchema7EnumType).enum;\n }\n } else if (result.kind === CommandParameterKinds.boolean) {\n result.skipAddingNegative = (\n schema as { skipAddingNegative?: boolean }\n ).skipAddingNegative;\n result.isNegativeOf = (schema as { isNegativeOf?: string }).isNegativeOf;\n }\n\n return result;\n}\n\nfunction resolveCommandArgument(\n schema: JsonSchema7Type\n): Partial<CommandArgument> {\n const result = {\n name: (schema as { name?: string }).name,\n kind:\n isJsonSchema7ArrayType(schema) && schema.items\n ? isJsonSchema7NumberType(schema.items)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string\n : isJsonSchema7BooleanType(schema)\n ? CommandParameterKinds.boolean\n : isJsonSchema7NumberType(schema)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string,\n title: schema.title,\n description: schema.description,\n alias: toArray((schema as { alias?: string | string[] }).alias || []),\n env: (schema as { env?: string }).env,\n default: schema.default\n } as Partial<CommandArgument>;\n if (\n result.kind === CommandParameterKinds.string ||\n result.kind === CommandParameterKinds.number\n ) {\n result.variadic = isJsonSchema7ArrayType(schema);\n if (result.kind === CommandParameterKinds.string) {\n result.format = (\n schema as { format?: StringCommandParameter[\"format\"] }\n ).format;\n }\n\n if (\n (isJsonSchema7StringType(schema) || isJsonSchema7NumberType(schema)) &&\n (schema as JsonSchema7EnumType).enum\n ) {\n result.choices = (schema as JsonSchema7EnumType).enum;\n }\n }\n\n return result;\n}\n\nexport async function resolveFromExports<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n) {\n validateExports(ctx);\n\n const metadata = ctx.module?.metadata ?? {};\n if (isSetString(metadata.title)) {\n ctx.output.title = metadata.title;\n }\n if (isSetString(metadata.description)) {\n ctx.output.description = metadata.description;\n }\n if (\n isSetString(metadata.alias) ||\n (Array.isArray(metadata.alias) && metadata.alias.length > 0)\n ) {\n ctx.output.alias = toArray(metadata.alias);\n }\n if (isSetString(metadata.icon)) {\n ctx.output.icon = metadata.icon;\n }\n\n if (isSetObject(ctx.module?.options)) {\n if (\n isZod3Type(ctx.module.options) ||\n isStandardJsonSchema(ctx.module.options) ||\n isJsonSchema7ObjectType(ctx.module.options)\n ) {\n let jsonSchema: JsonSchema7Type;\n if (isZod3Type(ctx.module.options)) {\n jsonSchema = extractJsonSchema7(ctx.module.options);\n } else if (isStandardJsonSchema(ctx.module.options)) {\n jsonSchema = ctx.module.options[\"~standard\"].jsonSchema.input({\n target: \"draft-07\"\n });\n } else {\n jsonSchema = ctx.module.options as JsonSchema7ObjectType;\n }\n\n if (!isJsonSchema7ObjectType(jsonSchema)) {\n throw new TypeError(\n `Command options for command at path \"${\n ctx.input.command.path\n }\" must be defined as a Zod object schema, a standard JSON Schema object, or a JSON Schema object.`\n );\n }\n\n ctx.output.options = Object.fromEntries(\n Object.entries((jsonSchema as JsonSchema7ObjectType).properties)\n .map(([name, property]) => [\n name,\n resolveCommandOption(name, jsonSchema, property)\n ])\n .concat(Object.entries(ctx.output.options))\n ) as Record<string, CommandOption>;\n } else if (\n Object.values(ctx.module.options).every(isCommandParameterConfig)\n ) {\n ctx.output.options = Object.fromEntries(\n Object.entries(\n ctx.module.options as Record<string, CommandParameterConfig>\n )\n .map(([name, option]) => [\n name,\n { name, ...option, alias: toArray(option.alias) }\n ])\n .concat(Object.entries(ctx.output.options))\n ) as Record<string, CommandOption>;\n } else {\n throw new TypeError(\n `Command options for command at path \"${\n ctx.input.command.path\n }\" must be defined as a record of valid CommandOption objects, a Zod object schema, or a standard JSON Schema object.`\n );\n }\n }\n\n if (isSetObject(ctx.module?.args)) {\n if (\n isZod3Type(ctx.module.args) ||\n isStandardJsonSchema(ctx.module.args) ||\n isJsonSchema7TupleType(ctx.module.args)\n ) {\n let jsonSchema: JsonSchema7Type;\n if (isZod3Type(ctx.module.args)) {\n jsonSchema = extractJsonSchema7(ctx.module.args);\n } else if (isStandardJsonSchema(ctx.module.args)) {\n jsonSchema = ctx.module.args[\"~standard\"].jsonSchema.input({\n target: \"draft-07\"\n });\n } else {\n jsonSchema = ctx.module.args;\n }\n\n if (!isJsonSchema7TupleType(jsonSchema)) {\n throw new TypeError(\n `Command arguments for command at path \"${\n ctx.input.command.path\n }\" must be defined as a Zod tuple schema, a standard JSON Schema tuple object, or a JSON Schema tuple object.`\n );\n }\n\n ctx.output.args = jsonSchema.items.map(item =>\n resolveCommandArgument(item)\n ) as CommandArgument[];\n } else if (Object.values(ctx.module.args).every(isCommandParameterConfig)) {\n ctx.output.args = ctx.module.args.map(arg => ({\n ...arg,\n alias: toArray(arg.alias)\n })) as CommandArgument[];\n } else {\n throw new TypeError(\n `Command arguments for command at path \"${\n ctx.input.command.path\n }\" must be defined as a record of valid CommandArgument objects, a Zod tuple schema, or a standard JSON Schema tuple object.`\n );\n }\n }\n}\n\nfunction validateExports<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n) {\n if (!ctx.module) {\n throw new Error(\n `Command module at path \"${\n ctx.input.command.path\n }\" is undefined or null. Please ensure the module exports a valid command.`\n );\n } else if (!isSetObject(ctx.module)) {\n throw new TypeError(\n `Command module at path \"${\n ctx.input.command.path\n }\" is not an object. Please ensure the module exports a valid command.`\n );\n } else if (!(\"default\" in ctx.module)) {\n throw new Error(\n `Command module at path \"${\n ctx.input.command.path\n }\" does not appear to be valid. Please ensure the module's default export is a valid command handler function.`\n );\n }\n}\n"],"mappings":"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"}
@@ -2,8 +2,8 @@ import { CommandParameterKinds } from "../types/command.mjs";
2
2
  import { isCommandParameterConfig } from "../plugin-utils/type-checks.mjs";
3
3
  import "../plugin-utils/index.mjs";
4
4
  import { toArray } from "@stryke/convert/to-array";
5
- import { isSetObject } from "@stryke/type-checks/is-set-object";
6
5
  import { isSetString } from "@stryke/type-checks/is-set-string";
6
+ import { isSetObject } from "@stryke/type-checks/is-set-object";
7
7
  import { isJsonSchema7ArrayType, isJsonSchema7BooleanType, isJsonSchema7NumberType, isJsonSchema7ObjectType, isJsonSchema7StringType, isJsonSchema7TupleType, isStandardJsonSchema } from "@stryke/json";
8
8
  import { extractJsonSchema7, isZod3Type } from "@stryke/zod";
9
9
 
@@ -1 +1 @@
1
- {"version":3,"file":"module.mjs","names":[],"sources":["../../src/resolver/module.ts"],"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 { toArray } from \"@stryke/convert/to-array\";\nimport type {\n JsonSchema7EnumType,\n JsonSchema7ObjectType,\n JsonSchema7Type\n} from \"@stryke/json\";\nimport {\n isJsonSchema7ArrayType,\n isJsonSchema7BooleanType,\n isJsonSchema7NumberType,\n isJsonSchema7ObjectType,\n isJsonSchema7StringType,\n isJsonSchema7TupleType,\n isStandardJsonSchema\n} from \"@stryke/json\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { extractJsonSchema7, isZod3Type } from \"@stryke/zod\";\nimport { isCommandParameterConfig } from \"../plugin-utils\";\nimport type {\n CommandArgument,\n CommandOption,\n CommandParameterConfig,\n Context,\n StringCommandParameter\n} from \"../types\";\nimport { CommandParameterKinds } from \"../types\";\nimport type { ResolverContext } from \"./types\";\n\nfunction resolveCommandOption(\n name: string,\n parent: JsonSchema7ObjectType,\n schema: JsonSchema7Type\n): Partial<CommandOption> {\n const result = {\n name,\n kind:\n isJsonSchema7ArrayType(schema) && schema.items\n ? isJsonSchema7NumberType(schema.items)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string\n : isJsonSchema7BooleanType(schema)\n ? CommandParameterKinds.boolean\n : isJsonSchema7NumberType(schema)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string,\n title: schema.title,\n description: schema.description,\n alias: toArray((schema as { alias?: string | string[] }).alias || []),\n env: (schema as { env?: string }).env,\n optional: !parent.required?.includes(name),\n default: schema.default\n } as Partial<CommandOption>;\n if (\n result.kind === CommandParameterKinds.string ||\n result.kind === CommandParameterKinds.number\n ) {\n result.variadic = isJsonSchema7ArrayType(schema);\n if (result.kind === CommandParameterKinds.string) {\n result.format = (\n schema as { format?: StringCommandParameter[\"format\"] }\n ).format;\n }\n\n if (\n (isJsonSchema7StringType(schema) || isJsonSchema7NumberType(schema)) &&\n (schema as JsonSchema7EnumType).enum\n ) {\n result.choices = (schema as JsonSchema7EnumType).enum;\n }\n } else if (result.kind === CommandParameterKinds.boolean) {\n result.skipAddingNegative = (\n schema as { skipAddingNegative?: boolean }\n ).skipAddingNegative;\n result.isNegativeOf = (schema as { isNegativeOf?: string }).isNegativeOf;\n }\n\n return result;\n}\n\nfunction resolveCommandArgument(\n schema: JsonSchema7Type\n): Partial<CommandArgument> {\n const result = {\n name: (schema as { name?: string }).name,\n kind:\n isJsonSchema7ArrayType(schema) && schema.items\n ? isJsonSchema7NumberType(schema.items)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string\n : isJsonSchema7BooleanType(schema)\n ? CommandParameterKinds.boolean\n : isJsonSchema7NumberType(schema)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string,\n title: schema.title,\n description: schema.description,\n alias: toArray((schema as { alias?: string | string[] }).alias || []),\n env: (schema as { env?: string }).env,\n default: schema.default\n } as Partial<CommandArgument>;\n if (\n result.kind === CommandParameterKinds.string ||\n result.kind === CommandParameterKinds.number\n ) {\n result.variadic = isJsonSchema7ArrayType(schema);\n if (result.kind === CommandParameterKinds.string) {\n result.format = (\n schema as { format?: StringCommandParameter[\"format\"] }\n ).format;\n }\n\n if (\n (isJsonSchema7StringType(schema) || isJsonSchema7NumberType(schema)) &&\n (schema as JsonSchema7EnumType).enum\n ) {\n result.choices = (schema as JsonSchema7EnumType).enum;\n }\n }\n\n return result;\n}\n\nexport async function resolveFromExports<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n) {\n validateExports(ctx);\n\n const metadata = ctx.module?.metadata ?? {};\n if (isSetString(metadata.title)) {\n ctx.output.title = metadata.title;\n }\n if (isSetString(metadata.description)) {\n ctx.output.description = metadata.description;\n }\n if (\n isSetString(metadata.alias) ||\n (Array.isArray(metadata.alias) && metadata.alias.length > 0)\n ) {\n ctx.output.alias = toArray(metadata.alias);\n }\n if (isSetString(metadata.icon)) {\n ctx.output.icon = metadata.icon;\n }\n\n if (isSetObject(ctx.module?.options)) {\n if (\n isZod3Type(ctx.module.options) ||\n isStandardJsonSchema(ctx.module.options) ||\n isJsonSchema7ObjectType(ctx.module.options)\n ) {\n let jsonSchema: JsonSchema7Type;\n if (isZod3Type(ctx.module.options)) {\n jsonSchema = extractJsonSchema7(ctx.module.options);\n } else if (isStandardJsonSchema(ctx.module.options)) {\n jsonSchema = ctx.module.options[\"~standard\"].jsonSchema.input({\n target: \"draft-07\"\n });\n } else {\n jsonSchema = ctx.module.options as JsonSchema7ObjectType;\n }\n\n if (!isJsonSchema7ObjectType(jsonSchema)) {\n throw new TypeError(\n `Command options for command at path \"${\n ctx.input.command.path\n }\" must be defined as a Zod object schema, a standard JSON Schema object, or a JSON Schema object.`\n );\n }\n\n ctx.output.options = Object.fromEntries(\n Object.entries((jsonSchema as JsonSchema7ObjectType).properties)\n .map(([name, property]) => [\n name,\n resolveCommandOption(name, jsonSchema, property)\n ])\n .concat(Object.entries(ctx.output.options))\n ) as Record<string, CommandOption>;\n } else if (\n Object.values(ctx.module.options).every(isCommandParameterConfig)\n ) {\n ctx.output.options = Object.fromEntries(\n Object.entries(\n ctx.module.options as Record<string, CommandParameterConfig>\n )\n .map(([name, option]) => [\n name,\n { name, ...option, alias: toArray(option.alias) }\n ])\n .concat(Object.entries(ctx.output.options))\n ) as Record<string, CommandOption>;\n } else {\n throw new TypeError(\n `Command options for command at path \"${\n ctx.input.command.path\n }\" must be defined as a record of valid CommandOption objects, a Zod object schema, or a standard JSON Schema object.`\n );\n }\n }\n\n if (isSetObject(ctx.module?.args)) {\n if (\n isZod3Type(ctx.module.args) ||\n isStandardJsonSchema(ctx.module.args) ||\n isJsonSchema7TupleType(ctx.module.args)\n ) {\n let jsonSchema: JsonSchema7Type;\n if (isZod3Type(ctx.module.args)) {\n jsonSchema = extractJsonSchema7(ctx.module.args);\n } else if (isStandardJsonSchema(ctx.module.args)) {\n jsonSchema = ctx.module.args[\"~standard\"].jsonSchema.input({\n target: \"draft-07\"\n });\n } else {\n jsonSchema = ctx.module.args;\n }\n\n if (!isJsonSchema7TupleType(jsonSchema)) {\n throw new TypeError(\n `Command arguments for command at path \"${\n ctx.input.command.path\n }\" must be defined as a Zod tuple schema, a standard JSON Schema tuple object, or a JSON Schema tuple object.`\n );\n }\n\n ctx.output.args = jsonSchema.items.map(item =>\n resolveCommandArgument(item)\n ) as CommandArgument[];\n } else if (Object.values(ctx.module.args).every(isCommandParameterConfig)) {\n ctx.output.args = ctx.module.args.map(arg => ({\n ...arg,\n alias: toArray(arg.alias)\n })) as CommandArgument[];\n } else {\n throw new TypeError(\n `Command arguments for command at path \"${\n ctx.input.command.path\n }\" must be defined as a record of valid CommandArgument objects, a Zod tuple schema, or a standard JSON Schema tuple object.`\n );\n }\n }\n}\n\nfunction validateExports<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n) {\n if (!ctx.module) {\n throw new Error(\n `Command module at path \"${\n ctx.input.command.path\n }\" is undefined or null. Please ensure the module exports a valid command.`\n );\n } else if (!isSetObject(ctx.module)) {\n throw new TypeError(\n `Command module at path \"${\n ctx.input.command.path\n }\" is not an object. Please ensure the module exports a valid command.`\n );\n } else if (!(\"default\" in ctx.module)) {\n throw new Error(\n `Command module at path \"${\n ctx.input.command.path\n }\" does not appear to be valid. Please ensure the module's default export is a valid command handler function.`\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"module.mjs","names":[],"sources":["../../src/resolver/module.ts"],"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 { toArray } from \"@stryke/convert/to-array\";\nimport type {\n JsonSchema7EnumType,\n JsonSchema7ObjectType,\n JsonSchema7Type\n} from \"@stryke/json\";\nimport {\n isJsonSchema7ArrayType,\n isJsonSchema7BooleanType,\n isJsonSchema7NumberType,\n isJsonSchema7ObjectType,\n isJsonSchema7StringType,\n isJsonSchema7TupleType,\n isStandardJsonSchema\n} from \"@stryke/json\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { extractJsonSchema7, isZod3Type } from \"@stryke/zod\";\nimport { isCommandParameterConfig } from \"../plugin-utils\";\nimport type {\n CommandArgument,\n CommandOption,\n CommandParameterConfig,\n Context,\n StringCommandParameter\n} from \"../types\";\nimport { CommandParameterKinds } from \"../types\";\nimport type { ResolverContext } from \"./types\";\n\nfunction resolveCommandOption(\n name: string,\n parent: JsonSchema7ObjectType,\n schema: JsonSchema7Type\n): Partial<CommandOption> {\n const result = {\n name,\n kind:\n isJsonSchema7ArrayType(schema) && schema.items\n ? isJsonSchema7NumberType(schema.items)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string\n : isJsonSchema7BooleanType(schema)\n ? CommandParameterKinds.boolean\n : isJsonSchema7NumberType(schema)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string,\n title: schema.title,\n description: schema.description,\n alias: toArray((schema as { alias?: string | string[] }).alias || []),\n env: (schema as { env?: string }).env,\n optional: !parent.required?.includes(name),\n default: schema.default\n } as Partial<CommandOption>;\n if (\n result.kind === CommandParameterKinds.string ||\n result.kind === CommandParameterKinds.number\n ) {\n result.variadic = isJsonSchema7ArrayType(schema);\n if (result.kind === CommandParameterKinds.string) {\n result.format = (\n schema as { format?: StringCommandParameter[\"format\"] }\n ).format;\n }\n\n if (\n (isJsonSchema7StringType(schema) || isJsonSchema7NumberType(schema)) &&\n (schema as JsonSchema7EnumType).enum\n ) {\n result.choices = (schema as JsonSchema7EnumType).enum;\n }\n } else if (result.kind === CommandParameterKinds.boolean) {\n result.skipAddingNegative = (\n schema as { skipAddingNegative?: boolean }\n ).skipAddingNegative;\n result.isNegativeOf = (schema as { isNegativeOf?: string }).isNegativeOf;\n }\n\n return result;\n}\n\nfunction resolveCommandArgument(\n schema: JsonSchema7Type\n): Partial<CommandArgument> {\n const result = {\n name: (schema as { name?: string }).name,\n kind:\n isJsonSchema7ArrayType(schema) && schema.items\n ? isJsonSchema7NumberType(schema.items)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string\n : isJsonSchema7BooleanType(schema)\n ? CommandParameterKinds.boolean\n : isJsonSchema7NumberType(schema)\n ? CommandParameterKinds.number\n : CommandParameterKinds.string,\n title: schema.title,\n description: schema.description,\n alias: toArray((schema as { alias?: string | string[] }).alias || []),\n env: (schema as { env?: string }).env,\n default: schema.default\n } as Partial<CommandArgument>;\n if (\n result.kind === CommandParameterKinds.string ||\n result.kind === CommandParameterKinds.number\n ) {\n result.variadic = isJsonSchema7ArrayType(schema);\n if (result.kind === CommandParameterKinds.string) {\n result.format = (\n schema as { format?: StringCommandParameter[\"format\"] }\n ).format;\n }\n\n if (\n (isJsonSchema7StringType(schema) || isJsonSchema7NumberType(schema)) &&\n (schema as JsonSchema7EnumType).enum\n ) {\n result.choices = (schema as JsonSchema7EnumType).enum;\n }\n }\n\n return result;\n}\n\nexport async function resolveFromExports<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n) {\n validateExports(ctx);\n\n const metadata = ctx.module?.metadata ?? {};\n if (isSetString(metadata.title)) {\n ctx.output.title = metadata.title;\n }\n if (isSetString(metadata.description)) {\n ctx.output.description = metadata.description;\n }\n if (\n isSetString(metadata.alias) ||\n (Array.isArray(metadata.alias) && metadata.alias.length > 0)\n ) {\n ctx.output.alias = toArray(metadata.alias);\n }\n if (isSetString(metadata.icon)) {\n ctx.output.icon = metadata.icon;\n }\n\n if (isSetObject(ctx.module?.options)) {\n if (\n isZod3Type(ctx.module.options) ||\n isStandardJsonSchema(ctx.module.options) ||\n isJsonSchema7ObjectType(ctx.module.options)\n ) {\n let jsonSchema: JsonSchema7Type;\n if (isZod3Type(ctx.module.options)) {\n jsonSchema = extractJsonSchema7(ctx.module.options);\n } else if (isStandardJsonSchema(ctx.module.options)) {\n jsonSchema = ctx.module.options[\"~standard\"].jsonSchema.input({\n target: \"draft-07\"\n });\n } else {\n jsonSchema = ctx.module.options as JsonSchema7ObjectType;\n }\n\n if (!isJsonSchema7ObjectType(jsonSchema)) {\n throw new TypeError(\n `Command options for command at path \"${\n ctx.input.command.path\n }\" must be defined as a Zod object schema, a standard JSON Schema object, or a JSON Schema object.`\n );\n }\n\n ctx.output.options = Object.fromEntries(\n Object.entries((jsonSchema as JsonSchema7ObjectType).properties)\n .map(([name, property]) => [\n name,\n resolveCommandOption(name, jsonSchema, property)\n ])\n .concat(Object.entries(ctx.output.options))\n ) as Record<string, CommandOption>;\n } else if (\n Object.values(ctx.module.options).every(isCommandParameterConfig)\n ) {\n ctx.output.options = Object.fromEntries(\n Object.entries(\n ctx.module.options as Record<string, CommandParameterConfig>\n )\n .map(([name, option]) => [\n name,\n { name, ...option, alias: toArray(option.alias) }\n ])\n .concat(Object.entries(ctx.output.options))\n ) as Record<string, CommandOption>;\n } else {\n throw new TypeError(\n `Command options for command at path \"${\n ctx.input.command.path\n }\" must be defined as a record of valid CommandOption objects, a Zod object schema, or a standard JSON Schema object.`\n );\n }\n }\n\n if (isSetObject(ctx.module?.args)) {\n if (\n isZod3Type(ctx.module.args) ||\n isStandardJsonSchema(ctx.module.args) ||\n isJsonSchema7TupleType(ctx.module.args)\n ) {\n let jsonSchema: JsonSchema7Type;\n if (isZod3Type(ctx.module.args)) {\n jsonSchema = extractJsonSchema7(ctx.module.args);\n } else if (isStandardJsonSchema(ctx.module.args)) {\n jsonSchema = ctx.module.args[\"~standard\"].jsonSchema.input({\n target: \"draft-07\"\n });\n } else {\n jsonSchema = ctx.module.args;\n }\n\n if (!isJsonSchema7TupleType(jsonSchema)) {\n throw new TypeError(\n `Command arguments for command at path \"${\n ctx.input.command.path\n }\" must be defined as a Zod tuple schema, a standard JSON Schema tuple object, or a JSON Schema tuple object.`\n );\n }\n\n ctx.output.args = jsonSchema.items.map(item =>\n resolveCommandArgument(item)\n ) as CommandArgument[];\n } else if (Object.values(ctx.module.args).every(isCommandParameterConfig)) {\n ctx.output.args = ctx.module.args.map(arg => ({\n ...arg,\n alias: toArray(arg.alias)\n })) as CommandArgument[];\n } else {\n throw new TypeError(\n `Command arguments for command at path \"${\n ctx.input.command.path\n }\" must be defined as a record of valid CommandArgument objects, a Zod tuple schema, or a standard JSON Schema tuple object.`\n );\n }\n }\n}\n\nfunction validateExports<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n) {\n if (!ctx.module) {\n throw new Error(\n `Command module at path \"${\n ctx.input.command.path\n }\" is undefined or null. Please ensure the module exports a valid command.`\n );\n } else if (!isSetObject(ctx.module)) {\n throw new TypeError(\n `Command module at path \"${\n ctx.input.command.path\n }\" is not an object. Please ensure the module exports a valid command.`\n );\n } else if (!(\"default\" in ctx.module)) {\n throw new Error(\n `Command module at path \"${\n ctx.input.command.path\n }\" does not appear to be valid. Please ensure the module's default export is a valid command handler function.`\n );\n }\n}\n"],"mappings":"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"}
@@ -1,16 +1,16 @@
1
- const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
1
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
2
  const require_context_helpers = require('../plugin-utils/context-helpers.cjs');
3
3
  const require_deepkit = require('../plugin-utils/deepkit.cjs');
4
4
  const require_utilities = require('../helpers/utilities.cjs');
5
5
  const require_helpers = require('./helpers.cjs');
6
6
  const require_deepkit$1 = require('./deepkit.cjs');
7
7
  const require_module = require('./module.cjs');
8
- let __stryke_string_format_constant_case = require("@stryke/string-format/constant-case");
9
- let __stryke_type_checks_is_set_object = require("@stryke/type-checks/is-set-object");
10
- let __stryke_string_format_title_case = require("@stryke/string-format/title-case");
11
- let __powerlines_deepkit_vendor_type = require("@powerlines/deepkit/vendor/type");
12
- let __powerlines_deepkit_esbuild_plugin = require("@powerlines/deepkit/esbuild-plugin");
13
- let __powerlines_plugin_esbuild_helpers_resolve = require("@powerlines/plugin-esbuild/helpers/resolve");
8
+ let _stryke_string_format_constant_case = require("@stryke/string-format/constant-case");
9
+ let _stryke_string_format_title_case = require("@stryke/string-format/title-case");
10
+ let _stryke_type_checks_is_set_object = require("@stryke/type-checks/is-set-object");
11
+ let _powerlines_deepkit_vendor_type = require("@powerlines/deepkit/vendor/type");
12
+ let _powerlines_deepkit_esbuild_plugin = require("@powerlines/deepkit/esbuild-plugin");
13
+ let _powerlines_plugin_esbuild_helpers_resolve = require("@powerlines/plugin-esbuild/helpers/resolve");
14
14
 
15
15
  //#region src/resolver/resolve.ts
16
16
  function __assignType(fn, args) {
@@ -19,7 +19,7 @@ function __assignType(fn, args) {
19
19
  }
20
20
  async function initialize(input) {
21
21
  const { context, command, parent } = input;
22
- const title = command.title || `${parent?.title ? `${parent.isVirtual ? parent.title.replace(/(?:c|C)ommands?$/, "").trim() : parent.title} - ` : ""}${(0, __stryke_string_format_title_case.titleCase)(command.name)}${command.isVirtual ? " Commands" : ""}`;
22
+ const title = command.title || `${parent?.title ? `${parent.isVirtual ? parent.title.replace(/(?:c|C)ommands?$/, "").trim() : parent.title} - ` : ""}${(0, _stryke_string_format_title_case.titleCase)(command.name)}${command.isVirtual ? " Commands" : ""}`;
23
23
  const result = {
24
24
  input,
25
25
  output: {
@@ -36,7 +36,7 @@ async function initialize(input) {
36
36
  if (!command.isVirtual) {
37
37
  if (!command.entry.input?.file || !context.fs.existsSync(command.entry.input.file)) throw new Error(`${!command.entry.input?.file ? "Missing" : "Non-existent"} command entry file for "${command.name}"`);
38
38
  context.debug(`Adding reflection for user-defined command: ${command.id} (file: ${command.entry.input.file})`);
39
- result.module = await (__powerlines_plugin_esbuild_helpers_resolve.resolveModule.Ω = [["CommandModule", "\"w!"]], (0, __powerlines_plugin_esbuild_helpers_resolve.resolveModule)(context, command.entry.input, { plugins: [(0, __powerlines_deepkit_esbuild_plugin.esbuildPlugin)(context, {
39
+ result.module = await (_powerlines_plugin_esbuild_helpers_resolve.resolveModule.Ω = [["CommandModule", "\"w!"]], (0, _powerlines_plugin_esbuild_helpers_resolve.resolveModule)(context, command.entry.input, { plugins: [(0, _powerlines_deepkit_esbuild_plugin.esbuildPlugin)(context, {
40
40
  reflection: "default",
41
41
  reflectionLevel: "verbose"
42
42
  })] }));
@@ -73,7 +73,7 @@ async function postprocess(ctx) {
73
73
  "",
74
74
  "P\"2!\"/\""
75
75
  ])).length}`;
76
- arg.env = arg.name ? arg.env || arg.env === false ? arg.env : ctx.input.context.config.autoAssignEnv ? (0, __stryke_string_format_constant_case.constantCase)(arg.name) : false : false;
76
+ arg.env = arg.name ? arg.env || arg.env === false ? arg.env : ctx.input.context.config.autoAssignEnv ? (0, _stryke_string_format_constant_case.constantCase)(arg.name) : false : false;
77
77
  }
78
78
  }, [
79
79
  "arg",
@@ -83,7 +83,7 @@ async function postprocess(ctx) {
83
83
  ]));
84
84
  require_helpers.applyDefaults(ctx);
85
85
  if (ctx.input.context.env) {
86
- if ((0, __stryke_type_checks_is_set_object.isSetObject)(ctx.output.options)) Object.values(ctx.output.options).filter(__assignType((option) => Boolean(option.env), [
86
+ if ((0, _stryke_type_checks_is_set_object.isSetObject)(ctx.output.options)) Object.values(ctx.output.options).filter(__assignType((option) => Boolean(option.env), [
87
87
  "option",
88
88
  "",
89
89
  "P\"2!\"/\""
@@ -92,7 +92,7 @@ async function postprocess(ctx) {
92
92
  name: option.env,
93
93
  optional: option.optional ? true : void 0,
94
94
  description: option.description,
95
- visibility: __powerlines_deepkit_vendor_type.ReflectionVisibility.public,
95
+ visibility: _powerlines_deepkit_vendor_type.ReflectionVisibility.public,
96
96
  type: require_deepkit.extractType(option),
97
97
  default: option.default,
98
98
  tags: {
@@ -101,7 +101,7 @@ async function postprocess(ctx) {
101
101
  "alias",
102
102
  "",
103
103
  "P\"2!\"/\""
104
- ])).map(__assignType((alias) => (0, __stryke_string_format_constant_case.constantCase)(alias), [
104
+ ])).map(__assignType((alias) => (0, _stryke_string_format_constant_case.constantCase)(alias), [
105
105
  "alias",
106
106
  "",
107
107
  "P\"2!\"/\""
@@ -122,7 +122,7 @@ async function postprocess(ctx) {
122
122
  name: arg.env,
123
123
  optional: arg.optional ? true : void 0,
124
124
  description: arg.description,
125
- visibility: __powerlines_deepkit_vendor_type.ReflectionVisibility.public,
125
+ visibility: _powerlines_deepkit_vendor_type.ReflectionVisibility.public,
126
126
  type: require_deepkit.extractType(arg),
127
127
  default: arg.default,
128
128
  tags: {
@@ -130,7 +130,7 @@ async function postprocess(ctx) {
130
130
  "alias",
131
131
  "",
132
132
  "P\"2!\"/\""
133
- ])).map(__assignType((alias) => (0, __stryke_string_format_constant_case.constantCase)(alias), [
133
+ ])).map(__assignType((alias) => (0, _stryke_string_format_constant_case.constantCase)(alias), [
134
134
  "alias",
135
135
  "",
136
136
  "P\"2!\"/\""
@@ -143,7 +143,7 @@ async function postprocess(ctx) {
143
143
  "P\"2!\"/\""
144
144
  ]));
145
145
  }
146
- for (const input of ctx.input.context.inputs.filter(__assignType((input$1) => input$1.segments.filter(__assignType((segment) => !require_context_helpers.isDynamicPathSegment(segment), [
146
+ for (const input of ctx.input.context.inputs.filter(__assignType((input) => input.segments.filter(__assignType((segment) => !require_context_helpers.isDynamicPathSegment(segment), [
147
147
  "segment",
148
148
  "",
149
149
  "P\"2!\"/\""
@@ -151,7 +151,7 @@ async function postprocess(ctx) {
151
151
  "segment",
152
152
  "",
153
153
  "P\"2!\"/\""
154
- ])).length + 1 && input$1.segments.slice(0, ctx.input.command.segments.length).every(__assignType((value, index) => value === ctx.input.command.segments[index], [
154
+ ])).length + 1 && input.segments.slice(0, ctx.input.command.segments.length).every(__assignType((value, index) => value === ctx.input.command.segments[index], [
155
155
  "value",
156
156
  "index",
157
157
  "",