# TypeBuilder
TypeBuilder is a TypeScript-based library that implements the Builder design pattern, allowing for easy and flexible object creation with built-in validation using [Zod](https://github.com/colinhacks/zod). This library is useful for managing complex object configurations while ensuring that all properties meet specified validation criteria.
## Features
- **Builder Pattern**: Create complex objects step-by-step.
- **Validation**: Automatically validate properties using Zod schemas.
- **Type Safety**: Leverage TypeScript for type-safe code.
- **Flexibility**: Easily extendable to support new object types and schemas.
## Installation
To install TypeBuilder, use npm:
```bash
npm install @litpack/typebuilder
Or, if you prefer yarn:
yarn add @litpack/typebuilder
To create a new object using TypeBuilder, first define a Zod schema for the object:
import { createBuilder, z } from "@litpack/typebuilder";
// Define your Zod schema
const UserSchema = z.object({
id: z.string(),
name: z.string(),
age: z.number().int().positive(),
email: z.string().email(),
});
// Create a UserBuilder using the schema
const UserBuilder = createBuilder(UserSchema);
You can now use the builder to create a validated object:
try {
const user = UserBuilder
.setId("123e4567-e89b-12d3-a456-426614174000")
.setName("Alice")
.setAge(25)
.setEmail("alice@example.com")
.build();
console.log("User created:", user);
} catch (error) {
console.error("Validation error:", error);
}
The UserBuilder
automatically provides setter methods based on the Zod schema:
setId(value: string)
setName(value: string)
setAge(value: number)
setEmail(value: string)
Here’s a complete example of using TypeBuilder with a simple User object:
import { createBuilder, z } from "@litpack/typebuilder";
// Define the User schema
const UserSchema = z.object({
id: z.string(),
name: z.string(),
age: z.number().int().positive(),
email: z.string().email(),
});
// Create a UserBuilder
const UserBuilder = createBuilder(UserSchema);
// Build a User object
try {
const user = UserBuilder
.setId("123e4567-e89b-12d3-a456-426614174000")
.setName("Alice")
.setAge(25)
.setEmail("alice@example.com")
.build();
console.log("User created:", user);
} catch (error) {
console.error("Validation error:", error);
}
createBuilder(schema: ZodSchema)
: Function to create a builder based on the provided Zod schema.
Contributions are welcome! If you'd like to contribute, please fork the repository and submit a pull request.
- Fork the repository.
- Create your feature branch (
git checkout -b feature/YourFeature
). - Commit your changes (
git commit -m 'Add some feature'
). - Push to the branch (
git push origin feature/YourFeature
). - Open a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
Litpack
- Zod for providing a powerful validation library.
- TypeScript for enhancing JavaScript with static types.