https://github.com/mattlean/checkpointjs
Data validation & transformation library
https://github.com/mattlean/checkpointjs
checkpointjs javascript library sanitization transformation typescript validation
Last synced: 8 months ago
JSON representation
Data validation & transformation library
- Host: GitHub
- URL: https://github.com/mattlean/checkpointjs
- Owner: mattlean
- License: mit
- Created: 2019-02-09T05:18:26.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-03T16:39:54.000Z (about 3 years ago)
- Last Synced: 2025-06-19T13:18:13.693Z (9 months ago)
- Topics: checkpointjs, javascript, library, sanitization, transformation, typescript, validation
- Language: TypeScript
- Homepage:
- Size: 1020 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
**THIS LIBRARY IS CURRENTLY UNSTABLE! USE AT YOUR OWN RISK!**
# Checkpoint.js
Validate and transform data.
## Setup
### Download
Install the [`checkpointjs` package](https://npmjs.com/package/checkpointjs) with a package manager like npm or Yarn.
You can also download and extract a release from here from the [Checkpoint.js GitHub repository releases page](https://github.com/IsaacLean/checkpointjs/releases).
### Using the Library
The library can be used in two different ways:
#### Direct Function Import
```javascript
import { validate } from 'checkpointjs'
const data = {
foo: 'bar',
123: 456
}
const result = validate(data, {
schema: {
foo: { isRequired: true, type: 'string' },
123: { type: 'number' }
},
type: 'object'
})
```
#### Checkpoint Instantiation
```javascript
import checkpoint from 'checkpointjs'
const data = {
foo: 'bar',
123: 456
}
const result = checkpoint(data).validate({
schema: {
foo: { isRequired: true, type: 'string' },
123: { type: 'number' }
},
type: 'object'
})
```
*Note: This library supports TypeScript. The source is completely written in it. Declaration files are included in the `dist/` folder.*
## API
### Validate
Validates the input data. Returns the results of the validation.
#### Functions
```javascript
// Direct Function Import
validate(data, rules)
// Checkpoint Instantiation
checkpoint(data).validate(rules)
```
#### Result
*TODO*
#### Schema
##### allowNull
- Description: Determines if a null value is allowed.
- Type: `boolean`
- Default: `false`
```javascript
// Primitive
const primitiveData = null
const primitiveValidationResult = validate(primitiveData, {
schema: { allowNull: true },
type: 'primitive'
})
console.log(primitiveValidationResult.pass) // true
// Object
const objectData = { foo: null }
const objectValidationResult = validate(objectData, {
schema: {
foo: { allowNull: true }
},
type: 'object'
})
console.log(objectValidationResult.pass) // true
// Array of primitives
const primitiveArrayData = [null, null]
const primitiveArrayValidationResult = validate(primitiveArrayData, {
schema: { allowNull: true },
type: 'array',
arrayType: 'primitive'
})
console.log(primitiveArrayValidationResult.pass) // true
// Array of objects
const objectArrayData = [
{ foo: null },
{ foo: null }
]
const objectArrayValidationResult = validate(objectArrayData, {
schema: { allowNull: true },
type: 'array',
arrayType: 'object'
})
console.log(objectArrayValidationResult.pass) // true
```
##### isRequired
- Description: Determines if the value is required.
- Type: `boolean`
- Default: `false`
```javascript
// Primitive
const primitiveData = 123
const primitiveValidationResult = validate(primitiveData, {
schema: { isRequired: true },
type: 'primitive'
})
console.log(primitiveValidationResult.pass) // true
// Object
const objectData = { foo: 123 }
const objectValidationResult = validate(objectData, {
schema: {
foo: { isRequired: true }
},
type: 'object'
})
console.log(objectValidationResult.pass) // true
// Array of primitives
const primitiveArrayData = [123, 456]
const primitiveArrayValidationResult = validate(primitiveArrayData, {
schema: { isRequired: true },
type: 'array',
arrayType: 'primitive'
})
console.log(primitiveArrayValidationResult.pass) // true
// Array of objects
const objectArrayData = [
{ foo: 123 },
{ foo: 456 }
]
const objectArrayValidationResult = validate(objectArrayData, {
schema: { isRequired: true },
type: 'array',
arrayType: 'object'
})
console.log(objectArrayValidationResult.pass) // true
```
##### stringValidation
*TODO*
##### type
- Description: Requires a matching type for the value.
- Type: `string`
```javascript
// Primitive
const primitiveData = 'foo'
const primitiveValidationResult = validate(primitiveData, {
schema: { type: 'string' },
type: 'primitive'
})
console.log(primitiveValidationResult.pass) // true
// Object
const objectData = { foo: 123 }
const objectValidationResult = validate(objectData, {
schema: {
foo: { type: 'number' }
},
type: 'object'
})
console.log(objectValidationResult.pass) // true
// Array of primitives
const primitiveArrayData = [true, false]
const primitiveArrayValidationResult = validate(primitiveArrayData, {
schema: { type: 'boolean' },
type: 'array',
arrayType: 'primitive'
})
console.log(primitiveArrayValidationResult.pass) // true
// Array of objects
const objectArrayData = [
{ foo: 'bar' },
{ foo: 'baz' }
]
const objectArrayValidationResult = validate(objectArrayData, {
schema: { type: 'string' },
type: 'array',
arrayType: 'object'
})
console.log(objectArrayValidationResult.pass) // true
```
#### Options
##### exitASAP
*TODO*
##### requireMode
*TODO*
### Transform
Transforms and mutates the input data. Returns the transformed data.
#### Functions
```javascript
// Direct Function Import
transform(data, commands)
// Checkpoint Instantiation
checkpoint(data).transform(commands)
```
#### Commands
##### clean
- Description: Removes undefined values.
```javascript
// Object
const objectData = { a: 123, b: undefined, c: 456, d: 789, e: undefined }
transform(objectData, 'clean')
console.log(objectData) // { a: 123, c: 456, d: 789 }
```
##### replace
- Description: Replaces values with another value.
```javascript
// Object
const objectData = { a: 123, b: 456, c: 789 }
transform(objectData, { name: 'replace', options: [456, 'xyz'] })
console.log(objectData) // { a: 123, c: 'xyz', d: 789 }
```
##### trim
- Description: Trims whitespace from strings.
```javascript
// Object
const objectData = { a: 'hey ', b: ' ho', c: ' let\'s go ' }
transform(objectData, 'trim')
console.log(objectData) // { a: 'hey', c: 'ho', d: 'let\'s go' }
```
### Checkpoint
*TODO*
## License
This open source project is licensed under the [MIT License](https://github.com/IsaacLean/checkpointjs/blob/master/LICENSE).