Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 47 additions & 64 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

81 changes: 81 additions & 0 deletions validate/number/README.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<!-- START_INFOCARD -->
# @flatfile/plugin-validate-number

The `@flatfile/plugin-validate-number` plugin provides comprehensive number validation capabilities for your data import processes. It offers a wide range of validation options to ensure that numeric data meets specific criteria before being accepted.

**Event Type:**
`listener.on('commit:created')`

<!-- END_INFOCARD -->

## Features

- Min/Max value validation
- Integer-only validation
- Precision and scale validation
- Currency formatting validation
- Step (increment) validation
- Special number type validation (prime, even, odd)
- Rounding and truncation options
- Customizable thousands separator and decimal point
- Inclusive/exclusive range validation

## Installation

To install the plugin, use npm:

```bash
npm install @flatfile/plugin-validate-number
```

## Example Usage

```javascript
import { FlatfileListener } from '@flatfile/listener';
import { validateNumber } from '@flatfile/plugin-validate-number';

const listener = new FlatfileListener();

listener.use(
validateNumber({
min: 0,
max: 1000,
inclusive: true,
integerOnly: true,
precision: 10,
scale: 2,
currency: true,
step: 5,
thousandsSeparator: ',',
decimalPoint: '.',
specialTypes: ['even'],
round: true
})
);
```

## Configuration

The `validateNumber` accepts a configuration object with the following options:

- `min`: Minimum allowed value
- `max`: Maximum allowed value
- `inclusive`: Whether the min/max range is inclusive
- `integerOnly`: Allow only integer values
- `precision`: Total number of digits allowed
- `scale`: Number of decimal places allowed
- `currency`: Validate as a currency value
- `step`: Increment value (e.g., multiples of 5)
- `thousandsSeparator`: Character used as thousands separator
- `decimalPoint`: Character used as decimal point
- `specialTypes`: Array of special number types to validate ('prime', 'even', 'odd')
- `round`: Round the number to the nearest integer
- `truncate`: Truncate the decimal part of the number

## Behavior

The plugin listens for the 'commit:created' event and performs validation on a specified number field (default field name is 'numberField'). It applies the configured validations and throws an error if any validation fails.

The plugin also handles number parsing, considering the specified thousands separator and decimal point. It can optionally round or truncate the number before applying validations.

If all validations pass, the plugin logs a success message. If any validation fails, it logs an error message and throws an error with a descriptive message about the validation failure.
16 changes: 16 additions & 0 deletions validate/number/jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
module.exports = {
testEnvironment: 'node',

transform: {
'^.+\\.tsx?$': 'ts-jest',
},
setupFiles: ['../../test/dotenv-config.js'],
setupFilesAfterEnv: [
'../../test/betterConsoleLog.js',
'../../test/unit.cleanup.js',
],
testTimeout: 60_000,
globalSetup: '../../test/setup-global.js',
forceExit: true,
passWithNoTests: true,
}
Loading