import { Merge } from "./utils.cjs"; import { ItemType, RelationalFields } from "./schema.cjs"; import { LiteralFields } from "./fields.cjs"; //#region src/types/functions.d.ts /** * Available query functions */ type DateTimeFunctions = 'year' | 'month' | 'week' | 'day' | 'weekday' | 'hour' | 'minute' | 'second'; type ArrayFunctions = 'count'; type QueryFunctions = { datetime: DateTimeFunctions; json: ArrayFunctions; csv: ArrayFunctions; }; /** * Permute [function, field] combinations */ type PermuteFields = Fields extends string ? Funcs extends string ? [Fields, Funcs] : never : never; /** * Get all many relations on an item */ type RelationalFunctions = keyof { [Key in RelationalFields as Extract> extends any[] ? Key : never]: Key }; /** * Create a map of function fields and their resulting output names */ type TranslateFunctionFields = { [F in PermuteFields as `${F[1]}(${F[0]})`]: `${F[0]}_${F[1]}` }; /** * Combine the various function types */ type FunctionFields = { [Type in keyof QueryFunctions]: TypeFunctionFields }[keyof QueryFunctions] | keyof TranslateFunctionFields, ArrayFunctions>; /** * */ type TypeFunctionFields = keyof TranslateFunctionFields, QueryFunctions[Type$1]>; /** * Map all possible function fields on an item */ type MappedFunctionFields = Merge, ArrayFunctions>, TranslateFunctionFields, DateTimeFunctions> & TranslateFunctionFields, ArrayFunctions>>; /** * Create a map of function fields with its original field name */ type FunctionFieldNames = { [F in PermuteFields as `${F[1]}(${F[0]})`]: F[0] }; /** * Map all possible function fields to name on an item */ type MappedFieldNames = Merge, ArrayFunctions>, FunctionFieldNames, DateTimeFunctions> & FunctionFieldNames, ArrayFunctions>>; //#endregion export { ArrayFunctions, DateTimeFunctions, FunctionFields, MappedFieldNames, MappedFunctionFields, PermuteFields, QueryFunctions, TypeFunctionFields }; //# sourceMappingURL=functions.d.cts.map