-
Notifications
You must be signed in to change notification settings - Fork 18
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
feat: Implement goals for client-side SDKs. #585
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I made some changes to the jest configuration to handle ESM dependencies and it required importing jest types to make things happy.
@@ -0,0 +1,100 @@ | |||
import escapeStringRegexp from 'escape-string-regexp'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The previous SDK was using this dependency, and I checked the source of it and it seems very reasonable. It has no runtime dependencies and is a single function. The function just does a couple replacements. I don't see a reason to vendor it.
Including it did increase the complexity of the jest test running.
* than the actual browser URL. It will be called with the current browser URL as a parameter, | ||
* and returns the value that should be stored in the event's `url` property. | ||
*/ | ||
eventUrlTransformer?: (url: string) => string; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added this option, but the implementation is its own ticket. SDK-10.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've added these functions to the client or now, but I think we maybe actually need to move to a PIMPL style implementation like we use in fluter and C++. Which would allow us to expose more internals more safely.
locationWatcherFactory: (cb: () => void) => LocationWatcher = (cb) => | ||
new DefaultLocationWatcher(cb), | ||
) { | ||
// TODO: Generate URL in a better way. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we can address this in the HTTP properties change as well.
We never have used ServiceEndpoints in a browser SDK and it is clear that goals wasn't considered. Polling/baseUri happen to be interchangeable.
) { | ||
super(clientSideId, autoEnvAttributes, new BrowserPlatform(options), options, { | ||
const { logger: customLogger, debug } = options; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Logging is a chicken/egg problem. I think a switch to PIMPL style for the client could help.
I am not 100% sure that we will actually use the common client-side client by the time things are sorted (initialization and bootstrap work quite different), but the same thing applied to react native.
@@ -0,0 +1,60 @@ | |||
export const LOCATION_WATCHER_INTERVAL = 300; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider including time unit in name.
🤖 I have created a release *beep* *boop* --- <details><summary>akamai-edgeworker-sdk-common: 1.2.0</summary> ## [1.2.0](akamai-edgeworker-sdk-common-v1.1.15...akamai-edgeworker-sdk-common-v1.2.0) (2024-09-26) ### Features * Add support for conditional event source capabilities. ([#577](#577)) ([fe82500](fe82500)) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-server-sdk-common bumped from ^2.6.1 to ^2.7.0 </details> <details><summary>akamai-server-base-sdk: 2.1.16</summary> ## [2.1.16](akamai-server-base-sdk-v2.1.15...akamai-server-base-sdk-v2.1.16) (2024-09-26) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/akamai-edgeworker-sdk-common bumped from ^1.1.15 to ^1.2.0 * @launchdarkly/js-server-sdk-common bumped from ^2.6.1 to ^2.7.0 </details> <details><summary>akamai-server-edgekv-sdk: 1.1.16</summary> ## [1.1.16](akamai-server-edgekv-sdk-v1.1.15...akamai-server-edgekv-sdk-v1.1.16) (2024-09-26) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/akamai-edgeworker-sdk-common bumped from ^1.1.15 to ^1.2.0 * @launchdarkly/js-server-sdk-common bumped from ^2.6.1 to ^2.7.0 </details> <details><summary>cloudflare-server-sdk: 2.5.14</summary> ## [2.5.14](cloudflare-server-sdk-v2.5.13...cloudflare-server-sdk-v2.5.14) (2024-09-26) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/js-server-sdk-common-edge bumped from 2.3.9 to 2.4.0 </details> <details><summary>js-client-sdk-common: 1.8.0</summary> ## [1.8.0](js-client-sdk-common-v1.7.0...js-client-sdk-common-v1.8.0) (2024-09-26) ### Features * Add platform support for async hashing. ([#573](#573)) ([9248035](9248035)) * Add support for conditional event source capabilities. ([#577](#577)) ([fe82500](fe82500)) * Add support for js-client-sdk style initialization. ([53f5bb8](53f5bb8)) * Add URLs for custom events and URL filtering. ([#587](#587)) ([7131e69](7131e69)) * Adds support for REPORT. ([#575](#575)) ([916b724](916b724)) * Allow using custom user-agent name. ([#580](#580)) ([ed5a206](ed5a206)) * Implement goals for client-side SDKs. ([#585](#585)) ([fd38a8f](fd38a8f)) * Refactor data source connection handling. ([53f5bb8](53f5bb8)) ### Bug Fixes * Flag store should not access values from prototype. ([#567](#567)) ([fca4d92](fca4d92)) * Use flag value whenever provided even if variaiton is null or undefined. ([#581](#581)) ([d11224c](d11224c)) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-sdk-common bumped from 2.8.0 to 2.9.0 </details> <details><summary>js-sdk-common: 2.9.0</summary> ## [2.9.0](js-sdk-common-v2.8.0...js-sdk-common-v2.9.0) (2024-09-26) ### Features * Add platform support for async hashing. ([#573](#573)) ([9248035](9248035)) * Add support for conditional event source capabilities. ([#577](#577)) ([fe82500](fe82500)) * Add URLs for custom events and URL filtering. ([#587](#587)) ([7131e69](7131e69)) * Adds support for REPORT. ([#575](#575)) ([916b724](916b724)) * Allow using custom user-agent name. ([#580](#580)) ([ed5a206](ed5a206)) * Implement goals for client-side SDKs. ([#585](#585)) ([fd38a8f](fd38a8f)) ### Bug Fixes * Multi-kind context containing only 1 kind conveted incorrectly. ([#594](#594)) ([b6ff2a6](b6ff2a6)) </details> <details><summary>js-server-sdk-common: 2.7.0</summary> ## [2.7.0](js-server-sdk-common-v2.6.1...js-server-sdk-common-v2.7.0) (2024-09-26) ### Features * Add platform support for async hashing. ([#573](#573)) ([9248035](9248035)) * Add support for conditional event source capabilities. ([#577](#577)) ([fe82500](fe82500)) * Allow using custom user-agent name. ([#580](#580)) ([ed5a206](ed5a206)) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-sdk-common bumped from 2.8.0 to 2.9.0 </details> <details><summary>js-server-sdk-common-edge: 2.4.0</summary> ## [2.4.0](js-server-sdk-common-edge-v2.3.9...js-server-sdk-common-edge-v2.4.0) (2024-09-26) ### Features * Add support for conditional event source capabilities. ([#577](#577)) ([fe82500](fe82500)) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-server-sdk-common bumped from 2.6.1 to 2.7.0 </details> <details><summary>node-server-sdk: 9.6.0</summary> ## [9.6.0](node-server-sdk-v9.5.4...node-server-sdk-v9.6.0) (2024-09-26) ### Features * Add support for conditional event source capabilities. ([#577](#577)) ([fe82500](fe82500)) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-server-sdk-common bumped from 2.6.1 to 2.7.0 </details> <details><summary>node-server-sdk-dynamodb: 6.1.22</summary> ## [6.1.22](node-server-sdk-dynamodb-v6.1.21...node-server-sdk-dynamodb-v6.1.22) (2024-09-26) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/node-server-sdk bumped from 9.5.4 to 9.6.0 * peerDependencies * @launchdarkly/node-server-sdk bumped from >=9.4.3 to >=9.6.0 </details> <details><summary>node-server-sdk-otel: 1.0.14</summary> ## [1.0.14](node-server-sdk-otel-v1.0.13...node-server-sdk-otel-v1.0.14) (2024-09-26) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/node-server-sdk bumped from 9.5.4 to 9.6.0 * peerDependencies * @launchdarkly/node-server-sdk bumped from >=9.4.3 to >=9.6.0 </details> <details><summary>node-server-sdk-redis: 4.1.22</summary> ## [4.1.22](node-server-sdk-redis-v4.1.21...node-server-sdk-redis-v4.1.22) (2024-09-26) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/node-server-sdk bumped from 9.5.4 to 9.6.0 * peerDependencies * @launchdarkly/node-server-sdk bumped from >=9.4.3 to >=9.6.0 </details> <details><summary>react-native-client-sdk: 10.7.0</summary> ## [10.7.0](react-native-client-sdk-v10.6.1...react-native-client-sdk-v10.7.0) (2024-09-26) ### Features * Add support for conditional event source capabilities. ([#577](#577)) ([fe82500](fe82500)) * Add support for js-client-sdk style initialization. ([53f5bb8](53f5bb8)) * Adds support for REPORT. ([#575](#575)) ([916b724](916b724)) * Refactor data source connection handling. ([53f5bb8](53f5bb8)) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk-common bumped from 1.7.0 to 1.8.0 </details> <details><summary>vercel-server-sdk: 1.3.17</summary> ## [1.3.17](vercel-server-sdk-v1.3.16...vercel-server-sdk-v1.3.17) (2024-09-26) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-server-sdk-common-edge bumped from 2.3.9 to 2.4.0 </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- <details><summary>js-client-sdk: 0.0.1</summary> ## 0.0.1 (2024-10-10) ### Features * Add basic secure mode support for browser SDK. ([#598](#598)) ([3389983](3389983)) * Add bootstrap support. ([#600](#600)) ([4e5dbee](4e5dbee)) * Add browser info. ([#576](#576)) ([a2f4398](a2f4398)) * Add ESM support for common and common-client (rollup) ([#604](#604)) ([8cd0cdc](8cd0cdc)) * Add support for browser contract tests. ([#582](#582)) ([38f081e](38f081e)) * Add support for hooks. ([#605](#605)) ([04d347b](04d347b)) * Add support for js-client-sdk style initialization. ([53f5bb8](53f5bb8)) * Add support for localStorage for the browser platform. ([#566](#566)) ([4792391](4792391)) * Add URLs for custom events and URL filtering. ([#587](#587)) ([7131e69](7131e69)) * Add visibility handling to allow proactive event flushing. ([#607](#607)) ([819a311](819a311)) * adds datasource status to sdk-client ([#590](#590)) ([6f26204](6f26204)) * Adds support for REPORT. ([#575](#575)) ([916b724](916b724)) * Browser-SDK Automatically start streaming based on event handlers. ([#592](#592)) ([f2e5cbf](f2e5cbf)) * Implement browser crypto and encoding. ([#574](#574)) ([e763e5d](e763e5d)) * Implement goals for client-side SDKs. ([#585](#585)) ([fd38a8f](fd38a8f)) * Implement support for browser requests. ([#578](#578)) ([887548a](887548a)) * Refactor data source connection handling. ([53f5bb8](53f5bb8)) * Scaffold browser client. ([#579](#579)) ([0848ab7](0848ab7)) ### Bug Fixes * Ensure browser contract tests run during top-level build. ([#589](#589)) ([7dfb14d](7dfb14d)) * Ensure client logger is always wrapped in a safe logger. ([#599](#599)) ([980e4da](980e4da)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Implements goals. Additionally adds browser specific configuration as it is required by goals.
Also addresses SDK-563