⭐ Master your input data like a pro! ⭐
✔️ Node.js & browser ✔️ Only 1kb! ✔️ Fully typed ✔️ No dependencies
Simple helper library which allows you to ensure the integrity and type safety of your app's input data.
It works by exposing a number of functions which check wether an unknown value is either a string
, boolean
, float
, integer
or object
. You can also turn string
s into number
s or boolean
s.
$ npm i primitive-parser
$ yarn add primitive-parser
// ...
import express from 'express'
import { getPositiveInteger } from 'primitive-parser'
// ...
app.get('/:user/:id', function (req, res) {
const id = getPositiveInteger(req.params.id)
if (!id) {
return res.status(400)
}
// At this point, "id" is infered as "number".
showUser(req, res, id)
})
// ...
import { getObject, getString } from 'primitive-parser'
import { useState } from 'react'
import SketchyInput from 'unknown-source'
const SafeInput = () => {
const [value, setValue] = useState<string>('')
const onValueChange = (sketchyEvent: any) => {
const safeValue = getString(getObject(sketchyEvent)?.value)
// Important over "!safeValue" since the latter returns "false" on valid empty strings.
if (safeValue !== undefined) {
// "safeValue" is inferred as "string" inside this block scope.
setValue(safeValue)
} else {
// Error handling
}
}
return <SketchyInput onValueChange={onValueChange} value={value} />
}
Check out the tests file for a full behavioural overview.
const getString = (value: unknown): string | undefined
getString('foo') // "foo"
getObject({ foo: 'bar' }) // undefined
const getBoolean = (value: unknown): boolean | undefined
getBoolean('true') // undefined
getBoolean(true) // true
const getBooleanFromString = (value: unknown): boolean | undefined
getBoolean('true') // true
getBoolean(true) // undefined
const getFloat = (value: unknown): number | undefined
getFloat('12.34') // undefined
getFloat(12.34) // 12.34
const getFloatFromString = (value: unknown): number | undefined
getFloat('12.34') // 12.34
getFloat(Infinity) // undefined
getFloat(12.34) // undefined
const getInteger = (value: unknown): number | undefined
getInteger('1234') // undefined
getInteger(12.34) // undefined
getFloat(1234) // 1234
const getIntegerFromString = (value: unknown): number | undefined
getIntegerFromString('1234') // 1234
getIntegerFromString(1234)) // undefined
getIntegerFromString(12.34) // undefined
const getPositiveInteger = (value: unknown): number | undefined
getPositiveInteger('1') // undefined
getPositiveInteger(0) // undefined
getPositiveInteger(-1) // undefined
getPositiveInteger(1) // 1
const getPositiveInteger = (value: unknown): number | undefined
getPositiveInteger('1') // undefined
getPositiveInteger(1) // 1
getPositiveInteger(-1) // undefined
const getObject = (value: unknown): object | undefined
getObject('foo')) // undefined
getObject({ foo: 'bar' }) // { foo: "bar" }