rapiq
Version:
A tiny library which provides utility types/functions for request and response query handling.
32 lines • 1.59 kB
TypeScript
import type { Flatten, KeyWithOptionalPrefix, NestedKeys, ObjectLiteral, OnlyObject, SimpleKeys } from '../../types';
import type { RelationsParseOutput } from '../relations';
import type { ParseAllowedOption } from '../type';
import type { FieldOperator } from './constants';
type FieldWithOperator<T extends string> = KeyWithOptionalPrefix<T, FieldOperator>;
export type FieldsBuildSimpleKeyInput<T extends ObjectLiteral = ObjectLiteral> = FieldWithOperator<SimpleKeys<T>>;
export type FieldsBuildNestedKeyInput<T extends ObjectLiteral = ObjectLiteral> = FieldWithOperator<NestedKeys<T>>;
export type FieldsBuildRecordInput<T extends ObjectLiteral = ObjectLiteral> = {
[K in keyof T]?: Flatten<T[K]> extends OnlyObject<T[K]> ? FieldsBuildInput<Flatten<T[K]>> : never;
};
export type FieldsBuildInput<T extends ObjectLiteral> = FieldsBuildRecordInput<T> | (FieldsBuildSimpleKeyInput[] | FieldsBuildRecordInput<T>)[] | FieldsBuildNestedKeyInput[] | FieldsBuildNestedKeyInput;
export type FieldsParseOptions<T extends Record<string, any> = Record<string, any>> = {
mapping?: Record<string, string>;
allowed?: ParseAllowedOption<T>;
default?: ParseAllowedOption<T>;
defaultPath?: string;
throwOnFailure?: boolean;
relations?: RelationsParseOutput;
};
export type FieldsParseOutputElement = {
key: string;
path?: string;
value?: string;
};
export type FieldsParseOutput = FieldsParseOutputElement[];
export type FieldsInputTransformed = {
default: string[];
included: string[];
excluded: string[];
};
export {};
//# sourceMappingURL=type.d.ts.map