https://github.com/mattlean/checkpointjs
Data validation & transformation library
https://github.com/mattlean/checkpointjs
checkpointjs javascript library sanitization transformation typescript validation
Last synced: 22 days 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 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-03T16:39:54.000Z (over 2 years ago)
- Last Synced: 2025-03-15T10:04:31.578Z (about 1 month 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).