UNPKG

@clickup/pg-microsharding

Version:
25 lines (23 loc) 759 B
import compact from "lodash/compact"; import uniq from "lodash/uniq"; import { isMasterDsn } from "./isMasterDsn"; import { normalizeDsn } from "./normalizeDsn"; import { promiseAllMap } from "./promiseAllMap"; /** * Same as normalizeDsn(), but assumes comma separated list of DSNs. Also, * allows passing numbers instead of DSNs; if so, the actual DSN will be chosen * by the index from islandDsns argument. */ export async function normalizeDsns( dsnsIn: string | undefined, ): Promise<string[]> { const dsns = uniq( compact(dsnsIn?.split(/[,\s]+/s).map((dsn) => normalizeDsn(dsn))), ); const masterDsns = compact( await promiseAllMap(dsns, async (dsn) => (await isMasterDsn(dsn)) ? dsn : null, ), ); return masterDsns; }