5.1.2 • Published 10 months ago

safe-data v5.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

safe-data

safe-data is a simple library for data validation and parsing.

Installation

npm install --save safe-data

Basic usage

import { validator } from 'safe-data';

enum Priority {
  low = 'low',
  medium = 'medium',
  high = 'high',
};

type Task = {
  name: string;
  note: string;
  tags: string[];
  priority: Priority;
  completed?: boolean;
  completedAt?: Date | null;
};

const taskValidator = validator.shape<Task>({
  name: validator.string().notEmpty({ ignoreWhitespace: true }),
  note: validator.string(),
  tags: validator.array(validator.string().pattern(/^#[a-z]+/i)),
  priority: validator.enum(Priority),
  completed: validator.boolean().optional(),
  completedAt: validator.date().optionalOrNullable(),
});

// Use the task validator to validate data.
// E.g. check HTML form data...
const form = document.getElementById('task-form');
const formData = new FormData(form);
const result = taskValidator.validate({
  name: formData.get('name'),
  note: formData.get('note'),
  tags: formData.get('tags'),
  priority: formData.get('priority'),
});
if (result.ok) {
  saveTask(result.value);
} else {
  console.warn('Invalid task data:', result.error);
}

// ...or a server response.
fetchTask()
  .then((res) => taskValidator.parse(res))
  .catch((error) => console.error(error));

Optional and null values

All validators are required by default. However, you can use:

  • optional() method to accept undefined,
  • nullable() method to accept null,
  • optionalOrNullable() method to accept undefined and null.
5.1.2

10 months ago

5.1.1

1 year ago

5.1.0

1 year ago

5.0.0

1 year ago

4.0.1

2 years ago

4.0.0

2 years ago

3.2.1

2 years ago

3.2.0

2 years ago

3.1.1

2 years ago

3.1.0

2 years ago

3.0.0

2 years ago

2.2.0

2 years ago

2.1.1

2 years ago

2.1.0

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.3.0

2 years ago

1.2.0

2 years ago

1.1.0

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

1.0.0

2 years ago