@nzod/dto v1.0.1
Before you start
The README on main branch may contain some unreleased changes.
Go to release/latest branch to see the actual README for the latest version from NPM.
Navigation
Installation
NPM:
npm install @nzod/dtoYarn:
yarn add @nzod/dtoUsage
Creating DTO from N'Zod schema
import { z } from '@nzod/z'
import { createNZodDto } from '@nzod/dto'
const CredentialsSchema = z.schema({
  username: z.string(),
  password: z.string(),
})
// class is required for using DTO as a type
class CredentialsDto extends createNZodDto(CredentialsSchema) {}Validate data using DTO
// The value will be validated and parsed using CredentialsSchema
const value = 'Something possibly invalid'
const credentials = CredentialsDto.create(value)@nzod/nestjs
The many functions from @nzod/nestjs accept DTOs.
You can learn more on @nzod/nestjs README page
Contributing
- Fork this repo
 - Use the Regular flow
 
Please follow Conventions
Maintenance
The dev branch is main - any developer changes is merged in there.
Also, there is a release/latest branch. It always contains the actual source code for release published with latest tag.
All changes is made using Pull Requests - push is forbidden. PR can be merged only after successfull test-and-build workflow checks.
When PR is merged, release-drafter workflow creates/updates a draft release. The changelog is built from the merged branch scope (feat, fix, etc) and PR title. When release is ready - we publish the draft.
Then, the release workflow handles everything:
- It runs tests, builds a package, and publishes it
 - It synchronizes released tag with 
release/latestbranch 
Regular flow
- Create feature branch
 - Make changes in your feature branch and commit
 - Create a Pull Request from your feature branch to 
main
The PR is needed to test the code before pushing to release branch - If your PR contains breaking changes, don't forget to put a 
BREAKING CHANGESlabel - Merge the PR in 
main - All done! Now you have a drafted release - just publish it when ready
 
Prerelease flow
- Assume your prerelease tag is 
beta - Create 
release/betabranch - Create feature branch
 - Make changes in your feature branch and commit
 - Create a Pull Request from your feature branch to 
release/beta
The PR is needed to test the code before pushing to release branch - Create Github release with tag like 
v1.0.0-beta, pointing torelease/betabranch
For nextbetaversions use semver build syntax:v1.0.0-beta+1 - After that, the 
releaseworkflow will publish your package with thebetatag - When the 
betaversion is ready to becomelatest- create a Pull Request fromrelease/betatomainbranch - Continue from the Regular flow's #5 step
 
Conventions
Feature branches:
- Should start with 
feat/,fix/,docs/,refactor/, and etc., depending on the changes you want to propose (see pr-labeler.yml for a full list of scopes) 
Commits:
- Should follow the Conventional Commits specification
 - You can find supported types and scopes into 
.cz-config.js 
Pull requests:
- Should have human-readable name, for example: "Add a TODO list feature"
 - Should describe changes
 - Should have correct labels (handled by PR Labeler in most cases)