@sprucelabs/schema
Version:
Static and dynamic binding plus runtime validation and transformation to ensure your app is sound. 🤓
14 lines (13 loc) • 505 B
JavaScript
import { fieldClassMap } from '../fields/index.js';
export default class FieldFactory {
/** Factory for creating a new field from a definition */
static Field(name, definition) {
const fieldClass = fieldClassMap[definition.type];
if (!fieldClass) {
throw new Error(`Failed to find schema field by type "${definition.type}" for field named ${name}.`);
}
// @ts-ignore
const field = new fieldClass(name, definition);
return field;
}
}