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

Event streaming in iOS standalone browser #258

Closed
skcarnes opened this issue Oct 14, 2022 · 12 comments
Closed

Event streaming in iOS standalone browser #258

skcarnes opened this issue Oct 14, 2022 · 12 comments

Comments

@skcarnes
Copy link

Describe the bug
The LDClient is failing to establish a connection to stream flag updates

To reproduce
Subscribe to the ldClient.on('change') events

Expected behavior
Updates to flags should be reflected in the client

Logs
Screen Shot 2022-10-14 at 9 56 03 AM

SDK version
2.20.0

Language version, developer tools
Angular 14 PWA

OS/platform
iOS Safari standalone browser (PWA)

Additional context
So we are only seeing this issue if our web app is running as a PWA or "Add to Home Screen" on an iOS device. This works on all other platforms we've tested. It appears that there is something wrong with the native safari EventSource establishing a connection with LD. We were able to replace the native EventSource code with the polyfill provided in the docs, but this seems wrong as a long term solution.

@kinyoklion
Copy link
Member

Hello @skcarnes,

I cannot tell from your log screenshot, but considering there isn't a status, is this failing a preflight check like CORS? I think there should be a corresponding console log entry.

I will see if I can replicate the problem.

Filed internally as 173125

Thank you,
Ryan

@kinyoklion
Copy link
Member

Hello @skcarnes,

I setup a test using an iPhone 13 with iOS 16.0.2 and a basic PWA using a manifest with the SDK configured for streaming. I added it to the home screen and it was able to establish a connection to the clientstream.

Would it be possible for you to produce a minimum reproduction case?

Thanks,
Ryan

@skcarnes
Copy link
Author

skcarnes commented Oct 16, 2022

@kinyoklion Thanks for the quick response.

This is the only console log we are getting
image

Here's an example of what we're seeing in our production env -> https://skcarnes.github.io/

This works for other platforms, but I'm still seeing issues on iOS "Add to Home Screen"?

LaunchDarklyReleaseBot added a commit that referenced this issue Oct 18, 2022
* fixing merge error

* fixing merge error

* fix broken links on npmjs.com (#193)

* update lockfiles for new packages

* fix changelog formatting error that messes up the release script

* Specify unpkg default target file in package.json for
launchdarkly-js-client-sdk and launchdarkly-js-sdk-common.

* Correct requestor call to fetch flags on a received ping event.

* Implement Hooks API (#196)

* Initial commit reusing withLDProvider

* Added sitenav. Cleaned up filenames.

* Updated readme with hooks api docs. Fixed linting errors.

* Fixed linting errors.

* Update README.md

* bumping our lerna version to resolve transitive dependency vulnerabilities with fstream and tar (#198)

* fix goals query logic for Electron, also fix handling of invalid content type

* add ability to alter URL in events

* Update browserPlatform definition to detect when an EventSource
polyfill is available and has published that it supports setting the
method used for the stream. When this is the case, the platform
publishes that it supports using REPORT with EventSource and will
provide the polyfill implementation if the SDK attempts a EventSource
connection with the method set to REPORT.

* Fix initial linter warnings.

* Fix another linter warning.

* fix a broken readme link (#202)

* removing a stray character in the readme

* fix stream reconnect logic and add stream connection logging

* linter

* assume logger always exists, as we do in other components

* fix and simplify how the logger object is passed around

* make it so eventUrlTransformer actually does something

* linter

* copy flags object to prevent subtle update problem in Electron

* additional fix + test

* make bootstrapped flags available immediately

* Refactor some of the EventSource constructor selection logic.

* Change browserPlatform.js to check config options when determining
EventSource implementation to use. Added tests for EventSource factory
in browserPlatform.js

* Deal with linter.

* change how supported options are detected in EventSource polyfill

* fix broken homepage attributes (#209)

* improve bad initialization messages (#210)

* improve bad initialization messages

* remove the spaces

* fixing a broken link in a logged message (#212)

* add jsdelivr attribute to js packages (#213)

* adding an option to disable the camel-casing of flag keys (#214)

* adding an option disabling the camel-casing of flag keys

* update comment

* update comment

* fix linter errors

* address pr feedback

* updated readme

* [ch45487] useCamelCaseFlagKeys option (#215)

* Initial commit

* Update initLDClient.ts

* PR fixes. Added prettier.

* Update withLDProvider.test.tsx

* Fixed lint errors. Added test for useCamelCase false on server changes.

* Removed prettier.

* Re-added prettier

* Update yarn.lock

* Update prettier and lock files.

* Fixed more linting issues.

* fix a typo

* use persistent anonymous user logic by default in react sdk (#216)

* use persistent anonymous user logic by default in react sdk

* added a comment

* minor test change

* missed a line

* remove React package from monorepo

* make link text match link

* improve log format and add configurable prefix

* fix test

* linter

* deprecate samplingInterval

* linter

* improve log message for stream connection failures (#221)

* improve log message for stream connection failures

* update the reconnection warning so that it only displays for the first set of each reconnection attempts

* also test that the original put is getting called

* updating tests

* updating tests

* Revert "updating tests"

This reverts commit 84163cdf8b5af6a6e969d777b946a8a2973919ed.

* better abstraction

* minor change

* updating the js-common readme to mention client-side node (#222)

* remove common package, no more monorepo

* add Releaser metadata

* npm audit fix

* unify Rollup config

* migrate new demo code to new package structure

* moved example folder

* syntax fix in demo

* fix directory name

* fix linting

* use spread operator instead of Object.assign

* don't close client on beforeunload, but do flush events

* typo

* clarify test postconditions

* misc test app improvements for testing beforeunload handler

* rm unused yarn.lock

* rm typedoc dependency, don't commit installation of it during release

* fix paths

* fix file copying logic

* pr template

* revert

* fix programmatically reported version string

* upgrade Typescript to avoid Typedoc incompatibility

* Revert "upgrade Typescript to avoid Typedoc incompatibility"

This reverts commit 34d9a0f.

* update Babel, Jest, Rollup

* remove old releaser (#229)

* remove unused Rollup plugins, update dependencies

* use new config validation mechanism in js-sdk-common 3.x

* add image-loading event delivery logic factored out of js-sdk-common

* enable diagnostic events in JS SDK

* lint

* fix tests

* use common 3.0.0-beta2

* use 3.1.0-beta3, fix property name

* lint

* use js-sdk-common 3.1.0

* use js-sdk-common 3.1.1 for event payload ID fix

* use js-sdk-common 3.1.2 and loosen our other dependency

* fix license

* use js-sdk-common 3.2.0-beta1

* SDK name should be js-client-sdk

* misc fixes

* use js-sdk-common 3.2.0

* use js-sdk-common 3.2.0

* standardize linting

* use js-sdk-common 3.2.1

* use js-sdk-common 3.2.2

* update package-lock

* update js-sdk-common dependency for initialization error bugfix

* update js-sdk-common for content type bugfix; update some dev dependencies

* remove unsafe usage of hasOwnProperty

* use js-sdk-common 3.2.5

* resolve security vulnerability in acorn dependency (#240)

* update js-sdk-common to get console logging IE bugfix

* update js-sdk-common for duplicate diagnostic event fix

* update js-sdk-common for TS decl fix, improve TS compilation test (#243)

* bump to 3.2.9 to get startsWith fix (#244)

* add option to disable sync event flush (#245)

* update js-sdk-common + some dev dependencies

* No longer remove non-section hash in substring and regex matching

* linting

* the linting target to run in CI is "lint:all", not "lint"

* new js-common-sdk version (#249)

* resolve node-notifier vulnerability by updating jest dep (#250)

* adding contextKind to goal events, bumping js-common to get alias function (#251)

* pin typedoc to unblock our releases (#252)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-sdk-common

* Update common JS SDK library to use fixes for debug event generation issues.

* Update package lock.

* use Releaser v2 config + newer CI image (#256)

* Updated readme headers (#258)

* don't log a warning about custom goal being unknown

* lint + comment

* Release js-client-sdk with the header transformation change

* Updates docs link

* bump js-sdk-common version for better localstorage error handling

* Update launchdarkly-js-sdk-common for JSON error handling fix (sc-142333)

* update lockfile

* add basicLogger export

* Update common for application tags support. (#265)

* Re-remove package-lock.json and add it to the .gitignore. (#266)

* Use a combination of dependencies that is compatible. (#269) (#270)

* Update js-sdk-common to 3.7.0 (#271)

* Update node version used during release. (#272)

* Update common to 3.8.1 (#273)

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Zach Davis <zach@launchdarkly.com>
Co-authored-by: Elliot <35050275+Apache-HB@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Oct 20, 2022
* fixing merge error

* fixing merge error

* fix broken links on npmjs.com (#193)

* update lockfiles for new packages

* fix changelog formatting error that messes up the release script

* Specify unpkg default target file in package.json for
launchdarkly-js-client-sdk and launchdarkly-js-sdk-common.

* Correct requestor call to fetch flags on a received ping event.

* Implement Hooks API (#196)

* Initial commit reusing withLDProvider

* Added sitenav. Cleaned up filenames.

* Updated readme with hooks api docs. Fixed linting errors.

* Fixed linting errors.

* Update README.md

* bumping our lerna version to resolve transitive dependency vulnerabilities with fstream and tar (#198)

* fix goals query logic for Electron, also fix handling of invalid content type

* add ability to alter URL in events

* Update browserPlatform definition to detect when an EventSource
polyfill is available and has published that it supports setting the
method used for the stream. When this is the case, the platform
publishes that it supports using REPORT with EventSource and will
provide the polyfill implementation if the SDK attempts a EventSource
connection with the method set to REPORT.

* Fix initial linter warnings.

* Fix another linter warning.

* fix a broken readme link (#202)

* removing a stray character in the readme

* fix stream reconnect logic and add stream connection logging

* linter

* assume logger always exists, as we do in other components

* fix and simplify how the logger object is passed around

* make it so eventUrlTransformer actually does something

* linter

* copy flags object to prevent subtle update problem in Electron

* additional fix + test

* make bootstrapped flags available immediately

* Refactor some of the EventSource constructor selection logic.

* Change browserPlatform.js to check config options when determining
EventSource implementation to use. Added tests for EventSource factory
in browserPlatform.js

* Deal with linter.

* change how supported options are detected in EventSource polyfill

* fix broken homepage attributes (#209)

* improve bad initialization messages (#210)

* improve bad initialization messages

* remove the spaces

* fixing a broken link in a logged message (#212)

* add jsdelivr attribute to js packages (#213)

* adding an option to disable the camel-casing of flag keys (#214)

* adding an option disabling the camel-casing of flag keys

* update comment

* update comment

* fix linter errors

* address pr feedback

* updated readme

* [ch45487] useCamelCaseFlagKeys option (#215)

* Initial commit

* Update initLDClient.ts

* PR fixes. Added prettier.

* Update withLDProvider.test.tsx

* Fixed lint errors. Added test for useCamelCase false on server changes.

* Removed prettier.

* Re-added prettier

* Update yarn.lock

* Update prettier and lock files.

* Fixed more linting issues.

* fix a typo

* use persistent anonymous user logic by default in react sdk (#216)

* use persistent anonymous user logic by default in react sdk

* added a comment

* minor test change

* missed a line

* remove React package from monorepo

* make link text match link

* improve log format and add configurable prefix

* fix test

* linter

* deprecate samplingInterval

* linter

* improve log message for stream connection failures (#221)

* improve log message for stream connection failures

* update the reconnection warning so that it only displays for the first set of each reconnection attempts

* also test that the original put is getting called

* updating tests

* updating tests

* Revert "updating tests"

This reverts commit 84163cdf8b5af6a6e969d777b946a8a2973919ed.

* better abstraction

* minor change

* updating the js-common readme to mention client-side node (#222)

* remove common package, no more monorepo

* add Releaser metadata

* npm audit fix

* unify Rollup config

* migrate new demo code to new package structure

* moved example folder

* syntax fix in demo

* fix directory name

* fix linting

* use spread operator instead of Object.assign

* don't close client on beforeunload, but do flush events

* typo

* clarify test postconditions

* misc test app improvements for testing beforeunload handler

* rm unused yarn.lock

* rm typedoc dependency, don't commit installation of it during release

* fix paths

* fix file copying logic

* pr template

* revert

* fix programmatically reported version string

* upgrade Typescript to avoid Typedoc incompatibility

* Revert "upgrade Typescript to avoid Typedoc incompatibility"

This reverts commit 34d9a0f.

* update Babel, Jest, Rollup

* remove old releaser (#229)

* remove unused Rollup plugins, update dependencies

* use new config validation mechanism in js-sdk-common 3.x

* add image-loading event delivery logic factored out of js-sdk-common

* enable diagnostic events in JS SDK

* lint

* fix tests

* use common 3.0.0-beta2

* use 3.1.0-beta3, fix property name

* lint

* use js-sdk-common 3.1.0

* use js-sdk-common 3.1.1 for event payload ID fix

* use js-sdk-common 3.1.2 and loosen our other dependency

* fix license

* use js-sdk-common 3.2.0-beta1

* SDK name should be js-client-sdk

* misc fixes

* use js-sdk-common 3.2.0

* use js-sdk-common 3.2.0

* standardize linting

* use js-sdk-common 3.2.1

* use js-sdk-common 3.2.2

* update package-lock

* update js-sdk-common dependency for initialization error bugfix

* update js-sdk-common for content type bugfix; update some dev dependencies

* remove unsafe usage of hasOwnProperty

* use js-sdk-common 3.2.5

* resolve security vulnerability in acorn dependency (#240)

* update js-sdk-common to get console logging IE bugfix

* update js-sdk-common for duplicate diagnostic event fix

* update js-sdk-common for TS decl fix, improve TS compilation test (#243)

* bump to 3.2.9 to get startsWith fix (#244)

* add option to disable sync event flush (#245)

* update js-sdk-common + some dev dependencies

* No longer remove non-section hash in substring and regex matching

* linting

* the linting target to run in CI is "lint:all", not "lint"

* new js-common-sdk version (#249)

* resolve node-notifier vulnerability by updating jest dep (#250)

* adding contextKind to goal events, bumping js-common to get alias function (#251)

* pin typedoc to unblock our releases (#252)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-sdk-common

* Update common JS SDK library to use fixes for debug event generation issues.

* Update package lock.

* use Releaser v2 config + newer CI image (#256)

* Updated readme headers (#258)

* don't log a warning about custom goal being unknown

* lint + comment

* Release js-client-sdk with the header transformation change

* Updates docs link

* bump js-sdk-common version for better localstorage error handling

* Update launchdarkly-js-sdk-common for JSON error handling fix (sc-142333)

* update lockfile

* add basicLogger export

* Update common for application tags support. (#265)

* Re-remove package-lock.json and add it to the .gitignore. (#266)

* Use a combination of dependencies that is compatible. (#269) (#270)

* Update js-sdk-common to 3.7.0 (#271)

* Update node version used during release. (#272)

* Update common to 3.8.1 (#273)

* Update common version for jitter and backoff. (#274)

Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Zach Davis <zach@launchdarkly.com>
Co-authored-by: Elliot <35050275+Apache-HB@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Oct 20, 2022
* fixing merge error

* fixing merge error

* fix broken links on npmjs.com (#193)

* update lockfiles for new packages

* fix changelog formatting error that messes up the release script

* Specify unpkg default target file in package.json for
launchdarkly-js-client-sdk and launchdarkly-js-sdk-common.

* Correct requestor call to fetch flags on a received ping event.

* Implement Hooks API (#196)

* Initial commit reusing withLDProvider

* Added sitenav. Cleaned up filenames.

* Updated readme with hooks api docs. Fixed linting errors.

* Fixed linting errors.

* Update README.md

* bumping our lerna version to resolve transitive dependency vulnerabilities with fstream and tar (#198)

* fix goals query logic for Electron, also fix handling of invalid content type

* add ability to alter URL in events

* Update browserPlatform definition to detect when an EventSource
polyfill is available and has published that it supports setting the
method used for the stream. When this is the case, the platform
publishes that it supports using REPORT with EventSource and will
provide the polyfill implementation if the SDK attempts a EventSource
connection with the method set to REPORT.

* Fix initial linter warnings.

* Fix another linter warning.

* fix a broken readme link (#202)

* removing a stray character in the readme

* fix stream reconnect logic and add stream connection logging

* linter

* assume logger always exists, as we do in other components

* fix and simplify how the logger object is passed around

* make it so eventUrlTransformer actually does something

* linter

* copy flags object to prevent subtle update problem in Electron

* additional fix + test

* make bootstrapped flags available immediately

* Refactor some of the EventSource constructor selection logic.

* Change browserPlatform.js to check config options when determining
EventSource implementation to use. Added tests for EventSource factory
in browserPlatform.js

* Deal with linter.

* change how supported options are detected in EventSource polyfill

* fix broken homepage attributes (#209)

* improve bad initialization messages (#210)

* improve bad initialization messages

* remove the spaces

* fixing a broken link in a logged message (#212)

* add jsdelivr attribute to js packages (#213)

* adding an option to disable the camel-casing of flag keys (#214)

* adding an option disabling the camel-casing of flag keys

* update comment

* update comment

* fix linter errors

* address pr feedback

* updated readme

* [ch45487] useCamelCaseFlagKeys option (#215)

* Initial commit

* Update initLDClient.ts

* PR fixes. Added prettier.

* Update withLDProvider.test.tsx

* Fixed lint errors. Added test for useCamelCase false on server changes.

* Removed prettier.

* Re-added prettier

* Update yarn.lock

* Update prettier and lock files.

* Fixed more linting issues.

* fix a typo

* use persistent anonymous user logic by default in react sdk (#216)

* use persistent anonymous user logic by default in react sdk

* added a comment

* minor test change

* missed a line

* remove React package from monorepo

* make link text match link

* improve log format and add configurable prefix

* fix test

* linter

* deprecate samplingInterval

* linter

* improve log message for stream connection failures (#221)

* improve log message for stream connection failures

* update the reconnection warning so that it only displays for the first set of each reconnection attempts

* also test that the original put is getting called

* updating tests

* updating tests

* Revert "updating tests"

This reverts commit 84163cdf8b5af6a6e969d777b946a8a2973919ed.

* better abstraction

* minor change

* updating the js-common readme to mention client-side node (#222)

* remove common package, no more monorepo

* add Releaser metadata

* npm audit fix

* unify Rollup config

* migrate new demo code to new package structure

* moved example folder

* syntax fix in demo

* fix directory name

* fix linting

* use spread operator instead of Object.assign

* don't close client on beforeunload, but do flush events

* typo

* clarify test postconditions

* misc test app improvements for testing beforeunload handler

* rm unused yarn.lock

* rm typedoc dependency, don't commit installation of it during release

* fix paths

* fix file copying logic

* pr template

* revert

* fix programmatically reported version string

* upgrade Typescript to avoid Typedoc incompatibility

* Revert "upgrade Typescript to avoid Typedoc incompatibility"

This reverts commit 34d9a0f.

* update Babel, Jest, Rollup

* remove old releaser (#229)

* remove unused Rollup plugins, update dependencies

* use new config validation mechanism in js-sdk-common 3.x

* add image-loading event delivery logic factored out of js-sdk-common

* enable diagnostic events in JS SDK

* lint

* fix tests

* use common 3.0.0-beta2

* use 3.1.0-beta3, fix property name

* lint

* use js-sdk-common 3.1.0

* use js-sdk-common 3.1.1 for event payload ID fix

* use js-sdk-common 3.1.2 and loosen our other dependency

* fix license

* use js-sdk-common 3.2.0-beta1

* SDK name should be js-client-sdk

* misc fixes

* use js-sdk-common 3.2.0

* use js-sdk-common 3.2.0

* standardize linting

* use js-sdk-common 3.2.1

* use js-sdk-common 3.2.2

* update package-lock

* update js-sdk-common dependency for initialization error bugfix

* update js-sdk-common for content type bugfix; update some dev dependencies

* remove unsafe usage of hasOwnProperty

* use js-sdk-common 3.2.5

* resolve security vulnerability in acorn dependency (#240)

* update js-sdk-common to get console logging IE bugfix

* update js-sdk-common for duplicate diagnostic event fix

* update js-sdk-common for TS decl fix, improve TS compilation test (#243)

* bump to 3.2.9 to get startsWith fix (#244)

* add option to disable sync event flush (#245)

* update js-sdk-common + some dev dependencies

* No longer remove non-section hash in substring and regex matching

* linting

* the linting target to run in CI is "lint:all", not "lint"

* new js-common-sdk version (#249)

* resolve node-notifier vulnerability by updating jest dep (#250)

* adding contextKind to goal events, bumping js-common to get alias function (#251)

* pin typedoc to unblock our releases (#252)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-sdk-common

* Update common JS SDK library to use fixes for debug event generation issues.

* Update package lock.

* use Releaser v2 config + newer CI image (#256)

* Updated readme headers (#258)

* don't log a warning about custom goal being unknown

* lint + comment

* Release js-client-sdk with the header transformation change

* Updates docs link

* bump js-sdk-common version for better localstorage error handling

* Update launchdarkly-js-sdk-common for JSON error handling fix (sc-142333)

* update lockfile

* add basicLogger export

* Update common for application tags support. (#265)

* Re-remove package-lock.json and add it to the .gitignore. (#266)

* Use a combination of dependencies that is compatible. (#269) (#270)

* Update js-sdk-common to 3.7.0 (#271)

* Update node version used during release. (#272)

* Update common to 3.8.1 (#273)

* Update common version for jitter and backoff. (#274)

* Update typedoc and make associated documentation changes. (#275)

Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Zach Davis <zach@launchdarkly.com>
Co-authored-by: Elliot <35050275+Apache-HB@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
@kinyoklion
Copy link
Member

Hello @skcarnes,

Thank you for the example. I do see the same issue with it, and am trying to track down what may be causing the difference between it and the very basic application I am working from.

My feeling is that it is CORS related, but unfortunately the safari error messages are lacking in any detail.

Thanks,
Ryan

@kinyoklion
Copy link
Member

Hello @skcarnes,

Thank you for the example. I do see the same issue with it, and am trying to track down what may be causing the difference between it and the very basic application I am working from.

My feeling is that it is CORS related, but unfortunately the safari error messages are lacking in any detail.

Thanks, Ryan

Following up to this, I am curious if there is some service worker interaction here that is at the root of the problem.

@kinyoklion
Copy link
Member

I am not terribly familiar with how angular configures service workers, but I do see that the service worker is satisfying requests to LaunchDarkly. Which is not what it should be doing, and it is likely causing problems. (Potentially a bug in safari with the scoping of the service worker?)

Screen Shot 2022-10-25 at 10 30 05 AM

@skcarnes
Copy link
Author

So as it turns out this is a problem with the angular service worker and we're seeing issues across all safari browsers. I'm not sure how we missed this... Angular does provide a way to bypass the service worker, but you have to include additional headers or a query param. Do you guys have a way of including one of those to your network calls?

@kinyoklion
Copy link
Member

Hey @skcarnes,

The SDK has a requestHeaderTransform option.

    /**
     * A transform function for dynamic configuration of HTTP headers.
     *
     * This method will run last in the header generation sequence, so the function should have
     * all system generated headers in case those also need to be modified.
     */
    requestHeaderTransform?: (headers: Map<string, string>) => Map<string, string>;

So you can add in the headers you need.

Thanks,
Ryan

@kinyoklion
Copy link
Member

So as it turns out this is a problem with the angular service worker and we're seeing issues across all safari browsers. I'm not sure how we missed this... Angular does provide a way to bypass the service worker, but you have to include additional headers or a query param. Do you guys have a way of including one of those to your network calls?

One thing I noticed in testing with a local sample was that the behavior didn't happen on the very first page load, because the service workers likely weren't registered yet. So I could see how it may take some time to notice.

@skcarnes
Copy link
Author

It looks like we were able to bypass our service worker for the initial call, but the attempt to setup the stream is still failing and doesn't have the included headers. It doesn't look like there's a way to add headers to EventSource.

I believe we would be able to get around this if there was a way to add query params to the EventSource. I see there's a streamUrl, but it looks like that's just the baseUrl. Any other way of doing this? If not, we'll just have to look further into implementing a custom service worker. Thanks!

Screen Shot 2022-10-26 at 1 41 26 PM

@kinyoklion
Copy link
Member

It looks like we were able to bypass our service worker for the initial call, but the attempt to setup the stream is still failing and doesn't have the included headers. It doesn't look like there's a way to add headers to EventSource.

I believe we would be able to get around this if there was a way to add query params to the EventSource. I see there's a streamUrl, but it looks like that's just the baseUrl. Any other way of doing this? If not, we'll just have to look further into implementing a custom service worker. Thanks!

Screen Shot 2022-10-26 at 1 41 26 PM

Ah yes, sorry I forgot about that. We support headers when using the EventSource polyfill (we provide one), but the event source implementation in browsers doesn't support headers.

It does really feel like there is a bug with either angular or safari here, because the default scope of a service worker really should only includes things relative to the source adding the service worker. Not intercepting API calls to other domains.

@skcarnes
Copy link
Author

skcarnes commented Oct 27, 2022

I agree. We ended up wrapping the angular generated service worker with our own to handle this issue. If anyone else is running into something similar you can check out this angular/angular#36403 (comment).

Thank you guys so much for your time and your help.

LaunchDarklyReleaseBot added a commit that referenced this issue Dec 7, 2022
* bumping our lerna version to resolve transitive dependency vulnerabilities with fstream and tar (#198)

* fix goals query logic for Electron, also fix handling of invalid content type

* add ability to alter URL in events

* Update browserPlatform definition to detect when an EventSource
polyfill is available and has published that it supports setting the
method used for the stream. When this is the case, the platform
publishes that it supports using REPORT with EventSource and will
provide the polyfill implementation if the SDK attempts a EventSource
connection with the method set to REPORT.

* Fix initial linter warnings.

* Fix another linter warning.

* fix a broken readme link (#202)

* removing a stray character in the readme

* fix stream reconnect logic and add stream connection logging

* linter

* assume logger always exists, as we do in other components

* fix and simplify how the logger object is passed around

* make it so eventUrlTransformer actually does something

* linter

* copy flags object to prevent subtle update problem in Electron

* additional fix + test

* make bootstrapped flags available immediately

* Refactor some of the EventSource constructor selection logic.

* Change browserPlatform.js to check config options when determining
EventSource implementation to use. Added tests for EventSource factory
in browserPlatform.js

* Deal with linter.

* change how supported options are detected in EventSource polyfill

* fix broken homepage attributes (#209)

* improve bad initialization messages (#210)

* improve bad initialization messages

* remove the spaces

* fixing a broken link in a logged message (#212)

* add jsdelivr attribute to js packages (#213)

* adding an option to disable the camel-casing of flag keys (#214)

* adding an option disabling the camel-casing of flag keys

* update comment

* update comment

* fix linter errors

* address pr feedback

* updated readme

* [ch45487] useCamelCaseFlagKeys option (#215)

* Initial commit

* Update initLDClient.ts

* PR fixes. Added prettier.

* Update withLDProvider.test.tsx

* Fixed lint errors. Added test for useCamelCase false on server changes.

* Removed prettier.

* Re-added prettier

* Update yarn.lock

* Update prettier and lock files.

* Fixed more linting issues.

* fix a typo

* use persistent anonymous user logic by default in react sdk (#216)

* use persistent anonymous user logic by default in react sdk

* added a comment

* minor test change

* missed a line

* remove React package from monorepo

* make link text match link

* improve log format and add configurable prefix

* fix test

* linter

* deprecate samplingInterval

* linter

* improve log message for stream connection failures (#221)

* improve log message for stream connection failures

* update the reconnection warning so that it only displays for the first set of each reconnection attempts

* also test that the original put is getting called

* updating tests

* updating tests

* Revert "updating tests"

This reverts commit 84163cdf8b5af6a6e969d777b946a8a2973919ed.

* better abstraction

* minor change

* updating the js-common readme to mention client-side node (#222)

* remove common package, no more monorepo

* add Releaser metadata

* npm audit fix

* unify Rollup config

* migrate new demo code to new package structure

* moved example folder

* syntax fix in demo

* fix directory name

* fix linting

* use spread operator instead of Object.assign

* don't close client on beforeunload, but do flush events

* typo

* clarify test postconditions

* misc test app improvements for testing beforeunload handler

* rm unused yarn.lock

* rm typedoc dependency, don't commit installation of it during release

* fix paths

* fix file copying logic

* pr template

* revert

* fix programmatically reported version string

* upgrade Typescript to avoid Typedoc incompatibility

* Revert "upgrade Typescript to avoid Typedoc incompatibility"

This reverts commit 34d9a0f.

* update Babel, Jest, Rollup

* remove old releaser (#229)

* remove unused Rollup plugins, update dependencies

* use new config validation mechanism in js-sdk-common 3.x

* add image-loading event delivery logic factored out of js-sdk-common

* enable diagnostic events in JS SDK

* lint

* fix tests

* use common 3.0.0-beta2

* use 3.1.0-beta3, fix property name

* lint

* use js-sdk-common 3.1.0

* use js-sdk-common 3.1.1 for event payload ID fix

* use js-sdk-common 3.1.2 and loosen our other dependency

* fix license

* use js-sdk-common 3.2.0-beta1

* SDK name should be js-client-sdk

* misc fixes

* use js-sdk-common 3.2.0

* use js-sdk-common 3.2.0

* standardize linting

* use js-sdk-common 3.2.1

* use js-sdk-common 3.2.2

* update package-lock

* update js-sdk-common dependency for initialization error bugfix

* update js-sdk-common for content type bugfix; update some dev dependencies

* remove unsafe usage of hasOwnProperty

* use js-sdk-common 3.2.5

* resolve security vulnerability in acorn dependency (#240)

* update js-sdk-common to get console logging IE bugfix

* update js-sdk-common for duplicate diagnostic event fix

* update js-sdk-common for TS decl fix, improve TS compilation test (#243)

* bump to 3.2.9 to get startsWith fix (#244)

* add option to disable sync event flush (#245)

* update js-sdk-common + some dev dependencies

* No longer remove non-section hash in substring and regex matching

* linting

* the linting target to run in CI is "lint:all", not "lint"

* new js-common-sdk version (#249)

* resolve node-notifier vulnerability by updating jest dep (#250)

* adding contextKind to goal events, bumping js-common to get alias function (#251)

* pin typedoc to unblock our releases (#252)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-sdk-common

* Update common JS SDK library to use fixes for debug event generation issues.

* Update package lock.

* use Releaser v2 config + newer CI image (#256)

* Updated readme headers (#258)

* don't log a warning about custom goal being unknown

* lint + comment

* Release js-client-sdk with the header transformation change

* Updates docs link

* bump js-sdk-common version for better localstorage error handling

* Update launchdarkly-js-sdk-common for JSON error handling fix (sc-142333)

* update lockfile

* add basicLogger export

* Update common for application tags support. (#265)

* Re-remove package-lock.json and add it to the .gitignore. (#266)

* Switch to 5.0 of the SDK common.

* Use a combination of dependencies that is compatible. (#269)

* Use a combination of dependencies that is compatible. (#269) (#270)

* Update js-sdk-common to 3.7.0 (#271)

* Update node version used during release. (#272)

* Update common to 3.8.1 (#273)

* Update common version for jitter and backoff. (#274)

* Update typedoc and make associated documentation changes. (#275)

* Update to prerelease package. (#276)

* Update release config to use node 14.

* Update typedoc and make associated documentation changes. (#275) (#277)

* Update to pre-release common 5.0.0-alpha.2

* Update typings.d.ts (#278)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update to js-sdk-common 5.0.0-alpha.3

* [sc-177790] Replaced getUser with getContext (#279)

* Replaced getUser with getContext

* Remove contextKind

* Update GoalManager.js

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js (#280)

* Switch to 5.0 of the SDK common.

* Use a combination of dependencies that is compatible. (#269)

* Update to prerelease package. (#276)

* Update release config to use node 14.

* Update typedoc and make associated documentation changes. (#275) (#277)

* Update to pre-release common 5.0.0-alpha.2

* Update typings.d.ts (#278)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update to js-sdk-common 5.0.0-alpha.3

* [sc-177790] Replaced getUser with getContext (#279)

* Replaced getUser with getContext

* Remove contextKind

* Update GoalManager.js

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js

Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js (#281)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update SDK common version. (#282)

* Update release metadata.

Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: Zach Davis <zach@launchdarkly.com>
Co-authored-by: Elliot <35050275+Apache-HB@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Jan 18, 2023
* add ability to alter URL in events

* Update browserPlatform definition to detect when an EventSource
polyfill is available and has published that it supports setting the
method used for the stream. When this is the case, the platform
publishes that it supports using REPORT with EventSource and will
provide the polyfill implementation if the SDK attempts a EventSource
connection with the method set to REPORT.

* Fix initial linter warnings.

* Fix another linter warning.

* fix a broken readme link (#202)

* removing a stray character in the readme

* fix stream reconnect logic and add stream connection logging

* linter

* assume logger always exists, as we do in other components

* fix and simplify how the logger object is passed around

* make it so eventUrlTransformer actually does something

* linter

* copy flags object to prevent subtle update problem in Electron

* additional fix + test

* make bootstrapped flags available immediately

* Refactor some of the EventSource constructor selection logic.

* Change browserPlatform.js to check config options when determining
EventSource implementation to use. Added tests for EventSource factory
in browserPlatform.js

* Deal with linter.

* change how supported options are detected in EventSource polyfill

* fix broken homepage attributes (#209)

* improve bad initialization messages (#210)

* improve bad initialization messages

* remove the spaces

* fixing a broken link in a logged message (#212)

* add jsdelivr attribute to js packages (#213)

* adding an option to disable the camel-casing of flag keys (#214)

* adding an option disabling the camel-casing of flag keys

* update comment

* update comment

* fix linter errors

* address pr feedback

* updated readme

* [ch45487] useCamelCaseFlagKeys option (#215)

* Initial commit

* Update initLDClient.ts

* PR fixes. Added prettier.

* Update withLDProvider.test.tsx

* Fixed lint errors. Added test for useCamelCase false on server changes.

* Removed prettier.

* Re-added prettier

* Update yarn.lock

* Update prettier and lock files.

* Fixed more linting issues.

* fix a typo

* use persistent anonymous user logic by default in react sdk (#216)

* use persistent anonymous user logic by default in react sdk

* added a comment

* minor test change

* missed a line

* remove React package from monorepo

* make link text match link

* improve log format and add configurable prefix

* fix test

* linter

* deprecate samplingInterval

* linter

* improve log message for stream connection failures (#221)

* improve log message for stream connection failures

* update the reconnection warning so that it only displays for the first set of each reconnection attempts

* also test that the original put is getting called

* updating tests

* updating tests

* Revert "updating tests"

This reverts commit 84163cdf8b5af6a6e969d777b946a8a2973919ed.

* better abstraction

* minor change

* updating the js-common readme to mention client-side node (#222)

* remove common package, no more monorepo

* add Releaser metadata

* npm audit fix

* unify Rollup config

* migrate new demo code to new package structure

* moved example folder

* syntax fix in demo

* fix directory name

* fix linting

* use spread operator instead of Object.assign

* don't close client on beforeunload, but do flush events

* typo

* clarify test postconditions

* misc test app improvements for testing beforeunload handler

* rm unused yarn.lock

* rm typedoc dependency, don't commit installation of it during release

* fix paths

* fix file copying logic

* pr template

* revert

* fix programmatically reported version string

* upgrade Typescript to avoid Typedoc incompatibility

* Revert "upgrade Typescript to avoid Typedoc incompatibility"

This reverts commit 34d9a0f.

* update Babel, Jest, Rollup

* remove old releaser (#229)

* remove unused Rollup plugins, update dependencies

* use new config validation mechanism in js-sdk-common 3.x

* add image-loading event delivery logic factored out of js-sdk-common

* enable diagnostic events in JS SDK

* lint

* fix tests

* use common 3.0.0-beta2

* use 3.1.0-beta3, fix property name

* lint

* use js-sdk-common 3.1.0

* use js-sdk-common 3.1.1 for event payload ID fix

* use js-sdk-common 3.1.2 and loosen our other dependency

* fix license

* use js-sdk-common 3.2.0-beta1

* SDK name should be js-client-sdk

* misc fixes

* use js-sdk-common 3.2.0

* use js-sdk-common 3.2.0

* standardize linting

* use js-sdk-common 3.2.1

* use js-sdk-common 3.2.2

* update package-lock

* update js-sdk-common dependency for initialization error bugfix

* update js-sdk-common for content type bugfix; update some dev dependencies

* remove unsafe usage of hasOwnProperty

* use js-sdk-common 3.2.5

* resolve security vulnerability in acorn dependency (#240)

* update js-sdk-common to get console logging IE bugfix

* update js-sdk-common for duplicate diagnostic event fix

* update js-sdk-common for TS decl fix, improve TS compilation test (#243)

* bump to 3.2.9 to get startsWith fix (#244)

* add option to disable sync event flush (#245)

* update js-sdk-common + some dev dependencies

* No longer remove non-section hash in substring and regex matching

* linting

* the linting target to run in CI is "lint:all", not "lint"

* new js-common-sdk version (#249)

* resolve node-notifier vulnerability by updating jest dep (#250)

* adding contextKind to goal events, bumping js-common to get alias function (#251)

* pin typedoc to unblock our releases (#252)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-sdk-common

* Update common JS SDK library to use fixes for debug event generation issues.

* Update package lock.

* use Releaser v2 config + newer CI image (#256)

* Updated readme headers (#258)

* don't log a warning about custom goal being unknown

* lint + comment

* Release js-client-sdk with the header transformation change

* Updates docs link

* bump js-sdk-common version for better localstorage error handling

* Update launchdarkly-js-sdk-common for JSON error handling fix (sc-142333)

* update lockfile

* add basicLogger export

* Update common for application tags support. (#265)

* Re-remove package-lock.json and add it to the .gitignore. (#266)

* Switch to 5.0 of the SDK common.

* Use a combination of dependencies that is compatible. (#269)

* Use a combination of dependencies that is compatible. (#269) (#270)

* Update js-sdk-common to 3.7.0 (#271)

* Update node version used during release. (#272)

* Update common to 3.8.1 (#273)

* Update common version for jitter and backoff. (#274)

* Update typedoc and make associated documentation changes. (#275)

* Update to prerelease package. (#276)

* Update release config to use node 14.

* Update typedoc and make associated documentation changes. (#275) (#277)

* Update to pre-release common 5.0.0-alpha.2

* Update typings.d.ts (#278)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update to js-sdk-common 5.0.0-alpha.3

* [sc-177790] Replaced getUser with getContext (#279)

* Replaced getUser with getContext

* Remove contextKind

* Update GoalManager.js

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js (#280)

* Switch to 5.0 of the SDK common.

* Use a combination of dependencies that is compatible. (#269)

* Update to prerelease package. (#276)

* Update release config to use node 14.

* Update typedoc and make associated documentation changes. (#275) (#277)

* Update to pre-release common 5.0.0-alpha.2

* Update typings.d.ts (#278)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update to js-sdk-common 5.0.0-alpha.3

* [sc-177790] Replaced getUser with getContext (#279)

* Replaced getUser with getContext

* Remove contextKind

* Update GoalManager.js

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js

Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js (#281)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update SDK common version. (#282)

* Update release metadata.

* Refactor to use page visibility instead of unload/beforeunload. (#267)

* Upgrade JS SDK common to 5.0.1 for documentation fixes. (#283)

* Correcting documentation on visibility handler.

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: Zach Davis <zach@launchdarkly.com>
Co-authored-by: Elliot <35050275+Apache-HB@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Feb 15, 2023
* Update browserPlatform definition to detect when an EventSource
polyfill is available and has published that it supports setting the
method used for the stream. When this is the case, the platform
publishes that it supports using REPORT with EventSource and will
provide the polyfill implementation if the SDK attempts a EventSource
connection with the method set to REPORT.

* Fix initial linter warnings.

* Fix another linter warning.

* fix a broken readme link (#202)

* removing a stray character in the readme

* fix stream reconnect logic and add stream connection logging

* linter

* assume logger always exists, as we do in other components

* fix and simplify how the logger object is passed around

* make it so eventUrlTransformer actually does something

* linter

* copy flags object to prevent subtle update problem in Electron

* additional fix + test

* make bootstrapped flags available immediately

* Refactor some of the EventSource constructor selection logic.

* Change browserPlatform.js to check config options when determining
EventSource implementation to use. Added tests for EventSource factory
in browserPlatform.js

* Deal with linter.

* change how supported options are detected in EventSource polyfill

* fix broken homepage attributes (#209)

* improve bad initialization messages (#210)

* improve bad initialization messages

* remove the spaces

* fixing a broken link in a logged message (#212)

* add jsdelivr attribute to js packages (#213)

* adding an option to disable the camel-casing of flag keys (#214)

* adding an option disabling the camel-casing of flag keys

* update comment

* update comment

* fix linter errors

* address pr feedback

* updated readme

* [ch45487] useCamelCaseFlagKeys option (#215)

* Initial commit

* Update initLDClient.ts

* PR fixes. Added prettier.

* Update withLDProvider.test.tsx

* Fixed lint errors. Added test for useCamelCase false on server changes.

* Removed prettier.

* Re-added prettier

* Update yarn.lock

* Update prettier and lock files.

* Fixed more linting issues.

* fix a typo

* use persistent anonymous user logic by default in react sdk (#216)

* use persistent anonymous user logic by default in react sdk

* added a comment

* minor test change

* missed a line

* remove React package from monorepo

* make link text match link

* improve log format and add configurable prefix

* fix test

* linter

* deprecate samplingInterval

* linter

* improve log message for stream connection failures (#221)

* improve log message for stream connection failures

* update the reconnection warning so that it only displays for the first set of each reconnection attempts

* also test that the original put is getting called

* updating tests

* updating tests

* Revert "updating tests"

This reverts commit 84163cdf8b5af6a6e969d777b946a8a2973919ed.

* better abstraction

* minor change

* updating the js-common readme to mention client-side node (#222)

* remove common package, no more monorepo

* add Releaser metadata

* npm audit fix

* unify Rollup config

* migrate new demo code to new package structure

* moved example folder

* syntax fix in demo

* fix directory name

* fix linting

* use spread operator instead of Object.assign

* don't close client on beforeunload, but do flush events

* typo

* clarify test postconditions

* misc test app improvements for testing beforeunload handler

* rm unused yarn.lock

* rm typedoc dependency, don't commit installation of it during release

* fix paths

* fix file copying logic

* pr template

* revert

* fix programmatically reported version string

* upgrade Typescript to avoid Typedoc incompatibility

* Revert "upgrade Typescript to avoid Typedoc incompatibility"

This reverts commit 34d9a0f.

* update Babel, Jest, Rollup

* remove old releaser (#229)

* remove unused Rollup plugins, update dependencies

* use new config validation mechanism in js-sdk-common 3.x

* add image-loading event delivery logic factored out of js-sdk-common

* enable diagnostic events in JS SDK

* lint

* fix tests

* use common 3.0.0-beta2

* use 3.1.0-beta3, fix property name

* lint

* use js-sdk-common 3.1.0

* use js-sdk-common 3.1.1 for event payload ID fix

* use js-sdk-common 3.1.2 and loosen our other dependency

* fix license

* use js-sdk-common 3.2.0-beta1

* SDK name should be js-client-sdk

* misc fixes

* use js-sdk-common 3.2.0

* use js-sdk-common 3.2.0

* standardize linting

* use js-sdk-common 3.2.1

* use js-sdk-common 3.2.2

* update package-lock

* update js-sdk-common dependency for initialization error bugfix

* update js-sdk-common for content type bugfix; update some dev dependencies

* remove unsafe usage of hasOwnProperty

* use js-sdk-common 3.2.5

* resolve security vulnerability in acorn dependency (#240)

* update js-sdk-common to get console logging IE bugfix

* update js-sdk-common for duplicate diagnostic event fix

* update js-sdk-common for TS decl fix, improve TS compilation test (#243)

* bump to 3.2.9 to get startsWith fix (#244)

* add option to disable sync event flush (#245)

* update js-sdk-common + some dev dependencies

* No longer remove non-section hash in substring and regex matching

* linting

* the linting target to run in CI is "lint:all", not "lint"

* new js-common-sdk version (#249)

* resolve node-notifier vulnerability by updating jest dep (#250)

* adding contextKind to goal events, bumping js-common to get alias function (#251)

* pin typedoc to unblock our releases (#252)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-sdk-common

* Update common JS SDK library to use fixes for debug event generation issues.

* Update package lock.

* use Releaser v2 config + newer CI image (#256)

* Updated readme headers (#258)

* don't log a warning about custom goal being unknown

* lint + comment

* Release js-client-sdk with the header transformation change

* Updates docs link

* bump js-sdk-common version for better localstorage error handling

* Update launchdarkly-js-sdk-common for JSON error handling fix (sc-142333)

* update lockfile

* add basicLogger export

* Update common for application tags support. (#265)

* Re-remove package-lock.json and add it to the .gitignore. (#266)

* Switch to 5.0 of the SDK common.

* Use a combination of dependencies that is compatible. (#269)

* Use a combination of dependencies that is compatible. (#269) (#270)

* Update js-sdk-common to 3.7.0 (#271)

* Update node version used during release. (#272)

* Update common to 3.8.1 (#273)

* Update common version for jitter and backoff. (#274)

* Update typedoc and make associated documentation changes. (#275)

* Update to prerelease package. (#276)

* Update release config to use node 14.

* Update typedoc and make associated documentation changes. (#275) (#277)

* Update to pre-release common 5.0.0-alpha.2

* Update typings.d.ts (#278)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update to js-sdk-common 5.0.0-alpha.3

* [sc-177790] Replaced getUser with getContext (#279)

* Replaced getUser with getContext

* Remove contextKind

* Update GoalManager.js

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js (#280)

* Switch to 5.0 of the SDK common.

* Use a combination of dependencies that is compatible. (#269)

* Update to prerelease package. (#276)

* Update release config to use node 14.

* Update typedoc and make associated documentation changes. (#275) (#277)

* Update to pre-release common 5.0.0-alpha.2

* Update typings.d.ts (#278)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update to js-sdk-common 5.0.0-alpha.3

* [sc-177790] Replaced getUser with getContext (#279)

* Replaced getUser with getContext

* Remove contextKind

* Update GoalManager.js

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js

Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js (#281)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update SDK common version. (#282)

* Update release metadata.

* Refactor to use page visibility instead of unload/beforeunload. (#267)

* Upgrade JS SDK common to 5.0.1 for documentation fixes. (#283)

* Correcting documentation on visibility handler.

* build(deps): Upgrade to common 5.0.2 (#284)

---------

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: Zach Davis <zach@launchdarkly.com>
Co-authored-by: Elliot <35050275+Apache-HB@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Mar 21, 2023
* Update browserPlatform definition to detect when an EventSource
polyfill is available and has published that it supports setting the
method used for the stream. When this is the case, the platform
publishes that it supports using REPORT with EventSource and will
provide the polyfill implementation if the SDK attempts a EventSource
connection with the method set to REPORT.

* Fix initial linter warnings.

* Fix another linter warning.

* fix a broken readme link (#202)

* removing a stray character in the readme

* fix stream reconnect logic and add stream connection logging

* linter

* assume logger always exists, as we do in other components

* fix and simplify how the logger object is passed around

* make it so eventUrlTransformer actually does something

* linter

* copy flags object to prevent subtle update problem in Electron

* additional fix + test

* make bootstrapped flags available immediately

* Refactor some of the EventSource constructor selection logic.

* Change browserPlatform.js to check config options when determining
EventSource implementation to use. Added tests for EventSource factory
in browserPlatform.js

* Deal with linter.

* change how supported options are detected in EventSource polyfill

* fix broken homepage attributes (#209)

* improve bad initialization messages (#210)

* improve bad initialization messages

* remove the spaces

* fixing a broken link in a logged message (#212)

* add jsdelivr attribute to js packages (#213)

* adding an option to disable the camel-casing of flag keys (#214)

* adding an option disabling the camel-casing of flag keys

* update comment

* update comment

* fix linter errors

* address pr feedback

* updated readme

* [ch45487] useCamelCaseFlagKeys option (#215)

* Initial commit

* Update initLDClient.ts

* PR fixes. Added prettier.

* Update withLDProvider.test.tsx

* Fixed lint errors. Added test for useCamelCase false on server changes.

* Removed prettier.

* Re-added prettier

* Update yarn.lock

* Update prettier and lock files.

* Fixed more linting issues.

* fix a typo

* use persistent anonymous user logic by default in react sdk (#216)

* use persistent anonymous user logic by default in react sdk

* added a comment

* minor test change

* missed a line

* remove React package from monorepo

* make link text match link

* improve log format and add configurable prefix

* fix test

* linter

* deprecate samplingInterval

* linter

* improve log message for stream connection failures (#221)

* improve log message for stream connection failures

* update the reconnection warning so that it only displays for the first set of each reconnection attempts

* also test that the original put is getting called

* updating tests

* updating tests

* Revert "updating tests"

This reverts commit 84163cdf8b5af6a6e969d777b946a8a2973919ed.

* better abstraction

* minor change

* updating the js-common readme to mention client-side node (#222)

* remove common package, no more monorepo

* add Releaser metadata

* npm audit fix

* unify Rollup config

* migrate new demo code to new package structure

* moved example folder

* syntax fix in demo

* fix directory name

* fix linting

* use spread operator instead of Object.assign

* don't close client on beforeunload, but do flush events

* typo

* clarify test postconditions

* misc test app improvements for testing beforeunload handler

* rm unused yarn.lock

* rm typedoc dependency, don't commit installation of it during release

* fix paths

* fix file copying logic

* pr template

* revert

* fix programmatically reported version string

* upgrade Typescript to avoid Typedoc incompatibility

* Revert "upgrade Typescript to avoid Typedoc incompatibility"

This reverts commit 34d9a0f.

* update Babel, Jest, Rollup

* remove old releaser (#229)

* remove unused Rollup plugins, update dependencies

* use new config validation mechanism in js-sdk-common 3.x

* add image-loading event delivery logic factored out of js-sdk-common

* enable diagnostic events in JS SDK

* lint

* fix tests

* use common 3.0.0-beta2

* use 3.1.0-beta3, fix property name

* lint

* use js-sdk-common 3.1.0

* use js-sdk-common 3.1.1 for event payload ID fix

* use js-sdk-common 3.1.2 and loosen our other dependency

* fix license

* use js-sdk-common 3.2.0-beta1

* SDK name should be js-client-sdk

* misc fixes

* use js-sdk-common 3.2.0

* use js-sdk-common 3.2.0

* standardize linting

* use js-sdk-common 3.2.1

* use js-sdk-common 3.2.2

* update package-lock

* update js-sdk-common dependency for initialization error bugfix

* update js-sdk-common for content type bugfix; update some dev dependencies

* remove unsafe usage of hasOwnProperty

* use js-sdk-common 3.2.5

* resolve security vulnerability in acorn dependency (#240)

* update js-sdk-common to get console logging IE bugfix

* update js-sdk-common for duplicate diagnostic event fix

* update js-sdk-common for TS decl fix, improve TS compilation test (#243)

* bump to 3.2.9 to get startsWith fix (#244)

* add option to disable sync event flush (#245)

* update js-sdk-common + some dev dependencies

* No longer remove non-section hash in substring and regex matching

* linting

* the linting target to run in CI is "lint:all", not "lint"

* new js-common-sdk version (#249)

* resolve node-notifier vulnerability by updating jest dep (#250)

* adding contextKind to goal events, bumping js-common to get alias function (#251)

* pin typedoc to unblock our releases (#252)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-sdk-common

* Update common JS SDK library to use fixes for debug event generation issues.

* Update package lock.

* use Releaser v2 config + newer CI image (#256)

* Updated readme headers (#258)

* don't log a warning about custom goal being unknown

* lint + comment

* Release js-client-sdk with the header transformation change

* Updates docs link

* bump js-sdk-common version for better localstorage error handling

* Update launchdarkly-js-sdk-common for JSON error handling fix (sc-142333)

* update lockfile

* add basicLogger export

* Update common for application tags support. (#265)

* Re-remove package-lock.json and add it to the .gitignore. (#266)

* Switch to 5.0 of the SDK common.

* Use a combination of dependencies that is compatible. (#269)

* Use a combination of dependencies that is compatible. (#269) (#270)

* Update js-sdk-common to 3.7.0 (#271)

* Update node version used during release. (#272)

* Update common to 3.8.1 (#273)

* Update common version for jitter and backoff. (#274)

* Update typedoc and make associated documentation changes. (#275)

* Update to prerelease package. (#276)

* Update release config to use node 14.

* Update typedoc and make associated documentation changes. (#275) (#277)

* Update to pre-release common 5.0.0-alpha.2

* Update typings.d.ts (#278)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update to js-sdk-common 5.0.0-alpha.3

* [sc-177790] Replaced getUser with getContext (#279)

* Replaced getUser with getContext

* Remove contextKind

* Update GoalManager.js

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js (#280)

* Switch to 5.0 of the SDK common.

* Use a combination of dependencies that is compatible. (#269)

* Update to prerelease package. (#276)

* Update release config to use node 14.

* Update typedoc and make associated documentation changes. (#275) (#277)

* Update to pre-release common 5.0.0-alpha.2

* Update typings.d.ts (#278)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update to js-sdk-common 5.0.0-alpha.3

* [sc-177790] Replaced getUser with getContext (#279)

* Replaced getUser with getContext

* Remove contextKind

* Update GoalManager.js

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js

Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js (#281)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update SDK common version. (#282)

* Update release metadata.

* Refactor to use page visibility instead of unload/beforeunload. (#267)

* Upgrade JS SDK common to 5.0.1 for documentation fixes. (#283)

* Correcting documentation on visibility handler.

* build(deps): Upgrade to common 5.0.2 (#284)

* build(deps): Update to common 5.0.3 (#285)

---------

Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Zach Davis <zach@launchdarkly.com>
Co-authored-by: Elliot <35050275+Apache-HB@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Apr 12, 2023
* Fix another linter warning.

* fix a broken readme link (#202)

* removing a stray character in the readme

* fix stream reconnect logic and add stream connection logging

* linter

* assume logger always exists, as we do in other components

* fix and simplify how the logger object is passed around

* make it so eventUrlTransformer actually does something

* linter

* copy flags object to prevent subtle update problem in Electron

* additional fix + test

* make bootstrapped flags available immediately

* Refactor some of the EventSource constructor selection logic.

* Change browserPlatform.js to check config options when determining
EventSource implementation to use. Added tests for EventSource factory
in browserPlatform.js

* Deal with linter.

* change how supported options are detected in EventSource polyfill

* fix broken homepage attributes (#209)

* improve bad initialization messages (#210)

* improve bad initialization messages

* remove the spaces

* fixing a broken link in a logged message (#212)

* add jsdelivr attribute to js packages (#213)

* adding an option to disable the camel-casing of flag keys (#214)

* adding an option disabling the camel-casing of flag keys

* update comment

* update comment

* fix linter errors

* address pr feedback

* updated readme

* [ch45487] useCamelCaseFlagKeys option (#215)

* Initial commit

* Update initLDClient.ts

* PR fixes. Added prettier.

* Update withLDProvider.test.tsx

* Fixed lint errors. Added test for useCamelCase false on server changes.

* Removed prettier.

* Re-added prettier

* Update yarn.lock

* Update prettier and lock files.

* Fixed more linting issues.

* fix a typo

* use persistent anonymous user logic by default in react sdk (#216)

* use persistent anonymous user logic by default in react sdk

* added a comment

* minor test change

* missed a line

* remove React package from monorepo

* make link text match link

* improve log format and add configurable prefix

* fix test

* linter

* deprecate samplingInterval

* linter

* improve log message for stream connection failures (#221)

* improve log message for stream connection failures

* update the reconnection warning so that it only displays for the first set of each reconnection attempts

* also test that the original put is getting called

* updating tests

* updating tests

* Revert "updating tests"

This reverts commit 84163cdf8b5af6a6e969d777b946a8a2973919ed.

* better abstraction

* minor change

* updating the js-common readme to mention client-side node (#222)

* remove common package, no more monorepo

* add Releaser metadata

* npm audit fix

* unify Rollup config

* migrate new demo code to new package structure

* moved example folder

* syntax fix in demo

* fix directory name

* fix linting

* use spread operator instead of Object.assign

* don't close client on beforeunload, but do flush events

* typo

* clarify test postconditions

* misc test app improvements for testing beforeunload handler

* rm unused yarn.lock

* rm typedoc dependency, don't commit installation of it during release

* fix paths

* fix file copying logic

* pr template

* revert

* fix programmatically reported version string

* upgrade Typescript to avoid Typedoc incompatibility

* Revert "upgrade Typescript to avoid Typedoc incompatibility"

This reverts commit 34d9a0f.

* update Babel, Jest, Rollup

* remove old releaser (#229)

* remove unused Rollup plugins, update dependencies

* use new config validation mechanism in js-sdk-common 3.x

* add image-loading event delivery logic factored out of js-sdk-common

* enable diagnostic events in JS SDK

* lint

* fix tests

* use common 3.0.0-beta2

* use 3.1.0-beta3, fix property name

* lint

* use js-sdk-common 3.1.0

* use js-sdk-common 3.1.1 for event payload ID fix

* use js-sdk-common 3.1.2 and loosen our other dependency

* fix license

* use js-sdk-common 3.2.0-beta1

* SDK name should be js-client-sdk

* misc fixes

* use js-sdk-common 3.2.0

* use js-sdk-common 3.2.0

* standardize linting

* use js-sdk-common 3.2.1

* use js-sdk-common 3.2.2

* update package-lock

* update js-sdk-common dependency for initialization error bugfix

* update js-sdk-common for content type bugfix; update some dev dependencies

* remove unsafe usage of hasOwnProperty

* use js-sdk-common 3.2.5

* resolve security vulnerability in acorn dependency (#240)

* update js-sdk-common to get console logging IE bugfix

* update js-sdk-common for duplicate diagnostic event fix

* update js-sdk-common for TS decl fix, improve TS compilation test (#243)

* bump to 3.2.9 to get startsWith fix (#244)

* add option to disable sync event flush (#245)

* update js-sdk-common + some dev dependencies

* No longer remove non-section hash in substring and regex matching

* linting

* the linting target to run in CI is "lint:all", not "lint"

* new js-common-sdk version (#249)

* resolve node-notifier vulnerability by updating jest dep (#250)

* adding contextKind to goal events, bumping js-common to get alias function (#251)

* pin typedoc to unblock our releases (#252)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-sdk-common

* Update common JS SDK library to use fixes for debug event generation issues.

* Update package lock.

* use Releaser v2 config + newer CI image (#256)

* Updated readme headers (#258)

* don't log a warning about custom goal being unknown

* lint + comment

* Release js-client-sdk with the header transformation change

* Updates docs link

* bump js-sdk-common version for better localstorage error handling

* Update launchdarkly-js-sdk-common for JSON error handling fix (sc-142333)

* update lockfile

* add basicLogger export

* Update common for application tags support. (#265)

* Re-remove package-lock.json and add it to the .gitignore. (#266)

* Switch to 5.0 of the SDK common.

* Use a combination of dependencies that is compatible. (#269)

* Use a combination of dependencies that is compatible. (#269) (#270)

* Update js-sdk-common to 3.7.0 (#271)

* Update node version used during release. (#272)

* Update common to 3.8.1 (#273)

* Update common version for jitter and backoff. (#274)

* Update typedoc and make associated documentation changes. (#275)

* Update to prerelease package. (#276)

* Update release config to use node 14.

* Update typedoc and make associated documentation changes. (#275) (#277)

* Update to pre-release common 5.0.0-alpha.2

* Update typings.d.ts (#278)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update to js-sdk-common 5.0.0-alpha.3

* [sc-177790] Replaced getUser with getContext (#279)

* Replaced getUser with getContext

* Remove contextKind

* Update GoalManager.js

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js (#280)

* Switch to 5.0 of the SDK common.

* Use a combination of dependencies that is compatible. (#269)

* Update to prerelease package. (#276)

* Update release config to use node 14.

* Update typedoc and make associated documentation changes. (#275) (#277)

* Update to pre-release common 5.0.0-alpha.2

* Update typings.d.ts (#278)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update to js-sdk-common 5.0.0-alpha.3

* [sc-177790] Replaced getUser with getContext (#279)

* Replaced getUser with getContext

* Remove contextKind

* Update GoalManager.js

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js

Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update GoalManager.js (#281)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update SDK common version. (#282)

* Update release metadata.

* Refactor to use page visibility instead of unload/beforeunload. (#267)

* Upgrade JS SDK common to 5.0.1 for documentation fixes. (#283)

* Correcting documentation on visibility handler.

* build(deps): Upgrade to common 5.0.2 (#284)

* build(deps): Update to common 5.0.3 (#285)

---------

Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Zach Davis <zach@launchdarkly.com>
Co-authored-by: Elliot <35050275+Apache-HB@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants