schemy-ts
TypeScript icon, indicating that this package has built-in type declarations

1.6.2 • Public • Published

Docs 📖 · Plugins 🧩 · Changelog 📝 · Donate 💰

Schemy is an extremely simple, lightweight yet powerful schema validation library. Perfect for lightweight-oriented projects like cloud functions where size and speed are key features. It weights less than 18 KB!

  • This is the TypeScript version of Schemy.

Missing features

All features are shared with the main version, except for the short-style declaration:

// This is not available :(
const schema = new Schemy({
    name: String
});

// You need to declare it like this
const schema = new Schemy({
    name: { type: String }
});

Unique features

Available only in the TS version

// Schemy needs to be imported this way
import { Schemy } from 'schemy-ts';

// For the following examples we are using the following type
type User = {
    name: string;
    age: number;
};

Create typed schema

Use this to make sure you declare all the properties in the schema for your Type:

// This will give an error because `age` is defined in the type but not in the schema
const UserSchema = Schemy.schema<User>({
    name: { type: String }
});

Create strict typed schema

This is just the same as the typed schema but the resulting Schemy instance will be strict.

// You can also do this to make the schema strict
const UserSchema = Schemy.strict<User>({
    name: { type: String }
});

Validate and return typed body

You can validate and return the body with the specified type. This works extremely well with VS Code intellisense.

const user: User = await Schemy.validate<User>({ name: 'schemy' });

Return typed body

This is similar to the previous example, but in this case you are not validating. You're just returning the last validated input.

const user: User = Schemy.getBody<User>();

And more...

To see all the features, please visit the Schemy wiki.

Package Sidebar

Install

npm i schemy-ts

Weekly Downloads

116

Version

1.6.2

License

MIT

Unpacked Size

24.7 kB

Total Files

6

Last publish

Collaborators

  • aeberdinelli