UNPKG

@aws-amplify/appsync-modelgen-plugin

Version:
73 lines 4.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AppSyncModelJavascriptVisitor = void 0; const visitor_plugin_common_1 = require("@graphql-codegen/visitor-plugin-common"); const appsync_typescript_visitor_1 = require("./appsync-typescript-visitor"); const change_case_1 = require("change-case"); class AppSyncModelJavascriptVisitor extends appsync_typescript_visitor_1.AppSyncModelTypeScriptVisitor { constructor(schema, rawConfig, additionalConfig, defaultScalars = visitor_plugin_common_1.DEFAULT_SCALARS) { super(schema, rawConfig, additionalConfig, defaultScalars); this._parsedConfig.isDeclaration = rawConfig.isDeclaration || false; } generate() { const shouldUseModelNameFieldInHasManyAndBelongsTo = false; const shouldImputeKeyForUniDirectionalHasMany = true; const shouldUseFieldsInAssociatedWithInHasOne = true; this.processDirectives(shouldUseModelNameFieldInHasManyAndBelongsTo, shouldImputeKeyForUniDirectionalHasMany, shouldUseFieldsInAssociatedWithInHasOne); if (this._parsedConfig.isDeclaration) { const enumDeclarations = Object.values(this.enumMap) .map(enumObj => this.generateEnumDeclarations(enumObj, true)) .join('\n\n'); const modelDeclarations = Object.values(this.modelMap) .map(typeObj => this.generateModelDeclaration(typeObj, true)) .join('\n\n'); const nonModelDeclarations = Object.values(this.nonModelMap) .map(typeObj => this.generateModelDeclaration(typeObj, true, false)) .join('\n\n'); const imports = this.generateImports(); if (!this.isCustomPKEnabled()) { const modelMetaData = Object.values(this.modelMap) .map(typeObj => this.generateModelMetaData(typeObj)) .join('\n\n'); return [imports, enumDeclarations, nonModelDeclarations, modelMetaData, modelDeclarations].filter(b => b).join('\n\n'); } return [imports, enumDeclarations, nonModelDeclarations, modelDeclarations].join('\n\n'); } else { const imports = this.generateImportsJavaScriptImplementation(); const enumDeclarations = Object.values(this.enumMap) .map((e) => this.generateEnumObject(e)) .join('\n\n'); const modelInitialization = this.generateModelInitialization([...Object.values(this.modelMap), ...Object.values(this.nonModelMap)], false); const modelExports = this.generateExports([ ...Object.values(this.modelMap), ...Object.values(this.enumMap), ...Object.values(this.nonModelMap), ]); return [imports, enumDeclarations, modelInitialization, modelExports].join('\n\n'); } } generateEnumObject(enumObj, exportEnum = false) { const enumName = (0, change_case_1.pascalCase)(this.getEnumName(enumObj)); const header = [exportEnum ? 'export' : null, 'const', enumName].filter(h => h).join(' '); return `${header} = ${JSON.stringify(enumObj.values, null, 2)};`; } generateImportsJavaScriptImplementation() { return ['// @ts-check', "import { initSchema } from '@aws-amplify/datastore';", "import { schema } from './schema';"].join('\n'); } generateModelTypeDeclarationName(model) { return `${this.getModelName(model)}`; } generateImports() { const baseImportComponents = Array.from(this.BASE_DATASTORE_IMPORT); const baseImport = `import { ${baseImportComponents.join(', ')} } from "@aws-amplify/datastore";`; if (this.TS_IGNORE_DATASTORE_IMPORT.size) { const tsIgnoreImportComponents = Array.from(this.TS_IGNORE_DATASTORE_IMPORT); const tsIgnoreImport = `// @ts-ignore\nimport { ${tsIgnoreImportComponents.join(', ')} } from "@aws-amplify/datastore";`; return [baseImport, tsIgnoreImport].join('\n'); } return baseImport; } } exports.AppSyncModelJavascriptVisitor = AppSyncModelJavascriptVisitor; //# sourceMappingURL=appsync-javascript-visitor.js.map