UNPKG

@aws-amplify/appsync-modelgen-plugin

Version:
205 lines 9.4 kB
import { BaseVisitor, NormalizedScalarsMap, ParsedConfig, RawConfig } from '@graphql-codegen/visitor-plugin-common'; import { EnumTypeDefinitionNode, FieldDefinitionNode, GraphQLNamedType, GraphQLSchema, ObjectTypeDefinitionNode, InputValueDefinitionNode, InputObjectTypeDefinitionNode, UnionTypeDefinitionNode, InterfaceTypeDefinitionNode } from 'graphql'; import { CodeGenFieldConnection } from '../utils/process-connections'; export declare enum CodeGenGenerateEnum { metadata = "metadata", code = "code", loader = "loader" } export interface RawAppSyncModelConfig extends RawConfig { target: string; selectedType?: string; generate?: CodeGenGenerateEnum; directives?: string; isDataStoreEnabled?: boolean; isTimestampFieldsAdded?: boolean; handleListNullabilityTransparently?: boolean; usePipelinedTransformer?: boolean; transformerVersion?: number; respectPrimaryKeyAttributesOnConnectionField?: boolean; improvePluralization?: boolean; generateModelsForLazyLoadAndCustomSelectionSet?: boolean; codegenVersion: string; } export interface ParsedAppSyncModelConfig extends ParsedConfig { selectedType?: string; generate?: CodeGenGenerateEnum; target?: string; isDataStoreEnabled?: boolean; isTimestampFieldsAdded?: boolean; handleListNullabilityTransparently?: boolean; usePipelinedTransformer?: boolean; transformerVersion?: number; respectPrimaryKeyAttributesOnConnectionField?: boolean; improvePluralization?: boolean; generateModelsForLazyLoadAndCustomSelectionSet?: boolean; codegenVersion?: string; } export declare type CodeGenArgumentsMap = Record<string, any>; export declare type CodeGenDirective = { name: string; arguments: CodeGenArgumentsMap; }; export declare type CodeGenFieldDirective = CodeGenDirective & { fieldName: string; }; export declare type CodeGenInputValue = TypeInfo & { name: string; directives: CodeGenDirectives; }; export declare type CodeGenDirectives = CodeGenDirective[]; export declare type CodeGenInputValues = CodeGenInputValue[]; export declare type CodeGenField = TypeInfo & { name: string; directives: CodeGenDirectives; parameters?: CodeGenInputValues; connectionInfo?: CodeGenFieldConnection; isReadOnly?: boolean; primaryKeyInfo?: CodeGenPrimaryKeyFieldInfo; }; export declare type CodeGenPrimaryKeyFieldInfo = { primaryKeyType: CodeGenPrimaryKeyType; sortKeyFields: CodeGenField[]; }; export declare enum CodeGenPrimaryKeyType { ManagedId = "ManagedId", OptionallyManagedId = "OptionallyManagedId", CustomId = "CustomId" } export declare type TypeInfo = { type: string; isList: boolean; isNullable: boolean; isListNullable?: boolean; baseType?: GraphQLNamedType | null; }; export declare type CodeGenModel = { name: string; type: 'model'; directives: CodeGenDirectives; fields: CodeGenField[]; }; export declare type CodeGenEnum = { name: string; type: 'enum'; values: CodeGenEnumValueMap; }; export declare type CodeGenModelMap = { [modelName: string]: CodeGenModel; }; export declare type CodeGenEnumValueMap = { [enumConvertedName: string]: string; }; export declare type CodeGenEnumMap = Record<string, CodeGenEnum>; export declare type CodeGenQuery = CodeGenField & { operationType: 'query'; }; export declare type CodeGenQueryMap = Record<string, CodeGenQuery>; export declare type CodeGenMutation = CodeGenField & { operationType: 'mutation'; }; export declare type CodeGenMutationMap = Record<string, CodeGenMutation>; export declare type CodeGenSubscription = CodeGenField & { operationType: 'subscription'; }; export declare type CodeGenInputObject = { name: string; type: 'input'; inputValues: CodeGenInputValues; }; export declare type CodeGenSubscriptionMap = Record<string, CodeGenSubscription>; export declare type CodeGenInputObjectMap = Record<string, CodeGenInputObject>; export declare type CodeGenUnion = { name: string; type: 'union'; typeNames: string[]; }; export declare type CodeGenUnionMap = Record<string, CodeGenUnion>; export declare type CodeGenInterface = { name: string; type: 'interface'; fields: CodeGenField[]; }; export declare type CodeGenInterfaceMap = Record<string, CodeGenInterface>; declare type ManyToManyContext = { model: CodeGenModel; field: CodeGenField; directive: CodeGenDirective; }; export declare class AppSyncModelVisitor<TRawConfig extends RawAppSyncModelConfig = RawAppSyncModelConfig, TPluginConfig extends ParsedAppSyncModelConfig = ParsedAppSyncModelConfig> extends BaseVisitor<TRawConfig, TPluginConfig> { protected _schema: GraphQLSchema; protected READ_ONLY_FIELDS: string[]; protected SCALAR_TYPE_MAP: Record<string, string>; protected modelMap: CodeGenModelMap; protected nonModelMap: CodeGenModelMap; protected enumMap: CodeGenEnumMap; protected queryMap: CodeGenQueryMap; protected mutationMap: CodeGenMutationMap; protected subscriptionMap: CodeGenSubscriptionMap; protected inputObjectMap: CodeGenInputObjectMap; protected unionMap: CodeGenUnionMap; protected interfaceMap: CodeGenInterfaceMap; protected typesToSkip: string[]; constructor(_schema: GraphQLSchema, rawConfig: TRawConfig, additionalConfig: Partial<TPluginConfig>, defaultScalars?: NormalizedScalarsMap); ObjectTypeDefinition(node: ObjectTypeDefinitionNode, index?: string | number, parent?: any): void; FieldDefinition(node: FieldDefinitionNode): CodeGenField; InputObjectTypeDefinition(node: InputObjectTypeDefinitionNode): void; InputValueDefinition(node: InputValueDefinitionNode): CodeGenInputValue; EnumTypeDefinition(node: EnumTypeDefinitionNode): void; UnionTypeDefinition(node: UnionTypeDefinitionNode): void; InterfaceTypeDefinition(node: InterfaceTypeDefinitionNode): void; processDirectives(shouldUseModelNameFieldInHasManyAndBelongsTo: boolean, shouldImputeKeyForUniDirectionalHasMany: boolean, shouldUseFieldsInAssociatedWithInHasOne?: boolean): void; generate(): string; private getDirectives; private getDirectiveArguments; protected getSelectedModels(): CodeGenModelMap; protected getSelectedNonModels(): CodeGenModelMap; protected getSelectedEnums(): CodeGenEnumMap; protected selectedTypeIsEnum(): boolean; protected selectedTypeIsNonModel(): boolean; protected getNativeType(field: CodeGenField, options?: {}): string; protected getListType(typeStr: string, field: CodeGenField): string; protected getFieldName(field: CodeGenField): string; protected getEnumName(enumField: CodeGenEnum | string): string; protected getModelName(model: CodeGenModel): string; protected getNonModelName(model: CodeGenModel): string; protected getEnumValue(value: string): string; protected getModelPrimaryKeyField(model: CodeGenModel): CodeGenField; protected isEnumType(field: CodeGenField): boolean; protected isModelType(field: CodeGenField): boolean; protected isNonModelType(field: CodeGenField): boolean; protected computeVersion(): string; protected sortFields(model: CodeGenModel): void; protected ensurePrimaryKeyField(model: CodeGenModel, directives: CodeGenDirective[]): void; protected ensurePrimaryKeyFieldV2(model: CodeGenModel, directives: CodeGenDirective[]): void; protected ensurePrimaryKeyFieldV1(model: CodeGenModel, directives: CodeGenDirective[]): void; protected getPrimaryKeyFieldByName(model: CodeGenModel, primaryKeyFieldName: string): CodeGenField; protected ensureIdField(model: CodeGenModel): void; protected processConnectionDirective(): void; protected generateIntermediateModel(firstModel: CodeGenModel, secondModel: CodeGenModel, relationName: string): CodeGenModel; protected generateIntermediateModelPrimaryKeyFieldName(model: CodeGenModel): string; protected generateIntermediateModelSortKeyFieldName(model: CodeGenModel, sortKeyField: CodeGenField): string; protected getSortKeyFields(model: CodeGenModel): CodeGenField[]; protected determinePrimaryKeyFieldname(model: CodeGenModel): string; protected convertManyToManyDirectives(contexts: ManyToManyContext[]): void; protected processManyToManyDirectives(): void; protected processConnectionDirectivesV2(shouldUseModelNameFieldInHasManyAndBelongsTo: boolean, shouldImputeKeyForUniDirectionalHasMany: boolean, shouldUseFieldsInAssociatedWithInHasOne: boolean): void; protected processV2KeyDirectives(): void; protected processAuthDirectives(): void; protected pluralizeModelName(model: CodeGenModel): string; protected addTimestampFields(model: CodeGenModel, directive: CodeGenDirective): void; protected isRequiredField(field: CodeGenField): boolean | undefined; protected isCustomPKEnabled(): boolean; protected isGenerateModelsForLazyLoadAndCustomSelectionSet(): boolean; get models(): CodeGenModelMap; get enums(): CodeGenEnumMap; get nonModels(): CodeGenModelMap; get queries(): CodeGenQueryMap; get mutations(): CodeGenMutationMap; get subscriptions(): CodeGenSubscriptionMap; get inputs(): CodeGenInputObjectMap; get unions(): CodeGenUnionMap; get interfaces(): CodeGenInterfaceMap; } export {}; //# sourceMappingURL=appsync-visitor.d.ts.map