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

parsa

v0.0.12

Published

Parsa ya data! An all purpose module to parse, sanitize, extract and validate data.

Downloads

36

Readme

parsa

parsa is an all purpose module which can parse, validate, extract and more!

  • Parse a date string (with known format) into a Javascript Date Object
  • Validate an Object against a schema, including: required, min/max length, numerical, string, array and many more
  • Validates IPv4 and IPv6 (true/false)
  • Parses a URL query string into an Object
  • Parses a URL into an Object with Host, Path, Hash, Protocol etc
  • Validates whether a string URL is valid
  • Validates Email address (true/false)
  • Extracts numbers and decimals from string
  • Extracts words from string
  • Extracts phone numbers from string
  • Removes Alpha characters from string
  • Removes numeric characters from string
  • Changes first character of each word to uppercase
  • Checks for a secure password (8 Characters, uppercase, lowercase, number & special characters)
  • Many many more...

Jump to section

parsa is only 8KB compare to Moment.js which is ~51KB. This is handy if using in the browser.

Installation

Browser

<script type="text/javascript" src="dist/parsa.min.js" charset="utf-8"></script>
<script>
    console.log('parseDate: 20121125 = ', parsa.parseDate('20121125', 'YYYYMMDD'));
</script>
CDN
<script type="text/javascript" src="https://cdn.rawgit.com/mrvautin/parsa/dist/parsa.min.js" charset="utf-8"></script>

Node

const parsa = require('parsa');
parsa.parseDate('20121125', 'YYYYMMDD');

Tests

npm test

Build

gulp deploy

parseDate

The parseDate function takes a date string and format string parameters and returns a Javascript Date() Object.

Usage

parsa.parseDate('20121125', 'YYYYMMDD')

Returns:

Sun Nov 25 2012 01:00:00 GMT+0100 (CET)

Supported formats

  • YYYYMMDD
  • YYYYDDMM
  • DDMMYYYY
  • MMDDYYYY
  • MMDDYY
  • DDMMYY
  • MM/DD/YYYY
  • DD/MM/YYYY
  • YYYY/DD/MM
  • DD-MM-YYYY
  • MM-DD-YYYY
  • YYYY-DD-MM
  • YYYY-MM-DD
  • DD MM YYYY
  • MM DD YYYY
  • YYYY MM DD
  • YYYYMMDD HH:MM
  • YYYYDDMM HH:MM
  • YYYYMMDD HH:MM:SS
  • YYYYDDMM HH:MM:SS
  • YYYY-DD-MM HH:MM
  • YYYY-MM-DD HH:MM
  • YYYY/MM/DD HH:MM
  • YYYY/DD/MM HH:MM
  • Do MMMM YYYY
  • Do, MMMM, YYYY
  • MM MMMM YYYY

validateIp

The validateIp function takes an IP address string and returns a boolean value whether it is valid or invalid.

Usage

parsa.validateIp('115.42.150.37')

Returns:

true

validateIpv6

The validateIpv6 function takes an IP address string and returns a boolean value whether it is valid or invalid.

Usage

parsa.validateIpv6('2001:db8:3:4::')

Returns:

true

parseQuery

The parseQuery function takes a URL and returns an Object of the Query string parameters.

Usage

parsa.parseQuery('http://example.com/product.php?category=4&product_id=2140&query=lcd+tv')

Returns:

{
    "category": "4",
    "product_id": "2140",
    "query": "lcd+tv"
}

parseUrl

The parseUrl function takes a URL and returns an Object of the URL section.

Usage

parsa.parseQuery('https://www.google.com:80/dir/1/2/search.html?arg=0-a&arg1=1-b&arg3-c#hash')

Returns:

{
    "url": "https://www.google.com:80/dir/1/2/search.html?arg=0-a&arg1=1-b&arg3-c#hash",
    "protocol": "https",
    "host": "www.google.com",
    "port": ":80",
    "path": "/dir/1/2/",
    "file": "search.html",
    "query": "?arg=0-a&arg1=1-b&arg3-c",
    "hash": "#hash"
}

validateUrl

The validateUrl function takes a URL and returns a boolean result.

Usage

parsa.validateUrl('https://www.google.com')

Returns: true

validateEmail

The validateEmail function takes a email address string and returns a boolean value whether it is valid or invalid.

Usage

parsa.validateEmail('[email protected]')

Returns:

true

extractNum

The extractNum function takes a string and returns an array of numbers/decimals found in that string.

Usage

parsa.extractNum('This is a10 string with3.14decimals6 and numbers.')

Returns:

[
    '10',
    '3.14',
    '6'
]

extractWords

The extractWords function takes a string and an array of words and returns an array of matched words in the string.

Usage

var words = ['this', 'some', 'words'];
parsa.extractWords('thisadkfdlfkdisdsstringdfjdkwithdkfdfkldsomefdfdfkdflkwordsjfgjkfg', words)

Returns:

[
    'this',
    'some',
    'words'
]

extractPhone

The extractPhone function takes a string and returns an array of matched phone numbers.

Usage

parsa.extractPhone('thisadkfdlfkdisdsstringdfjdkwithdkfdfkldsomefdfdfkdflkwordsjfgjkfg', words)

Returns:

[
    'this',
    'some',
    'words'
]

securePassword

The securePassword function takes a password string returns a boolean whether it's a secure password.

Usage

parsa.securePassword('Testing193!')

Password requirements are set to standard defaults:

  • at least 8 characters
  • must contain at least 1 uppercase letter, 1 lowercase letter, and 1 number
  • Can contain special characters

Returns:

true

removeAlpha

The removeAlpha function takes a string and removes all non number characters.

Usage

parsa.removeAlpha('some1number')

Returns:

1

removeNumeric

The removeNumeric function takes a string and removes all numbers.

Usage

parsa.removeNumeric('some1number')

Returns:

somenumber

firstUppercase

The firstUppercase function takes a string and makes the first character of each word uppercase.

Usage

parsa.firstUppercase('this is a test string')

Returns:

This Is A Test String

validateObject

The validateObject function takes an Object and a Schema and returns a validation result with any errors.

Each schema validation requires a name and a rules array. The name property refers to the key in the Object being supplied.

Supported schema rules

  • isAlpha
  • isNumeric
  • isString
  • minLength
  • maxLength
  • isBetweenLength
  • isObject
  • isArray
  • isRequired
  • securePassword

Usage

let object = {
    "test_number": 1234,
    "test_string": 'abcdefg',
    "test_array": [1, 2, 3],
    "test_required": '',
    "test_length": 'I am a long string'
};

let schema = [
    {
        "name": "test_number",
        "rules": [
            'isNumeric'
        ]
    },
    {
        "name": "test_string",
        "rules": [
            'isString',
        ]
    },
    {
        "name": "test_array",
        "rules": [
            'isArray'
        ]
    },
    {
        "name": "test_required",
        "rules": [
            'isRequired'
        ]
    },
    {
        "name": "test_length",
        "rules": [
            'minLength|5',
            'maxLength|25'
        ]
    }
];

Note: when using a schema validation which requires multiple arguments other than the value (Eg: minLength, isBetweenLength etc) you pass arguments using the | character as a separator. For example: isBetweenLength would look like: isBetweenLength|0|16 which would validate values between 0 and 16 characters in length.

parsa.validateObject(schema, object)

Returns:

With errors

{
    errors: [
        {
            property: 'test_string',
            message: 'Value is greater than the maximum length'
        },
        {
            property: 'test_required',
            message: 'Value is required'
        }
    ],
    result: false
}

Without errors

{
    errors: [],
    result: true
}

isAlpha

The isAlpha function takes a value and returns a boolean whether it contains only alpha characters.

Usage

parsa.isAlpha('this is a test string')

Returns:

true

isNumeric

The isNumeric function takes value and returns a boolean whether it contains only alpha numbers.

Usage

parsa.isNumeric(1234)

Returns:

true

isObject

The isObject function takes value and returns a boolean whether it is a Object.

Usage

parsa.isObject({"test": "Object"})

Returns:

true

isArray

The isArray function takes value and returns a boolean whether it is a Array.

Usage

parsa.isArray(['abcd', '1234'])

Returns:

true

isString

The isString function takes value and returns a boolean whether it is a String.

Usage

parsa.isString('fkdlfkdl3233')

Returns:

true

isDefined

The isDefined function takes value and returns a boolean whether the value is null or undefined.

Usage

parsa.isDefined('')

Returns:

false

isFunction

The isFunction function takes value and returns a boolean whether it is a Function.

Usage

parsa.isFunction(function test(){})

Returns:

true

minLength

The minLength function takes value and a desired length and returns a boolean whether it's is greater than supplied value.

Usage

parsa.minLength('23434fdfdfd', 5)

Returns:

true

maxLength

The maxLength function takes value and a desired length and returns a boolean whether it's is less than supplied value.

Usage

parsa.maxLength('23434fdfdfd', 5)

Returns:

false

isBetweenLength

The isBetweenLength function takes value, a min length and a max length and returns a boolean whether the value is between the range.

Usage

parsa.maxLength('23434fdf', 5, 10)

Returns:

true