graphql-js-tree
Advanced tools
Comparing version 0.0.3 to 0.1.0
export * from "./ParserTree"; | ||
export * from "./Options"; | ||
export * from "./Types"; | ||
export * from "./Spec"; | ||
export * from "./DisplayMap"; |
@@ -14,5 +14,4 @@ "use strict"; | ||
__exportStar(require("./ParserTree"), exports); | ||
__exportStar(require("./Options"), exports); | ||
__exportStar(require("./Types"), exports); | ||
__exportStar(require("./Spec"), exports); | ||
__exportStar(require("./DisplayMap"), exports); |
@@ -1,3 +0,2 @@ | ||
import { Options } from "./Options"; | ||
import { Directive, OperationType } from "./Spec"; | ||
import { Directive, OperationType, FieldType } from "./Spec"; | ||
import { GraphQLNodeParams } from "./Types"; | ||
@@ -7,4 +6,3 @@ export interface ParserField { | ||
type: { | ||
name: string; | ||
options?: Options[]; | ||
fieldType: FieldType; | ||
operations?: OperationType[]; | ||
@@ -14,5 +12,5 @@ directiveOptions?: Directive[]; | ||
data: GraphQLNodeParams; | ||
args?: ParserField[]; | ||
interfaces?: string[]; | ||
directives?: ParserField[]; | ||
args: ParserField[]; | ||
interfaces: string[]; | ||
directives: ParserField[]; | ||
description?: string; | ||
@@ -19,0 +17,0 @@ } |
@@ -84,1 +84,11 @@ export declare enum ScalarTypes { | ||
} | ||
export declare enum Options { | ||
array = "array", | ||
required = "required", | ||
name = "name" | ||
} | ||
export declare type FieldType = { | ||
type: Options; | ||
nest?: FieldType; | ||
name?: string; | ||
}; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.Helpers = exports.Instances = exports.OperationType = exports.TypeExtension = exports.ValueDefinition = exports.TypeDefinition = exports.TypeSystemExtension = exports.TypeSystemDefinition = exports.Type = exports.Value = exports.Directive = exports.ScalarTypes = void 0; | ||
exports.Options = exports.Helpers = exports.Instances = exports.OperationType = exports.TypeExtension = exports.ValueDefinition = exports.TypeDefinition = exports.TypeSystemExtension = exports.TypeSystemDefinition = exports.Type = exports.Value = exports.Directive = exports.ScalarTypes = void 0; | ||
var ScalarTypes; | ||
@@ -99,1 +99,7 @@ (function (ScalarTypes) { | ||
})(Helpers = exports.Helpers || (exports.Helpers = {})); | ||
var Options; | ||
(function (Options) { | ||
Options["array"] = "array"; | ||
Options["required"] = "required"; | ||
Options["name"] = "name"; | ||
})(Options = exports.Options || (exports.Options = {})); |
@@ -27,4 +27,4 @@ "use strict"; | ||
.split('\n') | ||
.filter((s) => s.startsWith('#')) | ||
.map((s) => s.slice(1).trimStart()); | ||
.filter((s) => s.trimStart().startsWith('#')) | ||
.map((s) => s.trimStart().slice(1).trimStart()); | ||
} | ||
@@ -35,22 +35,15 @@ } | ||
Parser.documentDefinitionToSerializedNodeTree = (d) => { | ||
var _a; | ||
if ((0, graphql_1.isTypeSystemDefinitionNode)(d) || (0, graphql_1.isTypeSystemExtensionNode)(d)) { | ||
if ('name' in d) { | ||
return { | ||
name: d.name.value, | ||
type: d.kind === 'DirectiveDefinition' | ||
return Object.assign(Object.assign({ name: d.name.value, type: d.kind === 'DirectiveDefinition' | ||
? { | ||
name: Models_1.TypeDefinitionDisplayMap[d.kind], | ||
fieldType: { name: Models_1.TypeDefinitionDisplayMap[d.kind], type: Models_1.Options.name }, | ||
directiveOptions: d.locations.map((l) => l.value), | ||
} | ||
: { | ||
name: Models_1.TypeDefinitionDisplayMap[d.kind], | ||
}, | ||
data: { | ||
fieldType: { name: Models_1.TypeDefinitionDisplayMap[d.kind], type: Models_1.Options.name }, | ||
}, data: { | ||
type: d.kind, | ||
}, | ||
description: 'description' in d && d.description ? d.description.value : '', | ||
interfaces: 'interfaces' in d && d.interfaces ? d.interfaces.map((i) => i.name.value) : undefined, | ||
directives: 'directives' in d && d.directives ? typeResolver_1.TypeResolver.iterateDirectives(d.directives) : undefined, | ||
args: typeResolver_1.TypeResolver.resolveFieldsFromDefinition(d), | ||
}; | ||
} }, ('description' in d && ((_a = d.description) === null || _a === void 0 ? void 0 : _a.value) ? { description: d.description.value } : {})), { interfaces: 'interfaces' in d && d.interfaces ? d.interfaces.map((i) => i.name.value) : [], directives: 'directives' in d && d.directives ? typeResolver_1.TypeResolver.iterateDirectives(d.directives) : [], args: typeResolver_1.TypeResolver.resolveFieldsFromDefinition(d) }); | ||
} | ||
@@ -96,4 +89,10 @@ } | ||
type: { | ||
name: Spec_1.Helpers.Comment, | ||
fieldType: { | ||
name: Spec_1.Helpers.Comment, | ||
type: Models_1.Options.name, | ||
}, | ||
}, | ||
args: [], | ||
directives: [], | ||
interfaces: [], | ||
data: { | ||
@@ -135,11 +134,5 @@ type: Spec_1.Helpers.Comment, | ||
} | ||
if (e.directives) { | ||
extendedNode.directives = [...(extendedNode.directives || []), ...e.directives]; | ||
} | ||
if (e.interfaces) { | ||
extendedNode.interfaces = [...(extendedNode.interfaces || []), ...e.interfaces]; | ||
} | ||
if (e.args) { | ||
extendedNode.args = [...(extendedNode.args || []), ...e.args]; | ||
} | ||
extendedNode.directives = [...(extendedNode.directives || []), ...e.directives]; | ||
extendedNode.interfaces = [...(extendedNode.interfaces || []), ...e.interfaces]; | ||
extendedNode.args = [...(extendedNode.args || []), ...e.args]; | ||
}); | ||
@@ -146,0 +139,0 @@ return { nodes }; |
import { ParserField } from "../Models"; | ||
export declare class ParserUtils { | ||
static compareParserFields: (node1: ParserField, node2: ParserField) => boolean; | ||
static compareParserTreesNodes: (t1: ParserField[] | undefined, t2: ParserField[] | undefined) => boolean; | ||
static isExtensionOf: (extensionNode: ParserField, extendedNode: ParserField) => boolean; | ||
} |
@@ -5,6 +5,2 @@ "use strict"; | ||
const Models_1 = require("../Models"); | ||
const compareArrays = (a1 = [], a2 = []) => a1.length === a2.length && | ||
a1.sort().every((value, index) => { | ||
return value === a2.sort()[index]; | ||
}); | ||
const extensionMap = { | ||
@@ -21,39 +17,2 @@ EnumTypeExtension: Models_1.TypeDefinition.EnumTypeDefinition, | ||
exports.ParserUtils = ParserUtils; | ||
ParserUtils.compareParserFields = (node1, node2) => { | ||
if (node1.name !== node2.name || | ||
node1.type.name !== node2.type.name || | ||
!compareArrays(node1.type.directiveOptions, node2.type.directiveOptions) || | ||
!compareArrays(node1.type.operations, node2.type.operations) || | ||
!compareArrays(node1.type.options, node2.type.options) || | ||
!compareArrays(node1.interfaces, node2.interfaces) || | ||
!ParserUtils.compareParserTreesNodes(node1.directives, node2.directives) || | ||
!ParserUtils.compareParserTreesNodes(node1.args, node2.args)) { | ||
return false; | ||
} | ||
return true; | ||
}; | ||
ParserUtils.compareParserTreesNodes = (t1, t2) => { | ||
if (!t1) { | ||
if (!t2) { | ||
return true; | ||
} | ||
if (t2.length === 0) { | ||
return true; | ||
} | ||
return false; | ||
} | ||
if (!t2) { | ||
if (t1.length === 0) { | ||
return true; | ||
} | ||
return false; | ||
} | ||
for (const node1 of t1) { | ||
const compareResult = t2.find((node2) => ParserUtils.compareParserFields(node1, node2)); | ||
if (!compareResult) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
}; | ||
ParserUtils.isExtensionOf = (extensionNode, extendedNode) => { | ||
@@ -60,0 +19,0 @@ if (extendedNode.name !== extensionNode.name) { |
import { ArgumentNode, DirectiveNode, FieldDefinitionNode, InputValueDefinitionNode, ObjectFieldNode, TypeDefinitionNode, TypeNode, TypeSystemDefinitionNode, TypeSystemExtensionNode, ValueNode } from 'graphql'; | ||
import { Options, ParserField } from "../Models"; | ||
import { ParserField } from "../Models"; | ||
export declare class TypeResolver { | ||
static resolveSingleField(n: TypeNode, options?: Options[]): ParserField['type']; | ||
static resolveSingleFieldType(n: TypeNode): ParserField['type']['fieldType']; | ||
static iterateObjectTypeFields(fields: ReadonlyArray<FieldDefinitionNode>): ParserField[]; | ||
static resolveInputValueOptions: (value: ValueNode) => Options[]; | ||
static resolveInputValueOptions: (value: ValueNode, name: string) => ParserField['type']['fieldType']; | ||
static resolveObjectField(f: ObjectFieldNode): ParserField[]; | ||
static resolveValue(value: ValueNode): ParserField[] | undefined; | ||
static resolveValue(value: ValueNode): ParserField[]; | ||
static iterateDirectives(directives: ReadonlyArray<DirectiveNode>): ParserField[]; | ||
@@ -14,3 +14,3 @@ static iterateArgumentFields(fields: ReadonlyArray<ArgumentNode>): ParserField[]; | ||
static resolveFields(n: TypeDefinitionNode): ParserField[] | undefined; | ||
static resolveFieldsFromDefinition(n: TypeSystemDefinitionNode | TypeSystemExtensionNode): ParserField[] | undefined; | ||
static resolveFieldsFromDefinition(n: TypeSystemDefinitionNode | TypeSystemExtensionNode): ParserField[]; | ||
} |
@@ -7,32 +7,24 @@ "use strict"; | ||
class TypeResolver { | ||
static resolveSingleField(n, options = []) { | ||
static resolveSingleFieldType(n) { | ||
if (n.kind === 'ListType') { | ||
const opts = [...options, Models_1.Options.array]; | ||
return Object.assign({ options: opts }, TypeResolver.resolveSingleField(n.type, opts)); | ||
return { | ||
type: Models_1.Options.array, | ||
nest: TypeResolver.resolveSingleFieldType(n.type), | ||
}; | ||
} | ||
if (n.kind === 'NonNullType') { | ||
const opts = [...options]; | ||
if (opts.indexOf(Models_1.Options.required) >= 0 && opts.indexOf(Models_1.Options.array) >= 0) { | ||
opts.push(Models_1.Options.arrayRequired); | ||
} | ||
else { | ||
opts.push(Models_1.Options.required); | ||
} | ||
return Object.assign({ options: opts }, TypeResolver.resolveSingleField(n.type, opts)); | ||
return { | ||
type: Models_1.Options.required, | ||
nest: TypeResolver.resolveSingleFieldType(n.type), | ||
}; | ||
} | ||
return { | ||
name: n.name.value, | ||
type: Models_1.Options.name, | ||
}; | ||
} | ||
static iterateObjectTypeFields(fields) { | ||
return fields.map((n) => ({ | ||
name: n.name.value, | ||
description: n.description && n.description.value, | ||
args: n.arguments && TypeResolver.iterateInputValueFields(n.arguments), | ||
type: TypeResolver.resolveSingleField(n.type), | ||
directives: n.directives && TypeResolver.iterateDirectives(n.directives), | ||
data: { | ||
return fields.map((n) => (Object.assign(Object.assign({ name: n.name.value }, (n.description ? { description: n.description.value } : {})), { args: n.arguments ? TypeResolver.iterateInputValueFields(n.arguments) : [], type: { fieldType: TypeResolver.resolveSingleFieldType(n.type) }, directives: n.directives ? TypeResolver.iterateDirectives(n.directives) : [], interfaces: [], data: { | ||
type: Spec_1.TypeSystemDefinition.FieldDefinition, | ||
}, | ||
})); | ||
} }))); | ||
} | ||
@@ -44,4 +36,3 @@ static resolveObjectField(f) { | ||
type: { | ||
name: f.name.value, | ||
options: TypeResolver.resolveInputValueOptions(f.value), | ||
fieldType: TypeResolver.resolveInputValueOptions(f.value, f.name.value), | ||
}, | ||
@@ -51,2 +42,4 @@ data: { | ||
}, | ||
interfaces: [], | ||
directives: [], | ||
args: TypeResolver.resolveValue(f.value), | ||
@@ -64,2 +57,4 @@ }, | ||
name: value.kind, | ||
directives: [], | ||
interfaces: [], | ||
args: value.fields.map((f) => TypeResolver.resolveObjectField(f)).reduce((a, b) => [...a, ...b], []), | ||
@@ -70,3 +65,6 @@ data: { | ||
type: { | ||
name: value.kind, | ||
fieldType: { | ||
name: value.kind, | ||
type: Models_1.Options.name, | ||
}, | ||
}, | ||
@@ -80,2 +78,5 @@ }, | ||
name: value.value, | ||
args: [], | ||
directives: [], | ||
interfaces: [], | ||
data: { | ||
@@ -85,3 +86,6 @@ type: value.kind, | ||
type: { | ||
name: value.value, | ||
fieldType: { | ||
name: value.value, | ||
type: Models_1.Options.name, | ||
}, | ||
}, | ||
@@ -96,4 +100,10 @@ }, | ||
type: { | ||
name: value.kind, | ||
fieldType: { | ||
name: value.kind, | ||
type: Models_1.Options.name, | ||
}, | ||
}, | ||
args: [], | ||
directives: [], | ||
interfaces: [], | ||
data: { | ||
@@ -105,3 +115,3 @@ type: value.kind, | ||
} | ||
return undefined; | ||
return []; | ||
} | ||
@@ -112,4 +122,9 @@ static iterateDirectives(directives) { | ||
type: { | ||
name: n.name.value, | ||
fieldType: { | ||
name: n.name.value, | ||
type: Models_1.Options.name, | ||
}, | ||
}, | ||
directives: [], | ||
interfaces: [], | ||
data: { | ||
@@ -125,4 +140,3 @@ type: Spec_1.Instances.Directive, | ||
type: { | ||
name: n.name.value, | ||
options: TypeResolver.resolveInputValueOptions(n.value), | ||
fieldType: TypeResolver.resolveInputValueOptions(n.value, n.name.value), | ||
}, | ||
@@ -133,15 +147,10 @@ data: { | ||
args: TypeResolver.resolveValue(n.value), | ||
directives: [], | ||
interfaces: [], | ||
})); | ||
} | ||
static iterateInputValueFields(fields) { | ||
return fields.map((n) => ({ | ||
name: n.name.value, | ||
description: n.description && n.description.value, | ||
directives: n.directives && TypeResolver.iterateDirectives(n.directives), | ||
type: TypeResolver.resolveSingleField(n.type), | ||
data: { | ||
return fields.map((n) => (Object.assign(Object.assign({ name: n.name.value }, (n.description ? { description: n.description.value } : {})), { directives: n.directives ? TypeResolver.iterateDirectives(n.directives) : [], type: { fieldType: TypeResolver.resolveSingleFieldType(n.type) }, data: { | ||
type: Spec_1.ValueDefinition.InputValueDefinition, | ||
}, | ||
args: n.defaultValue ? TypeResolver.resolveValue(n.defaultValue) : undefined, | ||
})); | ||
}, interfaces: [], args: n.defaultValue ? TypeResolver.resolveValue(n.defaultValue) : [] }))); | ||
} | ||
@@ -159,11 +168,5 @@ static resolveInterfaces(n) { | ||
} | ||
return n.values.map((v) => ({ | ||
name: v.name.value, | ||
description: v.description && v.description.value, | ||
directives: v.directives && TypeResolver.iterateDirectives(v.directives), | ||
type: { name: Spec_1.ValueDefinition.EnumValueDefinition }, | ||
data: { | ||
return n.values.map((v) => (Object.assign(Object.assign({ name: v.name.value }, (v.description ? { description: v.description.value } : {})), { directives: v.directives ? TypeResolver.iterateDirectives(v.directives) : [], interfaces: [], args: [], type: { fieldType: { name: Spec_1.ValueDefinition.EnumValueDefinition, type: Models_1.Options.name } }, data: { | ||
type: Spec_1.ValueDefinition.EnumValueDefinition, | ||
}, | ||
})); | ||
} }))); | ||
} | ||
@@ -179,3 +182,6 @@ if (n.kind === 'ScalarTypeDefinition') { | ||
name: t.name.value, | ||
type: { name: t.name.value }, | ||
type: { fieldType: { name: t.name.value, type: Models_1.Options.name } }, | ||
interfaces: [], | ||
args: [], | ||
directives: [], | ||
data: { | ||
@@ -201,11 +207,5 @@ type: Spec_1.TypeSystemDefinition.UnionMemberDefinition, | ||
if ('values' in n && n.values) { | ||
return n.values.map((v) => ({ | ||
name: v.name.value, | ||
description: v.description && v.description.value, | ||
directives: v.directives && TypeResolver.iterateDirectives(v.directives), | ||
type: { name: Spec_1.ValueDefinition.EnumValueDefinition }, | ||
data: { | ||
return n.values.map((v) => (Object.assign(Object.assign({ name: v.name.value, args: [], interfaces: [] }, (v.description ? { description: v.description.value } : {})), { directives: v.directives ? TypeResolver.iterateDirectives(v.directives) : [], type: { fieldType: { name: Spec_1.ValueDefinition.EnumValueDefinition, type: Models_1.Options.name } }, data: { | ||
type: Spec_1.ValueDefinition.EnumValueDefinition, | ||
}, | ||
})); | ||
} }))); | ||
} | ||
@@ -215,3 +215,6 @@ if ('types' in n && n.types) { | ||
name: t.name.value, | ||
type: { name: t.name.value }, | ||
directives: [], | ||
args: [], | ||
interfaces: [], | ||
type: { fieldType: { name: t.name.value, type: Models_1.Options.name } }, | ||
data: { | ||
@@ -237,11 +240,20 @@ type: Spec_1.TypeSystemDefinition.UnionMemberDefinition, | ||
} | ||
return []; | ||
} | ||
} | ||
exports.TypeResolver = TypeResolver; | ||
TypeResolver.resolveInputValueOptions = (value) => { | ||
const options = []; | ||
TypeResolver.resolveInputValueOptions = (value, name) => { | ||
if (value.kind === 'ListValue') { | ||
options.push(Models_1.Options.array); | ||
return { | ||
type: Models_1.Options.array, | ||
nest: { | ||
name, | ||
type: Models_1.Options.name, | ||
}, | ||
}; | ||
} | ||
return options; | ||
return { | ||
name, | ||
type: Models_1.Options.name, | ||
}; | ||
}; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.ArgumentTemplate = void 0; | ||
const Models_1 = require("../../Models"); | ||
const getTypeName_1 = require("./shared/getTypeName"); | ||
const TemplateUtils_1 = require("./TemplateUtils"); | ||
class ArgumentTemplate { | ||
static resolve({ args, type }, prefix = 0) { | ||
var _a; | ||
let argsString = ''; | ||
if (args) { | ||
const isArray = (_a = type.options) === null || _a === void 0 ? void 0 : _a.includes(Models_1.Options.array); | ||
if (args.length) { | ||
if (type.options && isArray) { | ||
argsString = `[${args.map((a) => TemplateUtils_1.TemplateUtils.resolverForConnection(a, prefix)).join(',\n')}]`; | ||
} | ||
else { | ||
argsString = `${args.map((a) => TemplateUtils_1.TemplateUtils.resolverForConnection(a, prefix)).join('\n')}`; | ||
} | ||
argsString = `${args.map((a) => TemplateUtils_1.TemplateUtils.resolverForConnection(a, prefix)).join('\n')}`; | ||
} | ||
else { | ||
if (isArray) { | ||
argsString = '[]'; | ||
} | ||
argsString = '[]'; | ||
} | ||
} | ||
return `${type.name}: ${argsString}`; | ||
return `${(0, getTypeName_1.getTypeName)(type.fieldType)}: ${argsString}`; | ||
} | ||
} | ||
exports.ArgumentTemplate = ArgumentTemplate; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.DirectiveTemplate = void 0; | ||
const getTypeName_1 = require("./shared/getTypeName"); | ||
const TemplateUtils_1 = require("./TemplateUtils"); | ||
@@ -8,3 +9,3 @@ class DirectiveTemplate { | ||
let argsString = ''; | ||
if (f.args && f.args.length) { | ||
if (f.args.length) { | ||
argsString = `(\n${f.args | ||
@@ -15,5 +16,5 @@ .map((a) => TemplateUtils_1.TemplateUtils.resolverForConnection(a)) | ||
} | ||
return `@${f.type.name}${argsString}`; | ||
return `@${(0, getTypeName_1.getTypeName)(f.type.fieldType)}${argsString}`; | ||
} | ||
} | ||
exports.DirectiveTemplate = DirectiveTemplate; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.ExtendTemplate = void 0; | ||
const Models_1 = require("../../Models"); | ||
const TemplateUtils_1 = require("./TemplateUtils"); | ||
class ExtendTemplate { | ||
static resolve(f) { | ||
if (f.args) { | ||
const extendedTypes = f.args | ||
.filter((e) => (e.args && e.args.length) || (e.directives && e.directives.length) || (e.interfaces && e.interfaces.length)) | ||
.map((e) => TemplateUtils_1.TemplateUtils.resolverForConnection(Object.assign(Object.assign({}, e), { type: Object.assign(Object.assign({}, e.type), { name: e.data.type }) }))) | ||
.join('\n'); | ||
return extendedTypes; | ||
} | ||
const extendedTypes = f.args | ||
.filter((e) => e.args.length || e.directives.length || e.interfaces.length) | ||
.map((e) => TemplateUtils_1.TemplateUtils.resolverForConnection(Object.assign(Object.assign({}, e), { type: Object.assign(Object.assign({}, e.type), { fieldType: { | ||
name: e.data.type, | ||
type: Models_1.Options.name, | ||
} }) }))) | ||
.join('\n'); | ||
return extendedTypes; | ||
return ''; | ||
@@ -15,0 +17,0 @@ } |
@@ -8,3 +8,3 @@ "use strict"; | ||
let argsString = ''; | ||
if (f.args && f.args.length) { | ||
if (f.args.length) { | ||
argsString = `(\n${f.args | ||
@@ -11,0 +11,0 @@ .map((a) => TemplateUtils_1.TemplateUtils.resolverForConnection(a, prefix + 1)) |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.InputValueTemplate = void 0; | ||
const Models_1 = require("../../Models"); | ||
const TemplateUtils_1 = require("./TemplateUtils"); | ||
class InputValueTemplate { | ||
static resolve(f, prefix = 0) { | ||
var _a; | ||
let argsString = ''; | ||
if (f.args) { | ||
const isArray = (_a = f.type.options) === null || _a === void 0 ? void 0 : _a.includes(Models_1.Options.array); | ||
if (f.args.length) { | ||
if (f.type.options && isArray) { | ||
argsString = ` = [${f.args.map((a) => TemplateUtils_1.TemplateUtils.resolverForConnection(a, prefix + 1)).join(',\n')}]`; | ||
} | ||
else { | ||
argsString = ` = ${f.args.map((a) => TemplateUtils_1.TemplateUtils.resolverForConnection(a, prefix + 1)).join('\n')}`; | ||
} | ||
} | ||
else { | ||
if (isArray) { | ||
argsString = ` = []`; | ||
} | ||
} | ||
if (f.args.length > 0) { | ||
argsString = ` = ${f.args.map((a) => TemplateUtils_1.TemplateUtils.resolverForConnection(a, prefix + 1)).join('\n')}`; | ||
} | ||
@@ -26,0 +11,0 @@ return `${TemplateUtils_1.TemplateUtils.descriptionResolver(f.description, prefix)}${'\t'.repeat(prefix)}${f.name}: ${TemplateUtils_1.TemplateUtils.resolveType(f)}${argsString}${TemplateUtils_1.TemplateUtils.resolveDirectives(f.directives)}`; |
import { ParserField } from "../../Models"; | ||
export declare class TemplateUtils { | ||
static isArray: (f: ParserField, type: string) => string; | ||
static isRequired: (f: ParserField, type: string) => string; | ||
static isArrayRequired: (f: ParserField, type: string) => string; | ||
static resolveFieldType: (f: ParserField['type']['fieldType'], fn?: (x: string) => string) => string; | ||
static resolveType: (f: ParserField) => string; | ||
@@ -7,0 +5,0 @@ static descriptionResolver: (description?: string | undefined, prefix?: number) => string; |
@@ -19,10 +19,15 @@ "use strict"; | ||
exports.TemplateUtils = TemplateUtils; | ||
TemplateUtils.isArray = (f, type) => f.type.options && f.type.options.find((o) => o === Models_1.Options.array) ? `[${type}]` : type; | ||
TemplateUtils.isRequired = (f, type) => f.type.options && f.type.options.find((o) => o === Models_1.Options.required) ? `${type}!` : type; | ||
TemplateUtils.isArrayRequired = (f, type) => f.type.options && | ||
f.type.options.find((o) => o === Models_1.Options.arrayRequired) && | ||
f.type.options.find((o) => o === Models_1.Options.array) | ||
? `${type}!` | ||
: type; | ||
TemplateUtils.resolveType = (f) => TemplateUtils.isArrayRequired(f, TemplateUtils.isArray(f, TemplateUtils.isRequired(f, f.type.name))); | ||
TemplateUtils.resolveFieldType = (f, fn = (x) => x) => { | ||
if (f.type === Models_1.Options.name && f.name) { | ||
return fn(f.name); | ||
} | ||
if (f.type === Models_1.Options.array && f.nest) { | ||
return TemplateUtils.resolveFieldType(f.nest, (x) => `[${fn(x)}]`); | ||
} | ||
if (f.type === Models_1.Options.required && f.nest) { | ||
return TemplateUtils.resolveFieldType(f.nest, (x) => `${fn(x)}!`); | ||
} | ||
throw new Error('Invalid field type:' + JSON.stringify(f)); | ||
}; | ||
TemplateUtils.resolveType = (f) => TemplateUtils.resolveFieldType(f.type.fieldType); | ||
TemplateUtils.descriptionResolver = (description, prefix = 0) => { | ||
@@ -29,0 +34,0 @@ if (description) { |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.UnionMemberTemplate = void 0; | ||
const getTypeName_1 = require("./shared/getTypeName"); | ||
class UnionMemberTemplate { | ||
static resolve(f) { | ||
return f.type.name; | ||
return (0, getTypeName_1.getTypeName)(f.type.fieldType); | ||
} | ||
} | ||
exports.UnionMemberTemplate = UnionMemberTemplate; |
@@ -5,2 +5,3 @@ "use strict"; | ||
const Models_1 = require("../../Models"); | ||
const getTypeName_1 = require("./shared/getTypeName"); | ||
const TemplateUtils_1 = require("./TemplateUtils"); | ||
@@ -12,3 +13,3 @@ class ValueTemplate { | ||
if (f.data.type === Models_1.Value.EnumValue) { | ||
returnedValue = `${f.type.name}`; | ||
returnedValue = `${(0, getTypeName_1.getTypeName)(f.type.fieldType)}`; | ||
} | ||
@@ -18,2 +19,5 @@ if (f.data.type === Models_1.Value.StringValue) { | ||
} | ||
if (f.data.type === Models_1.Value.ListValue) { | ||
returnedValue = `[${(f.args || []).map((a) => TemplateUtils_1.TemplateUtils.resolverForConnection(a))}]`; | ||
} | ||
if (f.data.type === Models_1.Value.ObjectValue) { | ||
@@ -20,0 +24,0 @@ returnedValue = `{ ${(f.args || []).map((a) => TemplateUtils_1.TemplateUtils.resolverForConnection(a))}}`; |
{ | ||
"name": "graphql-js-tree", | ||
"version": "0.0.3", | ||
"version": "0.1.0", | ||
"private": false, | ||
@@ -36,5 +36,5 @@ "license": "MIT", | ||
"husky": "^4.2.3", | ||
"jest": "^25.2.4", | ||
"jest": "^27.4.7", | ||
"prettier": "^2.0.2", | ||
"ts-jest": "^26.5.1", | ||
"ts-jest": "^27.1.3", | ||
"ts-node": "^9.0.0", | ||
@@ -41,0 +41,0 @@ "ttypescript": "^1.5.12", |
59781
1240