Socket
Socket
Sign inDemoInstall

graphql-js-tree

Package Overview
Dependencies
1
Maintainers
1
Versions
45
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.3 to 0.1.0

lib/TreeToGraphQL/templates/shared/getTypeName.d.ts

1

lib/Models/index.d.ts
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",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc