UNPKG

@datastax/astra-db-ts

Version:
33 lines (32 loc) 1.26 kB
// Copyright Datastax, Inc // SPDX-License-Identifier: Apache-2.0 const DBComponentsRegex = /^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})-([a-z0-9_-]+)\.apps\.astra(?:-(?:dev|test))?\.datastax\.com/i; export function extractDbComponentsFromAstraUrl(uri) { try { const match = DBComponentsRegex.exec(new URL(uri).hostname); if (!match) { return []; } return [match[1].toLowerCase(), match[2].toLowerCase()]; } catch (_) { return []; } } export const betterTypeOf = (value) => { if (value === null) { return 'null'; } if (typeof value === 'object') { return value.constructor?.name ?? 'Object[NullProto]'; } return typeof value; }; export const mkInvArgsError = (exp, params, ...got) => { const names = params.map(([name]) => name).join(', '); const types = params.map(([, type]) => type).join(', '); return new TypeError(`Invalid argument(s) for \`${exp}(${names})\`; expected (${types}), got (${got.map(betterTypeOf).join(', ')})`); }; export const mkWrongTypeError = (fieldName, expected, got) => { return new TypeError(`Expected '${fieldName}' to be of type '${expected}', but got '${betterTypeOf(got)}' (${got})`); };