@kyve/sdk-beta
Version:
<p align="center"> <a href="https://kyve.network"> <img src="https://user-images.githubusercontent.com/62398724/137493477-63868209-a19b-4efa-9413-f06d41197d6d.png" style="border-radius: 50%" height="96"> </a> <h3 align="center"><code>@kyve/sdk</
53 lines (48 loc) • 1.36 kB
text/typescript
// optionally pass argument to schema generator
import * as TJS from "typescript-json-schema";
import { Definition } from "typescript-json-schema";
import { ErrorObject } from "ajv/lib/types";
import { JsonSchemaGenerator } from "typescript-json-schema/typescript-json-schema";
import AJV from "ajv";
const settings: TJS.PartialArgs = {
required: true,
noExtraProps: true,
esModuleInterop: true,
};
// optionally pass ts compiler options
const compilerOptions: TJS.CompilerOptions = {
strictNullChecks: false,
additionalProperties: false,
esModuleInterop: true,
};
export function createValidator(pathToTypes: string[]) {
const program = TJS.getProgramFromFiles(pathToTypes, compilerOptions);
const typeQuerySchemas = TJS.buildGenerator(
program,
settings
) as unknown as JsonSchemaGenerator;
const ajv = new AJV({ strict: true });
if (!typeQuerySchemas) {
throw new Error("Can't find query type to generate JSON schema ");
}
function validate(
schema: Definition,
data: any
): { valid: boolean; errors: ErrorObject[] | null } {
const validate = ajv.compile(schema);
validate(data);
if (validate.errors)
return {
valid: false,
errors: validate.errors,
};
return {
valid: true,
errors: null,
};
}
return {
typeQuerySchemas,
validate,
};
}