@shell-shock/core 0.6.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.
- package/dist/components/docs.cjs +1 -1
- package/dist/components/docs.cjs.map +1 -1
- package/dist/components/docs.d.cts +5 -5
- package/dist/components/docs.d.mts +5 -5
- package/dist/components/docs.mjs +1 -1
- package/dist/components/docs.mjs.map +1 -1
- package/dist/components/helpers.cjs +15 -0
- package/dist/components/helpers.cjs.map +1 -0
- package/dist/components/helpers.d.cts +13 -0
- package/dist/components/helpers.d.cts.map +1 -0
- package/dist/components/helpers.d.mts +13 -0
- package/dist/components/helpers.d.mts.map +1 -0
- package/dist/components/helpers.mjs +14 -0
- package/dist/components/helpers.mjs.map +1 -0
- package/dist/components/index.cjs +5 -1
- package/dist/components/index.d.cts +3 -2
- package/dist/components/index.d.mts +3 -2
- package/dist/components/index.mjs +3 -2
- package/dist/components/options-parser-logic.cjs +156 -31
- package/dist/components/options-parser-logic.cjs.map +1 -1
- package/dist/components/options-parser-logic.d.cts +47 -8
- package/dist/components/options-parser-logic.d.cts.map +1 -1
- package/dist/components/options-parser-logic.d.mts +53 -14
- package/dist/components/options-parser-logic.d.mts.map +1 -1
- package/dist/components/options-parser-logic.mjs +154 -31
- package/dist/components/options-parser-logic.mjs.map +1 -1
- package/dist/components/usage.cjs +38 -5
- package/dist/components/usage.cjs.map +1 -1
- package/dist/components/usage.d.cts +2 -4
- package/dist/components/usage.d.cts.map +1 -1
- package/dist/components/usage.d.mts +2 -4
- package/dist/components/usage.d.mts.map +1 -1
- package/dist/components/usage.mjs +40 -7
- package/dist/components/usage.mjs.map +1 -1
- package/dist/helpers/persistence.cjs +31 -3
- package/dist/helpers/persistence.cjs.map +1 -1
- package/dist/helpers/persistence.mjs +31 -3
- package/dist/helpers/persistence.mjs.map +1 -1
- package/dist/helpers/resolve-command.cjs +68 -47
- package/dist/helpers/resolve-command.cjs.map +1 -1
- package/dist/helpers/resolve-command.mjs +70 -49
- package/dist/helpers/resolve-command.mjs.map +1 -1
- package/dist/helpers/validations.cjs +13 -36
- package/dist/helpers/validations.cjs.map +1 -1
- package/dist/helpers/validations.mjs +12 -36
- package/dist/helpers/validations.mjs.map +1 -1
- package/dist/index.d.cts +3 -2
- package/dist/index.d.mts +3 -2
- package/dist/plugin-utils/context-helpers.cjs +3 -45
- package/dist/plugin-utils/context-helpers.cjs.map +1 -1
- package/dist/plugin-utils/context-helpers.d.cts +1 -37
- package/dist/plugin-utils/context-helpers.d.cts.map +1 -1
- package/dist/plugin-utils/context-helpers.d.mts +1 -37
- package/dist/plugin-utils/context-helpers.d.mts.map +1 -1
- package/dist/plugin-utils/context-helpers.mjs +4 -44
- package/dist/plugin-utils/context-helpers.mjs.map +1 -1
- package/dist/plugin-utils/index.cjs +0 -2
- package/dist/plugin-utils/index.d.cts +2 -2
- package/dist/plugin-utils/index.d.mts +2 -2
- package/dist/plugin-utils/index.mjs +2 -2
- package/dist/plugin.cjs +9 -15
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.cts.map +1 -1
- package/dist/plugin.d.mts.map +1 -1
- package/dist/plugin.mjs +9 -15
- package/dist/plugin.mjs.map +1 -1
- package/dist/types/command.d.cts +206 -33
- package/dist/types/command.d.cts.map +1 -1
- package/dist/types/command.d.mts +206 -33
- package/dist/types/command.d.mts.map +1 -1
- package/dist/types/index.d.cts +3 -2
- package/dist/types/index.d.mts +3 -2
- package/dist/types/runtime.d.cts +5 -15
- package/dist/types/runtime.d.cts.map +1 -1
- package/dist/types/runtime.d.mts +5 -15
- package/dist/types/runtime.d.mts.map +1 -1
- package/package.json +25 -11
|
@@ -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
|
|
14
|
-
const {
|
|
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
|
|
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
|
-
|
|
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,6 +45,111 @@ function DynamicPathSegmentsParserLogic(props) {
|
|
|
55
45
|
})
|
|
56
46
|
});
|
|
57
47
|
}
|
|
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;
|
|
53
|
+
},
|
|
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
|
+
});
|
|
152
|
+
}
|
|
58
153
|
/**
|
|
59
154
|
* The command option interface property.
|
|
60
155
|
*/
|
|
@@ -130,7 +225,7 @@ function OptionsMember({ option }) {
|
|
|
130
225
|
*/
|
|
131
226
|
function OptionsMemberParserLogic(props) {
|
|
132
227
|
const { name, option, isCaseSensitive } = props;
|
|
133
|
-
const equalsRegex = `/^--?(${isCaseSensitive
|
|
228
|
+
const equalsRegex = `/^--?(${isCaseSensitive || name.length === 1 ? name : name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}${option.alias && option.alias.length > 0 ? "|" : ""}${option.alias?.map((a) => (isCaseSensitive || name.length === 1 ? a : a.toLowerCase().replaceAll("-", "").replaceAll("_", "")) === "?" ? "\\?" : isCaseSensitive || name.length === 1 ? a : a.toLowerCase().replaceAll("-", "").replaceAll("_", "")).join("|")})=/`;
|
|
134
229
|
return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
135
230
|
get when() {
|
|
136
231
|
return option.kind === __powerlines_deepkit_vendor_type.ReflectionKind.string || option.kind === __powerlines_deepkit_vendor_type.ReflectionKind.number;
|
|
@@ -151,7 +246,7 @@ function OptionsMemberParserLogic(props) {
|
|
|
151
246
|
}),
|
|
152
247
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
153
248
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
154
|
-
condition: `${equalsRegex}.test(
|
|
249
|
+
condition: `${equalsRegex}.test(${isCaseSensitive ? "arg" : "\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"})`,
|
|
155
250
|
get children() {
|
|
156
251
|
return [
|
|
157
252
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
@@ -213,7 +308,7 @@ function OptionsMemberParserLogic(props) {
|
|
|
213
308
|
get children() {
|
|
214
309
|
return [
|
|
215
310
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
216
|
-
condition: `${equalsRegex}.test(
|
|
311
|
+
condition: `${equalsRegex}.test(${isCaseSensitive ? "arg" : "\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"})`,
|
|
217
312
|
get children() {
|
|
218
313
|
return [(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
219
314
|
get when() {
|
|
@@ -314,7 +409,7 @@ function OptionsMemberParserLogic(props) {
|
|
|
314
409
|
get children() {
|
|
315
410
|
return [
|
|
316
411
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.IfStatement, {
|
|
317
|
-
condition: `${equalsRegex}.test(
|
|
412
|
+
condition: `${equalsRegex}.test(${isCaseSensitive ? "arg" : "\"-\" + arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"})`,
|
|
318
413
|
get children() {
|
|
319
414
|
return [
|
|
320
415
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
|
|
@@ -327,10 +422,10 @@ function OptionsMemberParserLogic(props) {
|
|
|
327
422
|
get when() {
|
|
328
423
|
return name.includes("?") || name.includes("-");
|
|
329
424
|
},
|
|
330
|
-
fallback: __alloy_js_core.code`options.${name}`,
|
|
331
|
-
children: __alloy_js_core.code`options["${name}"]`
|
|
425
|
+
fallback: __alloy_js_core.code`options.${name} = `,
|
|
426
|
+
children: __alloy_js_core.code`options["${name}"] = `
|
|
332
427
|
}),
|
|
333
|
-
|
|
428
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(require_components_helpers.BooleanInputParserLogic, { name: "value" })
|
|
334
429
|
];
|
|
335
430
|
}
|
|
336
431
|
}),
|
|
@@ -366,15 +461,15 @@ function OptionsMemberParserLogic(props) {
|
|
|
366
461
|
})];
|
|
367
462
|
}
|
|
368
463
|
function OptionsMemberParserCondition(props) {
|
|
369
|
-
const { name, alias, isCaseSensitive } = props;
|
|
370
|
-
return [(0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code
|
|
464
|
+
const { name, alias: aliasProp, isCaseSensitive } = props;
|
|
465
|
+
return [(0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code`${isCaseSensitive ? "arg.startsWith(\"--" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\""}${isCaseSensitive ? name : name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}=") || ${isCaseSensitive ? "arg" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${isCaseSensitive ? name : name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}" || ${isCaseSensitive ? "arg.startsWith(\"-" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\""}${isCaseSensitive ? name : name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}=") || ${isCaseSensitive ? "arg" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${isCaseSensitive ? name : name.toLowerCase().replaceAll("-", "").replaceAll("_", "")}"`), (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.Show, {
|
|
371
466
|
get when() {
|
|
372
|
-
return
|
|
467
|
+
return aliasProp && aliasProp.length > 0;
|
|
373
468
|
},
|
|
374
469
|
get children() {
|
|
375
470
|
return (0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_core.For, {
|
|
376
|
-
each:
|
|
377
|
-
children: (
|
|
471
|
+
each: aliasProp ?? [],
|
|
472
|
+
children: (alias) => __alloy_js_core.code` || ${isCaseSensitive || alias.length === 1 ? "arg.startsWith(\"--" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\""}${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll("-", "").replaceAll("_", "")}=") || ${isCaseSensitive || alias.length === 1 ? "arg" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll("-", "").replaceAll("_", "")}" || ${isCaseSensitive || alias.length === 1 ? "arg.startsWith(\"-" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\").startsWith(\""}${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll("-", "").replaceAll("_", "")}=") || ${isCaseSensitive || alias.length === 1 ? "arg" : "arg.toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"} === "${isCaseSensitive || alias.length === 1 ? alias : alias.toLowerCase().replaceAll("-", "").replaceAll("_", "")}"`
|
|
378
473
|
});
|
|
379
474
|
}
|
|
380
475
|
})];
|
|
@@ -421,14 +516,14 @@ function OptionsParserLogic(props) {
|
|
|
421
516
|
}),
|
|
422
517
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
423
518
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
424
|
-
(0, __alloy_js_core_jsx_runtime.memo)(() => __alloy_js_core.code`for (let i = 0; i < args.slice(${command.
|
|
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++) { `),
|
|
425
520
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
426
521
|
(0, __alloy_js_core_jsx_runtime.createComponent)(__alloy_js_typescript.VarDeclaration, {
|
|
427
522
|
"const": true,
|
|
428
523
|
name: "arg",
|
|
429
524
|
type: "string",
|
|
430
525
|
initializer: __alloy_js_core.code` args[i].length > 3 && args[i].startsWith("--")
|
|
431
|
-
? \`--\${args[i].slice(2).replaceAll("-", "")${isCaseSensitive ? "" : ".toLowerCase()"}}\`
|
|
526
|
+
? \`--\${args[i].slice(2).replaceAll("-", "")${isCaseSensitive ? "" : ".toLowerCase().replaceAll(\"-\", \"\").replaceAll(\"_\", \"\")"}}\`
|
|
432
527
|
: args[i].length > 2 && args[i].startsWith("-")
|
|
433
528
|
? \`-\${args[i].slice(1).replaceAll("-", "")}\`
|
|
434
529
|
: args[i]; `
|
|
@@ -488,9 +583,39 @@ function OptionsParserLogic(props) {
|
|
|
488
583
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
489
584
|
];
|
|
490
585
|
}
|
|
586
|
+
/**
|
|
587
|
+
* The command parser logic, which includes parsing dynamic path segments, positional parameters, and options.
|
|
588
|
+
*/
|
|
589
|
+
function CommandParserLogic(props) {
|
|
590
|
+
const { command, envPrefix, isCaseSensitive = false } = props;
|
|
591
|
+
return [
|
|
592
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(DynamicSegmentsParserLogic, {
|
|
593
|
+
command,
|
|
594
|
+
isCaseSensitive
|
|
595
|
+
}),
|
|
596
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
597
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
598
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(OptionsParserLogic, {
|
|
599
|
+
command,
|
|
600
|
+
envPrefix,
|
|
601
|
+
isCaseSensitive
|
|
602
|
+
}),
|
|
603
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
604
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
605
|
+
(0, __alloy_js_core_jsx_runtime.createComponent)(ArgumentsParserLogic, {
|
|
606
|
+
command,
|
|
607
|
+
envPrefix,
|
|
608
|
+
isCaseSensitive
|
|
609
|
+
}),
|
|
610
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
611
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
612
|
+
];
|
|
613
|
+
}
|
|
491
614
|
|
|
492
615
|
//#endregion
|
|
493
|
-
exports.
|
|
616
|
+
exports.ArgumentsParserLogic = ArgumentsParserLogic;
|
|
617
|
+
exports.CommandParserLogic = CommandParserLogic;
|
|
618
|
+
exports.DynamicSegmentsParserLogic = DynamicSegmentsParserLogic;
|
|
494
619
|
exports.OptionsInterfaceDeclaration = OptionsInterfaceDeclaration;
|
|
495
620
|
exports.OptionsMember = OptionsMember;
|
|
496
621
|
exports.OptionsMemberParserCondition = OptionsMemberParserCondition;
|
|
@@ -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","OptionsMember","option","doc","description","title","Boolean","kind","string","number","boolean","OptionsMemberParserLogic","isCaseSensitive","equalsRegex","length","toLowerCase","alias","map","a","join","includes","fallback","isNegativeOf","OptionsMemberParserCondition","OptionsInterfaceDeclaration","command","options","Object","values","value","hardline","OptionsParserLogic","envPrefix","entries","env","undefined","JSON","stringify","filter","i"],"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\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 ? name : name.toLowerCase()\n }${option.alias && option.alias.length > 0 ? \"|\" : \"\"}${option.alias\n ?.map(a =>\n (isCaseSensitive && name.length > 1 ? a : a.toLowerCase()) === \"?\"\n ? \"\\\\?\"\n : isCaseSensitive && name.length > 1\n ? a\n : a.toLowerCase()\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(arg${isCaseSensitive ? \"\" : \".toLowerCase()\"})`}>\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(arg${isCaseSensitive ? \"\" : \".toLowerCase()\"})`}>\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(arg${isCaseSensitive ? \"\" : \".toLowerCase()\"})`}>\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, isCaseSensitive } = props;\n\n return (\n <>\n {code`arg${isCaseSensitive ? \"\" : \".toLowerCase()\"}.startsWith(\"--${\n isCaseSensitive ? name : name.toLowerCase()\n }=\") || arg${isCaseSensitive ? \"\" : \".toLowerCase()\"} === \"--${\n isCaseSensitive ? name : name.toLowerCase()\n }\" || arg.startsWith(\"-${name}=\") || arg === \"-${name}\"`}\n <Show when={alias && alias.length > 0}>\n <For each={alias ?? []}>\n {a =>\n code` || arg${isCaseSensitive ? \"\" : \".toLowerCase()\"}.startsWith(\"--${\n isCaseSensitive || a.length === 1 ? a : a.toLowerCase()\n }=\") || arg${isCaseSensitive ? \"\" : \".toLowerCase()\"} === \"--${\n isCaseSensitive || a.length === 1 ? a : a.toLowerCase()\n }\" || arg.startsWith(\"-${a}=\") || arg === \"-${a}\"`\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 ? \"\" : \".toLowerCase()\"\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"],"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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"}
|
|
@@ -1,14 +1,33 @@
|
|
|
1
|
-
import { CommandOption, CommandTree
|
|
1
|
+
import { CommandOption, CommandTree } from "../types/command.cjs";
|
|
2
2
|
import * as _alloy_js_core0 from "@alloy-js/core";
|
|
3
3
|
|
|
4
4
|
//#region src/components/options-parser-logic.d.ts
|
|
5
|
-
interface
|
|
5
|
+
interface DynamicSegmentsParserLogicProps {
|
|
6
6
|
/**
|
|
7
|
-
* The command
|
|
7
|
+
* 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.
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
command: CommandTree;
|
|
10
|
+
/**
|
|
11
|
+
* 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.
|
|
12
|
+
*/
|
|
13
|
+
isCaseSensitive: boolean;
|
|
14
|
+
}
|
|
15
|
+
declare function DynamicSegmentsParserLogic(props: DynamicSegmentsParserLogicProps): _alloy_js_core0.Children;
|
|
16
|
+
interface ArgumentsParserLogicProps {
|
|
17
|
+
/**
|
|
18
|
+
* The command to generate the positional parameters parser logic for.
|
|
19
|
+
*/
|
|
20
|
+
command: CommandTree;
|
|
21
|
+
/**
|
|
22
|
+
* 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`).
|
|
23
|
+
*/
|
|
24
|
+
envPrefix: string;
|
|
25
|
+
/**
|
|
26
|
+
* 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.
|
|
27
|
+
*/
|
|
28
|
+
isCaseSensitive: boolean;
|
|
10
29
|
}
|
|
11
|
-
declare function
|
|
30
|
+
declare function ArgumentsParserLogic(props: ArgumentsParserLogicProps): _alloy_js_core0.Children;
|
|
12
31
|
/**
|
|
13
32
|
* The command option interface property.
|
|
14
33
|
*/
|
|
@@ -43,11 +62,11 @@ interface OptionsMemberParserConditionProps {
|
|
|
43
62
|
*/
|
|
44
63
|
name: string;
|
|
45
64
|
/**
|
|
46
|
-
* Aliases for the option, which will also be parsed in the generated code. This will affect how the generated code compares command
|
|
65
|
+
* 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.
|
|
47
66
|
*/
|
|
48
67
|
alias?: string[];
|
|
49
68
|
/**
|
|
50
|
-
* Whether the command options should be parsed in a case-sensitive manner. This will affect how the generated code compares command
|
|
69
|
+
* 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.
|
|
51
70
|
*
|
|
52
71
|
* @defaultValue false
|
|
53
72
|
*/
|
|
@@ -77,6 +96,26 @@ interface OptionsParserLogicProps {
|
|
|
77
96
|
* The command options parser logic.
|
|
78
97
|
*/
|
|
79
98
|
declare function OptionsParserLogic(props: OptionsParserLogicProps): _alloy_js_core0.Children;
|
|
99
|
+
interface CommandParserLogicProps {
|
|
100
|
+
/**
|
|
101
|
+
* The command to generate the parser logic for.
|
|
102
|
+
*/
|
|
103
|
+
command: CommandTree;
|
|
104
|
+
/**
|
|
105
|
+
* 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`).
|
|
106
|
+
*/
|
|
107
|
+
envPrefix: string;
|
|
108
|
+
/**
|
|
109
|
+
* 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.
|
|
110
|
+
*
|
|
111
|
+
* @defaultValue false
|
|
112
|
+
*/
|
|
113
|
+
isCaseSensitive?: boolean;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The command parser logic, which includes parsing dynamic path segments, positional parameters, and options.
|
|
117
|
+
*/
|
|
118
|
+
declare function CommandParserLogic(props: CommandParserLogicProps): _alloy_js_core0.Children;
|
|
80
119
|
//#endregion
|
|
81
|
-
export {
|
|
120
|
+
export { ArgumentsParserLogic, ArgumentsParserLogicProps, CommandParserLogic, CommandParserLogicProps, DynamicSegmentsParserLogic, DynamicSegmentsParserLogicProps, OptionsInterfaceDeclaration, OptionsMember, OptionsMemberParserCondition, OptionsMemberParserConditionProps, OptionsMemberParserLogic, OptionsMemberParserLogicProps, OptionsParserLogic, OptionsParserLogicProps };
|
|
82
121
|
//# sourceMappingURL=options-parser-logic.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options-parser-logic.d.cts","names":[],"sources":["../../src/components/options-parser-logic.tsx"],"sourcesContent":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"options-parser-logic.d.cts","names":[],"sources":["../../src/components/options-parser-logic.tsx"],"sourcesContent":[],"mappings":";;;;UA8CiB,+BAAA;;;AAAjB;EAYgB,OAAA,EARL,WAQK;EA6BC;AAiBjB;AA6KA;EAAgC,eAAA,EAAA,OAAA;;AAAiC,iBA3NjD,0BAAA,CA2NmD,KAAA,EA1N1D,+BA0N0D,CAAA,EA1N3B,eAAA,CAAA,QA0N2B;AAAA,UA9LlD,yBAAA,CA8LkD;EAuClD;AAsBjB;AAuKA;EAmBgB,OAAA,EAjbL,WAibK;EAmEA;AAchB;AAsBA;EA6HiB,SAAA,EAAA,MAAA;EAsBD;;;;;iBA9pBA,oBAAA,QAA4B,4BAAyB,eAAA,CAAA;;;;iBA6KrD,aAAA;;;UAAoC;IAAa,eAAA,CAAE;UAuClD,6BAAA;;;;;;;;UASP;;;;;;;;;;;iBAaM,wBAAA,QAAgC,gCAA6B,eAAA,CAAA;UAuK5D,iCAAA;;;;;;;;;;;;;;;;iBAmBD,4BAAA,QACP,oCAAiC,eAAA,CAAA;iBAkE1B,2BAAA;WAA8C;IAAW,eAAA,CAAE;UAc1D,uBAAA;;;;WAIN;;;;;;;;;;;;;;;iBAkBK,kBAAA,QAA0B,0BAAuB,eAAA,CAAA;UA6HhD,uBAAA;;;;WAIN;;;;;;;;;;;;;;;iBAkBK,kBAAA,QAA0B,0BAAuB,eAAA,CAAA"}
|