Synesia data schema utilities: types, validation, and JSON Schema conversion
npm install synesia-data-schemavalidateData with precise messages and error paths.
generateDefaultData using enum, formats, min/max, etc.
toJSONSchema / fromJSONSchema.
bash
pnpm add synesia-data-schema
`
Quick Start
`ts
import { validateData, generateDefaultData } from "synesia-data-schema";
import { DataSchema } from "synesia-data-schema";
const userSchema: DataSchema = {
id: "user",
name: "User",
type: "object",
required: true,
schema: [
{
id: "email",
name: "email",
type: "text",
required: true,
format: "email",
},
{ id: "age", name: "age", type: "number", required: false, min: 0 },
{
id: "roles",
name: "roles",
type: "array",
required: false,
childSchema: { id: "role", name: "role", type: "text", required: true },
},
],
};
const defaults = generateDefaultData(userSchema, true);
const result = validateData({ email: "bad", age: -1 }, userSchema);
`
JSON Schema conversion
`ts
import { toJSONSchema, fromJSONSchema } from "synesia-data-schema";
const jsonSchema = toJSONSchema({
type: "object",
properties: {
title: { type: "string", format: "email" },
count: { type: "number", minimum: 0 },
},
required: ["title"],
});
`
`ts
const backToJsonSchema = fromJSONSchema({
id: "root",
name: "root",
type: "object",
schema: [
{
id: "title",
name: "title",
type: "text",
required: true,
format: "email",
},
{ id: "count", name: "count", type: "number", required: false, min: 0 },
],
});
`
API
- generateDefaultData(schema, includeOptional?) => unknown
- Generates default values based on defaultValue, enum, format, min/max/step.
- validateData(data, schema, strict?) => { isValid: boolean; errors: { message: string; path: string[] }[] }
- Recursively validates input and returns precise error paths.
- When strict=true, every field must be present even if required=false.
- toJSONSchema(json, name?) => DataSchema
- Converts a JSON Schema into a strongly typed DataSchema.
- fromJSONSchema(schema, strict?) => any
- Converts a DataSchema to JSON Schema. strict forces all object keys to be required.
Supported formats
email, uuid, date, time, datetime (mapped to date-time in JSON Schema). Patterns are backed by TEXT_VALIDATION_REGEX and covered by tests.
Types
Exposed types: DataSchema, TextDataSchema, NumberDataSchema, BooleanDataSchema, ArrayDataSchema, ObjectDataSchema, EmptyDataSchema, and InputEnum.
Tests & Quality
`bash
pnpm run test
pnpm run test:coverage
``