Skip to content

Commit f25836c

Browse files
committed
Merge branch 'main' into rlamb/SDK-197/implement-secure-mode
2 parents 1fe9665 + 9ad25bd commit f25836c

File tree

105 files changed

+1468
-712
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

105 files changed

+1468
-712
lines changed

.github/workflows/mocks.yml

Lines changed: 0 additions & 25 deletions
This file was deleted.

.github/workflows/react-native-detox.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ on:
1616
- 'packages/shared/common/**'
1717
- 'packages/shared/sdk-client/**'
1818
- 'packages/sdk/react-native/**'
19-
- 'packages/shared/mocks/**'
2019

2120
jobs:
2221
detox-android:

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
"name": "@launchdarkly/js-core",
33
"workspaces": [
44
"packages/shared/common",
5-
"packages/shared/mocks",
65
"packages/shared/sdk-client",
76
"packages/shared/sdk-server",
87
"packages/shared/sdk-server-edge",

packages/sdk/browser/__tests__/BrowserDataManager.test.ts

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,6 @@ describe('given a BrowserDataManager with mocked dependencies', () => {
7474
};
7575
config = {
7676
logger,
77-
baseUri: 'string',
78-
eventsUri: 'string',
79-
streamUri: 'string',
8077
maxCachedContexts: 5,
8178
capacity: 100,
8279
diagnosticRecordingInterval: 1000,
@@ -289,20 +286,27 @@ describe('given a BrowserDataManager with mocked dependencies', () => {
289286

290287
it('should load cached flags and continue to poll to complete identify', async () => {
291288
const context = Context.fromLDContext({ kind: 'user', key: 'test-user' });
292-
const identifyOptions: BrowserIdentifyOptions = {};
293-
const identifyResolve = jest.fn();
294-
const identifyReject = jest.fn();
295289

296290
flagManager.loadCached.mockResolvedValue(true);
297291

298-
await dataManager.identify(identifyResolve, identifyReject, context, identifyOptions);
292+
let identifyResolve: () => void;
293+
let identifyReject: (err: Error) => void;
294+
await new Promise<void>((resolve) => {
295+
identifyResolve = jest.fn().mockImplementation(() => {
296+
resolve();
297+
});
298+
identifyReject = jest.fn();
299+
300+
// this is the function under test
301+
dataManager.identify(identifyResolve, identifyReject, context, {});
302+
});
299303

300304
expect(logger.debug).toHaveBeenCalledWith(
301305
'[BrowserDataManager] Identify - Flags loaded from cache. Continuing to initialize via a poll.',
302306
);
303307

304308
expect(flagManager.loadCached).toHaveBeenCalledWith(context);
305-
expect(identifyResolve).toHaveBeenCalled();
309+
expect(identifyResolve!).toHaveBeenCalled();
306310
expect(flagManager.init).toHaveBeenCalledWith(
307311
expect.anything(),
308312
expect.objectContaining({ flagA: { flag: true, version: undefined } }),
@@ -312,20 +316,25 @@ describe('given a BrowserDataManager with mocked dependencies', () => {
312316

313317
it('should identify from polling when there are no cached flags', async () => {
314318
const context = Context.fromLDContext({ kind: 'user', key: 'test-user' });
315-
const identifyOptions: BrowserIdentifyOptions = {};
316-
const identifyResolve = jest.fn();
317-
const identifyReject = jest.fn();
318319

319-
flagManager.loadCached.mockResolvedValue(false);
320+
let identifyResolve: () => void;
321+
let identifyReject: (err: Error) => void;
322+
await new Promise<void>((resolve) => {
323+
identifyResolve = jest.fn().mockImplementation(() => {
324+
resolve();
325+
});
326+
identifyReject = jest.fn();
320327

321-
await dataManager.identify(identifyResolve, identifyReject, context, identifyOptions);
328+
// this is the function under test
329+
dataManager.identify(identifyResolve, identifyReject, context, {});
330+
});
322331

323332
expect(logger.debug).not.toHaveBeenCalledWith(
324333
'Identify - Flags loaded from cache. Continuing to initialize via a poll.',
325334
);
326335

327336
expect(flagManager.loadCached).toHaveBeenCalledWith(context);
328-
expect(identifyResolve).toHaveBeenCalled();
337+
expect(identifyResolve!).toHaveBeenCalled();
329338
expect(flagManager.init).toHaveBeenCalledWith(
330339
expect.anything(),
331340
expect.objectContaining({ flagA: { flag: true, version: undefined } }),

packages/sdk/browser/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
},
4141
"devDependencies": {
4242
"@jest/globals": "^29.7.0",
43-
"@launchdarkly/private-js-mocks": "0.0.1",
4443
"@rollup/plugin-commonjs": "^25.0.0",
4544
"@rollup/plugin-json": "^6.1.0",
4645
"@rollup/plugin-node-resolve": "^15.0.2",

packages/sdk/browser/src/BrowserDataManager.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ import {
22
BaseDataManager,
33
Configuration,
44
Context,
5+
DataSourceErrorKind,
56
DataSourcePaths,
7+
DataSourceState,
68
FlagManager,
79
getPollingUri,
810
internal,
@@ -91,11 +93,24 @@ export default class BrowserDataManager extends BaseDataManager {
9193
// TODO: Handle wait for network results in a meaningful way. SDK-707
9294

9395
try {
96+
this.dataSourceStatusManager.requestStateUpdate(DataSourceState.Initializing);
9497
const payload = await requestor.requestPayload();
95-
const listeners = this.createStreamListeners(context, identifyResolve);
96-
const putListener = listeners.get('put');
97-
putListener!.processJson(putListener!.deserializeData(payload));
98+
try {
99+
const listeners = this.createStreamListeners(context, identifyResolve);
100+
const putListener = listeners.get('put');
101+
putListener!.processJson(putListener!.deserializeData(payload));
102+
} catch (e: any) {
103+
this.dataSourceStatusManager.reportError(
104+
DataSourceErrorKind.InvalidData,
105+
e.message ?? 'Could not parse poll response',
106+
);
107+
}
98108
} catch (e: any) {
109+
this.dataSourceStatusManager.reportError(
110+
DataSourceErrorKind.NetworkError,
111+
e.message ?? 'unexpected network error',
112+
e.status,
113+
);
99114
identifyReject(e);
100115
}
101116

packages/sdk/cloudflare/jsr.json

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,7 @@
33
"version": "2.5.14",
44
"exports": "./src/index.ts",
55
"publish": {
6-
"include": [
7-
"LICENSE",
8-
"README.md",
9-
"package.json",
10-
"jsr.json",
11-
"src/**/*.ts"
12-
],
13-
"exclude": [
14-
"src/**/*.test.ts"
15-
]
6+
"include": ["LICENSE", "README.md", "package.json", "jsr.json", "src/**/*.ts"],
7+
"exclude": ["src/**/*.test.ts"]
168
}
179
}

packages/sdk/react-native/__tests__/MobileDataManager.test.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,6 @@ describe('given a MobileDataManager with mocked dependencies', () => {
6363
};
6464
config = {
6565
logger,
66-
baseUri: 'string',
67-
eventsUri: 'string',
68-
streamUri: 'string',
6966
maxCachedContexts: 5,
7067
capacity: 100,
7168
diagnosticRecordingInterval: 1000,

packages/sdk/react-native/__tests__/fromExternal/react-native-sse/EventSource.test.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
1-
import { type EventName } from '@launchdarkly/js-client-sdk-common';
2-
import { createLogger } from '@launchdarkly/private-js-mocks';
1+
import { type EventName, LDLogger } from '@launchdarkly/js-client-sdk-common';
32

43
import EventSource, {
54
backoff,
65
jitter,
76
} from '../../../src/fromExternal/react-native-sse/EventSource';
87

9-
let logger: ReturnType<typeof createLogger>;
8+
let logger: LDLogger;
109

1110
beforeEach(() => {
12-
logger = createLogger();
11+
logger = {
12+
error: jest.fn(),
13+
warn: jest.fn(),
14+
info: jest.fn(),
15+
debug: jest.fn(),
16+
};
1317
});
1418

1519
describe('EventSource', () => {

packages/sdk/react-native/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
"base64-js": "^1.5.1"
4747
},
4848
"devDependencies": {
49-
"@launchdarkly/private-js-mocks": "0.0.1",
5049
"@testing-library/react": "^14.1.2",
5150
"@trivago/prettier-plugin-sort-imports": "^4.1.1",
5251
"@types/jest": "^29.5.11",

0 commit comments

Comments
 (0)