npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@flatfile/plugin-validate-string

v0.2.0

Published

A Flatfile plugin for string configuration and validation

Downloads

204

Readme

The @flatfile/plugin-validate-string plugin for string configuration and validation. This plugin combines multiple string validations in a single configuration, including regex pattern matching, length validation, case sensitivity, trimming options, and custom transformations.

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

Features

  • Regular expression pattern matching
  • Length validation (min, max, exact)
  • Case type enforcement (lowercase, uppercase, titlecase)
  • Whitespace trimming (leading, trailing)
  • Custom transformation functions
  • Configurable error messages
  • Common regex patterns for email, phone, and URL validation
  • Empty string handling

Installation

To install the plugin, use npm:

npm install @flatfile/plugin-validate-string

Example Usage

import { FlatfileListener } from '@flatfile/listener';
import { validateString } from '@flatfile/plugin-validate-string';

const listener = new FlatfileListener();

const stringConfig = {
  fields: ['name'],
  minLength: 2,
  maxLength: 50,
  caseType: 'titlecase',
  errorMessages: {
    length: 'Name must be between 2 and 50 characters',
    case: 'Name must be in Title Case',
  },
  
};

listener.use(validateString(stringConfig));

Pattern usage:

const config = {
  fields: ['email'],
  pattern: 'email' // Uses predefined email pattern
};

// Or with a custom pattern:
const customConfig = {
  fields: ['customField'],
  pattern: /^[A-Z]{3}-\d{2}$/ // Custom pattern for format like 'ABC-12'
};

Configuration

The validateString accepts a StringValidationConfig object with the following properties:

  • fields: string[] - Fields to validate
  • sheetSlug: string - Sheet slug to validate (defaults to '**' all sheets)
  • pattern: RegExp - A regular expression pattern to match against
  • pattern: keyof typeof commonRegexPatterns | RegExp - A regular expression pattern to match against. You can use one of the predefined patterns ('email', 'phone', 'url') or provide a custom RegExp. The predefined patterns are:
    • email: Validates email addresses
    • phone: Validates phone numbers (10-14 digits, optional '+' prefix)
    • url: Validates URLs (with or without protocol)
  • minLength: number - Minimum length of the string
  • maxLength: number - Maximum length of the string
  • exactLength: number - Exact required length of the string
  • caseType: 'lowercase' | 'uppercase' | 'titlecase' - Enforces specific case type
  • trim: { leading?: boolean, trailing?: boolean } - Trims whitespace
  • emptyStringAllowed: boolean - Whether empty strings are allowed
  • errorMessages: Object with custom error messages for different validations

Behavior

The plugin processes each record in the Flatfile import, applying the configured validations to the specified fields. If a validation fails, an error is added to the record for that field. If a custom transformation is specified and all validations pass, the transformed value is set for the field.

The plugin uses the recordHook to process individual records, allowing for efficient and flexible validation and transformation of string fields during the import process.