graphile-settings
Version:
graphile settings
21 lines (20 loc) • 639 B
JavaScript
export function safeInflection(fn, fallback) {
try {
return fn() ?? fallback;
}
catch {
return fallback;
}
}
export function createAttributeInflector(inflection) {
return (attrName, codec) => {
const attributeName = safeInflection(() => inflection._attributeName?.({ attributeName: attrName, codec }), attrName);
return safeInflection(() => inflection.camelCase?.(attributeName), attributeName);
};
}
export function fallbackTableType(codecName) {
return codecName
.replace(/_/g, ' ')
.replace(/\b\w/g, (char) => char.toUpperCase())
.replace(/ /g, '');
}