@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.
@@ -1,20 +1,14 @@
1
- import { TransformerContextProvider, TransformerTransformSchemaStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
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
- };
@@ -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 = (enabled: boolean): string => {
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')));