Files
klz-cables.com/.pnpm-store/v10/files/34/2436680daf656726164388a9bbb9d94e239febc2135ae68cc4fb65bec2e14eaff8c0a0d2af81d71b892df16e7e4c2c8fc65442586cc9ff461a15a9f4342c79
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

69 lines
3.5 KiB
Plaintext

import { IfNever, IsDateTime, IsNumber, IsString, Merge, UnpackList } from "./utils.cjs";
import { RelationalFields } from "./schema.cjs";
import { MappedFieldNames } from "./functions.cjs";
import { FieldOutputMap } from "./output.cjs";
//#region src/types/filters.d.ts
/**
* Filters
*/
type QueryFilter<Schema, Item> = WrapLogicalFilters<NestedQueryFilter<Schema, Item>>;
/**
* Query filters without logical filters
*/
type NestedQueryFilter<Schema, Item> = UnpackList<Item> extends infer FlatItem ? Partial<Merge<{ [Field in keyof FlatItem]?: NestedRelationalFilter<Schema, FlatItem, Field> }, MappedFieldNames<Schema, Item> extends infer Funcs ? { [Func in keyof Funcs]?: Funcs[Func] extends infer Field ? Field extends keyof FlatItem ? NestedRelationalFilter<Schema, FlatItem, Field> : never : never } : never>> : never;
/**
* Allow for relational filters
*/
type NestedRelationalFilter<Schema, Item, Field$1 extends keyof Item> = (Field$1 extends RelationalFields<Schema, Item> ? WrapRelationalFilters<NestedQueryFilter<Schema, Item[Field$1]>> : never) | FilterOperators<Item[Field$1]>;
/**
* All regular filter operators
*
* TODO would love to filter this based on field type but thats not accurate enough in the schema atm
*/
type FilterOperators<FieldType, T = (FieldType extends keyof FieldOutputMap ? FieldOutputMap[FieldType] : FieldType)> = MapFilterOperators<{
_eq: T;
_neq: T;
_gt: IsDateTime<FieldType, string, IsNumber<T, number, never>>;
_gte: IsDateTime<FieldType, string, IsNumber<T, number, never>>;
_lt: IsDateTime<FieldType, string, IsNumber<T, number, never>>;
_lte: IsDateTime<FieldType, string, IsNumber<T, number, never>>;
_in: T[];
_nin: T[];
_between: IsDateTime<FieldType, [T, T], IsNumber<T, [T, T], never>>;
_nbetween: IsDateTime<FieldType, [T, T], IsNumber<T, [T, T], never>>;
_contains: IsDateTime<FieldType, never, IsString<T, string, never>>;
_ncontains: IsDateTime<FieldType, never, IsString<T, string, never>>;
_icontains: IsDateTime<FieldType, never, IsString<T, string, never>>;
_starts_with: IsDateTime<FieldType, never, IsString<T, string, never>>;
_istarts_with: IsDateTime<FieldType, never, IsString<T, string, never>>;
_nstarts_with: IsDateTime<FieldType, never, IsString<T, string, never>>;
_nistarts_with: IsDateTime<FieldType, never, IsString<T, string, never>>;
_ends_with: IsDateTime<FieldType, never, IsString<T, string, never>>;
_iends_with: IsDateTime<FieldType, never, IsString<T, string, never>>;
_nends_with: IsDateTime<FieldType, never, IsString<T, string, never>>;
_niends_with: IsDateTime<FieldType, never, IsString<T, string, never>>;
_empty: boolean;
_nempty: boolean;
_nnull: boolean;
_null: boolean;
_intersects: T;
_nintersects: T;
_intersects_bbox: T;
_nintersects_bbox: T;
}>;
type MapFilterOperators<Filters extends object> = { [Key in keyof Filters as IfNever<Filters[Key], never, Key>]?: Filters[Key] };
/**
* Relational filter operators
*/
type RelationalFilterOperators = '_some' | '_none';
type WrapRelationalFilters<Filters> = { [Operator in RelationalFilterOperators]?: Filters } | Filters;
/**
* Logical filter operations
*/
type LogicalFilterOperators = '_or' | '_and';
type WrapLogicalFilters<Filters extends object> = { [Operator in LogicalFilterOperators]?: WrapLogicalFilters<Filters>[] } | Filters;
//#endregion
export { FilterOperators, LogicalFilterOperators, NestedQueryFilter, NestedRelationalFilter, QueryFilter, RelationalFilterOperators, WrapLogicalFilters, WrapRelationalFilters };
//# sourceMappingURL=filters.d.cts.map