validated-parameters
v1.1.1
Published
Tools for extracting validated parameters from process.env and query strings
Downloads
6
Maintainers
Readme
Validated Parameters
This library simplifies the process of validating and converting string maps, such as query strings or environment variables, into well-typed data structures. It is particularly useful for quickly setting up a well-typed environment for your application.
Installation
npm install --save validated-parameters
Usage
Example: Azure Function HTTP Trigger
Here's an example of how to use validated-parameters
to validate and convert query string parameters in an Azure Function HTTP trigger:
- Import the required functions and types:
import {
getValidParameters,
stringParameter,
numberParameter,
booleanParameter,
optionally,
} from 'validated-parameters';
- Define the expected parameter map:
const parameterMap = {
searchText: stringParameter(),
page: numberParameter(),
pageSize: numberParameter(),
includeArchived: booleanParameter(),
};
- Use
getValidParameters
in your Azure Function:
import { AzureFunction, Context, HttpRequest } from '@azure/functions';
const httpTrigger: AzureFunction = async function (
context: Context,
req: HttpRequest
): Promise<void> {
const { searchText, page, pageSize, includeArchived } = getValidParameters(parameterMap, req.query);
// Your logic for handling the request with validated and converted parameters.
};
export default httpTrigger;
Setting up a Well-Typed Environment
validated-parameters
can be used to create a well-typed environment for your application. In this example, we will set up a centralized, well-typed environment using environment variables:
- Create a file named
environment.ts
:
import {
makeEnvironment,
stringParameter,
numberParameter,
booleanParameter,
optionally,
} from 'validated-parameters';
const environmentVariables = {
DB_HOST: stringParameter(),
DB_PORT: numberParameter(),
DB_USER: stringParameter(),
DB_PASSWORD: stringParameter(),
ENABLE_CACHE: booleanParameter(),
CACHE_EXPIRATION: optionally(numberParameter()),
};
export const environment = makeEnvironment(environmentVariables);
- Use the
environment
object in your application:
import { environment } from './environment';
console.log(environment.DB_HOST);
console.log(environment.DB_PORT);
console.log(environment.DB_USER);
console.log(environment.DB_PASSWORD);
console.log(environment.ENABLE_CACHE);
console.log(environment.CACHE_EXPIRATION);
The environment
object provides well-typed access to environment variables, ensuring that your application always uses the correct data types.
Customization
validated-parameters
also allows you to customize the validation and conversion process by providing optional configuration. For example:
const customParameterMap = {
name: stringParameter({
minLength: 2,
maxLength: 100,
onInvalid: (value) => console.warn(`Invalid name: ${value}`),
}),
age: numberParameter({
min: 18,
max: 120,
onInvalid: (value) => console.warn(`Invalid age: ${value}`),
}),
isAlive: booleanParameter({
onFailedToConvert: (value, error) => console.error(`Failed to convert isAlive: ${value}`, error),
}),
isHappy: optionally(booleanParameter()),
};