UNPKG

firesage

Version:

🔥 Extremely High Precision Typescript Wrapper for Firestore Web, Providing Unparalleled Type Safe and Dev Experience

8 lines (7 loc) • 1.31 kB
import { ErrorEmptyDocumentOrCollectionID, NoUndefinedAndBannedTypes, ErrorInvalidDocumentOrCollectionIDStart, ErrorInvalidDocumentOrCollectionID, ErrorEndOfID } from './error'; declare type InvalidIDCharacter = '/' | '..' | '//' | '__'; declare type AllowInvalidIDCharacter<S extends InvalidIDCharacter> = Exclude<InvalidIDCharacter, S>; export declare type GetNumberOfSlash<ID extends string> = GetNumberOfInvalidCharacter<ID, '/'>; export declare type GetNumberOfInvalidCharacter<ID extends string, InvalidCharacter extends string, SlashCount extends unknown[] = []> = ID extends `${string}${InvalidCharacter}${infer Tail}` ? GetNumberOfInvalidCharacter<Tail, InvalidCharacter, [1, ...SlashCount]> : SlashCount['length']; export declare type IsValidID<ID extends string, Mode extends 'Document' | 'Collection', Type extends 'ID' | 'Path'> = ID extends NoUndefinedAndBannedTypes<ID, never> ? ID extends '' ? ErrorEmptyDocumentOrCollectionID<Mode> : ID extends `${string}/` ? ErrorEndOfID : ID extends `.${string}` ? ErrorInvalidDocumentOrCollectionIDStart<Mode> : GetNumberOfInvalidCharacter<ID, AllowInvalidIDCharacter<Type extends 'ID' ? never : Type extends 'Path' ? '/' : never>> extends 0 ? ID : ErrorInvalidDocumentOrCollectionID<Mode, Type> : NoUndefinedAndBannedTypes<ID, never>; export {};