diff --git a/src/server/data_model.ts b/src/server/data_model.ts index 0552a0a..27e6ba7 100644 --- a/src/server/data_model.ts +++ b/src/server/data_model.ts @@ -104,6 +104,22 @@ type ValueFromUnion = T extends T export type FieldTypeFromFieldPath< Document extends GenericDocument, FieldPath extends string, +> = + FieldTypeFromFieldPathInner extends Value | undefined + ? FieldTypeFromFieldPathInner + : Value | undefined; + +/** + * The inner type of {@link FieldTypeFromFieldPath}. + * + * It's wrapped in a helper to coerce the type to `Value | undefined` since some + * versions of TypeScript fail to infer this type correctly. + * + * @public + */ +export type FieldTypeFromFieldPathInner< + Document extends GenericDocument, + FieldPath extends string, > = FieldPath extends `${infer First}.${infer Second}` ? ValueFromUnion< Document, diff --git a/src/server/index.ts b/src/server/index.ts index b84a66f..7a28b06 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -63,6 +63,7 @@ export type { GenericVectorIndexConfig, GenericTableVectorIndexes, FieldTypeFromFieldPath, + FieldTypeFromFieldPathInner, GenericTableInfo, DocumentByInfo, FieldPaths,