@datastax/astra-db-ts
Version:
Data API TypeScript client
33 lines (32 loc) • 1.26 kB
JavaScript
// 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})`);
};