Skip to content

Commit

Permalink
Merge branch 'main' into feat/svelte-sdk-example
Browse files Browse the repository at this point in the history
  • Loading branch information
nosnibor89 authored Feb 18, 2025
2 parents 389eb30 + 1926b49 commit 379bc3d
Show file tree
Hide file tree
Showing 55 changed files with 999 additions and 276 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
name: '@launchdarkly/browser-telemetry Bug Report'
about: Create a report to help us improve
title: ''
labels: 'package: telemetry/browser-telemerty, bug'
assignees: ''
---

**Is this a support request?**
This issue tracker is maintained by LaunchDarkly SDK developers and is intended for feedback on the code in this library. If you're not sure whether the problem you are having is specifically related to this library, or to the LaunchDarkly service overall, it may be more appropriate to contact the LaunchDarkly support team; they can help to investigate the problem and will consult the SDK team if necessary. You can submit a support request by going [here](https://support.launchdarkly.com/) and clicking "submit a request", or by emailing [email protected].

Note that issues filed on this issue tracker are publicly accessible. Do not provide any private account information on your issues. If your problem is specific to your account, you should submit a support request as described above.

**Describe the bug**
A clear and concise description of what the bug is.

**To reproduce**
Steps to reproduce the behavior.

**Expected behavior**
A clear and concise description of what you expected to happen.

**Logs**
If applicable, add any log output related to your problem.

**SDK version**
The version of this SDK that you are using.

**Language version, developer tools**
For instance, Go 1.11 or Ruby 2.5.3. If you are using a language that requires a separate compiler, such as C, please include the name and version of the compiler too.

**OS/platform**
For instance, Ubuntu 16.04, Windows 10, or Android 4.0.3. If your code is running in a browser, please also include the browser type and version.

**Additional context**
Add any other context about the problem here.
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: '@launchdarkly/browser-telemetry Feature Request'
about: Create a report to help us improve
title: ''
labels: 'package: telemetry/browser-telemetry, feature'
assignees: ''
---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I would love to see the SDK [...does something new...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context about the feature request here.
18 changes: 9 additions & 9 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@
"packages/sdk/cloudflare": "2.6.4",
"packages/shared/sdk-server-edge": "2.5.3",
"packages/sdk/vercel": "1.3.22",
"packages/sdk/akamai-base": "2.1.21",
"packages/sdk/akamai-edgekv": "1.3.1",
"packages/shared/akamai-edgeworker-sdk": "1.3.3",
"packages/sdk/akamai-base": "2.1.22",
"packages/sdk/akamai-edgekv": "1.4.0",
"packages/shared/akamai-edgeworker-sdk": "1.4.0",
"packages/store/node-server-sdk-dynamodb": "6.2.3",
"packages/store/node-server-sdk-redis": "4.2.3",
"packages/shared/sdk-client": "1.12.2",
"packages/sdk/react-native": "10.9.5",
"packages/shared/sdk-client": "1.12.3",
"packages/sdk/react-native": "10.9.6",
"packages/telemetry/node-server-sdk-otel": "1.1.3",
"packages/sdk/browser": "0.4.0",
"packages/sdk/server-ai": "0.8.1",
"packages/telemetry/browser-telemetry": "0.2.0",
"packages/tooling/jest": "0.1.0"
"packages/sdk/browser": "0.4.1",
"packages/sdk/server-ai": "0.9.0",
"packages/telemetry/browser-telemetry": "0.3.1",
"packages/tooling/jest": "0.1.1"
}
13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,10 @@ This includes shared libraries, used by SDKs and other tools, as well as SDKs.
| [@launchdarkly/node-server-sdk-redis](packages/store/node-server-sdk-redis/README.md) | [![NPM][node-redis-npm-badge]][node-redis-npm-link] | [Node Redis][node-redis-issues] | [![Actions Status][node-redis-ci-badge]][node-redis-ci] |
| [@launchdarkly/node-server-sdk-dynamodb](packages/store/node-server-sdk-dynamodb/README.md) | [![NPM][node-dynamodb-npm-badge]][node-dynamodb-npm-link] | [Node DynamoDB][node-dynamodb-issues] | [![Actions Status][node-dynamodb-ci-badge]][node-dynamodb-ci] |

| Telemetry Packages | npm | issues | tests |
| --------------------------------------------------------------------------------------- | ------------------------------------------------- | ----------------------------- | ----------------------------------------------------- |
| [@launchdarkly/node-server-sdk-otel](packages/telemetry/node-server-sdk-otel/README.md) | [![NPM][node-otel-npm-badge]][node-otel-npm-link] | [Node OTel][node-otel-issues] | [![Actions Status][node-otel-ci-badge]][node-otel-ci] |
| Telemetry Packages | npm | issues | tests |
| --------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------------- |
| [@launchdarkly/node-server-sdk-otel](packages/telemetry/node-server-sdk-otel/README.md) | [![NPM][node-otel-npm-badge]][node-otel-npm-link] | [Node OTel][node-otel-issues] | [![Actions Status][node-otel-ci-badge]][node-otel-ci] |
| [@launchdarkly/browser-telemetry](packages/telemetry/browser-telemetry/README.md) | [![NPM][browser-telemetry-npm-badge]][browser-telemetry-npm-link] | [Browser Telemetry][browser-telemetry-issues] | [![Actions Status][browser-telemetry-ci-badge]][browser-telemetry-ci] |

## Organization

Expand Down Expand Up @@ -191,3 +192,9 @@ We encourage pull requests and other contributions from the community. Check out
[sdk-server-ai-dm-badge]: https://img.shields.io/npm/dm/@launchdarkly/server-sdk-ai.svg?style=flat-square
[sdk-server-ai-dt-badge]: https://img.shields.io/npm/dt/@launchdarkly/server-sdk-ai.svg?style=flat-square
[package-sdk-server-ai-issues]: https://github.com/launchdarkly/js-core/issues?q=is%3Aissue+is%3Aopen+label%3A%22package%3A+sdk%2Fserver-ai%22+
[//]: # 'telemetry/browser-telemetry'
[browser-telemetry-ci-badge]: https://github.com/launchdarkly/js-core/actions/workflows/browser-telemetry.yml/badge.svg
[browser-telemetry-ci]: https://github.com/launchdarkly/js-core/actions/workflows/browser-telemetry.yml
[browser-telemetry-npm-badge]: https://img.shields.io/npm/v/@launchdarkly/browser-telemetry.svg?style=flat-square
[browser-telemetry-npm-link]: https://www.npmjs.com/package/@launchdarkly/browser-telemetry
[browser-telemetry-issues]: https://github.com/launchdarkly/js-core/issues?q=is%3Aissue+is%3Aopen+label%3A%22package%3A+telemetry%2Fbrowser-telemetry%22+
9 changes: 9 additions & 0 deletions packages/sdk/akamai-base/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,15 @@ All notable changes to the LaunchDarkly SDK for Akamai Workers will be documente
* @launchdarkly/akamai-edgeworker-sdk-common bumped from ^1.1.1 to ^1.1.2
* @launchdarkly/js-server-sdk-common bumped from ^2.2.1 to ^2.2.2

## [2.1.22](https://github.com/launchdarkly/js-core/compare/akamai-server-base-sdk-v2.1.21...akamai-server-base-sdk-v2.1.22) (2025-01-30)


### Dependencies

* The following workspace dependencies were updated
* dependencies
* @launchdarkly/akamai-edgeworker-sdk-common bumped from ^1.3.3 to ^1.4.0

## [2.1.21](https://github.com/launchdarkly/js-core/compare/akamai-server-base-sdk-v2.1.20...akamai-server-base-sdk-v2.1.21) (2025-01-22)


Expand Down
2 changes: 1 addition & 1 deletion packages/sdk/akamai-base/example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,6 @@
"typescript": "5.1.6"
},
"dependencies": {
"@launchdarkly/akamai-server-base-sdk": "2.1.21"
"@launchdarkly/akamai-server-base-sdk": "2.1.22"
}
}
4 changes: 2 additions & 2 deletions packages/sdk/akamai-base/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@launchdarkly/akamai-server-base-sdk",
"version": "2.1.21",
"version": "2.1.22",
"description": "Akamai LaunchDarkly EdgeWorker SDK",
"homepage": "https://github.com/launchdarkly/js-core/tree/main/packages/sdk/akamai-base",
"repository": {
Expand Down Expand Up @@ -73,7 +73,7 @@
"typescript": "5.1.6"
},
"dependencies": {
"@launchdarkly/akamai-edgeworker-sdk-common": "^1.3.3",
"@launchdarkly/akamai-edgeworker-sdk-common": "^1.4.0",
"@launchdarkly/js-server-sdk-common": "^2.11.0"
}
}
14 changes: 14 additions & 0 deletions packages/sdk/akamai-edgekv/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,20 @@ All notable changes to the LaunchDarkly SDK for Akamai Workers will be documente
* @launchdarkly/akamai-edgeworker-sdk-common bumped from ^1.1.1 to ^1.1.2
* @launchdarkly/js-server-sdk-common bumped from ^2.2.1 to ^2.2.2

## [1.4.0](https://github.com/launchdarkly/js-core/compare/akamai-server-edgekv-sdk-v1.3.1...akamai-server-edgekv-sdk-v1.4.0) (2025-01-30)


### Features

* Add cacheTtlMs option ([#760](https://github.com/launchdarkly/js-core/issues/760)) ([4f961dd](https://github.com/launchdarkly/js-core/commit/4f961dd16fd10f5bb55dd2116d26b218944bfeb2))


### Dependencies

* The following workspace dependencies were updated
* dependencies
* @launchdarkly/akamai-edgeworker-sdk-common bumped from ^1.3.3 to ^1.4.0

## [1.3.1](https://github.com/launchdarkly/js-core/compare/akamai-server-edgekv-sdk-v1.3.0...akamai-server-edgekv-sdk-v1.3.1) (2025-01-22)


Expand Down
23 changes: 21 additions & 2 deletions packages/sdk/akamai-edgekv/__tests__/index.test.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import EdgeKVProvider from '../src/edgekv/edgeKVProvider';
import { init as initWithEdgeKV, LDClient, LDContext } from '../src/index';
import { init as initWithEdgeKV, LDClient, LDContext, LDLogger } from '../src/index';
import * as testData from './testData.json';

jest.mock('../src/edgekv/edgekv', () => ({
EdgeKV: jest.fn(),
}));

let logger: LDLogger;

const sdkKey = 'test-sdk-key';
const flagKey1 = 'testFlag1';
const flagKey2 = 'testFlag2';
Expand All @@ -17,11 +19,22 @@ describe('init', () => {

describe('init with Edge KV', () => {
beforeAll(async () => {
ldClient = initWithEdgeKV({ namespace: 'akamai-test', group: 'Akamai', sdkKey });
ldClient = initWithEdgeKV({
namespace: 'akamai-test',
group: 'Akamai',
sdkKey,
options: { logger },
});
await ldClient.waitForInitialization();
});

beforeEach(() => {
logger = {
error: jest.fn(),
warn: jest.fn(),
info: jest.fn(),
debug: jest.fn(),
};
jest
.spyOn(EdgeKVProvider.prototype, 'get')
.mockImplementation(() => Promise.resolve(JSON.stringify(testData)));
Expand All @@ -31,6 +44,12 @@ describe('init', () => {
ldClient.close();
});

it('should not log a warning about initialization', async () => {
const spy = jest.spyOn(logger, 'warn');
await ldClient.variation(flagKey1, context, false);
expect(spy).not.toHaveBeenCalled();
});

describe('flags', () => {
it('variation default', async () => {
const value = await ldClient.variation(flagKey1, context, false);
Expand Down
2 changes: 1 addition & 1 deletion packages/sdk/akamai-edgekv/example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@
"typescript": "5.1.6"
},
"dependencies": {
"@launchdarkly/akamai-server-edgekv-sdk": "1.3.1"
"@launchdarkly/akamai-server-edgekv-sdk": "1.4.0"
}
}
4 changes: 2 additions & 2 deletions packages/sdk/akamai-edgekv/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@launchdarkly/akamai-server-edgekv-sdk",
"version": "1.3.1",
"version": "1.4.0",
"description": "Akamai LaunchDarkly EdgeWorker SDK for EdgeKV feature store",
"homepage": "https://github.com/launchdarkly/js-core/tree/main/packages/sdk/akamai-edgekv",
"repository": {
Expand Down Expand Up @@ -73,7 +73,7 @@
"typescript": "5.1.6"
},
"dependencies": {
"@launchdarkly/akamai-edgeworker-sdk-common": "^1.3.3",
"@launchdarkly/akamai-edgeworker-sdk-common": "^1.4.0",
"@launchdarkly/js-server-sdk-common": "^2.11.0"
}
}
3 changes: 2 additions & 1 deletion packages/sdk/akamai-edgekv/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,13 @@ export const init = ({
sdkKey,
}: AkamaiLDClientParams): LDClient => {
const logger = options.logger ?? BasicLogger.get();
const cacheTtlMs = options.cacheTtlMs ?? 100;

const edgekvProvider = new EdgeKVProvider({ namespace, group, logger });

return initEdge({
sdkKey,
options: { ...options, logger },
options: { ...options, logger, cacheTtlMs },
featureStoreProvider: edgekvProvider,
platformName: 'Akamai EdgeWorker',
sdkName: '@launchdarkly/akamai-server-edgekv-sdk',
Expand Down
14 changes: 14 additions & 0 deletions packages/sdk/browser/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# Changelog

## [0.4.1](https://github.com/launchdarkly/js-core/compare/js-client-sdk-v0.4.0...js-client-sdk-v0.4.1) (2025-02-06)


### Bug Fixes

* Ensure streaming connection is closed on SDK close. ([#774](https://github.com/launchdarkly/js-core/issues/774)) ([f58e746](https://github.com/launchdarkly/js-core/commit/f58e746a089fb0cd5f6169f6c246e1f6515f5047))


### Dependencies

* The following workspace dependencies were updated
* dependencies
* @launchdarkly/js-client-sdk-common bumped from 1.12.2 to 1.12.3

## [0.4.0](https://github.com/launchdarkly/js-core/compare/js-client-sdk-v0.3.3...js-client-sdk-v0.4.0) (2025-01-22)


Expand Down
32 changes: 31 additions & 1 deletion packages/sdk/browser/__tests__/BrowserDataManager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,16 @@ describe('given a BrowserDataManager with mocked dependencies', () => {
let diagnosticsManager: jest.Mocked<internal.DiagnosticsManager>;
let dataManager: BrowserDataManager;
let logger: LDLogger;
let eventSourceCloseMethod: jest.Mock;

beforeEach(() => {
logger = {
error: jest.fn(),
warn: jest.fn(),
info: jest.fn(),
debug: jest.fn(),
};
eventSourceCloseMethod = jest.fn();
config = {
logger,
maxCachedContexts: 5,
Expand Down Expand Up @@ -106,7 +109,7 @@ describe('given a BrowserDataManager with mocked dependencies', () => {
options,
onclose: jest.fn(),
addEventListener: jest.fn(),
close: jest.fn(),
close: eventSourceCloseMethod,
})),
fetch: mockedFetch,
getEventSourceCapabilities: jest.fn(),
Expand Down Expand Up @@ -495,4 +498,31 @@ describe('given a BrowserDataManager with mocked dependencies', () => {

expect(platform.requests.createEventSource).toHaveBeenCalled();
});

it('closes the event source when the data manager is closed', async () => {
const context = Context.fromLDContext({ kind: 'user', key: 'test-user' });
const identifyOptions: BrowserIdentifyOptions = {};
const identifyResolve = jest.fn();
const identifyReject = jest.fn();

dataManager.setForcedStreaming(undefined);
dataManager.setAutomaticStreamingState(true);
expect(platform.requests.createEventSource).not.toHaveBeenCalled();

flagManager.loadCached.mockResolvedValue(false);

await dataManager.identify(identifyResolve, identifyReject, context, identifyOptions);

expect(platform.requests.createEventSource).toHaveBeenCalled();

dataManager.close();
expect(eventSourceCloseMethod).toHaveBeenCalled();
// Verify a subsequent identify doesn't create a new event source
await dataManager.identify(identifyResolve, identifyReject, context, {});
expect(platform.requests.createEventSource).toHaveBeenCalledTimes(1);

expect(logger.debug).toHaveBeenCalledWith(
'[BrowserDataManager] Identify called after data manager was closed.',
);
});
});
4 changes: 2 additions & 2 deletions packages/sdk/browser/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@launchdarkly/js-client-sdk",
"version": "0.4.0",
"version": "0.4.1",
"description": "LaunchDarkly SDK for JavaScript in Browsers",
"homepage": "https://github.com/launchdarkly/js-core/tree/main/packages/sdk/browser",
"repository": {
Expand Down Expand Up @@ -55,7 +55,7 @@
"check": "yarn prettier && yarn lint && yarn build && yarn test"
},
"dependencies": {
"@launchdarkly/js-client-sdk-common": "1.12.2"
"@launchdarkly/js-client-sdk-common": "1.12.3"
},
"devDependencies": {
"@jest/globals": "^29.7.0",
Expand Down
5 changes: 5 additions & 0 deletions packages/sdk/browser/src/BrowserDataManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,11 @@ export default class BrowserDataManager extends BaseDataManager {
context: Context,
identifyOptions?: LDIdentifyOptions,
): Promise<void> {
if (this.closed) {
this._debugLog('Identify called after data manager was closed.');
return;
}

this.context = context;
const browserIdentifyOptions = identifyOptions as BrowserIdentifyOptions | undefined;
if (browserIdentifyOptions?.hash) {
Expand Down
12 changes: 2 additions & 10 deletions packages/sdk/cloudflare/jsr.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,7 @@
"version": "2.6.4",
"exports": "./src/index.ts",
"publish": {
"include": [
"LICENSE",
"README.md",
"package.json",
"jsr.json",
"src/**/*.ts"
],
"exclude": [
"src/**/*.test.ts"
]
"include": ["LICENSE", "README.md", "package.json", "jsr.json", "src/**/*.ts"],
"exclude": ["src/**/*.test.ts"]
}
}
Loading

0 comments on commit 379bc3d

Please sign in to comment.