@aws-amplify/graphql-model-transformer 0.7.1-graphql-vnext-dev-preview.11 → 0.9.1
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/CHANGELOG.md +2 -138
- package/lib/definitions.d.ts +0 -1
- package/lib/definitions.d.ts.map +1 -1
- package/lib/definitions.js +1 -2
- package/lib/definitions.js.map +1 -1
- package/lib/graphql-model-transformer.d.ts +1 -2
- package/lib/graphql-model-transformer.d.ts.map +1 -1
- package/lib/graphql-model-transformer.js +8 -61
- package/lib/graphql-model-transformer.js.map +1 -1
- package/lib/graphql-types/common.d.ts +2 -6
- package/lib/graphql-types/common.d.ts.map +1 -1
- package/lib/graphql-types/common.js +1 -65
- package/lib/graphql-types/common.js.map +1 -1
- package/lib/resolvers/common.d.ts +1 -1
- package/lib/resolvers/common.d.ts.map +1 -1
- package/lib/resolvers/common.js +2 -1
- package/lib/resolvers/common.js.map +1 -1
- package/package.json +6 -6
- package/src/__tests__/__snapshots__/model-transformer.test.ts.snap +3 -3
- package/src/__tests__/model-transformer.test.ts +15 -119
- package/src/definitions.ts +0 -2
- package/src/graphql-model-transformer.ts +8 -78
- package/src/graphql-types/common.ts +1 -97
- package/src/resolvers/common.ts +3 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,20 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TransformerTransformSchemaStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
|
|
2
2
|
import {
|
|
3
|
-
DirectiveNode,
|
|
4
3
|
EnumTypeDefinitionNode,
|
|
5
4
|
FieldDefinitionNode,
|
|
6
5
|
InputObjectTypeDefinitionNode,
|
|
7
6
|
Kind,
|
|
8
|
-
NamedTypeNode,
|
|
9
7
|
ObjectTypeDefinitionNode,
|
|
10
8
|
TypeDefinitionNode,
|
|
11
9
|
} from 'graphql';
|
|
12
10
|
import {
|
|
13
|
-
blankObjectExtension,
|
|
14
11
|
DEFAULT_SCALARS,
|
|
15
|
-
extendFieldWithDirectives,
|
|
16
|
-
extensionWithDirectives,
|
|
17
|
-
getBaseType,
|
|
18
12
|
makeArgument,
|
|
19
13
|
makeDirective,
|
|
20
14
|
makeField,
|
|
@@ -35,7 +29,6 @@ import {
|
|
|
35
29
|
SIZE_CONDITIONS,
|
|
36
30
|
STRING_CONDITIONS,
|
|
37
31
|
STRING_FUNCTIONS,
|
|
38
|
-
API_KEY_DIRECTIVE,
|
|
39
32
|
} from '../definitions';
|
|
40
33
|
import {
|
|
41
34
|
EnumWrapper,
|
|
@@ -252,96 +245,7 @@ export function makeEnumFilterInput(fieldWrapper: FieldWrapper): InputObjectType
|
|
|
252
245
|
return input.serialize();
|
|
253
246
|
}
|
|
254
247
|
|
|
255
|
-
export const addDirectivesToField = (
|
|
256
|
-
ctx: TransformerTransformSchemaStepContextProvider,
|
|
257
|
-
typeName: string,
|
|
258
|
-
fieldName: string,
|
|
259
|
-
directives: Array<DirectiveNode>,
|
|
260
|
-
) => {
|
|
261
|
-
const type = ctx.output.getType(typeName) as ObjectTypeDefinitionNode;
|
|
262
|
-
if (type) {
|
|
263
|
-
const field = type.fields?.find(f => f.name.value === fieldName);
|
|
264
|
-
if (field) {
|
|
265
|
-
const newFields = [...type.fields!.filter(f => f.name.value !== field.name.value), extendFieldWithDirectives(field, directives)];
|
|
266
|
-
|
|
267
|
-
const newType = {
|
|
268
|
-
...type,
|
|
269
|
-
fields: newFields,
|
|
270
|
-
};
|
|
271
|
-
|
|
272
|
-
ctx.output.putType(newType);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
};
|
|
276
|
-
|
|
277
|
-
export const addDirectivesToOperation = (
|
|
278
|
-
ctx: TransformerTransformSchemaStepContextProvider,
|
|
279
|
-
typeName: string,
|
|
280
|
-
operationName: string,
|
|
281
|
-
directives: Array<DirectiveNode>,
|
|
282
|
-
) => {
|
|
283
|
-
// add directives to the given operation
|
|
284
|
-
addDirectivesToField(ctx, typeName, operationName, directives);
|
|
285
|
-
|
|
286
|
-
// add the directives to the result type of the operation
|
|
287
|
-
const type = ctx.output.getType(typeName) as ObjectTypeDefinitionNode;
|
|
288
|
-
if (type) {
|
|
289
|
-
const field = type.fields!.find(f => f.name.value === operationName);
|
|
290
|
-
|
|
291
|
-
if (field) {
|
|
292
|
-
const returnFieldType = field.type as NamedTypeNode;
|
|
293
|
-
|
|
294
|
-
if (returnFieldType.name) {
|
|
295
|
-
const returnTypeName = returnFieldType.name.value;
|
|
296
|
-
|
|
297
|
-
extendTypeWithDirectives(ctx, returnTypeName, directives);
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
};
|
|
302
|
-
|
|
303
|
-
export const extendTypeWithDirectives = (
|
|
304
|
-
ctx: TransformerTransformSchemaStepContextProvider,
|
|
305
|
-
typeName: string,
|
|
306
|
-
directives: Array<DirectiveNode>,
|
|
307
|
-
): void => {
|
|
308
|
-
let objectTypeExtension = blankObjectExtension(typeName);
|
|
309
|
-
objectTypeExtension = extensionWithDirectives(objectTypeExtension, directives);
|
|
310
|
-
ctx.output.addObjectExtension(objectTypeExtension);
|
|
311
|
-
};
|
|
312
|
-
|
|
313
248
|
export function makeModelSortDirectionEnumObject(): EnumTypeDefinitionNode {
|
|
314
249
|
const name = 'ModelSortDirection';
|
|
315
250
|
return EnumWrapper.create(name, ['ASC', 'DESC']).serialize();
|
|
316
251
|
}
|
|
317
|
-
// the smaller version of it's @auth equivalent since we only support
|
|
318
|
-
// apikey as the only global auth rule
|
|
319
|
-
export const propagateApiKeyToNestedTypes = (
|
|
320
|
-
ctx: TransformerContextProvider,
|
|
321
|
-
def: ObjectTypeDefinitionNode,
|
|
322
|
-
seenNonModelTypes: Set<string>,
|
|
323
|
-
) => {
|
|
324
|
-
const nonModelTypePredicate = (fieldType: TypeDefinitionNode): TypeDefinitionNode | undefined => {
|
|
325
|
-
if (fieldType) {
|
|
326
|
-
if (fieldType.kind !== 'ObjectTypeDefinition') {
|
|
327
|
-
return undefined;
|
|
328
|
-
}
|
|
329
|
-
const typeModel = fieldType.directives!.find(dir => dir.name.value === 'model');
|
|
330
|
-
return typeModel !== undefined ? undefined : fieldType;
|
|
331
|
-
}
|
|
332
|
-
return fieldType;
|
|
333
|
-
};
|
|
334
|
-
const nonModelFieldTypes = def
|
|
335
|
-
.fields!.map(f => ctx.output.getType(getBaseType(f.type)) as TypeDefinitionNode)
|
|
336
|
-
.filter(nonModelTypePredicate);
|
|
337
|
-
for (const nonModelFieldType of nonModelFieldTypes) {
|
|
338
|
-
const nonModelName = nonModelFieldType.name.value;
|
|
339
|
-
const hasSeenType = seenNonModelTypes.has(nonModelName);
|
|
340
|
-
const hasApiKey = nonModelFieldType.directives?.some(dir => dir.name.value === API_KEY_DIRECTIVE) ?? false;
|
|
341
|
-
if (!hasSeenType && !hasApiKey) {
|
|
342
|
-
seenNonModelTypes.add(nonModelName);
|
|
343
|
-
extendTypeWithDirectives(ctx, nonModelName, [makeDirective(API_KEY_DIRECTIVE, [])]);
|
|
344
|
-
propagateApiKeyToNestedTypes(ctx, nonModelFieldType as ObjectTypeDefinitionNode, seenNonModelTypes);
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
};
|
package/src/resolvers/common.ts
CHANGED
|
@@ -96,8 +96,10 @@ export const generateResolverKey = (typeName: string, fieldName: string): string
|
|
|
96
96
|
|
|
97
97
|
/**
|
|
98
98
|
* Util function to generate sandbox mode expression
|
|
99
|
+
* @param ctx context to get sandbox mode
|
|
99
100
|
*/
|
|
100
|
-
export const generateAuthExpressionForSandboxMode = (
|
|
101
|
+
export const generateAuthExpressionForSandboxMode = (ctx: any): string => {
|
|
102
|
+
const enabled = ctx.resourceHelper.api.sandboxModeEnabled;
|
|
101
103
|
let exp;
|
|
102
104
|
|
|
103
105
|
if (enabled) exp = iff(notEquals(methodCall(ref('util.authType')), str(API_KEY)), methodCall(ref('util.unauthorized')));
|