| const toArray = (value) => (Array.isArray(value) ? value : [value]); | |
| const unparseOption = (name, value) => { | |
| if (value === false) { | |
| return [`--no-${name}`]; | |
| } | |
| if (value === true) { | |
| return [`--${name}`]; | |
| } | |
| if (value == null) { | |
| return []; | |
| } | |
| if (Array.isArray(value)) { | |
| return value.flatMap((item) => unparseOption(name, item)); | |
| } | |
| if (typeof value === "object") { | |
| return Object.entries(value).flatMap(([key, item]) => | |
| unparseOption(`${name}.${key}`, item), | |
| ); | |
| } | |
| if (name.includes(".")) { | |
| return [`--${name}=${String(value)}`]; | |
| } | |
| return [`--${name}`, String(value)]; | |
| }; | |
| const unparseMochaArgs = (opts) => { | |
| const positionals = opts._ == null ? [] : toArray(opts._).map(String); | |
| const options = Object.entries(opts).flatMap(([name, value]) => | |
| name === "_" ? [] : unparseOption(name, value), | |
| ); | |
| return positionals.concat(options); | |
| }; | |
| const unparseNodeFlags = (opts) => { | |
| return Object.entries(opts).flatMap(([name, value]) => { | |
| if (value === true) { | |
| return [`--${name}`]; | |
| } | |
| if (value === false || value == null) { | |
| return []; | |
| } | |
| return toArray(value).map((item) => `--${name}=${item}`); | |
| }); | |
| }; | |
| export { unparseMochaArgs, unparseNodeFlags }; |