diff --git a/example/bsconfig.json b/example/bsconfig.json index d43cd167..cc37edde 100644 --- a/example/bsconfig.json +++ b/example/bsconfig.json @@ -18,7 +18,7 @@ "ppx-flags": ["reason-relay/ppx"], "namespace": true, "bs-dependencies": [ - "reason-react", + "@rescript/react", "reason-relay", "bs-fetch", "reason-promise" diff --git a/example/package.json b/example/package.json index 99c7a33a..a691f90f 100644 --- a/example/package.json +++ b/example/package.json @@ -22,8 +22,8 @@ "react-dom": "0.0.0-experimental-4e08fb10c", "react-relay": "0.0.0-experimental-4c4107dd", "reason-promise": "^1.1.1", - "reason-react": "^0.9.1", - "reason-relay": "0.14.0", + "@rescript/react": "0.10.1", + "reason-relay": "0.15.0", "relay-compiler": "10.1.3", "relay-config": "10.1.3", "relay-runtime": "10.1.3", diff --git a/example/src/SingleTodo.res b/example/src/SingleTodo.res index adf48d80..33aecefb 100644 --- a/example/src/SingleTodo.res +++ b/example/src/SingleTodo.res @@ -1,15 +1,12 @@ -module TodoFragment = %relay( - ` +module TodoFragment = %relay(` fragment SingleTodo_todoItem on TodoItem { id text completed } -` -) +`) -module DeleteMutation = %relay( - ` +module DeleteMutation = %relay(` mutation SingleTodoDeleteMutation( $input: DeleteTodoItemInput! $connections: [ID!]! @@ -18,11 +15,9 @@ module DeleteMutation = %relay( deletedTodoItemId @deleteEdge(connections: $connections) } } -` -) +`) -module UpdateMutation = %relay( - ` +module UpdateMutation = %relay(` mutation SingleTodoUpdateMutation($input: UpdateTodoItemInput!) { updateTodoItem(input: $input) { updatedTodoItem { @@ -32,8 +27,7 @@ module UpdateMutation = %relay( } } } -` -) +`) @react.component let make = (~checked, ~todoItem as todoItemRef, ~todosConnectionId) => { @@ -88,7 +82,7 @@ let make = (~checked, ~todoItem as todoItemRef, ~todosConnectionId) => { clientMutationId: None, id: todoItem.id, }, - connections: [todosConnectionId->ReasonRelay.dataIdToString], + connections: [todosConnectionId], }, ~optimisticResponse={ deleteTodoItem: Some({deletedTodoItemId: Some(todoItem.id)}), diff --git a/example/src/__generated__/Avatar_user_graphql.re b/example/src/__generated__/Avatar_user_graphql.re deleted file mode 100644 index fa0c0fcb..00000000 --- a/example/src/__generated__/Avatar_user_graphql.re +++ /dev/null @@ -1,69 +0,0 @@ - -/* @generated */ - -%bs.raw -"/* @generated */"; - -module Types = { - [@ocaml.warning "-30"]; - - type fragment = { - avatarUrl: option(string), - fullName: string, - }; -}; - -module Internal = { - type fragmentRaw; - let fragmentConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"avatarUrl":{"n":""}}} |json} - ]; - let fragmentConverterMap = (); - let convertFragment = v => - v->ReasonRelay.convertObj( - fragmentConverter, - fragmentConverterMap, - Js.undefined, - ); -}; - -type t; -type fragmentRef; -external getFragmentRef: - ReasonRelay.fragmentRefs([> | `Avatar_user]) => fragmentRef = - "%identity"; - -module Utils = {}; - -type relayOperationNode; - -type operationType = ReasonRelay.fragmentNode(relayOperationNode); - - - -let node: operationType = [%raw {json| { - "argumentDefinitions": [], - "kind": "Fragment", - "metadata": null, - "name": "Avatar_user", - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "avatarUrl", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "fullName", - "storageKey": null - } - ], - "type": "User", - "abstractKey": null -} |json}]; - - diff --git a/example/src/__generated__/Avatar_user_graphql.res b/example/src/__generated__/Avatar_user_graphql.res new file mode 100644 index 00000000..fbd44c06 --- /dev/null +++ b/example/src/__generated__/Avatar_user_graphql.res @@ -0,0 +1,65 @@ +/* @generated */ +%%raw("/* @generated */") +module Types = { + @@ocaml.warning("-30") + + type fragment = { + avatarUrl: option, + fullName: string, + } +} + +module Internal = { + type fragmentRaw + let fragmentConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"avatarUrl":{"n":""}}}` + ) + + let fragmentConverterMap = () + let convertFragment = v => v->ReasonRelay.convertObj( + fragmentConverter, + fragmentConverterMap, + Js.undefined + ) +} +type t +type fragmentRef +external getFragmentRef: + ReasonRelay.fragmentRefs<[> | #Avatar_user]> => fragmentRef = "%identity" + + +module Utils = { + +} +type relayOperationNode +type operationType = ReasonRelay.fragmentNode + + +let node: operationType = %raw(json` { + "argumentDefinitions": [], + "kind": "Fragment", + "metadata": null, + "name": "Avatar_user", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "avatarUrl", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "fullName", + "storageKey": null + } + ], + "type": "User", + "abstractKey": null +} `) + + diff --git a/example/src/__generated__/MainQuery_graphql.re b/example/src/__generated__/MainQuery_graphql.res similarity index 85% rename from example/src/__generated__/MainQuery_graphql.re rename to example/src/__generated__/MainQuery_graphql.res index 221aa852..33ab6c20 100644 --- a/example/src/__generated__/MainQuery_graphql.re +++ b/example/src/__generated__/MainQuery_graphql.res @@ -1,79 +1,74 @@ - /* @generated */ - -%bs.raw -"/* @generated */"; - +%%raw("/* @generated */") module Types = { - [@ocaml.warning "-30"]; - type response_siteStatistics = { - fragmentRefs: - ReasonRelay.fragmentRefs([ | `TopCardsDisplayer_siteStatistics]), - }; - + @@ocaml.warning("-30") + + type rec response_siteStatistics = { + fragmentRefs: ReasonRelay.fragmentRefs<[ | #TopCardsDisplayer_siteStatistics]> + } type response = { siteStatistics: response_siteStatistics, - fragmentRefs: - ReasonRelay.fragmentRefs([ | `RecentTickets_query | `TodoList_query]), - }; - type rawResponse = response; - type variables = unit; -}; + fragmentRefs: ReasonRelay.fragmentRefs<[ | #RecentTickets_query | #TodoList_query]> + } + type rawResponse = response + type variables = unit +} module Internal = { - type wrapResponseRaw; - let wrapResponseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"":{"f":""},"siteStatistics":{"f":""}}} |json} - ]; - let wrapResponseConverterMap = (); - let convertWrapResponse = v => - v->ReasonRelay.convertObj( - wrapResponseConverter, - wrapResponseConverterMap, - Js.null, - ); - - type responseRaw; - let responseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"":{"f":""},"siteStatistics":{"f":""}}} |json} - ]; - let responseConverterMap = (); - let convertResponse = v => - v->ReasonRelay.convertObj( - responseConverter, - responseConverterMap, - Js.undefined, - ); - - type wrapRawResponseRaw = wrapResponseRaw; - let convertWrapRawResponse = convertWrapResponse; - - type rawResponseRaw = responseRaw; - let convertRawResponse = convertResponse; - - let variablesConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {} |json} - ]; - let variablesConverterMap = (); - let convertVariables = v => - v->ReasonRelay.convertObj( - variablesConverter, - variablesConverterMap, - Js.undefined, - ); -}; - -type queryRef; - -module Utils = {}; + type wrapResponseRaw + let wrapResponseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"":{"f":""},"siteStatistics":{"f":""}}}` + ) + + let wrapResponseConverterMap = () + let convertWrapResponse = v => v->ReasonRelay.convertObj( + wrapResponseConverter, + wrapResponseConverterMap, + Js.null + ) + type responseRaw + let responseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"":{"f":""},"siteStatistics":{"f":""}}}` + ) + + let responseConverterMap = () + let convertResponse = v => v->ReasonRelay.convertObj( + responseConverter, + responseConverterMap, + Js.undefined + ) + type wrapRawResponseRaw = wrapResponseRaw + let convertWrapRawResponse = convertWrapResponse + type rawResponseRaw = responseRaw + let convertRawResponse = convertResponse + let variablesConverter: + Js.Dict.t>> = + %raw( + json`{}` + ) + + let variablesConverterMap = () + let convertVariables = v => v->ReasonRelay.convertObj( + variablesConverter, + variablesConverterMap, + Js.undefined + ) +} -type relayOperationNode; +type queryRef -type operationType = ReasonRelay.queryNode(relayOperationNode); +module Utils = { +} +type relayOperationNode +type operationType = ReasonRelay.queryNode -let node: operationType = [%raw {json| (function(){ +let node: operationType = %raw(json` (function(){ var v0 = { "alias": null, "args": null, @@ -437,13 +432,13 @@ return { "text": "query MainQuery {\n siteStatistics {\n ...TopCardsDisplayer_siteStatistics\n id\n }\n ...RecentTickets_query\n ...TodoList_query\n}\n\nfragment Avatar_user on User {\n avatarUrl\n fullName\n}\n\nfragment RecentTickets_query on Query {\n ticketsConnection(first: 2, after: \"\") {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n node {\n id\n ...SingleTicket_ticket\n __typename\n }\n cursor\n }\n }\n}\n\nfragment SingleTicketWorkingGroup_workingGroup on WorkingGroup {\n name\n id\n}\n\nfragment SingleTicket_ticket on Ticket {\n assignee {\n __typename\n ... on User {\n ...Avatar_user\n }\n ... on WorkingGroup {\n ...SingleTicketWorkingGroup_workingGroup\n }\n ... on Node {\n __isNode: __typename\n id\n }\n }\n id\n subject\n lastUpdated\n trackingId\n ...TicketStatusBadge_ticket\n}\n\nfragment SingleTodo_todoItem on TodoItem {\n id\n text\n completed\n}\n\nfragment TicketStatusBadge_ticket on Ticket {\n status\n dbId\n}\n\nfragment TodoList_query on Query {\n todosConnection(first: 10, after: \"\") {\n edges {\n node {\n id\n ...SingleTodo_todoItem\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n\nfragment TopCardsDisplayer_siteStatistics on SiteStatistics {\n weeklySales\n weeklyOrders\n currentVisitorsOnline\n}\n" } }; -})() |json}]; +})() `) include ReasonRelay.MakeLoadQuery({ - type variables = Types.variables; - type loadedQueryRef = queryRef; - type response = Types.response; - type node = relayOperationNode; - let query = node; - let convertVariables = Internal.convertVariables; + type variables = Types.variables + type loadedQueryRef = queryRef + type response = Types.response + type node = relayOperationNode + let query = node + let convertVariables = Internal.convertVariables }); diff --git a/example/src/__generated__/RecentTicketsRefetchQuery_graphql.re b/example/src/__generated__/RecentTicketsRefetchQuery_graphql.res similarity index 80% rename from example/src/__generated__/RecentTicketsRefetchQuery_graphql.re rename to example/src/__generated__/RecentTicketsRefetchQuery_graphql.res index a810f63d..ec4732a6 100644 --- a/example/src/__generated__/RecentTicketsRefetchQuery_graphql.re +++ b/example/src/__generated__/RecentTicketsRefetchQuery_graphql.res @@ -1,87 +1,93 @@ - /* @generated */ - -%bs.raw -"/* @generated */"; - +%%raw("/* @generated */") module Types = { - [@ocaml.warning "-30"]; - + @@ocaml.warning("-30") + type response = { - fragmentRefs: ReasonRelay.fragmentRefs([ | `RecentTickets_query]), - }; - type rawResponse = response; + fragmentRefs: ReasonRelay.fragmentRefs<[ | #RecentTickets_query]> + } + type rawResponse = response type refetchVariables = { - after: option(string), - first: option(int), - }; - let makeRefetchVariables = (~after=?, ~first=?, ()): refetchVariables => { - after, - first, - }; + after: option, + first: option, + } + let makeRefetchVariables = ( + ~after=?, + ~first=?, + () + ): refetchVariables => { + after: after, + first: first + } + type variables = { after: string, first: int, - }; -}; + } +} module Internal = { - type wrapResponseRaw; - let wrapResponseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"":{"f":""}}} |json} - ]; - let wrapResponseConverterMap = (); - let convertWrapResponse = v => - v->ReasonRelay.convertObj( - wrapResponseConverter, - wrapResponseConverterMap, - Js.null, - ); - - type responseRaw; - let responseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"":{"f":""}}} |json} - ]; - let responseConverterMap = (); - let convertResponse = v => - v->ReasonRelay.convertObj( - responseConverter, - responseConverterMap, - Js.undefined, - ); + type wrapResponseRaw + let wrapResponseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"":{"f":""}}}` + ) + + let wrapResponseConverterMap = () + let convertWrapResponse = v => v->ReasonRelay.convertObj( + wrapResponseConverter, + wrapResponseConverterMap, + Js.null + ) + type responseRaw + let responseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"":{"f":""}}}` + ) + + let responseConverterMap = () + let convertResponse = v => v->ReasonRelay.convertObj( + responseConverter, + responseConverterMap, + Js.undefined + ) + type wrapRawResponseRaw = wrapResponseRaw + let convertWrapRawResponse = convertWrapResponse + type rawResponseRaw = responseRaw + let convertRawResponse = convertResponse + let variablesConverter: + Js.Dict.t>> = + %raw( + json`{}` + ) + + let variablesConverterMap = () + let convertVariables = v => v->ReasonRelay.convertObj( + variablesConverter, + variablesConverterMap, + Js.undefined + ) +} - type wrapRawResponseRaw = wrapResponseRaw; - let convertWrapRawResponse = convertWrapResponse; - - type rawResponseRaw = responseRaw; - let convertRawResponse = convertResponse; - - let variablesConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {} |json} - ]; - let variablesConverterMap = (); - let convertVariables = v => - v->ReasonRelay.convertObj( - variablesConverter, - variablesConverterMap, - Js.undefined, - ); -}; - -type queryRef; +type queryRef module Utils = { - open Types; - let makeVariables = (~after, ~first): variables => {after, first}; -}; - -type relayOperationNode; - -type operationType = ReasonRelay.queryNode(relayOperationNode); - + open Types + let makeVariables = ( + ~after, + ~first + ): variables => { + after: after, + first: first + } +} +type relayOperationNode +type operationType = ReasonRelay.queryNode -let node: operationType = [%raw {json| (function(){ +let node: operationType = %raw(json` (function(){ var v0 = [ { "defaultValue": "", @@ -320,13 +326,13 @@ return { "text": "query RecentTicketsRefetchQuery(\n $after: String! = \"\"\n $first: Int! = 2\n) {\n ...RecentTickets_query_2HEEH6\n}\n\nfragment Avatar_user on User {\n avatarUrl\n fullName\n}\n\nfragment RecentTickets_query_2HEEH6 on Query {\n ticketsConnection(first: $first, after: $after) {\n pageInfo {\n endCursor\n hasNextPage\n }\n edges {\n node {\n id\n ...SingleTicket_ticket\n __typename\n }\n cursor\n }\n }\n}\n\nfragment SingleTicketWorkingGroup_workingGroup on WorkingGroup {\n name\n id\n}\n\nfragment SingleTicket_ticket on Ticket {\n assignee {\n __typename\n ... on User {\n ...Avatar_user\n }\n ... on WorkingGroup {\n ...SingleTicketWorkingGroup_workingGroup\n }\n ... on Node {\n __isNode: __typename\n id\n }\n }\n id\n subject\n lastUpdated\n trackingId\n ...TicketStatusBadge_ticket\n}\n\nfragment TicketStatusBadge_ticket on Ticket {\n status\n dbId\n}\n" } }; -})() |json}]; +})() `) include ReasonRelay.MakeLoadQuery({ - type variables = Types.variables; - type loadedQueryRef = queryRef; - type response = Types.response; - type node = relayOperationNode; - let query = node; - let convertVariables = Internal.convertVariables; + type variables = Types.variables + type loadedQueryRef = queryRef + type response = Types.response + type node = relayOperationNode + let query = node + let convertVariables = Internal.convertVariables }); diff --git a/example/src/__generated__/RecentTickets_query_graphql.re b/example/src/__generated__/RecentTickets_query_graphql.res similarity index 67% rename from example/src/__generated__/RecentTickets_query_graphql.re rename to example/src/__generated__/RecentTickets_query_graphql.res index 5b552ea5..2fb8d374 100644 --- a/example/src/__generated__/RecentTickets_query_graphql.re +++ b/example/src/__generated__/RecentTickets_query_graphql.res @@ -1,78 +1,69 @@ - /* @generated */ - -%bs.raw -"/* @generated */"; - +%%raw("/* @generated */") module Types = { - [@ocaml.warning "-30"]; - type fragment_ticketsConnection = { + @@ocaml.warning("-30") + + type rec fragment_ticketsConnection = { pageInfo: fragment_ticketsConnection_pageInfo, - edges: option(array(option(fragment_ticketsConnection_edges))), + edges: option>>, } - and fragment_ticketsConnection_pageInfo = { - endCursor: option(string), + and fragment_ticketsConnection_pageInfo = { + endCursor: option, hasNextPage: bool, } - and fragment_ticketsConnection_edges = { - node: option(fragment_ticketsConnection_edges_node), + and fragment_ticketsConnection_edges = { + node: option, } - and fragment_ticketsConnection_edges_node = { + and fragment_ticketsConnection_edges_node = { id: string, - fragmentRefs: ReasonRelay.fragmentRefs([ | `SingleTicket_ticket]), - }; - - type fragment = {ticketsConnection: fragment_ticketsConnection}; -}; + fragmentRefs: ReasonRelay.fragmentRefs<[ | #SingleTicket_ticket]> + } + + + type fragment = { + ticketsConnection: fragment_ticketsConnection, + } +} module Internal = { - type fragmentRaw; - let fragmentConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"ticketsConnection_edges":{"n":"","na":""},"ticketsConnection_pageInfo_endCursor":{"n":""},"ticketsConnection_edges_node":{"f":"","n":""}}} |json} - ]; - let fragmentConverterMap = (); - let convertFragment = v => - v->ReasonRelay.convertObj( - fragmentConverter, - fragmentConverterMap, - Js.undefined, - ); -}; - -type t; -type fragmentRef; + type fragmentRaw + let fragmentConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"ticketsConnection_edges":{"n":"","na":""},"ticketsConnection_pageInfo_endCursor":{"n":""},"ticketsConnection_edges_node":{"f":"","n":""}}}` + ) + + let fragmentConverterMap = () + let convertFragment = v => v->ReasonRelay.convertObj( + fragmentConverter, + fragmentConverterMap, + Js.undefined + ) +} +type t +type fragmentRef external getFragmentRef: - ReasonRelay.fragmentRefs([> | `RecentTickets_query]) => fragmentRef = - "%identity"; + ReasonRelay.fragmentRefs<[> | #RecentTickets_query]> => fragmentRef = "%identity" + module Utils = { - open Types; + open Types let getConnectionNodes: - fragment_ticketsConnection => array(fragment_ticketsConnection_edges_node) = - connection => - switch (connection.edges) { - | None => [||] - | Some(edges) => - edges->Belt.Array.keepMap(edge => - switch (edge) { - | None => None - | Some(edge) => - switch (edge.node) { - | None => None - | Some(node) => Some(node) - } - } - ) - }; -}; - -type relayOperationNode; - -type operationType = ReasonRelay.fragmentNode(relayOperationNode); - + fragment_ticketsConnection => array = + connection => switch connection.edges { + | None => [] + | Some(edges) => edges->Belt.Array.keepMap(edge => switch edge { + | None => None + | Some(edge) => edge.node + + }) + } +} +type relayOperationNode +type operationType = ReasonRelay.fragmentNode -let node: operationType = [%raw {json| (function(){ +let node: operationType = %raw(json` (function(){ var v0 = [ "ticketsConnection" ]; @@ -202,6 +193,6 @@ return { "type": "Query", "abstractKey": null }; -})() |json}]; +})() `) diff --git a/example/src/__generated__/SingleTicketWorkingGroupRefetchQuery_graphql.re b/example/src/__generated__/SingleTicketWorkingGroupRefetchQuery_graphql.res similarity index 71% rename from example/src/__generated__/SingleTicketWorkingGroupRefetchQuery_graphql.re rename to example/src/__generated__/SingleTicketWorkingGroupRefetchQuery_graphql.res index b3e874b9..617a2175 100644 --- a/example/src/__generated__/SingleTicketWorkingGroupRefetchQuery_graphql.re +++ b/example/src/__generated__/SingleTicketWorkingGroupRefetchQuery_graphql.res @@ -1,92 +1,96 @@ - /* @generated */ - -%bs.raw -"/* @generated */"; - +%%raw("/* @generated */") module Types = { - [@ocaml.warning "-30"]; - type response_node = { - fragmentRefs: - ReasonRelay.fragmentRefs([ | `SingleTicketWorkingGroup_workingGroup]), - }; - - type response = {node: option(response_node)}; - type rawResponse = response; + @@ocaml.warning("-30") + + type rec response_node = { + fragmentRefs: ReasonRelay.fragmentRefs<[ | #SingleTicketWorkingGroup_workingGroup]> + } + type response = { + node: option, + } + type rawResponse = response type refetchVariables = { - includeMembers: option(bool), - id: option(string), - }; - let makeRefetchVariables = (~includeMembers=?, ~id=?, ()): refetchVariables => { - includeMembers, - id, - }; + includeMembers: option, + id: option, + } + let makeRefetchVariables = ( + ~includeMembers=?, + ~id=?, + () + ): refetchVariables => { + includeMembers: includeMembers, + id: id + } + type variables = { includeMembers: bool, id: string, - }; -}; + } +} module Internal = { - type wrapResponseRaw; - let wrapResponseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"node":{"f":"","n":""}}} |json} - ]; - let wrapResponseConverterMap = (); - let convertWrapResponse = v => - v->ReasonRelay.convertObj( - wrapResponseConverter, - wrapResponseConverterMap, - Js.null, - ); + type wrapResponseRaw + let wrapResponseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"node":{"f":"","n":""}}}` + ) + + let wrapResponseConverterMap = () + let convertWrapResponse = v => v->ReasonRelay.convertObj( + wrapResponseConverter, + wrapResponseConverterMap, + Js.null + ) + type responseRaw + let responseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"node":{"f":"","n":""}}}` + ) + + let responseConverterMap = () + let convertResponse = v => v->ReasonRelay.convertObj( + responseConverter, + responseConverterMap, + Js.undefined + ) + type wrapRawResponseRaw = wrapResponseRaw + let convertWrapRawResponse = convertWrapResponse + type rawResponseRaw = responseRaw + let convertRawResponse = convertResponse + let variablesConverter: + Js.Dict.t>> = + %raw( + json`{}` + ) + + let variablesConverterMap = () + let convertVariables = v => v->ReasonRelay.convertObj( + variablesConverter, + variablesConverterMap, + Js.undefined + ) +} - type responseRaw; - let responseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"node":{"f":"","n":""}}} |json} - ]; - let responseConverterMap = (); - let convertResponse = v => - v->ReasonRelay.convertObj( - responseConverter, - responseConverterMap, - Js.undefined, - ); - - type wrapRawResponseRaw = wrapResponseRaw; - let convertWrapRawResponse = convertWrapResponse; - - type rawResponseRaw = responseRaw; - let convertRawResponse = convertResponse; - - let variablesConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {} |json} - ]; - let variablesConverterMap = (); - let convertVariables = v => - v->ReasonRelay.convertObj( - variablesConverter, - variablesConverterMap, - Js.undefined, - ); -}; - -type queryRef; +type queryRef module Utils = { - open Types; - let makeVariables = (~includeMembers, ~id): variables => { - includeMembers, - id, - }; -}; - -type relayOperationNode; - -type operationType = ReasonRelay.queryNode(relayOperationNode); - + open Types + let makeVariables = ( + ~includeMembers, + ~id + ): variables => { + includeMembers: includeMembers, + id: id + } +} +type relayOperationNode +type operationType = ReasonRelay.queryNode -let node: operationType = [%raw {json| (function(){ +let node: operationType = %raw(json` (function(){ var v0 = { "defaultValue": null, "kind": "LocalArgument", @@ -255,13 +259,13 @@ return { "text": "query SingleTicketWorkingGroupRefetchQuery(\n $includeMembers: Boolean! = false\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ...SingleTicketWorkingGroup_workingGroup_EL0Tc\n id\n }\n}\n\nfragment Avatar_user on User {\n avatarUrl\n fullName\n}\n\nfragment SingleTicketWorkingGroup_workingGroup_EL0Tc on WorkingGroup {\n name\n membersConnection @include(if: $includeMembers) {\n edges {\n node {\n id\n fullName\n ...Avatar_user\n }\n }\n }\n id\n}\n" } }; -})() |json}]; +})() `) include ReasonRelay.MakeLoadQuery({ - type variables = Types.variables; - type loadedQueryRef = queryRef; - type response = Types.response; - type node = relayOperationNode; - let query = node; - let convertVariables = Internal.convertVariables; + type variables = Types.variables + type loadedQueryRef = queryRef + type response = Types.response + type node = relayOperationNode + let query = node + let convertVariables = Internal.convertVariables }); diff --git a/example/src/__generated__/SingleTicketWorkingGroup_workingGroup_graphql.re b/example/src/__generated__/SingleTicketWorkingGroup_workingGroup_graphql.res similarity index 69% rename from example/src/__generated__/SingleTicketWorkingGroup_workingGroup_graphql.re rename to example/src/__generated__/SingleTicketWorkingGroup_workingGroup_graphql.res index f47f1bde..d0c88983 100644 --- a/example/src/__generated__/SingleTicketWorkingGroup_workingGroup_graphql.re +++ b/example/src/__generated__/SingleTicketWorkingGroup_workingGroup_graphql.res @@ -1,60 +1,57 @@ - /* @generated */ - -%bs.raw -"/* @generated */"; - +%%raw("/* @generated */") module Types = { - [@ocaml.warning "-30"]; - type fragment_membersConnection = { - edges: option(array(option(fragment_membersConnection_edges))), + @@ocaml.warning("-30") + + type rec fragment_membersConnection = { + edges: option>>, } - and fragment_membersConnection_edges = { - node: option(fragment_membersConnection_edges_node), + and fragment_membersConnection_edges = { + node: option, } - and fragment_membersConnection_edges_node = { + and fragment_membersConnection_edges_node = { id: string, fullName: string, - fragmentRefs: ReasonRelay.fragmentRefs([ | `Avatar_user]), - }; - + fragmentRefs: ReasonRelay.fragmentRefs<[ | #Avatar_user]> + } + + type fragment = { name: string, - membersConnection: option(fragment_membersConnection), + membersConnection: option, id: string, - }; -}; + } +} module Internal = { - type fragmentRaw; - let fragmentConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"membersConnection_edges":{"n":"","na":""},"membersConnection":{"n":""},"membersConnection_edges_node":{"f":"","n":""}}} |json} - ]; - let fragmentConverterMap = (); - let convertFragment = v => - v->ReasonRelay.convertObj( - fragmentConverter, - fragmentConverterMap, - Js.undefined, - ); -}; - -type t; -type fragmentRef; + type fragmentRaw + let fragmentConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"membersConnection_edges":{"n":"","na":""},"membersConnection":{"n":""},"membersConnection_edges_node":{"f":"","n":""}}}` + ) + + let fragmentConverterMap = () + let convertFragment = v => v->ReasonRelay.convertObj( + fragmentConverter, + fragmentConverterMap, + Js.undefined + ) +} +type t +type fragmentRef external getFragmentRef: - ReasonRelay.fragmentRefs([> | `SingleTicketWorkingGroup_workingGroup]) => - fragmentRef = - "%identity"; - -module Utils = {}; + ReasonRelay.fragmentRefs<[> | #SingleTicketWorkingGroup_workingGroup]> => fragmentRef = "%identity" -type relayOperationNode; -type operationType = ReasonRelay.fragmentNode(relayOperationNode); +module Utils = { +} +type relayOperationNode +type operationType = ReasonRelay.fragmentNode -let node: operationType = [%raw {json| (function(){ +let node: operationType = %raw(json` (function(){ var v0 = { "alias": null, "args": null, @@ -148,6 +145,6 @@ return { "type": "WorkingGroup", "abstractKey": null }; -})() |json}]; +})() `) diff --git a/example/src/__generated__/SingleTicket_ticket_graphql.re b/example/src/__generated__/SingleTicket_ticket_graphql.res similarity index 50% rename from example/src/__generated__/SingleTicket_ticket_graphql.re rename to example/src/__generated__/SingleTicket_ticket_graphql.res index 9de2dc91..caa581aa 100644 --- a/example/src/__generated__/SingleTicket_ticket_graphql.re +++ b/example/src/__generated__/SingleTicket_ticket_graphql.res @@ -1,96 +1,92 @@ - /* @generated */ - -%bs.raw -"/* @generated */"; - +%%raw("/* @generated */") module Types = { - [@ocaml.warning "-30"]; + @@ocaml.warning("-30") + type fragment_assignee_User = { - fragmentRefs: ReasonRelay.fragmentRefs([ | `Avatar_user]), - }; + fragmentRefs: ReasonRelay.fragmentRefs<[ | #Avatar_user]> + } + type fragment_assignee_WorkingGroup = { - fragmentRefs: - ReasonRelay.fragmentRefs([ | `SingleTicketWorkingGroup_workingGroup]), - }; + fragmentRefs: ReasonRelay.fragmentRefs<[ | #SingleTicketWorkingGroup_workingGroup]> + } + + type fragment_assignee = [ - | `User(fragment_assignee_User) - | `WorkingGroup(fragment_assignee_WorkingGroup) - | `UnselectedUnionMember(string) - ]; - + | #User(fragment_assignee_User) + + | #WorkingGroup(fragment_assignee_WorkingGroup) + | #UnselectedUnionMember(string) + ] type fragment = { - assignee: - option( - [ - | `User(fragment_assignee_User) - | `WorkingGroup(fragment_assignee_WorkingGroup) - | `UnselectedUnionMember(string) - ], - ), + assignee: option<[ + | #User(fragment_assignee_User) + + | #WorkingGroup(fragment_assignee_WorkingGroup) + | #UnselectedUnionMember(string) + ]>, id: string, subject: string, - lastUpdated: option(string), + lastUpdated: option, trackingId: string, - fragmentRefs: ReasonRelay.fragmentRefs([ | `TicketStatusBadge_ticket]), - }; -}; - -let unwrap_fragment_assignee: - {. "__typename": string} => - [ - | `User(Types.fragment_assignee_User) - | `WorkingGroup(Types.fragment_assignee_WorkingGroup) - | `UnselectedUnionMember(string) - ] = - u => - switch (u##__typename) { - | "User" => `User(u->Obj.magic) - | "WorkingGroup" => `WorkingGroup(u->Obj.magic) - | v => `UnselectedUnionMember(v) - }; - -let wrap_fragment_assignee: - [ - | `User(Types.fragment_assignee_User) - | `WorkingGroup(Types.fragment_assignee_WorkingGroup) - | `UnselectedUnionMember(string) - ] => - {. "__typename": string} = - fun - | `User(v) => v->Obj.magic - | `WorkingGroup(v) => v->Obj.magic - | `UnselectedUnionMember(v) => {"__typename": v}; + fragmentRefs: ReasonRelay.fragmentRefs<[ | #TicketStatusBadge_ticket]> + } +} + +let unwrap_fragment_assignee: {. "__typename": string } => [ + | #User(Types.fragment_assignee_User) + + | #WorkingGroup(Types.fragment_assignee_WorkingGroup) + | #UnselectedUnionMember(string) +] = u => switch u["__typename"] { + | "User" => #User(u->Obj.magic) + | "WorkingGroup" => #WorkingGroup(u->Obj.magic) + | v => #UnselectedUnionMember(v) +} + +let wrap_fragment_assignee: [ + | #User(Types.fragment_assignee_User) + + | #WorkingGroup(Types.fragment_assignee_WorkingGroup) + | #UnselectedUnionMember(string) +] => {. "__typename": string } = v => switch v { + | #User(v) => v->Obj.magic + | #WorkingGroup(v) => v->Obj.magic + | #UnselectedUnionMember(v) => {"__typename": v} +} module Internal = { - type fragmentRaw; - let fragmentConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"":{"f":""},"assignee_user":{"f":""},"assignee":{"n":"","u":"fragment_assignee"},"assignee_workinggroup":{"f":""},"lastUpdated":{"n":""}}} |json} - ]; - let fragmentConverterMap = {"fragment_assignee": unwrap_fragment_assignee}; - let convertFragment = v => - v->ReasonRelay.convertObj( - fragmentConverter, - fragmentConverterMap, - Js.undefined, - ); -}; - -type t; -type fragmentRef; + type fragmentRaw + let fragmentConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"":{"f":""},"assignee_user":{"f":""},"assignee":{"n":"","u":"fragment_assignee"},"assignee_workinggroup":{"f":""},"lastUpdated":{"n":""}}}` + ) + + let fragmentConverterMap = { + "fragment_assignee": unwrap_fragment_assignee, + } + + let convertFragment = v => v->ReasonRelay.convertObj( + fragmentConverter, + fragmentConverterMap, + Js.undefined + ) +} +type t +type fragmentRef external getFragmentRef: - ReasonRelay.fragmentRefs([> | `SingleTicket_ticket]) => fragmentRef = - "%identity"; - -module Utils = {}; + ReasonRelay.fragmentRefs<[> | #SingleTicket_ticket]> => fragmentRef = "%identity" -type relayOperationNode; -type operationType = ReasonRelay.fragmentNode(relayOperationNode); +module Utils = { +} +type relayOperationNode +type operationType = ReasonRelay.fragmentNode -let node: operationType = [%raw {json| { +let node: operationType = %raw(json` { "argumentDefinitions": [], "kind": "Fragment", "metadata": null, @@ -174,6 +170,6 @@ let node: operationType = [%raw {json| { ], "type": "Ticket", "abstractKey": null -} |json}]; +} `) diff --git a/example/src/__generated__/SingleTodoDeleteMutation_graphql.re b/example/src/__generated__/SingleTodoDeleteMutation_graphql.re deleted file mode 100644 index 7a9a2c40..00000000 --- a/example/src/__generated__/SingleTodoDeleteMutation_graphql.re +++ /dev/null @@ -1,220 +0,0 @@ - -/* @generated */ - -%bs.raw -"/* @generated */"; - -module Types = { - [@ocaml.warning "-30"]; - type response_deleteTodoItem = {deletedTodoItemId: option(string)} - and rawResponse_deleteTodoItem = {deletedTodoItemId: option(string)} - and deleteTodoItemInput = { - id: string, - clientMutationId: option(string), - }; - - type response = {deleteTodoItem: option(response_deleteTodoItem)}; - type rawResponse = {deleteTodoItem: option(rawResponse_deleteTodoItem)}; - type variables = { - input: deleteTodoItemInput, - connections: array(string), - }; -}; - -module Internal = { - type wrapResponseRaw; - let wrapResponseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"deleteTodoItem":{"n":""},"deleteTodoItem_deletedTodoItemId":{"n":""}}} |json} - ]; - let wrapResponseConverterMap = (); - let convertWrapResponse = v => - v->ReasonRelay.convertObj( - wrapResponseConverter, - wrapResponseConverterMap, - Js.null, - ); - - type responseRaw; - let responseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"deleteTodoItem":{"n":""},"deleteTodoItem_deletedTodoItemId":{"n":""}}} |json} - ]; - let responseConverterMap = (); - let convertResponse = v => - v->ReasonRelay.convertObj( - responseConverter, - responseConverterMap, - Js.undefined, - ); - - type wrapRawResponseRaw; - let wrapRawResponseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"deleteTodoItem":{"n":""},"deleteTodoItem_deletedTodoItemId":{"n":""}}} |json} - ]; - let wrapRawResponseConverterMap = (); - let convertWrapRawResponse = v => - v->ReasonRelay.convertObj( - wrapRawResponseConverter, - wrapRawResponseConverterMap, - Js.null, - ); - - type rawResponseRaw; - let rawResponseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"deleteTodoItem":{"n":""},"deleteTodoItem_deletedTodoItemId":{"n":""}}} |json} - ]; - let rawResponseConverterMap = (); - let convertRawResponse = v => - v->ReasonRelay.convertObj( - rawResponseConverter, - rawResponseConverterMap, - Js.undefined, - ); - - let variablesConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"DeleteTodoItemInput":{"clientMutationId":{"n":""}},"__root":{"input":{"r":"DeleteTodoItemInput"}}} |json} - ]; - let variablesConverterMap = (); - let convertVariables = v => - v->ReasonRelay.convertObj( - variablesConverter, - variablesConverterMap, - Js.undefined, - ); -}; - -module Utils = { - open Types; - let make_deleteTodoItemInput = - (~id, ~clientMutationId=?, ()): deleteTodoItemInput => { - id, - clientMutationId, - }; - - let makeVariables = (~input, ~connections): variables => { - input, - connections, - }; - - let make_rawResponse_deleteTodoItem = - (~deletedTodoItemId=?, ()): rawResponse_deleteTodoItem => { - deletedTodoItemId: deletedTodoItemId, - }; - - let make_response_deleteTodoItem = - (~deletedTodoItemId=?, ()): response_deleteTodoItem => { - deletedTodoItemId: deletedTodoItemId, - }; - - let makeOptimisticResponse = (~deleteTodoItem=?, ()): rawResponse => { - deleteTodoItem: deleteTodoItem, - }; -}; - -type relayOperationNode; - -type operationType = ReasonRelay.mutationNode(relayOperationNode); - - - -let node: operationType = [%raw {json| (function(){ -var v0 = { - "defaultValue": null, - "kind": "LocalArgument", - "name": "connections" -}, -v1 = { - "defaultValue": null, - "kind": "LocalArgument", - "name": "input" -}, -v2 = [ - { - "kind": "Variable", - "name": "input", - "variableName": "input" - } -], -v3 = { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "deletedTodoItemId", - "storageKey": null -}; -return { - "fragment": { - "argumentDefinitions": [ - (v0/*: any*/), - (v1/*: any*/) - ], - "kind": "Fragment", - "metadata": null, - "name": "SingleTodoDeleteMutation", - "selections": [ - { - "alias": null, - "args": (v2/*: any*/), - "concreteType": "DeleteTodoItemPayload", - "kind": "LinkedField", - "name": "deleteTodoItem", - "plural": false, - "selections": [ - (v3/*: any*/) - ], - "storageKey": null - } - ], - "type": "Mutation", - "abstractKey": null - }, - "kind": "Request", - "operation": { - "argumentDefinitions": [ - (v1/*: any*/), - (v0/*: any*/) - ], - "kind": "Operation", - "name": "SingleTodoDeleteMutation", - "selections": [ - { - "alias": null, - "args": (v2/*: any*/), - "concreteType": "DeleteTodoItemPayload", - "kind": "LinkedField", - "name": "deleteTodoItem", - "plural": false, - "selections": [ - (v3/*: any*/), - { - "alias": null, - "args": null, - "filters": null, - "handle": "deleteEdge", - "key": "", - "kind": "ScalarHandle", - "name": "deletedTodoItemId", - "handleArgs": [ - { - "kind": "Variable", - "name": "connections", - "variableName": "connections" - } - ] - } - ], - "storageKey": null - } - ] - }, - "params": { - "cacheID": "d28fb164d230e5110a2b960f2fedd98f", - "id": null, - "metadata": {}, - "name": "SingleTodoDeleteMutation", - "operationKind": "mutation", - "text": "mutation SingleTodoDeleteMutation(\n $input: DeleteTodoItemInput!\n) {\n deleteTodoItem(input: $input) {\n deletedTodoItemId\n }\n}\n" - } -}; -})() |json}]; - - diff --git a/example/src/__generated__/SingleTodoDeleteMutation_graphql.res b/example/src/__generated__/SingleTodoDeleteMutation_graphql.res new file mode 100644 index 00000000..eb65800c --- /dev/null +++ b/example/src/__generated__/SingleTodoDeleteMutation_graphql.res @@ -0,0 +1,240 @@ +/* @generated */ +%%raw("/* @generated */") +module Types = { + @@ocaml.warning("-30") + + type rec response_deleteTodoItem = { + deletedTodoItemId: option, + } + and rawResponse_deleteTodoItem = { + deletedTodoItemId: option, + } + and deleteTodoItemInput = { + id: string, + clientMutationId: option, + } + + + type response = { + deleteTodoItem: option, + } + type rawResponse = { + deleteTodoItem: option, + } + type variables = { + input: deleteTodoItemInput, + connections: array, + } +} + +module Internal = { + type wrapResponseRaw + let wrapResponseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"deleteTodoItem":{"n":""},"deleteTodoItem_deletedTodoItemId":{"n":""}}}` + ) + + let wrapResponseConverterMap = () + let convertWrapResponse = v => v->ReasonRelay.convertObj( + wrapResponseConverter, + wrapResponseConverterMap, + Js.null + ) + type responseRaw + let responseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"deleteTodoItem":{"n":""},"deleteTodoItem_deletedTodoItemId":{"n":""}}}` + ) + + let responseConverterMap = () + let convertResponse = v => v->ReasonRelay.convertObj( + responseConverter, + responseConverterMap, + Js.undefined + ) + type wrapRawResponseRaw + let wrapRawResponseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"deleteTodoItem":{"n":""},"deleteTodoItem_deletedTodoItemId":{"n":""}}}` + ) + + let wrapRawResponseConverterMap = () + let convertWrapRawResponse = v => v->ReasonRelay.convertObj( + wrapRawResponseConverter, + wrapRawResponseConverterMap, + Js.null + ) + type rawResponseRaw + let rawResponseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"deleteTodoItem":{"n":""},"deleteTodoItem_deletedTodoItemId":{"n":""}}}` + ) + + let rawResponseConverterMap = () + let convertRawResponse = v => v->ReasonRelay.convertObj( + rawResponseConverter, + rawResponseConverterMap, + Js.undefined + ) + let variablesConverter: + Js.Dict.t>> = + %raw( + json`{"DeleteTodoItemInput":{"clientMutationId":{"n":""}},"__root":{"input":{"r":"DeleteTodoItemInput"}}}` + ) + + let variablesConverterMap = () + let convertVariables = v => v->ReasonRelay.convertObj( + variablesConverter, + variablesConverterMap, + Js.undefined + ) +} + + +module Utils = { + open Types + let make_deleteTodoItemInput = ( + ~id, + ~clientMutationId=?, + () + ): deleteTodoItemInput => { + id: id, + clientMutationId: clientMutationId + } + + let makeVariables = ( + ~input, + ~connections + ): variables => { + input: input, + connections: connections + } + let make_rawResponse_deleteTodoItem = ( + ~deletedTodoItemId=?, + () + ): rawResponse_deleteTodoItem => { + deletedTodoItemId: deletedTodoItemId + } + let make_response_deleteTodoItem = ( + ~deletedTodoItemId=?, + () + ): response_deleteTodoItem => { + deletedTodoItemId: deletedTodoItemId + } + let makeOptimisticResponse = ( + ~deleteTodoItem=?, + () + ): rawResponse => { + deleteTodoItem: deleteTodoItem + } +} +type relayOperationNode +type operationType = ReasonRelay.mutationNode + + +let node: operationType = %raw(json` (function(){ +var v0 = { + "defaultValue": null, + "kind": "LocalArgument", + "name": "connections" +}, +v1 = { + "defaultValue": null, + "kind": "LocalArgument", + "name": "input" +}, +v2 = [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } +], +v3 = { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "deletedTodoItemId", + "storageKey": null +}; +return { + "fragment": { + "argumentDefinitions": [ + (v0/*: any*/), + (v1/*: any*/) + ], + "kind": "Fragment", + "metadata": null, + "name": "SingleTodoDeleteMutation", + "selections": [ + { + "alias": null, + "args": (v2/*: any*/), + "concreteType": "DeleteTodoItemPayload", + "kind": "LinkedField", + "name": "deleteTodoItem", + "plural": false, + "selections": [ + (v3/*: any*/) + ], + "storageKey": null + } + ], + "type": "Mutation", + "abstractKey": null + }, + "kind": "Request", + "operation": { + "argumentDefinitions": [ + (v1/*: any*/), + (v0/*: any*/) + ], + "kind": "Operation", + "name": "SingleTodoDeleteMutation", + "selections": [ + { + "alias": null, + "args": (v2/*: any*/), + "concreteType": "DeleteTodoItemPayload", + "kind": "LinkedField", + "name": "deleteTodoItem", + "plural": false, + "selections": [ + (v3/*: any*/), + { + "alias": null, + "args": null, + "filters": null, + "handle": "deleteEdge", + "key": "", + "kind": "ScalarHandle", + "name": "deletedTodoItemId", + "handleArgs": [ + { + "kind": "Variable", + "name": "connections", + "variableName": "connections" + } + ] + } + ], + "storageKey": null + } + ] + }, + "params": { + "cacheID": "d28fb164d230e5110a2b960f2fedd98f", + "id": null, + "metadata": {}, + "name": "SingleTodoDeleteMutation", + "operationKind": "mutation", + "text": "mutation SingleTodoDeleteMutation(\n $input: DeleteTodoItemInput!\n) {\n deleteTodoItem(input: $input) {\n deletedTodoItemId\n }\n}\n" + } +}; +})() `) + + diff --git a/example/src/__generated__/SingleTodoUpdateMutation_graphql.re b/example/src/__generated__/SingleTodoUpdateMutation_graphql.re deleted file mode 100644 index dad14bfc..00000000 --- a/example/src/__generated__/SingleTodoUpdateMutation_graphql.re +++ /dev/null @@ -1,194 +0,0 @@ - -/* @generated */ - -%bs.raw -"/* @generated */"; - -module Types = { - [@ocaml.warning "-30"]; - type response_updateTodoItem = { - updatedTodoItem: option(response_updateTodoItem_updatedTodoItem), - } - and response_updateTodoItem_updatedTodoItem = { - id: string, - text: string, - completed: option(bool), - } - and updateTodoItemInput = { - id: string, - text: string, - completed: bool, - clientMutationId: option(string), - }; - - type response = {updateTodoItem: option(response_updateTodoItem)}; - type rawResponse = response; - type variables = {input: updateTodoItemInput}; -}; - -module Internal = { - type wrapResponseRaw; - let wrapResponseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"updateTodoItem_updatedTodoItem_completed":{"n":""},"updateTodoItem_updatedTodoItem":{"n":""},"updateTodoItem":{"n":""}}} |json} - ]; - let wrapResponseConverterMap = (); - let convertWrapResponse = v => - v->ReasonRelay.convertObj( - wrapResponseConverter, - wrapResponseConverterMap, - Js.null, - ); - - type responseRaw; - let responseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"updateTodoItem_updatedTodoItem_completed":{"n":""},"updateTodoItem_updatedTodoItem":{"n":""},"updateTodoItem":{"n":""}}} |json} - ]; - let responseConverterMap = (); - let convertResponse = v => - v->ReasonRelay.convertObj( - responseConverter, - responseConverterMap, - Js.undefined, - ); - - type wrapRawResponseRaw = wrapResponseRaw; - let convertWrapRawResponse = convertWrapResponse; - - type rawResponseRaw = responseRaw; - let convertRawResponse = convertResponse; - - let variablesConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"UpdateTodoItemInput":{"clientMutationId":{"n":""}},"__root":{"input":{"r":"UpdateTodoItemInput"}}} |json} - ]; - let variablesConverterMap = (); - let convertVariables = v => - v->ReasonRelay.convertObj( - variablesConverter, - variablesConverterMap, - Js.undefined, - ); -}; - -module Utils = { - open Types; - let make_updateTodoItemInput = - (~id, ~text, ~completed, ~clientMutationId=?, ()): updateTodoItemInput => { - id, - text, - completed, - clientMutationId, - }; - - let makeVariables = (~input): variables => {input: input}; - - let make_response_updateTodoItem_updatedTodoItem = - (~id, ~text, ~completed=?, ()): response_updateTodoItem_updatedTodoItem => { - id, - text, - completed, - }; - - let make_response_updateTodoItem = - (~updatedTodoItem=?, ()): response_updateTodoItem => { - updatedTodoItem: updatedTodoItem, - }; - - let makeOptimisticResponse = (~updateTodoItem=?, ()): rawResponse => { - updateTodoItem: updateTodoItem, - }; -}; - -type relayOperationNode; - -type operationType = ReasonRelay.mutationNode(relayOperationNode); - - - -let node: operationType = [%raw {json| (function(){ -var v0 = [ - { - "defaultValue": null, - "kind": "LocalArgument", - "name": "input" - } -], -v1 = [ - { - "alias": null, - "args": [ - { - "kind": "Variable", - "name": "input", - "variableName": "input" - } - ], - "concreteType": "UpdateTodoItemPayload", - "kind": "LinkedField", - "name": "updateTodoItem", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "concreteType": "TodoItem", - "kind": "LinkedField", - "name": "updatedTodoItem", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "id", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "text", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "completed", - "storageKey": null - } - ], - "storageKey": null - } - ], - "storageKey": null - } -]; -return { - "fragment": { - "argumentDefinitions": (v0/*: any*/), - "kind": "Fragment", - "metadata": null, - "name": "SingleTodoUpdateMutation", - "selections": (v1/*: any*/), - "type": "Mutation", - "abstractKey": null - }, - "kind": "Request", - "operation": { - "argumentDefinitions": (v0/*: any*/), - "kind": "Operation", - "name": "SingleTodoUpdateMutation", - "selections": (v1/*: any*/) - }, - "params": { - "cacheID": "8481abbb88754162a4bd7301d1150105", - "id": null, - "metadata": {}, - "name": "SingleTodoUpdateMutation", - "operationKind": "mutation", - "text": "mutation SingleTodoUpdateMutation(\n $input: UpdateTodoItemInput!\n) {\n updateTodoItem(input: $input) {\n updatedTodoItem {\n id\n text\n completed\n }\n }\n}\n" - } -}; -})() |json}]; - - diff --git a/example/src/__generated__/SingleTodoUpdateMutation_graphql.res b/example/src/__generated__/SingleTodoUpdateMutation_graphql.res new file mode 100644 index 00000000..62519ddd --- /dev/null +++ b/example/src/__generated__/SingleTodoUpdateMutation_graphql.res @@ -0,0 +1,211 @@ +/* @generated */ +%%raw("/* @generated */") +module Types = { + @@ocaml.warning("-30") + + type rec response_updateTodoItem = { + updatedTodoItem: option, + } + and response_updateTodoItem_updatedTodoItem = { + id: string, + text: string, + completed: option, + } + and updateTodoItemInput = { + id: string, + text: string, + completed: bool, + clientMutationId: option, + } + + + type response = { + updateTodoItem: option, + } + type rawResponse = response + type variables = { + input: updateTodoItemInput, + } +} + +module Internal = { + type wrapResponseRaw + let wrapResponseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"updateTodoItem_updatedTodoItem_completed":{"n":""},"updateTodoItem_updatedTodoItem":{"n":""},"updateTodoItem":{"n":""}}}` + ) + + let wrapResponseConverterMap = () + let convertWrapResponse = v => v->ReasonRelay.convertObj( + wrapResponseConverter, + wrapResponseConverterMap, + Js.null + ) + type responseRaw + let responseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"updateTodoItem_updatedTodoItem_completed":{"n":""},"updateTodoItem_updatedTodoItem":{"n":""},"updateTodoItem":{"n":""}}}` + ) + + let responseConverterMap = () + let convertResponse = v => v->ReasonRelay.convertObj( + responseConverter, + responseConverterMap, + Js.undefined + ) + type wrapRawResponseRaw = wrapResponseRaw + let convertWrapRawResponse = convertWrapResponse + type rawResponseRaw = responseRaw + let convertRawResponse = convertResponse + let variablesConverter: + Js.Dict.t>> = + %raw( + json`{"UpdateTodoItemInput":{"clientMutationId":{"n":""}},"__root":{"input":{"r":"UpdateTodoItemInput"}}}` + ) + + let variablesConverterMap = () + let convertVariables = v => v->ReasonRelay.convertObj( + variablesConverter, + variablesConverterMap, + Js.undefined + ) +} + + +module Utils = { + open Types + let make_updateTodoItemInput = ( + ~id, + ~text, + ~completed, + ~clientMutationId=?, + () + ): updateTodoItemInput => { + id: id, + text: text, + completed: completed, + clientMutationId: clientMutationId + } + + let makeVariables = ( + ~input + ): variables => { + input: input + } + let make_response_updateTodoItem_updatedTodoItem = ( + ~id, + ~text, + ~completed=?, + () + ): response_updateTodoItem_updatedTodoItem => { + id: id, + text: text, + completed: completed + } + let make_response_updateTodoItem = ( + ~updatedTodoItem=?, + () + ): response_updateTodoItem => { + updatedTodoItem: updatedTodoItem + } + let makeOptimisticResponse = ( + ~updateTodoItem=?, + () + ): rawResponse => { + updateTodoItem: updateTodoItem + } +} +type relayOperationNode +type operationType = ReasonRelay.mutationNode + + +let node: operationType = %raw(json` (function(){ +var v0 = [ + { + "defaultValue": null, + "kind": "LocalArgument", + "name": "input" + } +], +v1 = [ + { + "alias": null, + "args": [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } + ], + "concreteType": "UpdateTodoItemPayload", + "kind": "LinkedField", + "name": "updateTodoItem", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "concreteType": "TodoItem", + "kind": "LinkedField", + "name": "updatedTodoItem", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "id", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "text", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "completed", + "storageKey": null + } + ], + "storageKey": null + } + ], + "storageKey": null + } +]; +return { + "fragment": { + "argumentDefinitions": (v0/*: any*/), + "kind": "Fragment", + "metadata": null, + "name": "SingleTodoUpdateMutation", + "selections": (v1/*: any*/), + "type": "Mutation", + "abstractKey": null + }, + "kind": "Request", + "operation": { + "argumentDefinitions": (v0/*: any*/), + "kind": "Operation", + "name": "SingleTodoUpdateMutation", + "selections": (v1/*: any*/) + }, + "params": { + "cacheID": "8481abbb88754162a4bd7301d1150105", + "id": null, + "metadata": {}, + "name": "SingleTodoUpdateMutation", + "operationKind": "mutation", + "text": "mutation SingleTodoUpdateMutation(\n $input: UpdateTodoItemInput!\n) {\n updateTodoItem(input: $input) {\n updatedTodoItem {\n id\n text\n completed\n }\n }\n}\n" + } +}; +})() `) + + diff --git a/example/src/__generated__/SingleTodo_todoItem_graphql.re b/example/src/__generated__/SingleTodo_todoItem_graphql.res similarity index 50% rename from example/src/__generated__/SingleTodo_todoItem_graphql.re rename to example/src/__generated__/SingleTodo_todoItem_graphql.res index c1b8c25d..3320b029 100644 --- a/example/src/__generated__/SingleTodo_todoItem_graphql.re +++ b/example/src/__generated__/SingleTodo_todoItem_graphql.res @@ -1,48 +1,44 @@ - /* @generated */ - -%bs.raw -"/* @generated */"; - +%%raw("/* @generated */") module Types = { - [@ocaml.warning "-30"]; - + @@ocaml.warning("-30") + type fragment = { id: string, text: string, - completed: option(bool), - }; -}; + completed: option, + } +} module Internal = { - type fragmentRaw; - let fragmentConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"completed":{"n":""}}} |json} - ]; - let fragmentConverterMap = (); - let convertFragment = v => - v->ReasonRelay.convertObj( - fragmentConverter, - fragmentConverterMap, - Js.undefined, - ); -}; - -type t; -type fragmentRef; + type fragmentRaw + let fragmentConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"completed":{"n":""}}}` + ) + + let fragmentConverterMap = () + let convertFragment = v => v->ReasonRelay.convertObj( + fragmentConverter, + fragmentConverterMap, + Js.undefined + ) +} +type t +type fragmentRef external getFragmentRef: - ReasonRelay.fragmentRefs([> | `SingleTodo_todoItem]) => fragmentRef = - "%identity"; - -module Utils = {}; + ReasonRelay.fragmentRefs<[> | #SingleTodo_todoItem]> => fragmentRef = "%identity" -type relayOperationNode; -type operationType = ReasonRelay.fragmentNode(relayOperationNode); +module Utils = { +} +type relayOperationNode +type operationType = ReasonRelay.fragmentNode -let node: operationType = [%raw {json| { +let node: operationType = %raw(json` { "argumentDefinitions": [], "kind": "Fragment", "metadata": null, @@ -72,6 +68,6 @@ let node: operationType = [%raw {json| { ], "type": "TodoItem", "abstractKey": null -} |json}]; +} `) diff --git a/example/src/__generated__/TicketStatusBadge_ticket_graphql.re b/example/src/__generated__/TicketStatusBadge_ticket_graphql.re deleted file mode 100644 index 14773e4a..00000000 --- a/example/src/__generated__/TicketStatusBadge_ticket_graphql.re +++ /dev/null @@ -1,74 +0,0 @@ - -/* @generated */ - -%bs.raw -"/* @generated */"; - -module Types = { - type enum_TicketStatus = pri [> | `Done | `OnHold | `Progress | `Rejected]; - - [@ocaml.warning "-30"]; - - type fragment = { - status: enum_TicketStatus, - dbId: string, - }; -}; - -module Internal = { - type fragmentRaw; - let fragmentConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {} |json} - ]; - let fragmentConverterMap = (); - let convertFragment = v => - v->ReasonRelay.convertObj( - fragmentConverter, - fragmentConverterMap, - Js.undefined, - ); -}; - -type t; -type fragmentRef; -external getFragmentRef: - ReasonRelay.fragmentRefs([> | `TicketStatusBadge_ticket]) => fragmentRef = - "%identity"; - -module Utils = { - external ticketStatus_toString: Types.enum_TicketStatus => string = - "%identity"; -}; - -type relayOperationNode; - -type operationType = ReasonRelay.fragmentNode(relayOperationNode); - - - -let node: operationType = [%raw {json| { - "argumentDefinitions": [], - "kind": "Fragment", - "metadata": null, - "name": "TicketStatusBadge_ticket", - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "status", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "dbId", - "storageKey": null - } - ], - "type": "Ticket", - "abstractKey": null -} |json}]; - - diff --git a/example/src/__generated__/TicketStatusBadge_ticket_graphql.res b/example/src/__generated__/TicketStatusBadge_ticket_graphql.res new file mode 100644 index 00000000..73473992 --- /dev/null +++ b/example/src/__generated__/TicketStatusBadge_ticket_graphql.res @@ -0,0 +1,74 @@ +/* @generated */ +%%raw("/* @generated */") +module Types = { + @@ocaml.warning("-30") + + type enum_TicketStatus = private [> + | #Done + | #OnHold + | #Progress + | #Rejected + ] + + type fragment = { + status: enum_TicketStatus, + dbId: string, + } +} + +module Internal = { + type fragmentRaw + let fragmentConverter: + Js.Dict.t>> = + %raw( + json`{}` + ) + + let fragmentConverterMap = () + let convertFragment = v => v->ReasonRelay.convertObj( + fragmentConverter, + fragmentConverterMap, + Js.undefined + ) +} +type t +type fragmentRef +external getFragmentRef: + ReasonRelay.fragmentRefs<[> | #TicketStatusBadge_ticket]> => fragmentRef = "%identity" + + +module Utils = { + open Types + external ticketStatus_toString: + enum_TicketStatus => string = "%identity" +} +type relayOperationNode +type operationType = ReasonRelay.fragmentNode + + +let node: operationType = %raw(json` { + "argumentDefinitions": [], + "kind": "Fragment", + "metadata": null, + "name": "TicketStatusBadge_ticket", + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "status", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "dbId", + "storageKey": null + } + ], + "type": "Ticket", + "abstractKey": null +} `) + + diff --git a/example/src/__generated__/TodoListAddTodoMutation_graphql.re b/example/src/__generated__/TodoListAddTodoMutation_graphql.re deleted file mode 100644 index 90a7efdf..00000000 --- a/example/src/__generated__/TodoListAddTodoMutation_graphql.re +++ /dev/null @@ -1,302 +0,0 @@ - -/* @generated */ - -%bs.raw -"/* @generated */"; - -module Types = { - [@ocaml.warning "-30"]; - type response_addTodoItem = { - addedTodoItemEdge: option(response_addTodoItem_addedTodoItemEdge), - } - and response_addTodoItem_addedTodoItemEdge = { - node: option(response_addTodoItem_addedTodoItemEdge_node), - } - and response_addTodoItem_addedTodoItemEdge_node = { - id: string, - text: string, - completed: option(bool), - } - and rawResponse_addTodoItem = { - addedTodoItemEdge: option(rawResponse_addTodoItem_addedTodoItemEdge), - } - and rawResponse_addTodoItem_addedTodoItemEdge = { - node: option(rawResponse_addTodoItem_addedTodoItemEdge_node), - } - and rawResponse_addTodoItem_addedTodoItemEdge_node = { - id: string, - text: string, - completed: option(bool), - } - and addTodoItemInput = { - text: string, - clientMutationId: option(string), - }; - - type response = {addTodoItem: option(response_addTodoItem)}; - type rawResponse = {addTodoItem: option(rawResponse_addTodoItem)}; - type variables = { - input: addTodoItemInput, - connections: array(ReasonRelay.dataId), - }; -}; - -module Internal = { - type wrapResponseRaw; - let wrapResponseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"addTodoItem_addedTodoItemEdge_node_completed":{"n":""},"addTodoItem_addedTodoItemEdge_node":{"n":""},"addTodoItem":{"n":""},"addTodoItem_addedTodoItemEdge":{"n":""}}} |json} - ]; - let wrapResponseConverterMap = (); - let convertWrapResponse = v => - v->ReasonRelay.convertObj( - wrapResponseConverter, - wrapResponseConverterMap, - Js.null, - ); - - type responseRaw; - let responseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"addTodoItem_addedTodoItemEdge_node_completed":{"n":""},"addTodoItem_addedTodoItemEdge_node":{"n":""},"addTodoItem":{"n":""},"addTodoItem_addedTodoItemEdge":{"n":""}}} |json} - ]; - let responseConverterMap = (); - let convertResponse = v => - v->ReasonRelay.convertObj( - responseConverter, - responseConverterMap, - Js.undefined, - ); - - type wrapRawResponseRaw; - let wrapRawResponseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"addTodoItem_addedTodoItemEdge_node_completed":{"n":""},"addTodoItem_addedTodoItemEdge_node":{"n":""},"addTodoItem":{"n":""},"addTodoItem_addedTodoItemEdge":{"n":""}}} |json} - ]; - let wrapRawResponseConverterMap = (); - let convertWrapRawResponse = v => - v->ReasonRelay.convertObj( - wrapRawResponseConverter, - wrapRawResponseConverterMap, - Js.null, - ); - - type rawResponseRaw; - let rawResponseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"addTodoItem_addedTodoItemEdge_node_completed":{"n":""},"addTodoItem_addedTodoItemEdge_node":{"n":""},"addTodoItem":{"n":""},"addTodoItem_addedTodoItemEdge":{"n":""}}} |json} - ]; - let rawResponseConverterMap = (); - let convertRawResponse = v => - v->ReasonRelay.convertObj( - rawResponseConverter, - rawResponseConverterMap, - Js.undefined, - ); - - let variablesConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"input":{"r":"AddTodoItemInput"}},"AddTodoItemInput":{"clientMutationId":{"n":""}}} |json} - ]; - let variablesConverterMap = (); - let convertVariables = v => - v->ReasonRelay.convertObj( - variablesConverter, - variablesConverterMap, - Js.undefined, - ); -}; - -module Utils = { - open Types; - let make_addTodoItemInput = - (~text, ~clientMutationId=?, ()): addTodoItemInput => { - text, - clientMutationId, - }; - - let makeVariables = (~input, ~connections): variables => { - input, - connections, - }; - - let make_rawResponse_addTodoItem_addedTodoItemEdge_node = - (~id, ~text, ~completed=?, ()) - : rawResponse_addTodoItem_addedTodoItemEdge_node => { - id, - text, - completed, - }; - - let make_rawResponse_addTodoItem_addedTodoItemEdge = - (~node=?, ()): rawResponse_addTodoItem_addedTodoItemEdge => { - node: node, - }; - - let make_rawResponse_addTodoItem = - (~addedTodoItemEdge=?, ()): rawResponse_addTodoItem => { - addedTodoItemEdge: addedTodoItemEdge, - }; - - let make_response_addTodoItem_addedTodoItemEdge_node = - (~id, ~text, ~completed=?, ()) - : response_addTodoItem_addedTodoItemEdge_node => { - id, - text, - completed, - }; - - let make_response_addTodoItem_addedTodoItemEdge = - (~node=?, ()): response_addTodoItem_addedTodoItemEdge => { - node: node, - }; - - let make_response_addTodoItem = - (~addedTodoItemEdge=?, ()): response_addTodoItem => { - addedTodoItemEdge: addedTodoItemEdge, - }; - - let makeOptimisticResponse = (~addTodoItem=?, ()): rawResponse => { - addTodoItem: addTodoItem, - }; -}; - -type relayOperationNode; - -type operationType = ReasonRelay.mutationNode(relayOperationNode); - - - -let node: operationType = [%raw {json| (function(){ -var v0 = { - "defaultValue": null, - "kind": "LocalArgument", - "name": "connections" -}, -v1 = { - "defaultValue": null, - "kind": "LocalArgument", - "name": "input" -}, -v2 = [ - { - "kind": "Variable", - "name": "input", - "variableName": "input" - } -], -v3 = { - "alias": null, - "args": null, - "concreteType": "TodoItemEdge", - "kind": "LinkedField", - "name": "addedTodoItemEdge", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "concreteType": "TodoItem", - "kind": "LinkedField", - "name": "node", - "plural": false, - "selections": [ - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "id", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "text", - "storageKey": null - }, - { - "alias": null, - "args": null, - "kind": "ScalarField", - "name": "completed", - "storageKey": null - } - ], - "storageKey": null - } - ], - "storageKey": null -}; -return { - "fragment": { - "argumentDefinitions": [ - (v0/*: any*/), - (v1/*: any*/) - ], - "kind": "Fragment", - "metadata": null, - "name": "TodoListAddTodoMutation", - "selections": [ - { - "alias": null, - "args": (v2/*: any*/), - "concreteType": "AddTodoItemPayload", - "kind": "LinkedField", - "name": "addTodoItem", - "plural": false, - "selections": [ - (v3/*: any*/) - ], - "storageKey": null - } - ], - "type": "Mutation", - "abstractKey": null - }, - "kind": "Request", - "operation": { - "argumentDefinitions": [ - (v1/*: any*/), - (v0/*: any*/) - ], - "kind": "Operation", - "name": "TodoListAddTodoMutation", - "selections": [ - { - "alias": null, - "args": (v2/*: any*/), - "concreteType": "AddTodoItemPayload", - "kind": "LinkedField", - "name": "addTodoItem", - "plural": false, - "selections": [ - (v3/*: any*/), - { - "alias": null, - "args": null, - "filters": null, - "handle": "appendEdge", - "key": "", - "kind": "LinkedHandle", - "name": "addedTodoItemEdge", - "handleArgs": [ - { - "kind": "Variable", - "name": "connections", - "variableName": "connections" - } - ] - } - ], - "storageKey": null - } - ] - }, - "params": { - "cacheID": "24a0ab7c7226072ae69fe6c5dcac2e97", - "id": null, - "metadata": {}, - "name": "TodoListAddTodoMutation", - "operationKind": "mutation", - "text": "mutation TodoListAddTodoMutation(\n $input: AddTodoItemInput!\n) {\n addTodoItem(input: $input) {\n addedTodoItemEdge {\n node {\n id\n text\n completed\n }\n }\n }\n}\n" - } -}; -})() |json}]; - - diff --git a/example/src/__generated__/TodoListAddTodoMutation_graphql.res b/example/src/__generated__/TodoListAddTodoMutation_graphql.res new file mode 100644 index 00000000..7f6abe06 --- /dev/null +++ b/example/src/__generated__/TodoListAddTodoMutation_graphql.res @@ -0,0 +1,324 @@ +/* @generated */ +%%raw("/* @generated */") +module Types = { + @@ocaml.warning("-30") + + type rec response_addTodoItem = { + addedTodoItemEdge: option, + } + and response_addTodoItem_addedTodoItemEdge = { + node: option, + } + and response_addTodoItem_addedTodoItemEdge_node = { + id: string, + text: string, + completed: option, + } + and rawResponse_addTodoItem = { + addedTodoItemEdge: option, + } + and rawResponse_addTodoItem_addedTodoItemEdge = { + node: option, + } + and rawResponse_addTodoItem_addedTodoItemEdge_node = { + id: string, + text: string, + completed: option, + } + and addTodoItemInput = { + text: string, + clientMutationId: option, + } + + + type response = { + addTodoItem: option, + } + type rawResponse = { + addTodoItem: option, + } + type variables = { + input: addTodoItemInput, + connections: array, + } +} + +module Internal = { + type wrapResponseRaw + let wrapResponseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"addTodoItem_addedTodoItemEdge_node_completed":{"n":""},"addTodoItem_addedTodoItemEdge_node":{"n":""},"addTodoItem":{"n":""},"addTodoItem_addedTodoItemEdge":{"n":""}}}` + ) + + let wrapResponseConverterMap = () + let convertWrapResponse = v => v->ReasonRelay.convertObj( + wrapResponseConverter, + wrapResponseConverterMap, + Js.null + ) + type responseRaw + let responseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"addTodoItem_addedTodoItemEdge_node_completed":{"n":""},"addTodoItem_addedTodoItemEdge_node":{"n":""},"addTodoItem":{"n":""},"addTodoItem_addedTodoItemEdge":{"n":""}}}` + ) + + let responseConverterMap = () + let convertResponse = v => v->ReasonRelay.convertObj( + responseConverter, + responseConverterMap, + Js.undefined + ) + type wrapRawResponseRaw + let wrapRawResponseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"addTodoItem_addedTodoItemEdge_node_completed":{"n":""},"addTodoItem_addedTodoItemEdge_node":{"n":""},"addTodoItem":{"n":""},"addTodoItem_addedTodoItemEdge":{"n":""}}}` + ) + + let wrapRawResponseConverterMap = () + let convertWrapRawResponse = v => v->ReasonRelay.convertObj( + wrapRawResponseConverter, + wrapRawResponseConverterMap, + Js.null + ) + type rawResponseRaw + let rawResponseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"addTodoItem_addedTodoItemEdge_node_completed":{"n":""},"addTodoItem_addedTodoItemEdge_node":{"n":""},"addTodoItem":{"n":""},"addTodoItem_addedTodoItemEdge":{"n":""}}}` + ) + + let rawResponseConverterMap = () + let convertRawResponse = v => v->ReasonRelay.convertObj( + rawResponseConverter, + rawResponseConverterMap, + Js.undefined + ) + let variablesConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"input":{"r":"AddTodoItemInput"}},"AddTodoItemInput":{"clientMutationId":{"n":""}}}` + ) + + let variablesConverterMap = () + let convertVariables = v => v->ReasonRelay.convertObj( + variablesConverter, + variablesConverterMap, + Js.undefined + ) +} + + +module Utils = { + open Types + let make_addTodoItemInput = ( + ~text, + ~clientMutationId=?, + () + ): addTodoItemInput => { + text: text, + clientMutationId: clientMutationId + } + + let makeVariables = ( + ~input, + ~connections + ): variables => { + input: input, + connections: connections + } + let make_rawResponse_addTodoItem_addedTodoItemEdge_node = ( + ~id, + ~text, + ~completed=?, + () + ): rawResponse_addTodoItem_addedTodoItemEdge_node => { + id: id, + text: text, + completed: completed + } + let make_rawResponse_addTodoItem_addedTodoItemEdge = ( + ~node=?, + () + ): rawResponse_addTodoItem_addedTodoItemEdge => { + node: node + } + let make_rawResponse_addTodoItem = ( + ~addedTodoItemEdge=?, + () + ): rawResponse_addTodoItem => { + addedTodoItemEdge: addedTodoItemEdge + } + let make_response_addTodoItem_addedTodoItemEdge_node = ( + ~id, + ~text, + ~completed=?, + () + ): response_addTodoItem_addedTodoItemEdge_node => { + id: id, + text: text, + completed: completed + } + let make_response_addTodoItem_addedTodoItemEdge = ( + ~node=?, + () + ): response_addTodoItem_addedTodoItemEdge => { + node: node + } + let make_response_addTodoItem = ( + ~addedTodoItemEdge=?, + () + ): response_addTodoItem => { + addedTodoItemEdge: addedTodoItemEdge + } + let makeOptimisticResponse = ( + ~addTodoItem=?, + () + ): rawResponse => { + addTodoItem: addTodoItem + } +} +type relayOperationNode +type operationType = ReasonRelay.mutationNode + + +let node: operationType = %raw(json` (function(){ +var v0 = { + "defaultValue": null, + "kind": "LocalArgument", + "name": "connections" +}, +v1 = { + "defaultValue": null, + "kind": "LocalArgument", + "name": "input" +}, +v2 = [ + { + "kind": "Variable", + "name": "input", + "variableName": "input" + } +], +v3 = { + "alias": null, + "args": null, + "concreteType": "TodoItemEdge", + "kind": "LinkedField", + "name": "addedTodoItemEdge", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "concreteType": "TodoItem", + "kind": "LinkedField", + "name": "node", + "plural": false, + "selections": [ + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "id", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "text", + "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "completed", + "storageKey": null + } + ], + "storageKey": null + } + ], + "storageKey": null +}; +return { + "fragment": { + "argumentDefinitions": [ + (v0/*: any*/), + (v1/*: any*/) + ], + "kind": "Fragment", + "metadata": null, + "name": "TodoListAddTodoMutation", + "selections": [ + { + "alias": null, + "args": (v2/*: any*/), + "concreteType": "AddTodoItemPayload", + "kind": "LinkedField", + "name": "addTodoItem", + "plural": false, + "selections": [ + (v3/*: any*/) + ], + "storageKey": null + } + ], + "type": "Mutation", + "abstractKey": null + }, + "kind": "Request", + "operation": { + "argumentDefinitions": [ + (v1/*: any*/), + (v0/*: any*/) + ], + "kind": "Operation", + "name": "TodoListAddTodoMutation", + "selections": [ + { + "alias": null, + "args": (v2/*: any*/), + "concreteType": "AddTodoItemPayload", + "kind": "LinkedField", + "name": "addTodoItem", + "plural": false, + "selections": [ + (v3/*: any*/), + { + "alias": null, + "args": null, + "filters": null, + "handle": "appendEdge", + "key": "", + "kind": "LinkedHandle", + "name": "addedTodoItemEdge", + "handleArgs": [ + { + "kind": "Variable", + "name": "connections", + "variableName": "connections" + } + ] + } + ], + "storageKey": null + } + ] + }, + "params": { + "cacheID": "24a0ab7c7226072ae69fe6c5dcac2e97", + "id": null, + "metadata": {}, + "name": "TodoListAddTodoMutation", + "operationKind": "mutation", + "text": "mutation TodoListAddTodoMutation(\n $input: AddTodoItemInput!\n) {\n addTodoItem(input: $input) {\n addedTodoItemEdge {\n node {\n id\n text\n completed\n }\n }\n }\n}\n" + } +}; +})() `) + + diff --git a/example/src/__generated__/TodoList_query_graphql.re b/example/src/__generated__/TodoList_query_graphql.res similarity index 68% rename from example/src/__generated__/TodoList_query_graphql.re rename to example/src/__generated__/TodoList_query_graphql.res index a1b5fd99..0c1be7b5 100644 --- a/example/src/__generated__/TodoList_query_graphql.re +++ b/example/src/__generated__/TodoList_query_graphql.res @@ -1,74 +1,65 @@ - /* @generated */ - -%bs.raw -"/* @generated */"; - +%%raw("/* @generated */") module Types = { - [@ocaml.warning "-30"]; - type fragment_todosConnection = { + @@ocaml.warning("-30") + + type rec fragment_todosConnection = { __id: ReasonRelay.dataId, - edges: option(array(option(fragment_todosConnection_edges))), + edges: option>>, } - and fragment_todosConnection_edges = { - node: option(fragment_todosConnection_edges_node), + and fragment_todosConnection_edges = { + node: option, } - and fragment_todosConnection_edges_node = { + and fragment_todosConnection_edges_node = { id: string, - fragmentRefs: ReasonRelay.fragmentRefs([ | `SingleTodo_todoItem]), - }; - - type fragment = {todosConnection: fragment_todosConnection}; -}; + fragmentRefs: ReasonRelay.fragmentRefs<[ | #SingleTodo_todoItem]> + } + + + type fragment = { + todosConnection: fragment_todosConnection, + } +} module Internal = { - type fragmentRaw; - let fragmentConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"todosConnection_edges_node":{"f":"","n":""},"todosConnection_edges":{"n":"","na":""}}} |json} - ]; - let fragmentConverterMap = (); - let convertFragment = v => - v->ReasonRelay.convertObj( - fragmentConverter, - fragmentConverterMap, - Js.undefined, - ); -}; - -type t; -type fragmentRef; + type fragmentRaw + let fragmentConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"todosConnection_edges_node":{"f":"","n":""},"todosConnection_edges":{"n":"","na":""}}}` + ) + + let fragmentConverterMap = () + let convertFragment = v => v->ReasonRelay.convertObj( + fragmentConverter, + fragmentConverterMap, + Js.undefined + ) +} +type t +type fragmentRef external getFragmentRef: - ReasonRelay.fragmentRefs([> | `TodoList_query]) => fragmentRef = - "%identity"; + ReasonRelay.fragmentRefs<[> | #TodoList_query]> => fragmentRef = "%identity" + module Utils = { - open Types; + open Types let getConnectionNodes: - fragment_todosConnection => array(fragment_todosConnection_edges_node) = - connection => - switch (connection.edges) { - | None => [||] - | Some(edges) => - edges->Belt.Array.keepMap(edge => - switch (edge) { - | None => None - | Some(edge) => - switch (edge.node) { - | None => None - | Some(node) => Some(node) - } - } - ) - }; -}; - -type relayOperationNode; - -type operationType = ReasonRelay.fragmentNode(relayOperationNode); - + fragment_todosConnection => array = + connection => switch connection.edges { + | None => [] + | Some(edges) => edges->Belt.Array.keepMap(edge => switch edge { + | None => None + | Some(edge) => edge.node + + }) + } +} +type relayOperationNode +type operationType = ReasonRelay.fragmentNode -let node: operationType = [%raw {json| { +let node: operationType = %raw(json` { "argumentDefinitions": [ { "defaultValue": "", @@ -195,6 +186,6 @@ let node: operationType = [%raw {json| { ], "type": "Query", "abstractKey": null -} |json}]; +} `) diff --git a/example/src/__generated__/TopCardsDisplayer_currentVisitorsOnline_Subscription_graphql.re b/example/src/__generated__/TopCardsDisplayer_currentVisitorsOnline_Subscription_graphql.res similarity index 60% rename from example/src/__generated__/TopCardsDisplayer_currentVisitorsOnline_Subscription_graphql.re rename to example/src/__generated__/TopCardsDisplayer_currentVisitorsOnline_Subscription_graphql.res index a33c61b6..92cd679e 100644 --- a/example/src/__generated__/TopCardsDisplayer_currentVisitorsOnline_Subscription_graphql.re +++ b/example/src/__generated__/TopCardsDisplayer_currentVisitorsOnline_Subscription_graphql.res @@ -1,57 +1,57 @@ - /* @generated */ - -%bs.raw -"/* @generated */"; - +%%raw("/* @generated */") module Types = { - [@ocaml.warning "-30"]; - type response_siteStatisticsUpdated = {currentVisitorsOnline: int}; - + @@ocaml.warning("-30") + + type rec response_siteStatisticsUpdated = { + currentVisitorsOnline: int, + } type response = { - siteStatisticsUpdated: option(response_siteStatisticsUpdated), - }; - type rawResponse = response; - type variables = unit; -}; + siteStatisticsUpdated: option, + } + type rawResponse = response + type variables = unit +} module Internal = { - type responseRaw; - let responseConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {"__root":{"siteStatisticsUpdated":{"n":""}}} |json} - ]; - let responseConverterMap = (); - let convertResponse = v => - v->ReasonRelay.convertObj( - responseConverter, - responseConverterMap, - Js.undefined, - ); - - type rawResponseRaw = responseRaw; - let convertRawResponse = convertResponse; - - let variablesConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {} |json} - ]; - let variablesConverterMap = (); - let convertVariables = v => - v->ReasonRelay.convertObj( - variablesConverter, - variablesConverterMap, - Js.undefined, - ); -}; - -module Utils = {}; + type responseRaw + let responseConverter: + Js.Dict.t>> = + %raw( + json`{"__root":{"siteStatisticsUpdated":{"n":""}}}` + ) + + let responseConverterMap = () + let convertResponse = v => v->ReasonRelay.convertObj( + responseConverter, + responseConverterMap, + Js.undefined + ) + type rawResponseRaw = responseRaw + let convertRawResponse = convertResponse + let variablesConverter: + Js.Dict.t>> = + %raw( + json`{}` + ) + + let variablesConverterMap = () + let convertVariables = v => v->ReasonRelay.convertObj( + variablesConverter, + variablesConverterMap, + Js.undefined + ) +} -type relayOperationNode; -type operationType = ReasonRelay.subscriptionNode(relayOperationNode); +module Utils = { +} +type relayOperationNode +type operationType = ReasonRelay.subscriptionNode -let node: operationType = [%raw {json| (function(){ +let node: operationType = %raw(json` (function(){ var v0 = { "alias": null, "args": null, @@ -118,6 +118,6 @@ return { "text": "subscription TopCardsDisplayer_currentVisitorsOnline_Subscription {\n siteStatisticsUpdated {\n currentVisitorsOnline\n id\n }\n}\n" } }; -})() |json}]; +})() `) diff --git a/example/src/__generated__/TopCardsDisplayer_siteStatistics_graphql.re b/example/src/__generated__/TopCardsDisplayer_siteStatistics_graphql.res similarity index 54% rename from example/src/__generated__/TopCardsDisplayer_siteStatistics_graphql.re rename to example/src/__generated__/TopCardsDisplayer_siteStatistics_graphql.res index d43ec478..1ff98124 100644 --- a/example/src/__generated__/TopCardsDisplayer_siteStatistics_graphql.re +++ b/example/src/__generated__/TopCardsDisplayer_siteStatistics_graphql.res @@ -1,49 +1,44 @@ - /* @generated */ - -%bs.raw -"/* @generated */"; - +%%raw("/* @generated */") module Types = { - [@ocaml.warning "-30"]; - + @@ocaml.warning("-30") + type fragment = { weeklySales: float, weeklyOrders: int, currentVisitorsOnline: int, - }; -}; + } +} module Internal = { - type fragmentRaw; - let fragmentConverter: Js.Dict.t(Js.Dict.t(Js.Dict.t(string))) = [%raw - {json| {} |json} - ]; - let fragmentConverterMap = (); - let convertFragment = v => - v->ReasonRelay.convertObj( - fragmentConverter, - fragmentConverterMap, - Js.undefined, - ); -}; - -type t; -type fragmentRef; + type fragmentRaw + let fragmentConverter: + Js.Dict.t>> = + %raw( + json`{}` + ) + + let fragmentConverterMap = () + let convertFragment = v => v->ReasonRelay.convertObj( + fragmentConverter, + fragmentConverterMap, + Js.undefined + ) +} +type t +type fragmentRef external getFragmentRef: - ReasonRelay.fragmentRefs([> | `TopCardsDisplayer_siteStatistics]) => - fragmentRef = - "%identity"; - -module Utils = {}; + ReasonRelay.fragmentRefs<[> | #TopCardsDisplayer_siteStatistics]> => fragmentRef = "%identity" -type relayOperationNode; -type operationType = ReasonRelay.fragmentNode(relayOperationNode); +module Utils = { +} +type relayOperationNode +type operationType = ReasonRelay.fragmentNode -let node: operationType = [%raw {json| { +let node: operationType = %raw(json` { "argumentDefinitions": [], "kind": "Fragment", "metadata": null, @@ -73,6 +68,6 @@ let node: operationType = [%raw {json| { ], "type": "SiteStatistics", "abstractKey": null -} |json}]; +} `) diff --git a/example/yarn.lock b/example/yarn.lock index 55e7c0ce..8f500688 100644 --- a/example/yarn.lock +++ b/example/yarn.lock @@ -441,6 +441,11 @@ resolved "https://registry.yarnpkg.com/@mdi/font/-/font-3.7.95.tgz#86f783bdef3d985e14ce1345433477cade15fd6d" integrity sha512-JFQSv1GwhilTN6mj2SHu+YH+jZAIPn6sir/gGYoMSgyEM94nzlLGc7Ew21mnDEr0+W3LhFaInu8dqZFvNUx1bA== +"@rescript/react@0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@rescript/react/-/react-0.10.1.tgz#ddce66ba664a104354d559c350ca4ebf17ab5a26" + integrity sha512-5eIfGnV1yhjv03ktK6fQ6iEfsZKXKXXrq5hx4+ngEY4R/RU8o/oH9ne375m9RJMugV/jsE8hMoEeSSg2YQy3Ag== + "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" @@ -3951,15 +3956,10 @@ reason-promise@^1.1.1: resolved "https://registry.yarnpkg.com/reason-promise/-/reason-promise-1.1.1.tgz#966133fed21e748a50ffb8839a1da04912bcf380" integrity sha512-xMXDiyzTjn7t9pq9aQrkgu8CLB5DILU70oWQ+LI20YecshypUwsw37TKOvCxgoFR3vo30ucF0/iWe2BZ181/jw== -reason-react@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/reason-react/-/reason-react-0.9.1.tgz#30a887158200b659aa03e2d75ff4cc54dc462bb0" - integrity sha512-nlH0O2TDy9KzOLOW+vlEQk4ExHOeciyzFdoLcsmmiit6hx6H5+CVDrwJ+8aiaLT/kqK5xFOjy4PS7PftWz4plA== - -reason-relay@0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/reason-relay/-/reason-relay-0.14.0.tgz#37442b9172787a456a15848663643a19c2afb2d8" - integrity sha512-1reKXzcV0kjZ0F2NPQstC2Rt5Clhaw8AGsSOuemUxarXT+7vIPRhdtIQ9+4ZSW/D5mdmvaJ7EEabqnoMw4CGEg== +reason-relay@0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/reason-relay/-/reason-relay-0.15.0.tgz#5b9566419aa58e89cf49a4c252e8078c2513f9bb" + integrity sha512-mKRQr7uoIJsSk76Nj/Mtlr+WrCW8TanMfsZeZYN7X43gxOPfq/C/Iaii++qgFOnpv7PIsNvUZOAim/VNKFMuRQ== dependencies: mkdirp-sync "^0.0.3"