Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions .changeset/twelve-shoes-behave.md

This file was deleted.

22 changes: 10 additions & 12 deletions packages/adapter-vercel/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ export type VercelAdapterDeclaration<ValueType, EntitiesType> = Omit<
*/
export function createVercelAdapter(
// usually a connection string, but can also be a pre-configured FlagsClient
sdkKeyOrFlagsClient?: string | FlagsClient,
sdkKeyOrFlagsClient: string | FlagsClient,
) {
const flagsClient =
typeof sdkKeyOrFlagsClient === 'string' || sdkKeyOrFlagsClient === undefined
typeof sdkKeyOrFlagsClient === 'string'
? createClient(sdkKeyOrFlagsClient)
: sdkKeyOrFlagsClient;

Expand Down Expand Up @@ -86,13 +86,9 @@ export function vercelAdapter<ValueType, EntitiesType>(): Adapter<
return defaultVercelAdapter<ValueType, EntitiesType>();
}

const flagsClients = new Map<string | undefined, FlagsClient>();
const flagsClients = new Map<string, FlagsClient>();

/**
* Ensures we only ever create a single client per SDK Key
* When undefined is passed, due to OIDC being used, then we return a single client too.
**/
function getOrCreateClient(sdkKey?: string): FlagsClient {
function getOrCreateClient(sdkKey: string): FlagsClient {
let client = flagsClients.get(sdkKey);
if (!client) {
client = createClient(sdkKey);
Expand All @@ -103,12 +99,14 @@ function getOrCreateClient(sdkKey?: string): FlagsClient {

function isVercelOrigin(
origin: unknown,
): origin is { provider: 'vercel'; sdkKey?: string } {
): origin is { provider: 'vercel'; sdkKey: string } {
return (
typeof origin === 'object' &&
origin !== null &&
'provider' in origin &&
(origin as Record<string, unknown>).provider === 'vercel'
(origin as Record<string, unknown>).provider === 'vercel' &&
'sdkKey' in origin &&
typeof (origin as Record<string, unknown>).sdkKey === 'string'
);
}

Expand All @@ -124,14 +122,14 @@ export async function getProviderData(
.filter((i): i is KeyedFlagDefinitionType => !Array.isArray(i));

// Collect unique sdkKeys and resolve their projectIds
const sdkKeys = new Set<string | undefined>();
const sdkKeys = new Set<string>();
for (const d of flagDefs) {
if (isVercelOrigin(d.origin)) {
sdkKeys.add(d.origin.sdkKey);
}
}

const projectIdBySdkKey = new Map<string | undefined, string>();
const projectIdBySdkKey = new Map<string, string>();
await Promise.all(
Array.from(sdkKeys).map(async (sdkKey) => {
const client = getOrCreateClient(sdkKey);
Expand Down
2 changes: 1 addition & 1 deletion packages/prepare-flags-definitions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const result = await prepareFlagsDefinitions({
});

if (result.created) {
console.log(`Bundled definitions for ${result.entryCount} SDK keys`);
console.log(`Bundled definitions for ${result.sdkKeysCount} SDK keys`);
} else {
console.log(`No definitions created: ${result.reason}`);
}
Expand Down
Loading
Loading