1.1.2 ⢠Published 3 years ago
primitive-parser v1.1.2
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 strings into numbers or booleans.
:rocket: Getting started
npm
$ npm i primitive-parseryarn
$ yarn add primitive-parser:bulb: Examples
šµ Make sure nasty user inputs do not reach your app.
// ...
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)
})
// ...š§ Unsure about external events? No more.
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} />
}:beer: Full helper list
Check out the tests file for a full behavioural overview.
String
const getString = (value: unknown): string | undefinedgetString('foo') // "foo"
getObject({ foo: 'bar' }) // undefinedBoolean
const getBoolean = (value: unknown): boolean | undefinedgetBoolean('true') // undefined
getBoolean(true) // trueBoolean from String
const getBooleanFromString = (value: unknown): boolean | undefinedgetBoolean('true') // true
getBoolean(true) // undefinedFloat
const getFloat = (value: unknown): number | undefinedgetFloat('12.34') // undefined
getFloat(12.34) // 12.34Float from String
const getFloatFromString = (value: unknown): number | undefinedgetFloat('12.34') // 12.34
getFloat(Infinity) // undefined
getFloat(12.34) // undefinedInteger
const getInteger = (value: unknown): number | undefinedgetInteger('1234') // undefined
getInteger(12.34) // undefined
getFloat(1234) // 1234Integer from string
const getIntegerFromString = (value: unknown): number | undefinedgetIntegerFromString('1234') // 1234
getIntegerFromString(1234)) // undefined
getIntegerFromString(12.34) // undefinedPositive Integer
const getPositiveInteger = (value: unknown): number | undefinedgetPositiveInteger('1') // undefined
getPositiveInteger(0) // undefined
getPositiveInteger(-1) // undefined
getPositiveInteger(1) // 1Positive Integer from String
const getPositiveInteger = (value: unknown): number | undefinedgetPositiveInteger('1') // undefined
getPositiveInteger(1) // 1
getPositiveInteger(-1) // undefinedObject (general)
const getObject = (value: unknown): object | undefinedgetObject('foo')) // undefined
getObject({ foo: 'bar' }) // { foo: "bar" }