@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.
- package/lib/facade-iterable-paging.d.ts +19 -0
- package/lib/facade-iterable-paging.js +115 -0
- package/lib/facade-iterable-paging.js.map +1 -0
- package/lib/facade-light-flattening.d.ts +19 -0
- package/lib/facade-light-flattening.js +69 -0
- package/lib/facade-light-flattening.js.map +1 -0
- package/lib/facade-no-flattening.d.ts +19 -0
- package/lib/facade-no-flattening.js +37 -0
- package/lib/facade-no-flattening.js.map +1 -0
- package/lib/types/facade-iterable-paging.d.ts +106 -0
- package/lib/types/facade-iterable-paging.js +3 -0
- package/lib/types/facade-iterable-paging.js.map +1 -0
- package/lib/types/facade-light-flattening.d.ts +84 -0
- package/lib/types/facade-light-flattening.js +3 -0
- package/lib/types/facade-light-flattening.js.map +1 -0
- package/lib/types/facade-no-flattening.d.ts +48 -0
- package/lib/types/facade-no-flattening.js +3 -0
- package/lib/types/facade-no-flattening.js.map +1 -0
- package/lib/types/v6.d.ts +48 -0
- package/lib/types/v6.js +3 -0
- package/lib/types/v6.js.map +1 -0
- package/lib/v6.d.ts +22 -0
- package/lib/v6.js +45 -0
- package/lib/v6.js.map +1 -0
- package/lib-esm/facade-iterable-paging.d.ts +19 -0
- package/lib-esm/facade-iterable-paging.js +109 -0
- package/lib-esm/facade-iterable-paging.js.map +1 -0
- package/lib-esm/facade-light-flattening.d.ts +19 -0
- package/lib-esm/facade-light-flattening.js +63 -0
- package/lib-esm/facade-light-flattening.js.map +1 -0
- package/lib-esm/facade-no-flattening.d.ts +19 -0
- package/lib-esm/facade-no-flattening.js +31 -0
- package/lib-esm/facade-no-flattening.js.map +1 -0
- package/lib-esm/types/facade-iterable-paging.d.ts +106 -0
- package/lib-esm/types/facade-iterable-paging.js +1 -0
- package/lib-esm/types/facade-iterable-paging.js.map +1 -0
- package/lib-esm/types/facade-light-flattening.d.ts +84 -0
- package/lib-esm/types/facade-light-flattening.js +1 -0
- package/lib-esm/types/facade-light-flattening.js.map +1 -0
- package/lib-esm/types/facade-no-flattening.d.ts +48 -0
- package/lib-esm/types/facade-no-flattening.js +1 -0
- package/lib-esm/types/facade-no-flattening.js.map +1 -0
- package/lib-esm/types/v6.d.ts +48 -0
- package/lib-esm/types/v6.js +1 -0
- package/lib-esm/types/v6.js.map +1 -0
- package/lib-esm/v6.d.ts +22 -0
- package/lib-esm/v6.js +42 -0
- package/lib-esm/v6.js.map +1 -0
- package/package.json +10 -7
- package/src/facade-iterable-paging.ts +150 -0
- package/src/facade-light-flattening.ts +139 -0
- package/src/facade-no-flattening.ts +100 -0
- package/src/types/facade-iterable-paging.ts +200 -0
- package/src/types/facade-light-flattening.ts +171 -0
- package/src/types/facade-no-flattening.ts +110 -0
- package/src/types/v6.ts +110 -0
- 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
|
+
};
|
package/src/types/v6.ts
ADDED
|
@@ -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
|
+
}
|