New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

tyranid-graphql

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tyranid-graphql - npm Package Compare versions

Comparing version 0.0.4 to 0.0.5

21

dist-es2015/src/index.d.ts
import { Tyr } from 'tyranid';
import { GraphQLOutputType, GraphQLSchema, GraphQLFieldConfig, GraphQLFieldConfigMapThunk } from 'graphql';
/**
* TODO:
*
* - ensure that enum collections work
*
* // later -- optimizations / bonus...
* - map query info to mongodb projection
* - pass authentication paramters to each node if _auth / _perm flags
*/
import { GraphQLOutputType, GraphQLSchema, GraphQLFieldConfig, GraphQLFieldConfigMapThunk, GraphQLFieldConfigArgumentMap } from 'graphql';
export declare type GraphQLOutputTypeMap = Map<string, GraphQLOutputType>;

@@ -28,4 +19,11 @@ /**

/**
* map properties of collections to argumements
*/
export declare function createArguments(fields: Tyr.TyranidFieldsObject, map: GraphQLOutputTypeMap): GraphQLFieldConfigArgumentMap;
/**
* Create a function which maps graphql arguments to a mongo query
*/
export declare function createArgumentParser(fields: Tyr.TyranidFieldsObject): (parent: any, args: any) => any;
/**
* Create lazy value to contain fields for a particular tyranid field definition object
* NOTE: mutually recursive with createGraphQLFieldConfig()
*/

@@ -37,4 +35,3 @@ export declare function createFieldThunk(fields: {

* given a field object, create an individual GraphQLType instance
* NOTE: mutually recursive with createFieldThunk()
*/
export declare function createGraphQLFieldConfig(field: Tyr.TyranidFieldDefinition, map: GraphQLOutputTypeMap, fieldName: string, path: string, single: boolean): GraphQLFieldConfig | undefined;
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments)).next());
});
};
const tyranid_1 = require('tyranid');

@@ -64,3 +56,2 @@ const mongodb_1 = require('mongodb');

function collectionFieldConfig(col, map, single = true) {
// get the created graphQl type for this collection
const colGraphQLType = map.get(col.def.name);

@@ -70,46 +61,22 @@ if (!colGraphQLType) {

}
/**
* Collection query arguments,
* currently just id(s)
*/
const args = single
? {
id: {
type: graphql_1.GraphQLID
}
}
: {
ids: {
type: new graphql_1.GraphQLList(graphql_1.GraphQLID)
}
};
const fields = col.def.fields;
if (!fields) {
return error(`Collection "${col.def.name}" has no fields property.`);
}
const args = createArguments(fields, map);
const queryFunction = single
? col.findOne.bind(col)
: col.findAll.bind(col);
const type = single
? colGraphQLType
: new graphql_1.GraphQLList(colGraphQLType);
const argParser = createArgumentParser(fields);
return {
args,
type: single ? colGraphQLType : new graphql_1.GraphQLList(colGraphQLType),
/**
* Resolve the query to this collection
*/
type,
resolve(parent, args, context) {
return __awaiter(this, void 0, void 0, function* () {
const query = {};
if (single) {
if (args && args['id']) {
query['_id'] = new mongodb_1.ObjectID(args['id']);
}
return col.findOne({
query,
auth: context && context.auth,
perm: context && context.perm
});
}
if (args && Array.isArray(args['ids'])) {
query['_id'] = {
$in: args['ids'].map((id) => new mongodb_1.ObjectID(id))
};
}
return col.findAll({
query,
auth: context && context.auth,
perm: context && context.perm
});
return queryFunction({
query: argParser(parent, args),
auth: context && context.auth,
perm: context && context.perm
});

@@ -121,4 +88,56 @@ }

/**
* map properties of collections to argumements
*/
function createArguments(fields, map) {
const argMap = {};
for (const fieldName in fields) {
const field = fields[fieldName].def;
if (field.is && (field.is !== 'object') && (field.is !== 'array')) {
const fieldType = createGraphQLFieldConfig(field, map, fieldName, '', true);
if (fieldType && graphql_1.isLeafType(fieldType.type)) {
argMap[fieldName] = {
type: new graphql_1.GraphQLList(fieldType.type)
};
}
;
}
if (field.link || (field.is === 'array' && field.of && field.of.link)) {
argMap[fieldName] = {
type: new graphql_1.GraphQLList(graphql_1.GraphQLID)
};
}
}
return argMap;
}
exports.createArguments = createArguments;
/**
* Create a function which maps graphql arguments to a mongo query
*/
function createArgumentParser(fields) {
return function (parent, args) {
if (!args)
return {};
const query = {};
for (const prop in args) {
// TODO: fix typings on tyranid
const field = fields[prop].def;
if (field.link ||
(field.is === 'mongoid') ||
(field.is === 'array' && field.of && field.of.link)) {
query[prop] = {
$in: [].concat(args[prop]).map((id) => new mongodb_1.ObjectID(id))
};
}
else {
query[prop] = {
$in: args[prop]
};
}
}
return query;
};
}
exports.createArgumentParser = createArgumentParser;
/**
* Create lazy value to contain fields for a particular tyranid field definition object
* NOTE: mutually recursive with createGraphQLFieldConfig()
*/

@@ -147,3 +166,2 @@ function createFieldThunk(fields, map, path = '') {

* given a field object, create an individual GraphQLType instance
* NOTE: mutually recursive with createFieldThunk()
*/

@@ -167,18 +185,29 @@ function createGraphQLFieldConfig(field, map, fieldName, path, single) {

const linkType = collectionFieldConfig(col, map, single);
const colFields = col.def.fields;
if (!colFields)
return error(`No fields found for collection ${col.def.name}`);
return {
type: linkType.type,
args: createArguments(colFields, map),
resolve(parent, args, context, ast) {
return __awaiter(this, void 0, void 0, function* () {
const linkField = parent[fieldName];
if (!linkField)
return single ? null : [];
if (!linkType.resolve) {
return error(`No linkType resolve function found for collection: ${field.link}`);
}
const linkArgs = single
? { id: linkField }
: { ids: linkField };
const result = yield linkType.resolve(parent, linkArgs, context, ast);
return result;
});
const linkField = parent[fieldName];
args = args || {};
if (!linkField)
return single ? null : [];
if (!linkType.resolve) {
return error(`No linkType resolve function found for collection: ${field.link}`);
}
const linkIds = [].concat(linkField);
const linkArgs = {};
if (args['_id']) {
const argIds = (Array.isArray(args['_id'])
? args['_id']
: [args['_id']]);
const argIdSet = new Set(argIds);
linkArgs['_id'] = linkIds.filter((id) => argIdSet.has(id.toString()));
}
else {
linkArgs['_id'] = linkIds;
}
return linkType.resolve(parent, linkArgs, context, ast);
}

@@ -196,3 +225,3 @@ };

case 'password':
case 'date': // TODO: create date type
case 'date':
case 'uid':

@@ -263,2 +292,2 @@ return {

exports.createGraphQLFieldConfig = createGraphQLFieldConfig;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsMEJBQW9CLFNBQVMsQ0FBQyxDQUFBO0FBQzlCLDBCQUF5QixTQUFTLENBQUMsQ0FBQTtBQUNuQywwQkFlTyxTQUFTLENBQUMsQ0FBQTtBQXVCakI7OztHQUdHO0FBQ0gsb0JBQTJCLEdBQWU7SUFDeEMsTUFBTSxNQUFNLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFeEMsR0FBRyxDQUFDLE9BQU8sR0FBZ0MsTUFBTSxDQUFDLE1BQU0sQ0FDdEQsVUFBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxHQUFHLE1BQU0sRUFBa0M7UUFDckUsTUFBTSxDQUFDLGlCQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDbEMsSUFBSTtZQUNKLElBQUk7WUFDSixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUMsRUFDRCxFQUFFLE1BQU0sRUFBRSxDQUNYLENBQUM7QUFDSixDQUFDO0FBYmUsa0JBQVUsYUFhekIsQ0FBQTtBQUlELGNBQWMsT0FBZTtJQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxlQUFlLE9BQWU7SUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBR0Q7O0dBRUc7QUFDSCw2QkFBb0MsR0FBZTtJQUNqRCxNQUFNLE9BQU8sR0FBeUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNoRCxNQUFNLFdBQVcsR0FBMEIsRUFBRSxDQUFDO0lBRTlDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUc7UUFDekIsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJ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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBCQUFvQixTQUFTLENBQUMsQ0FBQTtBQUM5QiwwQkFBeUIsU0FBUyxDQUFDLENBQUE7QUFDbkMsMEJBZ0JPLFNBQVMsQ0FBQyxDQUFBO0FBS2pCOzs7R0FHRztBQUNILG9CQUEyQixHQUFlO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXhDLEdBQUcsQ0FBQyxPQUFPLEdBQStCLE1BQU0sQ0FBQyxNQUFNLENBQ3JELFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxNQUFNLEVBQWtDO1FBQ3RFLE1BQU0sQ0FBQyxpQkFBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ2xDLElBQUk7WUFDSixJQUFJO1lBQ0osUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDLEVBQ0QsRUFBRSxNQUFNLEVBQUUsQ0FDWCxDQUFDO0FBQ0osQ0FBQztBQWJlLGtCQUFVLGFBYXpCLENBQUE7QUFHRCxjQUFjLE9BQWU7SUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsZUFBZSxPQUFlO0lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUdEOztHQUVHO0FBQ0gsNkJBQW9DLEdBQWU7SUFDakQsTUFBTSxPQUFPLEdBQXlCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDaEQsTUFBTSxXQUFXLEdBQTBCLEVBQUUsQ0FBQztJQUU5QyxHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFD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
"use strict";
var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : new P(function (resolve) {
resolve(result.value);
}).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments)).next());
});
};
const tyranid_1 = require('tyranid');

@@ -87,3 +63,2 @@ const mongodb_1 = require('mongodb');

// get the created graphQl type for this collection
const colGraphQLType = map.get(col.def.name);

@@ -93,44 +68,18 @@ if (!colGraphQLType) {

}
/**
* Collection query arguments,
* currently just id(s)
*/
const args = single ? {
id: {
type: graphql_1.GraphQLID
}
} : {
ids: {
type: new graphql_1.GraphQLList(graphql_1.GraphQLID)
}
};
const fields = col.def.fields;
if (!fields) {
return error(`Collection "${ col.def.name }" has no fields property.`);
}
const args = createArguments(fields, map);
const queryFunction = single ? col.findOne.bind(col) : col.findAll.bind(col);
const type = single ? colGraphQLType : new graphql_1.GraphQLList(colGraphQLType);
const argParser = createArgumentParser(fields);
return {
args: args,
type: single ? colGraphQLType : new graphql_1.GraphQLList(colGraphQLType),
/**
* Resolve the query to this collection
*/
type: type,
resolve: function resolve(parent, args, context) {
return __awaiter(this, void 0, void 0, function* () {
const query = {};
if (single) {
if (args && args['id']) {
query['_id'] = new mongodb_1.ObjectID(args['id']);
}
return col.findOne({
query: query,
auth: context && context.auth,
perm: context && context.perm
});
}
if (args && Array.isArray(args['ids'])) {
query['_id'] = {
$in: args['ids'].map(id => new mongodb_1.ObjectID(id))
};
}
return col.findAll({
query: query,
auth: context && context.auth,
perm: context && context.perm
});
return queryFunction({
query: argParser(parent, args),
auth: context && context.auth,
perm: context && context.perm
});

@@ -142,4 +91,52 @@ }

/**
* map properties of collections to argumements
*/
function createArguments(fields, map) {
const argMap = {};
for (const fieldName in fields) {
const field = fields[fieldName].def;
if (field.is && field.is !== 'object' && field.is !== 'array') {
const fieldType = createGraphQLFieldConfig(field, map, fieldName, '', true);
if (fieldType && graphql_1.isLeafType(fieldType.type)) {
argMap[fieldName] = {
type: new graphql_1.GraphQLList(fieldType.type)
};
}
;
}
if (field.link || field.is === 'array' && field.of && field.of.link) {
argMap[fieldName] = {
type: new graphql_1.GraphQLList(graphql_1.GraphQLID)
};
}
}
return argMap;
}
exports.createArguments = createArguments;
/**
* Create a function which maps graphql arguments to a mongo query
*/
function createArgumentParser(fields) {
return function (parent, args) {
if (!args) return {};
const query = {};
for (const prop in args) {
// TODO: fix typings on tyranid
const field = fields[prop].def;
if (field.link || field.is === 'mongoid' || field.is === 'array' && field.of && field.of.link) {
query[prop] = {
$in: [].concat(args[prop]).map(id => new mongodb_1.ObjectID(id))
};
} else {
query[prop] = {
$in: args[prop]
};
}
}
return query;
};
}
exports.createArgumentParser = createArgumentParser;
/**
* Create lazy value to contain fields for a particular tyranid field definition object
* NOTE: mutually recursive with createGraphQLFieldConfig()
*/

@@ -168,3 +165,2 @@ function createFieldThunk(fields, map) {

* given a field object, create an individual GraphQLType instance
* NOTE: mutually recursive with createFieldThunk()
*/

@@ -188,15 +184,24 @@ function createGraphQLFieldConfig(field, map, fieldName, path, single) {

const linkType = collectionFieldConfig(col, map, single);
const colFields = col.def.fields;
if (!colFields) return error(`No fields found for collection ${ col.def.name }`);
return {
type: linkType.type,
args: createArguments(colFields, map),
resolve: function resolve(parent, args, context, ast) {
return __awaiter(this, void 0, void 0, function* () {
const linkField = parent[fieldName];
if (!linkField) return single ? null : [];
if (!linkType.resolve) {
return error(`No linkType resolve function found for collection: ${ field.link }`);
}
const linkArgs = single ? { id: linkField } : { ids: linkField };
const result = yield linkType.resolve(parent, linkArgs, context, ast);
return result;
});
const linkField = parent[fieldName];
args = args || {};
if (!linkField) return single ? null : [];
if (!linkType.resolve) {
return error(`No linkType resolve function found for collection: ${ field.link }`);
}
const linkIds = [].concat(linkField);
const linkArgs = {};
if (args['_id']) {
const argIds = Array.isArray(args['_id']) ? args['_id'] : [args['_id']];
const argIdSet = new Set(argIds);
linkArgs['_id'] = linkIds.filter(id => argIdSet.has(id.toString()));
} else {
linkArgs['_id'] = linkIds;
}
return linkType.resolve(parent, linkArgs, context, ast);
}

@@ -214,3 +219,3 @@ };

case 'password':
case 'date': // TODO: create date type
case 'date':
case 'uid':

@@ -283,2 +288,2 @@ return {

exports.createGraphQLFieldConfig = createGraphQLFieldConfig;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBb0IsQUFBUyxBQUFDO0FBQzlCLDBCQUF5QixBQUFTLEFBQUM7QUFDbkMsMEJBZU8sQUFBUyxBQUFDO0FBdUJqQixBQUdHOzs7O0FBQ0gsb0JBQTJCLEFBQWU7QUFDeEMsVUFBTSxBQUFNLFNBQUcsQUFBbUIsb0JBQUMsQUFBRyxBQUFDLEFBQUM7QUFFeEMsQUFBRyxRQUFDLEFBQU8saUJBQXVDLEFBQU0sT0FDdEQsQUFBUztZQUFFLEFBQUs7WUFBRSxBQUFJOztZQUFFLEFBQUksaUNBQUcsQUFBTSxBQUFrQzs7QUFDckUsQUFBTSx5QkFBUSxRQUFDLEFBQU0sUUFBRSxBQUFLLE9BQUUsQUFBSTtBQUNoQyxBQUFJO0FBQ0osQUFBSTtBQUNKLEFBQVEsc0JBQUUsQUFBRSxBQUNiLEFBQUMsQUFBQyxBQUNMO0FBTHNDLFNBQTdCO0FBS1IsS0FQd0MsQUFBTSxFQVEvQyxFQUFFLEFBQU0sQUFBRSxBQUNYLEFBQUMsQUFDSjtBQUFDO0FBYmUsUUFBVSxhQWF6QjtBQUlELGNBQWMsQUFBZTtBQUMzQixBQUFPLFlBQUMsQUFBSSxBQUFDLHFDQUErQixBQUFPLE9BQUUsQUFBQyxBQUFDLEFBQ3pEO0FBQUM7QUFFRCxlQUFlLEFBQWU7QUFDNUIsVUFBTSxJQUFJLEFBQUssQUFBQyxvQ0FBNkIsQUFBTyxPQUFFLEFBQUMsQUFBQyxBQUMxRDtBQUFDO0FBR0QsQUFFRzs7O0FBQ0gsNkJBQW9DLEFBQWU7QUFDakQsVUFBTSxBQUFPLFVBQXlCLElBQUksQUFBRyxBQUFFLEFBQUM7QUFDaEQsVUFBTSxBQUFXLGNBQTBCLEFBQUUsQUFBQztBQUU5QyxBQUFHLFFBQUMsQUFBVyxZQUFDLEFBQU8sUUFBQyxBQUFHO0FBQ3pCLGNBQU0sQUFBSSxPQUFHLEFBQUcsSUFBQyxBQUFH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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQkFBb0IsQUFBUyxBQUFDO0FBQzlCLDBCQUF5QixBQUFTLEFBQUM7QUFDbkMsMEJBZ0JPLEFBQVMsQUFBQztBQUtqQixBQUdHOzs7O0FBQ0gsb0JBQTJCLEFBQWU7QUFDeEMsVUFBTSxBQUFNLFNBQUcsQUFBbUIsb0JBQUMsQUFBRyxBQUFDLEFBQUM7QUFFeEMsQUFBRyxRQUFDLEFBQU8saUJBQXNDLEFBQU0sT0FDckQsQUFBVTtZQUFFLEFBQUs7WUFBRSxBQUFJOztZQUFFLEFBQUksaUNBQUcsQUFBTSxBQUFrQzs7QUFDdEUsQUFBTSx5QkFBUSxRQUFDLEFBQU0sUUFBRSxBQUFLLE9BQUUsQUFBSTtBQUNoQyxBQUFJO0FBQ0osQUFBSTtBQUNKLEFBQVEsc0JBQUUsQUFBRSxBQUNiLEFBQUMsQUFBQyxBQUNMO0FBTHNDLFNBQTdCO0FBS1IsS0FQdUMsQUFBTSxFQVE5QyxFQUFFLEFBQU0sQUFBRSxBQUNYLEFBQUMsQUFDSjtBQUFDO0FBYmUsUUFBVSxhQWF6QjtBQUdELGNBQWMsQUFBZTtBQUMzQixBQUFPLFlBQUMsQUFBSSxBQUFDLHFDQUErQixBQUFPLE9BQUUsQUFBQyxBQUFDLEFBQ3pEO0FBQUM7QUFFRCxlQUFlLEFBQWU7QUFDNUIsVUFBTSxJQUFJLEFBQUssQUFBQyxvQ0FBNkIsQUFBTyxPQUFFLEFBQUMsQUFBQyxBQUMxRDtBQUFDO0FBR0QsQUFFRzs7O0FBQ0gsNkJBQW9DLEFBQWU7QUFDakQsVUFBTSxBQUFPLFVBQXlCLElBQUksQUFBRyxBQUFFLEFBQUM7QUFDaEQsVUFBTSxBQUFXLGNBQTBCLEFBQUUsQUFBQztBQUU5QyxBQUFHLFFBQUMsQUFBVyxZQUFDLEFBQU8sUUFBQyxBQUFHO0FBQ3pCLGNBQU0sQUFBSSxPQUFHLEFBQUcsSUFBQyxBQUFHLElBQUMsQUFBSSxBQUFDO0FBQzFCLEFB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
{
"name": "tyranid-graphql",
"version": "0.0.4",
"version": "0.0.5",
"description": "GraphQL plugin for tyranid",

@@ -5,0 +5,0 @@ "main": "dist-node4/src/index.js",

@@ -17,26 +17,9 @@ import { Tyr } from 'tyranid';

GraphQLList,
GraphQLFieldConfigArgumentMap,
isLeafType
} from 'graphql';
/**
* TODO:
*
* - ensure that enum collections work
*
* // later -- optimizations / bonus...
* - map query info to mongodb projection
* - pass authentication paramters to each node if _auth / _perm flags
*/
export type GraphQLOutputTypeMap = Map<string, GraphQLOutputType>;
/**

@@ -49,4 +32,4 @@ * adds a `graphql(query)` method to tyranid which returns

tyr.graphql = <Tyr.TyranidGraphQLFunction> Object.assign(
function({ query, auth, perm = 'view' }: Tyr.TyranidGraphQlQueryOptions) {
tyr.graphql = <Tyr.TyranidGraphQLFunction>Object.assign(
function ({ query, auth, perm = 'view' }: Tyr.TyranidGraphQlQueryOptions) {
return graphql(schema, query, null, {

@@ -63,3 +46,2 @@ auth,

function warn(message: string) {

@@ -105,7 +87,2 @@ console.warn(`tyranid-graphql: WARNING -- ${message}`);

/**

@@ -120,3 +97,2 @@ * Generate a field configuration object for a given tyranid collection,

): GraphQLFieldConfig {
// get the created graphQl type for this collection
const colGraphQLType = map.get(col.def.name);

@@ -128,50 +104,26 @@

/**
* Collection query arguments,
* currently just id(s)
*/
const args = single
? {
id: {
type: GraphQLID
}
}
: {
ids: {
type: new GraphQLList(GraphQLID)
}
};
const fields = col.def.fields;
return {
if (!fields) {
return error(`Collection "${col.def.name}" has no fields property.`);
}
args,
const args = createArguments(fields, map);
type: single ? colGraphQLType : new GraphQLList(colGraphQLType),
const queryFunction: (...args: any[]) => Promise<any> = single
? col.findOne.bind(col)
: col.findAll.bind(col);
/**
* Resolve the query to this collection
*/
async resolve(parent, args, context) {
const query: { [key: string]: any } = {};
const type = single
? colGraphQLType
: new GraphQLList(colGraphQLType);
if (single) {
if (args && args['id']) {
query['_id'] = new ObjectID(args['id']);
}
const argParser = createArgumentParser(fields);
return col.findOne({
query,
auth: context && context.auth,
perm: context && context.perm
});
}
if (args && Array.isArray(args['ids'])) {
query['_id'] = {
$in: args['ids'].map((id: string) => new ObjectID(id))
};
}
return col.findAll({
query,
return {
args,
type,
resolve(parent, args, context) {
return queryFunction({
query: argParser(parent, args),
auth: context && context.auth,

@@ -181,3 +133,2 @@ perm: context && context.perm

}
};

@@ -187,9 +138,67 @@ }

/**
* map properties of collections to argumements
*/
export function createArguments(
fields: Tyr.TyranidFieldsObject,
map: GraphQLOutputTypeMap
) {
const argMap: GraphQLFieldConfigArgumentMap = {};
for (const fieldName in fields) {
const field = (fields[fieldName] as any).def;
if (field.is && (field.is !== 'object') && (field.is !== 'array')) {
const fieldType = createGraphQLFieldConfig(field, map, fieldName, '', true);
if (fieldType && isLeafType(fieldType.type)) {
argMap[fieldName] = {
type: new GraphQLList((fieldType.type as any))
};
};
}
if (field.link || (field.is === 'array' && field.of && field.of.link)) {
argMap[fieldName] = {
type: new GraphQLList(GraphQLID)
};
}
}
return argMap;
}
/**
* Create a function which maps graphql arguments to a mongo query
*/
export function createArgumentParser(
fields: Tyr.TyranidFieldsObject
): (parent: any, args: any) => any {
return function (parent: any, args: any) {
if (!args) return {};
const query: any = {};
for (const prop in args) {
// TODO: fix typings on tyranid
const field = (fields[prop] as any).def;
if ( field.link ||
(field.is === 'mongoid') ||
(field.is === 'array' && field.of && field.of.link)) {
query[prop] = {
$in: [].concat(args[prop]).map((id: any) => new ObjectID(id))
};
} else {
query[prop] = {
$in: args[prop]
};
}
}
return query;
};
}
/**
* Create lazy value to contain fields for a particular tyranid field definition object
* NOTE: mutually recursive with createGraphQLFieldConfig()
*/

@@ -201,3 +210,3 @@ export function createFieldThunk(

): GraphQLFieldConfigMapThunk {
return function() {
return function () {
const fieldsObj: GraphQLFieldConfigMap = {};

@@ -224,9 +233,4 @@

/**
* given a field object, create an individual GraphQLType instance
* NOTE: mutually recursive with createFieldThunk()
*/

@@ -262,7 +266,12 @@ export function createGraphQLFieldConfig(

const linkType = collectionFieldConfig(col, map, single);
const colFields = col.def.fields;
if (!colFields) return error(`No fields found for collection ${col.def.name}`);
return {
type: linkType.type,
async resolve(parent, args, context, ast) {
args: createArguments(colFields, map),
resolve(parent, args, context, ast) {
const linkField = parent[fieldName];
args = args || {};

@@ -275,9 +284,18 @@ if (!linkField) return single ? null : [];

const linkArgs = single
? { id: linkField }
: { ids: linkField };
const linkIds = [].concat(linkField);
const linkArgs: any = {};
const result = await linkType.resolve(parent, linkArgs, context, ast);
if (args['_id']) {
const argIds = <string[]> (Array.isArray(args['_id'])
? args['_id']
: [ args['_id'] ]);
return result;
const argIdSet = new Set(argIds);
linkArgs['_id'] = linkIds.filter((id: any) => argIdSet.has(id.toString()));
} else {
linkArgs['_id'] = linkIds;
}
return linkType.resolve(parent, linkArgs, context, ast);
}

@@ -298,3 +316,3 @@ };

case 'password':
case 'date': // TODO: create date type
case 'date':
case 'uid':

@@ -301,0 +319,0 @@ return {

@@ -22,2 +22,3 @@ {

"./test/index.ts",
"./test/cases/index.ts",
"./src/index.ts",

@@ -24,0 +25,0 @@ "./test/example/server.ts",

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc