UNPKG

@httpx/dsn-parser

Version:

DSN & JDBC string parser with query params support in a tiny and modern package.

56 lines (49 loc) 1.75 kB
type ParsedDsn = { db?: string; driver: string; host: string; /** Query params */ params?: Record<string, boolean | number | string>; pass?: string; port?: number; user?: string; }; type ParseDsnOptions = { /** Whether to lowercase parsed driver name, default: false */ lowercaseDriver?: boolean; /** Overrides parsed values by those one (except query params) */ overrides?: Omit<Partial<ParsedDsn>, 'params'>; }; declare const errorReasons: { readonly EMPTY_DSN: "DSN cannot be empty"; readonly INVALID_ARGUMENT: "DSN must be a string"; readonly INVALID_PORT: "Invalid port"; readonly PARSE_ERROR: "Cannot parse DSN"; }; type ErrorReasons = keyof typeof errorReasons; type ParserSuccessResult = { success: true; value: ParsedDsn; }; type ParserErrorResult = { message: string; reason: ErrorReasons; success: false; }; type ParserResult = ParserErrorResult | ParserSuccessResult; declare const tag: unique symbol; type WeakOpaqueContainer<Token> = { readonly [tag]: Token; }; type ParsableDsn = string & WeakOpaqueContainer<'ParsableDsn'>; /** * @throws Error when not parsable */ declare const assertParsableDsn: (dsn: unknown, msg?: string) => asserts dsn is ParsableDsn; declare const convertJdbcToDsn: (jdbc: string) => string; declare const isParsableDsn: (dsn: unknown) => dsn is ParsableDsn; declare const parseDsn: (dsn: unknown, options?: ParseDsnOptions) => ParserResult; declare const parseDsnOrThrow: (dsn: unknown, options?: ParseDsnOptions & { errorMsgPrefix?: string; }) => ParsedDsn; export { type ParsableDsn, type ParseDsnOptions, type ParsedDsn, assertParsableDsn, convertJdbcToDsn, isParsableDsn, parseDsn, parseDsnOrThrow };