@shell-shock/core 0.17.8 → 0.17.11

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 (272) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +29 -1
  2. package/dist/api.cjs +36 -1
  3. package/dist/api.cjs.map +1 -0
  4. package/dist/api.d.cts +2 -77
  5. package/dist/api.d.cts.map +1 -1
  6. package/dist/api.d.mts +2 -76
  7. package/dist/api.d.mts.map +1 -1
  8. package/dist/api.mjs +35 -1
  9. package/dist/api.mjs.map +1 -1
  10. package/dist/components/command-validation-logic.cjs +291 -1
  11. package/dist/components/command-validation-logic.cjs.map +1 -0
  12. package/dist/components/command-validation-logic.d.cts +1 -3
  13. package/dist/components/command-validation-logic.d.cts.map +1 -1
  14. package/dist/components/command-validation-logic.d.mts +1 -3
  15. package/dist/components/command-validation-logic.d.mts.map +1 -1
  16. package/dist/components/command-validation-logic.mjs +288 -1
  17. package/dist/components/command-validation-logic.mjs.map +1 -1
  18. package/dist/components/docs.cjs +265 -1
  19. package/dist/components/docs.cjs.map +1 -0
  20. package/dist/components/docs.d.cts +4 -5
  21. package/dist/components/docs.d.cts.map +1 -1
  22. package/dist/components/docs.d.mts +4 -5
  23. package/dist/components/docs.d.mts.map +1 -1
  24. package/dist/components/docs.mjs +256 -1
  25. package/dist/components/docs.mjs.map +1 -1
  26. package/dist/components/exec-builtin.cjs +429 -15
  27. package/dist/components/exec-builtin.cjs.map +1 -0
  28. package/dist/components/exec-builtin.d.cts +1 -2
  29. package/dist/components/exec-builtin.d.cts.map +1 -1
  30. package/dist/components/exec-builtin.d.mts +1 -2
  31. package/dist/components/exec-builtin.d.mts.map +1 -1
  32. package/dist/components/exec-builtin.mjs +424 -15
  33. package/dist/components/exec-builtin.mjs.map +1 -1
  34. package/dist/components/helpers.cjs +119 -1
  35. package/dist/components/helpers.cjs.map +1 -0
  36. package/dist/components/helpers.d.cts +6 -8
  37. package/dist/components/helpers.d.cts.map +1 -1
  38. package/dist/components/helpers.d.mts +6 -8
  39. package/dist/components/helpers.d.mts.map +1 -1
  40. package/dist/components/helpers.mjs +111 -1
  41. package/dist/components/helpers.mjs.map +1 -1
  42. package/dist/components/index.cjs +58 -1
  43. package/dist/components/index.mjs +10 -1
  44. package/dist/components/options-parser-logic.cjs +959 -5
  45. package/dist/components/options-parser-logic.cjs.map +1 -0
  46. package/dist/components/options-parser-logic.d.cts +8 -9
  47. package/dist/components/options-parser-logic.d.cts.map +1 -1
  48. package/dist/components/options-parser-logic.d.mts +8 -9
  49. package/dist/components/options-parser-logic.d.mts.map +1 -1
  50. package/dist/components/options-parser-logic.mjs +944 -5
  51. package/dist/components/options-parser-logic.mjs.map +1 -1
  52. package/dist/components/state-builtin.cjs +630 -8
  53. package/dist/components/state-builtin.cjs.map +1 -0
  54. package/dist/components/state-builtin.d.cts +4 -5
  55. package/dist/components/state-builtin.d.cts.map +1 -1
  56. package/dist/components/state-builtin.d.mts +4 -5
  57. package/dist/components/state-builtin.d.mts.map +1 -1
  58. package/dist/components/state-builtin.mjs +622 -8
  59. package/dist/components/state-builtin.mjs.map +1 -1
  60. package/dist/components/usage.cjs +116 -1
  61. package/dist/components/usage.cjs.map +1 -0
  62. package/dist/components/usage.d.cts +1 -2
  63. package/dist/components/usage.d.cts.map +1 -1
  64. package/dist/components/usage.d.mts +1 -2
  65. package/dist/components/usage.d.mts.map +1 -1
  66. package/dist/components/usage.mjs +113 -1
  67. package/dist/components/usage.mjs.map +1 -1
  68. package/dist/components/utils-builtin.cjs +839 -33
  69. package/dist/components/utils-builtin.cjs.map +1 -0
  70. package/dist/components/utils-builtin.d.cts +7 -8
  71. package/dist/components/utils-builtin.d.cts.map +1 -1
  72. package/dist/components/utils-builtin.d.mts +7 -8
  73. package/dist/components/utils-builtin.d.mts.map +1 -1
  74. package/dist/components/utils-builtin.mjs +828 -33
  75. package/dist/components/utils-builtin.mjs.map +1 -1
  76. package/dist/config.cjs +65 -1
  77. package/dist/config.cjs.map +1 -0
  78. package/dist/config.d.cts +29 -8
  79. package/dist/config.d.cts.map +1 -1
  80. package/dist/config.d.mts +29 -8
  81. package/dist/config.d.mts.map +1 -1
  82. package/dist/config.mjs +62 -1
  83. package/dist/config.mjs.map +1 -1
  84. package/dist/contexts/command.cjs +26 -1
  85. package/dist/contexts/command.cjs.map +1 -0
  86. package/dist/contexts/command.d.cts.map +1 -1
  87. package/dist/contexts/command.d.mts.map +1 -1
  88. package/dist/contexts/command.mjs +23 -1
  89. package/dist/contexts/command.mjs.map +1 -1
  90. package/dist/contexts/index.cjs +9 -1
  91. package/dist/contexts/index.mjs +4 -1
  92. package/dist/contexts/options.cjs +63 -1
  93. package/dist/contexts/options.cjs.map +1 -0
  94. package/dist/contexts/options.d.cts.map +1 -1
  95. package/dist/contexts/options.d.mts.map +1 -1
  96. package/dist/contexts/options.mjs +57 -1
  97. package/dist/contexts/options.mjs.map +1 -1
  98. package/dist/engine.cjs +138 -0
  99. package/dist/engine.cjs.map +1 -0
  100. package/dist/engine.d.cts +79 -0
  101. package/dist/engine.d.cts.map +1 -0
  102. package/dist/engine.d.mts +79 -0
  103. package/dist/engine.d.mts.map +1 -0
  104. package/dist/engine.mjs +136 -0
  105. package/dist/engine.mjs.map +1 -0
  106. package/dist/helpers/automd.cjs +70 -1
  107. package/dist/helpers/automd.cjs.map +1 -0
  108. package/dist/helpers/automd.mjs +69 -1
  109. package/dist/helpers/automd.mjs.map +1 -1
  110. package/dist/helpers/docs-helpers.cjs +23 -1
  111. package/dist/helpers/docs-helpers.cjs.map +1 -0
  112. package/dist/helpers/docs-helpers.mjs +22 -1
  113. package/dist/helpers/docs-helpers.mjs.map +1 -1
  114. package/dist/helpers/get-framework.cjs +24 -0
  115. package/dist/helpers/get-framework.cjs.map +1 -0
  116. package/dist/helpers/get-framework.mjs +24 -0
  117. package/dist/helpers/get-framework.mjs.map +1 -0
  118. package/dist/helpers/paths.cjs +137 -1
  119. package/dist/helpers/paths.cjs.map +1 -0
  120. package/dist/helpers/paths.mjs +133 -1
  121. package/dist/helpers/paths.mjs.map +1 -1
  122. package/dist/helpers/persistence.cjs +113 -1
  123. package/dist/helpers/persistence.cjs.map +1 -0
  124. package/dist/helpers/persistence.mjs +112 -1
  125. package/dist/helpers/persistence.mjs.map +1 -1
  126. package/dist/helpers/update-package-json.cjs +65 -1
  127. package/dist/helpers/update-package-json.cjs.map +1 -0
  128. package/dist/helpers/update-package-json.mjs +63 -1
  129. package/dist/helpers/update-package-json.mjs.map +1 -1
  130. package/dist/helpers/utilities.cjs +95 -1
  131. package/dist/helpers/utilities.cjs.map +1 -0
  132. package/dist/helpers/utilities.mjs +93 -1
  133. package/dist/helpers/utilities.mjs.map +1 -1
  134. package/dist/helpers/validations.cjs +71 -1
  135. package/dist/helpers/validations.cjs.map +1 -0
  136. package/dist/helpers/validations.mjs +69 -1
  137. package/dist/helpers/validations.mjs.map +1 -1
  138. package/dist/index.cjs +123 -1
  139. package/dist/index.cjs.map +1 -0
  140. package/dist/index.d.cts +80 -5
  141. package/dist/index.d.cts.map +1 -0
  142. package/dist/index.d.mts +80 -5
  143. package/dist/index.d.mts.map +1 -0
  144. package/dist/index.mjs +119 -1
  145. package/dist/index.mjs.map +1 -0
  146. package/dist/package.cjs +12 -0
  147. package/dist/package.cjs.map +1 -0
  148. package/dist/package.mjs +6 -0
  149. package/dist/package.mjs.map +1 -0
  150. package/dist/plugin-utils/compute-bin.cjs +48 -1
  151. package/dist/plugin-utils/compute-bin.cjs.map +1 -0
  152. package/dist/plugin-utils/compute-bin.d.cts +2 -2
  153. package/dist/plugin-utils/compute-bin.d.cts.map +1 -1
  154. package/dist/plugin-utils/compute-bin.d.mts +2 -2
  155. package/dist/plugin-utils/compute-bin.d.mts.map +1 -1
  156. package/dist/plugin-utils/compute-bin.mjs +47 -1
  157. package/dist/plugin-utils/compute-bin.mjs.map +1 -1
  158. package/dist/plugin-utils/context-helpers.cjs +224 -1
  159. package/dist/plugin-utils/context-helpers.cjs.map +1 -0
  160. package/dist/plugin-utils/context-helpers.d.cts +4 -4
  161. package/dist/plugin-utils/context-helpers.d.cts.map +1 -1
  162. package/dist/plugin-utils/context-helpers.d.mts +4 -4
  163. package/dist/plugin-utils/context-helpers.d.mts.map +1 -1
  164. package/dist/plugin-utils/context-helpers.mjs +214 -1
  165. package/dist/plugin-utils/context-helpers.mjs.map +1 -1
  166. package/dist/plugin-utils/deepkit.cjs +70 -1
  167. package/dist/plugin-utils/deepkit.cjs.map +1 -0
  168. package/dist/plugin-utils/deepkit.d.cts +5 -5
  169. package/dist/plugin-utils/deepkit.d.cts.map +1 -1
  170. package/dist/plugin-utils/deepkit.d.mts +5 -5
  171. package/dist/plugin-utils/deepkit.d.mts.map +1 -1
  172. package/dist/plugin-utils/deepkit.mjs +68 -1
  173. package/dist/plugin-utils/deepkit.mjs.map +1 -1
  174. package/dist/plugin-utils/description-helpers.cjs +112 -2
  175. package/dist/plugin-utils/description-helpers.cjs.map +1 -0
  176. package/dist/plugin-utils/description-helpers.d.cts.map +1 -1
  177. package/dist/plugin-utils/description-helpers.d.mts.map +1 -1
  178. package/dist/plugin-utils/description-helpers.mjs +107 -2
  179. package/dist/plugin-utils/description-helpers.mjs.map +1 -1
  180. package/dist/plugin-utils/get-command-tree.cjs +118 -1
  181. package/dist/plugin-utils/get-command-tree.cjs.map +1 -0
  182. package/dist/plugin-utils/get-command-tree.d.cts.map +1 -1
  183. package/dist/plugin-utils/get-command-tree.d.mts.map +1 -1
  184. package/dist/plugin-utils/get-command-tree.mjs +114 -1
  185. package/dist/plugin-utils/get-command-tree.mjs.map +1 -1
  186. package/dist/plugin-utils/index.cjs +39 -1
  187. package/dist/plugin-utils/index.d.cts +2 -2
  188. package/dist/plugin-utils/index.d.mts +2 -2
  189. package/dist/plugin-utils/index.mjs +10 -1
  190. package/dist/plugin-utils/reflect.cjs +52 -1
  191. package/dist/plugin-utils/reflect.cjs.map +1 -0
  192. package/dist/plugin-utils/reflect.d.cts.map +1 -1
  193. package/dist/plugin-utils/reflect.d.mts.map +1 -1
  194. package/dist/plugin-utils/reflect.mjs +50 -1
  195. package/dist/plugin-utils/reflect.mjs.map +1 -1
  196. package/dist/plugin-utils/traverse-command-tree.cjs +65 -1
  197. package/dist/plugin-utils/traverse-command-tree.cjs.map +1 -0
  198. package/dist/plugin-utils/traverse-command-tree.d.cts.map +1 -1
  199. package/dist/plugin-utils/traverse-command-tree.d.mts.map +1 -1
  200. package/dist/plugin-utils/traverse-command-tree.mjs +62 -1
  201. package/dist/plugin-utils/traverse-command-tree.mjs.map +1 -1
  202. package/dist/plugin-utils/type-checks.cjs +222 -1
  203. package/dist/plugin-utils/type-checks.cjs.map +1 -0
  204. package/dist/plugin-utils/type-checks.d.cts +5 -5
  205. package/dist/plugin-utils/type-checks.d.cts.map +1 -1
  206. package/dist/plugin-utils/type-checks.d.mts +5 -5
  207. package/dist/plugin-utils/type-checks.d.mts.map +1 -1
  208. package/dist/plugin-utils/type-checks.mjs +217 -1
  209. package/dist/plugin-utils/type-checks.mjs.map +1 -1
  210. package/dist/plugin.cjs +495 -4
  211. package/dist/plugin.cjs.map +1 -0
  212. package/dist/plugin.d.cts.map +1 -1
  213. package/dist/plugin.d.mts.map +1 -1
  214. package/dist/plugin.mjs +488 -4
  215. package/dist/plugin.mjs.map +1 -1
  216. package/dist/resolver/helpers.cjs +182 -1
  217. package/dist/resolver/helpers.cjs.map +1 -0
  218. package/dist/resolver/helpers.mjs +178 -1
  219. package/dist/resolver/helpers.mjs.map +1 -1
  220. package/dist/resolver/resolve.cjs +479 -1
  221. package/dist/resolver/resolve.cjs.map +1 -0
  222. package/dist/resolver/resolve.mjs +478 -1
  223. package/dist/resolver/resolve.mjs.map +1 -1
  224. package/dist/types/command.cjs +402 -1
  225. package/dist/types/command.cjs.map +1 -0
  226. package/dist/types/command.d.cts +61 -119
  227. package/dist/types/command.d.cts.map +1 -1
  228. package/dist/types/command.d.mts +61 -119
  229. package/dist/types/command.d.mts.map +1 -1
  230. package/dist/types/command.mjs +367 -1
  231. package/dist/types/command.mjs.map +1 -1
  232. package/dist/types/config.cjs +175 -1
  233. package/dist/types/config.cjs.map +1 -0
  234. package/dist/types/config.d.cts +19 -12
  235. package/dist/types/config.d.cts.map +1 -1
  236. package/dist/types/config.d.mts +19 -12
  237. package/dist/types/config.d.mts.map +1 -1
  238. package/dist/types/config.mjs +163 -1
  239. package/dist/types/config.mjs.map +1 -1
  240. package/dist/types/context.cjs +45 -1
  241. package/dist/types/context.cjs.map +1 -0
  242. package/dist/types/context.d.cts +3 -2
  243. package/dist/types/context.d.cts.map +1 -1
  244. package/dist/types/context.d.mts +3 -2
  245. package/dist/types/context.d.mts.map +1 -1
  246. package/dist/types/context.mjs +40 -1
  247. package/dist/types/context.mjs.map +1 -1
  248. package/dist/types/env.cjs +53 -1
  249. package/dist/types/env.cjs.map +1 -0
  250. package/dist/types/env.d.cts +1 -1
  251. package/dist/types/env.d.cts.map +1 -1
  252. package/dist/types/env.d.mts +1 -1
  253. package/dist/types/env.d.mts.map +1 -1
  254. package/dist/types/env.mjs +50 -1
  255. package/dist/types/env.mjs.map +1 -1
  256. package/dist/types/index.cjs +53 -1
  257. package/dist/types/index.d.cts +4 -4
  258. package/dist/types/index.d.mts +4 -4
  259. package/dist/types/index.mjs +6 -1
  260. package/dist/types/options.cjs +13 -1
  261. package/dist/types/options.cjs.map +1 -0
  262. package/dist/types/options.d.cts.map +1 -1
  263. package/dist/types/options.d.mts.map +1 -1
  264. package/dist/types/options.mjs +10 -1
  265. package/dist/types/options.mjs.map +1 -1
  266. package/package.json +43 -34
  267. package/dist/resolver/deepkit.cjs +0 -1
  268. package/dist/resolver/deepkit.mjs +0 -2
  269. package/dist/resolver/deepkit.mjs.map +0 -1
  270. package/dist/resolver/module.cjs +0 -1
  271. package/dist/resolver/module.mjs +0 -2
  272. package/dist/resolver/module.mjs.map +0 -1
@@ -1,2 +1,479 @@
1
- import{getDynamicPathSegmentName as e,isDynamicPathSegment as t}from"../plugin-utils/context-helpers.mjs";import{extractType as n}from"../plugin-utils/deepkit.mjs";import{getGlobalOptions as r}from"../helpers/utilities.mjs";import{applyArgsDefaults as i,applyDefaults as a,applyOptionsDefaults as o,resolveVirtualCommand as s}from"./helpers.mjs";import{resolveFromBytecode as c}from"./deepkit.mjs";import{resolveFromExports as l}from"./module.mjs";import{ReflectionVisibility as u}from"@powerlines/deepkit/vendor/type";import{constantCase as d}from"@stryke/string-format/constant-case";import{titleCase as f}from"@stryke/string-format/title-case";import{isSetObject as p}from"@stryke/type-checks/is-set-object";import{esbuildPlugin as m}from"@powerlines/deepkit/esbuild-plugin";import{resolveModule as h}from"@powerlines/plugin-esbuild/helpers/resolve";function g(e,t){return e.__type=t,e}async function _(e){let{context:t,command:n,parent:i}=e,a=n.title||`${i?.title?`${i.isVirtual?i.title.replace(/(?:c|C)ommands?$/,``).trim():i.title} - `:``}${f(n.name)}${n.isVirtual?` Commands`:``}`,o={input:e,output:{alias:[],icon:i?.icon,tags:i?.tags??[],source:`file`,...n,title:a,options:i===null?r(t,n):{},args:[],parent:i??null,children:{}}};if(!n.isVirtual){if(!n.entry.input?.file||!t.fs.existsSync(n.entry.input.file))throw Error(`${n.entry.input?.file?`Non-existent`:`Missing`} command entry file for "${n.name}"`);t.debug(`Adding reflection for CLI command: ${n.id} (file: ${n.entry.input.file})`),o.module=await(h.Ω=[[`CommandModule`,`"w!`]],h(t,n.entry.input,{name:n.title||f(n.name),treeShaking:!0,resolve:{skipNodeModulesBundle:!0},plugins:[m(t,{reflection:`default`,level:`all`})]}))}return o}_.__type=[`ResolverInput`,`input`,`ResolverContext`,`initialize`,'P"w!2""w#`/$'];async function v(r){return r.output.options=o(r),r.output.args=i(r),r.output.args.forEach(g((n,i)=>{let a=r.output.args.findIndex(g(e=>e.name===n.name,[`a`,``,`P"2!"/"`]));(a!==-1&&a!==i||r.output.segments.some(g(r=>t(r)&&e(r)===n.name,[`segment`,``,`P"2!"/"`])))&&(n.name+=`_${r.output.segments.filter(g(r=>t(r)&&e(r).replace(/_\d+$/,``)===n.name,[`segment`,``,`P"2!"/"`])).length+r.output.args.filter(g(e=>e.name.replace(/_\d+$/,``)===n.name,[`a`,``,`P"2!"/"`])).length}`,n.env=n.name?n.env||n.env===!1?n.env:r.input.context.config.autoAssignEnv?d(n.name):!1:!1)},[`arg`,`index`,``,`P"2!"2""/#`])),a(r),r.input.context.env&&(p(r.output.options)&&Object.values(r.output.options).filter(g(e=>!!e.env,[`option`,``,`P"2!"/"`])).forEach(g(e=>{r.input.context.env.types.env.addProperty({name:e.env,optional:e.optional?!0:void 0,description:e.description,visibility:u.public,type:n(e),default:e.default,tags:{title:e.title,alias:e.alias.filter(g(e=>e.length>1,[`alias`,``,`P"2!"/"`])).map(g(e=>d(e),[`alias`,``,`P"2!"/"`])),domain:`cli`}})},[`option`,``,`P"2!"/"`])),r.output.args.filter(g(e=>!!e.env,[`arg`,``,`P"2!"/"`])).forEach(g(e=>r.input.context.env.types.env.addProperty({name:e.env,optional:e.optional?!0:void 0,description:e.description,visibility:u.public,type:n(e),default:e.default,tags:{alias:e.alias.filter(g(e=>e.length>1,[`alias`,``,`P"2!"/"`])).map(g(e=>d(e),[`alias`,``,`P"2!"/"`])),domain:`cli`}}),[`arg`,``,`P"2!"/"`]))),await Promise.all(r.input.context.inputs.filter(g(e=>e.segments.filter(g(e=>!t(e),[`segment`,``,`P"2!"/"`])).length===r.input.command.segments.filter(g(e=>!t(e),[`segment`,``,`P"2!"/"`])).length+1&&e.segments.slice(0,r.input.command.segments.length).every(g((e,t)=>e===r.input.command.segments[t],[`value`,`index`,``,`P"2!"2""/#`])),[`input`,``,`P"2!"/"`])).map(g(async e=>{r.output.children[e.name]=await(y.Ω=[[()=>r,`ResolverContext`,`Pi!"w"q"!j`]],y({context:r.input.context,command:e,parent:r.output}))},[`input`,``,`P"2!"/"`]))),r.output}v.__type=[`ResolverContext`,`ctx`,`CommandTree`,`postprocess`,'P"w!2""w#`/$'];async function y(e){let t=await(_.Ω=[[()=>e,`ResolverInput`,`Pi!"w"q"!j`]],_(e));return t.output.isVirtual?s(t):(await l(t),c(t)),v(t)}y.__type=[`ResolverInput`,`input`,`CommandTree`,`resolve`,`Resolves a command tree from the given resolver input.`,'P"w!2""w#`/$?%'];export{y as resolve};
1
+ import { getDynamicPathSegmentName, isDynamicPathSegment } from "../plugin-utils/context-helpers.mjs";
2
+ import { getGlobalOptions } from "../helpers/utilities.mjs";
3
+ import { applyArgsDefaults, applyDefaults, applyOptionsDefaults, resolveVirtualCommand } from "./helpers.mjs";
4
+ import { addProperty, extract, getPropertiesList, resolveModule } from "@powerlines/schema";
5
+ import { toArray } from "@stryke/convert/to-array";
6
+ import { constantCase } from "@stryke/string-format/constant-case";
7
+ import { isSetObject } from "@stryke/type-checks/is-set-object";
8
+ import { isSetString } from "@stryke/type-checks/is-set-string";
9
+ import { titleCase } from "@stryke/string-format/title-case";
10
+ import { isBoolean } from "@stryke/type-checks/is-boolean";
11
+ import { getUnique } from "@stryke/helpers/get-unique";
12
+ import { esbuildPlugin } from "@powerlines/deepkit/esbuild-plugin";
13
+ import { isJsonSchemaObjectType, isJsonSchemaTupleType } from "@stryke/json";
14
+
15
+ //#region src/resolver/resolve.ts
16
+ const __ΩRecord = [
17
+ "K",
18
+ "T",
19
+ "Record",
20
+ "l'e#\"Rb!b\"Pde\"!N#!w#y"
21
+ ];
22
+ function __assignType(fn, args) {
23
+ fn.__type = args;
24
+ return fn;
25
+ }
26
+ function isFiniteNumber(value) {
27
+ return typeof value === "number" && Number.isFinite(value);
28
+ }
29
+ isFiniteNumber.__type = [
30
+ "value",
31
+ "isFiniteNumber",
32
+ "P#2!!/\""
33
+ ];
34
+ function asRecord(value) {
35
+ return isSetObject(value) ? value : {};
36
+ }
37
+ asRecord.__type = [
38
+ "value",
39
+ () => __ΩRecord,
40
+ "asRecord",
41
+ "P#2!&#o\"#/#"
42
+ ];
43
+ function toAliasList(value) {
44
+ if (Array.isArray(value)) return getUnique(value.filter(isSetString));
45
+ return isSetString(value) ? [value] : [];
46
+ }
47
+ toAliasList.__type = [
48
+ "value",
49
+ "toAliasList",
50
+ "P#2!&F/\""
51
+ ];
52
+ function inferParameterType(input) {
53
+ const schemaType = input.type;
54
+ if (Array.isArray(schemaType)) {
55
+ const first = schemaType.find(__assignType((type) => type !== "null", [
56
+ "type",
57
+ "",
58
+ "P\"2!\"/\""
59
+ ]));
60
+ if (first === "integer" || first === "number") return "number";
61
+ if (first === "boolean") return "boolean";
62
+ if (first === "array") {
63
+ const nestedType = asRecord(input.items).type;
64
+ if (nestedType === "integer" || nestedType === "number") return "number";
65
+ if (nestedType === "boolean") return "boolean";
66
+ return "string";
67
+ }
68
+ return "string";
69
+ }
70
+ if (schemaType === "integer" || schemaType === "number") return "number";
71
+ if (schemaType === "boolean") return "boolean";
72
+ if (schemaType === "array") {
73
+ const nestedType = asRecord(input.items).type;
74
+ if (nestedType === "integer" || nestedType === "number") return "number";
75
+ if (nestedType === "boolean") return "boolean";
76
+ return "string";
77
+ }
78
+ if (Array.isArray(input.enum) && input.enum.length > 0) {
79
+ const first = input.enum.find(__assignType((value) => value !== null, [
80
+ "value",
81
+ "",
82
+ "P\"2!\"/\""
83
+ ]));
84
+ if (isFiniteNumber(first)) return "number";
85
+ if (isBoolean(first)) return "boolean";
86
+ }
87
+ if (isFiniteNumber(input.default)) return "number";
88
+ if (isBoolean(input.default)) return "boolean";
89
+ return "string";
90
+ }
91
+ inferParameterType.__type = [
92
+ () => __ΩRecord,
93
+ "input",
94
+ "CommandOption",
95
+ "type",
96
+ "inferParameterType",
97
+ "P&#o!#2\"\"w#.$f/%"
98
+ ];
99
+ function inferVariadic(input) {
100
+ if (isBoolean(input.variadic)) return input.variadic;
101
+ return input.type === "array";
102
+ }
103
+ inferVariadic.__type = [
104
+ () => __ΩRecord,
105
+ "input",
106
+ "inferVariadic",
107
+ "P&#o!#2\")/#"
108
+ ];
109
+ function normalizeDefault(input, type, variadic) {
110
+ const defaultValue = input.default;
111
+ if (defaultValue === void 0) return;
112
+ if (type === "boolean") {
113
+ if (variadic) {
114
+ if (Array.isArray(defaultValue)) return defaultValue.filter(isBoolean);
115
+ return isBoolean(defaultValue) ? [defaultValue] : void 0;
116
+ }
117
+ if (Array.isArray(defaultValue)) return defaultValue.find(isBoolean);
118
+ return isBoolean(defaultValue) ? defaultValue : void 0;
119
+ }
120
+ if (type === "number") {
121
+ if (variadic) {
122
+ if (Array.isArray(defaultValue)) return defaultValue.map(__assignType((item) => typeof item === "bigint" ? Number(item) : item, [
123
+ "item",
124
+ "",
125
+ "P\"2!\"/\""
126
+ ])).filter(isFiniteNumber);
127
+ const normalized = typeof defaultValue === "bigint" ? Number(defaultValue) : defaultValue;
128
+ return isFiniteNumber(normalized) ? [normalized] : void 0;
129
+ }
130
+ if (Array.isArray(defaultValue)) return defaultValue.map(__assignType((item) => typeof item === "bigint" ? Number(item) : item, [
131
+ "item",
132
+ "",
133
+ "P\"2!\"/\""
134
+ ])).find(isFiniteNumber);
135
+ const normalized = typeof defaultValue === "bigint" ? Number(defaultValue) : defaultValue;
136
+ return isFiniteNumber(normalized) ? normalized : void 0;
137
+ }
138
+ if (variadic) {
139
+ if (Array.isArray(defaultValue)) return defaultValue.filter(isSetString);
140
+ return isSetString(defaultValue) ? [defaultValue] : void 0;
141
+ }
142
+ if (Array.isArray(defaultValue)) return defaultValue.find(isSetString);
143
+ return isSetString(defaultValue) ? defaultValue : void 0;
144
+ }
145
+ normalizeDefault.__type = [
146
+ () => __ΩRecord,
147
+ "input",
148
+ "CommandOption",
149
+ "type",
150
+ "type",
151
+ "variadic",
152
+ "normalizeDefault",
153
+ "P&#o!#2\"\"w#.$f2%)2&\"/'"
154
+ ];
155
+ function normalizeStringChoices(input) {
156
+ const source = Array.isArray(input.choices) ? input.choices : input.enum;
157
+ if (!Array.isArray(source)) return;
158
+ return source.filter(isSetString);
159
+ }
160
+ normalizeStringChoices.__type = [
161
+ () => __ΩRecord,
162
+ "input",
163
+ "normalizeStringChoices",
164
+ "P&#o!#2\"\"/#"
165
+ ];
166
+ function normalizeNumberChoices(input) {
167
+ const source = Array.isArray(input.choices) ? input.choices : input.enum;
168
+ if (!Array.isArray(source)) return;
169
+ return source.map(__assignType((item) => typeof item === "bigint" ? Number(item) : item, [
170
+ "item",
171
+ "",
172
+ "P\"2!\"/\""
173
+ ])).filter(isFiniteNumber);
174
+ }
175
+ normalizeNumberChoices.__type = [
176
+ () => __ΩRecord,
177
+ "input",
178
+ "normalizeNumberChoices",
179
+ "P&#o!#2\"\"/#"
180
+ ];
181
+ function resolveCommandParameter(schema, defaults) {
182
+ const input = asRecord(schema);
183
+ const type = inferParameterType(input);
184
+ const variadic = inferVariadic(input);
185
+ const defaultValue = normalizeDefault(input, type, variadic);
186
+ const required = isBoolean(input.required) ? input.required : defaultValue === void 0 ? defaults.fallbackRequired : false;
187
+ const env = isSetString(input.env) ? input.env : false;
188
+ const result = {
189
+ name: isSetString(input.name) ? input.name : "",
190
+ type,
191
+ title: isSetString(input.title) ? input.title : "",
192
+ description: isSetString(input.description) ? input.description : "",
193
+ alias: toAliasList(input.alias),
194
+ default: defaultValue,
195
+ env,
196
+ required,
197
+ variadic
198
+ };
199
+ if (type === "string") {
200
+ const stringChoices = normalizeStringChoices(input);
201
+ if (Array.isArray(stringChoices)) result.choices = stringChoices;
202
+ if (isSetString(input.format)) result.format = input.format;
203
+ }
204
+ if (type === "number") {
205
+ const numberChoices = normalizeNumberChoices(input);
206
+ if (Array.isArray(numberChoices)) result.choices = numberChoices;
207
+ }
208
+ if (defaults.includeBooleanOptionFields && type === "boolean" && !variadic) {
209
+ const optionResult = result;
210
+ if (isSetString(input.isNegativeOf)) optionResult.isNegativeOf = input.isNegativeOf;
211
+ if (isBoolean(input.skipAddingNegative)) optionResult.skipAddingNegative = input.skipAddingNegative;
212
+ }
213
+ return result;
214
+ }
215
+ resolveCommandParameter.__type = [
216
+ "schema",
217
+ "fallbackRequired",
218
+ "includeBooleanOptionFields",
219
+ "defaults",
220
+ "CommandOption",
221
+ "CommandArgument",
222
+ "resolveCommandParameter",
223
+ "P#2!P)4\")4#M2$P\"w%\"w&J/'"
224
+ ];
225
+ /**
226
+ * Resolves a command option from the given schema.
227
+ *
228
+ * @param schema - The command option schema, which can be a command option configuration or a JSON schema input.
229
+ * @returns The resolved command option definition.
230
+ */
231
+ function resolveCommandOption(schema) {
232
+ return resolveCommandParameter(schema, {
233
+ fallbackRequired: false,
234
+ includeBooleanOptionFields: true
235
+ });
236
+ }
237
+ resolveCommandOption.__type = [
238
+ "schema",
239
+ "CommandOption",
240
+ "resolveCommandOption",
241
+ "Resolves a command option from the given schema.",
242
+ "P#2!\"w\"/#?$"
243
+ ];
244
+ /**
245
+ * Resolves a command argument from the given schema.
246
+ *
247
+ * @param schema - The command argument schema, which can be a command argument configuration or a JSON schema input.
248
+ * @returns The resolved command argument definition.
249
+ */
250
+ function resolveCommandArgument(schema) {
251
+ return resolveCommandParameter(schema, {
252
+ fallbackRequired: true,
253
+ includeBooleanOptionFields: false
254
+ });
255
+ }
256
+ resolveCommandArgument.__type = [
257
+ "schema",
258
+ "CommandArgument",
259
+ "resolveCommandArgument",
260
+ "Resolves a command argument from the given schema.",
261
+ "P#2!\"w\"/#?$"
262
+ ];
263
+ async function preprocess(input) {
264
+ const { context, command, parent } = input;
265
+ const title = command.title || `${parent?.title ? `${parent.virtual ? parent.title.replace(/(?:c|C)ommands?$/, "").trim() : parent.title} - ` : ""}${titleCase(command.name)}${command.virtual ? " Commands" : ""}`;
266
+ const result = {
267
+ input,
268
+ output: {
269
+ alias: [],
270
+ icon: parent?.icon,
271
+ tags: parent?.tags ?? [],
272
+ source: "file",
273
+ ...command,
274
+ title,
275
+ options: parent === null ? getGlobalOptions(context, command) : {},
276
+ args: [],
277
+ parent: parent ?? null,
278
+ children: {}
279
+ }
280
+ };
281
+ if (!command.virtual) {
282
+ 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}"`);
283
+ context.debug(`Adding reflection for CLI command: ${command.id} (file: ${command.entry.input.file})`);
284
+ result.module = await (resolveModule.Ω = [["CommandModule", "\"w!"]], resolveModule(context, command.entry.input, {
285
+ name: command.title || titleCase(command.name),
286
+ plugins: [esbuildPlugin(context, {
287
+ reflection: "default",
288
+ level: "all"
289
+ })],
290
+ resolve: { skipNodeModulesBundle: true }
291
+ }));
292
+ }
293
+ return result;
294
+ }
295
+ preprocess.__type = [
296
+ "ResolverInput",
297
+ "input",
298
+ "ResolverContext",
299
+ "preprocess",
300
+ "P\"w!2\"\"w#`/$"
301
+ ];
302
+ async function postprocess(ctx) {
303
+ ctx.output.options = applyOptionsDefaults(ctx);
304
+ ctx.output.args = applyArgsDefaults(ctx);
305
+ ctx.output.args.forEach(__assignType((arg, index) => {
306
+ const found = ctx.output.args.findIndex(__assignType((a) => a.name === arg.name, [
307
+ "a",
308
+ "",
309
+ "P\"2!\"/\""
310
+ ]));
311
+ if (found !== -1 && found !== index || ctx.output.segments.some(__assignType((segment) => isDynamicPathSegment(segment) && getDynamicPathSegmentName(segment) === arg.name, [
312
+ "segment",
313
+ "",
314
+ "P\"2!\"/\""
315
+ ]))) {
316
+ arg.name += `_${ctx.output.segments.filter(__assignType((segment) => isDynamicPathSegment(segment) && getDynamicPathSegmentName(segment).replace(/_\d+$/, "") === arg.name, [
317
+ "segment",
318
+ "",
319
+ "P\"2!\"/\""
320
+ ])).length + ctx.output.args.filter(__assignType((a) => a.name.replace(/_\d+$/, "") === arg.name, [
321
+ "a",
322
+ "",
323
+ "P\"2!\"/\""
324
+ ])).length}`;
325
+ arg.env = arg.name ? arg.env || arg.env === false ? arg.env : ctx.input.context.config.autoAssignEnv ? constantCase(arg.name) : false : false;
326
+ }
327
+ }, [
328
+ "arg",
329
+ "index",
330
+ "",
331
+ "P\"2!\"2\"\"/#"
332
+ ]));
333
+ applyDefaults(ctx);
334
+ if (ctx.input.context.env) {
335
+ if (isSetObject(ctx.output.options)) Object.values(ctx.output.options).filter(__assignType((option) => Boolean(option.env), [
336
+ "option",
337
+ "",
338
+ "P\"2!\"/\""
339
+ ])).forEach(__assignType((option) => {
340
+ addProperty(ctx.input.context.env.config.schema, option.env, {
341
+ ...option,
342
+ name: option.env,
343
+ alias: option.alias.filter(__assignType((alias) => alias.length > 1, [
344
+ "alias",
345
+ "",
346
+ "P\"2!\"/\""
347
+ ])).map(__assignType((alias) => constantCase(alias), [
348
+ "alias",
349
+ "",
350
+ "P\"2!\"/\""
351
+ ]))
352
+ });
353
+ }, [
354
+ "option",
355
+ "",
356
+ "P\"2!\"/\""
357
+ ]));
358
+ ctx.output.args.filter(__assignType((arg) => Boolean(arg.env), [
359
+ "arg",
360
+ "",
361
+ "P\"2!\"/\""
362
+ ])).forEach(__assignType((arg) => addProperty(ctx.input.context.env.config.schema, arg.env, {
363
+ ...arg,
364
+ name: arg.env,
365
+ alias: arg.alias.filter(__assignType((alias) => alias.length > 1, [
366
+ "alias",
367
+ "",
368
+ "P\"2!\"/\""
369
+ ])).map(__assignType((alias) => constantCase(alias), [
370
+ "alias",
371
+ "",
372
+ "P\"2!\"/\""
373
+ ]))
374
+ }), [
375
+ "arg",
376
+ "",
377
+ "P\"2!\"/\""
378
+ ]));
379
+ }
380
+ await Promise.all(ctx.input.context.inputs.filter(__assignType((input) => input.segments.filter(__assignType((segment) => !isDynamicPathSegment(segment), [
381
+ "segment",
382
+ "",
383
+ "P\"2!\"/\""
384
+ ])).length === ctx.input.command.segments.filter(__assignType((segment) => !isDynamicPathSegment(segment), [
385
+ "segment",
386
+ "",
387
+ "P\"2!\"/\""
388
+ ])).length + 1 && input.segments.slice(0, ctx.input.command.segments.length).every(__assignType((value, index) => value === ctx.input.command.segments[index], [
389
+ "value",
390
+ "index",
391
+ "",
392
+ "P\"2!\"2\"\"/#"
393
+ ])), [
394
+ "input",
395
+ "",
396
+ "P\"2!\"/\""
397
+ ])).map(__assignType(async (input) => {
398
+ ctx.output.children[input.name] = await (resolve.Ω = [[
399
+ () => ctx,
400
+ "ResolverContext",
401
+ "Pi!\"w\"q\"!j"
402
+ ]], resolve({
403
+ context: ctx.input.context,
404
+ command: input,
405
+ parent: ctx.output
406
+ }));
407
+ }, [
408
+ "input",
409
+ "",
410
+ "P\"2!\"/\""
411
+ ])));
412
+ return ctx.output;
413
+ }
414
+ postprocess.__type = [
415
+ "ResolverContext",
416
+ "ctx",
417
+ "CommandTree",
418
+ "postprocess",
419
+ "P\"w!2\"\"w#`/$"
420
+ ];
421
+ /**
422
+ * Resolves a command tree from the given resolver input.
423
+ *
424
+ * @param input - The resolver input containing the context, command, and optional parent command tree.
425
+ * @returns A promise that resolves to the resolved command tree.
426
+ */
427
+ async function resolve(input) {
428
+ const ctx = await (preprocess.Ω = [[
429
+ () => input,
430
+ "ResolverInput",
431
+ "Pi!\"w\"q\"!j"
432
+ ]], preprocess(input));
433
+ if (!ctx.output.virtual) {
434
+ 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.`);
435
+ else if (!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.`);
436
+ 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.`);
437
+ const metadata = ctx.module.metadata ?? {};
438
+ if (isSetString(metadata.title)) ctx.output.title = metadata.title;
439
+ if (isSetString(metadata.description)) ctx.output.description = metadata.description;
440
+ if (isSetString(metadata.alias) || Array.isArray(metadata.alias) && metadata.alias.length > 0) ctx.output.alias = toArray(metadata.alias);
441
+ if (isSetString(metadata.icon)) ctx.output.icon = metadata.icon;
442
+ if (isSetString(metadata.tags)) ctx.output.tags = getUnique(ctx.output.tags.concat(toArray(metadata.tags)));
443
+ if (isSetObject(ctx.module.options)) {
444
+ const options = await extract(ctx.input.context, ctx.module.options);
445
+ if (!isSetObject(options) || !isJsonSchemaObjectType(options.schema)) throw new TypeError(`Command options for command at path "${ctx.input.command.path}" must resolve to an object.`);
446
+ ctx.output.options = getPropertiesList(options).reduce(__assignType((ret, property) => {
447
+ ret[property.name] = resolveCommandOption(property);
448
+ return ret;
449
+ }, [
450
+ "ret",
451
+ "property",
452
+ "",
453
+ "P\"2!\"2\"\"/#"
454
+ ]), {});
455
+ }
456
+ if (ctx.module.args && Array.isArray(ctx.module.args)) {
457
+ const args = await extract(ctx.input.context, ctx.module.args);
458
+ if (!isSetObject(args) || !isJsonSchemaTupleType(args.schema)) throw new TypeError(`Command arguments for command at path "${ctx.input.command.path}" must resolve to a tuple.`);
459
+ ctx.output.args = args.schema.items.map(__assignType((item) => resolveCommandArgument(item), [
460
+ "item",
461
+ "",
462
+ "P\"2!\"/\""
463
+ ]));
464
+ }
465
+ } else resolveVirtualCommand(ctx);
466
+ return postprocess(ctx);
467
+ }
468
+ resolve.__type = [
469
+ "ResolverInput",
470
+ "input",
471
+ "CommandTree",
472
+ "resolve",
473
+ "Resolves a command tree from the given resolver input.",
474
+ "P\"w!2\"\"w#`/$?%"
475
+ ];
476
+
477
+ //#endregion
478
+ export { resolve };
2
479
  //# sourceMappingURL=resolve.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.mjs","names":[],"sources":["../../src/resolver/resolve.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 { esbuildPlugin } from \"@powerlines/deepkit/esbuild-plugin\";\nimport { ReflectionVisibility } from \"@powerlines/deepkit/vendor/type\";\nimport { resolveModule } from \"@powerlines/plugin-esbuild/helpers/resolve\";\nimport { constantCase } from \"@stryke/string-format/constant-case\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { getGlobalOptions } from \"../helpers/utilities\";\nimport {\n getDynamicPathSegmentName,\n isDynamicPathSegment\n} from \"../plugin-utils/context-helpers\";\nimport { extractType } from \"../plugin-utils/deepkit\";\nimport type { CommandModule, CommandTree, Context } from \"../types\";\nimport { resolveFromBytecode } from \"./deepkit\";\nimport {\n applyArgsDefaults,\n applyDefaults,\n applyOptionsDefaults,\n resolveVirtualCommand\n} from \"./helpers\";\nimport { resolveFromExports } from \"./module\";\nimport type { ResolverContext, ResolverInput } from \"./types\";\n\nasync function initialize<TContext extends Context = Context>(\n input: ResolverInput<TContext>\n): Promise<ResolverContext> {\n const { context, command, parent } = input;\n\n const title =\n command.title ||\n `${\n parent?.title\n ? `${\n parent.isVirtual\n ? parent.title.replace(/(?:c|C)ommands?$/, \"\").trim()\n : parent.title\n } - `\n : \"\"\n }${titleCase(command.name)}${command.isVirtual ? \" Commands\" : \"\"}`;\n\n const output = {\n alias: [],\n icon: parent?.icon,\n tags: parent?.tags ?? [],\n source: \"file\",\n ...command,\n title,\n options: parent === null ? getGlobalOptions(context, command) : {},\n args: [],\n parent: parent ?? null,\n children: {}\n } as CommandTree;\n\n const result: ResolverContext = {\n input,\n output\n };\n\n if (!command.isVirtual) {\n if (\n !command.entry.input?.file ||\n !context.fs.existsSync(command.entry.input.file)\n ) {\n throw new Error(\n `${\n !command.entry.input?.file ? \"Missing\" : \"Non-existent\"\n } command entry file for \"${command.name}\"`\n );\n }\n\n context.debug(\n `Adding reflection for CLI command: ${command.id} (file: ${\n command.entry.input.file\n })`\n );\n\n result.module = await resolveModule<CommandModule>(\n context,\n command.entry.input,\n {\n name: command.title || titleCase(command.name),\n treeShaking: true,\n resolve: {\n skipNodeModulesBundle: true\n },\n plugins: [\n esbuildPlugin(context, {\n reflection: \"default\",\n level: \"all\"\n })\n ]\n }\n );\n }\n\n return result;\n}\n\nasync function postprocess<TContext extends Context = Context>(\n ctx: ResolverContext<TContext>\n): Promise<CommandTree> {\n ctx.output.options = applyOptionsDefaults(ctx);\n ctx.output.args = applyArgsDefaults(ctx);\n\n // Ensure unique argument names by appending an index suffix to duplicates\n ctx.output.args.forEach((arg, index) => {\n const found = ctx.output.args.findIndex(a => a.name === arg.name);\n if (\n (found !== -1 && found !== index) ||\n ctx.output.segments.some(\n segment =>\n isDynamicPathSegment(segment) &&\n getDynamicPathSegmentName(segment) === arg.name\n )\n ) {\n arg.name += `_${\n ctx.output.segments.filter(\n segment =>\n isDynamicPathSegment(segment) &&\n getDynamicPathSegmentName(segment).replace(/_\\d+$/, \"\") === arg.name\n ).length +\n ctx.output.args.filter(a => a.name.replace(/_\\d+$/, \"\") === arg.name)\n .length\n }`;\n arg.env = arg.name\n ? arg.env || arg.env === false\n ? arg.env\n : ctx.input.context.config.autoAssignEnv\n ? constantCase(arg.name)\n : false\n : false;\n }\n });\n\n applyDefaults(ctx);\n\n if (ctx.input.context.env) {\n if (isSetObject(ctx.output.options)) {\n Object.values(ctx.output.options)\n .filter(option => Boolean(option.env))\n .forEach(option => {\n ctx.input.context.env.types.env.addProperty({\n name: option.env as string,\n optional: option.optional ? true : undefined,\n description: option.description,\n visibility: ReflectionVisibility.public,\n type: extractType(option),\n default: option.default,\n tags: {\n title: option.title,\n alias: option.alias\n .filter(alias => alias.length > 1)\n .map(alias => constantCase(alias)),\n domain: \"cli\"\n }\n });\n });\n }\n\n ctx.output.args\n .filter(arg => Boolean(arg.env))\n .forEach(arg =>\n ctx.input.context.env.types.env.addProperty({\n name: arg.env as string,\n optional: arg.optional ? true : undefined,\n description: arg.description,\n visibility: ReflectionVisibility.public,\n type: extractType(arg),\n default: arg.default,\n tags: {\n alias: arg.alias\n .filter(alias => alias.length > 1)\n .map(alias => constantCase(alias)),\n domain: \"cli\"\n }\n })\n );\n }\n\n await Promise.all(\n ctx.input.context.inputs\n .filter(\n input =>\n input.segments.filter(segment => !isDynamicPathSegment(segment))\n .length ===\n ctx.input.command.segments.filter(\n segment => !isDynamicPathSegment(segment)\n ).length +\n 1 &&\n input.segments\n .slice(0, ctx.input.command.segments.length)\n .every(\n (value, index) => value === ctx.input.command.segments[index]\n )\n )\n .map(async input => {\n ctx.output.children[input.name] = await resolve<TContext>({\n context: ctx.input.context,\n command: input,\n parent: ctx.output\n });\n })\n );\n\n return ctx.output;\n}\n\n/**\n * Resolves a command tree from the given resolver input.\n *\n * @param input - The resolver input containing the context, command, and optional parent command tree.\n * @returns A promise that resolves to the resolved command tree.\n */\nexport async function resolve<TContext extends Context = Context>(\n input: ResolverInput<TContext>\n): Promise<CommandTree> {\n const ctx = await initialize<TContext>(input);\n\n if (!ctx.output.isVirtual) {\n await resolveFromExports(ctx);\n resolveFromBytecode(ctx);\n } else {\n resolveVirtualCommand(ctx);\n }\n\n return postprocess(ctx);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"resolve.mjs","names":[],"sources":[],"mappings":""}