create-eth
Version:
Create a Scaffold-ETH-2 app
30 lines (24 loc) • 994 B
JavaScript
import { inspect } from "util";
export const withDefaults =
(template, expectedArgsDefaults, debug = false) =>
(receivedArgs) => {
const argsWithDefault = Object.fromEntries(
Object.entries(expectedArgsDefaults)
.map(([argName, argDefault]) => [argName, receivedArgs[argName] ?? [argDefault]])
);
if (debug) {
console.log(argsWithDefault, expectedArgsDefaults, receivedArgs);
}
const expectedArgsNames = Object.keys(expectedArgsDefaults)
Object.keys(receivedArgs).forEach((receivedArgName) => {
if (!expectedArgsNames.includes(receivedArgName)) {
throw new Error(
`Templated received unexpected argument \`${receivedArgName}\`. Expecting only ${
expectedArgsNames.map(name => `\`${name}\``).join(", ")
}`
);
}
});
return template(argsWithDefault);
};
export const stringify = val => inspect(val, { depth: null, compact: true, maxArrayLength: null, maxStringLength: null })