Skip to content

Commit c8bd759

Browse files
authored
fix: new client mode vs singleton client mode (#139)
1 parent 760eedf commit c8bd759

File tree

3 files changed

+46
-4
lines changed

3 files changed

+46
-4
lines changed

src/app.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { createProxyConfig, IProxyOption } from './config';
77
import UnleashProxy from './unleash-proxy';
88
import { OpenApiService } from './openapi/openapi-service';
99
import requireContentType from './content-type-checker';
10-
import { createClient } from './create-client';
10+
import { createSingletonClient, createNewClient } from './create-client';
1111

1212
export function createApp(
1313
options: IProxyOption,
@@ -17,7 +17,11 @@ export function createApp(
1717
const config = createProxyConfig(options);
1818
const { logger } = config;
1919
logger.debug('Configuration:', config);
20-
const client = unleashClient || createClient(config);
20+
const client =
21+
unleashClient ||
22+
(options.clientMode === 'new'
23+
? createNewClient(config)
24+
: createSingletonClient(config));
2125

2226
const openApiService = new OpenApiService(config);
2327

src/config.ts

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ export interface IProxyOption {
4242
expServerSideSdkConfig?: ServerSideSdkConfig;
4343
httpOptions?: HttpOptions;
4444
expCustomEnrichers?: ContextEnricher[];
45+
clientMode?: 'singleton' | 'new';
4546
}
4647

4748
export interface IProxyConfig {

src/create-client.ts

+39-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { IProxyConfig } from './config';
22
import Client from './client';
3-
import { initialize } from 'unleash-client';
3+
import { initialize, Unleash } from 'unleash-client';
44
import Metrics from 'unleash-client/lib/metrics';
55
import { defaultStrategies } from 'unleash-client/lib/strategy';
66

7-
export const createClient = (config: IProxyConfig): Client => {
7+
export const createSingletonClient = (config: IProxyConfig): Client => {
88
const customHeadersFunction = async () => ({
99
Authorization: config.unleashApiToken,
1010
});
@@ -40,3 +40,40 @@ export const createClient = (config: IProxyConfig): Client => {
4040

4141
return new Client(config, unleash, metrics);
4242
};
43+
44+
export const createNewClient = (config: IProxyConfig): Client => {
45+
const customHeadersFunction = async () => ({
46+
Authorization: config.unleashApiToken,
47+
});
48+
49+
const unleash = new Unleash({
50+
url: config.unleashUrl,
51+
appName: config.unleashAppName,
52+
instanceId: config.unleashInstanceId,
53+
environment: config.environment,
54+
refreshInterval: config.refreshInterval,
55+
projectName: config.projectName,
56+
strategies: config.customStrategies,
57+
disableMetrics: true,
58+
namePrefix: config.namePrefix,
59+
tags: config.tags,
60+
customHeadersFunction,
61+
bootstrap: config.bootstrap,
62+
storageProvider: config.storageProvider,
63+
...(!!config.httpOptions ? { httpOptions: config.httpOptions } : {}),
64+
});
65+
66+
const metrics = new Metrics({
67+
disableMetrics: config.disableMetrics,
68+
appName: config.unleashAppName,
69+
instanceId: config.unleashInstanceId,
70+
strategies: defaultStrategies.map((s) => s.name),
71+
metricsInterval: config.metricsInterval,
72+
metricsJitter: config.metricsJitter,
73+
url: config.unleashUrl,
74+
customHeadersFunction,
75+
...(!!config.httpOptions ? { httpOptions: config.httpOptions } : {}),
76+
});
77+
78+
return new Client(config, unleash, metrics);
79+
};

0 commit comments

Comments
 (0)