Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prepare 2.9.0 release #131

Merged
merged 228 commits into from
Feb 2, 2019
Merged
Changes from 3 commits
Commits
Show all changes
228 commits
Select commit Hold shift + click to select a range
130c880
initial restructuring of project to use Lerna
eli-darkly Oct 9, 2018
2fc1f55
fix CI build
eli-darkly Oct 9, 2018
e8f1d09
fix CI build again
eli-darkly Oct 9, 2018
6d867ed
keep CONTRIBUTING at top level
eli-darkly Oct 9, 2018
c8e8062
Merge pull request #106 from launchdarkly/eb/lerna-initial
eli-darkly Oct 9, 2018
19bbdc4
create common package, move one file into it
eli-darkly Oct 9, 2018
e0ef914
linter
eli-darkly Oct 9, 2018
db2e776
rm keywords
eli-darkly Oct 9, 2018
a12ac4f
move entire client implementation into common package
eli-darkly Oct 10, 2018
e040578
rm unused code
eli-darkly Oct 10, 2018
4b1af0b
linter
eli-darkly Oct 10, 2018
f95c5d2
add desultory test
eli-darkly Oct 10, 2018
2cab87d
rm unused code
eli-darkly Oct 10, 2018
969fdb3
move references to doNotTrack and window.location.href into browser-s…
eli-darkly Oct 10, 2018
8fbbf60
linter
eli-darkly Oct 10, 2018
ddf1b6a
indent
eli-darkly Oct 10, 2018
7aa75eb
linter
eli-darkly Oct 10, 2018
ad0fdca
move eslint config up to top level
eli-darkly Oct 11, 2018
28b750e
move prettier config up to top level
eli-darkly Oct 11, 2018
f87e7a1
move Babel config to top level
eli-darkly Oct 11, 2018
5dab7ce
Merge branch 'eb/common-code' into eb/move-client-impl
eli-darkly Oct 11, 2018
5a43b58
Merge branch 'eb/move-client-impl' into eb/move-donnottrack-and-url
eli-darkly Oct 11, 2018
767bf1b
refactor config validation + make config available to platform client
eli-darkly Oct 11, 2018
f4acf35
linter
eli-darkly Oct 11, 2018
ab85c2e
move some usages of "window" into ldclient-js
eli-darkly Oct 11, 2018
b807b45
linter
eli-darkly Oct 11, 2018
da749e5
move all goals logic into ldclient-js
eli-darkly Oct 11, 2018
651c44e
move EventSource implementation into ldclient-js
eli-darkly Oct 12, 2018
7684a33
abstract out references to XmlHttpRequest
eli-darkly Oct 12, 2018
4776597
turn off pointless linter warning
eli-darkly Oct 12, 2018
48a88d7
make JS client tolerant of XMLHttpRequest not existing
eli-darkly Oct 12, 2018
b0ecccc
misc test improvements
eli-darkly Oct 12, 2018
2d9b903
rm duplicate vars
eli-darkly Oct 12, 2018
5fefab5
tolerate lack of EventSource
eli-darkly Oct 12, 2018
8016918
Merge pull request #107 from launchdarkly/eb/common-code
eli-darkly Oct 16, 2018
72b04f7
Merge pull request #108 from launchdarkly/eb/move-client-impl
eli-darkly Oct 16, 2018
3b2deaf
Merge pull request #109 from launchdarkly/eb/move-donnottrack-and-url
eli-darkly Oct 16, 2018
face166
Merge pull request #110 from launchdarkly/eb/refactor-config
eli-darkly Oct 16, 2018
0fd0dca
Merge pull request #111 from launchdarkly/eb/el5-move-window-stuff
eli-darkly Oct 16, 2018
dca612a
Merge pull request #112 from launchdarkly/eb/el6-move-goals
eli-darkly Oct 16, 2018
4d52b90
Improve linting (#116)
apucacao Oct 17, 2018
94ca27f
Merge pull request #113 from launchdarkly/eb/el7-move-eventsource
eli-darkly Oct 18, 2018
dbd044a
Merge pull request #114 from launchdarkly/eb/el8-http
eli-darkly Oct 18, 2018
289e282
Merge branch 'master' into electron
eli-darkly Oct 18, 2018
d3f2634
linter
eli-darkly Oct 18, 2018
5f5b650
remove remaining reference to window.EventSource in common code
eli-darkly Oct 18, 2018
f3aaf66
linter
eli-darkly Oct 18, 2018
37eeea4
abstract out local storage mechanism
eli-darkly Oct 18, 2018
539db5d
add basic Electron package
eli-darkly Oct 22, 2018
1f4b7a8
misc fixes to make Node code build
eli-darkly Oct 24, 2018
7f1f162
update package-lock
eli-darkly Oct 24, 2018
cc2565c
Update rollup dependencies and fix rollup build
zmdavis Oct 24, 2018
a9e64c4
Merge pull request #118 from launchdarkly/zdavis/electron
eli-darkly Oct 24, 2018
b94970d
update copyright year
eli-darkly Oct 29, 2018
e9653ba
rm unused file
eli-darkly Oct 29, 2018
605b35a
rm build artifacts
eli-darkly Oct 29, 2018
686afe2
gitignore
eli-darkly Oct 29, 2018
f3e52d6
fix filenames
eli-darkly Oct 29, 2018
6a650be
fix filename
eli-darkly Oct 29, 2018
bbbb6f3
run tests for other packages
eli-darkly Nov 2, 2018
06fcc77
Fix electron `.babelrc` for test env
zmdavis Nov 2, 2018
473bcbf
Merge branch 'el11-electron-base' of github.com:launchdarkly/js-clien…
zmdavis Nov 2, 2018
1a262f1
Change electron package babelrc to point to point to root babelrc
zmdavis Nov 2, 2018
c2cf2a5
run unit tests in Electron environment
eli-darkly Nov 2, 2018
1c85bcb
Merge pull request #117 from launchdarkly/el9-eventsource-fix
eli-darkly Nov 9, 2018
93c4368
Merge pull request #119 from launchdarkly/el10-local-storage
eli-darkly Nov 9, 2018
4a30fbf
add Electron local storage implementation
eli-darkly Nov 9, 2018
fdd57e4
fix TypeScript def for event name and add documentation
eli-darkly Nov 9, 2018
6b43e9a
comment edit
eli-darkly Nov 9, 2018
d6c0f62
Merge pull request #121 from launchdarkly/eb/ch26618/event-name-ts
eli-darkly Nov 9, 2018
01fd3c7
Merge branch 'electron' into el11-electron-base
eli-darkly Nov 16, 2018
bf83c88
Merge branch 'el11-electron-base' into el12-electron-storage
eli-darkly Nov 16, 2018
b995135
factor out common rollup configuration
eli-darkly Nov 20, 2018
d9ef9ea
factor out common rollup configuration
eli-darkly Nov 20, 2018
e0dbbfe
Merge pull request #120 from launchdarkly/el11-electron-base
eli-darkly Nov 21, 2018
04570a1
Merge branch 'electron' into el12-electron-storage
eli-darkly Nov 21, 2018
65e44c1
replace Base64 dependency with a package that has a lowercase name
eli-darkly Nov 21, 2018
6baa06e
use a different package due to import problems
eli-darkly Nov 21, 2018
d5228b6
linter
eli-darkly Nov 21, 2018
b3c1778
Merge pull request #124 from launchdarkly/eb/ch26918/base64-dep
eli-darkly Nov 21, 2018
c1ef0cb
override short default timeout in one EventSource polyfill
eli-darkly Nov 21, 2018
6bdeb15
linter
eli-darkly Nov 21, 2018
1ca4a76
linter
eli-darkly Nov 21, 2018
a44c1ba
misc fixes to async store logic + tests
eli-darkly Nov 21, 2018
7f02aea
add Electron storage tests
eli-darkly Nov 21, 2018
c7dbbfd
simplify test code
eli-darkly Nov 21, 2018
f938859
rm no-op line
eli-darkly Nov 21, 2018
c2fe238
less specific assertion
eli-darkly Nov 21, 2018
6e67a0b
use Electron test runner
eli-darkly Nov 21, 2018
866bef9
linter
eli-darkly Nov 21, 2018
1587282
add tests for localStorage wrapper in ldclient-js
eli-darkly Nov 21, 2018
3f439ce
use newer Node in CI (since test code uses async)
eli-darkly Nov 21, 2018
0528eaf
linter
eli-darkly Nov 21, 2018
c22dcd0
set up CI environment so Electron can run
eli-darkly Nov 21, 2018
38b2152
rearrange commands so xvfb will be running when we need it
eli-darkly Nov 21, 2018
8267460
fix xvfb command again
eli-darkly Nov 21, 2018
8fffe9a
revert formatting change
eli-darkly Nov 21, 2018
7246704
misc fixes
eli-darkly Nov 22, 2018
aaa3a0f
Merge pull request #125 from launchdarkly/eb/ch27026/eventsource-config
eli-darkly Nov 22, 2018
0101947
Merge branch 'master' of github.com:launchdarkly/js-client
eli-darkly Nov 22, 2018
d6b2d68
Merge branch 'master' of github.com:launchdarkly/js-client
eli-darkly Nov 22, 2018
800999b
Merge branch 'master' of github.com:launchdarkly/js-client
eli-darkly Nov 22, 2018
9581a12
Merge branch 'master' into electron
eli-darkly Nov 22, 2018
dda6728
Merge branch 'electron' into el12-electron-storage
eli-darkly Nov 22, 2018
04dfa82
various dependency fixes
eli-darkly Nov 22, 2018
f14eb6c
Merge branch 'electron' into el12-electron-storage
eli-darkly Nov 22, 2018
ee7ceaf
add package-lock
eli-darkly Nov 24, 2018
0786a48
allow streaming mode to be decoupled from event subscription
eli-darkly Nov 24, 2018
bb29194
misc cleanup
eli-darkly Nov 24, 2018
ad873d5
support REPORT mode for streams in Electron
eli-darkly Nov 24, 2018
f8442c0
linter
eli-darkly Nov 24, 2018
9657073
mechanism for keeping renderer process client in sync with main proce…
eli-darkly Nov 26, 2018
cbd5da6
fix CJS build problem
eli-darkly Nov 26, 2018
3e44778
fix comment
eli-darkly Nov 26, 2018
4fbd0f7
always set flag
eli-darkly Nov 26, 2018
1dccda9
linter
eli-darkly Nov 26, 2018
b5a4c1d
build debugging
eli-darkly Nov 26, 2018
b6de599
add missing dependency
eli-darkly Nov 26, 2018
356656d
Revert "build debugging"
eli-darkly Nov 26, 2018
5d116db
revert unnecessary Rollup config changes
eli-darkly Nov 26, 2018
aa9a748
syntax error
eli-darkly Nov 26, 2018
9264073
Merge pull request #126 from launchdarkly/el12-electron-storage
eli-darkly Nov 27, 2018
45e379e
Merge pull request #128 from launchdarkly/el13-electron-eventsource
eli-darkly Nov 27, 2018
7d01d46
Merge branch 'electron' into el14-pairing
eli-darkly Nov 27, 2018
a394c19
Merge pull request #130 from launchdarkly/el14-pairing
eli-darkly Nov 27, 2018
624afa8
expand unit test to make sure off() really works
eli-darkly Nov 27, 2018
24bb4c4
linter
eli-darkly Nov 27, 2018
4bba83f
simplify code using spread operator
eli-darkly Nov 27, 2018
e15b202
Merge pull request #127 from launchdarkly/eb/ch25474-ch18940/change-e…
eli-darkly Nov 27, 2018
525ca37
fire change event when updating flags after bootstrap from localstorage
eli-darkly Nov 27, 2018
af0fcfc
linter
eli-darkly Nov 27, 2018
45fc561
Merge pull request #131 from launchdarkly/eb/ch27394/change-event-aft…
eli-darkly Nov 27, 2018
c66bbd3
Merge branch 'master' into electron
eli-darkly Nov 28, 2018
45f32af
use published eventsource fork
eli-darkly Nov 28, 2018
a01970e
trying to determine why ES constructor isn't working
eli-darkly Nov 28, 2018
55b9e6e
add end-to-end tests for event source
eli-darkly Nov 28, 2018
b424fab
linter
eli-darkly Nov 28, 2018
73c4eb2
Merge pull request #132 from launchdarkly/eb/ch27429/eventsource-fork
eli-darkly Nov 28, 2018
7aff7f0
funnel analytics events from renderer processes into main process client
eli-darkly Nov 28, 2018
b855966
clarify logic
eli-darkly Nov 28, 2018
5590fe0
disallow identify() when client is synced with another client
eli-darkly Nov 28, 2018
41b1b2e
fix typos
brooswit Nov 29, 2018
84441c2
Merge pull request #135 from launchdarkly/jw/ch27493/readme-typos
Nov 29, 2018
b4008c7
create logging interface, use winston logging in Electron
eli-darkly Nov 29, 2018
96ae69c
expose logger for constructors
eli-darkly Nov 29, 2018
a4e07d4
use deep compare to decide whether a flag value has changed
eli-darkly Nov 29, 2018
bb6ae36
add Node SDK emulation mode in Electron
eli-darkly Nov 29, 2018
e296c74
rm unused import
eli-darkly Nov 29, 2018
929e079
use correct promise/callback semantics
eli-darkly Nov 29, 2018
c0936bd
Merge branch 'master' into electron
eli-darkly Nov 29, 2018
231df47
Merge branch 'electron' into eb/ch27413/disable-identify
eli-darkly Nov 30, 2018
63a1b16
Merge branch 'eb/ch27413/disable-identify' into eb/ch27471/logging
eli-darkly Nov 30, 2018
dcf59a0
Merge branch 'eb/ch27471/logging' into eb/ch27414/node-wrapper
eli-darkly Nov 30, 2018
097896e
Merge pull request #137 from launchdarkly/eb/ch27500/deep-equals
eli-darkly Nov 30, 2018
cf1c388
Merge pull request #134 from launchdarkly/eb/ch27413/disable-identify
eli-darkly Nov 30, 2018
6d533f0
Merge branch 'electron' into eb/ch27471/logging
eli-darkly Nov 30, 2018
a81869c
Merge branch 'master' into electron
eli-darkly Nov 30, 2018
3444c59
Merge branch 'electron' into eb/ch27471/logging
eli-darkly Nov 30, 2018
9c74b1d
fix merge error
eli-darkly Nov 30, 2018
1b64d7b
Merge branch 'electron' into eb/ch27471/logging
eli-darkly Nov 30, 2018
0ff178f
Merge branch 'electron' into eb/ch27412/electron-events
eli-darkly Nov 30, 2018
bc6fcfe
Merge branch 'eb/ch27471/logging' into eb/ch27414/node-wrapper
eli-darkly Nov 30, 2018
19425e0
fix merge
eli-darkly Nov 30, 2018
174d1aa
capitalize original function name
eli-darkly Nov 30, 2018
f06d2d2
Merge branch 'eb/ch27471/logging' into eb/ch27414/node-wrapper
eli-darkly Nov 30, 2018
e2f95e1
update TypeScript defs for all client variants
eli-darkly Nov 30, 2018
c278a2e
rm unused
eli-darkly Nov 30, 2018
5fa2046
update readmes, misc fixes
eli-darkly Dec 1, 2018
7b6e47c
explanation of Node mode
eli-darkly Dec 1, 2018
50ca30a
Rename ConsoleLogger.js to consoleLogger.js
eli-darkly Dec 1, 2018
6797c2a
fix function name
eli-darkly Dec 1, 2018
08f58a2
Merge branch 'eb/ch27502/typescript' of github.com:launchdarkly/js-cl…
eli-darkly Dec 1, 2018
81fed16
rm unused variable
eli-darkly Dec 1, 2018
697ab25
describe Do Not Track
eli-darkly Dec 3, 2018
dd10283
misc fixes
eli-darkly Dec 3, 2018
f26a113
CI diagnostic output
eli-darkly Dec 3, 2018
828730b
Merge pull request #133 from launchdarkly/eb/ch27412/electron-events
eli-darkly Dec 3, 2018
311fcf1
Merge branch 'electron' into eb/ch27471/logging
eli-darkly Dec 3, 2018
0670f77
Merge pull request #136 from launchdarkly/eb/ch27471/logging
eli-darkly Dec 3, 2018
da99064
rename the Node adapter function and simplify how it works
eli-darkly Dec 3, 2018
f3f3ab6
Merge pull request #138 from launchdarkly/eb/ch27414/node-wrapper
eli-darkly Dec 3, 2018
3345d72
Merge branch 'electron' into eb/ch27502/typescript
eli-darkly Dec 3, 2018
d5a83f7
updates for renamed function
eli-darkly Dec 3, 2018
5f96d21
fix test
eli-darkly Dec 3, 2018
f32d048
Merge pull request #139 from launchdarkly/eb/ch27502/typescript
eli-darkly Dec 3, 2018
48e60c5
comments
eli-darkly Dec 3, 2018
18f3489
Merge branch 'eb/debug-build' into electron
eli-darkly Dec 3, 2018
1541d44
rename initializeMain() to be consistent with initializeInRenderer()
eli-darkly Dec 3, 2018
94c170a
Merge pull request #140 from launchdarkly/eb/rename-init
eli-darkly Dec 3, 2018
28cfa7c
add method def
eli-darkly Dec 3, 2018
8775d58
Merge branch 'electron' of github.com:launchdarkly/js-client-private …
eli-darkly Dec 3, 2018
a5603c6
Merge branch 'master' of github.com:launchdarkly/js-client
eli-darkly Dec 3, 2018
8371e0c
Merge branch 'master' of github.com:launchdarkly/js-client-private in…
eli-darkly Dec 3, 2018
71d6811
v2.9.0-alpha.1
eli-darkly Dec 3, 2018
bbf63b4
2.9.0 changelog
eli-darkly Dec 3, 2018
a9c1132
add concurrency flag so lerna won't consume so much memory in CI
eli-darkly Dec 4, 2018
64a33d6
rm debug output
eli-darkly Dec 4, 2018
7835cff
fix Electron client synchronization problem
eli-darkly Dec 5, 2018
b7f7d88
linter
eli-darkly Dec 5, 2018
373def2
test comment
eli-darkly Dec 5, 2018
ef2c7e5
Merge pull request #141 from launchdarkly/eb/fix-client-sync
eli-darkly Dec 5, 2018
91beee6
v2.9.0-alpha.2
eli-darkly Dec 5, 2018
ecf63fd
minor readme edit
eli-darkly Dec 6, 2018
af2afd6
add debug logging for various things
eli-darkly Dec 6, 2018
6b04f4b
linter
eli-darkly Dec 6, 2018
c7542a0
use different User-Agent for Electron
eli-darkly Dec 6, 2018
efc137b
Merge pull request #143 from launchdarkly/eb/ch27930/user-agent
eli-darkly Dec 6, 2018
967ce7c
Merge branch 'electron' of github.com:launchdarkly/js-client-private …
eli-darkly Dec 6, 2018
6ba6272
fix how logger is passed around
eli-darkly Dec 6, 2018
797d7e7
don't send extra feature events when getting flags from Electron main…
eli-darkly Dec 6, 2018
465e55b
add tests for events from allFlags()
eli-darkly Dec 6, 2018
ba3b861
Merge pull request #142 from launchdarkly/eb/debug-logging
eli-darkly Dec 7, 2018
36ca531
Merge pull request #144 from launchdarkly/eb/ch27412/dedup-events
eli-darkly Dec 7, 2018
15fea55
final readme updates for beta
eli-darkly Dec 7, 2018
96a3e0b
Merge pull request #145 from launchdarkly/eb/more-readme
eli-darkly Dec 7, 2018
17d2304
v2.9.0-beta.1
eli-darkly Dec 7, 2018
5b59330
remove ldclient-electron package
eli-darkly Jan 29, 2019
c74d952
update build
eli-darkly Jan 29, 2019
b9e9f21
update readmes
eli-darkly Jan 29, 2019
96e9293
rm extra readme
eli-darkly Jan 29, 2019
a0d22cb
Merge pull request #151 from launchdarkly/eb/30755/remove-electron
eli-darkly Jan 31, 2019
a475650
React SDK from Electron (#149)
yusinto Jan 31, 2019
6936c32
reorganize readme content into 3 files
eli-darkly Feb 1, 2019
a94be76
add doc links
eli-darkly Feb 1, 2019
30bc775
don't mention props and HOCs
eli-darkly Feb 1, 2019
6d7407c
revise JS SDK vs. React features
eli-darkly Feb 1, 2019
1636857
reorganize readmes again
eli-darkly Feb 2, 2019
6ec82bc
Merge pull request #152 from launchdarkly/eb/ch31024/readmes
eli-darkly Feb 2, 2019
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: 12 additions & 1 deletion packages/ldclient-electron/src/__tests__/LDClient-test.js
Original file line number Diff line number Diff line change
@@ -34,7 +34,7 @@ describe('LDClient', () => {
describe('initialization', () => {
it('should trigger the ready event', done => {
const handleReady = jest.fn();
const client = LDClient.initializeInMain(envName, user, { bootstrap: {}, sendEvents: false });
const client = LDClient.initializeInMain(envName, user, { bootstrap: {}, mockHttp: true, sendEvents: false });

client.on('ready', handleReady);

@@ -43,12 +43,23 @@ describe('LDClient', () => {
done();
}, 0);
});

it('sends correct User-Agent in request', done => {
LDClient.initializeInMain(envName, user, { mockHttp: true });

setTimeout(() => {
expect(requests.length).toEqual(1);
expect(requests[0].requestHeaders['X-LaunchDarkly-User-Agent']).toMatch(/^ElectronClient\//);
done();
}, 0);
});
});

describe('track()', () => {
it('should not warn when tracking an arbitrary custom event', done => {
const client = LDClient.initializeInMain(envName, user, {
bootstrap: {},
mockHttp: true,
sendEvents: false,
logger: LDClient.createConsoleLogger('warn'),
});
2 changes: 2 additions & 0 deletions packages/ldclient-electron/src/electronPlatform.js
Original file line number Diff line number Diff line change
@@ -25,5 +25,7 @@ export default function makeElectronPlatform(options) {
ret.eventSourceIsActive = es => es.readyState === EventSource.OPEN || es.readyState === EventSource.CONNECTING;
ret.eventSourceAllowsReport = true;

ret.userAgent = 'ElectronClient';

return ret;
}
2 changes: 1 addition & 1 deletion packages/ldclient-js-common/src/EventSender.js
Original file line number Diff line number Diff line change
@@ -35,7 +35,7 @@ export default function EventSender(platform, eventsUrl, environmentId, imageCre
function createRequest(canRetry) {
const xhr = platform.newHttpRequest();
xhr.open('POST', postUrl, !sync);
utils.addLDHeaders(xhr);
utils.addLDHeaders(xhr, platform);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('X-LaunchDarkly-Event-Schema', '3');
if (!sync) {
2 changes: 1 addition & 1 deletion packages/ldclient-js-common/src/Requestor.js
Original file line number Diff line number Diff line change
@@ -59,7 +59,7 @@ export default function Requestor(platform, options, environment) {
}

if (sendLDHeaders) {
utils.addLDHeaders(xhr);
utils.addLDHeaders(xhr, platform);
}

xhr.send(data);
Original file line number Diff line number Diff line change
@@ -141,7 +141,7 @@ describe('EventSender', () => {
const event = { kind: 'identify', key: 'userKey' };
sender.sendEvents([event], false);
lastRequest().respond();
expect(lastRequest().requestHeaders['X-LaunchDarkly-User-Agent']).toEqual(utils.getLDUserAgentString());
expect(lastRequest().requestHeaders['X-LaunchDarkly-User-Agent']).toEqual(utils.getLDUserAgentString(platform));
});

const retryableStatuses = [400, 408, 429, 500, 503];
2 changes: 1 addition & 1 deletion packages/ldclient-js-common/src/__tests__/LDClient-test.js
Original file line number Diff line number Diff line change
@@ -217,7 +217,7 @@ describe('LDClient', () => {
platform.testing.makeClient(envName, user, { sendLDHeaders: sendLDHeaders });
const request = requests[0];
expect(request.requestHeaders['X-LaunchDarkly-User-Agent']).toEqual(
shouldGetHeaders ? utils.getLDUserAgentString() : undefined
shouldGetHeaders ? utils.getLDUserAgentString(platform) : undefined
);
}

8 changes: 6 additions & 2 deletions packages/ldclient-js-common/src/__tests__/Requestor-test.js
Original file line number Diff line number Diff line change
@@ -178,7 +178,9 @@ describe('Requestor', () => {
requestor.fetchFlagSettings(user, 'hash1', sinon.spy());

expect(server.requests.length).toEqual(1);
expect(server.requests[0].requestHeaders['X-LaunchDarkly-User-Agent']).toEqual(utils.getLDUserAgentString());
expect(server.requests[0].requestHeaders['X-LaunchDarkly-User-Agent']).toEqual(
utils.getLDUserAgentString(platform)
);
});

it('should send custom user-agent header in REPORT mode when sendLDHeaders is true', () => {
@@ -187,7 +189,9 @@ describe('Requestor', () => {
requestor.fetchFlagSettings(user, 'hash1', sinon.spy());

expect(server.requests.length).toEqual(1);
expect(server.requests[0].requestHeaders['X-LaunchDarkly-User-Agent']).toEqual(utils.getLDUserAgentString());
expect(server.requests[0].requestHeaders['X-LaunchDarkly-User-Agent']).toEqual(
utils.getLDUserAgentString(platform)
);
});

it('should NOT send custom user-agent header when sendLDHeaders is false', () => {
1 change: 1 addition & 0 deletions packages/ldclient-js-common/src/__tests__/stubPlatform.js
Original file line number Diff line number Diff line change
@@ -37,6 +37,7 @@ export function defaults() {
setTimeout(() => callback(null), 0);
},
},
userAgent: 'stubClient',

// extra methods used for testing
testing: {
8 changes: 4 additions & 4 deletions packages/ldclient-js-common/src/utils.js
Original file line number Diff line number Diff line change
@@ -143,12 +143,12 @@ export function chunkUserEventsForUrl(maxLength, events) {
return allChunks;
}

export function getLDUserAgentString() {
return 'JSClient/' + VERSION;
export function getLDUserAgentString(platform) {
return platform.userAgent + '/' + VERSION;
}

export function addLDHeaders(xhr) {
xhr.setRequestHeader('X-LaunchDarkly-User-Agent', getLDUserAgentString());
export function addLDHeaders(xhr, platform) {
xhr.setRequestHeader('X-LaunchDarkly-User-Agent', getLDUserAgentString(platform));
}

export function extend(...objects) {
10 changes: 10 additions & 0 deletions packages/ldclient-js/src/__tests__/LDClient-test.js
Original file line number Diff line number Diff line change
@@ -52,6 +52,16 @@ describe('LDClient', () => {
expect(requests.length).toEqual(1);
expect(/sdk\/eval/.test(requests[0].url)).toEqual(false); // it's the goals request
});

it('sends correct User-Agent in request', done => {
LDClient.initialize(envName, user, { fetchGoals: false });

setTimeout(() => {
expect(requests.length).toEqual(1);
expect(requests[0].requestHeaders['X-LaunchDarkly-User-Agent']).toMatch(/^JSClient\//);
done();
}, 0);
});
});

describe('goals', () => {
2 changes: 2 additions & 0 deletions packages/ldclient-js/src/browserPlatform.js
Original file line number Diff line number Diff line change
@@ -80,5 +80,7 @@ export default function makeBrowserPlatform() {

ret.eventSourceAllowsReport = false;

ret.userAgent = 'JSClient';

return ret;
}