@shell-shock/core 0.7.0 → 0.8.0

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 (76) hide show
  1. package/dist/components/docs.cjs +1 -1
  2. package/dist/components/docs.cjs.map +1 -1
  3. package/dist/components/docs.d.cts +5 -5
  4. package/dist/components/docs.d.mts +5 -5
  5. package/dist/components/docs.mjs +1 -1
  6. package/dist/components/docs.mjs.map +1 -1
  7. package/dist/components/helpers.cjs +15 -0
  8. package/dist/components/helpers.cjs.map +1 -0
  9. package/dist/components/helpers.d.cts +13 -0
  10. package/dist/components/helpers.d.cts.map +1 -0
  11. package/dist/components/helpers.d.mts +13 -0
  12. package/dist/components/helpers.d.mts.map +1 -0
  13. package/dist/components/helpers.mjs +14 -0
  14. package/dist/components/helpers.mjs.map +1 -0
  15. package/dist/components/index.cjs +4 -2
  16. package/dist/components/index.d.cts +3 -2
  17. package/dist/components/index.d.mts +3 -2
  18. package/dist/components/index.mjs +3 -2
  19. package/dist/components/options-parser-logic.cjs +121 -97
  20. package/dist/components/options-parser-logic.cjs.map +1 -1
  21. package/dist/components/options-parser-logic.d.cts +25 -17
  22. package/dist/components/options-parser-logic.d.cts.map +1 -1
  23. package/dist/components/options-parser-logic.d.mts +25 -17
  24. package/dist/components/options-parser-logic.d.mts.map +1 -1
  25. package/dist/components/options-parser-logic.mjs +120 -96
  26. package/dist/components/options-parser-logic.mjs.map +1 -1
  27. package/dist/components/usage.cjs +33 -1
  28. package/dist/components/usage.cjs.map +1 -1
  29. package/dist/components/usage.d.cts +2 -2
  30. package/dist/components/usage.d.cts.map +1 -1
  31. package/dist/components/usage.d.mts +2 -2
  32. package/dist/components/usage.mjs +35 -3
  33. package/dist/components/usage.mjs.map +1 -1
  34. package/dist/helpers/persistence.cjs +4 -21
  35. package/dist/helpers/persistence.cjs.map +1 -1
  36. package/dist/helpers/persistence.mjs +4 -21
  37. package/dist/helpers/persistence.mjs.map +1 -1
  38. package/dist/helpers/resolve-command.cjs +15 -55
  39. package/dist/helpers/resolve-command.cjs.map +1 -1
  40. package/dist/helpers/resolve-command.mjs +16 -56
  41. package/dist/helpers/resolve-command.mjs.map +1 -1
  42. package/dist/helpers/validations.cjs +13 -36
  43. package/dist/helpers/validations.cjs.map +1 -1
  44. package/dist/helpers/validations.mjs +12 -36
  45. package/dist/helpers/validations.mjs.map +1 -1
  46. package/dist/index.d.cts +3 -2
  47. package/dist/index.d.mts +3 -2
  48. package/dist/plugin-utils/context-helpers.cjs +3 -45
  49. package/dist/plugin-utils/context-helpers.cjs.map +1 -1
  50. package/dist/plugin-utils/context-helpers.d.cts +1 -37
  51. package/dist/plugin-utils/context-helpers.d.cts.map +1 -1
  52. package/dist/plugin-utils/context-helpers.d.mts +1 -37
  53. package/dist/plugin-utils/context-helpers.d.mts.map +1 -1
  54. package/dist/plugin-utils/context-helpers.mjs +4 -44
  55. package/dist/plugin-utils/context-helpers.mjs.map +1 -1
  56. package/dist/plugin-utils/index.cjs +0 -2
  57. package/dist/plugin-utils/index.d.cts +2 -2
  58. package/dist/plugin-utils/index.d.mts +2 -2
  59. package/dist/plugin-utils/index.mjs +2 -2
  60. package/dist/plugin.cjs +9 -15
  61. package/dist/plugin.cjs.map +1 -1
  62. package/dist/plugin.d.cts.map +1 -1
  63. package/dist/plugin.d.mts.map +1 -1
  64. package/dist/plugin.mjs +9 -15
  65. package/dist/plugin.mjs.map +1 -1
  66. package/dist/types/command.d.cts +26 -118
  67. package/dist/types/command.d.cts.map +1 -1
  68. package/dist/types/command.d.mts +26 -118
  69. package/dist/types/command.d.mts.map +1 -1
  70. package/dist/types/index.d.cts +3 -2
  71. package/dist/types/index.d.mts +3 -2
  72. package/dist/types/runtime.d.cts +5 -15
  73. package/dist/types/runtime.d.cts.map +1 -1
  74. package/dist/types/runtime.d.mts +5 -15
  75. package/dist/types/runtime.d.mts.map +1 -1
  76. package/package.json +24 -10
@@ -1,8 +1,10 @@
1
1
  const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
2
  const require_plugin_utils_context_helpers = require('../plugin-utils/context-helpers.cjs');
3
3
  const require_contexts_options = require('../contexts/options.cjs');
4
+ const require_components_helpers = require('./helpers.cjs');
4
5
  let __alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
5
6
  let __stryke_string_format_camel_case = require("@stryke/string-format/camel-case");
7
+ let __stryke_string_format_constant_case = require("@stryke/string-format/constant-case");
6
8
  let __stryke_type_checks_is_set_string = require("@stryke/type-checks/is-set-string");
7
9
  let __alloy_js_core = require("@alloy-js/core");
8
10
  let __powerlines_deepkit_vendor_type = require("@powerlines/deepkit/vendor/type");
@@ -10,11 +12,11 @@ let __alloy_js_typescript = require("@alloy-js/typescript");
10
12
  let __stryke_string_format_pascal_case = require("@stryke/string-format/pascal-case");
11
13
 
12
14
  //#region src/components/options-parser-logic.tsx
13
- function DynamicPathSegmentsParserLogic(props) {
14
- const { path } = props;
15
+ function DynamicSegmentsParserLogic(props) {
16
+ const { command } = props;
15
17
  return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.For, {
16
18
  get each() {
17
- return path.segments ?? [];
19
+ return command.segments ?? [];
18
20
  },
19
21
  children: (segment, index) => (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
20
22
  get when() {
@@ -27,19 +29,7 @@ function DynamicPathSegmentsParserLogic(props) {
27
29
  get name() {
28
30
  return (0, __stryke_string_format_camel_case.camelCase)(require_plugin_utils_context_helpers.getDynamicPathSegmentName(segment));
29
31
  },
30
- get type() {
31
- return `${path.dynamics[require_plugin_utils_context_helpers.getDynamicPathSegmentName(segment)]?.variadic ? "string[]" : "string"}${path.dynamics[require_plugin_utils_context_helpers.getDynamicPathSegmentName(segment)]?.optional ? " | undefined" : ""}`;
32
- },
33
- get initializer() {
34
- return (0, __alloy_js_core_jsx_runtime.memo)(() => !!path.dynamics[require_plugin_utils_context_helpers.getDynamicPathSegmentName(segment)]?.variadic)() ? __alloy_js_core.code`[]` : [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
35
- get when() {
36
- return (0, __stryke_type_checks_is_set_string.isSetString)(path.dynamics[require_plugin_utils_context_helpers.getDynamicPathSegmentName(segment)]?.default);
37
- },
38
- get children() {
39
- return __alloy_js_core.code`"${path.dynamics[require_plugin_utils_context_helpers.getDynamicPathSegmentName(segment)]?.default}"`;
40
- }
41
- }), __alloy_js_core.code`undefined;`];
42
- }
32
+ type: "string"
43
33
  }),
44
34
  (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
45
35
  (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
@@ -55,60 +45,110 @@ function DynamicPathSegmentsParserLogic(props) {
55
45
  })
56
46
  });
57
47
  }
58
- function PositionalParametersParserLogic(props) {
59
- const { command, envPrefix } = props;
60
- return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.For, {
61
- get each() {
62
- return command.params ?? [];
48
+ function ArgumentsParserLogic(props) {
49
+ const { command, envPrefix, isCaseSensitive } = props;
50
+ return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
51
+ get when() {
52
+ return command.arguments && command.arguments.length > 0;
63
53
  },
64
- hardline: true,
65
- children: (param) => [
66
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
67
- "let": true,
68
- get name() {
69
- return param.name;
70
- },
71
- get type() {
72
- return `${param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.boolean ? "boolean" : param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number ? "number" : "string"}${(param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number) && param.variadic ? "[]" : ""}${param.optional ? " | undefined" : ""}`;
73
- },
74
- get initializer() {
75
- return [(0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code`env.${envPrefix}_${param.env} ?? `), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
76
- get when() {
77
- return param.default !== void 0;
78
- },
79
- get fallback() {
80
- return (param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number) && param.variadic ? __alloy_js_core.code`[]` : __alloy_js_core.code`undefined;`;
81
- },
82
- get children() {
83
- return param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string ? __alloy_js_core.code`"${param.default}"` : __alloy_js_core.code`${param.default}`;
84
- }
85
- })];
86
- }
87
- }),
88
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
89
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
90
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
91
- get condition() {
92
- return __alloy_js_core.code`args.length > ${command.path.segments.filter((segment) => require_plugin_utils_context_helpers.isDynamicPathSegment(segment)).length + 1} && args[${command.path.segments.filter((segment) => require_plugin_utils_context_helpers.isDynamicPathSegment(segment)).length + 1}]`;
93
- },
94
- get children() {
95
- return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
96
- get when() {
97
- return param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number;
98
- },
99
- get fallback() {
100
- return __alloy_js_core.code`${param.name} = args[${command.path.segments.filter((segment) => require_plugin_utils_context_helpers.isDynamicPathSegment(segment)).length + 1}];`;
101
- },
102
- get children() {
103
- return __alloy_js_core.code`${param.name} = ${(param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number) && param.variadic ? `args.slice(${command.path.segments.filter((segment) => require_plugin_utils_context_helpers.isDynamicPathSegment(segment)).length + 1})` : `args[${command.path.segments.filter((segment) => require_plugin_utils_context_helpers.isDynamicPathSegment(segment)).length + 1}]`}${param.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number ? ".map(Number).filter(value => !Number.isNaN(value))" : ""};`;
104
- }
105
- });
106
- }
107
- }),
108
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
109
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
110
- ]
111
- })];
54
+ get children() {
55
+ return [
56
+ (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
57
+ "let": true,
58
+ name: "optionsIndex",
59
+ type: "number",
60
+ get initializer() {
61
+ return __alloy_js_core.code`Math.max(0, args.slice(${command.segments.length + 1}).findIndex(arg => arg.startsWith("-") && /^(${Object.values(command.options ?? {}).map((option) => `${isCaseSensitive || option.name.length === 1 ? option.name : option.name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}${option.alias && option.alias.length > 0 ? "|" : ""}${option.alias?.map((a) => (isCaseSensitive || option.name.length === 1 ? a : a.toLowerCase().replaceAll("-", "").replaceAll("_", "")) === "?" ? "\\?" : isCaseSensitive || option.name.length === 1 ? a : a.toLowerCase().replaceAll("-", "").replaceAll("_", "")).join("|")}`).join("|")})=?.*$/.test(arg${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"}))) + ${command.segments.length + 1};`;
62
+ }
63
+ }),
64
+ (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
65
+ (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
66
+ (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
67
+ "let": true,
68
+ name: "argsIndex",
69
+ type: "number",
70
+ get initializer() {
71
+ return __alloy_js_core.code`optionsIndex > ${command.segments.length + 1} ? ${command.segments.length + 1} : (Math.max(0, args.slice(optionsIndex).findLastIndex(arg => arg.startsWith("-") && /^(${Object.values(command.options ?? {}).map((option) => `${isCaseSensitive || option.name.length === 1 ? option.name : option.name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}${option.alias && option.alias.length > 0 ? "|" : ""}${option.alias?.map((a) => (isCaseSensitive || option.name.length === 1 ? a : a.toLowerCase().replaceAll("-", "").replaceAll("_", "")) === "?" ? "\\?" : isCaseSensitive || option.name.length === 1 ? a : a.toLowerCase().replaceAll("-", "").replaceAll("_", "")).join("|")}`).join("|")})=?.*$/.test(arg${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"}))) + ${command.segments.length + 1});`;
72
+ }
73
+ }),
74
+ (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
75
+ (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
76
+ (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.For, {
77
+ get each() {
78
+ return command.arguments ?? [];
79
+ },
80
+ hardline: true,
81
+ children: (arg, index) => [
82
+ (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
83
+ "let": true,
84
+ get name() {
85
+ return (0, __stryke_string_format_camel_case.camelCase)(arg.name);
86
+ },
87
+ get type() {
88
+ return `${arg.kind === __powerlines_deepkit_vendor_type.ReflectionKind.boolean ? "boolean" : arg.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number ? "number" : "string"}${(arg.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || arg.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number) && arg.variadic ? "[]" : ""}${arg.optional ? " | undefined" : ""}`;
89
+ },
90
+ get initializer() {
91
+ return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
92
+ get when() {
93
+ return (0, __stryke_type_checks_is_set_string.isSetString)(arg.env);
94
+ },
95
+ get children() {
96
+ return __alloy_js_core.code`env.${envPrefix}_${(0, __stryke_string_format_constant_case.constantCase)(String(arg.env))} ?? `;
97
+ }
98
+ }), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
99
+ get when() {
100
+ return arg.default !== void 0;
101
+ },
102
+ get fallback() {
103
+ return (arg.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || arg.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number) && arg.variadic ? __alloy_js_core.code`[]` : __alloy_js_core.code`undefined;`;
104
+ },
105
+ get children() {
106
+ return arg.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string ? __alloy_js_core.code`"${arg.default}"` : __alloy_js_core.code`${arg.default}`;
107
+ }
108
+ })];
109
+ }
110
+ }),
111
+ (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
112
+ (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
113
+ (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
114
+ condition: __alloy_js_core.code`argsIndex + ${index} < args.length && argsIndex + ${index} !== optionsIndex`,
115
+ get children() {
116
+ return [(0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code`${(0, __stryke_string_format_camel_case.camelCase)(arg.name)} = `), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
117
+ get when() {
118
+ return arg.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || arg.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number;
119
+ },
120
+ get fallback() {
121
+ return (0, __alloy_js_core_jsx_runtime.createComponent)(require_components_helpers.BooleanInputParserLogic, { name: `args[argsIndex + ${index}] ` });
122
+ },
123
+ get children() {
124
+ return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
125
+ get when() {
126
+ return (arg.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || arg.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number) && arg.variadic;
127
+ },
128
+ get fallback() {
129
+ return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
130
+ get when() {
131
+ return arg.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number;
132
+ },
133
+ fallback: __alloy_js_core.code`args[argsIndex + ${index}]; `,
134
+ children: __alloy_js_core.code`Number(args[argsIndex + ${index}]); `
135
+ });
136
+ },
137
+ get children() {
138
+ return __alloy_js_core.code`args.slice(argsIndex + ${index}, (optionsIndex > argsIndex ? optionsIndex : args.length) - ${command.arguments.length - index}).join(" ").split(",").map(item => item.trim().replace(/^("|')/, "").replace(/("|')$/, "")).filter(Boolean)`;
139
+ }
140
+ });
141
+ }
142
+ })];
143
+ }
144
+ }),
145
+ (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
146
+ (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
147
+ ]
148
+ })
149
+ ];
150
+ }
151
+ });
112
152
  }
113
153
  /**
114
154
  * The command option interface property.
@@ -382,10 +422,10 @@ function OptionsMemberParserLogic(props) {
382
422
  get when() {
383
423
  return name.includes("?") || name.includes("-");
384
424
  },
385
- fallback: __alloy_js_core.code`options.${name}`,
386
- children: __alloy_js_core.code`options["${name}"]`
425
+ fallback: __alloy_js_core.code`options.${name} = `,
426
+ children: __alloy_js_core.code`options["${name}"] = `
387
427
  }),
388
- __alloy_js_core.code` = value !== "false" && value !== "f" && value !== "no" && value !== "n" && value !== "0" && value !== "off" && value !== "disable" && value !== "disabled"; `
428
+ (0, __alloy_js_core_jsx_runtime.createComponent)(require_components_helpers.BooleanInputParserLogic, { name: "value" })
389
429
  ];
390
430
  }
391
431
  }),
@@ -476,7 +516,7 @@ function OptionsParserLogic(props) {
476
516
  }),
477
517
  (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
478
518
  (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
479
- (0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code`for (let i = 0; i < args.slice(${command.path.segments.filter((segment) => require_plugin_utils_context_helpers.isDynamicPathSegment(segment)).length}).length; i++) { `),
519
+ (0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code`for (let i = 0; i < args.slice(${command.segments.filter((segment) => require_plugin_utils_context_helpers.isDynamicPathSegment(segment)).length}).length; i++) { `),
480
520
  (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
481
521
  (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
482
522
  "const": true,
@@ -549,27 +589,10 @@ function OptionsParserLogic(props) {
549
589
  function CommandParserLogic(props) {
550
590
  const { command, envPrefix, isCaseSensitive = false } = props;
551
591
  return [
552
- (0, __alloy_js_core_jsx_runtime.createComponent)(DynamicPathSegmentsParserLogic, { get path() {
553
- return command.path;
554
- } }),
555
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
556
- (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
557
- (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
558
- "const": true,
559
- name: "lastSegmentIndex",
560
- type: "number",
561
- get initializer() {
562
- return (0, __alloy_js_core_jsx_runtime.memo)(() => !!require_plugin_utils_context_helpers.isDynamicPathSegment(command.path.segments[command.path.segments.length - 1]))() ? `args.some(arg => /^--?(${Object.keys(command.options).map((key) => key.toLowerCase().replaceAll("-", "").replaceAll("_", "")).join("|")})(=.*)?$/.test(arg${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"})) ? args.findIndex(arg => /^--?(${Object.keys(command.options).map((key) => key.toLowerCase().replaceAll("-", "").replaceAll("_", "")).join("|")})(=.*)?$/.test(arg${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"})) : args.length - ${command.params.length + 1}` : `args.reduce((ret, arg, index) => {
563
- if (ret === -1 && (index < args.findIndex(a => /^--?(${Object.keys(command.options).map((key) => key.toLowerCase().replaceAll("-", "").replaceAll("_", "")).join("|")})(=.*)?$/.test(a${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"})) || !args.some(a => /^--?(${Object.keys(command.options).map((key) => key.toLowerCase().replaceAll("-", "").replaceAll("_", "")).join("|")})(=.*)?$/.test(a${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"}))) && arg${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${command.path.segments[command.path.segments.length - 1]?.toLowerCase()}") {
564
- return index;
565
- }
566
-
567
- return ret;
568
- }, -1); `;
569
- }
592
+ (0, __alloy_js_core_jsx_runtime.createComponent)(DynamicSegmentsParserLogic, {
593
+ command,
594
+ isCaseSensitive
570
595
  }),
571
- __alloy_js_core.code`
572
- `,
573
596
  (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
574
597
  (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
575
598
  (0, __alloy_js_core_jsx_runtime.createComponent)(OptionsParserLogic, {
@@ -579,9 +602,10 @@ function CommandParserLogic(props) {
579
602
  }),
580
603
  (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
581
604
  (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
582
- (0, __alloy_js_core_jsx_runtime.createComponent)(PositionalParametersParserLogic, {
605
+ (0, __alloy_js_core_jsx_runtime.createComponent)(ArgumentsParserLogic, {
583
606
  command,
584
- envPrefix
607
+ envPrefix,
608
+ isCaseSensitive
585
609
  }),
586
610
  (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
587
611
  (0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
@@ -589,12 +613,12 @@ function CommandParserLogic(props) {
589
613
  }
590
614
 
591
615
  //#endregion
616
+ exports.ArgumentsParserLogic = ArgumentsParserLogic;
592
617
  exports.CommandParserLogic = CommandParserLogic;
593
- exports.DynamicPathSegmentsParserLogic = DynamicPathSegmentsParserLogic;
618
+ exports.DynamicSegmentsParserLogic = DynamicSegmentsParserLogic;
594
619
  exports.OptionsInterfaceDeclaration = OptionsInterfaceDeclaration;
595
620
  exports.OptionsMember = OptionsMember;
596
621
  exports.OptionsMemberParserCondition = OptionsMemberParserCondition;
597
622
  exports.OptionsMemberParserLogic = OptionsMemberParserLogic;
598
623
  exports.OptionsParserLogic = OptionsParserLogic;
599
- exports.PositionalParametersParserLogic = PositionalParametersParserLogic;
600
624
  //# sourceMappingURL=options-parser-logic.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"options-parser-logic.cjs","names":["code","computed","For","Show","ElseClause","ElseIfClause","IfStatement","InterfaceDeclaration","InterfaceMember","VarDeclaration","ReflectionKind","camelCase","pascalCase","isSetString","computedOptions","getDynamicPathSegmentName","isDynamicPathSegment","DynamicPathSegmentsParserLogic","props","path","_$createComponent","each","segments","children","segment","index","when","name","type","dynamics","variadic","optional","initializer","_$memo","default","_$createIntrinsic","condition","PositionalParametersParserLogic","command","envPrefix","params","hardline","param","kind","boolean","number","string","env","undefined","fallback","filter","length","OptionsMember","option","doc","description","title","Boolean","OptionsMemberParserLogic","isCaseSensitive","equalsRegex","toLowerCase","replaceAll","alias","map","a","join","includes","isNegativeOf","OptionsMemberParserCondition","aliasProp","OptionsInterfaceDeclaration","options","Object","values","value","OptionsParserLogic","entries","JSON","stringify","i","CommandParserLogic","keys","key"],"sources":["../../src/components/options-parser-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, computed, For, Show } from \"@alloy-js/core\";\nimport {\n ElseClause,\n ElseIfClause,\n IfStatement,\n InterfaceDeclaration,\n InterfaceMember,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\nimport { camelCase } from \"@stryke/string-format/camel-case\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { computedOptions } from \"../contexts/options\";\nimport {\n getDynamicPathSegmentName,\n isDynamicPathSegment\n} from \"../plugin-utils/context-helpers\";\nimport type {\n BooleanCommandOption,\n CommandOption,\n CommandTree,\n CommandTreePath,\n NumberCommandOption,\n StringCommandOption\n} from \"../types/command\";\n\nexport interface DynamicPathSegmentsParserLogicProps {\n /**\n * The command path to generate the dynamic path segments parser logic for.\n */\n path: CommandTreePath;\n}\n\nexport function DynamicPathSegmentsParserLogic(\n props: DynamicPathSegmentsParserLogicProps\n) {\n const { path } = props;\n\n return (\n <For each={path.segments ?? []}>\n {(segment, index) => (\n <Show when={isDynamicPathSegment(segment)}>\n <VarDeclaration\n let\n name={camelCase(getDynamicPathSegmentName(segment))}\n type={`${\n path.dynamics[getDynamicPathSegmentName(segment)]?.variadic\n ? \"string[]\"\n : \"string\"\n }${\n path.dynamics[getDynamicPathSegmentName(segment)]?.optional\n ? \" | undefined\"\n : \"\"\n }`}\n initializer={\n path.dynamics[getDynamicPathSegmentName(segment)]?.variadic ? (\n code`[]`\n ) : (\n <>\n <Show\n when={isSetString(\n path.dynamics[getDynamicPathSegmentName(segment)]?.default\n )}>\n {code`\"${\n path.dynamics[getDynamicPathSegmentName(segment)]?.default\n }\"`}\n </Show>\n {code`undefined;`}\n </>\n )\n }\n />\n <hbr />\n <IfStatement\n condition={code`args.length > ${2 + index} && args[${2 + index}]`}>\n {code`${camelCase(getDynamicPathSegmentName(segment))} = args[${2 + index}];`}\n </IfStatement>\n <hbr />\n <hbr />\n </Show>\n )}\n </For>\n );\n}\n\nexport interface PositionalParametersParserLogicProps {\n /**\n * The command to generate the positional parameters parser logic for.\n */\n command: CommandTree;\n\n /**\n * The environment variable prefix to use for options that have an associated environment variable. This prefix will be used in the generated code to access the environment variables (e.g., `env.${envPrefix}_OPTION_NAME`).\n */\n envPrefix: string;\n}\n\nexport function PositionalParametersParserLogic(\n props: PositionalParametersParserLogicProps\n) {\n const { command, envPrefix } = props;\n\n return (\n <>\n <For each={command.params ?? []} hardline>\n {param => (\n <>\n <VarDeclaration\n let\n name={param.name}\n type={`${\n param.kind === ReflectionKind.boolean\n ? \"boolean\"\n : param.kind === ReflectionKind.number\n ? \"number\"\n : \"string\"\n }${\n (param.kind === ReflectionKind.string ||\n param.kind === ReflectionKind.number) &&\n param.variadic\n ? \"[]\"\n : \"\"\n }${param.optional ? \" | undefined\" : \"\"}`}\n initializer={\n <>\n {code`env.${envPrefix}_${param.env} ?? `}\n <Show\n when={param.default !== undefined}\n fallback={\n (param.kind === ReflectionKind.string ||\n param.kind === ReflectionKind.number) &&\n param.variadic\n ? code`[]`\n : code`undefined;`\n }>\n {param.kind === ReflectionKind.string\n ? code`\"${param.default}\"`\n : code`${param.default}`}\n </Show>\n </>\n }\n />\n <hbr />\n <hbr />\n <IfStatement\n condition={code`args.length > ${\n command.path.segments.filter(segment =>\n isDynamicPathSegment(segment)\n ).length + 1\n } && args[${\n command.path.segments.filter(segment =>\n isDynamicPathSegment(segment)\n ).length + 1\n }]`}>\n <Show\n when={\n param.kind === ReflectionKind.string ||\n param.kind === ReflectionKind.number\n }\n fallback={code`${param.name} = args[${\n command.path.segments.filter(segment =>\n isDynamicPathSegment(segment)\n ).length + 1\n }];`}>\n {code`${param.name} = ${\n (param.kind === ReflectionKind.string ||\n param.kind === ReflectionKind.number) &&\n param.variadic\n ? `args.slice(${\n command.path.segments.filter(segment =>\n isDynamicPathSegment(segment)\n ).length + 1\n })`\n : `args[${\n command.path.segments.filter(segment =>\n isDynamicPathSegment(segment)\n ).length + 1\n }]`\n }${\n param.kind === ReflectionKind.number\n ? \".map(Number).filter(value => !Number.isNaN(value))\"\n : \"\"\n };`}\n </Show>\n </IfStatement>\n <hbr />\n <hbr />\n </>\n )}\n </For>\n </>\n );\n}\n\n/**\n * The command option interface property.\n */\nexport function OptionsMember({ option }: { option: CommandOption }) {\n const doc = option.description || `The ${option.title} command option.`;\n\n return (\n <>\n <Show when={Boolean(option.name)}>\n <Show when={option.kind === ReflectionKind.string}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={\n (option as StringCommandOption).variadic ? \"string[]\" : \"string\"\n }\n optional={option.optional}\n />\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={\n (option as NumberCommandOption).variadic ? \"number[]\" : \"number\"\n }\n optional={option.optional}\n />\n </Show>\n <Show when={option.kind === ReflectionKind.boolean}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type=\"boolean\"\n optional={option.optional}\n />\n </Show>\n </Show>\n </>\n );\n}\n\nexport interface OptionsMemberParserLogicProps {\n /**\n * The option name to generate the parser logic for.\n */\n name: string;\n\n /**\n * The command option to generate the parser logic for.\n */\n option: CommandOption;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive: boolean;\n}\n\n/**\n * The command option property parser logic.\n */\nexport function OptionsMemberParserLogic(props: OptionsMemberParserLogicProps) {\n const { name, option, isCaseSensitive } = props;\n\n const equalsRegex = `/^--?(${\n isCaseSensitive || name.length === 1\n ? name\n : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (isCaseSensitive || name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")) === \"?\"\n ? \"\\\\?\"\n : isCaseSensitive || name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")})=/`;\n\n return (\n <>\n <Show\n when={\n option.kind === ReflectionKind.string ||\n option.kind === ReflectionKind.number\n }>\n <Show\n when={(option as StringCommandOption | NumberCommandOption).variadic}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name} ??= []; `}>\n {code`options[\"${name}\"] ??= []; `}\n </Show>\n <hbr />\n <IfStatement\n condition={`${equalsRegex}.test(${\n isCaseSensitive\n ? \"arg\"\n : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n })`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}.push(`}>\n {code`options[\"${name}\"].push(`}\n </Show>\n <Show when={option.kind === ReflectionKind.string}>\n {code`...arg.replace(${equalsRegex}, \"\").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean) `}\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n {code`...arg.replace(${equalsRegex}, \"\").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean).map(Number).filter(value => !Number.isNaN(value)) `}\n </Show>\n {code`); `}\n </IfStatement>\n <ElseIfClause condition={`args.length > i + 1`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}.push(`}>\n {code`options[\"${name}\"].push(`}\n </Show>\n <Show when={option.kind === ReflectionKind.string}>\n {code`...args[++i].split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean) `}\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n {code`...args[++i].split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean).map(Number).filter(value => !Number.isNaN(value)) `}\n </Show>\n {code`); `}\n </ElseIfClause>\n </Show>\n <Show\n when={\n !(option as StringCommandOption | NumberCommandOption).variadic\n }>\n <IfStatement\n condition={`${equalsRegex}.test(${isCaseSensitive ? \"arg\" : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'})`}>\n <Show when={option.kind === ReflectionKind.string}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = arg.replace(${equalsRegex}, \"\").trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\"); `}\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <VarDeclaration\n const\n name=\"value\"\n initializer={code` Number(arg.replace(${equalsRegex}, \"\").trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")); `}\n />\n <hbr />\n <IfStatement condition={`!Number.isNaN(value)`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = value; `}\n </IfStatement>\n </Show>\n </IfStatement>\n <ElseIfClause condition={`args.length > i + 1`}>\n <Show when={option.kind === ReflectionKind.string}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = args[++i].trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\"); `}\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <VarDeclaration\n const\n name=\"value\"\n initializer={code` Number(args[++i].trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")); `}\n />\n <hbr />\n <IfStatement condition={`!Number.isNaN(value)`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = value; `}\n </IfStatement>\n </Show>\n </ElseIfClause>\n <hbr />\n </Show>\n </Show>\n <Show when={option.kind === ReflectionKind.boolean}>\n <IfStatement\n condition={`${equalsRegex}.test(${isCaseSensitive ? \"arg\" : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'})`}>\n <VarDeclaration\n const\n name=\"value\"\n initializer={code` arg.replace(${equalsRegex}, \"\").trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\").toLowerCase(); `}\n />\n <hbr />\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = value !== \"false\" && value !== \"f\" && value !== \"no\" && value !== \"n\" && value !== \"0\" && value !== \"off\" && value !== \"disable\" && value !== \"disabled\"; `}\n </IfStatement>\n <ElseClause>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name} = true; `}>\n {code`options[\"${name}\"] = true; `}\n </Show>\n </ElseClause>\n <Show when={Boolean((option as BooleanCommandOption).isNegativeOf)}>\n <hbr />\n <Show\n when={\n (option as BooleanCommandOption).isNegativeOf!.includes(\"?\") ||\n (option as BooleanCommandOption).isNegativeOf!.includes(\"-\")\n }\n fallback={code`options.${(option as BooleanCommandOption).isNegativeOf} = false; `}>\n {code`options[\"${(option as BooleanCommandOption).isNegativeOf}\"] = false; `}\n </Show>\n </Show>\n </Show>\n </>\n );\n}\n\nexport interface OptionsMemberParserConditionProps {\n /**\n * The option name to generate the parser logic for.\n */\n name: string;\n\n /**\n * Aliases for the option, which will also be parsed in the generated code. This will affect how the generated code compares command-line arguments to option names and aliases.\n */\n alias?: string[];\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive: boolean;\n}\n\nexport function OptionsMemberParserCondition(\n props: OptionsMemberParserConditionProps\n) {\n const { name, alias: aliasProp, isCaseSensitive } = props;\n\n return (\n <>\n {code`${\n isCaseSensitive\n ? 'arg.startsWith(\"--'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive ? name : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive\n ? name\n : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\" || ${\n isCaseSensitive\n ? 'arg.startsWith(\"-'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive ? name : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive\n ? name\n : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\"`}\n <Show when={aliasProp && aliasProp.length > 0}>\n <For each={aliasProp ?? []}>\n {alias =>\n code` || ${\n isCaseSensitive || alias.length === 1\n ? 'arg.startsWith(\"--'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive || alias.length === 1\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive || alias.length === 1\n ? alias\n : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\" || ${\n isCaseSensitive || alias.length === 1\n ? 'arg.startsWith(\"-'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive || alias.length === 1\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive || alias.length === 1\n ? alias\n : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\"`\n }\n </For>\n </Show>\n </>\n );\n}\n\nexport function OptionsInterfaceDeclaration(props: { command: CommandTree }) {\n const { command } = props;\n\n const options = computed(() => computedOptions(command));\n\n return (\n <InterfaceDeclaration export name={`${pascalCase(command.name)}Options`}>\n <For each={Object.values(options.value)} hardline>\n {option => <OptionsMember option={option} />}\n </For>\n </InterfaceDeclaration>\n );\n}\n\nexport interface OptionsParserLogicProps {\n /**\n * The command to generate the options parser logic for.\n */\n command: CommandTree;\n\n /**\n * The environment variable prefix to use for options that have an associated environment variable. This prefix will be used in the generated code to access the environment variables (e.g., `env.${envPrefix}_OPTION_NAME`).\n */\n envPrefix: string;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive?: boolean;\n}\n\n/**\n * The command options parser logic.\n */\nexport function OptionsParserLogic(props: OptionsParserLogicProps) {\n const { command, envPrefix, isCaseSensitive = false } = props;\n\n const options = computed(() => computedOptions(command));\n\n return (\n <>\n <VarDeclaration\n const\n name=\"options\"\n initializer={code` {\n ${Object.entries(options.value)\n .map(([name, option]) => {\n if (option.kind === ReflectionKind.string) {\n return ` ${name.includes(\"?\") || name.includes(\"-\") ? `\"${name}\"` : `${name}`}: ${\n option.env ? `env.${envPrefix}_${option.env}` : \"\"\n }${\n option.variadic\n ? option.default !== undefined\n ? `${\n option.env ? \" ?? \" : \"\"\n }${JSON.stringify(option.default)}`\n : option.env\n ? \" ?? []\"\n : \"\"\n : option.default !== undefined\n ? `${option.env ? \" ?? \" : \"\"}\"${option.default}\"`\n : \"\"\n }, `;\n } else if (option.kind === ReflectionKind.number) {\n return ` ${name.includes(\"?\") || name.includes(\"-\") ? `\"${name}\"` : `${name}`}: ${\n option.env ? `env.${envPrefix}_${option.env}` : \"\"\n }${\n option.variadic\n ? option.default !== undefined\n ? `${\n option.env ? \" ?? \" : \"\"\n }${JSON.stringify(option.default)}`\n : option.env\n ? \" ?? []\"\n : \"\"\n : option.default !== undefined\n ? `${option.env ? \" ?? \" : \"\"}${option.default}`\n : \"\"\n }, `;\n } else if (option.kind === ReflectionKind.boolean) {\n return ` ${name.includes(\"?\") || name.includes(\"-\") ? `\"${name}\"` : `${name}`}: ${\n option.env ? `env.${envPrefix}_${option.env} ?? ` : \"\"\n }${option.default ? \"true\" : \"false\"},`;\n }\n\n return \"\";\n })\n .join(\"\")}\n } as ${pascalCase(command.name)}Options;`}\n />\n <hbr />\n <hbr />\n {code`for (let i = 0; i < args.slice(${\n command.path.segments.filter(segment => isDynamicPathSegment(segment))\n .length\n }).length; i++) { `}\n <hbr />\n <VarDeclaration\n const\n name=\"arg\"\n type=\"string\"\n initializer={code` args[i].length > 3 && args[i].startsWith(\"--\")\n ? \\`--\\${args[i].slice(2).replaceAll(\"-\", \"\")${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n }}\\`\n : args[i].length > 2 && args[i].startsWith(\"-\")\n ? \\`-\\${args[i].slice(1).replaceAll(\"-\", \"\")}\\`\n : args[i]; `}\n />\n <hbr />\n\n <For each={Object.entries(options.value)} hardline>\n {([name, option], i) => (\n <Show\n when={i === 0}\n fallback={\n <ElseIfClause\n condition={\n <>\n <OptionsMemberParserCondition\n name={name}\n alias={option.alias}\n isCaseSensitive={isCaseSensitive}\n />\n </>\n }>\n <OptionsMemberParserLogic\n name={name}\n option={option}\n isCaseSensitive={isCaseSensitive}\n />\n </ElseIfClause>\n }>\n <IfStatement\n condition={\n <OptionsMemberParserCondition\n name={name}\n alias={option.alias}\n isCaseSensitive={isCaseSensitive}\n />\n }>\n <OptionsMemberParserLogic\n name={name}\n option={option}\n isCaseSensitive={isCaseSensitive}\n />\n </IfStatement>\n </Show>\n )}\n </For>\n\n <hbr />\n {code` } `}\n <hbr />\n </>\n );\n}\n\nexport interface CommandParserLogicProps {\n /**\n * The command to generate the parser logic for.\n */\n command: CommandTree;\n\n /**\n * The environment variable prefix to use for options that have an associated environment variable. This prefix will be used in the generated code to access the environment variables (e.g., `env.${envPrefix}_OPTION_NAME`).\n */\n envPrefix: string;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive?: boolean;\n}\n\n/**\n * The command parser logic, which includes parsing dynamic path segments, positional parameters, and options.\n */\nexport function CommandParserLogic(props: CommandParserLogicProps) {\n const { command, envPrefix, isCaseSensitive = false } = props;\n\n return (\n <>\n <DynamicPathSegmentsParserLogic path={command.path} />\n <hbr />\n <hbr />\n <VarDeclaration\n const\n name=\"lastSegmentIndex\"\n type=\"number\"\n initializer={\n isDynamicPathSegment(\n command.path.segments[command.path.segments.length - 1]!\n )\n ? `args.some(arg => /^--?(${Object.keys(command.options)\n .map(key =>\n key.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")})(=.*)?$/.test(arg${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n })) ? args.findIndex(arg => /^--?(${Object.keys(command.options)\n .map(key =>\n key.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")})(=.*)?$/.test(arg${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n })) : args.length - ${command.params.length + 1}`\n : `args.reduce((ret, arg, index) => {\n if (ret === -1 && (index < args.findIndex(a => /^--?(${Object.keys(\n command.options\n )\n .map(key => key.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\"))\n .join(\"|\")})(=.*)?$/.test(a${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n })) || !args.some(a => /^--?(${Object.keys(command.options)\n .map(key => key.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\"))\n .join(\"|\")})(=.*)?$/.test(a${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n }))) && arg${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${command.path.segments[\n command.path.segments.length - 1\n ]?.toLowerCase()}\") {\n return index;\n }\n\n return ret;\n }, -1); `\n }\n />\n {code`\n `}\n <hbr />\n <hbr />\n <OptionsParserLogic\n command={command}\n envPrefix={envPrefix}\n isCaseSensitive={isCaseSensitive}\n />\n <hbr />\n <hbr />\n <PositionalParametersParserLogic\n command={command}\n envPrefix={envPrefix}\n />\n <hbr />\n <hbr />\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"options-parser-logic.cjs","names":["code","computed","For","Show","ElseClause","ElseIfClause","IfStatement","InterfaceDeclaration","InterfaceMember","VarDeclaration","ReflectionKind","camelCase","constantCase","pascalCase","isSetString","computedOptions","getDynamicPathSegmentName","isDynamicPathSegment","BooleanInputParserLogic","DynamicSegmentsParserLogic","props","command","_$createComponent","each","segments","children","segment","index","when","name","type","_$createIntrinsic","condition","ArgumentsParserLogic","envPrefix","isCaseSensitive","arguments","length","initializer","Object","values","options","map","option","toLowerCase","replaceAll","alias","a","join","hardline","arg","kind","boolean","number","string","variadic","optional","env","String","default","undefined","fallback","_$memo","OptionsMember","doc","description","title","Boolean","OptionsMemberParserLogic","equalsRegex","includes","isNegativeOf","OptionsMemberParserCondition","aliasProp","OptionsInterfaceDeclaration","value","OptionsParserLogic","entries","JSON","stringify","filter","i","CommandParserLogic"],"sources":["../../src/components/options-parser-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, computed, For, Show } from \"@alloy-js/core\";\nimport {\n ElseClause,\n ElseIfClause,\n IfStatement,\n InterfaceDeclaration,\n InterfaceMember,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\nimport { camelCase } from \"@stryke/string-format/camel-case\";\nimport { constantCase } from \"@stryke/string-format/constant-case\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { computedOptions } from \"../contexts/options\";\nimport {\n getDynamicPathSegmentName,\n isDynamicPathSegment\n} from \"../plugin-utils/context-helpers\";\nimport type {\n BooleanCommandOption,\n CommandOption,\n CommandTree,\n NumberCommandOption,\n StringCommandOption\n} from \"../types/command\";\nimport { BooleanInputParserLogic } from \"./helpers\";\n\nexport interface DynamicSegmentsParserLogicProps {\n /**\n * The command to generate the dynamic path segments parser logic for. This is used to access the command options and parameters when generating the parser logic for dynamic path segments.\n */\n command: CommandTree;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n */\n isCaseSensitive: boolean;\n}\n\nexport function DynamicSegmentsParserLogic(\n props: DynamicSegmentsParserLogicProps\n) {\n const { command } = props;\n\n return (\n <For each={command.segments ?? []}>\n {(segment, index) => (\n <Show when={isDynamicPathSegment(segment)}>\n <VarDeclaration\n let\n name={camelCase(getDynamicPathSegmentName(segment))}\n type=\"string\"\n />\n <hbr />\n <IfStatement\n condition={code`args.length > ${2 + index} && args[${2 + index}]`}>\n {code`${camelCase(\n getDynamicPathSegmentName(segment)\n )} = args[${2 + index}];`}\n </IfStatement>\n <hbr />\n <hbr />\n </Show>\n )}\n </For>\n );\n}\n\nexport interface ArgumentsParserLogicProps {\n /**\n * The command to generate the positional parameters parser logic for.\n */\n command: CommandTree;\n\n /**\n * The environment variable prefix to use for options that have an associated environment variable. This prefix will be used in the generated code to access the environment variables (e.g., `env.${envPrefix}_OPTION_NAME`).\n */\n envPrefix: string;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n */\n isCaseSensitive: boolean;\n}\n\nexport function ArgumentsParserLogic(props: ArgumentsParserLogicProps) {\n const { command, envPrefix, isCaseSensitive } = props;\n\n return (\n <Show when={command.arguments && command.arguments.length > 0}>\n <VarDeclaration\n let\n name=\"optionsIndex\"\n type=\"number\"\n initializer={code`Math.max(0, args.slice(${command.segments.length + 1}).findIndex(arg => arg.startsWith(\"-\") && /^(${Object.values(\n command.options ?? {}\n )\n .map(\n option =>\n `${\n isCaseSensitive || option.name.length === 1\n ? option.name\n : option.name\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (isCaseSensitive || option.name.length === 1\n ? a\n : a\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")) === \"?\"\n ? \"\\\\?\"\n : isCaseSensitive || option.name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")}`\n )\n .join(\"|\")})=?.*$/.test(arg${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n }))) + ${command.segments.length + 1};`}\n />\n <hbr />\n <hbr />\n <VarDeclaration\n let\n name=\"argsIndex\"\n type=\"number\"\n initializer={code`optionsIndex > ${\n command.segments.length + 1\n } ? ${command.segments.length + 1} : (Math.max(0, args.slice(optionsIndex).findLastIndex(arg => arg.startsWith(\"-\") && /^(${Object.values(\n command.options ?? {}\n )\n .map(\n option =>\n `${\n isCaseSensitive || option.name.length === 1\n ? option.name\n : option.name\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (isCaseSensitive || option.name.length === 1\n ? a\n : a\n .toLowerCase()\n .replaceAll(\"-\", \"\")\n .replaceAll(\"_\", \"\")) === \"?\"\n ? \"\\\\?\"\n : isCaseSensitive || option.name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")}`\n )\n .join(\"|\")})=?.*$/.test(arg${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n }))) + ${command.segments.length + 1});`}\n />\n <hbr />\n <hbr />\n <For each={command.arguments ?? []} hardline>\n {(arg, index) => (\n <>\n <VarDeclaration\n let\n name={camelCase(arg.name)}\n type={`${\n arg.kind === ReflectionKind.boolean\n ? \"boolean\"\n : arg.kind === ReflectionKind.number\n ? \"number\"\n : \"string\"\n }${\n (arg.kind === ReflectionKind.string ||\n arg.kind === ReflectionKind.number) &&\n arg.variadic\n ? \"[]\"\n : \"\"\n }${arg.optional ? \" | undefined\" : \"\"}`}\n initializer={\n <>\n <Show when={isSetString(arg.env)}>\n {code`env.${envPrefix}_${constantCase(String(arg.env))} ?? `}\n </Show>\n <Show\n when={arg.default !== undefined}\n fallback={\n (arg.kind === ReflectionKind.string ||\n arg.kind === ReflectionKind.number) &&\n arg.variadic\n ? code`[]`\n : code`undefined;`\n }>\n {arg.kind === ReflectionKind.string\n ? code`\"${arg.default}\"`\n : code`${arg.default}`}\n </Show>\n </>\n }\n />\n <hbr />\n <hbr />\n <IfStatement\n condition={code`argsIndex + ${index} < args.length && argsIndex + ${index} !== optionsIndex`}>\n {code`${camelCase(arg.name)} = `}\n <Show\n when={\n arg.kind === ReflectionKind.string ||\n arg.kind === ReflectionKind.number\n }\n fallback={\n <BooleanInputParserLogic\n name={`args[argsIndex + ${index}] `}\n />\n }>\n <Show\n when={\n (arg.kind === ReflectionKind.string ||\n arg.kind === ReflectionKind.number) &&\n arg.variadic\n }\n fallback={\n <Show\n when={arg.kind === ReflectionKind.number}\n fallback={code`args[argsIndex + ${index}]; `}>\n {code`Number(args[argsIndex + ${index}]); `}\n </Show>\n }>\n {code`args.slice(argsIndex + ${\n index\n }, (optionsIndex > argsIndex ? optionsIndex : args.length) - ${\n command.arguments.length - index\n }).join(\" \").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean)`}\n </Show>\n </Show>\n </IfStatement>\n <hbr />\n <hbr />\n </>\n )}\n </For>\n </Show>\n );\n}\n\n/**\n * The command option interface property.\n */\nexport function OptionsMember({ option }: { option: CommandOption }) {\n const doc = option.description || `The ${option.title} command option.`;\n\n return (\n <>\n <Show when={Boolean(option.name)}>\n <Show when={option.kind === ReflectionKind.string}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={\n (option as StringCommandOption).variadic ? \"string[]\" : \"string\"\n }\n optional={option.optional}\n />\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type={\n (option as NumberCommandOption).variadic ? \"number[]\" : \"number\"\n }\n optional={option.optional}\n />\n </Show>\n <Show when={option.kind === ReflectionKind.boolean}>\n <InterfaceMember\n name={option.name}\n doc={doc}\n type=\"boolean\"\n optional={option.optional}\n />\n </Show>\n </Show>\n </>\n );\n}\n\nexport interface OptionsMemberParserLogicProps {\n /**\n * The option name to generate the parser logic for.\n */\n name: string;\n\n /**\n * The command option to generate the parser logic for.\n */\n option: CommandOption;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive: boolean;\n}\n\n/**\n * The command option property parser logic.\n */\nexport function OptionsMemberParserLogic(props: OptionsMemberParserLogicProps) {\n const { name, option, isCaseSensitive } = props;\n\n const equalsRegex = `/^--?(${\n isCaseSensitive || name.length === 1\n ? name\n : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (isCaseSensitive || name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")) === \"?\"\n ? \"\\\\?\"\n : isCaseSensitive || name.length === 1\n ? a\n : a.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n )\n .join(\"|\")})=/`;\n\n return (\n <>\n <Show\n when={\n option.kind === ReflectionKind.string ||\n option.kind === ReflectionKind.number\n }>\n <Show\n when={(option as StringCommandOption | NumberCommandOption).variadic}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name} ??= []; `}>\n {code`options[\"${name}\"] ??= []; `}\n </Show>\n <hbr />\n <IfStatement\n condition={`${equalsRegex}.test(${\n isCaseSensitive\n ? \"arg\"\n : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n })`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}.push(`}>\n {code`options[\"${name}\"].push(`}\n </Show>\n <Show when={option.kind === ReflectionKind.string}>\n {code`...arg.replace(${equalsRegex}, \"\").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean) `}\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n {code`...arg.replace(${equalsRegex}, \"\").split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean).map(Number).filter(value => !Number.isNaN(value)) `}\n </Show>\n {code`); `}\n </IfStatement>\n <ElseIfClause condition={`args.length > i + 1`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}.push(`}>\n {code`options[\"${name}\"].push(`}\n </Show>\n <Show when={option.kind === ReflectionKind.string}>\n {code`...args[++i].split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean) `}\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n {code`...args[++i].split(\",\").map(item => item.trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")).filter(Boolean).map(Number).filter(value => !Number.isNaN(value)) `}\n </Show>\n {code`); `}\n </ElseIfClause>\n </Show>\n <Show\n when={\n !(option as StringCommandOption | NumberCommandOption).variadic\n }>\n <IfStatement\n condition={`${equalsRegex}.test(${isCaseSensitive ? \"arg\" : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'})`}>\n <Show when={option.kind === ReflectionKind.string}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = arg.replace(${equalsRegex}, \"\").trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\"); `}\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <VarDeclaration\n const\n name=\"value\"\n initializer={code` Number(arg.replace(${equalsRegex}, \"\").trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")); `}\n />\n <hbr />\n <IfStatement condition={`!Number.isNaN(value)`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = value; `}\n </IfStatement>\n </Show>\n </IfStatement>\n <ElseIfClause condition={`args.length > i + 1`}>\n <Show when={option.kind === ReflectionKind.string}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = args[++i].trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\"); `}\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <VarDeclaration\n const\n name=\"value\"\n initializer={code` Number(args[++i].trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\")); `}\n />\n <hbr />\n <IfStatement condition={`!Number.isNaN(value)`}>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name}`}>\n {code`options[\"${name}\"]`}\n </Show>\n {code` = value; `}\n </IfStatement>\n </Show>\n </ElseIfClause>\n <hbr />\n </Show>\n </Show>\n <Show when={option.kind === ReflectionKind.boolean}>\n <IfStatement\n condition={`${equalsRegex}.test(${isCaseSensitive ? \"arg\" : '\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'})`}>\n <VarDeclaration\n const\n name=\"value\"\n initializer={code` arg.replace(${equalsRegex}, \"\").trim().replace(/^(\"|')/, \"\").replace(/(\"|')$/, \"\").toLowerCase(); `}\n />\n <hbr />\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name} = `}>\n {code`options[\"${name}\"] = `}\n </Show>\n <BooleanInputParserLogic name=\"value\" />\n </IfStatement>\n <ElseClause>\n <Show\n when={name.includes(\"?\") || name.includes(\"-\")}\n fallback={code`options.${name} = true; `}>\n {code`options[\"${name}\"] = true; `}\n </Show>\n </ElseClause>\n <Show when={Boolean((option as BooleanCommandOption).isNegativeOf)}>\n <hbr />\n <Show\n when={\n (option as BooleanCommandOption).isNegativeOf!.includes(\"?\") ||\n (option as BooleanCommandOption).isNegativeOf!.includes(\"-\")\n }\n fallback={code`options.${(option as BooleanCommandOption).isNegativeOf} = false; `}>\n {code`options[\"${(option as BooleanCommandOption).isNegativeOf}\"] = false; `}\n </Show>\n </Show>\n </Show>\n </>\n );\n}\n\nexport interface OptionsMemberParserConditionProps {\n /**\n * The option name to generate the parser logic for.\n */\n name: string;\n\n /**\n * Aliases for the option, which will also be parsed in the generated code. This will affect how the generated code compares command line arguments to option names and aliases.\n */\n alias?: string[];\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive: boolean;\n}\n\nexport function OptionsMemberParserCondition(\n props: OptionsMemberParserConditionProps\n) {\n const { name, alias: aliasProp, isCaseSensitive } = props;\n\n return (\n <>\n {code`${\n isCaseSensitive\n ? 'arg.startsWith(\"--'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive ? name : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive\n ? name\n : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\" || ${\n isCaseSensitive\n ? 'arg.startsWith(\"-'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive ? name : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive\n ? name\n : name.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\"`}\n <Show when={aliasProp && aliasProp.length > 0}>\n <For each={aliasProp ?? []}>\n {alias =>\n code` || ${\n isCaseSensitive || alias.length === 1\n ? 'arg.startsWith(\"--'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive || alias.length === 1\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive || alias.length === 1\n ? alias\n : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\" || ${\n isCaseSensitive || alias.length === 1\n ? 'arg.startsWith(\"-'\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\"'\n }${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")}=\") || ${\n isCaseSensitive || alias.length === 1\n ? \"arg\"\n : 'arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n } === \"${\n isCaseSensitive || alias.length === 1\n ? alias\n : alias.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")\n }\"`\n }\n </For>\n </Show>\n </>\n );\n}\n\nexport function OptionsInterfaceDeclaration(props: { command: CommandTree }) {\n const { command } = props;\n\n const options = computed(() => computedOptions(command));\n\n return (\n <InterfaceDeclaration export name={`${pascalCase(command.name)}Options`}>\n <For each={Object.values(options.value)} hardline>\n {option => <OptionsMember option={option} />}\n </For>\n </InterfaceDeclaration>\n );\n}\n\nexport interface OptionsParserLogicProps {\n /**\n * The command to generate the options parser logic for.\n */\n command: CommandTree;\n\n /**\n * The environment variable prefix to use for options that have an associated environment variable. This prefix will be used in the generated code to access the environment variables (e.g., `env.${envPrefix}_OPTION_NAME`).\n */\n envPrefix: string;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive?: boolean;\n}\n\n/**\n * The command options parser logic.\n */\nexport function OptionsParserLogic(props: OptionsParserLogicProps) {\n const { command, envPrefix, isCaseSensitive = false } = props;\n\n const options = computed(() => computedOptions(command));\n\n return (\n <>\n <VarDeclaration\n const\n name=\"options\"\n initializer={code` {\n ${Object.entries(options.value)\n .map(([name, option]) => {\n if (option.kind === ReflectionKind.string) {\n return ` ${name.includes(\"?\") || name.includes(\"-\") ? `\"${name}\"` : `${name}`}: ${\n option.env ? `env.${envPrefix}_${option.env}` : \"\"\n }${\n option.variadic\n ? option.default !== undefined\n ? `${\n option.env ? \" ?? \" : \"\"\n }${JSON.stringify(option.default)}`\n : option.env\n ? \" ?? []\"\n : \"\"\n : option.default !== undefined\n ? `${option.env ? \" ?? \" : \"\"}\"${option.default}\"`\n : \"\"\n }, `;\n } else if (option.kind === ReflectionKind.number) {\n return ` ${name.includes(\"?\") || name.includes(\"-\") ? `\"${name}\"` : `${name}`}: ${\n option.env ? `env.${envPrefix}_${option.env}` : \"\"\n }${\n option.variadic\n ? option.default !== undefined\n ? `${\n option.env ? \" ?? \" : \"\"\n }${JSON.stringify(option.default)}`\n : option.env\n ? \" ?? []\"\n : \"\"\n : option.default !== undefined\n ? `${option.env ? \" ?? \" : \"\"}${option.default}`\n : \"\"\n }, `;\n } else if (option.kind === ReflectionKind.boolean) {\n return ` ${name.includes(\"?\") || name.includes(\"-\") ? `\"${name}\"` : `${name}`}: ${\n option.env ? `env.${envPrefix}_${option.env} ?? ` : \"\"\n }${option.default ? \"true\" : \"false\"},`;\n }\n\n return \"\";\n })\n .join(\"\")}\n } as ${pascalCase(command.name)}Options;`}\n />\n <hbr />\n <hbr />\n {code`for (let i = 0; i < args.slice(${\n command.segments.filter(segment => isDynamicPathSegment(segment)).length\n }).length; i++) { `}\n <hbr />\n <VarDeclaration\n const\n name=\"arg\"\n type=\"string\"\n initializer={code` args[i].length > 3 && args[i].startsWith(\"--\")\n ? \\`--\\${args[i].slice(2).replaceAll(\"-\", \"\")${\n isCaseSensitive\n ? \"\"\n : '.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")'\n }}\\`\n : args[i].length > 2 && args[i].startsWith(\"-\")\n ? \\`-\\${args[i].slice(1).replaceAll(\"-\", \"\")}\\`\n : args[i]; `}\n />\n <hbr />\n\n <For each={Object.entries(options.value)} hardline>\n {([name, option], i) => (\n <Show\n when={i === 0}\n fallback={\n <ElseIfClause\n condition={\n <>\n <OptionsMemberParserCondition\n name={name}\n alias={option.alias}\n isCaseSensitive={isCaseSensitive}\n />\n </>\n }>\n <OptionsMemberParserLogic\n name={name}\n option={option}\n isCaseSensitive={isCaseSensitive}\n />\n </ElseIfClause>\n }>\n <IfStatement\n condition={\n <OptionsMemberParserCondition\n name={name}\n alias={option.alias}\n isCaseSensitive={isCaseSensitive}\n />\n }>\n <OptionsMemberParserLogic\n name={name}\n option={option}\n isCaseSensitive={isCaseSensitive}\n />\n </IfStatement>\n </Show>\n )}\n </For>\n\n <hbr />\n {code` } `}\n <hbr />\n </>\n );\n}\n\nexport interface CommandParserLogicProps {\n /**\n * The command to generate the parser logic for.\n */\n command: CommandTree;\n\n /**\n * The environment variable prefix to use for options that have an associated environment variable. This prefix will be used in the generated code to access the environment variables (e.g., `env.${envPrefix}_OPTION_NAME`).\n */\n envPrefix: string;\n\n /**\n * Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command-line arguments to option names and aliases.\n *\n * @defaultValue false\n */\n isCaseSensitive?: boolean;\n}\n\n/**\n * The command parser logic, which includes parsing dynamic path segments, positional parameters, and options.\n */\nexport function CommandParserLogic(props: CommandParserLogicProps) {\n const { command, envPrefix, isCaseSensitive = false } = props;\n\n return (\n <>\n <DynamicSegmentsParserLogic\n command={command}\n isCaseSensitive={isCaseSensitive}\n />\n <hbr />\n <hbr />\n <OptionsParserLogic\n command={command}\n envPrefix={envPrefix}\n isCaseSensitive={isCaseSensitive}\n />\n <hbr />\n <hbr />\n <ArgumentsParserLogic\n command={command}\n envPrefix={envPrefix}\n isCaseSensitive={isCaseSensitive}\n />\n <hbr />\n <hbr />\n </>\n );\n}\n"],"mappings":"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"}