@telegram-apps/transformers
Version:
Transformation utilities we use in the @telegram-apps packages.
22 lines (21 loc) • 1.26 kB
TypeScript
import { BaseIssue, BaseSchema, InferOutput, InstanceSchema, SchemaWithPipe, StringSchema, UnionSchema } from 'valibot';
import { ConditionalSnakeKeysAction } from './conditionalSnakeKeys.js';
import { CamelCaseTransformerFn } from './types.js';
import { TransformQueryUsingAction } from '../transformers/transformQueryUsing.js';
type RequiredSchema = BaseSchema<object, object, BaseIssue<unknown>>;
export type CamelCaseQueryTransformerPipe<Schema extends RequiredSchema, CamelCase extends boolean> = SchemaWithPipe<[
UnionSchema<[
StringSchema<undefined>,
InstanceSchema<typeof URLSearchParams, undefined>
], undefined>,
TransformQueryUsingAction<Schema>,
ConditionalSnakeKeysAction<InferOutput<Schema>, CamelCase>
]>;
export type CamelCaseQueryTransformer<Schema extends RequiredSchema> = CamelCaseTransformerFn<CamelCaseQueryTransformerPipe<Schema, false>, CamelCaseQueryTransformerPipe<Schema, true>>;
/**
* Creates a transformer accepting query parameters as string and returning a value based
* on the passed schema.
* @param schema - schema to use to transform the output
*/
export declare function createQueryCamelCaseGen<Schema extends RequiredSchema>(schema: Schema): CamelCaseQueryTransformer<Schema>;
export {};