xchange-create
Version:
Create Xchange Project
26 lines (22 loc) • 838 B
JavaScript
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);
};