UNPKG

@noony-serverless/core

Version:

A Middy base framework compatible with Firebase and GCP Cloud Functions with TypeScript

104 lines 2.88 kB
"use strict"; /** * Query parameter utility functions for type-safe handling of query parameters * that can be string | string[] | undefined */ Object.defineProperty(exports, "__esModule", { value: true }); exports.asString = asString; exports.asStringArray = asStringArray; exports.asNumber = asNumber; exports.asBoolean = asBoolean; /** * Convert query parameter to single string * Takes the first value if array is provided * * @param value - Query parameter value * @returns First string value or undefined * * @example * ```typescript * const search = asString(context.req.query.search); * // If query.search = "hello" → "hello" * // If query.search = ["hello", "world"] → "hello" * // If query.search = undefined → undefined * ``` */ function asString(value) { if (Array.isArray(value)) { return value[0]; } return value; } /** * Convert query parameter to string array * Returns array if single value is provided * * @param value - Query parameter value * @returns Array of strings or undefined * * @example * ```typescript * const tags = asStringArray(context.req.query.tags); * // If query.tags = "javascript" → ["javascript"] * // If query.tags = ["javascript", "typescript"] → ["javascript", "typescript"] * // If query.tags = undefined → undefined * ``` */ function asStringArray(value) { if (value === undefined) { return undefined; } if (Array.isArray(value)) { return value; } return [value]; } /** * Convert query parameter to number * Parses the value as integer (base 10) * * @param value - Query parameter value * @returns Parsed number or undefined if invalid * * @example * ```typescript * const page = asNumber(context.req.query.page) || 1; * // If query.page = "5" → 5 * // If query.page = ["10", "20"] → 10 (first value) * // If query.page = "invalid" → undefined * // If query.page = undefined → undefined * ``` */ function asNumber(value) { const str = asString(value); if (!str) { return undefined; } const num = parseInt(str, 10); return isNaN(num) ? undefined : num; } /** * Convert query parameter to boolean * Treats "true" and "1" as true, everything else as false * * @param value - Query parameter value * @returns Boolean value or undefined if not provided * * @example * ```typescript * const isActive = asBoolean(context.req.query.active); * // If query.active = "true" → true * // If query.active = "1" → true * // If query.active = "false" → false * // If query.active = "0" → false * // If query.active = undefined → undefined * ``` */ function asBoolean(value) { const str = asString(value); if (str === undefined) { return undefined; } return str.toLowerCase() === 'true' || str === '1'; } //# sourceMappingURL=query-param.utils.js.map