import { z } from 'zod'; import { parseQuery, SDTFQuery } from '@specifyapp/specify-design-token-format'; import { createBuiltInParserDefinition } from '../../internals/createBuiltInParserDefinition.js'; export const filterParserName = 'filter'; export const filterParserOptionsSchema = z .object( { query: z.custom(parseQuery), failOnMutate: z .boolean({ invalid_type_error: 'The filter parser option "failOnMutate" must be a boolean.', }) .optional(), deduplicate: z.literal(true).optional(), resolveAliases: z .boolean({ invalid_type_error: 'The filter parser option "resolveAliases" must be a boolean.', }) .optional(), allowUnresolvableAliases: z .boolean({ invalid_type_error: 'The filter parser option "allowUnresolvableAliases" must be a boolean.', }) .optional(), }, { invalid_type_error: 'The filter parser options must be an object.', }, ) .strict(); export const filterParserDefinition = createBuiltInParserDefinition({ name: filterParserName, kind: 'utility', hasOptionalOptions: false, optionsSchema: filterParserOptionsSchema, hasOptionalOutput: true, outputTypes: undefined, inTypes: ['SDTF', 'SDTF Engine'], outType: 'SDTF Engine', }); export type FilterParserDefinition = typeof filterParserDefinition; export type FilterParserOptions = z.infer;