3.0.3 • Published 2 years ago
typescript-decorator-validation v3.0.3
Table of Contents
Installation
- Install library dependency
npm install typescript-decorator-validation
- Allow experimental decorators configuration in your
tsconfig.json
. This removes IDE errors which could pop-up
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
/* ... */
}
}
- Add babel configuration to your
tsconfig.json
. This allows for type-safety checking
{
plugins: [
"babel-plugin-transform-typescript-metadata",
["@babel/plugin-proposal-decorators", { legacy: true }],
["@babel/plugin-proposal-class-properties", { loose: true }],
],
presets: ["@babel/preset-typescript"],
}
Contribute
- Open bash terminal
- Change directory to your desired position
- Clone the repository main branch
git clone https://github.com/brunotot/typescript-decorator-validation.git
- Checkout a new branch
git checkout -b "[issue-number]-[issue-description]"
- Commit and push changes
- Open pull request
Documentation
ValidationHandler
Method | Parameters | Returns | Description |
---|---|---|---|
constructor | clazz : Class\ | ValidationHandler\ | instantiates ValidationHandler class with the given decorated class to validate |
validationData | ValidationData\ | returns calculated validation data for given class through its metadata decorators | |
hasErrors | state : Object | boolean | returns true if state object has errors |
getErrors | state : Object | ErrorData | returns object error state from the calculated validation metadata for the given state object |
validate | state : Object | StateValidationResult | returns object state validation result from the calculated validation metadata for the given object state |
buildInstance | state : Object | T | returns instantiated class T which is used to construct ValidationHandler<T> |
Goals and TODOs
- Implement strict type checking
- Implement predefined decorator validators
- Write documentation
- Implement the logic so the library can be used easily in CI tests
- Implement tests for predefined decorator validators
- Write implementation libraries for popular front-end frameworks - x(https://github.com/brunotot/react-decorate-form) - Angular - Svelte - Vue - Solid
Examples
A basic TypeScript form can look something like
import { validators } from 'react-decorate-form';
export type UserFormFields = {
confirmPassword: string;
firstName: string;
lastName: string;
password: string;
url: string;
age: number;
};
export default class UserForm implements UserFormFields {
@validators.string.Size({ min: 5 })
@validators.string.NotEmpty()
firstName!: string;
@validators.string.NotEmpty()
lastName!: string;
@validators.string.NotEmpty()
@validators.string.Password()
password!: string;
confirmPassword!: string;
@validators.string.URL()
url!: string;
@validators.number.Range({ min: 18, max: 100 })
age!: number;
@validators.boolean.AssertTrue('Passwords must match')
get passwordsMatch(): boolean {
return this.password === this.confirmPassword;
}
}
And with some styling we can display the form which can look something like:
2.0.2
2 years ago
2.0.5
2 years ago
2.0.4
2 years ago
2.0.7
2 years ago
2.0.6
2 years ago
2.0.9
2 years ago
2.0.8
2 years ago
2.0.1
2 years ago
3.0.3
2 years ago
1.0.29
2 years ago
3.0.2
2 years ago
3.0.1
2 years ago
3.0.0
2 years ago
1.1.9
2 years ago
1.1.8
2 years ago
1.1.6
2 years ago
1.1.5
2 years ago
1.1.3
2 years ago
1.1.2
2 years ago
2.0.15
2 years ago
2.0.16
2 years ago
2.0.13
2 years ago
2.0.14
2 years ago
2.0.11
2 years ago
2.0.12
2 years ago
2.0.10
2 years ago
2.0.17
2 years ago
2.0.18
2 years ago
1.0.28
2 years ago
1.0.27
2 years ago
1.0.26
2 years ago
1.0.25
2 years ago
1.0.24
2 years ago
1.0.23
2 years ago
1.0.22
2 years ago
1.0.20
2 years ago
1.0.18
2 years ago
1.0.16
2 years ago
1.0.15
2 years ago
1.0.14
2 years ago
1.0.13
2 years ago
1.0.12
2 years ago
1.0.11
2 years ago
1.0.10
2 years ago
1.0.9
2 years ago
1.0.8
2 years ago
1.0.7
2 years ago
1.0.6
2 years ago
1.0.5
2 years ago
1.0.4
2 years ago
1.0.3
2 years ago
1.0.2
2 years ago
1.0.1
2 years ago