@aws-amplify/api-graphql 3.4.3 → 3.4.4-graphql-api-functional-options.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/lib/facade-iterable-paging.d.ts +19 -0
  2. package/lib/facade-iterable-paging.js +115 -0
  3. package/lib/facade-iterable-paging.js.map +1 -0
  4. package/lib/facade-light-flattening.d.ts +19 -0
  5. package/lib/facade-light-flattening.js +69 -0
  6. package/lib/facade-light-flattening.js.map +1 -0
  7. package/lib/facade-no-flattening.d.ts +19 -0
  8. package/lib/facade-no-flattening.js +37 -0
  9. package/lib/facade-no-flattening.js.map +1 -0
  10. package/lib/types/facade-iterable-paging.d.ts +106 -0
  11. package/lib/types/facade-iterable-paging.js +3 -0
  12. package/lib/types/facade-iterable-paging.js.map +1 -0
  13. package/lib/types/facade-light-flattening.d.ts +84 -0
  14. package/lib/types/facade-light-flattening.js +3 -0
  15. package/lib/types/facade-light-flattening.js.map +1 -0
  16. package/lib/types/facade-no-flattening.d.ts +48 -0
  17. package/lib/types/facade-no-flattening.js +3 -0
  18. package/lib/types/facade-no-flattening.js.map +1 -0
  19. package/lib/types/v6.d.ts +48 -0
  20. package/lib/types/v6.js +3 -0
  21. package/lib/types/v6.js.map +1 -0
  22. package/lib/v6.d.ts +22 -0
  23. package/lib/v6.js +45 -0
  24. package/lib/v6.js.map +1 -0
  25. package/lib-esm/facade-iterable-paging.d.ts +19 -0
  26. package/lib-esm/facade-iterable-paging.js +109 -0
  27. package/lib-esm/facade-iterable-paging.js.map +1 -0
  28. package/lib-esm/facade-light-flattening.d.ts +19 -0
  29. package/lib-esm/facade-light-flattening.js +63 -0
  30. package/lib-esm/facade-light-flattening.js.map +1 -0
  31. package/lib-esm/facade-no-flattening.d.ts +19 -0
  32. package/lib-esm/facade-no-flattening.js +31 -0
  33. package/lib-esm/facade-no-flattening.js.map +1 -0
  34. package/lib-esm/types/facade-iterable-paging.d.ts +106 -0
  35. package/lib-esm/types/facade-iterable-paging.js +1 -0
  36. package/lib-esm/types/facade-iterable-paging.js.map +1 -0
  37. package/lib-esm/types/facade-light-flattening.d.ts +84 -0
  38. package/lib-esm/types/facade-light-flattening.js +1 -0
  39. package/lib-esm/types/facade-light-flattening.js.map +1 -0
  40. package/lib-esm/types/facade-no-flattening.d.ts +48 -0
  41. package/lib-esm/types/facade-no-flattening.js +1 -0
  42. package/lib-esm/types/facade-no-flattening.js.map +1 -0
  43. package/lib-esm/types/v6.d.ts +48 -0
  44. package/lib-esm/types/v6.js +1 -0
  45. package/lib-esm/types/v6.js.map +1 -0
  46. package/lib-esm/v6.d.ts +22 -0
  47. package/lib-esm/v6.js +42 -0
  48. package/lib-esm/v6.js.map +1 -0
  49. package/package.json +10 -7
  50. package/src/facade-iterable-paging.ts +150 -0
  51. package/src/facade-light-flattening.ts +139 -0
  52. package/src/facade-no-flattening.ts +100 -0
  53. package/src/types/facade-iterable-paging.ts +200 -0
  54. package/src/types/facade-light-flattening.ts +171 -0
  55. package/src/types/facade-no-flattening.ts +110 -0
  56. package/src/types/v6.ts +110 -0
  57. package/src/v6.ts +103 -0
@@ -0,0 +1,200 @@
1
+ // import { Observable } from 'zen-observable-ts';
2
+ // import { GraphQLOptions } from './index';
3
+ import { GraphQLError } from 'graphql';
4
+ import { Auth, API } from 'aws-amplify';
5
+
6
+ // #region shared API types ... probably to be pulled from core or something later.
7
+
8
+ // original
9
+ // export interface GraphQLResult<T = object> {
10
+ // data?: T;
11
+ // errors?: GraphQLError[];
12
+ // extensions?: {
13
+ // [key: string]: any;
14
+ // };
15
+ // }
16
+
17
+ /**
18
+ *
19
+ * ```
20
+ * type T = UnionOfKeysOf<{x: string, y: string}>;
21
+ * ^
22
+ * "x" | "y"
23
+ * ```
24
+ */
25
+ type UnionOfKeysOf<T> = {
26
+ [K in keyof T]: T extends Record<K, any> ? K : never;
27
+ }[keyof T];
28
+
29
+ /**
30
+ * Digs down a layer into an object to extract a union of all the property
31
+ * types.
32
+ *
33
+ * ```
34
+ * type T = Dig<{ x: { a: string, b: number }, y: { c: boolean } }>;
35
+ * ^
36
+ * {
37
+ * a: string;
38
+ * b: number;
39
+ * } | {
40
+ * c: boolean;
41
+ * }
42
+ * ```
43
+ *
44
+ * This is particularly useful for extracting the type when a single property
45
+ * exists on an object and we just want to "skip" it or "dig it out".
46
+ *
47
+ * ```
48
+ * type T = Dig<{x: { a: string, b: number }}>;
49
+ * ^
50
+ * {
51
+ * a: string;
52
+ * b: number;
53
+ * }
54
+ * ```
55
+ *
56
+ */
57
+ type Dig<T> = T[keyof T];
58
+
59
+ type Iterated<T> = T extends Array<infer IT>
60
+ ? AsyncGenerator<Exclude<IT, null>>
61
+ : T;
62
+
63
+ type WithIterablesInsteadOfArrays<T> = T extends { items: infer IT }
64
+ ? Iterated<IT>
65
+ : T;
66
+
67
+ export type GraphQLResult<T = object> = {
68
+ data: WithIterablesInsteadOfArrays<Dig<T>>;
69
+ errors?: GraphQLError[];
70
+ extensions?: {
71
+ [key: string]: any;
72
+ };
73
+ };
74
+
75
+ type UnionKeys<T> = T extends T ? keyof T : never;
76
+ type StrictUnionHelper<T, TAll> = T extends any
77
+ ? T & Partial<Record<Exclude<UnionKeys<TAll>, keyof T>, undefined>>
78
+ : never;
79
+ export type StrictUnion<T> = StrictUnionHelper<T, T>;
80
+ export type SimpleAuthMode = {
81
+ authMode?: 'AMAZON_COGNITO_USERPOOLS' | 'API_KEY' | 'AWS_IAM';
82
+ };
83
+
84
+ export type LambdaAuthMode = {
85
+ authMode: 'AWS_LAMBDA';
86
+ authToken: string;
87
+ };
88
+
89
+ export type AuthMode = StrictUnion<SimpleAuthMode | LambdaAuthMode>;
90
+
91
+ // #endregion
92
+
93
+ export type GeneratedQuery<InputType, OutputType> = string & {
94
+ __generatedQueryInput: InputType;
95
+ __generatedQueryOutput: OutputType;
96
+ };
97
+
98
+ export type GraphqlQueryOverrides<IN extends {}, OUT extends {}> = {
99
+ variables: IN;
100
+ result: OUT;
101
+ };
102
+
103
+ export type GraphqlQueryParams<
104
+ TYPED_GQL_STRING extends string,
105
+ FALLBACK_TYPES
106
+ > = AuthMode & {
107
+ variables: TYPED_GQL_STRING extends GeneratedQuery<infer IN, infer OUT>
108
+ ? IN
109
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
110
+ ? IN
111
+ : any;
112
+ };
113
+
114
+ export type GraphqlQueryResult<T extends string, S> = T extends GeneratedQuery<
115
+ infer IN,
116
+ infer OUT
117
+ >
118
+ ? GraphQLResult<OUT>
119
+ : S extends GraphqlQueryOverrides<infer IN, infer OUT>
120
+ ? GraphQLResult<OUT>
121
+ : any;
122
+
123
+ // e.g.
124
+ export type ListThreadsQuery = {
125
+ listThreads?: {
126
+ __typename: 'ModelThreadConnection';
127
+ items: Array<{
128
+ __typename: 'Thread';
129
+ id: string;
130
+ topic?: string | null;
131
+ comments?: {
132
+ __typename: 'ModelCommentConnection';
133
+ nextToken?: string | null;
134
+ } | null;
135
+ createdAt?: string | null;
136
+ updatedAt: string;
137
+ owner?: string | null;
138
+ } | null>;
139
+ nextToken?: string | null;
140
+ } | null;
141
+ };
142
+
143
+ /** GraphQL mutate */
144
+
145
+ export type GeneratedMutation<InputType, OutputType> = string & {
146
+ __generatedMutationInput: InputType;
147
+ __generatedMutationOutput: OutputType;
148
+ };
149
+
150
+ export type GraphqlMutationParams<
151
+ TYPED_GQL_STRING extends string,
152
+ OVERRIDE_TYPE
153
+ > = AuthMode & {
154
+ variables: TYPED_GQL_STRING extends GeneratedMutation<infer IN, infer OUT>
155
+ ? IN
156
+ : OVERRIDE_TYPE extends GraphqlQueryOverrides<infer OVERRIDE_IN, infer OUT>
157
+ ? OVERRIDE_IN
158
+ : any;
159
+ };
160
+
161
+ export type GraphqlMutationResult<
162
+ TYPED_GQL_STRING extends string,
163
+ FALLBACK_TYPES
164
+ > = TYPED_GQL_STRING extends GeneratedMutation<infer IN, infer OUT>
165
+ ? GraphQLResult<OUT>
166
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
167
+ ? GraphQLResult<OUT>
168
+ : any;
169
+
170
+ /** GraphQL subscribe */
171
+
172
+ export type GeneratedSubscription<InputType, OutputType> = string & {
173
+ __generatedSubscriptionInput: InputType;
174
+ __generatedSubscriptionOutput: OutputType;
175
+ };
176
+
177
+ export type GraphqlSubscriptionParams<
178
+ TYPED_GQL_STRING extends string,
179
+ FALLBACK_TYPES
180
+ > = AuthMode & {
181
+ variables: TYPED_GQL_STRING extends GeneratedSubscription<infer IN, infer OUT>
182
+ ? IN
183
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
184
+ ? IN
185
+ : any;
186
+ };
187
+
188
+ export type GraphqlSubscriptionResult<
189
+ TYPED_GQL_STRING extends string,
190
+ FALLBACK_TYPES
191
+ > = {
192
+ value: {
193
+ data: TYPED_GQL_STRING extends GeneratedSubscription<infer IN, infer OUT>
194
+ ? Dig<OUT>
195
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
196
+ ? Dig<OUT>
197
+ : any;
198
+ };
199
+ provider: any;
200
+ };
@@ -0,0 +1,171 @@
1
+ // import { Observable } from 'zen-observable-ts';
2
+ // import { GraphQLOptions } from './index';
3
+ import { GraphQLError } from 'graphql';
4
+
5
+ // #region shared API types ... probably to be pulled from core or something later.
6
+
7
+ // original
8
+ // export interface GraphQLResult<T = object> {
9
+ // data?: T;
10
+ // errors?: GraphQLError[];
11
+ // extensions?: {
12
+ // [key: string]: any;
13
+ // };
14
+ // }
15
+
16
+ /**
17
+ *
18
+ * ```
19
+ * type T = UnionOfKeysOf<{x: string, y: string}>;
20
+ * ^
21
+ * "x" | "y"
22
+ * ```
23
+ */
24
+ type UnionOfKeysOf<T> = {
25
+ [K in keyof T]: T extends Record<K, any> ? K : never;
26
+ }[keyof T];
27
+
28
+ /**
29
+ * Digs down a layer into an object to extract a union of all the property
30
+ * types.
31
+ *
32
+ * ```
33
+ * type T = Dig<{ x: { a: string, b: number }, y: { c: boolean } }>;
34
+ * ^
35
+ * {
36
+ * a: string;
37
+ * b: number;
38
+ * } | {
39
+ * c: boolean;
40
+ * }
41
+ * ```
42
+ *
43
+ * This is particularly useful for extracting the type when a single property
44
+ * exists on an object and we just want to "skip" it or "dig it out".
45
+ *
46
+ * ```
47
+ * type T = Dig<{x: { a: string, b: number }}>;
48
+ * ^
49
+ * {
50
+ * a: string;
51
+ * b: number;
52
+ * }
53
+ * ```
54
+ *
55
+ */
56
+ type Dig<T> = T[keyof T];
57
+
58
+ export type GraphQLResult<T = object> = {
59
+ data: Dig<T>;
60
+ errors?: GraphQLError[];
61
+ extensions?: {
62
+ [key: string]: any;
63
+ };
64
+ };
65
+
66
+ type UnionKeys<T> = T extends T ? keyof T : never;
67
+ type StrictUnionHelper<T, TAll> = T extends any
68
+ ? T & Partial<Record<Exclude<UnionKeys<TAll>, keyof T>, undefined>>
69
+ : never;
70
+ export type StrictUnion<T> = StrictUnionHelper<T, T>;
71
+ export type SimpleAuthMode = {
72
+ authMode?: 'AMAZON_COGNITO_USERPOOLS' | 'API_KEY' | 'AWS_IAM';
73
+ };
74
+
75
+ export type LambdaAuthMode = {
76
+ authMode: 'AWS_LAMBDA';
77
+ authToken: string;
78
+ };
79
+
80
+ export type AuthMode = StrictUnion<SimpleAuthMode | LambdaAuthMode>;
81
+
82
+ // #endregion
83
+
84
+ export type GeneratedQuery<InputType, OutputType> = string & {
85
+ __generatedQueryInput: InputType;
86
+ __generatedQueryOutput: OutputType;
87
+ };
88
+
89
+ export type GraphqlQueryOverrides<IN extends {}, OUT extends {}> = {
90
+ variables: IN;
91
+ result: OUT;
92
+ };
93
+
94
+ export type GraphqlQueryParams<
95
+ TYPED_GQL_STRING extends string,
96
+ FALLBACK_TYPES
97
+ > = AuthMode & {
98
+ variables: TYPED_GQL_STRING extends GeneratedQuery<infer IN, infer OUT>
99
+ ? IN
100
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
101
+ ? IN
102
+ : any;
103
+ };
104
+
105
+ export type GraphqlQueryResult<T extends string, S> = T extends GeneratedQuery<
106
+ infer IN,
107
+ infer OUT
108
+ >
109
+ ? GraphQLResult<OUT>
110
+ : S extends GraphqlQueryOverrides<infer IN, infer OUT>
111
+ ? GraphQLResult<OUT>
112
+ : any;
113
+
114
+ /** GraphQL mutate */
115
+
116
+ export type GeneratedMutation<InputType, OutputType> = string & {
117
+ __generatedMutationInput: InputType;
118
+ __generatedMutationOutput: OutputType;
119
+ };
120
+
121
+ export type GraphqlMutationParams<
122
+ TYPED_GQL_STRING extends string,
123
+ OVERRIDE_TYPE
124
+ > = AuthMode & {
125
+ variables: TYPED_GQL_STRING extends GeneratedMutation<infer IN, infer OUT>
126
+ ? IN
127
+ : OVERRIDE_TYPE extends GraphqlQueryOverrides<infer OVERRIDE_IN, infer OUT>
128
+ ? OVERRIDE_IN
129
+ : any;
130
+ };
131
+
132
+ export type GraphqlMutationResult<
133
+ TYPED_GQL_STRING extends string,
134
+ FALLBACK_TYPES
135
+ > = TYPED_GQL_STRING extends GeneratedMutation<infer IN, infer OUT>
136
+ ? GraphQLResult<OUT>
137
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
138
+ ? GraphQLResult<OUT>
139
+ : any;
140
+
141
+ /** GraphQL subscribe */
142
+
143
+ export type GeneratedSubscription<InputType, OutputType> = string & {
144
+ __generatedSubscriptionInput: InputType;
145
+ __generatedSubscriptionOutput: OutputType;
146
+ };
147
+
148
+ export type GraphqlSubscriptionParams<
149
+ TYPED_GQL_STRING extends string,
150
+ FALLBACK_TYPES
151
+ > = AuthMode & {
152
+ variables: TYPED_GQL_STRING extends GeneratedSubscription<infer IN, infer OUT>
153
+ ? IN
154
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
155
+ ? IN
156
+ : any;
157
+ };
158
+
159
+ export type GraphqlSubscriptionResult<
160
+ TYPED_GQL_STRING extends string,
161
+ FALLBACK_TYPES
162
+ > = {
163
+ value: {
164
+ data: TYPED_GQL_STRING extends GeneratedSubscription<infer IN, infer OUT>
165
+ ? Dig<OUT>
166
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
167
+ ? Dig<OUT>
168
+ : any;
169
+ };
170
+ provider: any;
171
+ };
@@ -0,0 +1,110 @@
1
+ import { GraphQLResult } from './index';
2
+
3
+ // #region shared API types ... probably to be pulled from core or something later.
4
+
5
+ type UnionKeys<T> = T extends T ? keyof T : never;
6
+ type StrictUnionHelper<T, TAll> = T extends any
7
+ ? T & Partial<Record<Exclude<UnionKeys<TAll>, keyof T>, undefined>>
8
+ : never;
9
+ export type StrictUnion<T> = StrictUnionHelper<T, T>;
10
+ export type SimpleAuthMode = {
11
+ authMode?: 'AMAZON_COGNITO_USERPOOLS' | 'API_KEY' | 'AWS_IAM';
12
+ };
13
+
14
+ export type LambdaAuthMode = {
15
+ authMode: 'AWS_LAMBDA';
16
+ authToken: string;
17
+ };
18
+
19
+ export type AuthMode = StrictUnion<SimpleAuthMode | LambdaAuthMode>;
20
+
21
+ // #endregion
22
+
23
+ export type GeneratedQuery<InputType, OutputType> = string & {
24
+ __generatedQueryInput: InputType;
25
+ __generatedQueryOutput: OutputType;
26
+ };
27
+
28
+ export type GraphqlQueryOverrides<IN extends {}, OUT extends {}> = {
29
+ variables: IN;
30
+ result: OUT;
31
+ };
32
+
33
+ export type GraphqlQueryParams<
34
+ TYPED_GQL_STRING extends string,
35
+ FALLBACK_TYPES
36
+ > = AuthMode & {
37
+ variables: TYPED_GQL_STRING extends GeneratedQuery<infer IN, infer OUT>
38
+ ? IN
39
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
40
+ ? IN
41
+ : any;
42
+ };
43
+
44
+ export type GraphqlQueryResult<T extends string, S> = T extends GeneratedQuery<
45
+ infer IN,
46
+ infer OUT
47
+ >
48
+ ? GraphQLResult<OUT>
49
+ : S extends GraphqlQueryOverrides<infer IN, infer OUT>
50
+ ? GraphQLResult<OUT>
51
+ : any;
52
+
53
+ /** GraphQL mutate */
54
+
55
+ export type GeneratedMutation<InputType, OutputType> = string & {
56
+ __generatedMutationInput: InputType;
57
+ __generatedMutationOutput: OutputType;
58
+ };
59
+
60
+ export type GraphqlMutationParams<
61
+ TYPED_GQL_STRING extends string,
62
+ OVERRIDE_TYPE
63
+ > = AuthMode & {
64
+ variables: TYPED_GQL_STRING extends GeneratedMutation<infer IN, infer OUT>
65
+ ? IN
66
+ : OVERRIDE_TYPE extends GraphqlQueryOverrides<infer OVERRIDE_IN, infer OUT>
67
+ ? OVERRIDE_IN
68
+ : any;
69
+ };
70
+
71
+ export type GraphqlMutationResult<
72
+ TYPED_GQL_STRING extends string,
73
+ FALLBACK_TYPES
74
+ > = TYPED_GQL_STRING extends GeneratedMutation<infer IN, infer OUT>
75
+ ? GraphQLResult<OUT>
76
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
77
+ ? GraphQLResult<OUT>
78
+ : any;
79
+
80
+ /** GraphQL subscribe */
81
+
82
+ export type GeneratedSubscription<InputType, OutputType> = string & {
83
+ __generatedSubscriptionInput: InputType;
84
+ __generatedSubscriptionOutput: OutputType;
85
+ };
86
+
87
+ export type GraphqlSubscriptionParams<
88
+ TYPED_GQL_STRING extends string,
89
+ FALLBACK_TYPES
90
+ > = AuthMode & {
91
+ variables: TYPED_GQL_STRING extends GeneratedSubscription<infer IN, infer OUT>
92
+ ? IN
93
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
94
+ ? IN
95
+ : any;
96
+ };
97
+
98
+ export type GraphqlSubscriptionResult<
99
+ TYPED_GQL_STRING extends string,
100
+ FALLBACK_TYPES
101
+ > = {
102
+ provider: any;
103
+ value: {
104
+ data: TYPED_GQL_STRING extends GeneratedSubscription<infer IN, infer OUT>
105
+ ? OUT
106
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
107
+ ? OUT
108
+ : any;
109
+ };
110
+ };
@@ -0,0 +1,110 @@
1
+ import { GraphQLResult } from './index';
2
+
3
+ // #region shared API types ... probably to be pulled from core or something later.
4
+
5
+ type UnionKeys<T> = T extends T ? keyof T : never;
6
+ type StrictUnionHelper<T, TAll> = T extends any
7
+ ? T & Partial<Record<Exclude<UnionKeys<TAll>, keyof T>, undefined>>
8
+ : never;
9
+ export type StrictUnion<T> = StrictUnionHelper<T, T>;
10
+ export type SimpleAuthMode = {
11
+ authMode?: 'AMAZON_COGNITO_USERPOOLS' | 'API_KEY' | 'AWS_IAM';
12
+ };
13
+
14
+ export type LambdaAuthMode = {
15
+ authMode: 'AWS_LAMBDA';
16
+ authToken: string;
17
+ };
18
+
19
+ export type AuthMode = StrictUnion<SimpleAuthMode | LambdaAuthMode>;
20
+
21
+ // #endregion
22
+
23
+ export type GeneratedQuery<InputType, OutputType> = string & {
24
+ __generatedQueryInput: InputType;
25
+ __generatedQueryOutput: OutputType;
26
+ };
27
+
28
+ export type GraphqlQueryOverrides<IN extends {}, OUT extends {}> = {
29
+ variables: IN;
30
+ result: OUT;
31
+ };
32
+
33
+ export type GraphqlQueryParams<
34
+ TYPED_GQL_STRING extends string,
35
+ FALLBACK_TYPES
36
+ > = AuthMode & {
37
+ variables: TYPED_GQL_STRING extends GeneratedQuery<infer IN, infer OUT>
38
+ ? IN
39
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
40
+ ? IN
41
+ : any;
42
+ };
43
+
44
+ export type GraphqlQueryResult<T extends string, S> = T extends GeneratedQuery<
45
+ infer IN,
46
+ infer OUT
47
+ >
48
+ ? GraphQLResult<OUT>
49
+ : S extends GraphqlQueryOverrides<infer IN, infer OUT>
50
+ ? GraphQLResult<OUT>
51
+ : any;
52
+
53
+ /** GraphQL mutate */
54
+
55
+ export type GeneratedMutation<InputType, OutputType> = string & {
56
+ __generatedMutationInput: InputType;
57
+ __generatedMutationOutput: OutputType;
58
+ };
59
+
60
+ export type GraphqlMutationParams<
61
+ TYPED_GQL_STRING extends string,
62
+ OVERRIDE_TYPE
63
+ > = AuthMode & {
64
+ variables: TYPED_GQL_STRING extends GeneratedMutation<infer IN, infer OUT>
65
+ ? IN
66
+ : OVERRIDE_TYPE extends GraphqlQueryOverrides<infer OVERRIDE_IN, infer OUT>
67
+ ? OVERRIDE_IN
68
+ : any;
69
+ };
70
+
71
+ export type GraphqlMutationResult<
72
+ TYPED_GQL_STRING extends string,
73
+ FALLBACK_TYPES
74
+ > = TYPED_GQL_STRING extends GeneratedMutation<infer IN, infer OUT>
75
+ ? GraphQLResult<OUT>
76
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
77
+ ? GraphQLResult<OUT>
78
+ : any;
79
+
80
+ /** GraphQL subscribe */
81
+
82
+ export type GeneratedSubscription<InputType, OutputType> = string & {
83
+ __generatedSubscriptionInput: InputType;
84
+ __generatedSubscriptionOutput: OutputType;
85
+ };
86
+
87
+ export type GraphqlSubscriptionParams<
88
+ TYPED_GQL_STRING extends string,
89
+ FALLBACK_TYPES
90
+ > = AuthMode & {
91
+ variables: TYPED_GQL_STRING extends GeneratedSubscription<infer IN, infer OUT>
92
+ ? IN
93
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
94
+ ? IN
95
+ : any;
96
+ };
97
+
98
+ export type GraphqlSubscriptionResult<
99
+ TYPED_GQL_STRING extends string,
100
+ FALLBACK_TYPES
101
+ > = {
102
+ provider: any;
103
+ value: {
104
+ data: TYPED_GQL_STRING extends GeneratedSubscription<infer IN, infer OUT>
105
+ ? OUT
106
+ : FALLBACK_TYPES extends GraphqlQueryOverrides<infer IN, infer OUT>
107
+ ? OUT
108
+ : any;
109
+ };
110
+ };
package/src/v6.ts ADDED
@@ -0,0 +1,103 @@
1
+ import { GraphQLAPI } from './GraphQLAPI';
2
+ import { Observable } from 'zen-observable-ts';
3
+ import { parse, print, OperationDefinitionNode } from 'graphql';
4
+
5
+ import {
6
+ GraphqlQueryParams,
7
+ GraphqlQueryResult,
8
+ GraphqlMutationParams,
9
+ GraphqlMutationResult,
10
+ GraphqlSubscriptionParams,
11
+ GraphqlSubscriptionResult,
12
+ } from './types/v6';
13
+
14
+ import { GraphQLOptions, GraphQLResult } from './types';
15
+
16
+ /**
17
+ * The proposed interface additions to the TypeBeast
18
+ */
19
+ class V6Client {
20
+ graphql<T = any>(
21
+ options: GraphQLOptions,
22
+ additionalHeaders?: { [key: string]: string }
23
+ ): Observable<GraphqlSubscriptionResult<'', T>> | Promise<GraphQLResult<T>> {
24
+ const parsedQuery =
25
+ typeof options.query === 'string'
26
+ ? parse(options.query)
27
+ : parse(print(options.query));
28
+
29
+ const [operationDef = {}] = parsedQuery.definitions.filter(
30
+ def => def.kind === 'OperationDefinition'
31
+ );
32
+ const { operation: operationType } =
33
+ operationDef as OperationDefinitionNode;
34
+
35
+ const childOptions = {
36
+ ...options,
37
+ query: print(parsedQuery),
38
+ } as any; // todo
39
+
40
+ switch (operationType) {
41
+ case 'query':
42
+ return this.query(childOptions.query, childOptions, additionalHeaders);
43
+ case 'mutation':
44
+ return this.mutate(childOptions.query, childOptions, additionalHeaders);
45
+ case 'subscription':
46
+ return this.subscribe(
47
+ childOptions.query,
48
+ childOptions,
49
+ additionalHeaders
50
+ );
51
+ default:
52
+ throw new Error(`invalid operation type: ${operationType}`);
53
+ }
54
+ }
55
+
56
+ query<FALLBACK_TYPES = unknown, TYPED_GQL_STRING extends string = string>(
57
+ document: TYPED_GQL_STRING,
58
+ queryParams?: GraphqlQueryParams<TYPED_GQL_STRING, FALLBACK_TYPES>,
59
+ additionalHeaders?: { [key: string]: string }
60
+ ): Promise<GraphqlQueryResult<TYPED_GQL_STRING, FALLBACK_TYPES>> {
61
+ return GraphQLAPI.graphql(
62
+ {
63
+ ...((queryParams || {}) as any), // todo
64
+ query: document,
65
+ },
66
+ additionalHeaders
67
+ ) as Promise<GraphqlQueryResult<TYPED_GQL_STRING, FALLBACK_TYPES>>;
68
+ }
69
+
70
+ mutate<FALLBACK_TYPES = unknown, TYPED_GQL_STRING extends string = string>(
71
+ document: TYPED_GQL_STRING,
72
+ queryParams?: GraphqlMutationParams<TYPED_GQL_STRING, FALLBACK_TYPES>,
73
+ additionalHeaders?: { [key: string]: string }
74
+ ): Promise<GraphqlMutationResult<TYPED_GQL_STRING, FALLBACK_TYPES>> {
75
+ return GraphQLAPI.graphql(
76
+ {
77
+ ...((queryParams || {}) as any), // todo
78
+ query: document,
79
+ },
80
+ additionalHeaders
81
+ ) as Promise<GraphqlMutationResult<TYPED_GQL_STRING, FALLBACK_TYPES>>;
82
+ }
83
+
84
+ subscribe<FALLBACK_TYPES = unknown, TYPED_GQL_STRING extends string = string>(
85
+ document: TYPED_GQL_STRING,
86
+ queryParams?: GraphqlSubscriptionParams<TYPED_GQL_STRING, FALLBACK_TYPES>,
87
+ additionalHeaders?: { [key: string]: string }
88
+ ): Observable<GraphqlSubscriptionResult<TYPED_GQL_STRING, FALLBACK_TYPES>> {
89
+ return GraphQLAPI.graphql(
90
+ {
91
+ ...((queryParams || {}) as any), // todo
92
+ query: document,
93
+ },
94
+ additionalHeaders
95
+ ) as Observable<
96
+ GraphqlSubscriptionResult<TYPED_GQL_STRING, FALLBACK_TYPES>
97
+ >;
98
+ }
99
+ }
100
+
101
+ export function generateClient() {
102
+ return new V6Client();
103
+ }