Skip to content

Commit 0d57f90

Browse files
LaunchDarklyReleaseBotyusintobwoskow-ldeli-darklyLaunchDarklyCI
authored
prepare 2.29.3 release (#173)
* Initial commit * Delete extraneous files from lib. * Update initLDClient.test.ts * Update withLDProvider.tsx (#18) * update JS SDK dependency to 2.16.3 * use JS SDK 2.17.0 * improve tests to clarify which options we're passing in and which ones are added by the wrapper * set wrapperName to react-client-sdk * lint * Update withLDProvider.test.tsx * update JS SDK to 2.17.5 + a few dev dependency bumps (#21) * downgrade typescript to 3.8.3 (#22) * [Fixes for] Expose LDProvider as a standalone component (#31) * remove startsWith usage (#23) * Fix the broken build (#24) * Expose ld provider (#40) * Add tests for the LDProvider * Add LDProvider component * Add LDProvider to main export * Update provider tests * Remove unused EnhancedComponent * Abstract function to generate react options * add waitForUserToInitializeClient flag to Provider * rename to LDProvider.tsx * fix tests * remove async from componentDidMount * fixes from CR * add test * cleanup * update types for componentDidUpdate * await initLDClient Co-authored-by: Nicholas Mitchell <[email protected]> Co-authored-by: Martin Heller <[email protected]> * update to JS SDK 2.18.0 (adds disableSyncEventPost) (#25) * 45 fix providers to respect subscribed flags (#46) * Fixed asyncWithLDProvider.tsx and provider.tsx so that they only provide flag changes for subscribed flags. * Removed unused imports. * Addressed PR feedback. Fixed linting errors. Co-authored-by: Clay Embry <[email protected]> * targetflags simplified logic (#26) * remove client-side ids from examples (#27) * update JS SDK to 2.18.1 * Fixing camelCaseKeys export (#44) * new js-common-sdk version (#30) * adding alias functionality (#31) * pin typedoc to unblock our releases (#32) * Removed the guides link * add inlineUsersToEvents to TypeScript defs by updating js-client-sdk (#33) * debugging * Fix linting errors * [ch103643] Fix examples to use local sdk * Remove unwanted changes. * Update package.json * Update yarn.lock * Update lock files. * Update package-lock.json * Update package-lock.json * Update package.json * Update link-dev.sh Co-authored-by: Ben Woskow <[email protected]> * Update link-dev.sh * Update yarn.lock * Add react 17 peer dep (#61) * Update common JS SDK library to use fixes for debug event generation issues. (#36) * HOC static hoisting (#71) * Added a test for hoisting react statics in withLDProvider HOC * Fixed linting errors * Fixed more linting errors * update example app deps (#38) * Updated asyncWithLDProvider to fetch latest flag values when the Provider renders (#39) * Updated asyncWithLDProvider to fetch latest flag values when the Provider renders * Fixed linting * Updates docs URLs * fix: improve types of withLDProvider (#97) * [sc-107070] Include src for sourcemaps to work * [sc-127032] Omit deferInitialization from asyncWithLDProvider config * Removed and ignored lock files. * Update types.ts * Update typescript version (#44) * Update Makefile * Update Makefile * Deleting test-types.ts (#45) * [sc-132394] Add typedoc for AsyncProviderConfig (#47) Co-authored-by: Molly <[email protected]> * Pass in client (#105) * [sc134057] Fix react sdk lint errors (#48) * remove custom TypeDoc build, use Releaser's standard logic (#49) * update js-client-sdk to 2.20.1 for localstorage error-handling fix and others * export more public symbols from entry point * [sc134364] Upgrade typescript, tslint and jest. (#50) Co-authored-by: Eli Bishop <[email protected]> * update js-client-sdk to 2.20.2 for sc-142333 fix (#53) * First commit. TODO: migrate enzyme to rtl. * Removed enzyme. Fixed prettier parentheses rule. * Fixed broken snapshot tests. Removed unused imports. * Update package.json * Update the version of the js-client-sdk * Update patch version. * Rename master to main (#56) * Set sendEventsOnlyForVariation by default * Add jest-environment-jsdom as explicit dependency * Fix TS error * Add jest-environment-jsdom as explicit dependency * Fix TS error * Update tests * Move wrapper options into base options obj * Target ES6 * Add tests for camel case cases * Remove vestigial package * Make targetFlags doc more clear * Add error hook and handler * Revert changes to original docs * Add context and flags proxy util * Use flags proxy and update tests * Fixup * Fixup * Don't call variation when initializing * Add option and failing test * Passing test * Remove incorrect comment and fix typo * Update proxy's get trap * except after c * Remove unproxied flags from context * Restore ldClient dec and clean up camelization * Update src/types.ts Co-authored-by: Molly <[email protected]> * Fixup * Handle symbols * Add type constraint to withLDProvider * Remove getter setter * Remove error handler and fix bad merge * Update snapshots * Update releaser config * Fixup * Update version of js-client-sdk used. (#82) * Upgrade js-client-sdk version to 2.24.0 (#83) * Upgrade common to 2.24.2 (#84) * Populate the context with the initial flag state and proxy. (#85) * [sc-178466] Bugfix flags proxy errors when using native functions (#91) * [sc-178466] Fix native function proxy errors * Added unit tests. * Fix ts any error * Update getFlagsProxy.test.ts Co-authored-by: Yusinto Ngadiman <[email protected]> * Update config.yml Co-authored-by: Yusinto Ngadiman <[email protected]> Co-authored-by: Ben Woskow <[email protected]> Co-authored-by: Eli Bishop <[email protected]> Co-authored-by: LaunchDarklyCI <[email protected]> Co-authored-by: Martin Heller <[email protected]> Co-authored-by: Ben Woskow <[email protected]> Co-authored-by: bezreyhan <[email protected]> Co-authored-by: Nicholas Mitchell <[email protected]> Co-authored-by: Martin Heller <[email protected]> Co-authored-by: clayembry <[email protected]> Co-authored-by: Clay Embry <[email protected]> Co-authored-by: Jonathan Felchlin <[email protected]> Co-authored-by: Mac Lockard <[email protected]> Co-authored-by: Gavin Whelan <[email protected]> Co-authored-by: Nathan Waddell <[email protected]> Co-authored-by: Clifford Tawiah <[email protected]> Co-authored-by: Cliff Tawiah <[email protected]> Co-authored-by: LaunchDarklyReleaseBot <[email protected]> Co-authored-by: Ember Stevens <[email protected]> Co-authored-by: ember-stevens <[email protected]> Co-authored-by: Derek Sifford <[email protected]> Co-authored-by: Jaz White <[email protected]> Co-authored-by: Molly <[email protected]> Co-authored-by: Tim Lee <[email protected]> Co-authored-by: Louis Chan <[email protected]> Co-authored-by: Louis Chan <[email protected]> Co-authored-by: Ryan Lamb <[email protected]> Co-authored-by: Christie Williams <[email protected]> Co-authored-by: Yusinto Ngadiman <[email protected]>
1 parent 7518c09 commit 0d57f90

File tree

3 files changed

+21
-13
lines changed

3 files changed

+21
-13
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
"check-typescript": "tsc",
3030
"prepublishOnly": "npm run build",
3131
"prettier": "prettier --write 'src/*.@(js|ts|tsx|json|css)'",
32-
"link-dev": "./link-dev.sh"
32+
"link-dev": "./link-dev.sh",
33+
"check": "npm i && npm run prettier && npm run lint && tsc && npm run test"
3334
},
3435
"repository": {
3536
"type": "git",

src/getFlagsProxy.test.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,6 @@ import { LDClient, LDFlagSet } from 'launchdarkly-js-client-sdk';
22
import getFlagsProxy from './getFlagsProxy';
33
import { defaultReactOptions } from './types';
44

5-
// tslint:disable-next-line: no-unsafe-any
6-
const variation = jest.fn((k: string): string | undefined => rawFlags[k]);
7-
8-
const ldClient = ({ variation } as unknown) as LDClient;
9-
105
const rawFlags: LDFlagSet = {
116
'foo-bar': 'foobar',
127
'baz-qux': 'bazqux',
@@ -17,8 +12,18 @@ const camelizedFlags: LDFlagSet = {
1712
bazQux: 'bazqux',
1813
};
1914

15+
// cast as unknown first to be able to partially mock ldClient
16+
const ldClient = ({ variation: jest.fn((flagKey) => rawFlags[flagKey] as string) } as unknown) as LDClient;
17+
2018
beforeEach(jest.clearAllMocks);
2119

20+
test('native Object functions should be ignored', () => {
21+
const { flags } = getFlagsProxy(ldClient, rawFlags);
22+
flags.hasOwnProperty('fooBar');
23+
flags.propertyIsEnumerable('bazQux');
24+
expect(ldClient.variation).not.toHaveBeenCalled();
25+
});
26+
2227
test('camel cases keys', () => {
2328
const { flags } = getFlagsProxy(ldClient, rawFlags);
2429

@@ -31,12 +36,12 @@ test('does not camel cases keys', () => {
3136
expect(flags).toEqual(rawFlags);
3237
});
3338

34-
test('proxy calls variation on flag read', () => {
39+
test('proxy calls ldClient.variation on flag read', () => {
3540
const { flags } = getFlagsProxy(ldClient, rawFlags);
3641

3742
expect(flags.fooBar).toBe('foobar');
3843

39-
expect(variation).toHaveBeenCalledWith('foo-bar', 'foobar');
44+
expect(ldClient.variation).toHaveBeenCalledWith('foo-bar', 'foobar');
4045
});
4146

4247
test('returns flag key map', () => {
@@ -56,5 +61,5 @@ test('does not use proxy if option is false', () => {
5661

5762
expect(flags['foo-bar']).toBe('foobar');
5863

59-
expect(variation).not.toHaveBeenCalled();
64+
expect(ldClient.variation).not.toHaveBeenCalled();
6065
});

src/getFlagsProxy.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,19 @@ function toFlagsProxy(ldClient: LDClient, flags: LDFlagSet, flagKeyMap: LDFlagKe
5858
// trap for reading a flag value using `LDClient#variation` to trigger an evaluation event
5959
get(target, prop, receiver) {
6060
const currentValue = Reflect.get(target, prop, receiver);
61-
if (typeof prop === 'symbol') {
61+
62+
// only process flag keys and ignore symbols and native Object functions
63+
if (typeof prop === 'symbol' || !hasFlag(flagKeyMap, prop)) {
6264
return currentValue;
6365
}
66+
6467
if (currentValue === undefined) {
6568
return;
6669
}
67-
const originalFlagKey = hasFlag(flagKeyMap, prop) ? flagKeyMap[prop] : prop;
68-
const nextValue = ldClient.variation(originalFlagKey, currentValue);
6970

70-
return nextValue;
71+
return ldClient.variation(flagKeyMap[prop], currentValue);
7172
},
73+
7274
// disable all mutation functions to make proxy readonly
7375
setPrototypeOf: () => false,
7476
set: () => false,

0 commit comments

Comments
 (0)