Skip to content

feat(fdc): Add validateArgsWithOptions()#9614

Open
stephenarosaj wants to merge 6 commits intomainfrom
rosa/validateArgs
Open

feat(fdc): Add validateArgsWithOptions()#9614
stephenarosaj wants to merge 6 commits intomainfrom
rosa/validateArgs

Conversation

@stephenarosaj
Copy link
Contributor

@stephenarosaj stephenarosaj commented Mar 3, 2026

Add validateArgsWithOptions(), which will be used by Data Connect Generated SDKs generated from FDC emulator binaries with versions > 3.2.0 - see #9439. Older versions will continue to use validateArgs(), as they don't know about the options argument.

@changeset-bot
Copy link

changeset-bot bot commented Mar 3, 2026

🦋 Changeset detected

Latest commit: d50fead

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@firebase/data-connect Minor
firebase Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, 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 introduces a new utility function, validateArgsWithOptions(), designed to streamline argument validation for Data Connect SDKs that need to support additional execution options. This change ensures compatibility with newer FDC emulator binaries while maintaining the existing validateArgs() for older SDK versions. The update enhances the flexibility and robustness of argument parsing within the Data Connect library.

Highlights

  • New Argument Validation Function: Introduced validateArgsWithOptions() to handle argument parsing for Data Connect SDKs that require ExecuteQueryOptions, specifically for those generated from FDC emulator binaries version 3.2.0 and higher.
  • Enhanced Argument Parsing: The new validateArgsWithOptions() function supports flexible argument passing, allowing for the DataConnect instance, variables, and options to be provided in various combinations, or inferred when possible.
  • Updated Existing Validation: The existing validateArgs() function was updated with improved JSDoc comments and clearer parameter naming (variablesRequired instead of validateVars) to better reflect its purpose for older SDKs not concerned with options.
  • API Visibility Update: The ExecuteQueryOptions interface in the API review file was explicitly marked as @public.
  • Comprehensive Unit Tests: Added a new dedicated test file with extensive unit tests for both validateArgs() and validateArgsWithOptions() to ensure correct argument parsing and error handling.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • .changeset/four-bottles-collect.md
    • Added a new changeset entry for the validateArgsWithOptions() function.
  • common/api-review/data-connect.api.md
    • Updated the visibility of ExecuteQueryOptions to public.
  • packages/data-connect/src/core/query/queryOptions.ts
    • Added JSDoc comments to the ExecuteQueryOptions interface.
  • packages/data-connect/src/util/validateArgs.ts
    • Implemented a new validateArgsWithOptions function to handle arguments including ExecuteQueryOptions.
    • Refined the existing validateArgs function with updated JSDoc and parameter names.
  • packages/data-connect/test/unit/validateArgs.test.ts
    • Added new unit tests for both validateArgs and validateArgsWithOptions functions, covering various argument combinations and error cases.
Activity
  • The pull request was created by stephenarosaj, introducing a new feature for argument validation in Data Connect SDKs.
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 by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

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 pull request 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

  1. 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.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 3, 2026

Changeset File Check ✅

  • No modified packages are missing from the changeset file.
  • No changeset formatting errors detected.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a 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 a new utility function validateArgsWithOptions to handle function arguments that may include ExecuteQueryOptions, which is a new feature for generated SDKs. The changes also include updating API documentation and adding comprehensive unit tests for the new functionality.

My main feedback is regarding a potential bug in the argument parsing logic within validateArgsWithOptions. The current implementation can misinterpret arguments when called with only an options object. I've suggested a more robust parsing logic to fix this. Additionally, the new test suite should be updated to cover this specific scenario.

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

Successfully merging this pull request may close these issues.

1 participant