@respeecher/respeecher-js
Version:
[](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Frespeecher%2Frespeecher-js) [ • 741 B
JavaScript
import { getSchemaUtils } from "../schema-utils/index.mjs";
export function lazy(getter) {
const baseSchema = constructLazyBaseSchema(getter);
return Object.assign(Object.assign({}, baseSchema), getSchemaUtils(baseSchema));
}
export function constructLazyBaseSchema(getter) {
return {
parse: (raw, opts) => getMemoizedSchema(getter).parse(raw, opts),
json: (parsed, opts) => getMemoizedSchema(getter).json(parsed, opts),
getType: () => getMemoizedSchema(getter).getType(),
};
}
export function getMemoizedSchema(getter) {
const castedGetter = getter;
if (castedGetter.__zurg_memoized == null) {
castedGetter.__zurg_memoized = getter();
}
return castedGetter.__zurg_memoized;
}