Skip to content

Commit

Permalink
✨ Decided scalars should be stringified
Browse files Browse the repository at this point in the history
scalars should be stringified if no decoder used
  • Loading branch information
aexol committed Jun 23, 2022
1 parent 2ded367 commit 59d55d8
Show file tree
Hide file tree
Showing 9 changed files with 314 additions and 313 deletions.
4 changes: 2 additions & 2 deletions examples/typescript-node/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
useZeusVariables,
ZeusScalars,
} from './zeus';
import { ApolloClient, InMemoryCache, useQuery } from '@apollo/client';
import { ApolloClient, InMemoryCache } from '@apollo/client';
import { typedGql } from './zeus/typedDocumentNode';

export const testMutate = () => {
Expand Down Expand Up @@ -50,7 +50,7 @@ const decoders = ZeusScalars({

export type IRT = InputType<GraphQLTypes['Query'], typeof sel, typeof decoders>;

const printQueryResult = (name: string, result: any) =>
const printQueryResult = (name: string, result: unknown) =>
console.log(`${chalk.greenBright(name)} result:\n${chalk.cyan(JSON.stringify(result, null, 4))}\n\n`);
const printGQLString = (name: string, result: string) =>
console.log(`${chalk.blue(name)} query:\n${chalk.magenta(result)}\n\n`);
Expand Down
36 changes: 18 additions & 18 deletions examples/typescript-node/src/zeus/apollo.ts
Original file line number Diff line number Diff line change
@@ -1,58 +1,58 @@
/* eslint-disable */

import { Zeus, GraphQLTypes, InputType, ValueTypes, OperationOptions, ScalarDefinition } from './index';
import { gql, useMutation, useSubscription, useQuery, useLazyQuery } from '@apollo/client';
import type { MutationHookOptions, SubscriptionHookOptions, QueryHookOptions, LazyQueryHookOptions } from '@apollo/client';
import { gql, useQuery, useLazyQuery, useMutation, useSubscription } from '@apollo/client';
import type { QueryHookOptions, LazyQueryHookOptions, MutationHookOptions, SubscriptionHookOptions } from '@apollo/client';


export function useTypedMutation<Z extends ValueTypes[O], O extends "Mutation", SCLR extends ScalarDefinition>(
mutation: Z | ValueTypes[O],
export function useTypedQuery<Z extends ValueTypes[O], O extends "Query", SCLR extends ScalarDefinition>(
query: Z | ValueTypes[O],
options?:{
apolloOptions?: MutationHookOptions<InputType<GraphQLTypes[O], Z, SCLR>>,
apolloOptions?: QueryHookOptions<InputType<GraphQLTypes[O], Z, SCLR>>,
operationOptions?: OperationOptions,
scalars?: SCLR
}
) {
return useMutation<InputType<GraphQLTypes[O], Z, SCLR>>(gql(Zeus("mutation",mutation, {
return useQuery<InputType<GraphQLTypes[O], Z, SCLR>>(gql(Zeus("query",query, {
operationOptions: options?.operationOptions,
scalars: options?.scalars
})), options?.apolloOptions);
}
export function useTypedSubscription<Z extends ValueTypes[O], O extends "Subscription", SCLR extends ScalarDefinition>(
subscription: Z | ValueTypes[O],
export function useTypedLazyQuery<Z extends ValueTypes[O], O extends "Query", SCLR extends ScalarDefinition>(
LazyQuery: Z | ValueTypes[O],
options?:{
apolloOptions?: SubscriptionHookOptions<InputType<GraphQLTypes[O], Z, SCLR>>,
apolloOptions?: LazyQueryHookOptions<InputType<GraphQLTypes[O], Z, SCLR>>,
operationOptions?: OperationOptions,
scalars?: SCLR
}
) {
return useSubscription<InputType<GraphQLTypes[O], Z, SCLR>>(gql(Zeus("subscription",subscription, {
return useLazyQuery<InputType<GraphQLTypes[O], Z, SCLR>>(gql(Zeus("query",LazyQuery, {
operationOptions: options?.operationOptions,
scalars: options?.scalars
})), options?.apolloOptions);
}
export function useTypedQuery<Z extends ValueTypes[O], O extends "Query", SCLR extends ScalarDefinition>(
query: Z | ValueTypes[O],
export function useTypedMutation<Z extends ValueTypes[O], O extends "Mutation", SCLR extends ScalarDefinition>(
mutation: Z | ValueTypes[O],
options?:{
apolloOptions?: QueryHookOptions<InputType<GraphQLTypes[O], Z, SCLR>>,
apolloOptions?: MutationHookOptions<InputType<GraphQLTypes[O], Z, SCLR>>,
operationOptions?: OperationOptions,
scalars?: SCLR
}
) {
return useQuery<InputType<GraphQLTypes[O], Z, SCLR>>(gql(Zeus("query",query, {
return useMutation<InputType<GraphQLTypes[O], Z, SCLR>>(gql(Zeus("mutation",mutation, {
operationOptions: options?.operationOptions,
scalars: options?.scalars
})), options?.apolloOptions);
}
export function useTypedLazyQuery<Z extends ValueTypes[O], O extends "Query", SCLR extends ScalarDefinition>(
LazyQuery: Z | ValueTypes[O],
export function useTypedSubscription<Z extends ValueTypes[O], O extends "Subscription", SCLR extends ScalarDefinition>(
subscription: Z | ValueTypes[O],
options?:{
apolloOptions?: LazyQueryHookOptions<InputType<GraphQLTypes[O], Z, SCLR>>,
apolloOptions?: SubscriptionHookOptions<InputType<GraphQLTypes[O], Z, SCLR>>,
operationOptions?: OperationOptions,
scalars?: SCLR
}
) {
return useLazyQuery<InputType<GraphQLTypes[O], Z, SCLR>>(gql(Zeus("query",LazyQuery, {
return useSubscription<InputType<GraphQLTypes[O], Z, SCLR>>(gql(Zeus("subscription",subscription, {
operationOptions: options?.operationOptions,
scalars: options?.scalars
})), options?.apolloOptions);
Expand Down
92 changes: 46 additions & 46 deletions examples/typescript-node/src/zeus/const.ts
Original file line number Diff line number Diff line change
@@ -1,33 +1,57 @@
/* eslint-disable */

export const AllTypesProps: Record<string,any> = {
Card:{
attack:{
SpecialSkills: "enum" as const,
Query:{
cardById:{

}
},
JSON: `scalar.JSON` as const,
Mutation:{
addCard:{
card:"createCard"
}
},
Query:{
cardById:{

}
},
SpecialSkills: "enum" as const,
JSON: `scalar.JSON` as const,
createCard:{
skills:"SpecialSkills"
},
Card:{
attack:{

}
}
}

export const ReturnTypes: Record<string,any> = {
SpecialCard:{
effect:"String",
Nameable:{
"...on EffectCard": "EffectCard",
"...on Card": "Card",
"...on SpecialCard": "SpecialCard",
"...on CardStack": "CardStack",
name:"String"
},
EffectCard:{
effectSize:"Float",
name:"String"
},
Query:{
cardById:"Card",
drawCard:"Card",
drawChangeCard:"ChangeCard",
listCards:"Card",
myStacks:"CardStack",
nameables:"Nameable"
},
Mutation:{
addCard:"Card"
},
JSON: `scalar.JSON` as const,
S3Object:{
bucket:"String",
key:"String",
region:"String"
},
Card:{
Attack:"Int",
Children:"Int",
Expand All @@ -41,49 +65,25 @@ export const ReturnTypes: Record<string,any> = {
name:"String",
skills:"SpecialSkills"
},
JSON: `scalar.JSON` as const,
CardStack:{
cards:"Card",
name:"String"
},
Mutation:{
addCard:"Card"
},
Nameable:{
"...on SpecialCard": "SpecialCard",
"...on Card": "Card",
"...on CardStack": "CardStack",
"...on EffectCard": "EffectCard",
name:"String"
},
S3Object:{
bucket:"String",
key:"String",
region:"String"
},
ChangeCard:{
"...on SpecialCard":"SpecialCard",
"...on EffectCard":"EffectCard"
},
Subscription:{
deck:"Card"
},
Query:{
cardById:"Card",
drawCard:"Card",
drawChangeCard:"ChangeCard",
listCards:"Card",
myStacks:"CardStack",
nameables:"Nameable"
SpecialCard:{
effect:"String",
name:"String"
},
EffectCard:{
effectSize:"Float",
CardStack:{
cards:"Card",
name:"String"
},
Subscription:{
deck:"Card"
}
}

export const Ops = {
mutation: "Mutation" as const,
subscription: "Subscription" as const,
query: "Query" as const
query: "Query" as const,
mutation: "Mutation" as const,
subscription: "Subscription" as const
}
Loading

0 comments on commit 59d55d8

Please sign in to comment.