A set of useful utils for http methods. Includes converter/validator for http query params or body attributes, custom error types.
How to use:
const { Converter, ValidationError } = require('@rfcx/http-utils')
const convertedParams = {}
const params = new Converter(req.body, convertedParams, { camelize: true })
params.convert('filename').toString()
params.convert('duration').toInt().minimum(1)
params.convert('sample_rate').toInt().default(1).minimum(1)
params.convert('channels_count').optional().toInt().default(1).minimum(1)
params.convert('bit_rate').toInt().default(1).minimum(1)
params.convert('audio_codec').toString()
params.convert('sha1_checksum').toString()
params.convert('meta').optional()
params.vaidate()
.then(() => {
res.json{{
sampleRate: convertedParams.sampleRate
filename: convertedParams.filename,
duration: convertedParams.duration
}}
})
.catch((err) => {
// handle custom error with type `ValidationError` here
})Available converters/validators:
| function name | description | example |
|---|---|---|
| default | sets default value for param | .default(true) |
| optional | marks param as not required (won't throw ValidationError message for it) | .optional() |
| toFloat | checks if param is numeric, converts it to float | .toFloat() |
| minimum | checks if param is higher than specified value | .minimum(10) |
| maximum | checks if param is lower than specified value | .maximum(100) |
| minLength | checks if param string is longer than specified length | .minLength(3) |
| maxLength | checks if param string is shorter than specified length | .maxLength(20) |
| nonEmpty | checks if param string is not empty | .nonEmpty() |
| toUuid | checks if param is valid uuid string | .toUuid() |
| toLatitude | checks if param is valid latitude (min -90, max 90) | .toLatitude() |
| toLongitude | checks if param is valid longitude (min -180, max 180) | .toLongitude() |
| toMoment | checks if param is valid ISO8601 datetime string, converts to moment.js object with specified timezone | .toMoment('America/Los_Angeles') |
| toMomentUtc | checks if param is valid ISO8601 datetime string, converts to moment.js object with UTC timezone | .toMomentUtc() |
| toMomentUtc | checks if param is valid ISO8601 datetime string, converts to moment.js object with UTC timezone | .toMomentUtc() |
| toQuantumTime | checks if param is valid ISO8601 datetime string, converts to moment.js object with abs() seconds | .toQuantumTime() |
| toDateString | checks if param is valid ISO8601 datetime string, converts to string with format "YYYY-MM-DD" | .toQuantumTime() |
| toTimeInterval | checks if param is valid interval value (1d, 10secs, etc) | .toTimeInterval() |
| toAggregateFunction | checks if param is valid aggregate function value (count, sum, avg, min, max) |
.toAggregateFunction() |
| toInt | checks if param is valid integer | .toInt() |
| toNonNegativeInt | checks if param is valid positive integer | .toNonNegativeInt() |
| toString | checks if param is valid string | .toString() |
| toLowerCase | converts string to lowercased | .toLowerCase() |
| trim | converts string to string without spaced at the beginning and end | .trim() |
| objToString | converts object to string | .objToString() |
| toBoolean | checks if param is valid boolean | .toBoolean() |
| toArray | converts single item into array | .toArray() |
| toIntArray | converts single item into array, checks if all items are integers | .toIntArray() |
| toFloatArray | converts single item into array, checks if all items are floats | .toFloatArray() |
| nonEmptyArrayItem | checks if array is not empty | .nonEmptyArrayItem() |
| isObject | checks if param is object | .isObject() |
| isValidTimezone | checks if param is valid timezone valie (America/Los_Angeles) |
.isValidTimezone() |
| isEqualToAny | checks if param is equal to any of specified in the array | .isEqualToAny(['aaa', 'bbb', 'ccc']) |
| isPassingRegExp | checks if param is passing specified regular expression | .isPassingRegExp(/[a-z0-9]{12}/, 'should consist of 12 lower-cased characters or digits') |
Publishing to NPM registry is done automatically via GitHub Actions once new release is published in the GitHub repository.
You must have NPM_PUBLISH_TOKEN secret to be defined in your repository or organization. Reference this or this for instructions.