apollo-codegen-typescript-legacy
Advanced tools
Comparing version 0.27.0 to 0.27.3
@@ -1,5 +0,5 @@ | ||
import { LegacyCompilerContext, LegacyInlineFragment, LegacyFragment, LegacyOperation } from 'apollo-codegen-core/lib/compiler/legacyIR'; | ||
import { GraphQLType } from 'graphql'; | ||
import CodeGenerator from 'apollo-codegen-core/lib/utilities/CodeGenerator'; | ||
import { Property } from './language'; | ||
import { LegacyCompilerContext, LegacyInlineFragment, LegacyFragment, LegacyOperation } from "apollo-codegen-core/lib/compiler/legacyIR"; | ||
import { GraphQLType } from "graphql"; | ||
import CodeGenerator from "apollo-codegen-core/lib/utilities/CodeGenerator"; | ||
import { Property } from "./language"; | ||
export declare function generateSource(context: LegacyCompilerContext): string; | ||
@@ -6,0 +6,0 @@ export declare function typeDeclarationForGraphQLType(generator: CodeGenerator, type: GraphQLType): void; |
@@ -10,4 +10,4 @@ "use strict"; | ||
const generator = new CodeGenerator_1.default(context); | ||
generator.printOnNewline('/* tslint:disable */'); | ||
generator.printOnNewline('// This file was automatically generated and should not be edited.'); | ||
generator.printOnNewline("/* tslint:disable */"); | ||
generator.printOnNewline("// This file was automatically generated and should not be edited."); | ||
context.typesUsed.forEach(type => typeDeclarationForGraphQLType(generator, type)); | ||
@@ -38,3 +38,3 @@ Object.values(context.operations).forEach(operation => { | ||
generator.printOnNewline(`export enum ${name} {`); | ||
graphql_2.sortEnumValues(values).forEach((value) => { | ||
graphql_2.sortEnumValues(values).forEach(value => { | ||
printDocComment(generator, value.description || undefined, 1); | ||
@@ -49,3 +49,3 @@ generator.printOnNewline(` ${value.value} = "${value.value}",`); | ||
language_1.interfaceDeclaration(generator, { | ||
interfaceName, | ||
interfaceName | ||
}, () => { | ||
@@ -58,9 +58,9 @@ const properties = propertiesFromFields(generator.context, Object.values(type.getFields())); | ||
switch (operationType) { | ||
case 'query': | ||
case "query": | ||
return `${operationName}Query`; | ||
break; | ||
case 'mutation': | ||
case "mutation": | ||
return `${operationName}Mutation`; | ||
break; | ||
case 'subscription': | ||
case "subscription": | ||
return `${operationName}Subscription`; | ||
@@ -76,5 +76,8 @@ break; | ||
} | ||
const interfaceName = `${interfaceNameFromOperation({ operationName, operationType })}Variables`; | ||
const interfaceName = `${interfaceNameFromOperation({ | ||
operationName, | ||
operationType | ||
})}Variables`; | ||
language_1.interfaceDeclaration(generator, { | ||
interfaceName, | ||
interfaceName | ||
}, () => { | ||
@@ -97,3 +100,6 @@ const properties = propertiesFromFields(generator.context, variables); | ||
if (type instanceof graphql_1.GraphQLUnionType) { | ||
return type.getTypes().map(type => getObjectTypeName(type)).join(" | "); | ||
return type | ||
.getTypes() | ||
.map(type => getObjectTypeName(type)) | ||
.join(" | "); | ||
} | ||
@@ -103,20 +109,24 @@ return `"${type.name}"`; | ||
function updateTypeNameField(rootField) { | ||
const fields = rootField.fields && rootField.fields.map(field => { | ||
if (field.fieldName === '__typename') { | ||
const objectTypeName = getObjectTypeName(rootField.type); | ||
return Object.assign({}, field, { typeName: objectTypeName, type: { name: objectTypeName } }); | ||
} | ||
if (field.fields) { | ||
return updateTypeNameField(field); | ||
} | ||
return field; | ||
}); | ||
const fields = rootField.fields && | ||
rootField.fields.map(field => { | ||
if (field.fieldName === "__typename") { | ||
const objectTypeName = getObjectTypeName(rootField.type); | ||
return Object.assign({}, field, { typeName: objectTypeName, type: { name: objectTypeName } }); | ||
} | ||
if (field.fields) { | ||
return updateTypeNameField(field); | ||
} | ||
return field; | ||
}); | ||
return Object.assign({}, rootField, { fields }); | ||
} | ||
function interfaceDeclarationForOperation(generator, { operationName, operationType, fields }) { | ||
const interfaceName = interfaceNameFromOperation({ operationName, operationType }); | ||
const interfaceName = interfaceNameFromOperation({ | ||
operationName, | ||
operationType | ||
}); | ||
fields = fields.map(field => updateTypeNameField(field)); | ||
const properties = propertiesFromFields(generator.context, fields); | ||
language_1.interfaceDeclaration(generator, { | ||
interfaceName, | ||
interfaceName | ||
}, () => { | ||
@@ -135,4 +145,3 @@ propertyDeclarations(generator, properties); | ||
if (graphql_1.isAbstractType(typeCondition)) { | ||
const propertySets = fragment.possibleTypes | ||
.map(type => { | ||
const propertySets = fragment.possibleTypes.map(type => { | ||
const inlineFragment = inlineFragments.find(inlineFragment => { | ||
@@ -143,4 +152,6 @@ return inlineFragment.typeCondition.toString() == type.toString(); | ||
const fields = inlineFragment.fields.map(field => { | ||
if (field.fieldName === '__typename') { | ||
return Object.assign({}, field, { typeName: `"${inlineFragment.typeCondition}"`, type: { name: `"${inlineFragment.typeCondition}"` } }); | ||
if (field.fieldName === "__typename") { | ||
return Object.assign({}, field, { typeName: `"${inlineFragment.typeCondition}"`, type: { | ||
name: `"${inlineFragment.typeCondition}"` | ||
} }); | ||
} | ||
@@ -155,3 +166,3 @@ else { | ||
const fragmentFields = fields.map(field => { | ||
if (field.fieldName === '__typename') { | ||
if (field.fieldName === "__typename") { | ||
return Object.assign({}, field, { typeName: `"${type}"`, type: { name: `"${type}"` } }); | ||
@@ -170,3 +181,3 @@ } | ||
const fragmentFields = fields.map(field => { | ||
if (field.fieldName === '__typename') { | ||
if (field.fieldName === "__typename") { | ||
return Object.assign({}, field, { typeName: `"${fragment.typeCondition}"`, type: { name: `"${fragment.typeCondition}"` } }); | ||
@@ -206,11 +217,16 @@ } | ||
} | ||
else if (fieldType instanceof graphql_1.GraphQLNonNull && fieldType.ofType instanceof graphql_1.GraphQLList) { | ||
else if (fieldType instanceof graphql_1.GraphQLNonNull && | ||
fieldType.ofType instanceof graphql_1.GraphQLList) { | ||
isArray = true; | ||
isArrayElementNullable = !(fieldType.ofType.ofType instanceof graphql_1.GraphQLNonNull); | ||
} | ||
return Object.assign({}, property, { typeName, fields: field.fields, isComposite: true, fragmentSpreads, inlineFragments, fieldType, | ||
isArray, isNullable, isArrayElementNullable }); | ||
return Object.assign({}, property, { typeName, fields: field.fields, isComposite: true, fragmentSpreads, | ||
inlineFragments, | ||
fieldType, | ||
isArray, | ||
isNullable, | ||
isArrayElementNullable }); | ||
} | ||
else { | ||
if (field.fieldName === '__typename') { | ||
if (field.fieldName === "__typename") { | ||
const typeName = types_1.typeNameFromGraphQLType(context, fieldType, null, false); | ||
@@ -221,3 +237,4 @@ return Object.assign({}, property, { typeName, isComposite: false, fieldType, isNullable: false }); | ||
const typeName = types_1.typeNameFromGraphQLType(context, fieldType, null, isNullable); | ||
return Object.assign({}, property, { typeName, isComposite: false, fieldType, isNullable }); | ||
return Object.assign({}, property, { typeName, isComposite: false, fieldType, | ||
isNullable }); | ||
} | ||
@@ -232,11 +249,13 @@ } | ||
if (graphql_1.isAbstractType(graphql_1.getNamedType(property.type || property.fieldType))) { | ||
const propertySets = getPossibleTypeNames(generator, property) | ||
.map(type => { | ||
const inlineFragment = property.inlineFragments && property.inlineFragments.find(inlineFragment => { | ||
return inlineFragment.typeCondition.toString() == type; | ||
}); | ||
const propertySets = getPossibleTypeNames(generator, property).map(type => { | ||
const inlineFragment = property.inlineFragments && | ||
property.inlineFragments.find(inlineFragment => { | ||
return inlineFragment.typeCondition.toString() == type; | ||
}); | ||
if (inlineFragment) { | ||
const fields = inlineFragment.fields.map(field => { | ||
if (field.fieldName === '__typename') { | ||
return Object.assign({}, field, { typeName: `"${inlineFragment.typeCondition}"`, type: { name: `"${inlineFragment.typeCondition}"` } }); | ||
if (field.fieldName === "__typename") { | ||
return Object.assign({}, field, { typeName: `"${inlineFragment.typeCondition}"`, type: { | ||
name: `"${inlineFragment.typeCondition}"` | ||
} }); | ||
} | ||
@@ -251,3 +270,3 @@ else { | ||
const fields = property.fields.map(field => { | ||
if (field.fieldName === '__typename') { | ||
if (field.fieldName === "__typename") { | ||
return Object.assign({}, field, { typeName: `"${type}"`, type: { name: `"${type}"` } }); | ||
@@ -265,8 +284,8 @@ } | ||
else { | ||
if (property.fields && property.fields.length > 0 | ||
|| property.inlineFragments && property.inlineFragments.length > 0 | ||
|| property.fragmentSpreads && property.fragmentSpreads.length > 0) { | ||
if ((property.fields && property.fields.length > 0) || | ||
(property.inlineFragments && property.inlineFragments.length > 0) || | ||
(property.fragmentSpreads && property.fragmentSpreads.length > 0)) { | ||
language_1.propertyDeclaration(generator, property, () => { | ||
const fields = property.fields.map(field => { | ||
if (field.fieldName === '__typename') { | ||
if (field.fieldName === "__typename") { | ||
const objectTypeName = getObjectTypeName(property.fieldType || property.type); | ||
@@ -292,4 +311,7 @@ return Object.assign({}, field, { typeName: objectTypeName, type: { name: objectTypeName } }); | ||
const type = graphql_1.getNamedType(property.fieldType || property.type); | ||
if (type instanceof graphql_1.GraphQLUnionType || type instanceof graphql_1.GraphQLInterfaceType) { | ||
return generator.context.schema.getPossibleTypes(type).map(type => type.name); | ||
if (type instanceof graphql_1.GraphQLUnionType || | ||
type instanceof graphql_1.GraphQLInterfaceType) { | ||
return generator.context.schema | ||
.getPossibleTypes(type) | ||
.map(type => type.name); | ||
} | ||
@@ -302,6 +324,5 @@ return []; | ||
} | ||
const leadingSpace = ' '.repeat(2 * depth); | ||
const leadingSpace = " ".repeat(2 * depth); | ||
generator.printOnNewline(`${leadingSpace}/**`); | ||
description.split('\n') | ||
.forEach(line => { | ||
description.split("\n").forEach(line => { | ||
generator.printOnNewline(`${leadingSpace} * ${line.trim()}`); | ||
@@ -308,0 +329,0 @@ }); |
@@ -1,1 +0,1 @@ | ||
export { generateSource } from './codeGeneration'; | ||
export { generateSource } from "./codeGeneration"; |
@@ -1,2 +0,2 @@ | ||
import { LegacyInlineFragment } from 'apollo-codegen-core/lib/compiler/legacyIR'; | ||
import { LegacyInlineFragment } from "apollo-codegen-core/lib/compiler/legacyIR"; | ||
import CodeGenerator from "apollo-codegen-core/lib/utilities/CodeGenerator"; | ||
@@ -3,0 +3,0 @@ import { GraphQLType } from "graphql"; |
@@ -16,9 +16,9 @@ "use strict"; | ||
if (noBrackets) { | ||
generator.withinBlock(closure, '', ''); | ||
generator.withinBlock(closure, "", ""); | ||
} | ||
else { | ||
generator.withinBlock(closure, '{', '}'); | ||
generator.withinBlock(closure, "{", "}"); | ||
} | ||
generator.popScope(); | ||
generator.print(';'); | ||
generator.print(";"); | ||
} | ||
@@ -32,7 +32,7 @@ exports.interfaceDeclaration = interfaceDeclaration; | ||
if (isNullable && isInput) { | ||
generator.print('?'); | ||
generator.print("?"); | ||
} | ||
generator.print(': '); | ||
generator.print(": "); | ||
if (isArray) { | ||
generator.print(' Array<'); | ||
generator.print(" Array<"); | ||
} | ||
@@ -44,8 +44,8 @@ generator.pushScope({ typeName: name }); | ||
if (isArrayElementNullable) { | ||
generator.print(' | null'); | ||
generator.print(" | null"); | ||
} | ||
generator.print(' >'); | ||
generator.print(" >"); | ||
} | ||
if (isNullable) { | ||
generator.print(' | null'); | ||
generator.print(" | null"); | ||
} | ||
@@ -56,11 +56,12 @@ } | ||
if (isInput && isNullable) { | ||
generator.print('?'); | ||
generator.print("?"); | ||
} | ||
generator.print(`: ${typeName || type && types_1.typeNameFromGraphQLType(generator.context, type)}`); | ||
generator.print(`: ${typeName || | ||
(type && types_1.typeNameFromGraphQLType(generator.context, type))}`); | ||
} | ||
generator.print(','); | ||
generator.print(","); | ||
} | ||
exports.propertyDeclaration = propertyDeclaration; | ||
function propertySetsDeclaration(generator, property, propertySets, standalone = false) { | ||
const { description, fieldName, propertyName, isNullable, isArray, isArrayElementNullable, } = property; | ||
const { description, fieldName, propertyName, isNullable, isArray, isArrayElementNullable } = property; | ||
const name = fieldName || propertyName; | ||
@@ -72,3 +73,3 @@ codeGeneration_1.printDocComment(generator, description); | ||
if (isArray) { | ||
generator.print(' Array<'); | ||
generator.print(" Array<"); | ||
} | ||
@@ -82,18 +83,18 @@ generator.pushScope({ typeName: name }); | ||
if (index !== propertySets.length - 1) { | ||
generator.print(' |'); | ||
generator.print(" |"); | ||
} | ||
}); | ||
}, '(', ')'); | ||
}, "(", ")"); | ||
generator.popScope(); | ||
if (isArray) { | ||
if (isArrayElementNullable) { | ||
generator.print(' | null'); | ||
generator.print(" | null"); | ||
} | ||
generator.print(' >'); | ||
generator.print(" >"); | ||
} | ||
if (isNullable) { | ||
generator.print(' | null'); | ||
generator.print(" | null"); | ||
} | ||
if (!standalone) { | ||
generator.print(','); | ||
generator.print(","); | ||
} | ||
@@ -100,0 +101,0 @@ } |
@@ -1,3 +0,3 @@ | ||
import { LegacyCompilerContext } from 'apollo-codegen-core/lib/compiler/legacyIR'; | ||
import { GraphQLType } from 'graphql'; | ||
import { LegacyCompilerContext } from "apollo-codegen-core/lib/compiler/legacyIR"; | ||
import { GraphQLType } from "graphql"; | ||
export declare function typeNameFromGraphQLType(context: LegacyCompilerContext, type: GraphQLType, bareTypeName?: string | null, nullable?: boolean): string; |
@@ -5,7 +5,7 @@ "use strict"; | ||
const builtInScalarMap = { | ||
[graphql_1.GraphQLString.name]: 'string', | ||
[graphql_1.GraphQLInt.name]: 'number', | ||
[graphql_1.GraphQLFloat.name]: 'number', | ||
[graphql_1.GraphQLBoolean.name]: 'boolean', | ||
[graphql_1.GraphQLID.name]: 'string', | ||
[graphql_1.GraphQLString.name]: "string", | ||
[graphql_1.GraphQLInt.name]: "number", | ||
[graphql_1.GraphQLFloat.name]: "number", | ||
[graphql_1.GraphQLBoolean.name]: "boolean", | ||
[graphql_1.GraphQLID.name]: "string" | ||
}; | ||
@@ -21,3 +21,7 @@ function typeNameFromGraphQLType(context, type, bareTypeName, nullable = true) { | ||
else if (type instanceof graphql_1.GraphQLScalarType) { | ||
typeName = builtInScalarMap[type.name] || (context.options.passthroughCustomScalars ? context.options.customScalarsPrefix + type.name : builtInScalarMap[graphql_1.GraphQLString.name]); | ||
typeName = | ||
builtInScalarMap[type.name] || | ||
(context.options.passthroughCustomScalars | ||
? context.options.customScalarsPrefix + type.name | ||
: builtInScalarMap[graphql_1.GraphQLString.name]); | ||
} | ||
@@ -27,5 +31,5 @@ else { | ||
} | ||
return nullable ? typeName + ' | null' : typeName; | ||
return nullable ? typeName + " | null" : typeName; | ||
} | ||
exports.typeNameFromGraphQLType = typeNameFromGraphQLType; | ||
//# sourceMappingURL=types.js.map |
{ | ||
"name": "apollo-codegen-typescript-legacy", | ||
"description": "Legacy TypeScript generator module for Apollo Codegen", | ||
"version": "0.27.0", | ||
"main": "./lib/index.js", | ||
"version": "0.27.3", | ||
"author": "Apollo GraphQL <opensource@apollographql.com>", | ||
"license": "MIT", | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/apollographql/apollo-cli.git" | ||
}, | ||
"homepage": "https://github.com/apollographql/apollo-cli", | ||
"bugs": "https://github.com/apollographql/apollo-cli/issues", | ||
"main": "lib/index.js", | ||
"types": "lib/index.d.ts", | ||
"scripts": { | ||
"clean": "rm -rf lib", | ||
"prebuild": "npm run clean", | ||
"build": "tsc -p .", | ||
"watch": "tsc -w -p .", | ||
"test": "./node_modules/.bin/jest", | ||
"prepack": "npm run build" | ||
"build": "tsc", | ||
"prepare": "npm run build" | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "apollographql/apollo-cli" | ||
}, | ||
"author": "Martijn Walraven <martijn@martijnwalraven.com>", | ||
"license": "MIT", | ||
"engines": { | ||
"node": ">=6.0", | ||
"npm": ">=5.0" | ||
"node": ">=8", | ||
"npm": ">=6" | ||
}, | ||
"devDependencies": { | ||
"@types/graphql": "^0.13.1", | ||
"@types/inflected": "^1.1.29", | ||
"graphql": "^0.13.1", | ||
"jest": "^22.0.3", | ||
"jest-matcher-utils": "^22.0.3", | ||
"lerna": "^2.11.0", | ||
"ts-jest": "^22.0.0", | ||
"typescript": "^2.6.2" | ||
}, | ||
"dependencies": { | ||
"apollo-codegen-core": "^0.27.0" | ||
"apollo-codegen-core": "0.27.3" | ||
}, | ||
@@ -64,3 +55,4 @@ "jest": { | ||
} | ||
} | ||
}, | ||
"gitHead": "e8d31998beae239ea92e140c670f45412ca0ffd4" | ||
} |
@@ -1,14 +0,18 @@ | ||
import { parse } from 'graphql'; | ||
import { parse } from "graphql"; | ||
import { generateSource } from '../codeGeneration'; | ||
import { generateSource } from "../codeGeneration"; | ||
import { loadSchema } from 'apollo-codegen-core/lib/loading'; | ||
const starWarsSchema = loadSchema(require.resolve('../../../common-test/fixtures/starwars/schema.json')); | ||
const miscSchema = loadSchema(require.resolve('../../../common-test/fixtures/misc/schema.json')); | ||
import { loadSchema } from "apollo-codegen-core/lib/loading"; | ||
const starWarsSchema = loadSchema( | ||
require.resolve("../../../common-test/fixtures/starwars/schema.json") | ||
); | ||
const miscSchema = loadSchema( | ||
require.resolve("../../../common-test/fixtures/misc/schema.json") | ||
); | ||
import CodeGenerator from 'apollo-codegen-core/lib/utilities/CodeGenerator'; | ||
import CodeGenerator from "apollo-codegen-core/lib/utilities/CodeGenerator"; | ||
import { compileToLegacyIR } from 'apollo-codegen-core/lib/compiler/legacyIR'; | ||
import { compileToLegacyIR } from "apollo-codegen-core/lib/compiler/legacyIR"; | ||
describe('TypeScript code generation', function() { | ||
describe("TypeScript code generation", function() { | ||
let generator; | ||
@@ -24,7 +28,7 @@ let compileFromSource; | ||
typesUsed: {} | ||
} | ||
}; | ||
generator = new CodeGenerator(context); | ||
compileFromSource = (source) => { | ||
compileFromSource = source => { | ||
const document = parse(source); | ||
@@ -39,3 +43,3 @@ const context = compileToLegacyIR(schema, document, { | ||
addFragment = (fragment) => { | ||
addFragment = fragment => { | ||
generator.context.fragments[fragment.fragmentName] = fragment; | ||
@@ -47,3 +51,3 @@ }; | ||
describe('#generateSource()', function() { | ||
describe("#generateSource()", function() { | ||
test(`should generate simple query operations`, function() { | ||
@@ -189,3 +193,3 @@ const { compileFromSource } = setup(starWarsSchema); | ||
test('should handle single line comments', () => { | ||
test("should handle single line comments", () => { | ||
const { compileFromSource } = setup(miscSchema); | ||
@@ -204,3 +208,3 @@ const context = compileFromSource(` | ||
test('should handle multi-line comments', () => { | ||
test("should handle multi-line comments", () => { | ||
const { compileFromSource } = setup(miscSchema); | ||
@@ -219,3 +223,3 @@ const context = compileFromSource(` | ||
test('should handle comments in enums', () => { | ||
test("should handle comments in enums", () => { | ||
const { compileFromSource } = setup(miscSchema); | ||
@@ -234,3 +238,3 @@ const context = compileFromSource(` | ||
test('should handle interfaces at root', () => { | ||
test("should handle interfaces at root", () => { | ||
const { compileFromSource } = setup(miscSchema); | ||
@@ -255,3 +259,3 @@ const context = compileFromSource(` | ||
test('should handle unions at root', () => { | ||
test("should handle unions at root", () => { | ||
const { compileFromSource } = setup(miscSchema); | ||
@@ -275,3 +279,3 @@ const context = compileFromSource(` | ||
test('should have __typename value matching fragment type on generic type', () => { | ||
test("should have __typename value matching fragment type on generic type", () => { | ||
const { compileFromSource } = setup(starWarsSchema); | ||
@@ -295,3 +299,3 @@ const context = compileFromSource(` | ||
test('should have __typename value matching fragment type on specific type', () => { | ||
test("should have __typename value matching fragment type on specific type", () => { | ||
const { compileFromSource } = setup(starWarsSchema); | ||
@@ -315,3 +319,3 @@ const context = compileFromSource(` | ||
test('should have __typename value in nested property', () => { | ||
test("should have __typename value in nested property", () => { | ||
const { compileFromSource } = setup(starWarsSchema); | ||
@@ -318,0 +322,0 @@ const context = compileFromSource(` |
@@ -7,3 +7,3 @@ import { | ||
LegacyOperation | ||
} from 'apollo-codegen-core/lib/compiler/legacyIR'; | ||
} from "apollo-codegen-core/lib/compiler/legacyIR"; | ||
@@ -23,9 +23,7 @@ import { | ||
GraphQLObjectType | ||
} from 'graphql' | ||
} from "graphql"; | ||
import { | ||
sortEnumValues | ||
} from 'apollo-codegen-core/lib/utilities/graphql'; | ||
import { sortEnumValues } from "apollo-codegen-core/lib/utilities/graphql"; | ||
import CodeGenerator from 'apollo-codegen-core/lib/utilities/CodeGenerator'; | ||
import CodeGenerator from "apollo-codegen-core/lib/utilities/CodeGenerator"; | ||
@@ -37,7 +35,5 @@ import { | ||
Property | ||
} from './language'; | ||
} from "./language"; | ||
import { | ||
typeNameFromGraphQLType, | ||
} from './types'; | ||
import { typeNameFromGraphQLType } from "./types"; | ||
@@ -47,4 +43,6 @@ export function generateSource(context: LegacyCompilerContext) { | ||
generator.printOnNewline('/* tslint:disable */'); | ||
generator.printOnNewline('// This file was automatically generated and should not be edited.'); | ||
generator.printOnNewline("/* tslint:disable */"); | ||
generator.printOnNewline( | ||
"// This file was automatically generated and should not be edited." | ||
); | ||
@@ -67,3 +65,6 @@ context.typesUsed.forEach(type => | ||
export function typeDeclarationForGraphQLType(generator: CodeGenerator, type: GraphQLType) { | ||
export function typeDeclarationForGraphQLType( | ||
generator: CodeGenerator, | ||
type: GraphQLType | ||
) { | ||
if (type instanceof GraphQLEnumType) { | ||
@@ -76,3 +77,6 @@ enumerationDeclaration(generator, type); | ||
function enumerationDeclaration(generator: CodeGenerator, type: GraphQLEnumType) { | ||
function enumerationDeclaration( | ||
generator: CodeGenerator, | ||
type: GraphQLEnumType | ||
) { | ||
const { name, description } = type; | ||
@@ -84,5 +88,5 @@ const values = type.getValues(); | ||
generator.printOnNewline(`export enum ${name} {`); | ||
sortEnumValues(values).forEach((value) => { | ||
sortEnumValues(values).forEach(value => { | ||
printDocComment(generator, value.description || undefined, 1); | ||
generator.printOnNewline(` ${value.value} = "${value.value}",`) | ||
generator.printOnNewline(` ${value.value} = "${value.value}",`); | ||
}); | ||
@@ -98,19 +102,32 @@ generator.printOnNewline(`}`); | ||
const interfaceName = type.name; | ||
interfaceDeclaration(generator, { | ||
interfaceName, | ||
}, () => { | ||
const properties = propertiesFromFields(generator.context, Object.values(type.getFields())); | ||
propertyDeclarations(generator, properties, true); | ||
}); | ||
interfaceDeclaration( | ||
generator, | ||
{ | ||
interfaceName | ||
}, | ||
() => { | ||
const properties = propertiesFromFields( | ||
generator.context, | ||
Object.values(type.getFields()) | ||
); | ||
propertyDeclarations(generator, properties, true); | ||
} | ||
); | ||
} | ||
function interfaceNameFromOperation({ operationName, operationType }: { operationName: string, operationType: string }) { | ||
function interfaceNameFromOperation({ | ||
operationName, | ||
operationType | ||
}: { | ||
operationName: string; | ||
operationType: string; | ||
}) { | ||
switch (operationType) { | ||
case 'query': | ||
case "query": | ||
return `${operationName}Query`; | ||
break; | ||
case 'mutation': | ||
case "mutation": | ||
return `${operationName}Mutation`; | ||
break; | ||
case 'subscription': | ||
case "subscription": | ||
return `${operationName}Subscription`; | ||
@@ -125,7 +142,3 @@ break; | ||
generator: CodeGenerator, | ||
{ | ||
operationName, | ||
operationType, | ||
variables | ||
}: LegacyOperation | ||
{ operationName, operationType, variables }: LegacyOperation | ||
) { | ||
@@ -135,10 +148,17 @@ if (!variables || variables.length < 1) { | ||
} | ||
const interfaceName = `${interfaceNameFromOperation({ operationName, operationType })}Variables`; | ||
const interfaceName = `${interfaceNameFromOperation({ | ||
operationName, | ||
operationType | ||
})}Variables`; | ||
interfaceDeclaration(generator, { | ||
interfaceName, | ||
}, () => { | ||
const properties = propertiesFromFields(generator.context, variables); | ||
propertyDeclarations(generator, properties, true); | ||
}); | ||
interfaceDeclaration( | ||
generator, | ||
{ | ||
interfaceName | ||
}, | ||
() => { | ||
const properties = propertiesFromFields(generator.context, variables); | ||
propertyDeclarations(generator, properties, true); | ||
} | ||
); | ||
} | ||
@@ -157,3 +177,6 @@ | ||
if (type instanceof GraphQLUnionType) { | ||
return type.getTypes().map(type => getObjectTypeName(type)).join(" | "); | ||
return type | ||
.getTypes() | ||
.map(type => getObjectTypeName(type)) | ||
.join(" | "); | ||
} | ||
@@ -164,21 +187,23 @@ return `"${type.name}"`; | ||
function updateTypeNameField(rootField: LegacyField): LegacyField { | ||
const fields = rootField.fields && rootField.fields.map(field => { | ||
if (field.fieldName === '__typename') { | ||
const objectTypeName = getObjectTypeName(rootField.type); | ||
return { | ||
...field, | ||
typeName: objectTypeName, | ||
type: { name: objectTypeName }, | ||
}; | ||
} | ||
const fields = | ||
rootField.fields && | ||
rootField.fields.map(field => { | ||
if (field.fieldName === "__typename") { | ||
const objectTypeName = getObjectTypeName(rootField.type); | ||
return { | ||
...field, | ||
typeName: objectTypeName, | ||
type: { name: objectTypeName } | ||
}; | ||
} | ||
if (field.fields) { | ||
return updateTypeNameField(field); | ||
} | ||
if (field.fields) { | ||
return updateTypeNameField(field); | ||
} | ||
return field; | ||
}); | ||
return field; | ||
}); | ||
return { | ||
...rootField, | ||
fields, | ||
fields | ||
} as LegacyField; | ||
@@ -189,16 +214,19 @@ } | ||
generator: CodeGenerator, | ||
{ | ||
{ operationName, operationType, fields }: LegacyOperation | ||
) { | ||
const interfaceName = interfaceNameFromOperation({ | ||
operationName, | ||
operationType, | ||
fields | ||
}: LegacyOperation | ||
) { | ||
const interfaceName = interfaceNameFromOperation({ operationName, operationType }); | ||
operationType | ||
}); | ||
fields = fields.map(field => updateTypeNameField(field)); | ||
const properties = propertiesFromFields(generator.context, fields); | ||
interfaceDeclaration(generator, { | ||
interfaceName, | ||
}, () => { | ||
propertyDeclarations(generator, properties); | ||
}); | ||
interfaceDeclaration( | ||
generator, | ||
{ | ||
interfaceName | ||
}, | ||
() => { | ||
propertyDeclarations(generator, properties); | ||
} | ||
); | ||
} | ||
@@ -210,18 +238,15 @@ | ||
) { | ||
const { | ||
fragmentName, | ||
typeCondition, | ||
fields, | ||
inlineFragments | ||
} = fragment; | ||
const { fragmentName, typeCondition, fields, inlineFragments } = fragment; | ||
const interfaceName = `${fragmentName}Fragment`; | ||
interfaceDeclaration(generator, { | ||
interfaceName, | ||
noBrackets: isAbstractType(typeCondition) | ||
}, () => { | ||
if (isAbstractType(typeCondition)) { | ||
const propertySets = fragment.possibleTypes | ||
.map(type => { | ||
interfaceDeclaration( | ||
generator, | ||
{ | ||
interfaceName, | ||
noBrackets: isAbstractType(typeCondition) | ||
}, | ||
() => { | ||
if (isAbstractType(typeCondition)) { | ||
const propertySets = fragment.possibleTypes.map(type => { | ||
// NOTE: inlineFragment currently consists of the merged fields | ||
@@ -231,3 +256,3 @@ // from both inline fragments and fragment spreads. | ||
const inlineFragment = inlineFragments.find(inlineFragment => { | ||
return inlineFragment.typeCondition.toString() == type.toString() | ||
return inlineFragment.typeCondition.toString() == type.toString(); | ||
}); | ||
@@ -237,8 +262,10 @@ | ||
const fields = inlineFragment.fields.map(field => { | ||
if (field.fieldName === '__typename') { | ||
if (field.fieldName === "__typename") { | ||
return { | ||
...field, | ||
typeName: `"${inlineFragment.typeCondition}"`, | ||
type: { name: `"${inlineFragment.typeCondition}"` } as GraphQLType | ||
} | ||
type: { | ||
name: `"${inlineFragment.typeCondition}"` | ||
} as GraphQLType | ||
}; | ||
} else { | ||
@@ -252,3 +279,3 @@ return field; | ||
const fragmentFields = fields.map(field => { | ||
if (field.fieldName === '__typename') { | ||
if (field.fieldName === "__typename") { | ||
return { | ||
@@ -258,3 +285,3 @@ ...field, | ||
type: { name: `"${type}"` } as GraphQLType | ||
} | ||
}; | ||
} else { | ||
@@ -269,47 +296,66 @@ return field; | ||
propertySetsDeclaration(generator, fragment, propertySets, true); | ||
} else { | ||
const fragmentFields = fields.map(field => { | ||
if (field.fieldName === '__typename') { | ||
return { | ||
...field, | ||
typeName: `"${fragment.typeCondition}"`, | ||
type: { name: `"${fragment.typeCondition}"` } as GraphQLType | ||
propertySetsDeclaration(generator, fragment, propertySets, true); | ||
} else { | ||
const fragmentFields = fields.map(field => { | ||
if (field.fieldName === "__typename") { | ||
return { | ||
...field, | ||
typeName: `"${fragment.typeCondition}"`, | ||
type: { name: `"${fragment.typeCondition}"` } as GraphQLType | ||
}; | ||
} else { | ||
return field; | ||
} | ||
} else { | ||
return field; | ||
} | ||
}); | ||
}); | ||
const properties = propertiesFromFields(generator.context, fragmentFields) | ||
propertyDeclarations(generator, properties); | ||
const properties = propertiesFromFields( | ||
generator.context, | ||
fragmentFields | ||
); | ||
propertyDeclarations(generator, properties); | ||
} | ||
} | ||
}); | ||
); | ||
} | ||
export function propertiesFromFields(context: LegacyCompilerContext, fields: { | ||
name?: string, | ||
type: GraphQLType, | ||
responseName?: string, | ||
description?: string | undefined | null, | ||
fragmentSpreads?: any, | ||
inlineFragments?: LegacyInlineFragment[], | ||
fieldName?: string | ||
}[]) { | ||
return fields.map(field => propertyFromField( | ||
context, { ...field, description: field.description || undefined } | ||
)); | ||
export function propertiesFromFields( | ||
context: LegacyCompilerContext, | ||
fields: { | ||
name?: string; | ||
type: GraphQLType; | ||
responseName?: string; | ||
description?: string | undefined | null; | ||
fragmentSpreads?: any; | ||
inlineFragments?: LegacyInlineFragment[]; | ||
fieldName?: string; | ||
}[] | ||
) { | ||
return fields.map(field => | ||
propertyFromField(context, { | ||
...field, | ||
description: field.description || undefined | ||
}) | ||
); | ||
} | ||
export function propertyFromField(context: LegacyCompilerContext, field: { | ||
name?: string, | ||
type: GraphQLType, | ||
fields?: any[], | ||
responseName?: string, | ||
description?: string, | ||
fragmentSpreads?: any, | ||
inlineFragments?: LegacyInlineFragment[], | ||
fieldName?: string | ||
}): Property { | ||
let { name: fieldName, type: fieldType, description, fragmentSpreads, inlineFragments } = field; | ||
export function propertyFromField( | ||
context: LegacyCompilerContext, | ||
field: { | ||
name?: string; | ||
type: GraphQLType; | ||
fields?: any[]; | ||
responseName?: string; | ||
description?: string; | ||
fragmentSpreads?: any; | ||
inlineFragments?: LegacyInlineFragment[]; | ||
fieldName?: string; | ||
} | ||
): Property { | ||
let { | ||
name: fieldName, | ||
type: fieldType, | ||
description, | ||
fragmentSpreads, | ||
inlineFragments | ||
} = field; | ||
fieldName = fieldName || field.responseName; | ||
@@ -335,5 +381,10 @@ | ||
isArrayElementNullable = !(fieldType.ofType instanceof GraphQLNonNull); | ||
} else if (fieldType instanceof GraphQLNonNull && fieldType.ofType instanceof GraphQLList) { | ||
isArray = true | ||
isArrayElementNullable = !(fieldType.ofType.ofType instanceof GraphQLNonNull); | ||
} else if ( | ||
fieldType instanceof GraphQLNonNull && | ||
fieldType.ofType instanceof GraphQLList | ||
) { | ||
isArray = true; | ||
isArrayElementNullable = !( | ||
fieldType.ofType.ofType instanceof GraphQLNonNull | ||
); | ||
} | ||
@@ -346,12 +397,33 @@ | ||
isComposite: true, | ||
fragmentSpreads, inlineFragments, fieldType, | ||
isArray, isNullable, isArrayElementNullable, | ||
fragmentSpreads, | ||
inlineFragments, | ||
fieldType, | ||
isArray, | ||
isNullable, | ||
isArrayElementNullable | ||
}; | ||
} else { | ||
if (field.fieldName === '__typename') { | ||
if (field.fieldName === "__typename") { | ||
const typeName = typeNameFromGraphQLType(context, fieldType, null, false); | ||
return { ...property, typeName, isComposite: false, fieldType, isNullable: false }; | ||
return { | ||
...property, | ||
typeName, | ||
isComposite: false, | ||
fieldType, | ||
isNullable: false | ||
}; | ||
} else { | ||
const typeName = typeNameFromGraphQLType(context, fieldType, null, isNullable); | ||
return { ...property, typeName, isComposite: false, fieldType, isNullable }; | ||
const typeName = typeNameFromGraphQLType( | ||
context, | ||
fieldType, | ||
null, | ||
isNullable | ||
); | ||
return { | ||
...property, | ||
typeName, | ||
isComposite: false, | ||
fieldType, | ||
isNullable | ||
}; | ||
} | ||
@@ -361,21 +433,28 @@ } | ||
export function propertyDeclarations(generator: CodeGenerator, properties: Property[], isInput = false) { | ||
export function propertyDeclarations( | ||
generator: CodeGenerator, | ||
properties: Property[], | ||
isInput = false | ||
) { | ||
if (!properties) return; | ||
properties.forEach(property => { | ||
if (isAbstractType(getNamedType(property.type || property.fieldType!))) { | ||
const propertySets = getPossibleTypeNames(generator, property) | ||
.map(type => { | ||
const inlineFragment = property.inlineFragments && property.inlineFragments.find(inlineFragment => { | ||
return inlineFragment.typeCondition.toString() == type | ||
}); | ||
const propertySets = getPossibleTypeNames(generator, property).map( | ||
type => { | ||
const inlineFragment = | ||
property.inlineFragments && | ||
property.inlineFragments.find(inlineFragment => { | ||
return inlineFragment.typeCondition.toString() == type; | ||
}); | ||
if (inlineFragment) { | ||
const fields = inlineFragment.fields.map(field => { | ||
if (field.fieldName === '__typename') { | ||
if (field.fieldName === "__typename") { | ||
return { | ||
...field, | ||
typeName: `"${inlineFragment.typeCondition}"`, | ||
type: { name: `"${inlineFragment.typeCondition}"` } as GraphQLType | ||
} | ||
type: { | ||
name: `"${inlineFragment.typeCondition}"` | ||
} as GraphQLType | ||
}; | ||
} else { | ||
@@ -389,3 +468,3 @@ return field; | ||
const fields = property.fields!.map(field => { | ||
if (field.fieldName === '__typename') { | ||
if (field.fieldName === "__typename") { | ||
return { | ||
@@ -395,3 +474,3 @@ ...field, | ||
type: { name: `"${type}"` } as GraphQLType | ||
} | ||
}; | ||
} else { | ||
@@ -404,14 +483,18 @@ return field; | ||
} | ||
}); | ||
} | ||
); | ||
propertySetsDeclaration(generator, property, propertySets); | ||
} else { | ||
if (property.fields && property.fields.length > 0 | ||
|| property.inlineFragments && property.inlineFragments.length > 0 | ||
|| property.fragmentSpreads && property.fragmentSpreads.length > 0 | ||
if ( | ||
(property.fields && property.fields.length > 0) || | ||
(property.inlineFragments && property.inlineFragments.length > 0) || | ||
(property.fragmentSpreads && property.fragmentSpreads.length > 0) | ||
) { | ||
propertyDeclaration(generator, property, () => { | ||
const fields = property.fields!.map(field => { | ||
if (field.fieldName === '__typename') { | ||
const objectTypeName = getObjectTypeName(property.fieldType || property.type!); | ||
if (field.fieldName === "__typename") { | ||
const objectTypeName = getObjectTypeName( | ||
property.fieldType || property.type! | ||
); | ||
return { | ||
@@ -421,3 +504,3 @@ ...field, | ||
type: { name: objectTypeName } | ||
} | ||
}; | ||
} else { | ||
@@ -442,7 +525,15 @@ return field; | ||
*/ | ||
function getPossibleTypeNames(generator: CodeGenerator<LegacyCompilerContext>, property: Property) { | ||
function getPossibleTypeNames( | ||
generator: CodeGenerator<LegacyCompilerContext>, | ||
property: Property | ||
) { | ||
const type = getNamedType(property.fieldType || property.type!); | ||
if (type instanceof GraphQLUnionType || type instanceof GraphQLInterfaceType) { | ||
return generator.context.schema.getPossibleTypes(type).map(type => type.name); | ||
if ( | ||
type instanceof GraphQLUnionType || | ||
type instanceof GraphQLInterfaceType | ||
) { | ||
return generator.context.schema | ||
.getPossibleTypes(type) | ||
.map(type => type.name); | ||
} | ||
@@ -453,3 +544,7 @@ | ||
export function printDocComment(generator: CodeGenerator, description?: string, depth: number = 0): void { | ||
export function printDocComment( | ||
generator: CodeGenerator, | ||
description?: string, | ||
depth: number = 0 | ||
): void { | ||
if (!description) { | ||
@@ -459,10 +554,9 @@ return; | ||
const leadingSpace = ' '.repeat(2 * depth); | ||
const leadingSpace = " ".repeat(2 * depth); | ||
generator.printOnNewline(`${leadingSpace}/**`); | ||
description.split('\n') | ||
.forEach(line => { | ||
generator.printOnNewline(`${leadingSpace} * ${line.trim()}`); | ||
}); | ||
description.split("\n").forEach(line => { | ||
generator.printOnNewline(`${leadingSpace} * ${line.trim()}`); | ||
}); | ||
generator.printOnNewline(`${leadingSpace} */`); | ||
} |
@@ -1,1 +0,1 @@ | ||
export { generateSource } from './codeGeneration'; | ||
export { generateSource } from "./codeGeneration"; |
@@ -1,5 +0,5 @@ | ||
import { LegacyInlineFragment } from 'apollo-codegen-core/lib/compiler/legacyIR'; | ||
import { LegacyInlineFragment } from "apollo-codegen-core/lib/compiler/legacyIR"; | ||
import { propertyDeclarations, printDocComment } from './codeGeneration'; | ||
import { typeNameFromGraphQLType } from './types'; | ||
import { propertyDeclarations, printDocComment } from "./codeGeneration"; | ||
import { typeNameFromGraphQLType } from "./types"; | ||
@@ -10,23 +10,26 @@ import CodeGenerator from "apollo-codegen-core/lib/utilities/CodeGenerator"; | ||
export interface Property { | ||
fieldName?: string, | ||
fieldType?: GraphQLType, | ||
propertyName?: string, | ||
type?: GraphQLType, | ||
description?: string, | ||
typeName?: string, | ||
isComposite?: boolean, | ||
isNullable?: boolean, | ||
fields?: any[], | ||
inlineFragments?: LegacyInlineFragment[], | ||
fragmentSpreads?: any, | ||
isInput?: boolean, | ||
isArray?: boolean, | ||
isArrayElementNullable?: boolean | null, | ||
fieldName?: string; | ||
fieldType?: GraphQLType; | ||
propertyName?: string; | ||
type?: GraphQLType; | ||
description?: string; | ||
typeName?: string; | ||
isComposite?: boolean; | ||
isNullable?: boolean; | ||
fields?: any[]; | ||
inlineFragments?: LegacyInlineFragment[]; | ||
fragmentSpreads?: any; | ||
isInput?: boolean; | ||
isArray?: boolean; | ||
isArrayElementNullable?: boolean | null; | ||
} | ||
export function interfaceDeclaration(generator: CodeGenerator, { | ||
interfaceName, | ||
noBrackets | ||
}: { interfaceName: string, noBrackets?: boolean }, | ||
closure: () => void) { | ||
export function interfaceDeclaration( | ||
generator: CodeGenerator, | ||
{ | ||
interfaceName, | ||
noBrackets | ||
}: { interfaceName: string; noBrackets?: boolean }, | ||
closure: () => void | ||
) { | ||
generator.printNewlineIfNeeded(); | ||
@@ -42,21 +45,25 @@ generator.printNewline(); | ||
if (noBrackets) { | ||
generator.withinBlock(closure, '', ''); | ||
generator.withinBlock(closure, "", ""); | ||
} else { | ||
generator.withinBlock(closure, '{', '}'); | ||
generator.withinBlock(closure, "{", "}"); | ||
} | ||
generator.popScope(); | ||
generator.print(';'); | ||
generator.print(";"); | ||
} | ||
export function propertyDeclaration(generator: CodeGenerator, { | ||
fieldName, | ||
type, | ||
propertyName, | ||
typeName, | ||
description, | ||
isInput, | ||
isArray, | ||
isNullable, | ||
isArrayElementNullable | ||
}: Property, closure?: () => void) { | ||
export function propertyDeclaration( | ||
generator: CodeGenerator, | ||
{ | ||
fieldName, | ||
type, | ||
propertyName, | ||
typeName, | ||
description, | ||
isInput, | ||
isArray, | ||
isNullable, | ||
isArrayElementNullable | ||
}: Property, | ||
closure?: () => void | ||
) { | ||
const name = fieldName || propertyName; | ||
@@ -70,8 +77,8 @@ | ||
if (isNullable && isInput) { | ||
generator.print('?'); | ||
generator.print("?"); | ||
} | ||
generator.print(': '); | ||
generator.print(": "); | ||
if (isArray) { | ||
generator.print(' Array<'); | ||
generator.print(" Array<"); | ||
} | ||
@@ -86,25 +93,36 @@ generator.pushScope({ typeName: name }); | ||
if (isArrayElementNullable) { | ||
generator.print(' | null'); | ||
generator.print(" | null"); | ||
} | ||
generator.print(' >'); | ||
generator.print(" >"); | ||
} | ||
if (isNullable) { | ||
generator.print(' | null'); | ||
generator.print(" | null"); | ||
} | ||
} else { | ||
generator.printOnNewline(name); | ||
if (isInput && isNullable) { | ||
generator.print('?') | ||
generator.print("?"); | ||
} | ||
generator.print(`: ${typeName || type && typeNameFromGraphQLType(generator.context, type)}`); | ||
generator.print( | ||
`: ${typeName || | ||
(type && typeNameFromGraphQLType(generator.context, type))}` | ||
); | ||
} | ||
generator.print(','); | ||
generator.print(","); | ||
} | ||
export function propertySetsDeclaration(generator: CodeGenerator, property: Property, propertySets: Property[][], standalone = false) { | ||
export function propertySetsDeclaration( | ||
generator: CodeGenerator, | ||
property: Property, | ||
propertySets: Property[][], | ||
standalone = false | ||
) { | ||
const { | ||
description, fieldName, propertyName, | ||
isNullable, isArray, isArrayElementNullable, | ||
description, | ||
fieldName, | ||
propertyName, | ||
isNullable, | ||
isArray, | ||
isArrayElementNullable | ||
} = property; | ||
@@ -120,3 +138,3 @@ const name = fieldName || propertyName; | ||
if (isArray) { | ||
generator.print(' Array<'); | ||
generator.print(" Array<"); | ||
} | ||
@@ -126,12 +144,16 @@ | ||
generator.withinBlock(() => { | ||
propertySets.forEach((propertySet, index, propertySets) => { | ||
generator.withinBlock(() => { | ||
propertyDeclarations(generator, propertySet); | ||
generator.withinBlock( | ||
() => { | ||
propertySets.forEach((propertySet, index, propertySets) => { | ||
generator.withinBlock(() => { | ||
propertyDeclarations(generator, propertySet); | ||
}); | ||
if (index !== propertySets.length - 1) { | ||
generator.print(" |"); | ||
} | ||
}); | ||
if (index !== propertySets.length - 1) { | ||
generator.print(' |'); | ||
} | ||
}) | ||
}, '(', ')'); | ||
}, | ||
"(", | ||
")" | ||
); | ||
@@ -142,14 +164,14 @@ generator.popScope(); | ||
if (isArrayElementNullable) { | ||
generator.print(' | null'); | ||
generator.print(" | null"); | ||
} | ||
generator.print(' >'); | ||
generator.print(" >"); | ||
} | ||
if (isNullable) { | ||
generator.print(' | null'); | ||
generator.print(" | null"); | ||
} | ||
if (!standalone) { | ||
generator.print(','); | ||
generator.print(","); | ||
} | ||
} |
@@ -1,2 +0,2 @@ | ||
import { LegacyCompilerContext } from 'apollo-codegen-core/lib/compiler/legacyIR'; | ||
import { LegacyCompilerContext } from "apollo-codegen-core/lib/compiler/legacyIR"; | ||
@@ -13,15 +13,20 @@ import { | ||
GraphQLType | ||
} from 'graphql'; | ||
} from "graphql"; | ||
const builtInScalarMap = { | ||
[GraphQLString.name]: 'string', | ||
[GraphQLInt.name]: 'number', | ||
[GraphQLFloat.name]: 'number', | ||
[GraphQLBoolean.name]: 'boolean', | ||
[GraphQLID.name]: 'string', | ||
} | ||
[GraphQLString.name]: "string", | ||
[GraphQLInt.name]: "number", | ||
[GraphQLFloat.name]: "number", | ||
[GraphQLBoolean.name]: "boolean", | ||
[GraphQLID.name]: "string" | ||
}; | ||
export function typeNameFromGraphQLType(context: LegacyCompilerContext, type: GraphQLType, bareTypeName?: string | null, nullable = true): string { | ||
export function typeNameFromGraphQLType( | ||
context: LegacyCompilerContext, | ||
type: GraphQLType, | ||
bareTypeName?: string | null, | ||
nullable = true | ||
): string { | ||
if (type instanceof GraphQLNonNull) { | ||
return typeNameFromGraphQLType(context, type.ofType, bareTypeName, false) | ||
return typeNameFromGraphQLType(context, type.ofType, bareTypeName, false); | ||
} | ||
@@ -31,5 +36,14 @@ | ||
if (type instanceof GraphQLList) { | ||
typeName = `Array< ${typeNameFromGraphQLType(context, type.ofType, bareTypeName, true)} >`; | ||
typeName = `Array< ${typeNameFromGraphQLType( | ||
context, | ||
type.ofType, | ||
bareTypeName, | ||
true | ||
)} >`; | ||
} else if (type instanceof GraphQLScalarType) { | ||
typeName = builtInScalarMap[type.name] || (context.options.passthroughCustomScalars ? context.options.customScalarsPrefix + type.name : builtInScalarMap[GraphQLString.name]); | ||
typeName = | ||
builtInScalarMap[type.name] || | ||
(context.options.passthroughCustomScalars | ||
? context.options.customScalarsPrefix + type.name | ||
: builtInScalarMap[GraphQLString.name]); | ||
} else { | ||
@@ -39,3 +53,3 @@ typeName = bareTypeName || type.name; | ||
return nullable ? typeName + ' | null' : typeName; | ||
return nullable ? typeName + " | null" : typeName; | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
83475
0
22
1487
1
1
Updatedapollo-codegen-core@0.27.3