@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,4 +1,4 @@
1
- //#region rolldown:runtime
1
+ //#region \0rolldown/runtime.js
2
2
  var __create = Object.create;
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -0,0 +1,3 @@
1
+ import "node:module";
2
+
3
+ export { };
package/dist/api.cjs CHANGED
@@ -1,4 +1,5 @@
1
- const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
2
3
  const require_plugin = require('./plugin.cjs');
3
4
  let powerlines = require("powerlines");
4
5
 
@@ -20,7 +21,7 @@ var ShellShockAPI = class ShellShockAPI {
20
21
  return new ShellShockAPI(await (0, powerlines.createPowerlines)({
21
22
  framework: "shell-shock",
22
23
  ...config,
23
- plugins: [require_plugin.plugin(), ...config.plugins ?? []]
24
+ plugins: [require_plugin.default(), ...config.plugins ?? []]
24
25
  }));
25
26
  }
26
27
  constructor(powerlines$1) {
package/dist/api.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.cjs","names":[],"sources":["../src/api.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 type {\n BuildInlineConfig,\n CleanInlineConfig,\n DocsInlineConfig,\n LintInlineConfig,\n PluginConfig,\n PowerlinesAPI,\n PrepareInlineConfig\n} from \"powerlines\";\nimport { createPowerlines } from \"powerlines\";\nimport { plugin } from \"./plugin\";\nimport type { UserConfig } from \"./types/config\";\n\n/**\n * The Shell Shock API class.\n *\n * @remarks\n * This class provides methods to interact with the Shell Shock build system, including cleaning, preparing, linting, building, generating documentation, and finalizing projects.\n */\nexport class ShellShockAPI {\n #powerlines: PowerlinesAPI;\n\n public static async from(config: UserConfig = {}): Promise<ShellShockAPI> {\n const powerlines = await createPowerlines({\n framework: \"shell-shock\",\n ...config,\n plugins: [plugin(), ...(config.plugins ?? [])] as PluginConfig<any>[]\n });\n\n return new ShellShockAPI(powerlines);\n }\n\n private constructor(powerlines: PowerlinesAPI) {\n this.#powerlines = powerlines;\n }\n\n public async clean(inlineConfig: CleanInlineConfig): Promise<void> {\n return this.#powerlines.clean(inlineConfig);\n }\n\n public async prepare(inlineConfig: PrepareInlineConfig): Promise<void> {\n return this.#powerlines.prepare(inlineConfig);\n }\n\n public async lint(inlineConfig: LintInlineConfig): Promise<void> {\n return this.#powerlines.lint(inlineConfig);\n }\n\n public async build(inlineConfig: BuildInlineConfig): Promise<void> {\n return this.#powerlines.build(inlineConfig);\n }\n\n public async docs(inlineConfig: DocsInlineConfig): Promise<void> {\n return this.#powerlines.docs(inlineConfig);\n }\n\n public async finalize(): Promise<void> {\n return this.#powerlines.finalize();\n }\n}\n\n/**\n * Creates a new {@link ShellShockAPI} instance.\n *\n * @param options - The user configuration options.\n * @returns A promise that resolves to a {@link ShellShockAPI} instance.\n */\nexport async function createShellShock(\n options: Partial<UserConfig> = {}\n): Promise<ShellShockAPI> {\n options.root ??= process.cwd();\n\n return ShellShockAPI.from(options);\n}\n"],"mappings":";;;;;AAAA,MAAM,aAAa;CAAC;CAAK;CAAW;CAA2B;;;;;;;AAS/D,IAAa,gBAAb,MAAa,cAAc;CACvB;CACA,aAAa,KAAK,SAAS,EAAE,EAAE;2BACR,uCAAuB;;GAEtC,GAAG;;GAEN,CAAC;;CAGN,YAAY,cAAG;AACX,QAAK,aAAM;;CAEf,MAAM,MAAM,cAAE;AACV,SAAM,MAAA,WAAA,MAAA,aAAA;;CAEV,MAAM,QAAQ,cAAE;AACZ,SAAO,MAAI,WAAA,QAAA,aAAA;;CAEf,MAAM,KAAK,cAAc;AACrB,SAAO,MAAK,WAAY,KAAK,aAAW;;CAE9C,MAAA,MAAA,cAAA;AACM,SAAO,MAAK,WAAQ,MAAA,aAAA;;CAExB,MAAM,KAAA,cAAA;AACF,SAAO,MAAK,WAAY,KAAK,aAAa;;CAE9C,MAAM,WAAW;AACb,SAAO,MAAK,WAAQ,UAAA;;CAExB,OAAO,SAAS;EAAC;EAAe;EAAc;SAAiB,EAAE;QAAO;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;;;;;AAQ5E,eAAE,iBAAA,UAAA,EAAA,EAAA;;AAEE,QAAO,cAAc,KAAK,QAAQ;;AAEtC,iBAAE,SAAA;OAAA;CAAA;CAAA;QAAA,EAAA;OAAA;CAAA;CAAA;CAAA"}
1
+ {"version":3,"file":"api.cjs","names":[],"sources":["../src/api.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 type {\n BuildInlineConfig,\n CleanInlineConfig,\n DocsInlineConfig,\n LintInlineConfig,\n PluginConfig,\n PowerlinesAPI,\n PrepareInlineConfig\n} from \"powerlines\";\nimport { createPowerlines } from \"powerlines\";\nimport { plugin } from \"./plugin\";\nimport type { UserConfig } from \"./types/config\";\n\n/**\n * The Shell Shock API class.\n *\n * @remarks\n * This class provides methods to interact with the Shell Shock build system, including cleaning, preparing, linting, building, generating documentation, and finalizing projects.\n */\nexport class ShellShockAPI {\n #powerlines: PowerlinesAPI;\n\n public static async from(config: UserConfig = {}): Promise<ShellShockAPI> {\n const powerlines = await createPowerlines({\n framework: \"shell-shock\",\n ...config,\n plugins: [plugin(), ...(config.plugins ?? [])] as PluginConfig<any>[]\n });\n\n return new ShellShockAPI(powerlines);\n }\n\n private constructor(powerlines: PowerlinesAPI) {\n this.#powerlines = powerlines;\n }\n\n public async clean(inlineConfig: CleanInlineConfig): Promise<void> {\n return this.#powerlines.clean(inlineConfig);\n }\n\n public async prepare(inlineConfig: PrepareInlineConfig): Promise<void> {\n return this.#powerlines.prepare(inlineConfig);\n }\n\n public async lint(inlineConfig: LintInlineConfig): Promise<void> {\n return this.#powerlines.lint(inlineConfig);\n }\n\n public async build(inlineConfig: BuildInlineConfig): Promise<void> {\n return this.#powerlines.build(inlineConfig);\n }\n\n public async docs(inlineConfig: DocsInlineConfig): Promise<void> {\n return this.#powerlines.docs(inlineConfig);\n }\n\n public async finalize(): Promise<void> {\n return this.#powerlines.finalize();\n }\n}\n\n/**\n * Creates a new {@link ShellShockAPI} instance.\n *\n * @param options - The user configuration options.\n * @returns A promise that resolves to a {@link ShellShockAPI} instance.\n */\nexport async function createShellShock(\n options: Partial<UserConfig> = {}\n): Promise<ShellShockAPI> {\n options.root ??= process.cwd();\n\n return ShellShockAPI.from(options);\n}\n"],"mappings":";;;;;;AAAA,MAAM,aAAa;CAAC;CAAK;CAAW;CAA2B;;;;;;;AAS/D,IAAa,gBAAb,MAAa,cAAc;CAC1B;CACA,aAAgB,KAAK,SAAK,EAAM,EAAE;2BACR,uCAAsB;;GAE3C,GAAQ;;GAEL,CAAC;;CAGR,YAAA,cAAiB;AACjB,QAAA,aAAiB;;CAEjB,MAAA,MAAA,cAAgB;AAChB,SAAY,MAAA,WAAA,MAAA,aAAA;;CAEZ,MAAA,QAAA,cAAA;AACM,SAAA,MAAW,WAAA,QAAA,aAAA;;CAEnB,MAAS,KAAM,cAAW;AACnB,SAAO,MAAA,WAAkB,KAAG,aAAa;;CAE9C,MAAA,MAAA,cAAA;AACK,SAAM,MAAM,WAAS,MAAA,aAAA;;CAExB,MAAA,KAAA,cAAA;AACI,SAAM,MAAA,WAAiB,KAAG,aAAc;;CAEhD,MAAO,WAAM;AACV,SAAY,MAAA,WAAa,UAAA;;CAE1B,OAAO,SAAO;EAAK;EAAc;EAAe;SAAW,EAAA;QAAe;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;;;;;AAQ5E,eAAE,iBAAA,UAAA,EAAA,EAAA;;AAEA,QAAQ,cAAY,KAAA,QAAY;;AAElC,iBAAE,SAAA;OAAA;CAAA;CAAA;QAAA,EAAA;OAAA;CAAA;CAAA;CAAA"}
package/dist/api.d.cts CHANGED
@@ -2,7 +2,6 @@ import { UserConfig } from "./types/config.cjs";
2
2
  import { BuildInlineConfig, CleanInlineConfig, DocsInlineConfig, LintInlineConfig, PrepareInlineConfig } from "powerlines";
3
3
 
4
4
  //#region src/api.d.ts
5
-
6
5
  /**
7
6
  * The Shell Shock API class.
8
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.cts","names":[],"sources":["../src/api.ts"],"sourcesContent":[],"mappings":";;;;;;;AAqCA;;;;AAiBmC,cAjBtB,aAAA,CAiBsB;EAAoB,CAAA,OAAA;EAIlB,OAAA,IAAA,CAAA,MAAA,CAAA,EAlBF,UAkBE,CAAA,EAlBgB,OAkBhB,CAlBwB,aAkBxB,CAAA;EAAsB,QAAA,WAAA,CAAA;EAIzB,KAAA,CAAA,YAAA,EARC,iBAQD,CAAA,EARqB,OAQrB,CAAA,IAAA,CAAA;EAAmB,OAAA,CAAA,YAAA,EAJhB,mBAIgB,CAAA,EAJM,OAIN,CAAA,IAAA,CAAA;EAIlB,IAAA,CAAA,YAAA,EAJD,gBAIC,CAAA,EAJkB,OAIlB,CAAA,IAAA,CAAA;EAAoB,KAAA,CAAA,YAAA,EAApB,iBAAoB,CAAA,EAAA,OAAA,CAAA,IAAA,CAAA;EAIrB,IAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAmB,OAAnB,CAAA,IAAA,CAAA;EAAmB,QAAA,CAAA,CAAA,EAI1B,OAJ0B,CAAA,IAAA,CAAA;;;AAerD;;;;;AAEU,iBAFY,gBAAA,CAEZ,OAAA,CAAA,EADC,OACD,CADS,UACT,CAAA,CAAA,EAAP,OAAO,CAAC,aAAD,CAAA"}
1
+ {"version":3,"file":"api.d.cts","names":[],"sources":["../src/api.ts"],"mappings":";;;;;;AAqCA;;;;cAAa,aAAA;EAAA;SAGS,IAAA,CAAK,MAAA,GAAQ,UAAA,GAAkB,OAAA,CAAQ,aAAA;EAAA,QAUpD,WAAA,CAAA;EAIM,KAAA,CAAM,YAAA,EAAc,iBAAA,GAAoB,OAAA;EAIxC,OAAA,CAAQ,YAAA,EAAc,mBAAA,GAAsB,OAAA;EAI5C,IAAA,CAAK,YAAA,EAAc,gBAAA,GAAmB,OAAA;EAItC,KAAA,CAAM,YAAA,EAAc,iBAAA,GAAoB,OAAA;EAIxC,IAAA,CAAK,YAAA,EAAc,gBAAA,GAAmB,OAAA;EAItC,QAAA,CAAA,GAAY,OAAA;AAAA;;;;;;;iBAWL,gBAAA,CACpB,OAAA,GAAS,OAAA,CAAQ,UAAA,IAChB,OAAA,CAAQ,aAAA"}
package/dist/api.d.mts CHANGED
@@ -2,7 +2,6 @@ import { UserConfig } from "./types/config.mjs";
2
2
  import { BuildInlineConfig, CleanInlineConfig, DocsInlineConfig, LintInlineConfig, PrepareInlineConfig } from "powerlines";
3
3
 
4
4
  //#region src/api.d.ts
5
-
6
5
  /**
7
6
  * The Shell Shock API class.
8
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.mts","names":[],"sources":["../src/api.ts"],"sourcesContent":[],"mappings":";;;;;;;AAqCA;;;;AAiBmC,cAjBtB,aAAA,CAiBsB;EAAoB,CAAA,OAAA;EAIlB,OAAA,IAAA,CAAA,MAAA,CAAA,EAlBF,UAkBE,CAAA,EAlBgB,OAkBhB,CAlBwB,aAkBxB,CAAA;EAAsB,QAAA,WAAA,CAAA;EAIzB,KAAA,CAAA,YAAA,EARC,iBAQD,CAAA,EARqB,OAQrB,CAAA,IAAA,CAAA;EAAmB,OAAA,CAAA,YAAA,EAJhB,mBAIgB,CAAA,EAJM,OAIN,CAAA,IAAA,CAAA;EAIlB,IAAA,CAAA,YAAA,EAJD,gBAIC,CAAA,EAJkB,OAIlB,CAAA,IAAA,CAAA;EAAoB,KAAA,CAAA,YAAA,EAApB,iBAAoB,CAAA,EAAA,OAAA,CAAA,IAAA,CAAA;EAIrB,IAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAmB,OAAnB,CAAA,IAAA,CAAA;EAAmB,QAAA,CAAA,CAAA,EAI1B,OAJ0B,CAAA,IAAA,CAAA;;;AAerD;;;;;AAEU,iBAFY,gBAAA,CAEZ,OAAA,CAAA,EADC,OACD,CADS,UACT,CAAA,CAAA,EAAP,OAAO,CAAC,aAAD,CAAA"}
1
+ {"version":3,"file":"api.d.mts","names":[],"sources":["../src/api.ts"],"mappings":";;;;;;AAqCA;;;;cAAa,aAAA;EAAA;SAGS,IAAA,CAAK,MAAA,GAAQ,UAAA,GAAkB,OAAA,CAAQ,aAAA;EAAA,QAUpD,WAAA,CAAA;EAIM,KAAA,CAAM,YAAA,EAAc,iBAAA,GAAoB,OAAA;EAIxC,OAAA,CAAQ,YAAA,EAAc,mBAAA,GAAsB,OAAA;EAI5C,IAAA,CAAK,YAAA,EAAc,gBAAA,GAAmB,OAAA;EAItC,KAAA,CAAM,YAAA,EAAc,iBAAA,GAAoB,OAAA;EAIxC,IAAA,CAAK,YAAA,EAAc,gBAAA,GAAmB,OAAA;EAItC,QAAA,CAAA,GAAY,OAAA;AAAA;;;;;;;iBAWL,gBAAA,CACpB,OAAA,GAAS,OAAA,CAAQ,UAAA,IAChB,OAAA,CAAQ,aAAA"}
package/dist/api.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { plugin } from "./plugin.mjs";
1
+ import plugin from "./plugin.mjs";
2
2
  import { createPowerlines } from "powerlines";
3
3
 
4
4
  //#region src/api.ts
package/dist/api.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.mjs","names":[],"sources":["../src/api.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 type {\n BuildInlineConfig,\n CleanInlineConfig,\n DocsInlineConfig,\n LintInlineConfig,\n PluginConfig,\n PowerlinesAPI,\n PrepareInlineConfig\n} from \"powerlines\";\nimport { createPowerlines } from \"powerlines\";\nimport { plugin } from \"./plugin\";\nimport type { UserConfig } from \"./types/config\";\n\n/**\n * The Shell Shock API class.\n *\n * @remarks\n * This class provides methods to interact with the Shell Shock build system, including cleaning, preparing, linting, building, generating documentation, and finalizing projects.\n */\nexport class ShellShockAPI {\n #powerlines: PowerlinesAPI;\n\n public static async from(config: UserConfig = {}): Promise<ShellShockAPI> {\n const powerlines = await createPowerlines({\n framework: \"shell-shock\",\n ...config,\n plugins: [plugin(), ...(config.plugins ?? [])] as PluginConfig<any>[]\n });\n\n return new ShellShockAPI(powerlines);\n }\n\n private constructor(powerlines: PowerlinesAPI) {\n this.#powerlines = powerlines;\n }\n\n public async clean(inlineConfig: CleanInlineConfig): Promise<void> {\n return this.#powerlines.clean(inlineConfig);\n }\n\n public async prepare(inlineConfig: PrepareInlineConfig): Promise<void> {\n return this.#powerlines.prepare(inlineConfig);\n }\n\n public async lint(inlineConfig: LintInlineConfig): Promise<void> {\n return this.#powerlines.lint(inlineConfig);\n }\n\n public async build(inlineConfig: BuildInlineConfig): Promise<void> {\n return this.#powerlines.build(inlineConfig);\n }\n\n public async docs(inlineConfig: DocsInlineConfig): Promise<void> {\n return this.#powerlines.docs(inlineConfig);\n }\n\n public async finalize(): Promise<void> {\n return this.#powerlines.finalize();\n }\n}\n\n/**\n * Creates a new {@link ShellShockAPI} instance.\n *\n * @param options - The user configuration options.\n * @returns A promise that resolves to a {@link ShellShockAPI} instance.\n */\nexport async function createShellShock(\n options: Partial<UserConfig> = {}\n): Promise<ShellShockAPI> {\n options.root ??= process.cwd();\n\n return ShellShockAPI.from(options);\n}\n"],"mappings":";;;;AAAA,MAAM,aAAa;CAAC;CAAK;CAAW;CAA2B;;;;;;;AAS/D,IAAa,gBAAb,MAAa,cAAc;CACvB;CACA,aAAa,KAAK,SAAS,EAAE,EAAE;2BACR,MAAM,iBAAiB;;GAEtC,GAAG;;GAEN,CAAC;;CAGN,YAAY,YAAG;AACX,QAAK,aAAM;;CAEf,MAAM,MAAM,cAAE;AACV,SAAM,MAAA,WAAA,MAAA,aAAA;;CAEV,MAAM,QAAQ,cAAE;AACZ,SAAO,MAAI,WAAA,QAAA,aAAA;;CAEf,MAAM,KAAK,cAAc;AACrB,SAAO,MAAK,WAAY,KAAK,aAAW;;CAE9C,MAAA,MAAA,cAAA;AACM,SAAO,MAAK,WAAQ,MAAA,aAAA;;CAExB,MAAM,KAAA,cAAA;AACF,SAAO,MAAK,WAAY,KAAK,aAAa;;CAE9C,MAAM,WAAW;AACb,SAAO,MAAK,WAAQ,UAAA;;CAExB,OAAO,SAAS;EAAC;EAAe;EAAc;SAAiB,EAAE;QAAO;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;;;;;AAQ5E,eAAE,iBAAA,UAAA,EAAA,EAAA;;AAEE,QAAO,cAAc,KAAK,QAAQ;;AAEtC,iBAAE,SAAA;OAAA;CAAA;CAAA;QAAA,EAAA;OAAA;CAAA;CAAA;CAAA"}
1
+ {"version":3,"file":"api.mjs","names":[],"sources":["../src/api.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 type {\n BuildInlineConfig,\n CleanInlineConfig,\n DocsInlineConfig,\n LintInlineConfig,\n PluginConfig,\n PowerlinesAPI,\n PrepareInlineConfig\n} from \"powerlines\";\nimport { createPowerlines } from \"powerlines\";\nimport { plugin } from \"./plugin\";\nimport type { UserConfig } from \"./types/config\";\n\n/**\n * The Shell Shock API class.\n *\n * @remarks\n * This class provides methods to interact with the Shell Shock build system, including cleaning, preparing, linting, building, generating documentation, and finalizing projects.\n */\nexport class ShellShockAPI {\n #powerlines: PowerlinesAPI;\n\n public static async from(config: UserConfig = {}): Promise<ShellShockAPI> {\n const powerlines = await createPowerlines({\n framework: \"shell-shock\",\n ...config,\n plugins: [plugin(), ...(config.plugins ?? [])] as PluginConfig<any>[]\n });\n\n return new ShellShockAPI(powerlines);\n }\n\n private constructor(powerlines: PowerlinesAPI) {\n this.#powerlines = powerlines;\n }\n\n public async clean(inlineConfig: CleanInlineConfig): Promise<void> {\n return this.#powerlines.clean(inlineConfig);\n }\n\n public async prepare(inlineConfig: PrepareInlineConfig): Promise<void> {\n return this.#powerlines.prepare(inlineConfig);\n }\n\n public async lint(inlineConfig: LintInlineConfig): Promise<void> {\n return this.#powerlines.lint(inlineConfig);\n }\n\n public async build(inlineConfig: BuildInlineConfig): Promise<void> {\n return this.#powerlines.build(inlineConfig);\n }\n\n public async docs(inlineConfig: DocsInlineConfig): Promise<void> {\n return this.#powerlines.docs(inlineConfig);\n }\n\n public async finalize(): Promise<void> {\n return this.#powerlines.finalize();\n }\n}\n\n/**\n * Creates a new {@link ShellShockAPI} instance.\n *\n * @param options - The user configuration options.\n * @returns A promise that resolves to a {@link ShellShockAPI} instance.\n */\nexport async function createShellShock(\n options: Partial<UserConfig> = {}\n): Promise<ShellShockAPI> {\n options.root ??= process.cwd();\n\n return ShellShockAPI.from(options);\n}\n"],"mappings":";;;;AAAA,MAAM,aAAa;CAAC;CAAK;CAAW;CAA2B;;;;;;;AAS/D,IAAa,gBAAb,MAAa,cAAc;CAC1B;CACA,aAAgB,KAAK,SAAK,EAAM,EAAE;2BACR,MAAM,iBAAgB;;GAE3C,GAAQ;;GAEL,CAAC;;CAGR,YAAA,YAAiB;AACjB,QAAA,aAAiB;;CAEjB,MAAA,MAAA,cAAgB;AAChB,SAAY,MAAA,WAAA,MAAA,aAAA;;CAEZ,MAAA,QAAA,cAAA;AACM,SAAA,MAAW,WAAA,QAAA,aAAA;;CAEnB,MAAS,KAAM,cAAW;AACnB,SAAO,MAAA,WAAkB,KAAG,aAAa;;CAE9C,MAAA,MAAA,cAAA;AACK,SAAM,MAAM,WAAS,MAAA,aAAA;;CAExB,MAAA,KAAA,cAAA;AACI,SAAM,MAAA,WAAiB,KAAG,aAAc;;CAEhD,MAAO,WAAM;AACV,SAAY,MAAA,WAAa,UAAA;;CAE1B,OAAO,SAAO;EAAK;EAAc;EAAe;SAAW,EAAA;QAAe;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;;;;;;;;AAQ5E,eAAE,iBAAA,UAAA,EAAA,EAAA;;AAEA,QAAQ,cAAY,KAAA,QAAY;;AAElC,iBAAE,SAAA;OAAA;CAAA;CAAA;QAAA,EAAA;OAAA;CAAA;CAAA;CAAA"}
@@ -1,11 +1,12 @@
1
- const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
3
  const require_types_command = require('../types/command.cjs');
3
- let __alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
4
- let __stryke_string_format_camel_case = require("@stryke/string-format/camel-case");
5
- let __alloy_js_core = require("@alloy-js/core");
6
- let __alloy_js_typescript = require("@alloy-js/typescript");
7
- let __powerlines_plugin_alloy_dist_core_components_spacing_mjs = require("@powerlines/plugin-alloy/dist/core/components/spacing.mjs");
8
- let __stryke_string_format_list = require("@stryke/string-format/list");
4
+ let _alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
5
+ let _stryke_string_format_camel_case = require("@stryke/string-format/camel-case");
6
+ let _alloy_js_core = require("@alloy-js/core");
7
+ let _powerlines_plugin_alloy_core_components_spacing = require("@powerlines/plugin-alloy/core/components/spacing");
8
+ let _alloy_js_typescript = require("@alloy-js/typescript");
9
+ let _stryke_string_format_list = require("@stryke/string-format/list");
9
10
 
10
11
  //#region src/components/command-validation-logic.tsx
11
12
  /**
@@ -14,105 +15,105 @@ let __stryke_string_format_list = require("@stryke/string-format/list");
14
15
  function CommandValidationLogic(props) {
15
16
  const { command } = props;
16
17
  return [
17
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
18
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.VarDeclaration, {
18
19
  name: "failures",
19
20
  type: "string[]",
20
- initializer: __alloy_js_core.code`[];`
21
+ initializer: _alloy_js_core.code`[];`
21
22
  }),
22
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
23
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.For, {
23
+ (0, _alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
24
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.For, {
24
25
  get each() {
25
26
  return Object.values(command.options ?? {});
26
27
  },
27
28
  doubleHardline: true,
28
29
  children: (option) => [
29
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
30
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
30
31
  get when() {
31
32
  return !option.optional;
32
33
  },
33
34
  get children() {
34
- return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
35
+ return [(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.IfStatement, {
35
36
  get condition() {
36
- return __alloy_js_core.code`!options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, __stryke_string_format_camel_case.camelCase)(option.name)}`}`;
37
+ return _alloy_js_core.code`!options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, _stryke_string_format_camel_case.camelCase)(option.name)}`}`;
37
38
  },
38
39
  get children() {
39
- return __alloy_js_core.code`failures.push("Missing required ${option.name} option");`;
40
+ return _alloy_js_core.code`failures.push("Missing required ${option.name} option");`;
40
41
  }
41
- }), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
42
+ }), (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
42
43
  get when() {
43
44
  return (option.kind === require_types_command.CommandParameterKinds.string || option.kind === require_types_command.CommandParameterKinds.number) && option.variadic;
44
45
  },
45
46
  get children() {
46
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.ElseIfClause, {
47
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.ElseIfClause, {
47
48
  get condition() {
48
- return __alloy_js_core.code`options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, __stryke_string_format_camel_case.camelCase)(option.name)}`}.length === 0`;
49
+ return _alloy_js_core.code`options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, _stryke_string_format_camel_case.camelCase)(option.name)}`}.length === 0`;
49
50
  },
50
51
  get children() {
51
- return __alloy_js_core.code`failures.push("No values were provided to the required ${option.name} array option");`;
52
+ return _alloy_js_core.code`failures.push("No values were provided to the required ${option.name} array option");`;
52
53
  }
53
54
  });
54
55
  }
55
56
  })];
56
57
  }
57
58
  }),
58
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
59
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
59
60
  get when() {
60
61
  return option.kind === require_types_command.CommandParameterKinds.number;
61
62
  },
62
63
  get children() {
63
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
64
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
64
65
  get when() {
65
66
  return option.variadic;
66
67
  },
67
68
  get fallback() {
68
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
69
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.IfStatement, {
69
70
  get condition() {
70
- return __alloy_js_core.code`options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, __stryke_string_format_camel_case.camelCase)(option.name)}`} && Number.isNaN(options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, __stryke_string_format_camel_case.camelCase)(option.name)}`})`;
71
+ return _alloy_js_core.code`options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, _stryke_string_format_camel_case.camelCase)(option.name)}`} && Number.isNaN(options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, _stryke_string_format_camel_case.camelCase)(option.name)}`})`;
71
72
  },
72
73
  get children() {
73
- return __alloy_js_core.code`failures.push("Invalid numeric value provided for the ${option.name} option");`;
74
+ return _alloy_js_core.code`failures.push("Invalid numeric value provided for the ${option.name} option");`;
74
75
  }
75
76
  });
76
77
  },
77
78
  get children() {
78
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
79
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.IfStatement, {
79
80
  get condition() {
80
- return __alloy_js_core.code`options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, __stryke_string_format_camel_case.camelCase)(option.name)}`}.some(value => Number.isNaN(value))`;
81
+ return _alloy_js_core.code`options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, _stryke_string_format_camel_case.camelCase)(option.name)}`}.some(value => Number.isNaN(value))`;
81
82
  },
82
83
  get children() {
83
- return __alloy_js_core.code`failures.push("Invalid numeric value provided in the ${option.name} array option");`;
84
+ return _alloy_js_core.code`failures.push("Invalid numeric value provided in the ${option.name} array option");`;
84
85
  }
85
86
  });
86
87
  }
87
88
  });
88
89
  }
89
90
  }),
90
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
91
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
91
92
  get when() {
92
93
  return (option.kind === require_types_command.CommandParameterKinds.string || option.kind === require_types_command.CommandParameterKinds.number) && option.choices && option.choices.length > 0;
93
94
  },
94
95
  get children() {
95
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
96
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
96
97
  get when() {
97
98
  return (option.kind === require_types_command.CommandParameterKinds.string || option.kind === require_types_command.CommandParameterKinds.number) && option.variadic;
98
99
  },
99
100
  get fallback() {
100
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.ElseIfClause, {
101
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.ElseIfClause, {
101
102
  get condition() {
102
- return __alloy_js_core.code`!options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, __stryke_string_format_camel_case.camelCase)(option.name)}`}.every(value => [${option.choices?.map((choice) => option.kind === require_types_command.CommandParameterKinds.string ? `"${choice}"` : choice).join(", ")}].includes(value))`;
103
+ return _alloy_js_core.code`!options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, _stryke_string_format_camel_case.camelCase)(option.name)}`}.every(value => [${option.choices?.map((choice) => option.kind === require_types_command.CommandParameterKinds.string ? `"${choice}"` : choice).join(", ")}].includes(value))`;
103
104
  },
104
105
  get children() {
105
- return __alloy_js_core.code`failures.push(\`Invalid value provided for the ${option.name} option - valid values include: ${(0, __stryke_string_format_list.list)(option?.choices?.map((choice) => String(choice)) ?? [])}; provided: \${options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, __stryke_string_format_camel_case.camelCase)(option.name)}`}}\`);`;
106
+ return _alloy_js_core.code`failures.push(\`Invalid value provided for the ${option.name} option - valid values include: ${(0, _stryke_string_format_list.list)(option?.choices?.map((choice) => String(choice)) ?? [])}; provided: \${options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, _stryke_string_format_camel_case.camelCase)(option.name)}`}}\`);`;
106
107
  }
107
108
  });
108
109
  },
109
110
  get children() {
110
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.ElseIfClause, {
111
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.ElseIfClause, {
111
112
  get condition() {
112
- return __alloy_js_core.code`![${option.choices?.map((choice) => option.kind === require_types_command.CommandParameterKinds.string ? `"${choice}"` : choice).join(", ")}].includes(options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, __stryke_string_format_camel_case.camelCase)(option.name)}`})`;
113
+ return _alloy_js_core.code`![${option.choices?.map((choice) => option.kind === require_types_command.CommandParameterKinds.string ? `"${choice}"` : choice).join(", ")}].includes(options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, _stryke_string_format_camel_case.camelCase)(option.name)}`})`;
113
114
  },
114
115
  get children() {
115
- return __alloy_js_core.code`failures.push(\`Invalid value provided for the ${option.name} option - valid values include: ${(0, __stryke_string_format_list.list)(option?.choices?.map((choice) => String(choice)) ?? [])}; provided: \${options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, __stryke_string_format_camel_case.camelCase)(option.name)}`}}\`);`;
116
+ return _alloy_js_core.code`failures.push(\`Invalid value provided for the ${option.name} option - valid values include: ${(0, _stryke_string_format_list.list)(option?.choices?.map((choice) => String(choice)) ?? [])}; provided: \${options${option.name.includes("?") ? `["${option.name}"]` : `.${(0, _stryke_string_format_camel_case.camelCase)(option.name)}`}}\`);`;
116
117
  }
117
118
  });
118
119
  }
@@ -121,66 +122,66 @@ function CommandValidationLogic(props) {
121
122
  })
122
123
  ]
123
124
  }),
124
- (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_dist_core_components_spacing_mjs.Spacing, {}),
125
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.For, {
125
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_powerlines_plugin_alloy_core_components_spacing.Spacing, {}),
126
+ (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.For, {
126
127
  get each() {
127
128
  return command.args;
128
129
  },
129
130
  doubleHardline: true,
130
- children: (argument) => [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
131
+ children: (argument) => [(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
131
132
  get when() {
132
133
  return !argument.optional;
133
134
  },
134
135
  get children() {
135
- return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
136
+ return [(0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.IfStatement, {
136
137
  get condition() {
137
- return __alloy_js_core.code`!${(0, __stryke_string_format_camel_case.camelCase)(argument.name)}`;
138
+ return _alloy_js_core.code`!${(0, _stryke_string_format_camel_case.camelCase)(argument.name)}`;
138
139
  },
139
140
  get children() {
140
- return __alloy_js_core.code`failures.push("Missing required \\"${argument.name}\\" positional argument");`;
141
+ return _alloy_js_core.code`failures.push("Missing required \\"${argument.name}\\" positional argument");`;
141
142
  }
142
- }), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
143
+ }), (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
143
144
  get when() {
144
145
  return (argument.kind === require_types_command.CommandParameterKinds.string || argument.kind === require_types_command.CommandParameterKinds.number) && argument.variadic;
145
146
  },
146
147
  get children() {
147
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.ElseIfClause, {
148
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.ElseIfClause, {
148
149
  get condition() {
149
- return __alloy_js_core.code`${(0, __stryke_string_format_camel_case.camelCase)(argument.name)}.length === 0`;
150
+ return _alloy_js_core.code`${(0, _stryke_string_format_camel_case.camelCase)(argument.name)}.length === 0`;
150
151
  },
151
152
  get children() {
152
- return __alloy_js_core.code`failures.push("No values were provided to the required ${argument.name} array positional argument");`;
153
+ return _alloy_js_core.code`failures.push("No values were provided to the required ${argument.name} array positional argument");`;
153
154
  }
154
155
  });
155
156
  }
156
157
  })];
157
158
  }
158
- }), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
159
+ }), (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
159
160
  get when() {
160
161
  return argument.kind === require_types_command.CommandParameterKinds.number;
161
162
  },
162
163
  get children() {
163
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
164
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_core.Show, {
164
165
  get when() {
165
166
  return argument.variadic;
166
167
  },
167
168
  get fallback() {
168
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
169
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.IfStatement, {
169
170
  get condition() {
170
- return __alloy_js_core.code`${(0, __stryke_string_format_camel_case.camelCase)(argument.name)} && Number.isNaN(${(0, __stryke_string_format_camel_case.camelCase)(argument.name)})`;
171
+ return _alloy_js_core.code`${(0, _stryke_string_format_camel_case.camelCase)(argument.name)} && Number.isNaN(${(0, _stryke_string_format_camel_case.camelCase)(argument.name)})`;
171
172
  },
172
173
  get children() {
173
- return __alloy_js_core.code`failures.push("Invalid numeric value provided for the ${argument.name} positional argument");`;
174
+ return _alloy_js_core.code`failures.push("Invalid numeric value provided for the ${argument.name} positional argument");`;
174
175
  }
175
176
  });
176
177
  },
177
178
  get children() {
178
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
179
+ return (0, _alloy_js_core_jsx_runtime.createComponent)(_alloy_js_typescript.IfStatement, {
179
180
  get condition() {
180
- return __alloy_js_core.code`${(0, __stryke_string_format_camel_case.camelCase)(argument.name)}.some(value => Number.isNaN(value))`;
181
+ return _alloy_js_core.code`${(0, _stryke_string_format_camel_case.camelCase)(argument.name)}.some(value => Number.isNaN(value))`;
181
182
  },
182
183
  get children() {
183
- return __alloy_js_core.code`failures.push("Invalid numeric value provided in the ${argument.name} array positional argument");`;
184
+ return _alloy_js_core.code`failures.push("Invalid numeric value provided in the ${argument.name} array positional argument");`;
184
185
  }
185
186
  });
186
187
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command-validation-logic.cjs","names":["code","For","Show","ElseIfClause","IfStatement","VarDeclaration","Spacing","camelCase","list","CommandParameterKinds","CommandValidationLogic","props","command","_$createComponent","name","type","initializer","_$createIntrinsic","each","Object","values","options","doubleHardline","children","option","when","optional","condition","includes","kind","string","number","variadic","fallback","choices","length","map","choice","join","String","args","argument"],"sources":["../../src/components/command-validation-logic.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { code, For, Show } from \"@alloy-js/core\";\nimport {\n ElseIfClause,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/dist/core/components/spacing.mjs\";\nimport { camelCase } from \"@stryke/string-format/camel-case\";\nimport { list } from \"@stryke/string-format/list\";\nimport type {\n CommandTree,\n NumberCommandParameter,\n StringCommandParameter\n} from \"../types\";\nimport { CommandParameterKinds } from \"../types\";\n\nexport interface CommandValidationLogicProps {\n command: CommandTree;\n}\n\n/**\n * A component that generates command validation logic for required options and arguments.\n */\nexport function CommandValidationLogic(props: CommandValidationLogicProps) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration name=\"failures\" type=\"string[]\" initializer={code`[];`} />\n <hbr />\n <For each={Object.values(command.options ?? {})} doubleHardline>\n {option => (\n <>\n <Show when={!option.optional}>\n <IfStatement\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }`}>\n {code`failures.push(\"Missing required ${option.name} option\");`}\n </IfStatement>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.variadic\n }>\n <ElseIfClause\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.length === 0`}>\n {code`failures.push(\"No values were provided to the required ${\n option.name\n } array option\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n <Show\n when={(option as NumberCommandParameter).variadic}\n fallback={\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n } && Number.isNaN(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\"Invalid numeric value provided for the ${\n option.name\n } option\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the ${\n option.name\n } array option\");`}\n </IfStatement>\n </Show>\n </Show>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.choices &&\n option.choices.length > 0\n }>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.variadic\n }\n fallback={\n <ElseIfClause\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.every(value => [${(\n option as StringCommandParameter | NumberCommandParameter\n ).choices\n ?.map(choice =>\n option.kind === CommandParameterKinds.string\n ? `\"${choice}\"`\n : choice\n )\n .join(\", \")}].includes(value))`}>\n {code`failures.push(\\`Invalid value provided for the ${\n option.name\n } option - valid values include: ${list(\n (\n option as\n | StringCommandParameter\n | NumberCommandParameter\n )?.choices?.map(choice => String(choice)) ?? []\n )}; provided: \\${options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }}\\`);`}\n </ElseIfClause>\n }>\n <ElseIfClause\n condition={code`![${(\n option as StringCommandParameter | NumberCommandParameter\n ).choices\n ?.map(choice =>\n option.kind === CommandParameterKinds.string\n ? `\"${choice}\"`\n : choice\n )\n .join(\", \")}].includes(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\\`Invalid value provided for the ${\n option.name\n } option - valid values include: ${list(\n (\n option as StringCommandParameter | NumberCommandParameter\n )?.choices?.map(choice => String(choice)) ?? []\n )}; provided: \\${options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }}\\`);`}\n </ElseIfClause>\n </Show>\n </Show>\n </>\n )}\n </For>\n <Spacing />\n <For each={command.args} doubleHardline>\n {argument => (\n <>\n <Show when={!argument.optional}>\n <IfStatement condition={code`!${camelCase(argument.name)}`}>\n {code`failures.push(\"Missing required \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n <Show\n when={\n (argument.kind === CommandParameterKinds.string ||\n argument.kind === CommandParameterKinds.number) &&\n argument.variadic\n }>\n <ElseIfClause\n condition={code`${camelCase(argument.name)}.length === 0`}>\n {code`failures.push(\"No values were provided to the required ${\n argument.name\n } array positional argument\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={argument.kind === CommandParameterKinds.number}>\n <Show\n when={(argument as NumberCommandParameter).variadic}\n fallback={\n <IfStatement\n condition={code`${camelCase(\n argument.name\n )} && Number.isNaN(${camelCase(argument.name)})`}>\n {code`failures.push(\"Invalid numeric value provided for the ${\n argument.name\n } positional argument\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`${camelCase(argument.name)}.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the ${\n argument.name\n } array positional argument\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"command-validation-logic.cjs","names":[],"sources":["../../src/components/command-validation-logic.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { code, For, Show } from \"@alloy-js/core\";\nimport {\n ElseIfClause,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport { camelCase } from \"@stryke/string-format/camel-case\";\nimport { list } from \"@stryke/string-format/list\";\nimport type {\n CommandTree,\n NumberCommandParameter,\n StringCommandParameter\n} from \"../types\";\nimport { CommandParameterKinds } from \"../types\";\n\nexport interface CommandValidationLogicProps {\n command: CommandTree;\n}\n\n/**\n * A component that generates command validation logic for required options and arguments.\n */\nexport function CommandValidationLogic(props: CommandValidationLogicProps) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration name=\"failures\" type=\"string[]\" initializer={code`[];`} />\n <hbr />\n <For each={Object.values(command.options ?? {})} doubleHardline>\n {option => (\n <>\n <Show when={!option.optional}>\n <IfStatement\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }`}>\n {code`failures.push(\"Missing required ${option.name} option\");`}\n </IfStatement>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.variadic\n }>\n <ElseIfClause\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.length === 0`}>\n {code`failures.push(\"No values were provided to the required ${\n option.name\n } array option\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n <Show\n when={(option as NumberCommandParameter).variadic}\n fallback={\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n } && Number.isNaN(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\"Invalid numeric value provided for the ${\n option.name\n } option\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the ${\n option.name\n } array option\");`}\n </IfStatement>\n </Show>\n </Show>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.choices &&\n option.choices.length > 0\n }>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.variadic\n }\n fallback={\n <ElseIfClause\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.every(value => [${(\n option as StringCommandParameter | NumberCommandParameter\n ).choices\n ?.map(choice =>\n option.kind === CommandParameterKinds.string\n ? `\"${choice}\"`\n : choice\n )\n .join(\", \")}].includes(value))`}>\n {code`failures.push(\\`Invalid value provided for the ${\n option.name\n } option - valid values include: ${list(\n (\n option as\n | StringCommandParameter\n | NumberCommandParameter\n )?.choices?.map(choice => String(choice)) ?? []\n )}; provided: \\${options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }}\\`);`}\n </ElseIfClause>\n }>\n <ElseIfClause\n condition={code`![${(\n option as StringCommandParameter | NumberCommandParameter\n ).choices\n ?.map(choice =>\n option.kind === CommandParameterKinds.string\n ? `\"${choice}\"`\n : choice\n )\n .join(\", \")}].includes(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\\`Invalid value provided for the ${\n option.name\n } option - valid values include: ${list(\n (\n option as StringCommandParameter | NumberCommandParameter\n )?.choices?.map(choice => String(choice)) ?? []\n )}; provided: \\${options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }}\\`);`}\n </ElseIfClause>\n </Show>\n </Show>\n </>\n )}\n </For>\n <Spacing />\n <For each={command.args} doubleHardline>\n {argument => (\n <>\n <Show when={!argument.optional}>\n <IfStatement condition={code`!${camelCase(argument.name)}`}>\n {code`failures.push(\"Missing required \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n <Show\n when={\n (argument.kind === CommandParameterKinds.string ||\n argument.kind === CommandParameterKinds.number) &&\n argument.variadic\n }>\n <ElseIfClause\n condition={code`${camelCase(argument.name)}.length === 0`}>\n {code`failures.push(\"No values were provided to the required ${\n argument.name\n } array positional argument\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={argument.kind === CommandParameterKinds.number}>\n <Show\n when={(argument as NumberCommandParameter).variadic}\n fallback={\n <IfStatement\n condition={code`${camelCase(\n argument.name\n )} && Number.isNaN(${camelCase(argument.name)})`}>\n {code`failures.push(\"Invalid numeric value provided for the ${\n argument.name\n } positional argument\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`${camelCase(argument.name)}.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the ${\n argument.name\n } array positional argument\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n </>\n );\n}\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { CommandTree } from "../types/command.cjs";
2
- import "../types/index.cjs";
3
- import * as _alloy_js_core21 from "@alloy-js/core";
2
+ import * as _alloy_js_core0 from "@alloy-js/core";
4
3
 
5
4
  //#region src/components/command-validation-logic.d.ts
6
5
  interface CommandValidationLogicProps {
@@ -9,7 +8,7 @@ interface CommandValidationLogicProps {
9
8
  /**
10
9
  * A component that generates command validation logic for required options and arguments.
11
10
  */
12
- declare function CommandValidationLogic(props: CommandValidationLogicProps): _alloy_js_core21.Children;
11
+ declare function CommandValidationLogic(props: CommandValidationLogicProps): _alloy_js_core0.Children;
13
12
  //#endregion
14
13
  export { CommandValidationLogic, CommandValidationLogicProps };
15
14
  //# sourceMappingURL=command-validation-logic.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-validation-logic.d.cts","names":[],"sources":["../../src/components/command-validation-logic.tsx"],"sourcesContent":[],"mappings":";;;;;UAkCiB,2BAAA;WACN;;;AADX;AAOA;iBAAgB,sBAAA,QAA8B,8BAA2B,gBAAA,CAAA"}
1
+ {"version":3,"file":"command-validation-logic.d.cts","names":[],"sources":["../../src/components/command-validation-logic.tsx"],"mappings":";;;;UAkCiB,2BAAA;EACf,OAAA,EAAS,WAAA;AAAA;;AADX;;iBAOgB,sBAAA,CAAuB,KAAA,EAAO,2BAAA,GAA2B,eAAA,CAAA,QAAA"}
@@ -1,6 +1,5 @@
1
1
  import { CommandTree } from "../types/command.mjs";
2
- import "../types/index.mjs";
3
- import * as _alloy_js_core22 from "@alloy-js/core";
2
+ import * as _alloy_js_core0 from "@alloy-js/core";
4
3
 
5
4
  //#region src/components/command-validation-logic.d.ts
6
5
  interface CommandValidationLogicProps {
@@ -9,7 +8,7 @@ interface CommandValidationLogicProps {
9
8
  /**
10
9
  * A component that generates command validation logic for required options and arguments.
11
10
  */
12
- declare function CommandValidationLogic(props: CommandValidationLogicProps): _alloy_js_core22.Children;
11
+ declare function CommandValidationLogic(props: CommandValidationLogicProps): _alloy_js_core0.Children;
13
12
  //#endregion
14
13
  export { CommandValidationLogic, CommandValidationLogicProps };
15
14
  //# sourceMappingURL=command-validation-logic.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-validation-logic.d.mts","names":[],"sources":["../../src/components/command-validation-logic.tsx"],"sourcesContent":[],"mappings":";;;;;UAkCiB,2BAAA;WACN;;;AADX;AAOA;iBAAgB,sBAAA,QAA8B,8BAA2B,gBAAA,CAAA"}
1
+ {"version":3,"file":"command-validation-logic.d.mts","names":[],"sources":["../../src/components/command-validation-logic.tsx"],"mappings":";;;;UAkCiB,2BAAA;EACf,OAAA,EAAS,WAAA;AAAA;;AADX;;iBAOgB,sBAAA,CAAuB,KAAA,EAAO,2BAAA,GAA2B,eAAA,CAAA,QAAA"}
@@ -2,8 +2,8 @@ import { CommandParameterKinds } from "../types/command.mjs";
2
2
  import { createComponent, createIntrinsic, memo } from "@alloy-js/core/jsx-runtime";
3
3
  import { camelCase } from "@stryke/string-format/camel-case";
4
4
  import { For, Show, code } from "@alloy-js/core";
5
+ import { Spacing } from "@powerlines/plugin-alloy/core/components/spacing";
5
6
  import { ElseIfClause, IfStatement, VarDeclaration } from "@alloy-js/typescript";
6
- import { Spacing } from "@powerlines/plugin-alloy/dist/core/components/spacing.mjs";
7
7
  import { list } from "@stryke/string-format/list";
8
8
 
9
9
  //#region src/components/command-validation-logic.tsx
@@ -1 +1 @@
1
- {"version":3,"file":"command-validation-logic.mjs","names":["code","For","Show","ElseIfClause","IfStatement","VarDeclaration","Spacing","camelCase","list","CommandParameterKinds","CommandValidationLogic","props","command","_$createComponent","name","type","initializer","_$createIntrinsic","each","Object","values","options","doubleHardline","children","option","when","optional","condition","includes","kind","string","number","variadic","fallback","choices","length","map","choice","join","String","args","argument"],"sources":["../../src/components/command-validation-logic.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { code, For, Show } from \"@alloy-js/core\";\nimport {\n ElseIfClause,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/dist/core/components/spacing.mjs\";\nimport { camelCase } from \"@stryke/string-format/camel-case\";\nimport { list } from \"@stryke/string-format/list\";\nimport type {\n CommandTree,\n NumberCommandParameter,\n StringCommandParameter\n} from \"../types\";\nimport { CommandParameterKinds } from \"../types\";\n\nexport interface CommandValidationLogicProps {\n command: CommandTree;\n}\n\n/**\n * A component that generates command validation logic for required options and arguments.\n */\nexport function CommandValidationLogic(props: CommandValidationLogicProps) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration name=\"failures\" type=\"string[]\" initializer={code`[];`} />\n <hbr />\n <For each={Object.values(command.options ?? {})} doubleHardline>\n {option => (\n <>\n <Show when={!option.optional}>\n <IfStatement\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }`}>\n {code`failures.push(\"Missing required ${option.name} option\");`}\n </IfStatement>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.variadic\n }>\n <ElseIfClause\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.length === 0`}>\n {code`failures.push(\"No values were provided to the required ${\n option.name\n } array option\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n <Show\n when={(option as NumberCommandParameter).variadic}\n fallback={\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n } && Number.isNaN(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\"Invalid numeric value provided for the ${\n option.name\n } option\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the ${\n option.name\n } array option\");`}\n </IfStatement>\n </Show>\n </Show>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.choices &&\n option.choices.length > 0\n }>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.variadic\n }\n fallback={\n <ElseIfClause\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.every(value => [${(\n option as StringCommandParameter | NumberCommandParameter\n ).choices\n ?.map(choice =>\n option.kind === CommandParameterKinds.string\n ? `\"${choice}\"`\n : choice\n )\n .join(\", \")}].includes(value))`}>\n {code`failures.push(\\`Invalid value provided for the ${\n option.name\n } option - valid values include: ${list(\n (\n option as\n | StringCommandParameter\n | NumberCommandParameter\n )?.choices?.map(choice => String(choice)) ?? []\n )}; provided: \\${options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }}\\`);`}\n </ElseIfClause>\n }>\n <ElseIfClause\n condition={code`![${(\n option as StringCommandParameter | NumberCommandParameter\n ).choices\n ?.map(choice =>\n option.kind === CommandParameterKinds.string\n ? `\"${choice}\"`\n : choice\n )\n .join(\", \")}].includes(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\\`Invalid value provided for the ${\n option.name\n } option - valid values include: ${list(\n (\n option as StringCommandParameter | NumberCommandParameter\n )?.choices?.map(choice => String(choice)) ?? []\n )}; provided: \\${options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }}\\`);`}\n </ElseIfClause>\n </Show>\n </Show>\n </>\n )}\n </For>\n <Spacing />\n <For each={command.args} doubleHardline>\n {argument => (\n <>\n <Show when={!argument.optional}>\n <IfStatement condition={code`!${camelCase(argument.name)}`}>\n {code`failures.push(\"Missing required \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n <Show\n when={\n (argument.kind === CommandParameterKinds.string ||\n argument.kind === CommandParameterKinds.number) &&\n argument.variadic\n }>\n <ElseIfClause\n condition={code`${camelCase(argument.name)}.length === 0`}>\n {code`failures.push(\"No values were provided to the required ${\n argument.name\n } array positional argument\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={argument.kind === CommandParameterKinds.number}>\n <Show\n when={(argument as NumberCommandParameter).variadic}\n fallback={\n <IfStatement\n condition={code`${camelCase(\n argument.name\n )} && Number.isNaN(${camelCase(argument.name)})`}>\n {code`failures.push(\"Invalid numeric value provided for the ${\n argument.name\n } positional argument\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`${camelCase(argument.name)}.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the ${\n argument.name\n } array positional argument\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"command-validation-logic.mjs","names":[],"sources":["../../src/components/command-validation-logic.tsx"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Shell Shock\n\n This code was released as part of the Shell Shock project. Shell Shock\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/shell-shock.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/shell-shock\n Documentation: https://docs.stormsoftware.com/projects/shell-shock\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { code, For, Show } from \"@alloy-js/core\";\nimport {\n ElseIfClause,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { Spacing } from \"@powerlines/plugin-alloy/core/components/spacing\";\nimport { camelCase } from \"@stryke/string-format/camel-case\";\nimport { list } from \"@stryke/string-format/list\";\nimport type {\n CommandTree,\n NumberCommandParameter,\n StringCommandParameter\n} from \"../types\";\nimport { CommandParameterKinds } from \"../types\";\n\nexport interface CommandValidationLogicProps {\n command: CommandTree;\n}\n\n/**\n * A component that generates command validation logic for required options and arguments.\n */\nexport function CommandValidationLogic(props: CommandValidationLogicProps) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration name=\"failures\" type=\"string[]\" initializer={code`[];`} />\n <hbr />\n <For each={Object.values(command.options ?? {})} doubleHardline>\n {option => (\n <>\n <Show when={!option.optional}>\n <IfStatement\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }`}>\n {code`failures.push(\"Missing required ${option.name} option\");`}\n </IfStatement>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.variadic\n }>\n <ElseIfClause\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.length === 0`}>\n {code`failures.push(\"No values were provided to the required ${\n option.name\n } array option\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={option.kind === CommandParameterKinds.number}>\n <Show\n when={(option as NumberCommandParameter).variadic}\n fallback={\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n } && Number.isNaN(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\"Invalid numeric value provided for the ${\n option.name\n } option\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the ${\n option.name\n } array option\");`}\n </IfStatement>\n </Show>\n </Show>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.choices &&\n option.choices.length > 0\n }>\n <Show\n when={\n (option.kind === CommandParameterKinds.string ||\n option.kind === CommandParameterKinds.number) &&\n option.variadic\n }\n fallback={\n <ElseIfClause\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.every(value => [${(\n option as StringCommandParameter | NumberCommandParameter\n ).choices\n ?.map(choice =>\n option.kind === CommandParameterKinds.string\n ? `\"${choice}\"`\n : choice\n )\n .join(\", \")}].includes(value))`}>\n {code`failures.push(\\`Invalid value provided for the ${\n option.name\n } option - valid values include: ${list(\n (\n option as\n | StringCommandParameter\n | NumberCommandParameter\n )?.choices?.map(choice => String(choice)) ?? []\n )}; provided: \\${options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }}\\`);`}\n </ElseIfClause>\n }>\n <ElseIfClause\n condition={code`![${(\n option as StringCommandParameter | NumberCommandParameter\n ).choices\n ?.map(choice =>\n option.kind === CommandParameterKinds.string\n ? `\"${choice}\"`\n : choice\n )\n .join(\", \")}].includes(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\\`Invalid value provided for the ${\n option.name\n } option - valid values include: ${list(\n (\n option as StringCommandParameter | NumberCommandParameter\n )?.choices?.map(choice => String(choice)) ?? []\n )}; provided: \\${options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }}\\`);`}\n </ElseIfClause>\n </Show>\n </Show>\n </>\n )}\n </For>\n <Spacing />\n <For each={command.args} doubleHardline>\n {argument => (\n <>\n <Show when={!argument.optional}>\n <IfStatement condition={code`!${camelCase(argument.name)}`}>\n {code`failures.push(\"Missing required \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n <Show\n when={\n (argument.kind === CommandParameterKinds.string ||\n argument.kind === CommandParameterKinds.number) &&\n argument.variadic\n }>\n <ElseIfClause\n condition={code`${camelCase(argument.name)}.length === 0`}>\n {code`failures.push(\"No values were provided to the required ${\n argument.name\n } array positional argument\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={argument.kind === CommandParameterKinds.number}>\n <Show\n when={(argument as NumberCommandParameter).variadic}\n fallback={\n <IfStatement\n condition={code`${camelCase(\n argument.name\n )} && Number.isNaN(${camelCase(argument.name)})`}>\n {code`failures.push(\"Invalid numeric value provided for the ${\n argument.name\n } positional argument\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`${camelCase(argument.name)}.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the ${\n argument.name\n } array positional argument\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n </>\n );\n}\n"],"mappings":"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"}