-
Notifications
You must be signed in to change notification settings - Fork 40
feat: Migrate MultiProvider from js-sdk-contrib #1234
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
base: main
Are you sure you want to change the base?
feat: Migrate MultiProvider from js-sdk-contrib #1234
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.
Summary of Changes
Hello @jonathannorris, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
This pull request integrates the MultiProvider feature directly into the OpenFeature SDK, enhancing its capability to manage and evaluate feature flags from multiple sources simultaneously. This migration provides a robust framework for scenarios like gradual migrations between flag providers, combining different data sources, or comparing flag values across systems. The implementation includes distinct server and web SDK components, complete with various evaluation strategies and comprehensive testing, streamlining multi-provider operations for developers.
Highlights
- Core Functionality Migration: The
MultiProvider
functionality has been migrated fromjs-sdk-contrib
directly into the main SDK, providing native support for managing multiple feature flag providers. - Platform-Specific Implementations: Dedicated
MultiProvider
implementations are now available for both server-side (MultiProvider
) and web-side (WebMultiProvider
) SDKs, optimized for their respective environments. - New Evaluation Strategies: Three distinct evaluation strategies are included:
FirstMatchStrategy
(default),FirstSuccessfulStrategy
, andComparisonStrategy
, offering flexible control over how flags are resolved across multiple providers. - Enhanced Test Coverage: Comprehensive test coverage has been added for both server and web implementations, ensuring reliability and stability of the new MultiProvider features.
- Updated Documentation: Detailed documentation has been updated for both server and web SDKs, providing clear usage examples and explanations of the new MultiProvider and its strategies.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
Signed-off-by: Jonathan Norris <[email protected]>
Signed-off-by: Jonathan Norris <[email protected]>
…event typings Signed-off-by: Jonathan Norris <[email protected]>
Signed-off-by: Jonathan Norris <[email protected]>
Signed-off-by: Jonathan Norris <[email protected]>
e388496
to
6b1d6d2
Compare
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.
Code Review
This pull request introduces the MultiProvider
functionality for both server and web SDKs, which is a fantastic addition. The implementation is robust and well-tested. I've identified a few areas for improvement, primarily in the documentation to ensure it accurately reflects the implementation, especially for the ComparisonStrategy
. Additionally, there are some minor opportunities for code refinement, such as removing redundant logging and a leftover TODO
comment. Overall, great work on this significant feature.
Signed-off-by: Jonathan Norris <[email protected]>
…entation Signed-off-by: Jonathan Norris <[email protected]>
Signed-off-by: Jonathan Norris <[email protected]>
Signed-off-by: Jonathan Norris <[email protected]>
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.
Pull Request Overview
This PR migrates the MultiProvider functionality from the js-sdk-contrib repository into the main OpenFeature JS SDK, providing built-in support for multiple provider evaluation strategies. The implementation includes server and web variants with comprehensive testing and documentation.
Key Changes:
- Added
MultiProvider
for server SDK andWebMultiProvider
for web SDK with support for multiple evaluation strategies - Implemented three evaluation strategies: FirstMatch, FirstSuccessful, and Comparison
- Added comprehensive test coverage for both server and web implementations
- Updated documentation with usage examples and strategy explanations
Reviewed Changes
Copilot reviewed 30 out of 31 changed files in this pull request and generated 6 comments.
File | Description |
---|---|
packages/server/src/provider/multi-provider/ | Server implementation with async evaluation, hook handling, and tracking support |
packages/web/src/provider/multi-provider/ | Web implementation with synchronous evaluation and web-specific optimizations |
packages//test/multi-provider.spec.ts | Comprehensive test suites covering all strategies and edge cases |
packages/*/README.md | Updated documentation with usage examples and Multi-Provider sections |
Comments suppressed due to low confidence (1)
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
packages/web/src/provider/multi-provider/strategies/first-successful-strategy.ts
Outdated
Show resolved
Hide resolved
Signed-off-by: Jonathan Norris <[email protected]>
This PR migrates the
MultiProvider
functionality from the js-sdk-contrib repository into the main js-sdk, providing built-in support for multi-provider evaluation strategies. Addresses #1217What's Changed
MultiProvider
for server SDK with support for multiple evaluation strategiesWebMultiProvider
for web SDK with web-specific optimizationsTesting