@solutionspool/node-micro-contracts
v1.0.0
Published
Shared contracts and schemas for node-micro services
Maintainers
Readme
@node-micro/contracts
Centralized contracts and schemas for node-micro microservices communication.
Overview
This package provides Zod-based schemas for validating data contracts between microservices. It ensures type safety and consistent data structures across the auth-service and user-service.
Installation
npm install file:../../packages/contractsUsage
Basic Import
const {
UserRegistrationSchema,
UserLoginSchema,
UserRegisteredEventSchema,
JWTPayloadSchema,
} = require("@node-micro/contracts");Validation Example
// Validate registration data
const result = UserRegistrationSchema.safeParse(req.body);
if (!result.success) {
return res.status(400).json({
error: "Validation failed",
details: result.error.errors,
});
}
const validData = result.data;Event Validation
// Validate event data before publishing
const eventData = {
userId: user.id,
name: user.name,
email: user.email,
mobile: user.mobile,
role: user.role,
createdAt: user.createdAt,
};
const validated = UserRegisteredEventSchema.parse(eventData);
await messageQueue.publishEvent("users", "user.registered", validated);Available Schemas
User Schemas
UserRole- Enum for user roles (user, provider, admin)UserBaseSchema- Base user fieldsUserRegistrationSchema- User registration requestUserLoginSchema- User login requestUserProfileUpdateSchema- User profile updateUserResponseSchema- User response (without password)JWTPayloadSchema- JWT token payloadAuthResponseSchema- Auth response with token
Event Schemas
UserRegisteredEventSchema- User registration eventUserVerifiedEventSchema- User verification eventUserUpdatedEventSchema- User update eventUserDeletedEventSchema- User deletion event
Type Inference
Use Zod's type inference for TypeScript-like type safety:
const { z } = require("zod");
const { UserRegistrationSchema } = require("@node-micro/contracts");
// Infer the type
// type UserRegistration = z.infer<typeof UserRegistrationSchema>;License
ISC
