Skip to content

Commit 65e68cd

Browse files
committed
Merge branch 'main' into rlamb/sdk-710/automatic-start-streaming
2 parents 5a3c8b4 + 53f5bb8 commit 65e68cd

File tree

12 files changed

+92
-62
lines changed

12 files changed

+92
-62
lines changed

packages/sdk/browser/src/BrowserClient.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import {
22
AutoEnvAttributes,
33
base64UrlEncode,
4-
BasicLogger,
54
LDClient as CommonClient,
65
Configuration,
76
createSafeLogger,

packages/shared/sdk-client/__tests__/context/addAutoEnv.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
} from '@launchdarkly/js-sdk-common';
88
import { createBasicPlatform, createLogger } from '@launchdarkly/private-js-mocks';
99

10-
import Configuration from '../../src/configuration';
10+
import { Configuration, ConfigurationImpl } from '../../src/configuration';
1111
import {
1212
addApplicationInfo,
1313
addAutoEnv,
@@ -31,7 +31,7 @@ describe('automatic environment attributes', () => {
3131
beforeEach(() => {
3232
({ crypto, info } = mockPlatform);
3333
(crypto.randomUUID as jest.Mock).mockResolvedValue('test-device-key-1');
34-
config = new Configuration({ logger });
34+
config = new ConfigurationImpl({ logger });
3535
});
3636

3737
afterEach(() => {
@@ -338,7 +338,7 @@ describe('automatic environment attributes', () => {
338338

339339
describe('addApplicationInfo', () => {
340340
test('add id, version, name, versionName', async () => {
341-
config = new Configuration({
341+
config = new ConfigurationImpl({
342342
applicationInfo: {
343343
id: 'com.from-config.ld',
344344
version: '2.2.2',
@@ -431,7 +431,7 @@ describe('automatic environment attributes', () => {
431431
info.platformData = jest
432432
.fn()
433433
.mockReturnValueOnce({ ld_application: { version: null, locale: '' } });
434-
config = new Configuration({ applicationInfo: { version: '1.2.3' } });
434+
config = new ConfigurationImpl({ applicationInfo: { version: '1.2.3' } });
435435
const ldApplication = await addApplicationInfo(mockPlatform, config);
436436

437437
expect(ldApplication).toBeUndefined();

packages/shared/sdk-client/__tests__/diagnostics/createDiagnosticsInitConfig.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { secondsToMillis } from '@launchdarkly/js-sdk-common';
22

3-
import Configuration from '../../src/configuration';
3+
import { ConfigurationImpl } from '../../src/configuration';
44
import createDiagnosticsInitConfig, {
55
type DiagnosticsInitConfig,
66
} from '../../src/diagnostics/createDiagnosticsInitConfig';
@@ -9,7 +9,7 @@ describe('createDiagnosticsInitConfig', () => {
99
let initConfig: DiagnosticsInitConfig;
1010

1111
beforeEach(() => {
12-
initConfig = createDiagnosticsInitConfig(new Configuration());
12+
initConfig = createDiagnosticsInitConfig(new ConfigurationImpl());
1313
});
1414

1515
test('defaults', () => {
@@ -29,7 +29,7 @@ describe('createDiagnosticsInitConfig', () => {
2929

3030
test('non-default config', () => {
3131
const custom = createDiagnosticsInitConfig(
32-
new Configuration({
32+
new ConfigurationImpl({
3333
baseUri: 'https://dev.ld.com',
3434
streamUri: 'https://stream.ld.com',
3535
eventsUri: 'https://events.ld.com',

packages/shared/sdk-client/src/DataManager.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,20 @@ import { DataSourcePaths, StreamingProcessor } from './streaming';
2020
import { DeleteFlag, Flags, PatchFlag } from './types';
2121

2222
export interface DataManager {
23+
/**
24+
* This function handles the data management aspects of the identification process.
25+
*
26+
* Implementation Note: The identifyResolve and identifyReject function resolve or reject the
27+
* identify function at LDClient level. It is likely in individual implementations that these
28+
* functions will be passed to other components, such as a datasource, do indicate when the
29+
* identify process has been completed. The data manager identify function should return once
30+
* everything has been set in motion to complete the identification process.
31+
*
32+
* @param identifyResolve Called to reject the identify operation.
33+
* @param identifyReject Called to complete the identify operation.
34+
* @param context The context being identified.
35+
* @param identifyOptions Options for identification.
36+
*/
2337
identify(
2438
identifyResolve: () => void,
2539
identifyReject: (err: Error) => void,
@@ -28,6 +42,9 @@ export interface DataManager {
2842
): Promise<void>;
2943
}
3044

45+
/**
46+
* Factory interface for constructing data managers.
47+
*/
3148
export interface DataManagerFactory {
3249
(
3350
flagManager: FlagManager,

packages/shared/sdk-client/src/LDClientImpl.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ import {
2121
import { LDClient, type LDOptions } from './api';
2222
import { LDEvaluationDetail, LDEvaluationDetailTyped } from './api/LDEvaluationDetail';
2323
import { LDIdentifyOptions } from './api/LDIdentifyOptions';
24-
import ConfigurationImpl from './configuration';
25-
import { LDClientInternalOptions } from './configuration/Configuration';
24+
import { Configuration, ConfigurationImpl, LDClientInternalOptions } from './configuration';
2625
import { addAutoEnv } from './context/addAutoEnv';
2726
import { ensureKey } from './context/ensureKey';
2827
import { DataManager, DataManagerFactory } from './DataManager';
@@ -33,7 +32,7 @@ import {
3332
} from './evaluation/evaluationDetail';
3433
import createEventProcessor from './events/createEventProcessor';
3534
import EventFactory from './events/EventFactory';
36-
import DefaultFlagManager from './flag-manager/FlagManager';
35+
import DefaultFlagManager, { FlagManager } from './flag-manager/FlagManager';
3736
import { ItemDescriptor } from './flag-manager/ItemDescriptor';
3837
import LDEmitter, { EventName } from './LDEmitter';
3938
import { DeleteFlag, Flags, PatchFlag } from './types';

packages/shared/sdk-client/src/configuration/Configuration.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,17 @@ export interface Configuration {
5656
readonly trackEventModifier: (event: internal.InputCustomEvent) => internal.InputCustomEvent;
5757
}
5858

59-
export default class ConfigurationImpl implements Configuration {
60-
public static DEFAULT_POLLING = 'https://clientsdk.launchdarkly.com';
61-
public static DEFAULT_STREAM = 'https://clientstream.launchdarkly.com';
59+
const DEFAULT_POLLING: string = 'https://clientsdk.launchdarkly.com';
60+
const DEFAULT_STREAM: string = 'https://clientstream.launchdarkly.com';
61+
62+
export { DEFAULT_POLLING, DEFAULT_STREAM };
6263

64+
export default class ConfigurationImpl implements Configuration {
6365
public readonly logger: LDLogger = createSafeLogger();
6466

65-
public readonly baseUri = ConfigurationImpl.DEFAULT_POLLING;
67+
public readonly baseUri = DEFAULT_POLLING;
6668
public readonly eventsUri = ServiceEndpoints.DEFAULT_EVENTS;
67-
public readonly streamUri = ConfigurationImpl.DEFAULT_STREAM;
69+
public readonly streamUri = DEFAULT_STREAM;
6870

6971
public readonly maxCachedContexts = 5;
7072

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1-
import ConfigurationImpl from './Configuration';
1+
import ConfigurationImpl, {
2+
Configuration,
3+
DEFAULT_POLLING,
4+
DEFAULT_STREAM,
5+
LDClientInternalOptions,
6+
} from './Configuration';
27

3-
export default ConfigurationImpl;
8+
export {
9+
Configuration,
10+
ConfigurationImpl,
11+
LDClientInternalOptions,
12+
DEFAULT_POLLING,
13+
DEFAULT_STREAM,
14+
};

packages/shared/sdk-client/src/context/addAutoEnv.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
Platform,
1212
} from '@launchdarkly/js-sdk-common';
1313

14-
import ConfigurationImpl from '../configuration';
14+
import { Configuration } from '../configuration';
1515
import digest from '../crypto/digest';
1616
import { getOrGenerateKey } from '../storage/getOrGenerateKey';
1717
import { namespaceForGeneratedContextKey } from '../storage/namespaceUtils';
@@ -39,7 +39,7 @@ export const toMulti = (c: LDSingleKindContext) => {
3939
*/
4040
export const addApplicationInfo = async (
4141
{ crypto, info }: Platform,
42-
{ applicationInfo }: ConfigurationImpl,
42+
{ applicationInfo }: Configuration,
4343
): Promise<LDApplication | undefined> => {
4444
const { ld_application } = info.platformData();
4545
let app = deepCompact<LDApplication>(ld_application) ?? ({} as LDApplication);
@@ -103,11 +103,7 @@ export const addDeviceInfo = async (platform: Platform) => {
103103
return undefined;
104104
};
105105

106-
export const addAutoEnv = async (
107-
context: LDContext,
108-
platform: Platform,
109-
config: ConfigurationImpl,
110-
) => {
106+
export const addAutoEnv = async (context: LDContext, platform: Platform, config: Configuration) => {
111107
// LDUser is not supported for auto env reporting
112108
if (isLegacyUser(context)) {
113109
return context as LDUser;

packages/shared/sdk-client/src/diagnostics/createDiagnosticsInitConfig.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { secondsToMillis, ServiceEndpoints } from '@launchdarkly/js-sdk-common';
22

3-
import ConfigurationImpl from '../configuration';
3+
import { Configuration, DEFAULT_POLLING, DEFAULT_STREAM } from '../configuration';
44

55
export type DiagnosticsInitConfig = {
66
// client & server common properties
@@ -17,9 +17,9 @@ export type DiagnosticsInitConfig = {
1717
usingSecureMode: boolean;
1818
bootstrapMode: boolean;
1919
};
20-
const createDiagnosticsInitConfig = (config: ConfigurationImpl): DiagnosticsInitConfig => ({
21-
customBaseURI: config.baseUri !== ConfigurationImpl.DEFAULT_POLLING,
22-
customStreamURI: config.streamUri !== ConfigurationImpl.DEFAULT_STREAM,
20+
const createDiagnosticsInitConfig = (config: Configuration): DiagnosticsInitConfig => ({
21+
customBaseURI: config.baseUri !== DEFAULT_POLLING,
22+
customStreamURI: config.streamUri !== DEFAULT_STREAM,
2323
customEventsURI: config.eventsUri !== ServiceEndpoints.DEFAULT_EVENTS,
2424
eventsCapacity: config.capacity,
2525
eventsFlushIntervalMillis: secondsToMillis(config.flushInterval),

packages/shared/sdk-client/src/diagnostics/createDiagnosticsManager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { internal, Platform } from '@launchdarkly/js-sdk-common';
22

3-
import ConfigurationImpl from '../configuration';
3+
import { Configuration } from '../configuration';
44
import createDiagnosticsInitConfig from './createDiagnosticsInitConfig';
55

66
const createDiagnosticsManager = (
77
clientSideID: string,
8-
config: ConfigurationImpl,
8+
config: Configuration,
99
platform: Platform,
1010
) => {
1111
if (config.sendEvents && !config.diagnosticOptOut) {

0 commit comments

Comments
 (0)