Skip to main content
Version: 5.x

Consuming External Rules with Enforce

Enforce is a versatile assertion library that provides a wide range of validation rules to ensure the validity of input data in your app. However, in some cases, you may need additional validation rules that are not included in Enforce's core library. This is where external rules come in.

The Need for External Rules

Enforce includes the most common rules needed for input validation and does not make assumptions about your business logic constraints. This is why it does not include certain validation rules such as isCurrency, which may be required for your app's validation needs.

Fortunately, there are numerous packages available, such as validator.js, that provide additional validation rules. validator.js is a popular and highly compatible package that can be used in conjunction with Enforce to add these rules to your app's validation.

Importing External Rules

Before you can use external rules with Enforce, you need to install and import the relevant packages. For example, to use the isCurrency and isMobilePhone rules from validator.js, you would install the package using npm:

npm i validator

Then, in your code, you can import the individual rules that you need:

import isCurrency from 'validator/es/lib/isCurrency';
import isMobilePhone from 'validator/es/lib/isMobilePhone';

Note that importing the entire validator.js package can increase your bundle size unnecessarily, so it is recommended to import only the individual rules that you need.

Adding External Rules to Enforce

Once you have imported the relevant external rules, you can add them to Enforce's library of validation rules using the enforce.extend method:

enforce.extend({ isCurrency, isMobilePhone });

This method takes an object that maps the rule name to the validation function. In this example, isCurrency and isMobilePhone are mapped to their respective validation functions.

Using External Rules with Enforce

After adding the external rules to Enforce, you can use them in your validation tests just like any other Enforce rule. Here's an example that uses the isCurrency rule to validate a currency address:

enforce('$').isCurrency(); // ✅
enforce('...').isCurrency(); // 🚨

In this example, the enforce function is called with a string value as input data. The isCurrency rule is then called to validate the currency.

A full list of the supported validator.js rules can be found on npmjs.com/package/validator.