mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
chore(deps): Update LaunchDarkly clients (#167765)
This commit is contained in:
parent
4690d04c40
commit
b58e06b2a9
6 changed files with 61 additions and 68 deletions
|
@ -936,8 +936,8 @@
|
|||
"jsts": "^1.6.2",
|
||||
"kea": "^2.4.2",
|
||||
"langchain": "^0.0.151",
|
||||
"launchdarkly-js-client-sdk": "^2.22.1",
|
||||
"launchdarkly-node-server-sdk": "^6.4.2",
|
||||
"launchdarkly-js-client-sdk": "^3.1.4",
|
||||
"launchdarkly-node-server-sdk": "^7.0.3",
|
||||
"load-json-file": "^6.2.0",
|
||||
"lodash": "^4.17.21",
|
||||
"lru-cache": "^4.1.5",
|
||||
|
|
|
@ -40,6 +40,9 @@ describe('LaunchDarklyClient - browser', () => {
|
|||
avatar: 'fake-blue-avatar',
|
||||
ip: 'my-weird-ip',
|
||||
country: 'distributed',
|
||||
// intentionally adding this to make sure the code is overriding appropriately
|
||||
kind: 'other kind',
|
||||
key: 'other user',
|
||||
};
|
||||
|
||||
const extraFields = {
|
||||
|
@ -52,9 +55,10 @@ describe('LaunchDarklyClient - browser', () => {
|
|||
expect(launchDarklyLibraryMock.initialize).toHaveBeenCalledWith(
|
||||
'fake-client-id',
|
||||
{
|
||||
key: 'fake-user-id',
|
||||
...topFields,
|
||||
custom: extraFields,
|
||||
...extraFields,
|
||||
kind: 'user',
|
||||
key: 'fake-user-id',
|
||||
},
|
||||
{
|
||||
application: { id: 'kibana-browser', version: 'version' },
|
||||
|
@ -73,8 +77,9 @@ describe('LaunchDarklyClient - browser', () => {
|
|||
expect(launchDarklyLibraryMock.initialize).toHaveBeenCalledWith(
|
||||
'fake-client-id',
|
||||
{
|
||||
kind: 'user',
|
||||
key: 'fake-user-id',
|
||||
custom: { kibanaVersion: 'version' },
|
||||
kibanaVersion: 'version',
|
||||
},
|
||||
{
|
||||
application: { id: 'kibana-browser', version: 'version' },
|
||||
|
@ -92,8 +97,9 @@ describe('LaunchDarklyClient - browser', () => {
|
|||
expect(launchDarklyLibraryMock.initialize).toHaveBeenCalledWith(
|
||||
'fake-client-id',
|
||||
{
|
||||
kind: 'user',
|
||||
key: 'fake-user-id',
|
||||
custom: { kibanaVersion: 'version' },
|
||||
kibanaVersion: 'version',
|
||||
},
|
||||
{
|
||||
application: { id: 'kibana-browser', version: 'version' },
|
||||
|
@ -107,8 +113,9 @@ describe('LaunchDarklyClient - browser', () => {
|
|||
// Update user metadata a 2nd time
|
||||
await client.updateUserMetadata({ userId: 'fake-user-id', kibanaVersion: 'version' });
|
||||
expect(ldClientMock.identify).toHaveBeenCalledWith({
|
||||
kind: 'user',
|
||||
key: 'fake-user-id',
|
||||
custom: { kibanaVersion: 'version' },
|
||||
kibanaVersion: 'version',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -5,7 +5,11 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import { type LDClient, type LDUser, type LDLogLevel } from 'launchdarkly-js-client-sdk';
|
||||
import {
|
||||
type LDClient,
|
||||
type LDSingleKindContext,
|
||||
type LDLogLevel,
|
||||
} from 'launchdarkly-js-client-sdk';
|
||||
|
||||
export interface LaunchDarklyClientConfig {
|
||||
client_id: string;
|
||||
|
@ -15,14 +19,6 @@ export interface LaunchDarklyClientConfig {
|
|||
export interface LaunchDarklyUserMetadata
|
||||
extends Record<string, string | boolean | number | undefined> {
|
||||
userId: string;
|
||||
// We are not collecting any of the above, but this is to match the LDUser first-level definition
|
||||
name?: string;
|
||||
firstName?: string;
|
||||
lastName?: string;
|
||||
email?: string;
|
||||
avatar?: string;
|
||||
ip?: string;
|
||||
country?: string;
|
||||
}
|
||||
|
||||
export class LaunchDarklyClient {
|
||||
|
@ -34,19 +30,11 @@ export class LaunchDarklyClient {
|
|||
) {}
|
||||
|
||||
public async updateUserMetadata(userMetadata: LaunchDarklyUserMetadata) {
|
||||
const { userId, name, firstName, lastName, email, avatar, ip, country, ...custom } =
|
||||
userMetadata;
|
||||
const launchDarklyUser: LDUser = {
|
||||
const { userId, ...userMetadataWithoutUserId } = userMetadata;
|
||||
const launchDarklyUser: LDSingleKindContext = {
|
||||
...userMetadataWithoutUserId,
|
||||
kind: 'user',
|
||||
key: userId,
|
||||
name,
|
||||
firstName,
|
||||
lastName,
|
||||
email,
|
||||
avatar,
|
||||
ip,
|
||||
country,
|
||||
// This casting is needed because LDUser does not allow `Record<string, undefined>`
|
||||
custom: custom as Record<string, string | boolean | number>,
|
||||
};
|
||||
if (this.launchDarklyClient) {
|
||||
await this.launchDarklyClient.identify(launchDarklyUser);
|
||||
|
|
|
@ -80,7 +80,7 @@ describe('LaunchDarklyClient - server', () => {
|
|||
});
|
||||
|
||||
describe('updateUserMetadata', () => {
|
||||
test('sets the top-level properties at the root (renaming userId to key) and the rest under `custom`', () => {
|
||||
test('sets all properties at the root level, renaming userId to key (no nesting into custom)', () => {
|
||||
expect(client).toHaveProperty('launchDarklyUser', undefined);
|
||||
|
||||
const topFields = {
|
||||
|
@ -91,6 +91,9 @@ describe('LaunchDarklyClient - server', () => {
|
|||
avatar: 'fake-blue-avatar',
|
||||
ip: 'my-weird-ip',
|
||||
country: 'distributed',
|
||||
// intentionally adding this to make sure the code is overriding appropriately
|
||||
kind: 'other kind',
|
||||
key: 'other user',
|
||||
};
|
||||
|
||||
const extraFields = {
|
||||
|
@ -101,9 +104,10 @@ describe('LaunchDarklyClient - server', () => {
|
|||
client.updateUserMetadata({ userId: 'fake-user-id', ...topFields, ...extraFields });
|
||||
|
||||
expect(client).toHaveProperty('launchDarklyUser', {
|
||||
key: 'fake-user-id',
|
||||
...topFields,
|
||||
custom: extraFields,
|
||||
...extraFields,
|
||||
kind: 'user',
|
||||
key: 'fake-user-id',
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -113,8 +117,9 @@ describe('LaunchDarklyClient - server', () => {
|
|||
client.updateUserMetadata({ userId: 'fake-user-id', kibanaVersion: 'version' });
|
||||
|
||||
expect(client).toHaveProperty('launchDarklyUser', {
|
||||
kind: 'user',
|
||||
key: 'fake-user-id',
|
||||
custom: { kibanaVersion: 'version' },
|
||||
kibanaVersion: 'version',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -132,7 +137,7 @@ describe('LaunchDarklyClient - server', () => {
|
|||
expect(ldClientMock.variation).toHaveBeenCalledTimes(1);
|
||||
expect(ldClientMock.variation).toHaveBeenCalledWith(
|
||||
'my-feature-flag',
|
||||
{ key: 'fake-user-id', custom: { kibanaVersion: 'version' } },
|
||||
{ kind: 'user', key: 'fake-user-id', kibanaVersion: 'version' },
|
||||
123
|
||||
);
|
||||
});
|
||||
|
@ -150,7 +155,7 @@ describe('LaunchDarklyClient - server', () => {
|
|||
expect(ldClientMock.track).toHaveBeenCalledTimes(1);
|
||||
expect(ldClientMock.track).toHaveBeenCalledWith(
|
||||
'my-feature-flag',
|
||||
{ key: 'fake-user-id', custom: { kibanaVersion: 'version' } },
|
||||
{ kind: 'user', key: 'fake-user-id', kibanaVersion: 'version' },
|
||||
{},
|
||||
123
|
||||
);
|
||||
|
@ -183,8 +188,9 @@ describe('LaunchDarklyClient - server', () => {
|
|||
});
|
||||
expect(ldClientMock.allFlagsState).toHaveBeenCalledTimes(1);
|
||||
expect(ldClientMock.allFlagsState).toHaveBeenCalledWith({
|
||||
kind: 'user',
|
||||
key: 'fake-user-id',
|
||||
custom: { kibanaVersion: 'version' },
|
||||
kibanaVersion: 'version',
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -9,7 +9,7 @@ import LaunchDarkly, {
|
|||
type LDClient,
|
||||
type LDFlagSet,
|
||||
type LDLogLevel,
|
||||
type LDUser,
|
||||
type LDSingleKindContext,
|
||||
} from 'launchdarkly-node-server-sdk';
|
||||
import type { Logger } from '@kbn/core/server';
|
||||
|
||||
|
@ -41,7 +41,7 @@ export interface LaunchDarklyGetAllFlags {
|
|||
|
||||
export class LaunchDarklyClient {
|
||||
private readonly launchDarklyClient: LDClient;
|
||||
private launchDarklyUser?: LDUser;
|
||||
private launchDarklyUser?: LDSingleKindContext;
|
||||
|
||||
constructor(ldConfig: LaunchDarklyClientConfig, private readonly logger: Logger) {
|
||||
this.launchDarklyClient = LaunchDarkly.init(ldConfig.sdk_key, {
|
||||
|
@ -59,19 +59,11 @@ export class LaunchDarklyClient {
|
|||
}
|
||||
|
||||
public updateUserMetadata(userMetadata: LaunchDarklyUserMetadata) {
|
||||
const { userId, name, firstName, lastName, email, avatar, ip, country, ...custom } =
|
||||
userMetadata;
|
||||
const { userId, ...userMetadataWithoutUserId } = userMetadata;
|
||||
this.launchDarklyUser = {
|
||||
...userMetadataWithoutUserId,
|
||||
kind: 'user',
|
||||
key: userId,
|
||||
name,
|
||||
firstName,
|
||||
lastName,
|
||||
email,
|
||||
avatar,
|
||||
ip,
|
||||
country,
|
||||
// This casting is needed because LDUser does not allow `Record<string, undefined>`
|
||||
custom: custom as Record<string, string | boolean | number>,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
40
yarn.lock
40
yarn.lock
|
@ -11385,7 +11385,7 @@ async@^1.4.2:
|
|||
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
|
||||
integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
|
||||
|
||||
async@^3.1.0, async@^3.2.0, async@^3.2.3:
|
||||
async@^3.2.0, async@^3.2.3, async@^3.2.4:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
|
||||
integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
|
||||
|
@ -20804,33 +20804,33 @@ launchdarkly-eventsource@1.4.4:
|
|||
resolved "https://registry.yarnpkg.com/launchdarkly-eventsource/-/launchdarkly-eventsource-1.4.4.tgz#fa595af8602e487c61520787170376c6a1104459"
|
||||
integrity sha512-GL+r2Y3WccJlhFyL2buNKel+9VaMnYpbE/FfCkOST5jSNSFodahlxtGyrE8o7R+Qhobyq0Ree4a7iafJDQi9VQ==
|
||||
|
||||
launchdarkly-js-client-sdk@^2.22.1:
|
||||
version "2.22.1"
|
||||
resolved "https://registry.yarnpkg.com/launchdarkly-js-client-sdk/-/launchdarkly-js-client-sdk-2.22.1.tgz#e6064c79bc575eea0aa4364be41754d54d89ae6a"
|
||||
integrity sha512-EAdw7B8w4m/WZGmHHLj9gbYBP6lCqJs5TQDCM9kWJOnvHBz7DJIxOdqazNMDn5AzBxfvaMG7cpLms+Cur5LD5g==
|
||||
launchdarkly-js-client-sdk@^3.1.4:
|
||||
version "3.1.4"
|
||||
resolved "https://registry.yarnpkg.com/launchdarkly-js-client-sdk/-/launchdarkly-js-client-sdk-3.1.4.tgz#e613cb53412533c07ccf140ae570fc994c59758d"
|
||||
integrity sha512-yq0FeklpVuHMSRz7jfUAfyM7I/659RvGztqJ0Y9G5eN/ZrG1o2W61ZU0Nrv/gqZCtLXjarh/u1otxSFFBjTpHw==
|
||||
dependencies:
|
||||
escape-string-regexp "^1.0.5"
|
||||
launchdarkly-js-sdk-common "3.6.0"
|
||||
escape-string-regexp "^4.0.0"
|
||||
launchdarkly-js-sdk-common "5.0.3"
|
||||
|
||||
launchdarkly-js-sdk-common@3.6.0:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/launchdarkly-js-sdk-common/-/launchdarkly-js-sdk-common-3.6.0.tgz#d146be5bbd86a019c4bedc52e66c37a1ffa7bb3d"
|
||||
integrity sha512-wCdBoBiYXlP64jTrC0dOXY2B345LSJO/IvitbdW4kBKmJ1DkeufpqV0s5DBlwE0RLzDmaQx3mRTmcoNAIhIoaA==
|
||||
launchdarkly-js-sdk-common@5.0.3:
|
||||
version "5.0.3"
|
||||
resolved "https://registry.yarnpkg.com/launchdarkly-js-sdk-common/-/launchdarkly-js-sdk-common-5.0.3.tgz#345f899f5779be8b03d6599978c855eb838d8b7f"
|
||||
integrity sha512-wKG8UsVbPVq8+7eavgAm5CVmulQWN6Ddod2ZoA3euZ1zPvJPwIQ2GrOYaCJr3cFrrMIX+nQyBJHBHYxUAPcM+Q==
|
||||
dependencies:
|
||||
base64-js "^1.3.0"
|
||||
fast-deep-equal "^2.0.1"
|
||||
uuid "^3.3.2"
|
||||
uuid "^8.0.0"
|
||||
|
||||
launchdarkly-node-server-sdk@^6.4.2:
|
||||
version "6.4.2"
|
||||
resolved "https://registry.yarnpkg.com/launchdarkly-node-server-sdk/-/launchdarkly-node-server-sdk-6.4.2.tgz#10a4fea21762315a095a9377cb23dc8d6e714469"
|
||||
integrity sha512-cZQ/FDpzrXu7rOl2re9+79tX/jOrj+kb1ikbqpk/jEgLvXUHGE7Xr+fsEIbQa80H1PkGwiyWbmnAl31THJfKew==
|
||||
launchdarkly-node-server-sdk@^7.0.3:
|
||||
version "7.0.3"
|
||||
resolved "https://registry.yarnpkg.com/launchdarkly-node-server-sdk/-/launchdarkly-node-server-sdk-7.0.3.tgz#d7a8b996d992b0ca5d4972db5df1ae49332b094c"
|
||||
integrity sha512-uSkBezAiQ9nwv8N6CmI7OmyJ9e3xpueJzYOso8+5vMf7VtBtPjz6RRsUkUsSzUDo7siclmW8USjCwqn9aX2EbQ==
|
||||
dependencies:
|
||||
async "^3.1.0"
|
||||
async "^3.2.4"
|
||||
launchdarkly-eventsource "1.4.4"
|
||||
lru-cache "^6.0.0"
|
||||
node-cache "^5.1.0"
|
||||
semver "^7.3.0"
|
||||
semver "^7.5.4"
|
||||
tunnel "0.0.6"
|
||||
uuid "^8.3.2"
|
||||
|
||||
|
@ -27077,7 +27077,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semve
|
|||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||
|
||||
semver@^7.3.0, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0, semver@^7.5.2, semver@^7.5.3:
|
||||
semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0, semver@^7.5.2, semver@^7.5.3:
|
||||
version "7.5.3"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e"
|
||||
integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==
|
||||
|
@ -29964,7 +29964,7 @@ uuid@^3.3.2, uuid@^3.3.3:
|
|||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||
|
||||
uuid@^8.3.0, uuid@^8.3.2:
|
||||
uuid@^8.0.0, uuid@^8.3.0, uuid@^8.3.2:
|
||||
version "8.3.2"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
|
||||
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue