@shell-shock/preset-script 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/components/command-entry.cjs +159 -150
- package/dist/components/command-entry.cjs.map +1 -1
- package/dist/components/command-entry.d.cts +8 -1
- package/dist/components/command-entry.d.cts.map +1 -1
- package/dist/components/command-entry.d.mts +8 -1
- package/dist/components/command-entry.d.mts.map +1 -1
- package/dist/components/command-entry.mjs +159 -151
- package/dist/components/command-entry.mjs.map +1 -1
- package/dist/components/console-builtin.cjs +28 -19
- package/dist/components/console-builtin.cjs.map +1 -1
- package/dist/components/console-builtin.d.cts +4 -2
- package/dist/components/console-builtin.d.cts.map +1 -1
- package/dist/components/console-builtin.d.mts +4 -2
- package/dist/components/console-builtin.d.mts.map +1 -1
- package/dist/components/console-builtin.mjs +28 -19
- package/dist/components/console-builtin.mjs.map +1 -1
- package/dist/components/help.d.mts +7 -7
- package/dist/components/help.d.mts.map +1 -1
- package/dist/components/helpers.d.mts +5 -5
- package/dist/components/index.cjs +1 -0
- package/dist/components/index.d.cts +3 -3
- package/dist/components/index.d.mts +3 -3
- package/dist/components/index.mjs +2 -2
- package/dist/components/utils-builtin.cjs +10 -87
- package/dist/components/utils-builtin.cjs.map +1 -1
- package/dist/components/utils-builtin.d.cts.map +1 -1
- package/dist/components/utils-builtin.d.mts +8 -8
- package/dist/components/utils-builtin.d.mts.map +1 -1
- package/dist/components/utils-builtin.mjs +10 -87
- package/dist/components/utils-builtin.mjs.map +1 -1
- package/dist/types/plugin.d.cts.map +1 -1
- package/package.json +8 -8
|
@@ -35,7 +35,7 @@ function CommandInvocation(props) {
|
|
|
35
35
|
createIntrinsic("hbr", {}),
|
|
36
36
|
memo(() => code`
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
internal_commandContextStore.run(__context, () => {
|
|
39
39
|
return Promise.resolve(Reflect.apply(handle${pascalCase(command.name)}, __context, [options${command.arguments.length > 0 ? `, ${command.arguments.map((argument) => camelCase(argument.name)).join(", ")}` : ""}]));
|
|
40
40
|
});
|
|
41
41
|
|
|
@@ -109,7 +109,8 @@ function CommandHandlerDeclaration(props) {
|
|
|
109
109
|
writeLine(colors.text.body.tertiary("Debug mode is enabled. Additional debug information may be logged to the console."));
|
|
110
110
|
|
|
111
111
|
writeLine("");
|
|
112
|
-
debug(\`Command path: ${command.segments.map((segment) => isDynamicPathSegment(segment) ? `\${${camelCase(getDynamicPathSegmentName(segment))}}` : segment).join(" / ")} \\n\\nOptions: \\n${Object.values(command.options).map((option) => ` - ${kebabCase(option.name)}: \${options.${camelCase(option.name)} === undefined ? "" : JSON.stringify(options.${camelCase(option.name)})}`).join("\\n")}${command.arguments.length > 0 ? ` \\n\\nArguments: \\n${command.arguments.map((argument) => ` - ${kebabCase(argument.name)}: \${${camelCase(argument.name)} === undefined ? "" : JSON.stringify(${camelCase(argument.name)})}`).join("\\n")}` : ""}\`);
|
|
112
|
+
debug(\`Command path: ${command.segments.map((segment) => isDynamicPathSegment(segment) ? `\${${camelCase(getDynamicPathSegmentName(segment))}}` : segment).join(" / ")} \\n\\nOptions: \\n${Object.values(command.options).map((option) => ` - ${kebabCase(option.name)}: \${options.${camelCase(option.name)} === undefined ? "" : JSON.stringify(options.${camelCase(option.name)})}`).join("\\n")}${command.arguments.length > 0 ? ` \\n\\nArguments: \\n${command.arguments.map((argument) => ` - ${kebabCase(argument.name)}: \${${camelCase(argument.name)} === undefined ? "" : JSON.stringify(${camelCase(argument.name)})}`).join("\\n")}` : ""}\`);
|
|
113
|
+
writeLine(""); `;
|
|
113
114
|
}
|
|
114
115
|
}),
|
|
115
116
|
createIntrinsic("hbr", {}),
|
|
@@ -132,6 +133,159 @@ function CommandHandlerDeclaration(props) {
|
|
|
132
133
|
];
|
|
133
134
|
}
|
|
134
135
|
/**
|
|
136
|
+
* A component that generates command validation logic for required options and arguments.
|
|
137
|
+
*/
|
|
138
|
+
function CommandValidationLogic(props) {
|
|
139
|
+
const { command } = props;
|
|
140
|
+
return [
|
|
141
|
+
createComponent(VarDeclaration, {
|
|
142
|
+
name: "failures",
|
|
143
|
+
type: "string[]",
|
|
144
|
+
initializer: code`[];`
|
|
145
|
+
}),
|
|
146
|
+
createIntrinsic("hbr", {}),
|
|
147
|
+
createComponent(For, {
|
|
148
|
+
get each() {
|
|
149
|
+
return Object.values(command.options ?? {});
|
|
150
|
+
},
|
|
151
|
+
doubleHardline: true,
|
|
152
|
+
children: (option) => [createComponent(Show, {
|
|
153
|
+
get when() {
|
|
154
|
+
return !option.optional;
|
|
155
|
+
},
|
|
156
|
+
get children() {
|
|
157
|
+
return [createComponent(IfStatement, {
|
|
158
|
+
get condition() {
|
|
159
|
+
return code`!options${option.name.includes("?") ? `["${option.name}"]` : `.${camelCase(option.name)}`}`;
|
|
160
|
+
},
|
|
161
|
+
get children() {
|
|
162
|
+
return code`failures.push("Missing required \\"${option.name}\\" option");`;
|
|
163
|
+
}
|
|
164
|
+
}), createComponent(Show, {
|
|
165
|
+
get when() {
|
|
166
|
+
return (option.kind === ReflectionKind.string || option.kind === ReflectionKind.number) && option.variadic;
|
|
167
|
+
},
|
|
168
|
+
get children() {
|
|
169
|
+
return createComponent(ElseIfClause, {
|
|
170
|
+
get condition() {
|
|
171
|
+
return code`options${option.name.includes("?") ? `["${option.name}"]` : `.${camelCase(option.name)}`}.length === 0`;
|
|
172
|
+
},
|
|
173
|
+
get children() {
|
|
174
|
+
return code`failures.push("No values were provided to the required \\"${option.name}\\" array option");`;
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
})];
|
|
179
|
+
}
|
|
180
|
+
}), createComponent(Show, {
|
|
181
|
+
get when() {
|
|
182
|
+
return option.kind === ReflectionKind.number;
|
|
183
|
+
},
|
|
184
|
+
get children() {
|
|
185
|
+
return createComponent(Show, {
|
|
186
|
+
get when() {
|
|
187
|
+
return option.variadic;
|
|
188
|
+
},
|
|
189
|
+
get fallback() {
|
|
190
|
+
return createComponent(IfStatement, {
|
|
191
|
+
get condition() {
|
|
192
|
+
return code`options${option.name.includes("?") ? `["${option.name}"]` : `.${camelCase(option.name)}`} && Number.isNaN(options${option.name.includes("?") ? `["${option.name}"]` : `.${camelCase(option.name)}`})`;
|
|
193
|
+
},
|
|
194
|
+
get children() {
|
|
195
|
+
return code`failures.push("Invalid numeric value provided for the \\"${option.name}\\" option");`;
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
},
|
|
199
|
+
get children() {
|
|
200
|
+
return createComponent(IfStatement, {
|
|
201
|
+
get condition() {
|
|
202
|
+
return code`options${option.name.includes("?") ? `["${option.name}"]` : `.${camelCase(option.name)}`}.some(value => Number.isNaN(value))`;
|
|
203
|
+
},
|
|
204
|
+
get children() {
|
|
205
|
+
return code`failures.push("Invalid numeric value provided in the \\"${option.name}\\" array option");`;
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
})]
|
|
212
|
+
}),
|
|
213
|
+
createIntrinsic("hbr", {}),
|
|
214
|
+
createIntrinsic("hbr", {}),
|
|
215
|
+
createComponent(For, {
|
|
216
|
+
get each() {
|
|
217
|
+
return command.arguments;
|
|
218
|
+
},
|
|
219
|
+
doubleHardline: true,
|
|
220
|
+
children: (argument) => [createComponent(Show, {
|
|
221
|
+
get when() {
|
|
222
|
+
return !argument.optional;
|
|
223
|
+
},
|
|
224
|
+
get children() {
|
|
225
|
+
return [createComponent(IfStatement, {
|
|
226
|
+
get condition() {
|
|
227
|
+
return code`!${camelCase(argument.name)}`;
|
|
228
|
+
},
|
|
229
|
+
get children() {
|
|
230
|
+
return code`failures.push("Missing required \\"${argument.name}\\" positional argument");`;
|
|
231
|
+
}
|
|
232
|
+
}), createComponent(Show, {
|
|
233
|
+
get when() {
|
|
234
|
+
return (argument.kind === ReflectionKind.string || argument.kind === ReflectionKind.number) && argument.variadic;
|
|
235
|
+
},
|
|
236
|
+
get children() {
|
|
237
|
+
return createComponent(ElseIfClause, {
|
|
238
|
+
get condition() {
|
|
239
|
+
return code`${camelCase(argument.name)}.length === 0`;
|
|
240
|
+
},
|
|
241
|
+
get children() {
|
|
242
|
+
return code`failures.push("No values were provided to the required \\"${argument.name}\\" array positional argument");`;
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
})];
|
|
247
|
+
}
|
|
248
|
+
}), createComponent(Show, {
|
|
249
|
+
get when() {
|
|
250
|
+
return argument.kind === ReflectionKind.number;
|
|
251
|
+
},
|
|
252
|
+
get children() {
|
|
253
|
+
return createComponent(Show, {
|
|
254
|
+
get when() {
|
|
255
|
+
return argument.variadic;
|
|
256
|
+
},
|
|
257
|
+
get fallback() {
|
|
258
|
+
return createComponent(IfStatement, {
|
|
259
|
+
get condition() {
|
|
260
|
+
return code`${camelCase(argument.name)} && Number.isNaN(${camelCase(argument.name)})`;
|
|
261
|
+
},
|
|
262
|
+
get children() {
|
|
263
|
+
return code`failures.push("Invalid numeric value provided for the \\"${argument.name}\\" positional argument");`;
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
},
|
|
267
|
+
get children() {
|
|
268
|
+
return createComponent(IfStatement, {
|
|
269
|
+
get condition() {
|
|
270
|
+
return code`${camelCase(argument.name)}.some(value => Number.isNaN(value))`;
|
|
271
|
+
},
|
|
272
|
+
get children() {
|
|
273
|
+
return code`failures.push("Invalid numeric value provided in the \\"${argument.name}\\" array positional argument");`;
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
})]
|
|
280
|
+
}),
|
|
281
|
+
createComponent(IfStatement, {
|
|
282
|
+
condition: code`failures.length > 0`,
|
|
283
|
+
children: code`error("The following validation failures were found while processing the user provided input, and must be corrected before the command line process can be executed: \\n\\n" + failures.map(failure => " - " + failure).join("\\n"));
|
|
284
|
+
options.help = true; `
|
|
285
|
+
})
|
|
286
|
+
];
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
135
289
|
* The command entry point for the Shell Shock project.
|
|
136
290
|
*/
|
|
137
291
|
function CommandEntry(props) {
|
|
@@ -176,7 +330,7 @@ function CommandEntry(props) {
|
|
|
176
330
|
"hasFlag",
|
|
177
331
|
"isMinimal",
|
|
178
332
|
"isUnicodeSupported",
|
|
179
|
-
"
|
|
333
|
+
"internal_commandContextStore"
|
|
180
334
|
]
|
|
181
335
|
});
|
|
182
336
|
},
|
|
@@ -193,153 +347,7 @@ function CommandEntry(props) {
|
|
|
193
347
|
createComponent(CommandHandlerDeclaration, {
|
|
194
348
|
command,
|
|
195
349
|
get children() {
|
|
196
|
-
return
|
|
197
|
-
createComponent(VarDeclaration, {
|
|
198
|
-
name: "failures",
|
|
199
|
-
type: "string[]",
|
|
200
|
-
initializer: code`[];`
|
|
201
|
-
}),
|
|
202
|
-
createIntrinsic("hbr", {}),
|
|
203
|
-
createComponent(For, {
|
|
204
|
-
get each() {
|
|
205
|
-
return Object.values(command.options ?? {});
|
|
206
|
-
},
|
|
207
|
-
doubleHardline: true,
|
|
208
|
-
children: (option) => [createComponent(Show, {
|
|
209
|
-
get when() {
|
|
210
|
-
return !option.optional;
|
|
211
|
-
},
|
|
212
|
-
get children() {
|
|
213
|
-
return [createComponent(IfStatement, {
|
|
214
|
-
get condition() {
|
|
215
|
-
return code`!options${option.name.includes("?") ? `["${option.name}"]` : `.${camelCase(option.name)}`}`;
|
|
216
|
-
},
|
|
217
|
-
get children() {
|
|
218
|
-
return code`failures.push("Missing required \\"${option.name}\\" option");`;
|
|
219
|
-
}
|
|
220
|
-
}), createComponent(Show, {
|
|
221
|
-
get when() {
|
|
222
|
-
return (option.kind === ReflectionKind.string || option.kind === ReflectionKind.number) && option.variadic;
|
|
223
|
-
},
|
|
224
|
-
get children() {
|
|
225
|
-
return createComponent(ElseIfClause, {
|
|
226
|
-
get condition() {
|
|
227
|
-
return code`options${option.name.includes("?") ? `["${option.name}"]` : `.${camelCase(option.name)}`}.length === 0`;
|
|
228
|
-
},
|
|
229
|
-
get children() {
|
|
230
|
-
return code`failures.push("No values were provided to the required \\"${option.name}\\" array option");`;
|
|
231
|
-
}
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
})];
|
|
235
|
-
}
|
|
236
|
-
}), createComponent(Show, {
|
|
237
|
-
get when() {
|
|
238
|
-
return option.kind === ReflectionKind.number;
|
|
239
|
-
},
|
|
240
|
-
get children() {
|
|
241
|
-
return createComponent(Show, {
|
|
242
|
-
get when() {
|
|
243
|
-
return option.variadic;
|
|
244
|
-
},
|
|
245
|
-
get fallback() {
|
|
246
|
-
return createComponent(IfStatement, {
|
|
247
|
-
get condition() {
|
|
248
|
-
return code`options${option.name.includes("?") ? `["${option.name}"]` : `.${camelCase(option.name)}`} && Number.isNaN(options${option.name.includes("?") ? `["${option.name}"]` : `.${camelCase(option.name)}`})`;
|
|
249
|
-
},
|
|
250
|
-
get children() {
|
|
251
|
-
return code`failures.push("Invalid numeric value provided for the \\"${option.name}\\" option");`;
|
|
252
|
-
}
|
|
253
|
-
});
|
|
254
|
-
},
|
|
255
|
-
get children() {
|
|
256
|
-
return createComponent(IfStatement, {
|
|
257
|
-
get condition() {
|
|
258
|
-
return code`options${option.name.includes("?") ? `["${option.name}"]` : `.${camelCase(option.name)}`}.some(value => Number.isNaN(value))`;
|
|
259
|
-
},
|
|
260
|
-
get children() {
|
|
261
|
-
return code`failures.push("Invalid numeric value provided in the \\"${option.name}\\" array option");`;
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
})]
|
|
268
|
-
}),
|
|
269
|
-
createIntrinsic("hbr", {}),
|
|
270
|
-
createIntrinsic("hbr", {}),
|
|
271
|
-
createComponent(For, {
|
|
272
|
-
get each() {
|
|
273
|
-
return command.arguments;
|
|
274
|
-
},
|
|
275
|
-
doubleHardline: true,
|
|
276
|
-
children: (argument) => [createComponent(Show, {
|
|
277
|
-
get when() {
|
|
278
|
-
return !argument.optional;
|
|
279
|
-
},
|
|
280
|
-
get children() {
|
|
281
|
-
return [createComponent(IfStatement, {
|
|
282
|
-
get condition() {
|
|
283
|
-
return code`!${camelCase(argument.name)}`;
|
|
284
|
-
},
|
|
285
|
-
get children() {
|
|
286
|
-
return code`failures.push("Missing required \\"${argument.name}\\" positional argument");`;
|
|
287
|
-
}
|
|
288
|
-
}), createComponent(Show, {
|
|
289
|
-
get when() {
|
|
290
|
-
return (argument.kind === ReflectionKind.string || argument.kind === ReflectionKind.number) && argument.variadic;
|
|
291
|
-
},
|
|
292
|
-
get children() {
|
|
293
|
-
return createComponent(ElseIfClause, {
|
|
294
|
-
get condition() {
|
|
295
|
-
return code`${camelCase(argument.name)}.length === 0`;
|
|
296
|
-
},
|
|
297
|
-
get children() {
|
|
298
|
-
return code`failures.push("No values were provided to the required \\"${argument.name}\\" array positional argument");`;
|
|
299
|
-
}
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
})];
|
|
303
|
-
}
|
|
304
|
-
}), createComponent(Show, {
|
|
305
|
-
get when() {
|
|
306
|
-
return argument.kind === ReflectionKind.number;
|
|
307
|
-
},
|
|
308
|
-
get children() {
|
|
309
|
-
return createComponent(Show, {
|
|
310
|
-
get when() {
|
|
311
|
-
return argument.variadic;
|
|
312
|
-
},
|
|
313
|
-
get fallback() {
|
|
314
|
-
return createComponent(IfStatement, {
|
|
315
|
-
get condition() {
|
|
316
|
-
return code`${camelCase(argument.name)} && Number.isNaN(${camelCase(argument.name)})`;
|
|
317
|
-
},
|
|
318
|
-
get children() {
|
|
319
|
-
return code`failures.push("Invalid numeric value provided for the \\"${argument.name}\\" positional argument");`;
|
|
320
|
-
}
|
|
321
|
-
});
|
|
322
|
-
},
|
|
323
|
-
get children() {
|
|
324
|
-
return createComponent(IfStatement, {
|
|
325
|
-
get condition() {
|
|
326
|
-
return code`${camelCase(argument.name)}.some(value => Number.isNaN(value))`;
|
|
327
|
-
},
|
|
328
|
-
get children() {
|
|
329
|
-
return code`failures.push("Invalid numeric value provided in the \\"${argument.name}\\" array positional argument");`;
|
|
330
|
-
}
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
});
|
|
334
|
-
}
|
|
335
|
-
})]
|
|
336
|
-
}),
|
|
337
|
-
createComponent(IfStatement, {
|
|
338
|
-
condition: code`failures.length > 0`,
|
|
339
|
-
children: code`error(colors.text.message.description.error("The following validation failures were found while processing the user provided input, and must be corrected before the command line process can be executed: \\n\\n") + failures.map(failure => colors.text.body.secondary(" - " + failure)).join("\\n"));
|
|
340
|
-
options.help = true; `
|
|
341
|
-
})
|
|
342
|
-
];
|
|
350
|
+
return createComponent(CommandValidationLogic, { command });
|
|
343
351
|
}
|
|
344
352
|
})
|
|
345
353
|
];
|
|
@@ -363,5 +371,5 @@ function CommandEntry(props) {
|
|
|
363
371
|
}
|
|
364
372
|
|
|
365
373
|
//#endregion
|
|
366
|
-
export { CommandEntry, CommandHandlerDeclaration, CommandInvocation };
|
|
374
|
+
export { CommandEntry, CommandHandlerDeclaration, CommandInvocation, CommandValidationLogic };
|
|
367
375
|
//# sourceMappingURL=command-entry.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-entry.mjs","names":["code","computed","For","Show","ElseClause","ElseIfClause","FunctionDeclaration","IfStatement","VarDeclaration","ReflectionKind","SingleLineComment","usePowerlines","EntryFile","TSDoc","TSDocParam","TSDocRemarks","TSDocTitle","CommandParserLogic","OptionsInterfaceDeclaration","getAppBin","getDynamicPathSegmentName","isDynamicPathSegment","findFilePath","relativePath","joinPaths","replaceExtension","camelCase","constantCase","kebabCase","pascalCase","defu","BannerFunctionDeclaration","CommandHelp","IsDebug","VirtualCommandEntry","CommandInvocation","props","command","_$createComponent","name","initializer","segments","map","segment","join","_$createIntrinsic","_$memo","arguments","length","argument","CommandHandlerDeclaration","children","context","heading","title","description","replace","async","parameters","type","default","envPrefix","config","isCaseSensitive","condition","Object","values","options","option","CommandEntry","imports","builtinImports","rest","filePath","filter","commandSourcePath","entryPath","value","entry","input","file","typeDefinition","output","id","_$mergeProps","path","env","console","utils","each","doubleHardline","when","optional","includes","kind","string","number","variadic","fallback","child","isVirtual"],"sources":["../../src/components/command-entry.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 type { Children } from \"@alloy-js/core\";\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport {\n ElseClause,\n ElseIfClause,\n FunctionDeclaration,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\nimport { SingleLineComment } from \"@powerlines/plugin-alloy/core/components/single-line-comment\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport type { EntryFileProps } from \"@powerlines/plugin-alloy/typescript/components/entry-file\";\nimport { EntryFile } from \"@powerlines/plugin-alloy/typescript/components/entry-file\";\nimport {\n TSDoc,\n TSDocParam,\n TSDocRemarks,\n TSDocTitle\n} from \"@powerlines/plugin-alloy/typescript/components/tsdoc\";\nimport {\n CommandParserLogic,\n OptionsInterfaceDeclaration\n} from \"@shell-shock/core/components/options-parser-logic\";\nimport {\n getAppBin,\n getDynamicPathSegmentName,\n isDynamicPathSegment\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type {\n CommandTree,\n NumberCommandArgument,\n NumberCommandOption\n} from \"@shell-shock/core/types/command\";\nimport { findFilePath, relativePath } from \"@stryke/path/find\";\nimport { joinPaths } from \"@stryke/path/join\";\nimport { replaceExtension } from \"@stryke/path/replace\";\nimport { camelCase } from \"@stryke/string-format/camel-case\";\nimport { constantCase } from \"@stryke/string-format/constant-case\";\nimport { kebabCase } from \"@stryke/string-format/kebab-case\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport defu from \"defu\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\nimport { BannerFunctionDeclaration } from \"./banner-function-declaration\";\nimport { CommandHelp } from \"./help\";\nimport { IsDebug } from \"./helpers\";\nimport { VirtualCommandEntry } from \"./virtual-command-entry\";\n\nexport function CommandInvocation(props: { command: CommandTree }) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration\n name=\"__context\"\n initializer={code`{ path: \\`${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `\\${${camelCase(getDynamicPathSegmentName(segment))}}`\n : segment\n )\n .join(\"/\")}\\`, segments: [${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? camelCase(getDynamicPathSegmentName(segment))\n : `\"${segment}\"`\n )\n .join(\", \")}] }`}\n />\n <hbr />\n <hbr />\n {code`\n\n internal_commandContext.call(__context, () => {\n return Promise.resolve(Reflect.apply(handle${pascalCase(\n command.name\n )}, __context, [options${\n command.arguments.length > 0\n ? `, ${command.arguments\n .map(argument => camelCase(argument.name))\n .join(\", \")}`\n : \"\"\n }]));\n });\n\n `}\n <hbr />\n </>\n );\n}\n\nexport interface CommandHandlerDeclarationProps {\n command: CommandTree;\n children?: Children;\n}\n\n/**\n * A component that generates the `handler` function declaration for a command.\n */\nexport function CommandHandlerDeclaration(\n props: CommandHandlerDeclarationProps\n) {\n const { command, children } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n\n return (\n <>\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <TSDoc\n heading={`The ${command.title} (${getAppBin(context)} ${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `[${constantCase(getDynamicPathSegmentName(segment))}]`\n : segment\n )\n .join(\" \")}) command.`}>\n <TSDocRemarks>{`${command.description.replace(/\\.+$/, \"\")}.`}</TSDocRemarks>\n <hbr />\n <TSDocTitle>{command.title}</TSDocTitle>\n <TSDocParam name=\"args\">{`The command-line arguments passed to the command.`}</TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n async\n name=\"handler\"\n parameters={[{ name: \"args\", type: \"string[]\", default: \"getArgs()\" }]}>\n <CommandParserLogic\n command={command}\n envPrefix={context.config.envPrefix}\n isCaseSensitive={context.config.isCaseSensitive}\n />\n <hbr />\n <hbr />\n {code`writeLine(\"\");\n banner(); `}\n <hbr />\n <hbr />\n <IfStatement condition={<IsDebug />}>\n {code`\n writeLine(\"\");\n writeLine(colors.text.body.tertiary(\"Debug mode is enabled. Additional debug information may be logged to the console.\"));\n\n writeLine(\"\");\n debug(\\`Command path: ${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `\\${${camelCase(getDynamicPathSegmentName(segment))}}`\n : segment\n )\n .join(\" / \")} \\\\n\\\\nOptions: \\\\n${Object.values(command.options)\n .map(\n option =>\n ` - ${kebabCase(option.name)}: \\${options.${camelCase(\n option.name\n )} === undefined ? \"\" : JSON.stringify(options.${camelCase(\n option.name\n )})}`\n )\n .join(\"\\\\n\")}${\n command.arguments.length > 0\n ? ` \\\\n\\\\nArguments: \\\\n${command.arguments\n .map(\n argument =>\n ` - ${kebabCase(argument.name)}: \\${${camelCase(\n argument.name\n )} === undefined ? \"\" : JSON.stringify(${camelCase(\n argument.name\n )})}`\n )\n .join(\"\\\\n\")}`\n : \"\"\n }\\`); `}\n </IfStatement>\n <hbr />\n <hbr />\n {children}\n <hbr />\n <hbr />\n <IfStatement condition={code`options.help`}>\n <CommandHelp command={command} />\n </IfStatement>\n <ElseClause>\n <hbr />\n <CommandInvocation command={command} />\n </ElseClause>\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface CommandEntryProps extends Omit<\n EntryFileProps,\n \"path\" | \"typeDefinition\"\n> {\n command: CommandTree;\n}\n\n/**\n * The command entry point for the Shell Shock project.\n */\nexport function CommandEntry(props: CommandEntryProps) {\n const { command, imports, builtinImports, ...rest } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const filePath = computed(() =>\n joinPaths(\n command.segments\n .filter(segment => !isDynamicPathSegment(segment))\n .join(\"/\"),\n \"index.ts\"\n )\n );\n const commandSourcePath = computed(() =>\n replaceExtension(\n relativePath(\n joinPaths(context.entryPath, findFilePath(filePath.value)),\n command.entry.input?.file || command.entry.file\n )\n )\n );\n const typeDefinition = computed(() => ({\n ...command.entry,\n output: command.id\n }));\n\n return (\n <>\n <EntryFile\n {...rest}\n path={filePath.value}\n typeDefinition={typeDefinition.value}\n imports={defu(imports ?? {}, {\n [commandSourcePath.value]: `handle${pascalCase(command.name)}`\n })}\n builtinImports={defu(builtinImports ?? {}, {\n env: [\"env\", \"isCI\", \"isDevelopment\", \"isDebug\"],\n console: [\n \"debug\",\n \"warn\",\n \"error\",\n \"table\",\n \"colors\",\n \"stripAnsi\",\n \"writeLine\",\n \"splitText\"\n ],\n utils: [\n \"getArgs\",\n \"hasFlag\",\n \"isMinimal\",\n \"isUnicodeSupported\",\n \"internal_commandContext\"\n ]\n })}>\n <BannerFunctionDeclaration command={command} />\n <hbr />\n <hbr />\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <SingleLineComment>{code`Validate required options and arguments`}</SingleLineComment>\n <hbr />\n <CommandHandlerDeclaration command={command}>\n <VarDeclaration\n name=\"failures\"\n type=\"string[]\"\n initializer={code`[];`}\n />\n <hbr />\n <For each={Object.values(command.options ?? {})} doubleHardline>\n {option => (\n <>\n <Show when={!option.optional}>\n <IfStatement\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }`}>\n {code`failures.push(\"Missing required \\\\\"${option.name}\\\\\" option\");`}\n </IfStatement>\n <Show\n when={\n (option.kind === ReflectionKind.string ||\n option.kind === ReflectionKind.number) &&\n option.variadic\n }>\n <ElseIfClause\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.length === 0`}>\n {code`failures.push(\"No values were provided to the required \\\\\"${\n option.name\n }\\\\\" array option\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <Show\n when={(option as NumberCommandOption).variadic}\n fallback={\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n } && Number.isNaN(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\"Invalid numeric value provided for the \\\\\"${\n option.name\n }\\\\\" option\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the \\\\\"${\n option.name\n }\\\\\" array option\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n <hbr />\n <hbr />\n <For each={command.arguments} doubleHardline>\n {argument => (\n <>\n <Show when={!argument.optional}>\n <IfStatement condition={code`!${camelCase(argument.name)}`}>\n {code`failures.push(\"Missing required \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n <Show\n when={\n (argument.kind === ReflectionKind.string ||\n argument.kind === ReflectionKind.number) &&\n argument.variadic\n }>\n <ElseIfClause\n condition={code`${camelCase(argument.name)}.length === 0`}>\n {code`failures.push(\"No values were provided to the required \\\\\"${\n argument.name\n }\\\\\" array positional argument\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={argument.kind === ReflectionKind.number}>\n <Show\n when={(argument as NumberCommandArgument).variadic}\n fallback={\n <IfStatement\n condition={code`${camelCase(\n argument.name\n )} && Number.isNaN(${camelCase(argument.name)})`}>\n {code`failures.push(\"Invalid numeric value provided for the \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`${camelCase(argument.name)}.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the \\\\\"${\n argument.name\n }\\\\\" array positional argument\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n <IfStatement condition={code`failures.length > 0`}>\n {code`error(colors.text.message.description.error(\"The following validation failures were found while processing the user provided input, and must be corrected before the command line process can be executed: \\\\n\\\\n\") + failures.map(failure => colors.text.body.secondary(\" - \" + failure)).join(\"\\\\n\"));\n options.help = true; `}\n </IfStatement>\n </CommandHandlerDeclaration>\n </EntryFile>\n <For each={Object.values(command.children)}>\n {child => (\n <Show\n when={child.isVirtual}\n fallback={<CommandEntry command={child} />}>\n <VirtualCommandEntry command={child} />\n </Show>\n )}\n </For>\n </>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"command-entry.mjs","names":["code","computed","For","Show","ElseClause","ElseIfClause","FunctionDeclaration","IfStatement","VarDeclaration","ReflectionKind","SingleLineComment","usePowerlines","EntryFile","TSDoc","TSDocParam","TSDocRemarks","TSDocTitle","CommandParserLogic","OptionsInterfaceDeclaration","getAppBin","getDynamicPathSegmentName","isDynamicPathSegment","findFilePath","relativePath","joinPaths","replaceExtension","camelCase","constantCase","kebabCase","pascalCase","defu","BannerFunctionDeclaration","CommandHelp","IsDebug","VirtualCommandEntry","CommandInvocation","props","command","_$createComponent","name","initializer","segments","map","segment","join","_$createIntrinsic","_$memo","arguments","length","argument","CommandHandlerDeclaration","children","context","heading","title","description","replace","async","parameters","type","default","envPrefix","config","isCaseSensitive","condition","Object","values","options","option","CommandValidationLogic","each","doubleHardline","when","optional","includes","kind","string","number","variadic","fallback","CommandEntry","imports","builtinImports","rest","filePath","filter","commandSourcePath","entryPath","value","entry","input","file","typeDefinition","output","id","_$mergeProps","path","env","console","utils","child","isVirtual"],"sources":["../../src/components/command-entry.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 type { Children } from \"@alloy-js/core\";\nimport { code, computed, For, Show } from \"@alloy-js/core\";\nimport {\n ElseClause,\n ElseIfClause,\n FunctionDeclaration,\n IfStatement,\n VarDeclaration\n} from \"@alloy-js/typescript\";\nimport { ReflectionKind } from \"@powerlines/deepkit/vendor/type\";\nimport { SingleLineComment } from \"@powerlines/plugin-alloy/core/components/single-line-comment\";\nimport { usePowerlines } from \"@powerlines/plugin-alloy/core/contexts/context\";\nimport type { EntryFileProps } from \"@powerlines/plugin-alloy/typescript/components/entry-file\";\nimport { EntryFile } from \"@powerlines/plugin-alloy/typescript/components/entry-file\";\nimport {\n TSDoc,\n TSDocParam,\n TSDocRemarks,\n TSDocTitle\n} from \"@powerlines/plugin-alloy/typescript/components/tsdoc\";\nimport {\n CommandParserLogic,\n OptionsInterfaceDeclaration\n} from \"@shell-shock/core/components/options-parser-logic\";\nimport {\n getAppBin,\n getDynamicPathSegmentName,\n isDynamicPathSegment\n} from \"@shell-shock/core/plugin-utils/context-helpers\";\nimport type {\n CommandTree,\n NumberCommandArgument,\n NumberCommandOption\n} from \"@shell-shock/core/types/command\";\nimport { findFilePath, relativePath } from \"@stryke/path/find\";\nimport { joinPaths } from \"@stryke/path/join\";\nimport { replaceExtension } from \"@stryke/path/replace\";\nimport { camelCase } from \"@stryke/string-format/camel-case\";\nimport { constantCase } from \"@stryke/string-format/constant-case\";\nimport { kebabCase } from \"@stryke/string-format/kebab-case\";\nimport { pascalCase } from \"@stryke/string-format/pascal-case\";\nimport defu from \"defu\";\nimport type { ScriptPresetContext } from \"../types/plugin\";\nimport { BannerFunctionDeclaration } from \"./banner-function-declaration\";\nimport { CommandHelp } from \"./help\";\nimport { IsDebug } from \"./helpers\";\nimport { VirtualCommandEntry } from \"./virtual-command-entry\";\n\nexport function CommandInvocation(props: { command: CommandTree }) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration\n name=\"__context\"\n initializer={code`{ path: \\`${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `\\${${camelCase(getDynamicPathSegmentName(segment))}}`\n : segment\n )\n .join(\"/\")}\\`, segments: [${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? camelCase(getDynamicPathSegmentName(segment))\n : `\"${segment}\"`\n )\n .join(\", \")}] }`}\n />\n <hbr />\n <hbr />\n {code`\n\n internal_commandContextStore.run(__context, () => {\n return Promise.resolve(Reflect.apply(handle${pascalCase(\n command.name\n )}, __context, [options${\n command.arguments.length > 0\n ? `, ${command.arguments\n .map(argument => camelCase(argument.name))\n .join(\", \")}`\n : \"\"\n }]));\n });\n\n `}\n <hbr />\n </>\n );\n}\n\nexport interface CommandHandlerDeclarationProps {\n command: CommandTree;\n children?: Children;\n}\n\n/**\n * A component that generates the `handler` function declaration for a command.\n */\nexport function CommandHandlerDeclaration(\n props: CommandHandlerDeclarationProps\n) {\n const { command, children } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n\n return (\n <>\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <TSDoc\n heading={`The ${command.title} (${getAppBin(context)} ${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `[${constantCase(getDynamicPathSegmentName(segment))}]`\n : segment\n )\n .join(\" \")}) command.`}>\n <TSDocRemarks>{`${command.description.replace(/\\.+$/, \"\")}.`}</TSDocRemarks>\n <hbr />\n <TSDocTitle>{command.title}</TSDocTitle>\n <TSDocParam name=\"args\">{`The command-line arguments passed to the command.`}</TSDocParam>\n </TSDoc>\n <FunctionDeclaration\n export\n async\n name=\"handler\"\n parameters={[{ name: \"args\", type: \"string[]\", default: \"getArgs()\" }]}>\n <CommandParserLogic\n command={command}\n envPrefix={context.config.envPrefix}\n isCaseSensitive={context.config.isCaseSensitive}\n />\n <hbr />\n <hbr />\n {code`writeLine(\"\");\n banner(); `}\n <hbr />\n <hbr />\n <IfStatement condition={<IsDebug />}>\n {code`\n writeLine(\"\");\n writeLine(colors.text.body.tertiary(\"Debug mode is enabled. Additional debug information may be logged to the console.\"));\n\n writeLine(\"\");\n debug(\\`Command path: ${command.segments\n .map(segment =>\n isDynamicPathSegment(segment)\n ? `\\${${camelCase(getDynamicPathSegmentName(segment))}}`\n : segment\n )\n .join(\" / \")} \\\\n\\\\nOptions: \\\\n${Object.values(command.options)\n .map(\n option =>\n ` - ${kebabCase(option.name)}: \\${options.${camelCase(\n option.name\n )} === undefined ? \"\" : JSON.stringify(options.${camelCase(\n option.name\n )})}`\n )\n .join(\"\\\\n\")}${\n command.arguments.length > 0\n ? ` \\\\n\\\\nArguments: \\\\n${command.arguments\n .map(\n argument =>\n ` - ${kebabCase(argument.name)}: \\${${camelCase(\n argument.name\n )} === undefined ? \"\" : JSON.stringify(${camelCase(\n argument.name\n )})}`\n )\n .join(\"\\\\n\")}`\n : \"\"\n }\\`);\n writeLine(\"\"); `}\n </IfStatement>\n <hbr />\n <hbr />\n {children}\n <hbr />\n <hbr />\n <IfStatement condition={code`options.help`}>\n <CommandHelp command={command} />\n </IfStatement>\n <ElseClause>\n <hbr />\n <CommandInvocation command={command} />\n </ElseClause>\n </FunctionDeclaration>\n </>\n );\n}\n\nexport interface CommandValidationLogicProps {\n command: CommandTree;\n}\n\n/**\n * A component that generates command validation logic for required options and arguments.\n */\nexport function CommandValidationLogic(props: CommandValidationLogicProps) {\n const { command } = props;\n\n return (\n <>\n <VarDeclaration name=\"failures\" type=\"string[]\" initializer={code`[];`} />\n <hbr />\n <For each={Object.values(command.options ?? {})} doubleHardline>\n {option => (\n <>\n <Show when={!option.optional}>\n <IfStatement\n condition={code`!options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }`}>\n {code`failures.push(\"Missing required \\\\\"${option.name}\\\\\" option\");`}\n </IfStatement>\n <Show\n when={\n (option.kind === ReflectionKind.string ||\n option.kind === ReflectionKind.number) &&\n option.variadic\n }>\n <ElseIfClause\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.length === 0`}>\n {code`failures.push(\"No values were provided to the required \\\\\"${\n option.name\n }\\\\\" array option\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={option.kind === ReflectionKind.number}>\n <Show\n when={(option as NumberCommandOption).variadic}\n fallback={\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n } && Number.isNaN(options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n })`}>\n {code`failures.push(\"Invalid numeric value provided for the \\\\\"${\n option.name\n }\\\\\" option\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`options${\n option.name.includes(\"?\")\n ? `[\"${option.name}\"]`\n : `.${camelCase(option.name)}`\n }.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the \\\\\"${\n option.name\n }\\\\\" array option\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n <hbr />\n <hbr />\n <For each={command.arguments} doubleHardline>\n {argument => (\n <>\n <Show when={!argument.optional}>\n <IfStatement condition={code`!${camelCase(argument.name)}`}>\n {code`failures.push(\"Missing required \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n <Show\n when={\n (argument.kind === ReflectionKind.string ||\n argument.kind === ReflectionKind.number) &&\n argument.variadic\n }>\n <ElseIfClause\n condition={code`${camelCase(argument.name)}.length === 0`}>\n {code`failures.push(\"No values were provided to the required \\\\\"${\n argument.name\n }\\\\\" array positional argument\");`}\n </ElseIfClause>\n </Show>\n </Show>\n <Show when={argument.kind === ReflectionKind.number}>\n <Show\n when={(argument as NumberCommandArgument).variadic}\n fallback={\n <IfStatement\n condition={code`${camelCase(\n argument.name\n )} && Number.isNaN(${camelCase(argument.name)})`}>\n {code`failures.push(\"Invalid numeric value provided for the \\\\\"${\n argument.name\n }\\\\\" positional argument\");`}\n </IfStatement>\n }>\n <IfStatement\n condition={code`${camelCase(argument.name)}.some(value => Number.isNaN(value))`}>\n {code`failures.push(\"Invalid numeric value provided in the \\\\\"${\n argument.name\n }\\\\\" array positional argument\");`}\n </IfStatement>\n </Show>\n </Show>\n </>\n )}\n </For>\n <IfStatement condition={code`failures.length > 0`}>\n {code`error(\"The following validation failures were found while processing the user provided input, and must be corrected before the command line process can be executed: \\\\n\\\\n\" + failures.map(failure => \" - \" + failure).join(\"\\\\n\"));\n options.help = true; `}\n </IfStatement>\n </>\n );\n}\n\nexport interface CommandEntryProps extends Omit<\n EntryFileProps,\n \"path\" | \"typeDefinition\"\n> {\n command: CommandTree;\n}\n\n/**\n * The command entry point for the Shell Shock project.\n */\nexport function CommandEntry(props: CommandEntryProps) {\n const { command, imports, builtinImports, ...rest } = props;\n\n const context = usePowerlines<ScriptPresetContext>();\n const filePath = computed(() =>\n joinPaths(\n command.segments\n .filter(segment => !isDynamicPathSegment(segment))\n .join(\"/\"),\n \"index.ts\"\n )\n );\n const commandSourcePath = computed(() =>\n replaceExtension(\n relativePath(\n joinPaths(context.entryPath, findFilePath(filePath.value)),\n command.entry.input?.file || command.entry.file\n )\n )\n );\n const typeDefinition = computed(() => ({\n ...command.entry,\n output: command.id\n }));\n\n return (\n <>\n <EntryFile\n {...rest}\n path={filePath.value}\n typeDefinition={typeDefinition.value}\n imports={defu(imports ?? {}, {\n [commandSourcePath.value]: `handle${pascalCase(command.name)}`\n })}\n builtinImports={defu(builtinImports ?? {}, {\n env: [\"env\", \"isCI\", \"isDevelopment\", \"isDebug\"],\n console: [\n \"debug\",\n \"warn\",\n \"error\",\n \"table\",\n \"colors\",\n \"stripAnsi\",\n \"writeLine\",\n \"splitText\"\n ],\n utils: [\n \"getArgs\",\n \"hasFlag\",\n \"isMinimal\",\n \"isUnicodeSupported\",\n \"internal_commandContextStore\"\n ]\n })}>\n <BannerFunctionDeclaration command={command} />\n <hbr />\n <hbr />\n <OptionsInterfaceDeclaration command={command} />\n <hbr />\n <hbr />\n <SingleLineComment>{code`Validate required options and arguments`}</SingleLineComment>\n <hbr />\n <CommandHandlerDeclaration command={command}>\n <CommandValidationLogic command={command} />\n </CommandHandlerDeclaration>\n </EntryFile>\n <For each={Object.values(command.children)}>\n {child => (\n <Show\n when={child.isVirtual}\n fallback={<CommandEntry command={child} />}>\n <VirtualCommandEntry command={child} />\n </Show>\n )}\n </For>\n </>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAkEA,SAAgBmC,kBAAkBC,OAAiC;CACjE,MAAM,EAAEC,YAAYD;AAEpB,QAAA;EAAAE,gBAEK9B,gBAAc;GACb+B,MAAI;GAAA,IACJC,cAAW;AAAA,WAAExC,IAAI,aAAaqC,QAAQI,SACnCC,KAAIC,YACHtB,qBAAqBsB,QAAQ,GACzB,MAAMjB,UAAUN,0BAA0BuB,QAAQ,CAAC,CAAA,KACnDA,QACL,CACAC,KAAK,IAAI,CAAA,iBAAkBP,QAAQI,SACnCC,KAAIC,YACHtB,qBAAqBsB,QAAQ,GACzBjB,UAAUN,0BAA0BuB,QAAQ,CAAC,GAC7C,IAAIA,QAAO,GAChB,CACAC,KAAK,KAAK,CAAA;;GAAK,CAAA;EAAAC,gBAAA,OAAA,EAAA,CAAA;EAAAA,gBAAA,OAAA,EAAA,CAAA;EAAAC,WAInB9C,IAAI;;;qDAG0C6B,WAC3CQ,QAAQE,KACT,CAAA,uBACCF,QAAQU,UAAUC,SAAS,IACvB,KAAKX,QAAQU,UACVL,KAAIO,aAAYvB,UAAUuB,SAASV,KAAK,CAAC,CACzCK,KAAK,KAAK,KACb,GAAE;;;QAIT;EAAAC,gBAAA,OAAA,EAAA,CAAA;EAAA;;;;;AAcP,SAAgBK,0BACdd,OACA;CACA,MAAM,EAAEC,SAASc,aAAaf;CAE9B,MAAMgB,UAAUzC,eAAoC;AAEpD,QAAA;EAAA2B,gBAEKpB,6BAA2B,EAAUmB,SAAO,CAAA;EAAAQ,gBAAA,OAAA,EAAA,CAAA;EAAAA,gBAAA,OAAA,EAAA,CAAA;EAAAP,gBAG5CzB,OAAK;GAAA,IACJwC,UAAO;AAAA,WAAE,OAAOhB,QAAQiB,MAAK,IAAKnC,UAAUiC,QAAQ,CAAA,GAAIf,QAAQI,SAC7DC,KAAIC,YACHtB,qBAAqBsB,QAAQ,GACzB,IAAIhB,aAAaP,0BAA0BuB,QAAQ,CAAC,CAAA,KACpDA,QACL,CACAC,KAAK,IAAI,CAAA;;GAAY,IAAAO,WAAA;AAAA,WAAA;KAAAb,gBACvBvB,cAAY,EAAA,IAAAoC,WAAA;AAAA,aAAE,GAAGd,QAAQkB,YAAYC,QAAQ,QAAQ,GAAG,CAAA;QAAG,CAAA;KAAAX,gBAAA,OAAA,EAAA,CAAA;KAAAP,gBAE3DtB,YAAU,EAAA,IAAAmC,WAAA;AAAA,aAAEd,QAAQiB;QAAK,CAAA;KAAAhB,gBACzBxB,YAAU;MAACyB,MAAI;MAAAY,UAAS;MAAmD,CAAA;KAAA;;GAAA,CAAA;EAAAb,gBAE7EhC,qBAAmB;GAAA,UAAA;GAElBmD,OAAK;GACLlB,MAAI;GACJmB,YAAY,CAAC;IAAEnB,MAAM;IAAQoB,MAAM;IAAYC,SAAS;IAAa,CAAC;GAAA,IAAAT,WAAA;AAAA,WAAA;KAAAb,gBACrErB,oBAAkB;MACRoB;MAAO,IAChBwB,YAAS;AAAA,cAAET,QAAQU,OAAOD;;MAAS,IACnCE,kBAAe;AAAA,cAAEX,QAAQU,OAAOC;;MAAe,CAAA;KAAAlB,gBAAA,OAAA,EAAA,CAAA;KAAAA,gBAAA,OAAA,EAAA,CAAA;KAIhD7C,IAAI;;KACM6C,gBAAA,OAAA,EAAA,CAAA;KAAAA,gBAAA,OAAA,EAAA,CAAA;KAAAP,gBAGV/B,aAAW;MAAA,IAACyD,YAAS;AAAA,cAAA1B,gBAAGL,SAAO,EAAA,CAAA;;MAAA,IAAAkB,WAAA;AAAA,cAC7BnD,IAAI;;;;;kCAKmBqC,QAAQI,SAC7BC,KAAIC,YACHtB,qBAAqBsB,QAAQ,GACzB,MAAMjB,UAAUN,0BAA0BuB,QAAQ,CAAC,CAAA,KACnDA,QACL,CACAC,KAAK,MAAM,CAAA,qBAAsBqB,OAAOC,OAAO7B,QAAQ8B,QAAQ,CAC/DzB,KACC0B,WACE,MAAMxC,UAAUwC,OAAO7B,KAAK,CAAA,eAAgBb,UAC1C0C,OAAO7B,KACR,CAAA,+CAAgDb,UAC/C0C,OAAO7B,KACR,CAAA,IACJ,CACAK,KAAK,MAAM,GACZP,QAAQU,UAAUC,SAAS,IACvB,wBAAwBX,QAAQU,UAC7BL,KACCO,aACE,MAAMrB,UAAUqB,SAASV,KAAK,CAAA,OAAQb,UACpCuB,SAASV,KACV,CAAA,uCAAwCb,UACvCuB,SAASV,KACV,CAAA,IACJ,CACAK,KAAK,MAAM,KACd,GAAE;;;MAEQ,CAAA;KAAAC,gBAAA,OAAA,EAAA,CAAA;KAAAA,gBAAA,OAAA,EAAA,CAAA;KAIjBM;KAAQN,gBAAA,OAAA,EAAA,CAAA;KAAAA,gBAAA,OAAA,EAAA,CAAA;KAAAP,gBAGR/B,aAAW;MAACyD,WAAWhE,IAAI;MAAc,IAAAmD,WAAA;AAAA,cAAAb,gBACvCN,aAAW,EAAUK,SAAO,CAAA;;MAAA,CAAA;KAAAC,gBAE9BlC,YAAU,EAAA,IAAA+C,WAAA;AAAA,aAAA,CAAAN,gBAAA,OAAA,EAAA,CAAA,EAAAP,gBAERH,mBAAiB,EAAUE,SAAO,CAAA,CAAA;QAAA,CAAA;KAAA;;GAAA,CAAA;EAAA;;;;;AAc7C,SAAgBgC,uBAAuBjC,OAAoC;CACzE,MAAM,EAAEC,YAAYD;AAEpB,QAAA;EAAAE,gBAEK9B,gBAAc;GAAC+B,MAAI;GAAYoB,MAAI;GAAYnB,aAAaxC,IAAI;GAAK,CAAA;EAAA6C,gBAAA,OAAA,EAAA,CAAA;EAAAP,gBAErEpC,KAAG;GAAA,IAACoE,OAAI;AAAA,WAAEL,OAAOC,OAAO7B,QAAQ8B,WAAW,EAAE,CAAC;;GAAEI,gBAAc;GAAApB,WAC5DiB,WAAM,CAAA9B,gBAEFnC,MAAI;IAAA,IAACqE,OAAI;AAAA,YAAE,CAACJ,OAAOK;;IAAQ,IAAAtB,WAAA;AAAA,YAAA,CAAAb,gBACzB/B,aAAW;MAAA,IACVyD,YAAS;AAAA,cAAEhE,IAAI,WACboE,OAAO7B,KAAKmC,SAAS,IAAI,GACrB,KAAKN,OAAO7B,KAAI,MAChB,IAAIb,UAAU0C,OAAO7B,KAAK;;MAC9B,IAAAY,WAAA;AAAA,cACDnD,IAAI,sCAAsCoE,OAAO7B,KAAI;;MAAe,CAAA,EAAAD,gBAEtEnC,MAAI;MAAA,IACHqE,OAAI;AAAA,eACDJ,OAAOO,SAASlE,eAAemE,UAC9BR,OAAOO,SAASlE,eAAeoE,WACjCT,OAAOU;;MAAQ,IAAA3B,WAAA;AAAA,cAAAb,gBAEhBjC,cAAY;QAAA,IACX2D,YAAS;AAAA,gBAAEhE,IAAI,UACboE,OAAO7B,KAAKmC,SAAS,IAAI,GACrB,KAAKN,OAAO7B,KAAI,MAChB,IAAIb,UAAU0C,OAAO7B,KAAK,GAAE;;QACnB,IAAAY,WAAA;AAAA,gBACdnD,IAAI,6DACHoE,OAAO7B,KAAI;;QACQ,CAAA;;MAAA,CAAA,CAAA;;IAAA,CAAA,EAAAD,gBAI1BnC,MAAI;IAAA,IAACqE,OAAI;AAAA,YAAEJ,OAAOO,SAASlE,eAAeoE;;IAAM,IAAA1B,WAAA;AAAA,YAAAb,gBAC9CnC,MAAI;MAAA,IACHqE,OAAI;AAAA,cAAGJ,OAA+BU;;MAAQ,IAC9CC,WAAQ;AAAA,cAAAzC,gBACL/B,aAAW;QAAA,IACVyD,YAAS;AAAA,gBAAEhE,IAAI,UACboE,OAAO7B,KAAKmC,SAAS,IAAI,GACrB,KAAKN,OAAO7B,KAAI,MAChB,IAAIb,UAAU0C,OAAO7B,KAAK,GAAE,0BAEhC6B,OAAO7B,KAAKmC,SAAS,IAAI,GACrB,KAAKN,OAAO7B,KAAI,MAChB,IAAIb,UAAU0C,OAAO7B,KAAK,GAAE;;QAC/B,IAAAY,WAAA;AAAA,gBACFnD,IAAI,4DACHoE,OAAO7B,KAAI;;QACE,CAAA;;MAAA,IAAAY,WAAA;AAAA,cAAAb,gBAGlB/B,aAAW;QAAA,IACVyD,YAAS;AAAA,gBAAEhE,IAAI,UACboE,OAAO7B,KAAKmC,SAAS,IAAI,GACrB,KAAKN,OAAO7B,KAAI,MAChB,IAAIb,UAAU0C,OAAO7B,KAAK,GAAE;;QACG,IAAAY,WAAA;AAAA,gBACpCnD,IAAI,2DACHoE,OAAO7B,KAAI;;QACQ,CAAA;;MAAA,CAAA;;IAAA,CAAA,CAAA;GAK9B,CAAA;EAAAM,gBAAA,OAAA,EAAA,CAAA;EAAAA,gBAAA,OAAA,EAAA,CAAA;EAAAP,gBAIFpC,KAAG;GAAA,IAACoE,OAAI;AAAA,WAAEjC,QAAQU;;GAAWwB,gBAAc;GAAApB,WACzCF,aAAQ,CAAAX,gBAEJnC,MAAI;IAAA,IAACqE,OAAI;AAAA,YAAE,CAACvB,SAASwB;;IAAQ,IAAAtB,WAAA;AAAA,YAAA,CAAAb,gBAC3B/B,aAAW;MAAA,IAACyD,YAAS;AAAA,cAAEhE,IAAI,IAAI0B,UAAUuB,SAASV,KAAK;;MAAE,IAAAY,WAAA;AAAA,cACvDnD,IAAI,sCACHiD,SAASV,KAAI;;MACa,CAAA,EAAAD,gBAE7BnC,MAAI;MAAA,IACHqE,OAAI;AAAA,eACDvB,SAAS0B,SAASlE,eAAemE,UAChC3B,SAAS0B,SAASlE,eAAeoE,WACnC5B,SAAS6B;;MAAQ,IAAA3B,WAAA;AAAA,cAAAb,gBAElBjC,cAAY;QAAA,IACX2D,YAAS;AAAA,gBAAEhE,IAAI,GAAG0B,UAAUuB,SAASV,KAAK,CAAA;;QAAe,IAAAY,WAAA;AAAA,gBACxDnD,IAAI,6DACHiD,SAASV,KAAI;;QACmB,CAAA;;MAAA,CAAA,CAAA;;IAAA,CAAA,EAAAD,gBAIvCnC,MAAI;IAAA,IAACqE,OAAI;AAAA,YAAEvB,SAAS0B,SAASlE,eAAeoE;;IAAM,IAAA1B,WAAA;AAAA,YAAAb,gBAChDnC,MAAI;MAAA,IACHqE,OAAI;AAAA,cAAGvB,SAAmC6B;;MAAQ,IAClDC,WAAQ;AAAA,cAAAzC,gBACL/B,aAAW;QAAA,IACVyD,YAAS;AAAA,gBAAEhE,IAAI,GAAG0B,UAChBuB,SAASV,KACV,CAAA,mBAAoBb,UAAUuB,SAASV,KAAK,CAAA;;QAAG,IAAAY,WAAA;AAAA,gBAC/CnD,IAAI,4DACHiD,SAASV,KAAI;;QACa,CAAA;;MAAA,IAAAY,WAAA;AAAA,cAAAb,gBAG/B/B,aAAW;QAAA,IACVyD,YAAS;AAAA,gBAAEhE,IAAI,GAAG0B,UAAUuB,SAASV,KAAK,CAAA;;QAAqC,IAAAY,WAAA;AAAA,gBAC9EnD,IAAI,2DACHiD,SAASV,KAAI;;QACmB,CAAA;;MAAA,CAAA;;IAAA,CAAA,CAAA;GAK3C,CAAA;EAAAD,gBAEF/B,aAAW;GAACyD,WAAWhE,IAAI;GAAqBmD,UAC9CnD,IAAI;;GACiB,CAAA;EAAA;;;;;AAgB9B,SAAgBgF,aAAa5C,OAA0B;CACrD,MAAM,EAAEC,SAAS4C,SAASC,gBAAgB,GAAGC,SAAS/C;CAEtD,MAAMgB,UAAUzC,eAAoC;CACpD,MAAMyE,WAAWnF,eACfuB,UACEa,QAAQI,SACL4C,QAAO1C,YAAW,CAACtB,qBAAqBsB,QAAQ,CAAC,CACjDC,KAAK,IAAI,EACZ,WAEJ,CAAC;CACD,MAAM0C,oBAAoBrF,eACxBwB,iBACEF,aACEC,UAAU4B,QAAQmC,WAAWjE,aAAa8D,SAASI,MAAM,CAAC,EAC1DnD,QAAQoD,MAAMC,OAAOC,QAAQtD,QAAQoD,MAAME,KAE/C,CACF,CAAC;CACD,MAAMC,iBAAiB3F,gBAAgB;EACrC,GAAGoC,QAAQoD;EACXI,QAAQxD,QAAQyD;EACjB,EAAE;AAEH,QAAA,CAAAxD,gBAEK1B,WAASmF,WACJZ,MAAI;EAAA,IACRa,OAAI;AAAA,UAAEZ,SAASI;;EAAK,IACpBI,iBAAc;AAAA,UAAEA,eAAeJ;;EAAK,IACpCP,UAAO;AAAA,UAAEnD,KAAKmD,WAAW,EAAE,EAAE,GAC1BK,kBAAkBE,QAAQ,SAAS3D,WAAWQ,QAAQE,KAAK,IAC7D,CAAC;;EAAA,IACF2C,iBAAc;AAAA,UAAEpD,KAAKoD,kBAAkB,EAAE,EAAE;IACzCe,KAAK;KAAC;KAAO;KAAQ;KAAiB;KAAU;IAChDC,SAAS;KACP;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACD;IACDC,OAAO;KACL;KACA;KACA;KACA;KACA;KAA8B;IAEjC,CAAC;;EAAA,IAAAhD,WAAA;AAAA,UAAA;IAAAb,gBACDP,2BAAyB,EAAUM,SAAO,CAAA;IAAAQ,gBAAA,OAAA,EAAA,CAAA;IAAAA,gBAAA,OAAA,EAAA,CAAA;IAAAP,gBAG1CpB,6BAA2B,EAAUmB,SAAO,CAAA;IAAAQ,gBAAA,OAAA,EAAA,CAAA;IAAAA,gBAAA,OAAA,EAAA,CAAA;IAAAP,gBAG5C5B,mBAAiB,EAAAyC,UAAEnD,IAAI,2CAAyC,CAAA;IAAA6C,gBAAA,OAAA,EAAA,CAAA;IAAAP,gBAEhEY,2BAAyB;KAAUb;KAAO,IAAAc,WAAA;AAAA,aAAAb,gBACxC+B,wBAAsB,EAAUhC,SAAO,CAAA;;KAAA,CAAA;IAAA;;EAAA,CAAA,CAAA,EAAAC,gBAG3CpC,KAAG;EAAA,IAACoE,OAAI;AAAA,UAAEL,OAAOC,OAAO7B,QAAQc,SAAS;;EAAAA,WACvCiD,UAAK9D,gBACHnC,MAAI;GAAA,IACHqE,OAAI;AAAA,WAAE4B,MAAMC;;GAAS,IACrBtB,WAAQ;AAAA,WAAAzC,gBAAG0C,cAAY,EAAC3C,SAAS+D,OAAK,CAAA;;GAAA,IAAAjD,WAAA;AAAA,WAAAb,gBACrCJ,qBAAmB,EAACG,SAAS+D,OAAK,CAAA;;GAAA,CAAA;EAEtC,CAAA,CAAA"}
|
|
@@ -5,6 +5,7 @@ let __alloy_js_core_jsx_runtime = require("@alloy-js/core/jsx-runtime");
|
|
|
5
5
|
let __alloy_js_core = require("@alloy-js/core");
|
|
6
6
|
let __alloy_js_typescript = require("@alloy-js/typescript");
|
|
7
7
|
let __powerlines_plugin_alloy_typescript_components_tsdoc = require("@powerlines/plugin-alloy/typescript/components/tsdoc");
|
|
8
|
+
let defu = require("defu");
|
|
8
9
|
let __powerlines_deepkit_vendor_type = require("@powerlines/deepkit/vendor/type");
|
|
9
10
|
let __powerlines_plugin_alloy_typescript_components_builtin_file = require("@powerlines/plugin-alloy/typescript/components/builtin-file");
|
|
10
11
|
let __stryke_string_format_vowels = require("@stryke/string-format/vowels");
|
|
@@ -2094,28 +2095,33 @@ cells.forEach((row, rowIndex) => {
|
|
|
2094
2095
|
/**
|
|
2095
2096
|
* A built-in console utilities module for Shell Shock.
|
|
2096
2097
|
*/
|
|
2097
|
-
function ConsoleBuiltin() {
|
|
2098
|
+
function ConsoleBuiltin(props) {
|
|
2099
|
+
const { children, imports, builtinImports } = props;
|
|
2098
2100
|
return (0, __alloy_js_core_jsx_runtime.createComponent)(__powerlines_plugin_alloy_typescript_components_builtin_file.BuiltinFile, {
|
|
2099
2101
|
id: "console",
|
|
2100
2102
|
description: "A collection of helper utilities to assist in generating content meant for display in the console.",
|
|
2101
|
-
imports
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2103
|
+
get imports() {
|
|
2104
|
+
return (0, defu.defu)(imports, { "@shell-shock/plugin-theme/types/theme": [{
|
|
2105
|
+
name: "ThemeColorsResolvedConfig",
|
|
2106
|
+
type: true
|
|
2107
|
+
}] });
|
|
2108
|
+
},
|
|
2109
|
+
get builtinImports() {
|
|
2110
|
+
return (0, defu.defu)(builtinImports, {
|
|
2111
|
+
utils: [
|
|
2112
|
+
"hasFlag",
|
|
2113
|
+
"isMinimal",
|
|
2114
|
+
"isColorSupported",
|
|
2115
|
+
"colorSupportLevels",
|
|
2116
|
+
"isHyperlinkSupported"
|
|
2117
|
+
],
|
|
2118
|
+
env: [
|
|
2119
|
+
"env",
|
|
2120
|
+
"isDevelopment",
|
|
2121
|
+
"isDebug",
|
|
2122
|
+
"isCI"
|
|
2123
|
+
]
|
|
2124
|
+
});
|
|
2119
2125
|
},
|
|
2120
2126
|
get children() {
|
|
2121
2127
|
return [
|
|
@@ -2249,6 +2255,9 @@ function ConsoleBuiltin() {
|
|
|
2249
2255
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
2250
2256
|
(0, __alloy_js_core_jsx_runtime.createComponent)(TableFunctionDeclaration, {}),
|
|
2251
2257
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
2258
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
2259
|
+
children,
|
|
2260
|
+
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {}),
|
|
2252
2261
|
(0, __alloy_js_core_jsx_runtime.createIntrinsic)("hbr", {})
|
|
2253
2262
|
];
|
|
2254
2263
|
}
|