
Research
/Security News
10 npm Typosquatted Packages Deploy Multi-Stage Credential Harvester
Socket researchers found 10 typosquatted npm packages that auto-run on install, show fake CAPTCHAs, fingerprint by IP, and deploy a credential stealer.
@poppinss/validator-lite
Advanced tools
Typed schema-based validation with low calories
A lightweight schema-based validation library similar to Zod and VineJS. It is used by the @adonisjs/env package for validating environment variables, as bundling a full-blown validation library to validate environment variables seems like overkill.
Install the module from the npm registry as follows:
npm install @poppinss/validator-lite
yarn add @poppinss/validator-lite
pnpm add @poppinss/validator-lite
The following example shows how to use the validator :
import { schema } from '@poppinss/validator-lite'
/**
* Define a schema
*/
const envSchema = {
HOST: schema.string({ format: 'host' }),
PORT: schema.number(),
APP_URL: schema.string.optional({ type: 'url', tld: false }),
}
/**
* Define the data
*/
const envVariables = {
HOST: 'localhost',
PORT: '3333'
}
/**
* Validate the data
*/
for (let [key, schemaFn] of Object.entries(envSchema)) {
schemaFn(key, envVariables[key])
}
Following is the list of available methods :
Validate the value to exist and be a valid non-empty string.
{
APP_KEY: schema.string()
}
{
APP_KEY: schema.string.optional()
}
You can also force the value to have one of the pre-defined formats.
/**
* Must be a valid host (URL or IP address)
*/
schema.string({ format: 'host' })
/**
* Must be a valid URL with or without tld
*/
schema.string({ format: 'url' })
schema.string({ format: 'url', tld: false })
/**
* Must be a valid email address
*/
schema.string({ format: 'email' })
/**
* Must be a valid UUID
*/
schema.string({ format: 'uuid' })
When validating the url format, you can also define additional options to force/ignore the tld and protocol.
schema.string({
format: 'url',
tld: false, // allow URL without .com, .net, and so on
protocol: false
})
Validate the value to exist and be a valid non-empty boolean value. The following values will be cast to a JavaScript boolean data type.
'1', 'true' are casted to Boolean(true)'0', 'false' are casted to Boolean(false){
CACHE_VIEWS: schema.boolean()
}
{
CACHE_VIEWS: schema.boolean.optional()
}
Validate the value to exist and be a valid non-empty numeric value. The string representation of a number value will be cast to a JavaScript number data type.
{
PORT: schema.number()
}
{
PORT: schema.number.optional()
}
Validate the value to exist and must be one of the pre-defined values.
{
NODE_ENV: schema.enum(['development', 'production'] as const)
}
{
MY_ENUM: schema.enum.optional(['development', 'production'] as const)
}
For all other validation use cases, you can use custom functions. A custom function can throw errors for invalid values and must return the final output value.
{
PORT: (key, value) => {
if (!value) {
throw new Error('Value for PORT is required')
}
if (isNaN(Number(value))) {
throw new Error('Value for PORT must be a valid number')
}
return Number(value)
}
}
FAQs
Simple validation library
We found that @poppinss/validator-lite demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Socket researchers found 10 typosquatted npm packages that auto-run on install, show fake CAPTCHAs, fingerprint by IP, and deploy a credential stealer.

Product
Socket Firewall Enterprise is now available with flexible deployment, configurable policies, and expanded language support.

Security News
Open source dashboard CNAPulse tracks CVE Numbering Authorities’ publishing activity, highlighting trends and transparency across the CVE ecosystem.