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

Support complex queries #3298

Merged
merged 4 commits into from
Jul 24, 2023
Merged

Support complex queries #3298

merged 4 commits into from
Jul 24, 2023

Conversation

esquevin
Copy link
Contributor

@esquevin esquevin commented Jun 27, 2023

This MR address an error that breaks the merge fragment feature. I think mutating the selection while iterating on it creates some structures that are way too deep and/or cyclical.

I stumbled upon the issue on https://api.sorare.com/sports/graphql/playground while trying to merge the fragments of this query:

query NBAHomepageQuery($useNbaPostseasonHeader: Boolean!) {
      currentUser {
        slug
        ...NBAHomepageHeader_currentUser
        ...NBAHomepageOverview_currentUser
        __typename
      }
      nbaLiveFixture {
        slug
        ...NBAHomepageOverview_nbaLiveFixture
        __typename
      }
      nbaOpenFixture {
        slug
        ...NBAHomepageOverview_nbaOpenFixture
        __typename
      }
      nbaPastFixtures(first: 1) {
        ...NBAHomepageOverview_nbaPastFixtures
        __typename
      }
      cumulativeLeaderboards(sport: NBA) @include(if: $useNbaPostseasonHeader) {
        slug
        ...NBAHomepageOverview_CumulativeLeaderboard
        __typename
      }
    }

    fragment NBAHomepageHeader_currentUser on CurrentUser {
      id
      slug
      ...HomepageHeader_currentUser
      nbaCardCounts {
        ...HomepageHeader_CardCountsByRarity
        __typename
      }
      __typename
    }

    fragment HomepageHeader_currentUser on CurrentUser {
      id
      slug
      nickname
      __typename
    }

    fragment HomepageHeader_CardCountsByRarity on CardCountsByRarity {
      ...CardCounts_CardCountsByRarity
      __typename
    }

    fragment CardCounts_CardCountsByRarity on CardCountsByRarity {
      uniqueCount
      superRareCount
      rareCount
      limitedCount
      commonCount
      __typename
    }

    fragment NBAHomepageOverview_CumulativeLeaderboard on CumulativeLeaderboard {
      slug
      currentCumulativeGameWeek
      ...PostseasonLeadup_CumulativeLeaderboard
      __typename
    }

    fragment PostseasonLeadup_CumulativeLeaderboard on CumulativeLeaderboard {
      slug
      displayName
      ...PostseasonHeader_CumulativeLeaderboard
      ...CumulativeLeaderboards_CumulativeLeaderboard
      __typename
    }

    fragment PostseasonHeader_CumulativeLeaderboard on CumulativeLeaderboard {
      slug
      startGameWeek
      endGameWeek
      currentCumulativeGameWeek
      myCumulativeLeaderboardRank {
        id
        projectedPrizeCredits
        __typename
      }
      __typename
    }

    fragment CumulativeLeaderboards_CumulativeLeaderboard on CumulativeLeaderboard {
      slug
      ...CumulativeLeaderboardRank_CumulativeLeaderboard
      myCumulativeLeaderboardRank {
        id
        cumulativeLeaderboard {
          slug
          ...CumulativeLeaderboardRank_CumulativeLeaderboard
          __typename
        }
        __typename
      }
      __typename
    }

    fragment CumulativeLeaderboardRank_CumulativeLeaderboard on CumulativeLeaderboard {
      slug
      displayName
      iconImageUrl
      startGameWeek
      endGameWeek
      participantsCount
      leaderboardRarity
      myCumulativeLeaderboardRank {
        id
        score
        rank
        projectedPrizeCredits
        __typename
      }
      __typename
    }

    fragment NBAHomepageOverview_currentUser on CurrentUser {
      slug
      nbaMostRecentlyPlayedPastFixture {
        slug
        ...Past_NBAFixture
        leaderboards {
          slug
          ...getLeaderboardScarcity_LeaderboardInterface
          __typename
        }
        __typename
      }
      ...Upcoming_currentUser
      __typename
    }

    fragment Past_NBAFixture on NBAFixture {
      slug
      gameWeek
      leaderboards {
        slug
        ...getLeaderboardScarcity_LeaderboardInterface
        ...Lineups_NBALeaderboard
        __typename
      }
      __typename
    }

    fragment getLeaderboardScarcity_LeaderboardInterface on LeaderboardInterface {
      slug
      leaderboardRarity
      __typename
    }

    fragment Lineups_NBALeaderboard on NBALeaderboard {
      slug
      isTraining
      ...Lineup_NBALeaderboard
      myLineups {
        ...Homepage_Lineup_NBALineup
        __typename
      }
      __typename
    }

    fragment Lineup_NBALeaderboard on NBALeaderboard {
      slug
      fixture {
        slug
        fixtureState
        __typename
      }
      isUserEligible
      lineupsCount
      iconImageUrl
      monochromeIconImageUrl
      requirements {
        ...getUnlockLink_NBALeaderboardRequirements
        ...getCardScarcity_LeaderboardRequirementsInterface
        __typename
      }
      ...Lineup_LeaderboardInterface
      __typename
    }

    fragment getUnlockLink_NBALeaderboardRequirements on NBALeaderboardRequirements {
      allowedConference
      ...getAlgoliaFiltersForRequirements_NBALeaderboardRequirements
      __typename
    }

    fragment getAlgoliaFiltersForRequirements_NBALeaderboardRequirements on NBALeaderboardRequirements {
      allowedConference
      ...getAlgoliaFiltersForRequirements_LeaderboardRequirementsInterface
      __typename
    }

    fragment getAlgoliaFiltersForRequirements_LeaderboardRequirementsInterface on LeaderboardRequirementsInterface {
      allowedRarities
      minRarity {
        minCount
        rarity
        __typename
      }
      playerAgeRequirements {
        minAge
        maxAge
        __typename
      }
      __typename
    }

    fragment getCardScarcity_LeaderboardRequirementsInterface on LeaderboardRequirementsInterface {
      allowedRarities
      minRarity {
        minCount
        rarity
        __typename
      }
      __typename
    }

    fragment Lineup_LeaderboardInterface on LeaderboardInterface {
      slug
      fixture {
        slug
        fixtureState
        __typename
      }
      isUserEligible
      lineupsCount
      iconImageUrl
      monochromeIconImageUrl
      ...LineupHeader_LeaderboardInterface
      requirements {
        ...getCardScarcity_LeaderboardRequirementsInterface
        __typename
      }
      ...LineupFooter_LeaderboardInterface
      __typename
    }

    fragment LineupHeader_LeaderboardInterface on LeaderboardInterface {
      slug
      displayName
      fixture {
        slug
        ...LineupDate_FixtureInterface
        __typename
      }
      __typename
    }

    fragment LineupDate_FixtureInterface on FixtureInterface {
      slug
      startDate
      endDate
      __typename
    }

    fragment LineupFooter_LeaderboardInterface on LeaderboardInterface {
      slug
      fixture {
        slug
        fixtureState
        __typename
      }
      ...formatCardRewards_LeaderboardInterface
      ...formatFiatRewards_LeaderboardInterface
      ...getLeaderboardIRLPrize_LeaderboardInterface
      __typename
    }

    fragment formatCardRewards_LeaderboardInterface on LeaderboardInterface {
      slug
      prizePool {
        uniqueCardsCount
        superRareCardsCount
        rareCardsCount
        limitedCardsCount
        commonCardsMaxThreshold
        commonCardsCount
        __typename
      }
      __typename
    }

    fragment formatFiatRewards_LeaderboardInterface on LeaderboardInterface {
      slug
      prizePool {
        amountUSDCents
        __typename
      }
      __typename
    }

    fragment getLeaderboardIRLPrize_LeaderboardInterface on LeaderboardInterface {
      slug
      displayName
      fixture {
        id
        slug
        gameWeek
        __typename
      }
      __typename
    }

    fragment Homepage_Lineup_NBALineup on NBALineup {
      id
      rank
      score
      cards {
        ...PlayerCard_NBACardInLineup
        __typename
      }
      ...Homepage_Lineup_LineupInterface
      __typename
    }

    fragment PlayerCard_NBACardInLineup on NBACardInLineup {
      score
      isMvp
      card {
        slug
        ...Card_CardInterface
        __typename
      }
      playerInFixture {
        status {
          statusIconType
          upcomingGames {
            id
            __typename
          }
          inGame
          isScoreFinal
          __typename
        }
        __typename
      }
      ...PlayerCardScore_NBACardInLineup
      __typename
    }

    fragment Card_CardInterface on CardInterface {
      id
      slug
      fullImageUrl
      player {
        slug
        displayName
        __typename
      }
      __typename
    }

    fragment PlayerCardScore_NBACardInLineup on NBACardInLineup {
      score
      card {
        slug
        totalBonus
        __typename
      }
      playerInFixture {
        status {
          statusIconType
          hasTBDGames
          upcomingGames {
            id
            __typename
          }
          gameStats {
            score
            game {
              id
              status
              __typename
            }
            __typename
          }
          inGame
          isScoreFinal
          __typename
        }
        __typename
      }
      __typename
    }

    fragment Homepage_Lineup_LineupInterface on LineupInterface {
      id
      rank
      score
      cards {
        card {
          slug
          __typename
        }
        __typename
      }
      ...LineupFooter_LineupInterface
      __typename
    }

    fragment LineupFooter_LineupInterface on LineupInterface {
      id
      projectedReward {
        ...LineupFooterDumb_ProjectedReward
        __typename
      }
      reward {
        id
        ...LineupFooterDumb_RewardInterface
        __typename
      }
      accoladeString
      __typename
    }

    fragment LineupFooterDumb_ProjectedReward on ProjectedReward {
      ...RewardDescription_ProjectedReward
      __typename
    }

    fragment RewardDescription_ProjectedReward on ProjectedReward {
      tier
      rarity
      amountUSDCents
      __typename
    }

    fragment LineupFooterDumb_RewardInterface on RewardInterface {
      id
      ...RewardDescription_RewardInterface
      __typename
    }

    fragment RewardDescription_RewardInterface on RewardInterface {
      id
      tier
      card {
        slug
        rarity
        player {
          slug
          displayName
          __typename
        }
        __typename
      }
      state
      __typename
    }

    fragment Upcoming_currentUser on CurrentUser {
      slug
      ...CompetitionWithStarterPacks_currentUser
      __typename
    }

    fragment CompetitionWithStarterPacks_currentUser on CurrentUser {
      slug
      nbaRecommendedStarterBundles(first: 3) {
        id
        ...StarterPack_CardBundleOffer
        __typename
      }
      __typename
    }

    fragment StarterPack_CardBundleOffer on CardBundleOffer {
      id
      ...StarterBundleProjection_CardBundleOffer
      __typename
    }

    fragment StarterBundleProjection_CardBundleOffer on CardBundleOffer {
      id
      rank
      leaderboard {
        slug
        displayName
        lineupsCount
        fixture {
          slug
          gameWeek
          __typename
        }
        __typename
      }
      __typename
    }

    fragment NBAHomepageOverview_nbaLiveFixture on NBAFixture {
      slug
      ...Live_NBAFixture
      leaderboards {
        slug
        ...getLeaderboardScarcity_LeaderboardInterface
        ...getCardRarityToPromote_LeaderboardInterface
        __typename
      }
      __typename
    }

    fragment Live_NBAFixture on NBAFixture {
      slug
      games {
        ...Scoreboard_NBAGame
        __typename
      }
      leaderboards {
        slug
        ...Lineups_NBALeaderboard
        ...Scoreboard_NBALeaderboard
        __typename
      }
      __typename
    }

    fragment Scoreboard_NBAGame on NBAGame {
      id
      quarter
      isHalftime
      ...Scoreboard_GameInterface
      __typename
    }

    fragment Scoreboard_GameInterface on GameInterface {
      id
      status
      startDate
      ...ScoreboardGame_GameInterface
      __typename
    }

    fragment ScoreboardGame_GameInterface on GameInterface {
      id
      status
      startDate
      homeScore
      awayScore
      homeTeam {
        slug
        name
        abbreviation
        svgUrl
        __typename
      }
      awayTeam {
        slug
        name
        abbreviation
        svgUrl
        __typename
      }
      __typename
    }

    fragment Scoreboard_NBALeaderboard on NBALeaderboard {
      slug
      myLineups {
        id
        games {
          ...Scoreboard_GameWithCardInLineupInterface
          __typename
        }
        __typename
      }
      __typename
    }

    fragment Scoreboard_GameWithCardInLineupInterface on GameWithCardInLineupInterface {
      game {
        id
        __typename
      }
      homeCardsInLineups {
        card {
          slug
          __typename
        }
        __typename
      }
      awayCardsInLineups {
        card {
          slug
          __typename
        }
        __typename
      }
      __typename
    }

    fragment getCardRarityToPromote_LeaderboardInterface on LeaderboardInterface {
      slug
      leaderboardRarity
      __typename
    }

    fragment NBAHomepageOverview_nbaOpenFixture on NBAFixture {
      slug
      ...Upcoming_NBAFixture
      ...getRecommendedLeaderboards_NBAFixture
      leaderboards {
        slug
        ...getCardRarityToPromote_LeaderboardInterface
        __typename
      }
      __typename
    }

    fragment Upcoming_NBAFixture on NBAFixture {
      slug
      gameWeek
      ...TimeUntilNextFixture_FixtureInterface
      games {
        ...Scoreboard_NBAGame
        __typename
      }
      leaderboards {
        slug
        displayName
        leaderboardRarity
        isUserEligible
        ...Scoreboard_NBALeaderboard
        ...Lineups_NBALeaderboard
        __typename
      }
      __typename
    }

    fragment TimeUntilNextFixture_FixtureInterface on FixtureInterface {
      slug
      gameWeek
      startDate
      __typename
    }

    fragment getRecommendedLeaderboards_NBAFixture on NBAFixture {
      slug
      leaderboards {
        slug
        __typename
      }
      myRecommendedLeaderboards(first: 5) {
        slug
        __typename
      }
      __typename
    }

    fragment NBAHomepageOverview_nbaPastFixtures on NBAFixtureConnection {
      ...Upcoming_nbaPastFixtures
      __typename
    }

    fragment Upcoming_nbaPastFixtures on NBAFixtureConnection {
      nodes {
        slug
        gameWeek
        ...PromotedPlayers_NBAFixture
        __typename
      }
      __typename
    }

    fragment PromotedPlayers_NBAFixture on NBAFixture {
      slug
      playerFixtureStats(first: 15, order: SCORE, hideUnownedPlayers: false) {
        nodes {
          player {
            slug
            team {
              slug
              __typename
            }
            __typename
          }
          __typename
        }
        __typename
      }
      __typename
    }

Issue only seems to happen when merging the query with the schema provided.

I spent some time poking at the code without success until I had a hunch and split the visitor logic into a 2 pass process which fixed the error.

I'm concerned about how best to test it as I wasn't sure I could dump a huge schema and and a huge query in the repo for one test. What would you advise?

@changeset-bot
Copy link

changeset-bot bot commented Jun 27, 2023

🦋 Changeset detected

Latest commit: b62ed38

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

This PR includes changesets to release 5 packages
Name Type
@graphiql/toolkit Patch
@graphiql/react Patch
graphiql Patch
@graphiql/plugin-code-exporter Patch
@graphiql/plugin-explorer Patch

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

@linux-foundation-easycla
Copy link

CLA Missing ID CLA Not Signed

@esquevin esquevin force-pushed the support-complex-queries branch from 7c51edc to da51fb4 Compare June 27, 2023 08:51
@linux-foundation-easycla
Copy link

CLA Missing ID CLA Not Signed

@esquevin esquevin force-pushed the support-complex-queries branch 2 times, most recently from 176a1e7 to 534f506 Compare June 27, 2023 13:10
@acao
Copy link
Member

acao commented Jun 27, 2023

@esquevin thanks for this! dumping huge files into the test fixtures that break the functionality is more than welcome. If our tooling can't handle complex use cases then it's not serving it's purpose. A few years back, I proposed to move the merge ast method into graphql-language-service utils because it would make more sense, and would be useful for an LSP codelens as well. There are more utils there that use graphql AST visitors to give you some testing patterns to work with.

@codecov
Copy link

codecov bot commented Jun 27, 2023

Codecov Report

Merging #3298 (b62ed38) into main (d314dc7) will increase coverage by 0.06%.
The diff coverage is 100.00%.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #3298      +/-   ##
==========================================
+ Coverage   55.69%   55.76%   +0.06%     
==========================================
  Files         110      110              
  Lines        5237     5242       +5     
  Branches     1425     1425              
==========================================
+ Hits         2917     2923       +6     
  Misses       1896     1896              
+ Partials      424      423       -1     
Impacted Files Coverage Δ
.../graphiql-toolkit/src/graphql-helpers/merge-ast.ts 86.44% <100.00%> (+3.10%) ⬆️

@esquevin esquevin force-pushed the support-complex-queries branch 2 times, most recently from d6ec689 to 8dc72ee Compare June 28, 2023 08:39
@esquevin
Copy link
Contributor Author

Added the test showcasing the error. If you checkout df8d7a1 and run the test you should get:

#
# Fatal error in , line 0
# Fatal JavaScript invalid size error 150994961
#
#
#
#FailureMessage Object: 0x16d585e38
 1: 0x102980fb8 node::NodePlatform::GetStackTracePrinter()::$_3::__invoke() [/Users/USERNAME/n/bin/node]
 2: 0x1038b5e64 V8_Fatal(char const*, ...) [/Users/USERNAME/n/bin/node]
 3: 0x102bf5a78 v8::internal::FactoryBase<v8::internal::Factory>::NewFixedArrayWithFiller(v8::internal::Handle<v8::internal::Map>, int, v8::internal::Handle<v8::internal::Oddball>, v8::internal::AllocationType) [/Users/USERNAME/n/bin/node]
 4: 0x102d81f5c v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2>>::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int) [/Users/USERNAME/n/bin/node]
 5: 0x102f81e20 v8::internal::Runtime_GrowArrayElements(int, unsigned long*, v8::internal::Isolate*) [/Users/USERNAME/n/bin/node]
 6: 0x1032d904c Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit [/Users/USERNAME/n/bin/node]
 7: 0x107fa18c8 
 8: 0x107f4a188 
 9: 0x107f49b90 
10: 0x107f9c024 
11: 0x107f4e9a8 
12: 0x107f5545c 
13: 0x103264198 Builtins_InterpreterEntryTrampoline [/Users/USERNAME/n/bin/node]
14: 0x103264198 Builtins_InterpreterEntryTrampoline [/Users/USERNAME/n/bin/node]
15: 0x103322b88 Builtins_PromiseConstructor [/Users/USERNAME/n/bin/node]
16: 0x103261914 Builtins_JSBuiltinsConstructStub [/Users/USERNAME/n/bin/node]
17: 0x107f50b10 
18: 0x103264198 Builtins_InterpreterEntryTrampoline [/Users/USERNAME/n/bin/node]
19: 0x103295ef4 Builtins_AsyncFunctionAwaitResolveClosure [/Users/USERNAME/n/bin/node]
20: 0x103324738 Builtins_PromiseFulfillReactionJob [/Users/USERNAME/n/bin/node]
21: 0x103287c4c Builtins_RunMicrotasks [/Users/USERNAME/n/bin/node]
22: 0x1032623a4 Builtins_JSRunMicrotasksEntry [/Users/USERNAME/n/bin/node]
23: 0x102ba699c v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/Users/USERNAME/n/bin/node]
24: 0x102ba6e8c v8::internal::(anonymous namespace)::InvokeWithTryCatch(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/Users/USERNAME/n/bin/node]
25: 0x102ba7068 v8::internal::Execution::TryRunMicrotasks(v8::internal::Isolate*, v8::internal::MicrotaskQueue*, v8::internal::MaybeHandle<v8::internal::Object>*) [/Users/USERNAME/n/bin/node]
26: 0x102bcd7b4 v8::internal::MicrotaskQueue::RunMicrotasks(v8::internal::Isolate*) [/Users/USERNAME/n/bin/node]
27: 0x102bce04c v8::internal::MicrotaskQueue::PerformCheckpoint(v8::Isolate*) [/Users/USERNAME/n/bin/node]
28: 0x102aeab8c v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo) [/Users/USERNAME/n/bin/node]
29: 0x102aea688 v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) [/Users/USERNAME/n/bin/node]
30: 0x102ae9eb4 v8::internal::Builtin_HandleApiCall(int, unsigned long*, v8::internal::Isolate*) [/Users/USERNAME/n/bin/node]
31: 0x1032d918c Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit [/Users/USERNAME/n/bin/node]
32: 0x103264198 Builtins_InterpreterEntryTrampoline [/Users/USERNAME/n/bin/node]
33: 0x1032624d0 Builtins_JSEntryTrampoline [/Users/USERNAME/n/bin/node]
34: 0x103262164 Builtins_JSEntry [/Users/USERNAME/n/bin/node]
35: 0x102ba69cc v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/Users/USERNAME/n/bin/node]
36: 0x102ba5f00 v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) [/Users/USERNAME/n/bin/node]
37: 0x102a96294 v8::Function::Call(v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8::Local<v8::Value>*) [/Users/USERNAME/n/bin/node]
38: 0x102870d18 node::InternalCallbackScope::Close() [/Users/USERNAME/n/bin/node]
39: 0x102870fe8 node::InternalMakeCallback(node::Environment*, v8::Local<v8::Object>, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*, node::async_context) [/Users/USERNAME/n/bin/node]
40: 0x102885c14 node::AsyncWrap::MakeCallback(v8::Local<v8::Function>, int, v8::Local<v8::Value>*) [/Users/USERNAME/n/bin/node]
41: 0x1029d777c node::StreamBase::CallJSOnreadMethod(long, v8::Local<v8::ArrayBuffer>, unsigned long, node::StreamBase::StreamBaseJSChecks) [/Users/USERNAME/n/bin/node]
42: 0x1029d8e34 node::EmitToJSStreamListener::OnStreamRead(long, uv_buf_t const&) [/Users/USERNAME/n/bin/node]
43: 0x1029dce10 node::LibuvStreamWrap::OnUvRead(long, uv_buf_t const*) [/Users/USERNAME/n/bin/node]
44: 0x1029dd5ac node::LibuvStreamWrap::ReadStart()::$_1::__invoke(uv_stream_s*, long, uv_buf_t const*) [/Users/USERNAME/n/bin/node]
45: 0x10324dfd8 uv__stream_io [/Users/USERNAME/n/bin/node]
46: 0x1032560f0 uv__io_poll [/Users/USERNAME/n/bin/node]
47: 0x103243e1c uv_run [/Users/USERNAME/n/bin/node]
48: 0x102871704 node::SpinEventLoop(node::Environment*) [/Users/USERNAME/n/bin/node]
49: 0x10295e3f8 node::NodeMainInstance::Run() [/Users/USERNAME/n/bin/node]
50: 0x1028ee430 node::LoadSnapshotDataAndRun(node::SnapshotData const**, node::InitializationResult const*) [/Users/USERNAME/n/bin/node]
51: 0x1028ee6b4 node::Start(int, char**) [/Users/USERNAME/n/bin/node]
52: 0x18c26bf28 start [/usr/lib/dyld]

@linux-foundation-easycla
Copy link

CLA Missing ID CLA Not Signed

@esquevin esquevin force-pushed the support-complex-queries branch from cea53fd to 858250c Compare June 28, 2023 20:46
@acao
Copy link
Member

acao commented Jul 14, 2023

this is awesome, thanks for this! it seems ready to go!

@linux-foundation-easycla
Copy link

CLA Missing ID CLA Not Signed

@esquevin esquevin force-pushed the support-complex-queries branch from 3d1a4e9 to 41ce863 Compare July 19, 2023 08:08
@acao acao force-pushed the support-complex-queries branch from 41ce863 to 12a1282 Compare July 22, 2023 23:39
@esquevin
Copy link
Contributor Author

@acao Seems everything is green, can I do anything to help this get merged?

esquevin added 4 commits July 24, 2023 16:11
Use a 2 pass strategy
Add to manually remove commas between parameters
as print returns a different format than prettier
@acao acao force-pushed the support-complex-queries branch from 12a1282 to b62ed38 Compare July 24, 2023 14:11
@acao
Copy link
Member

acao commented Jul 24, 2023

@esquevin thanks for everything! nothing additional needed, there is just a lot in flight, and bugs take precedence, and I'm busy with interviews, so I'm hoping to release it either today or sometime in the next few days

@netlify
Copy link

netlify bot commented Jul 24, 2023

Deploy Preview for graphiql-test ready!

Name Link
🔨 Latest commit b62ed38
🔍 Latest deploy log https://app.netlify.com/sites/graphiql-test/deploys/64be8699964c0d000876ceb8
😎 Deploy Preview https://deploy-preview-3298--graphiql-test.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@acao acao merged commit 4cbdf18 into graphql:main Jul 24, 2023
@acao acao mentioned this pull request Jul 24, 2023
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.

2 participants