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.6 to 0.0.7

LICENSE

10

dist-es2015/src/index.d.ts

@@ -9,5 +9,2 @@ import { Tyr } from 'tyranid';

export declare function graphqlize(tyr: typeof Tyr): void;
/**
* tyranid schema -> graphql schema
*/
export declare function createGraphQLSchema(tyr: typeof Tyr): GraphQLSchema;

@@ -24,3 +21,3 @@ /**

*/
export declare function createProjection(info: GraphQLResolveInfo): any;
export declare function createProjection(col: Tyr.CollectionInstance, info: GraphQLResolveInfo): any;
/**

@@ -35,3 +32,4 @@ * map properties of collections to argumements

/**
* Create lazy value to contain fields for a particular tyranid field definition object
* Create lazy value to contain fields for a
* particular tyranid field definition object
*/

@@ -44,2 +42,2 @@ export declare function createFieldThunk(fields: {

*/
export declare function createGraphQLFieldConfig(field: Tyr.TyranidFieldDefinition, map: GraphQLOutputTypeMap, fieldName: string, path: string, single: boolean): GraphQLFieldConfig | undefined;
export declare function createGraphQLFieldConfig(field: Tyr.TyranidFieldDefinition | string, map: GraphQLOutputTypeMap, fieldName: string, path: string, single: boolean): GraphQLFieldConfig | undefined;

99

dist-es2015/src/index.js

@@ -5,2 +5,8 @@ "use strict";

const graphql_1 = require('graphql');
function warn(message) {
console.warn(`tyranid-graphql: WARNING -- ${message}`);
}
function error(message) {
throw new Error(`tyranid-graphql: ERROR -- ${message}`);
}
/**

@@ -21,11 +27,2 @@ * adds a `graphql(query)` method to tyranid which returns

exports.graphqlize = graphqlize;
function warn(message) {
console.warn(`tyranid-graphql: WARNING -- ${message}`);
}
function error(message) {
throw new Error(`tyranid-graphql: ERROR -- ${message}`);
}
/**
* tyranid schema -> graphql schema
*/
function createGraphQLSchema(tyr) {

@@ -43,3 +40,5 @@ const typeMap = new Map();

queryFields[name] = collectionFieldConfig(col, typeMap, true);
queryFields[name + 's'] = collectionFieldConfig(col, typeMap, false);
// TODO: less hacky...
const suffix = name[name.length - 1] === 's' ? 'es' : 's';
queryFields[name + suffix] = collectionFieldConfig(col, typeMap, false);
});

@@ -64,2 +63,3 @@ return new graphql_1.GraphQLSchema({

const fields = col.def.fields;
const isEnum = col.def.enum;
if (!fields) {

@@ -84,2 +84,12 @@ return error(`Collection "${col.def.name}" has no fields property.`);

const query = argParser(parent, args);
if (isEnum) {
if (!(args && args['_id'])) {
console.log(col.def.values);
const ids = (col.def.values || []).map((row) => row['_id']);
args = { _id: ids };
}
return single
? col.byId(args['_id'][0])
: col.byIds(args['_id']);
}
// default to full projection

@@ -92,3 +102,3 @@ let project;

if (operation) {
project = createProjection(operation);
project = createProjection(col, operation);
}

@@ -110,24 +120,33 @@ return queryFunction({

*/
function createProjection(info) {
// TODO: PR graphql typings to add path prop
const path = info.path;
let selections = info.operation.selectionSet.selections;
for (const fieldName of path) {
for (const selection of selections) {
const field = selection;
if (fieldName === field.name.value) {
if (field.selectionSet) {
selections = field.selectionSet.selections;
continue;
}
function createProjection(col, info) {
const projection = { _id: 1 };
const ast = info.fieldASTs[0];
const collectionFields = col && col.def && col.def.fields;
const selections = ast.selectionSet && ast.selectionSet.selections.slice();
if (!collectionFields || !selections || !selections.length)
return;
let selection;
while (selection = selections.shift()) {
switch (selection.kind) {
case 'Field': {
const graphQlField = selection;
const graphQLFieldName = graphQlField.name.value;
const tyrField = collectionFields[graphQLFieldName];
// computed property found, no projection
if (tyrField.def && tyrField.def.get)
return;
projection[graphQLFieldName] = 1;
break;
}
/**
* For fragments, add selection set to array and continue
*/
case 'FragmentSpread': {
const fragmentSpread = selection;
const fragment = info.fragments[fragmentSpread.name.value];
selections.push(...fragment.selectionSet.selections);
break;
}
}
}
if (!selections || !selections.length)
return;
const projection = { _id: 1 };
for (const selection of selections) {
const field = selection;
projection[field.name.value] = 1;
}
return projection;

@@ -191,3 +210,4 @@ }

/**
* Create lazy value to contain fields for a particular tyranid field definition object
* Create lazy value to contain fields for a
* particular tyranid field definition object
*/

@@ -219,8 +239,6 @@ function createFieldThunk(fields, map, path = '') {

if (typeof field === 'string') {
warn(`Ignoring field: "${field}" at path "${path}" as it is a string`);
return;
return createGraphQLFieldConfig({ is: field }, map, fieldName, path, single);
}
// TODO: determine why this is necessary
if ('def' in field) {
// grab def property on field and recast
field = field.def;

@@ -241,3 +259,3 @@ }

args: createArguments(colFields, map),
resolve(parent, args, context, ast) {
resolve(parent, args, context, info) {
const linkField = parent[fieldName];

@@ -257,3 +275,4 @@ args = args || {};

const argIdSet = new Set(argIds);
linkArgs['_id'] = linkIds.filter((id) => argIdSet.has(id.toString()));
linkArgs['_id'] = linkIds
.filter((id) => argIdSet.has(id.toString()));
}

@@ -263,3 +282,3 @@ else {

}
return linkType.resolve(parent, linkArgs, context, ast);
return linkType.resolve(parent, linkArgs, context, info);
}

@@ -328,3 +347,3 @@ };

if (!defFields) {
warn(`Ignoring object field at path "${path}" as it has poorly defined schema`);
warn(`Ignoring object field at path "${path}" as it has no schema`);
return;

@@ -340,6 +359,6 @@ }

}
default: return error(`Unable to map type "${field.is}" for field at path "${path}" to GraphQLType instance`);
default: return error(`Unable to map type "${field.is}" for field at path "${path}"`);
}
}
exports.createGraphQLFieldConfig = createGraphQLFieldConfig;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBCQUFvQixTQUFTLENBQUMsQ0FBQTtBQUM5QiwwQkFBeUIsU0FBUyxDQUFDLENBQUE7QUFDbkMsMEJBa0JPLFNBQVMsQ0FBQyxDQUFBO0FBS2pCOzs7R0FHRztBQUNILG9CQUEyQixHQUFlO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXhDLEdBQUcsQ0FBQyxPQUFPLEdBQWdDLE1BQU0sQ0FBQyxNQUFNLENBQ3RELFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEdBQUcsTUFBTSxFQUFrQztRQUNqRixNQUFNLE9BQU8sR0FBRztZQUNkLElBQUk7WUFDSixJQUFJO1NBQ0wsQ0FBQztRQUVGLE1BQU0sQ0FBQyxpQkFBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDLEVBQ0QsRUFBRSxNQUFNLEVBQUUsQ0FDWCxDQUFDO0FBQ0osQ0FBQztBQWRlLGtCQUFVLGFBY3pCLENBQUE7QUFHRCxjQUFjLE9BQWU7SUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsZUFBZSxPQUFlO0lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUdEOztHQUVHO0FBQ0gsNkJBQW9DLEdBQWU7SUFDakQsTUFBTSxPQUFPLEdBQXlCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDaEQsTUFBTSxXQUFXLEdBQTBCLEVBQUUsQ0FBQztJQUU5QyxHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHO1FBQ3pCLE1BQU0sSUFBSSxHQUFH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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBCQUFvQixTQUFTLENBQUMsQ0FBQTtBQUM5QiwwQkFBeUIsU0FBUyxDQUFDLENBQUE7QUFFbkMsMEJBb0JPLFNBQVMsQ0FBQyxDQUFBO0FBU2pCLGNBQ0UsT0FBZTtJQUVmLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0JBQStCLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUdELGVBQ0UsT0FBZTtJQUVmLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUdEOzs7R0FHRztBQUNILG9CQUNFLEdBQWU7SUFFZixNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV4QyxHQUFHLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ3pCLFVBQVUsRUFDUixLQUFLLEVBQ0wsSUFBSSxFQUNKLFNBQVMsRUFDVCxJQUFJLEdBQUcsTUFBTSxFQUNrQjtRQUMvQixNQUFNLE9BQU8sR0FBRztZQUNkLElBQUk7WUFDSixJQUFJO1NBQ0wsQ0FBQztRQUVGLE1BQU0sQ0FBQyxpQkFBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDLEVBQ0QsRUFBRSxNQUFNLEVBQUUsQ0FDbUIsQ0FBQztBQUNsQyxDQUFDO0FBckJlLGtCQUFVLGFBcUJ6QixDQUFBO0FBSUQsNkJBQ0UsR0FBZTtJQUVmLE1BQU0sT0FBTyxHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2hELE1BQU0sV0FBVyxHQUEwQixFQUFFLENBQUM7SUFFOUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRztRQUN6QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsR0FB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
"use strict";
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
const tyranid_1 = require('tyranid');
const mongodb_1 = require('mongodb');
const graphql_1 = require('graphql');
function warn(message) {
console.warn(`tyranid-graphql: WARNING -- ${ message }`);
}
function error(message) {
throw new Error(`tyranid-graphql: ERROR -- ${ message }`);
}
/**

@@ -27,11 +35,2 @@ * adds a `graphql(query)` method to tyranid which returns

exports.graphqlize = graphqlize;
function warn(message) {
console.warn(`tyranid-graphql: WARNING -- ${ message }`);
}
function error(message) {
throw new Error(`tyranid-graphql: ERROR -- ${ message }`);
}
/**
* tyranid schema -> graphql schema
*/
function createGraphQLSchema(tyr) {

@@ -48,3 +47,5 @@ const typeMap = new Map();

queryFields[name] = collectionFieldConfig(col, typeMap, true);
queryFields[name + 's'] = collectionFieldConfig(col, typeMap, false);
// TODO: less hacky...
const suffix = name[name.length - 1] === 's' ? 'es' : 's';
queryFields[name + suffix] = collectionFieldConfig(col, typeMap, false);
});

@@ -71,2 +72,3 @@ return new graphql_1.GraphQLSchema({

const fields = col.def.fields;
const isEnum = col.def.enum;
if (!fields) {

@@ -87,2 +89,10 @@ return error(`Collection "${ col.def.name }" has no fields property.`);

const query = argParser(parent, args);
if (isEnum) {
if (!(args && args['_id'])) {
console.log(col.def.values);
const ids = (col.def.values || []).map(row => row['_id']);
args = { _id: ids };
}
return single ? col.byId(args['_id'][0]) : col.byIds(args['_id']);
}
// default to full projection

@@ -95,3 +105,3 @@ let project;

if (operation) {
project = createProjection(operation);
project = createProjection(col, operation);
}

@@ -113,23 +123,33 @@ return queryFunction({

*/
function createProjection(info) {
// TODO: PR graphql typings to add path prop
const path = info.path;
let selections = info.operation.selectionSet.selections;
for (const fieldName of path) {
for (const selection of selections) {
const field = selection;
if (fieldName === field.name.value) {
if (field.selectionSet) {
selections = field.selectionSet.selections;
continue;
function createProjection(col, info) {
const projection = { _id: 1 };
const ast = info.fieldASTs[0];
const collectionFields = col && col.def && col.def.fields;
const selections = ast.selectionSet && ast.selectionSet.selections.slice();
if (!collectionFields || !selections || !selections.length) return;
let selection;
while (selection = selections.shift()) {
switch (selection.kind) {
case 'Field':
{
const graphQlField = selection;
const graphQLFieldName = graphQlField.name.value;
const tyrField = collectionFields[graphQLFieldName];
// computed property found, no projection
if (tyrField.def && tyrField.def.get) return;
projection[graphQLFieldName] = 1;
break;
}
}
/**
* For fragments, add selection set to array and continue
*/
case 'FragmentSpread':
{
const fragmentSpread = selection;
const fragment = info.fragments[fragmentSpread.name.value];
selections.push.apply(selections, _toConsumableArray(fragment.selectionSet.selections));
break;
}
}
}
if (!selections || !selections.length) return;
const projection = { _id: 1 };
for (const selection of selections) {
const field = selection;
projection[field.name.value] = 1;
}
return projection;

@@ -189,3 +209,4 @@ }

/**
* Create lazy value to contain fields for a particular tyranid field definition object
* Create lazy value to contain fields for a
* particular tyranid field definition object
*/

@@ -217,8 +238,6 @@ function createFieldThunk(fields, map) {

if (typeof field === 'string') {
warn(`Ignoring field: "${ field }" at path "${ path }" as it is a string`);
return;
return createGraphQLFieldConfig({ is: field }, map, fieldName, path, single);
}
// TODO: determine why this is necessary
if ('def' in field) {
// grab def property on field and recast
field = field.def;

@@ -238,3 +257,3 @@ }

args: createArguments(colFields, map),
resolve: function resolve(parent, args, context, ast) {
resolve: function resolve(parent, args, context, info) {
const linkField = parent[fieldName];

@@ -255,3 +274,3 @@ args = args || {};

}
return linkType.resolve(parent, linkArgs, context, ast);
return linkType.resolve(parent, linkArgs, context, info);
}

@@ -321,3 +340,3 @@ };

if (!defFields) {
warn(`Ignoring object field at path "${ path }" as it has poorly defined schema`);
warn(`Ignoring object field at path "${ path }" as it has no schema`);
return;

@@ -334,6 +353,6 @@ }

default:
return error(`Unable to map type "${ field.is }" for field at path "${ path }" to GraphQLType instance`);
return error(`Unable to map type "${ field.is }" for field at path "${ path }"`);
}
}
exports.createGraphQLFieldConfig = createGraphQLFieldConfig;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQkFBb0IsQUFBUyxBQUFDO0FBQzlCLDBCQUF5QixBQUFTLEFBQUM7QUFDbkMsMEJBa0JPLEFBQVMsQUFBQztBQUtqQixBQUdHOzs7O0FBQ0gsb0JBQTJCLEFBQWU7QUFDeEMsVUFBTSxBQUFNLFNBQUcsQUFBbUIsb0JBQUMsQUFBRyxBQUFDLEFBQUM7QUFFeEMsQUFBRyxRQUFDLEFBQU8saUJBQXVDLEFBQU0sT0FDdEQsQUFBVTtZQUFFLEFBQUs7WUFBRSxBQUFJO1lBQUUsQUFBUzs7WUFBRSxBQUFJLGlDQUFHLEFBQU0sQUFBa0M7O0FBQ2pGLGNBQU0sQUFBTztBQUNYLEFBQUk7QUFDSixBQUFJLEFBQ0wsQUFBQztBQUhjO0FBS2hCLEFBQU0sZUFBQyxVQUFPLFFBQUMsQUFBTSxRQUFFLEFBQUssT0FBRSxBQUFJLE1BQUUsQUFBTyxTQUFFLEFBQVMsQUFBQyxBQUFDLEFBQzFEO0FBQUMsS0FSd0MsQUFBTSxFQVMvQyxFQUFFLEFBQU0sQUFBRSxBQUNYLEFBQUMsQUFDSjtBQUFDO0FBZGUsUUFBVSxhQWN6QjtBQUdELGNBQWMsQUFBZTtBQUMzQixBQUFPLFlBQUMsQUFBSSxBQUFDLHFDQUErQixBQUFPLE9BQUUsQUFBQyxBQUFDLEFBQ3pEO0FBQUM7QUFFRCxlQUFlLEFBQWU7QUFDNUIsVUFBTSxJQUFJLEFBQUssQUFBQyxvQ0FBNkIsQUFBTyxPQUFFLEFBQUMsQUFBQyxBQUMxRDtBQUFDO0FBR0QsQUFFRzs7O0FBQ0gsNkJBQW9DLEFBQWU7QUFDakQsVUFBTSxBQUFPLFVBQXlCLElBQUksQUFBRyxBQUFFLEFBQUM7QUFDaEQsVUFBTSxBQUFXLGNBQTBCLEFBQUUsQUFBQztBQUU5QyxBQUFHLFFBQUMsQUFBVyxZQUFDLEFBQU8sUUFBQyxBQUFHO0FBQ3pCLGNBQU0sQUFBSSxPQUFHLEFBQUcsSUFBQyxB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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDBCQUFvQixBQUFTLEFBQUM7QUFDOUIsMEJBQXlCLEFBQVMsQUFBQztBQUVuQywwQkFvQk8sQUFBUyxBQUFDO0FBU2pCLGNBQ0UsQUFBZTtBQUVmLEFBQU8sWUFBQyxBQUFJLEFBQUMscUNBQStCLEFBQU8sT0FBRSxBQUFDLEFBQUMsQUFDekQ7QUFBQztBQUdELGVBQ0UsQUFBZTtBQUVmLFVBQU0sSUFBSSxBQUFLLEFBQUMsb0NBQTZCLEFBQU8sT0FBRSxBQUFDLEFBQUMsQUFDMUQ7QUFBQztBQUdELEFBR0c7Ozs7QUFDSCxvQkFDRSxBQUFlO0FBRWYsVUFBTSxBQUFNLFNBQUcsQUFBbUIsb0JBQUMsQUFBRyxBQUFDLEFBQUM7QUFFeEMsQUFBRyxRQUFDLEFBQU8saUJBQVUsQUFBTSxPQUN6QixBQUFVO1lBQ1IsQUFBSztZQUNMLEFBQUk7WUFDSixBQUFTOztZQUNULEFBQUksaUNBQUcsQUFBTSxBQUNrQjs7QUFDL0IsY0FBTSxBQUFPO0FBQ1gsQUFBSTtBQUNKLEFBQUksQUFDTCxBQUFDO0FBSGM7QUFLaEIsQUFBTSxlQUFDLFVBQU8sUUFBQyxBQUFNLFFBQUUsQUFBSyxPQUFFLEFBQUksTUFBRSxBQUFPLFNBQUUsQUFBUyxBQUFDLEFBQUMsQUFDMUQ7QUFBQyxLQWJXLEFBQU0sRUFjbEIsRUFBRSxBQUFNLEFBQUUsQUFDbUIsQUFBQyxBQUNsQztBQUFDO0FBckJlLFFBQVUsYUFxQnpCO0FBSUQsNkJBQ0UsQUFBZTtBQUVmLFVBQU0sQUFBTyxVQUF5QixJQUFJLEFBQUcsQUFBRSxBQUFDO0FBQ2hELFVBQU0sQUFBVyxjQUEwQixBQUFFLEFBQUM7QUFFOUMsQUFBRyxRQUFDLEFBQVcsWUFBQyxBQUFPLFFBQUMsQUFBRztBQUN6QixjQUFNLEFBQUksT0FBRyxBQUFHLElBQUMsQUFBRyxJQUFDLEFBQUksQUFBQztBQUMxQixBQUFFLEFBQUMsWUFBQyxDQUFDLEFBQUcsSUFBQyxBQUFHLElBQUMsQUFBTSxBQUFDLFFBQUMsQUFBTSxPQUFDLEFBQUssQUFBQyxzQkFBZSxBQUFJLElBQWtCLEFBQUMsQUFBQztBQUV6RSxjQUFNLEFBQU0sU0FBRyxBQUFnQixpQkFBQyxBQUFHLElBQUMsQUFBRyxJQUFDLEFBQU0sUUFBRSxBQUFPLEFBQUUsYUFBRyxBQUFJLElBQUcsQUFBQyxBQUFDO0FBRXJFLGNBQU0sQUFBYyxpQkFBRyxJQUFJLFVBQWlCLGtCQUFDLEVBQUUsQUFBSSxZQUFFLEFBQU0sQUFBRSxBQUFDLEFBQUM7QUFFL0QsQUFBTyxnQkFBQyxBQUFHLElBQUMsQUFBSSxNQUFFLEFBQWMsQUFBQyxBQUFDO0FBRWxDLEFBQW9EO0FBQ3BELEFBQVcsb0JBQUMsQUFBSSxBQUFDLFFBQUcsQUFBcUIsc0JBQUMsQUFBRyxLQUFFLEFBQU8sU0FBRSxBQUFJLEFBQUMsQUFBQztBQUU5RCxBQUFzQjtBQUN0QixjQUFNLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsT0FBSyxBQUFHLE1BQUcsQUFBSSxPQUFHLEFBQUcsQUFBQztBQUMxRCxBQUFXLG9CQUFDLEFBQUksT0FBRyxBQUFNLEFBQUMsVUFBRyxBQUFxQixzQkFBQyxBQUFHLEtBQUUsQUFBTyxTQUFFLEFBQUssQUFBQyxBQUFDLEFBQzFFO0FBQUMsQUFBQyxBQUFDO0FBRUgsQUFBTSxlQUFLLFVBQWE7QUFDdEIsQUFBSyxtQkFBTSxVQUFpQjtBQUMxQixBQUFJLGtCQUFFLEFBQU87QUFDYixBQUFNLG9CQUFFLEFBQVcsQUFDcEIsQUFBQyxBQUNILEFBQUMsQUFBQyxBQUNMO0FBTGlDLFNBQXRCO0FBRGdCLEtBQWxCO0FBTVI7QUE5QmUsUUFBbUIsc0JBOEJsQztBQUdELEFBR0c7Ozs7QUFDSCwrQkFDRSxBQUEyQixLQUMzQixBQUF5QjtRQUN6QixBQUFNLCtEQUFHLEFBQUk7O0FBRWIsVUFBTSxBQUFjLGlCQUFHLEFBQUcsSUFBQyxBQUFHLElBQUMsQUFBRyxJQUFDLEFBQUcsSUFBQyxBQUFJLEFBQUMsQUFBQztBQUU3QyxBQUFFLEFBQUMsUUFBQyxDQUFDLEFBQWMsQUFBQyxnQkFBQyxBQUFDO0FBQ3BCLEFBQU0sZUFBQyxBQUFLLEFBQUMsc0JBQWUsQUFBRyxJQUFDLEFBQUcsSUFBQyxBQUFJLElBQWtDLEFBQUMsQUFBQyxBQUM5RTtBQUFDO0FBRUQsVUFBTSxBQUFNLFNBQUcsQUFBRyxJQUFDLEFBQUcsSUFBQyxBQUFNLEFBQUM7QUFDOUIsVUFBTSxBQUFNLFNBQUcsQUFBRyxJQUFDLEFBQUcsSUFBQyxBQUFJLEFBQUM7QUFFNUIsQUFBRSxBQUFDLFFBQUMsQ0FBQyxBQUFNLEFBQUMsUUFBQyxBQUFDO0FBQ1osQUFBTSxlQUFDLEFBQUssQUFBQyxzQkFBZSxBQUFHLElBQUMsQUFBRyxJQUFDLEFBQUksSUFBMkIsQUFBQyxBQUFDLEFBQ3ZFO0FBQUM7QUFFRCxVQUFNLEFBQUksT0FBRyxBQUFlLGdCQUFDLEFBQU0sUUFBRSxBQUFHLEFBQUMsQUFBQztBQUUxQyxVQUFNLEFBQWEsZ0JBQ2pCLEFBQU0sU0FDRixBQUFHLElBQUMsQUFBTyxRQUFDLEFBQUksS0FBQyxBQUFHLEFBQUMsT0FDckIsQUFBRyxJQUFDLEFBQU8sUUFBQyxBQUFJLEtBQUMsQUFBRyxBQUFDLEFBQUM7QUFFNUIsVUFBTSxBQUFJLE9BQUcsQUFBTSxTQUNmLEFBQWMsaUJBQ2QsSUFBSSxVQUFXLFlBQUMsQUFBYyxBQUFDLEFBQUM7QUFFcEMsVUFBTSxBQUFTLFlBQUcsQUFBb0IscUJBQUMsQUFBTSxBQUFDLEFBQUM7QUFFL0MsQUFBTTtBQUNKLEFBQUk7QUFDSixBQUFJO0FBQ0osQUFBTyxrQ0FBQyxBQUFNLFFBQUUsQUFBSSxNQUFFLEFBQU8sU0FBRSxBQUFTO0FBQ3RDLEFBRUc7OztBQUNILGtCQUFNLEFBQUssUUFBRyxBQUFTLFVBQUMsQUFBTSxRQUFFLEFBQUksQUFBQyxBQUFDO0FBRXRDLEFBQUUsQUFBQyxnQkFBQyxBQUFNLEFBQUMsUUFBQyxBQUFDO0FBQ1gsQUFBRSxBQUFDLG9CQUFDLEFBQUMsRUFBQyxBQUFJLFFBQUksQUFBSSxLQUFDLEFBQUssQUFBQyxBQUFDLEFBQUMsU0FBQyxBQUFDO0FBQzNCLEFBQU8sNEJBQUMsQUFBRyxJQUFDLEFBQUcsSUFBQyxBQUFHLElBQUMsQUFBTSxBQUFDLEFBQUM7QUFDNUIsMEJBQU0sQUFBRyxNQUFHLENBQUMsQUFBRyxJQUFDLEFBQUcsSUFBQyxBQUFNLFVBQUksQUFBRSxBQUFDLElBQUMsQUFBRyxJQUFFLEFBQVEsR0FBVCxJQUFjLEFBQUcsSUFBQyxBQUFLLEFBQUMsQUFBQyxBQUFDO0FBQ2pFLEFBQUksMkJBQUcsRUFBRSxBQUFHLEtBQUUsQUFBRyxBQUFFLEFBQUMsQUFDdEI7QUFBQztBQUVELEFBQU0sdUJBQUMsQUFBTSxTQUNULEFBQUcsSUFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQUssQUFBQyxPQUFDLEFBQUMsQUFBQyxBQUFDLE1BQ3hCLEFBQUcsSUFBQyxBQUFLLE1BQUMsQUFBSSxLQUFDLEFBQUssQUFBQyxBQUFDLEFBQUMsQUFDN0I7QUFBQztBQUVELEFBQTZCO0FBQzdCLGdCQUFJLEFBQVksQUFBQztBQUVqQixBQUdHOzs7O0FBQ0gsQUFBRSxBQUFDLGdCQUFDLEFBQVMsQUFBQyxXQUFDLEFBQUM7QUFDZCxBQUFPLDBCQUFHLEFBQWdCLGlCQUFDLEFBQUcsS0FBRSxBQUFTLEFBQUMsQUFBQyxBQUM3QztBQUFDO0FBRUQsQUFBTTtBQUNKLEFBQUs7QUFDTCxBQUFNLHdCQUFFLEFBQU87QUFDZixBQUFJLHNCQUFFLEFBQU8sV0FBSSxBQUFPLFFBQUMsQUFBSTtBQUM3QixBQUFJLHNCQUFFLEFBQU8sV0FBSSxBQUFPLFFBQUMsQUFBSSxBQUM5QixBQUFDLEFBQUMsQUFDTDtBQU51QixhQUFkLEFBQWE7QUFNckIsQUFDRixBQUFDLEFBQ0o7QUF4Q1M7QUF3Q1I7QUF2RWUsUUFBcUIsd0JBdUVwQztBQUdELEFBSUc7Ozs7O0FBQ0gsMEJBQ0UsQUFBMkIsS0FDM0IsQUFBd0I7QUFHeEIsVUFBTSxBQUFVLGFBQVEsRUFBRSxBQUFHLEtBQUUsQUFBQyxBQUFFLEFBQUM7QUFDbkMsVUFBTSxBQUFHLE1BQUcsQUFBSSxLQUFDLEFBQVMsVUFBQyxBQUFDLEFBQUMsQUFBQztBQUM5QixVQUFNLEFBQWdCLG1CQUFHLEFBQUcsT0FBSSxBQUFHLElBQUMsQUFBRyxPQUFJLEFBQUcsSUFBQyxBQUFHLElBQUMsQUFBTSxBQUFDO0FBQzFELFVBQU0sQUFBVSxhQUFHLEFBQUcsSUFBQyxBQUFZLGdCQUFJLEFBQUcsSUFBQyxBQUFZLGFBQUMsQUFBVSxXQUFDLEFBQUssQUFBRSxBQUFDO0FBRTNFLEFBQUUsQUFBQyxRQUFDLENBQUMsQUFBZ0Isb0JBQUksQ0FBQyxBQUFVLGNBQUksQ0FBQyxBQUFVLFdBQUMsQUFBTSxBQUFDLFFBQUMsQUFBTSxBQUFDO0FBRW5FLFFBQUksQUFBZ0MsQUFBQztBQUNyQyxXQUFPLEFBQVMsWUFBRyxBQUFVLFdBQUMsQUFBSyxBQUFFLFNBQUUsQUFBQztBQUV0QyxBQUFNLEFBQUMsZ0JBQUMsQUFBUyxVQUFDLEFBQUksQUFBQyxBQUFDLEFBQUM7QUFFdkIsaUJBQUssQUFBTztBQUFFLEFBQUM7QUFDYiwwQkFBTSxBQUFZLGVBQUcsQUFBa0IsQUFBQztBQUN4QywwQkFBTSxBQUFnQixtQkFBRyxBQUFZLGFBQUMsQUFBSSxLQUFDLEFBQUssQUFBQztBQUNqRCwwQkFBTSxBQUFRLFdBQUcsQUFBZ0IsaUJBQUMsQUFBZ0IsQUFBUSxBQUFDO0FBRTNELEFBQXlDO0FBQ3pDLEFBQUUsQUFBQyx3QkFBQyxBQUFRLFNBQUMsQUFBRyxPQUFJLEFBQVEsU0FBQyxBQUFHLElBQUMsQUFBRyxBQUFDLEtBQUMsQUFBTSxBQUFDO0FBRTdDLEFBQVUsK0JBQUMsQUFBZ0IsQUFBQyxvQkFBRyxBQUFDLEFBQUM7QUFDakMsQUFBSyxBQUFDLEFBQ1I7QUFBQztBQUVELEFBRUc7OztBQUNILGlCQUFLLEFBQWdCO0FBQUUsQUFBQztBQUN0QiwwQkFBTSxBQUFjLGlCQUFHLEFBQTJCLEFBQUM7QUFDbkQsMEJBQU0sQUFBUSxXQUFHLEFBQUksS0FBQyxBQUFTLFVBQUMsQUFBYyxlQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsQUFBQztBQUMzRCxBQUFVLCtCQUFDLEFBQUksQUFBQywwQ0FBRyxBQUFRLFNBQUMsQUFBWSxhQUFDLEFBQVUsQUFBQyxBQUFDO0FBQ3JELEFBQUssQUFBQyxBQUNSO0FBQUMsQUFFSCxBQUFDLEFBRUg7O0FBQUM7QUFFRCxBQUFNLFdBQUMsQUFBVSxBQUFDLEFBQ3BCO0FBQUM7QUE1Q2UsUUFBZ0IsbUJBNEMvQjtBQUdELEFBRUc7OztBQUNILHlCQUNFLEFBQStCLFFBQy9CLEFBQXlCO0FBRXpCLFVBQU0sQUFBTSxTQUFrQyxBQUFFLEFBQUM7QUFFakQsQUFBRyxBQUFDLFNBQUMsTUFBTSxBQUFTLGFBQUksQUFBTSxBQUFDLFFBQUMsQUFBQztBQUMvQixBQUEwQztBQUMxQyxjQUFNLEFBQUssUUFBSSxBQUFNLE9BQUMsQUFBUyxBQUFTLFdBQUMsQUFBaUMsQUFBQztBQUUzRSxBQUFFLEFBQUMsWUFBQyxBQUFLLE1BQUMsQUFBRSxBQUFJLE1BQUMsQUFBSyxNQUFDLEFBQUUsT0FBSyxBQUFRLEFBQUMsQUFBSSxZQUFDLEFBQUssTUFBQyxBQUFFLE9BQUssQUFBTyxBQUFDLEFBQUMsU0FBQyxBQUFDO0FBQ2xFLGtCQUFNLEFBQVMsWUFBRyxBQUF3Qix5QkFDeEMsQUFBSyxPQUFFLEFBQUcsS0FBRSxBQUFTLFdBQUUsQUFBRSxJQUFFLEFBQUksQUFDaEMsQUFBQztBQUVGLEFBQUUsQUFBQyxnQkFBQyxBQUFTLGFBQUksVUFBVSxXQUFDLEFBQVMsVUFBQyxBQUFJLEFBQUMsQUFBQyxPQUFDLEFBQUM7QUFDNUMsQUFBTSx1QkFBQyxBQUFTLEFBQUM7QUFDZixBQUFJLDBCQUFFLElBQUksVUFBVyxZQUFDLEFBQVMsVUFBQyxBQUFJLEFBQUMsQUFDdEMsQUFBQyxBQUNKO0FBSHNCO0FBR3JCO0FBQUEsQUFBQyxBQUNKO0FBQUM7QUFFRCxBQUFFLEFBQUMsWUFBQyxBQUFLLE1BQUMsQUFBSSxBQUFJLFFBQUMsQUFBSyxNQUFDLEFBQUUsT0FBSyxBQUFPLFdBQUksQUFBSyxNQUFDLEFBQUUsTUFBSSxBQUFLLE1BQUMsQUFBRSxHQUFDLEFBQUksQUFBQyxBQUFDLE1BQUMsQUFBQztBQUN0RSxBQUFNLG1CQUFDLEFBQVMsQUFBQztBQUNmLEFBQUksc0JBQUUsSUFBSSxVQUFXLFlBQUMsVUFBUyxBQUFDLEFBQ2pDLEFBQUMsQUFDSjtBQUhzQjtBQUdyQixBQUVIO0FBQUM7QUFDRCxBQUFNLFdBQUMsQUFBTSxBQUFDLEFBQ2hCO0FBQUM7QUE5QmUsUUFBZSxrQkE4QjlCO0FBR0QsQUFFRzs7O0FBQ0gsOEJBQ0UsQUFBK0I7QUFFL0IsQUFBTSxXQUFDLFVBQVUsQUFBVyxRQUFFLEFBQVM7QUFDckMsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFJLEFBQUMsTUFBQyxBQUFNLE9BQUMsQUFBRSxBQUFDO0FBRXJCLGNBQU0sQUFBSyxRQUFRLEFBQUUsQUFBQztBQUN0QixBQUFHLEFBQUMsYUFBQyxNQUFNLEFBQUksUUFBSSxBQUFJLEFBQUMsTUFBQyxBQUFDO0FBQ3hCLEFBQStCO0FBQy9CLGtCQUFNLEFBQUssUUFBSSxBQUFNLE9BQUMsQUFBSSxBQUFTLE1BQUMsQUFBaUMsQUFBQztBQUN0RSxBQUFFLEFBQUMsZ0JBQUUsQUFBSyxNQUFDLEFBQUksQUFDWCxRQUFDLEFBQUssTUFBQyxBQUFFLE9BQUssQUFBUyxBQUFDLEFBQ3hCLGFBQUMsQUFBSyxNQUFDLEFBQUUsT0FBSyxBQUFPLFdBQUksQUFBSyxNQUFDLEFBQUUsTUFBSSxBQUFLLE1BQUMsQUFBRSxHQUFDLEFBQUksQUFBQyxBQUFDLE1BQUMsQUFBQztBQUN4RCxBQUFLLHNCQUFDLEFBQUksQUFBQztBQUNULEFBQUcseUJBQUUsQUFBRSxHQUFDLEFBQU0sT0FBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsT0FBQyxBQUFHLElBQUUsQUFBTyxFQUFSLElBQWEsSUFBSSxVQUFRLFNBQUMsQUFBRSxBQUFDLEFBQUMsQUFDOUQsQUFBQyxBQUNKO0FBSGdCO0FBR2YsQUFBQyxBQUFJLG1CQUFDLEFBQUM7QUFDTixBQUFLLHNCQUFDLEFBQUksQUFBQztBQUNULEFBQUcseUJBQUUsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUNoQixBQUFDLEFBQ0o7QUFIZ0I7QUFHZixBQUNIO0FBQUM7QUFFRCxBQUFNLGVBQUMsQUFBSyxBQUFDLEFBQ2Y7QUFBQyxBQUFDLEFBQ0o7QUFBQztBQXpCZSxRQUFvQix1QkF5Qm5DO0FBR0QsQUFHRzs7OztBQUNILDBCQUNFLEFBQXFELFFBQ3JELEFBQXlCO1FBQ3pCLEFBQUksNkRBQUcsQUFBRTs7QUFFVCxBQUFNLFdBQUM7QUFDTCxjQUFNLEFBQVMsWUFBMEIsQUFBRSxBQUFDO0FBRTVDLEFBQUUsQUFBQyxZQUFDLENBQUMsQUFBTSxBQUFDLFFBQUMsQUFBTSxPQUFDLEFBQUssQUFBQyxNQUFzQyxBQUFDLEFBQUM7QUFFbEUsWUFBSSxBQUFTLFlBQUcsQUFBSyxBQUFDO0FBQ3RCLEFBQUcsQUFBQyxhQUFDLE1BQU0sQUFBUyxhQUFJLEFBQU0sQUFBQyxRQUFDLEFBQUM7QUFDL0IsQUFBUyx3QkFBRyxBQUFJLEFBQUM7QUFDakIsa0JBQU0sQUFBSyxRQUFHLEFBQU0sT0FBQyxBQUFTLEFBQUMsQUFBQztBQUNoQyxrQkFBTSxBQUFXLGNBQUcsQUFBd0IseUJBQzFDLEFBQUssT0FBRSxBQUFHLEtBQUUsQUFBUyxBQUFFLGVBQUcsQUFBSSxTQUFHLEFBQVMsU0FBRSxLQUFFLEFBQUksQUFDbkQsQUFBQztBQUNGLEFBQUUsQUFBQyxnQkFBQyxBQUFXLEFBQUMsYUFBQyxBQUFDO0FBQ2hCLEFBQVMsMEJBQUMsQUFBUyxBQUFDLGFBQUcsQUFBVyxBQUFDLEFBQ3JDO0FBQUMsQUFDSDtBQUFDO0FBRUQsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFTLEFBQUMsV0FBQyxBQUFNLE9BQUMsQUFBSyxBQUMxQixnQkFBUyxBQUFJLElBQXdDLEFBQ3RELEFBQUM7QUFFRixBQUFNLGVBQUMsQUFBUyxBQUFDLEFBQ25CO0FBQUMsQUFBQyxBQUNKO0FBQUM7QUE1QmUsUUFBZ0IsbUJBNEIvQjtBQUdELEFBRUc7OztBQUNILGtDQUNFLEFBQTBDLE9BQzFDLEFBQXlCLEtBQ3pCLEFBQWlCLFdBQ2pCLEFBQVksTUFDWixBQUFlO0FBR2YsQUFBRSxBQUFDLFFBQUMsT0FBTyxBQUFLLFVBQUssQUFBUSxBQUFDLFVBQUMsQUFBQztBQUM5QixBQUFNLGVBQUMsQUFBd0IseUJBQzdCLEVBQUUsQUFBRSxJQUFFLEFBQUssQUFBRSxTQUFFLEFBQUcsS0FBRSxBQUFTLFdBQUUsQUFBSSxNQUFFLEFBQU0sQUFDNUMsQUFBQyxBQUNKO0FBQUM7QUFFRCxBQUF3QztBQUN4QyxBQUFFLEFBQUMsUUFBQyxBQUFLLFNBQUksQUFBSyxBQUFDLE9BQUMsQUFBQztBQUNuQixBQUFLLGdCQUFJLEFBQWEsTUFBQyxBQUFpQyxBQUFDLEFBQzNEO0FBQUM7QUFFRCxBQUVHOzs7QUFDSCxVQUFNLEFBQUksT0FBSSxBQUF1QixJQUF4QixJQUNYLEFBQU0sU0FBRyxBQUFJLE9BQUcsSUFBSSxVQUFXLFlBQUMsQUFBSSxBQUFDLEFBQUM7QUFHeEMsQUFBRSxBQUFDLFFBQUMsQUFBSyxNQUFDLEFBQUksQUFBQyxNQUFDLEFBQUM7QUFDZixjQUFNLEFBQUcsTUFBRyxVQUFHLElBQUMsQUFBTSxPQUFDLEFBQUssTUFBQyxBQUFJLEFBQUMsQUFBQztBQUNuQyxjQUFNLEFBQVEsV0FBRyxBQUFxQixzQkFBQyxBQUFHLEtBQUUsQUFBRyxLQUFFLEFBQU0sQUFBQyxBQUFDO0FBQ3pELGNBQU0sQUFBUyxZQUFHLEFBQUcsSUFBQyxBQUFHLElBQUMsQUFBTSxBQUFDO0FBRWpDLEFBQUUsQUFBQyxZQUFDLENBQUMsQUFBUyxBQUFDLFdBQUMsQUFBTSxPQUFDLEFBQUssQUFDMUIseUNBQWtDLEFBQUcsSUFBQyxBQUFHLElBQUMsQUFBSSxJQUFFLEFBQ2pELEFBQUM7QUFFRixBQUFNO0FBQ0osQUFBSSxrQkFBRSxBQUFRLFNBQUMsQUFBSTtBQUNuQixBQUFJLGtCQUFFLEFBQWUsZ0JBQUMsQUFBUyxXQUFFLEFBQUcsQUFBQztBQUNyQyxBQUFPLHNDQUFDLEFBQU0sUUFBRSxBQUFJLE1BQUUsQUFBTyxTQUFFLEFBQUk7QUFDakMsc0JBQU0sQUFBUyxZQUFHLEFBQU0sT0FBQyxBQUFTLEFBQUMsQUFBQztBQUNwQyxBQUFJLHVCQUFHLEFBQUksUUFBSSxBQUFFLEFBQUM7QUFFbEIsQUFBRSxBQUFDLG9CQUFDLENBQUMsQUFBUyxBQUFDLFdBQUMsQUFBTSxPQUFDLEFBQU0sU0FBRyxBQUFJLE9BQUcsQUFBRSxBQUFDO0FBRTFDLEFBQUUsQUFBQyxvQkFBQyxDQUFDLEFBQVEsU0FBQyxBQUFPLEFBQUMsU0FBQyxBQUFDO0FBQ3RCLEFBQU0sMkJBQUMsQUFBSyxBQUNWLDZEQUFzRCxBQUFLLE1BQUMsQUFBSSxJQUFFLEFBQ25FLEFBQUMsQUFDSjtBQUFDO0FBRUQsc0JBQU0sQUFBTyxVQUFHLEFBQUUsR0FBQyxBQUFNLE9BQUMsQUFBUyxBQUFDLEFBQUM7QUFDckMsc0JBQU0sQUFBUSxXQUFRLEFBQUUsQUFBQztBQUV6QixBQUFFLEFBQUMsb0JBQUMsQUFBSSxLQUFDLEFBQUssQUFBQyxBQUFDLFFBQUMsQUFBQztBQUNoQiwwQkFBTSxBQUFNLEFBQUcsU0FBQyxBQUFLLE1BQUMsQUFBTyxRQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsQUFBQyxVQUN0QyxBQUFJLEtBQUMsQUFBSyxBQUFDLFNBQ1gsQ0FBRSxBQUFJLEtBQUMsQUFBSyxBQUFDLEFBQUUsQUFBYSxBQUFDO0FBRWpDLDBCQUFNLEFBQVEsV0FBRyxJQUFJLEFBQUcsSUFBQyxBQUFNLEFBQUMsQUFBQztBQUVqQyxBQUFRLDZCQUFDLEFBQUssQUFBQyxTQUFHLEFBQU8sUUFDdEIsQUFBTSxPQUFFLEFBQU8sRUFBUixJQUFhLEFBQVEsU0FBQyxBQUFHLElBQUMsQUFBRSxHQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUMsQUFBQyxBQUV0RDtBQUFDLEFBQUMsQUFBSSx1QkFBQyxBQUFDO0FBQ04sQUFBUSw2QkFBQyxBQUFLLEFBQUMsU0FBRyxBQUFPLEFBQUMsQUFDNUI7QUFBQztBQUVELEFBQU0sdUJBQUMsQUFBUSxTQUFDLEFBQU8sUUFBQyxBQUFNLFFBQUUsQUFBUSxVQUFFLEFBQU8sU0FBRSxBQUFJLEFBQUMsQUFBQyxBQUMzRDtBQUFDLEFBQ0YsQUFBQyxBQUNKO0FBbkNTO0FBbUNSO0FBRUQsQUFBRSxBQUFDLFFBQUMsQ0FBQyxBQUFLLE1BQUMsQUFBRSxBQUFDLElBQUMsQUFBQztBQUNkLEFBQU0sZUFBQyxBQUFLLEFBQUMsc0NBQStCLEFBQUksSUFBRyxBQUFDLEFBQUMsQUFDdkQ7QUFBQztBQUVELEFBQU0sQUFBQyxZQUFDLEFBQUssTUFBQyxBQUFFLEFBQUMsQUFBQyxBQUFDO0FBRWpCLGFBQUssQUFBUSxBQUFDO0FBQ2QsYUFBSyxBQUFLLEFBQUM7QUFDWCxhQUFLLEFBQU8sQUFBQztBQUNiLGFBQUssQUFBTyxBQUFDO0FBQ2IsYUFBSyxBQUFVLEFBQUM7QUFDaEIsYUFBSyxBQUFNLEFBQUM7QUFDWixhQUFLLEFBQUs7QUFDUixBQUFNO0FBQ0osQUFBSSxzQkFBRSxBQUFJLEtBQUMsVUFBYSxBQUFDLEFBQzFCLEFBQUM7QUFGSztBQUlULGFBQUssQUFBUztBQUNaLEFBQU07QUFDSixBQUFJLHNCQUFFLEFBQUksS0FBQyxVQUFjLEFBQUMsQUFDM0IsQUFBQztBQUZLO0FBSVQsYUFBSyxBQUFRO0FBQ1gsQUFBTTtBQUNKLEFBQUksc0JBQUUsQUFBSSxLQUFDLFVBQVksQUFBQyxBQUN6QixBQUFDO0FBRks7QUFJVCxhQUFLLEFBQVM7QUFDWixBQUFNO0FBQ0osQUFBSSxzQkFBRSxBQUFJLEtBQUMsVUFBVSxBQUFDLEFBQ3ZCLEFBQUM7QUFGSztBQUlULGFBQUssQUFBUztBQUNaLEFBQU07QUFDSixBQUFJLHNCQUFFLEFBQUksS0FBQyxVQUFTLEFBQUMsQUFDdEIsQUFBQztBQUZLO0FBSVQsYUFBSyxBQUFPO0FBQUUsQUFBQztBQUNiLEFBQUUsQUFBQyxvQkFBQyxDQUFDLEFBQUssTUFBQyxBQUFFLEFBQUMsSUFBQyxBQUFDO0FBQ2QsQUFBTSwyQkFBQyxBQUFLLEFBQUMsd0NBQWlDLEFBQUksSUFBRyxBQUFDLEFBQUMsQUFDekQ7QUFBQztBQUVELHNCQUFNLEFBQU8sVUFBRyxBQUF3Qix5QkFDdEMsQUFBSyxNQUFDLEFBQUUsSUFBRSxBQUFHLEtBQUUsQUFBUyxBQUFFLGVBQUcsQUFBSSxJQUFHLE1BQUUsQUFBSyxBQUM1QyxBQUFDO0FBRUYsQUFBRSxBQUFDLG9CQUFDLENBQUMsQUFBTyxBQUFDLFNBQUMsQUFBQztBQUNiLEFBQUksQUFBQyxxREFBMkIsQUFBSSxJQUFrQyxBQUFDLEFBQUM7QUFDeEUsQUFBTSxBQUFDLEFBQ1Q7QUFBQztBQUVELEFBQUUsQUFBQyxvQkFBQyxVQUFVLFdBQUMsQUFBTyxRQUFDLEFBQUksQUFBQyxBQUFDLE9BQUMsQUFBQztBQUM3QixBQUFNO0FBQ0osQUFBSSw4QkFBRSxBQUFPLFFBQUMsQUFBSSxBQUNuQixBQUFDLEFBQ0o7QUFIUztBQUdSLEFBQUMsQUFBSSx1QkFBQyxBQUFDO0FBQ04sQUFBTTtBQUNKLEFBQUksOEJBQUUsQUFBTyxRQUFDLEFBQUk7QUFDbEIsQUFBSSw4QkFBRSxBQUFPLFFBQUMsQUFBSTtBQUNsQixBQUFPLGlDQUFFLEFBQU8sUUFBQyxBQUFPLEFBQ3pCLEFBQUMsQUFDSjtBQUxTO0FBS1IsQUFDSDtBQUFDO0FBRUQsYUFBSyxBQUFRO0FBQUUsQUFBQztBQUNkLHNCQUFNLEFBQU0sU0FBRyxBQUFLLE1BQUMsQUFBTSxBQUFDO0FBRTVCLEFBQUUsQUFBQyxvQkFBQyxDQUFDLEFBQU0sQUFBQyxRQUFDLEFBQUM7QUFDWixBQUFJLEFBQUMsNERBQWtDLEFBQUksSUFBdUIsQUFBQyxBQUFDO0FBQ3BFLEFBQU0sQUFBQyxBQUNUO0FBQUM7QUFFRCxzQkFBTSxBQUFTLFlBQUcsQUFBZ0IsaUJBQUMsQUFBTSxRQUFFLEFBQUcsQUFBRSxTQUFHLEFBQUksSUFBRyxBQUFDLEFBQUM7QUFFNUQsQUFBRSxBQUFDLG9CQUFDLENBQUMsQUFBUyxBQUFDLFdBQUMsQUFBQztBQUNmLEFBQUksQUFBQyw0REFBa0MsQUFBSSxJQUF1QixBQUFDLEFBQUM7QUFDcEUsQUFBTSxBQUFDLEFBQ1Q7QUFBQztBQUVELHNCQUFNLEFBQUksV0FBTyxVQUFpQjtBQUNoQyxBQUFJLEFBQUUsOEJBQUcsQUFBSSxVQUFJLEFBQVMsU0FBRTtBQUM1QixBQUFNLDRCQUFFLEFBQVMsQUFDbEIsQUFBQyxBQUFDO0FBSGdDLGlCQUF0QjtBQUtiLEFBQU07QUFDSixBQUFJLDBCQUFFLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFDakIsQUFBQyxBQUNKO0FBSFM7QUFHUjtBQUVEO0FBQVMsQUFBTSxtQkFBQyxBQUFLLEFBQ25CLDhCQUF1QixBQUFLLE1BQUMsQUFBRSw0QkFBd0IsQUFBSSxJQUFHLEFBQy9ELEFBQUMsQUFDSixBQUFDLEFBRUg7O0FBQUM7QUF0S2UsUUFBd0IsMkJBc0t2QyJ9
{
"name": "tyranid-graphql",
"version": "0.0.6",
"version": "0.0.7",
"description": "GraphQL plugin for tyranid",

@@ -18,3 +18,3 @@ "main": "dist-node4/src/index.js",

"author": "bsouthga@gmail.com",
"license": "MIT",
"license": "Apache-2.0",
"devDependencies": {

@@ -40,3 +40,3 @@ "@types/body-parser": "0.0.32",

"typescript": "^2.0.2",
"tyranid": "^0.1.6"
"tyranid": "^0.1.7"
},

@@ -43,0 +43,0 @@ "dependencies": {

import { Tyr } from 'tyranid';
import { ObjectID } from 'mongodb';
import {

@@ -19,9 +20,29 @@ graphql,

GraphQLResolveInfo,
Selection,
Field,
FragmentSpread,
isLeafType
} from 'graphql';
export type GraphQLOutputTypeMap = Map<string, GraphQLOutputType>;
export type GraphQLOutputTypeMap =
Map<string, GraphQLOutputType>;
function warn(
message: string
) {
console.warn(`tyranid-graphql: WARNING -- ${message}`);
}
function error(
message: string
): never {
throw new Error(`tyranid-graphql: ERROR -- ${message}`);
}
/**

@@ -31,7 +52,14 @@ * adds a `graphql(query)` method to tyranid which returns

*/
export function graphqlize(tyr: typeof Tyr) {
export function graphqlize(
tyr: typeof Tyr
): void {
const schema = createGraphQLSchema(tyr);
tyr.graphql = <Tyr.TyranidGraphQLFunction> Object.assign(
function ({ query, auth, variables, perm = 'view' }: Tyr.TyranidGraphQlQueryOptions) {
tyr.graphql = Object.assign(
function ({
query,
auth,
variables,
perm = 'view'
}: Tyr.TyranidGraphQlQueryOptions) {
const context = {

@@ -45,19 +73,10 @@ auth,

{ schema }
);
) as Tyr.TyranidGraphQLFunction;
}
function warn(message: string) {
console.warn(`tyranid-graphql: WARNING -- ${message}`);
}
function error(message: string): never {
throw new Error(`tyranid-graphql: ERROR -- ${message}`);
}
/**
* tyranid schema -> graphql schema
*/
export function createGraphQLSchema(tyr: typeof Tyr) {
export function createGraphQLSchema(
tyr: typeof Tyr
): GraphQLSchema {
const typeMap: GraphQLOutputTypeMap = new Map();

@@ -78,3 +97,6 @@ const queryFields: GraphQLFieldConfigMap = {};

queryFields[name] = collectionFieldConfig(col, typeMap, true);
queryFields[name + 's'] = collectionFieldConfig(col, typeMap, false);
// TODO: less hacky...
const suffix = name[name.length - 1] === 's' ? 'es' : 's';
queryFields[name + suffix] = collectionFieldConfig(col, typeMap, false);
});

@@ -107,2 +129,3 @@

const fields = col.def.fields;
const isEnum = col.def.enum;

@@ -135,2 +158,14 @@ if (!fields) {

if (isEnum) {
if (!(args && args['_id'])) {
console.log(col.def.values);
const ids = (col.def.values || []).map((row: any) => row['_id']);
args = { _id: ids };
}
return single
? col.byId(args['_id'][0])
: col.byIds(args['_id']);
}
// default to full projection

@@ -144,3 +179,3 @@ let project: any;

if (operation) {
project = createProjection(operation);
project = createProjection(col, operation);
}

@@ -164,26 +199,43 @@

*/
export function createProjection(info: GraphQLResolveInfo): any {
// TODO: PR graphql typings to add path prop
const path = (info as any).path as string[];
export function createProjection(
col: Tyr.CollectionInstance,
info: GraphQLResolveInfo
): any {
let selections = info.operation.selectionSet.selections;
for (const fieldName of path) {
for (const selection of selections) {
const field = selection as Field;
if (fieldName === field.name.value) {
if (field.selectionSet) {
selections = field.selectionSet.selections;
continue;
}
const projection: any = { _id: 1 };
const ast = info.fieldASTs[0];
const collectionFields = col && col.def && col.def.fields;
const selections = ast.selectionSet && ast.selectionSet.selections.slice();
if (!collectionFields || !selections || !selections.length) return;
let selection: Selection | undefined;
while (selection = selections.shift()) {
switch (selection.kind) {
case 'Field': {
const graphQlField = selection as Field;
const graphQLFieldName = graphQlField.name.value;
const tyrField = collectionFields[graphQLFieldName] as any;
// computed property found, no projection
if (tyrField.def && tyrField.def.get) return;
projection[graphQLFieldName] = 1;
break;
}
}
}
if (!selections || !selections.length) return;
/**
* For fragments, add selection set to array and continue
*/
case 'FragmentSpread': {
const fragmentSpread = selection as FragmentSpread;
const fragment = info.fragments[fragmentSpread.name.value];
selections.push(...fragment.selectionSet.selections);
break;
}
const projection: any = { _id: 1 };
}
for (const selection of selections) {
const field = selection as Field;
projection[field.name.value] = 1;
}

@@ -206,6 +258,9 @@

// TODO: why do we need to grab def again?
const field = <Tyr.TyranidFieldDefinition> (fields[fieldName] as any).def;
const field = (fields[fieldName] as any).def as Tyr.TyranidFieldDefinition;
if (field.is && (field.is !== 'object') && (field.is !== 'array')) {
const fieldType = createGraphQLFieldConfig(field, map, fieldName, '', true);
const fieldType = createGraphQLFieldConfig(
field, map, fieldName, '', true
);
if (fieldType && isLeafType(fieldType.type)) {

@@ -241,3 +296,3 @@ argMap[fieldName] = {

// TODO: fix typings on tyranid
const field = <Tyr.TyranidFieldDefinition> (fields[prop] as any).def;
const field = (fields[prop] as any).def as Tyr.TyranidFieldDefinition;
if ( field.link ||

@@ -262,3 +317,4 @@ (field.is === 'mongoid') ||

/**
* Create lazy value to contain fields for a particular tyranid field definition object
* Create lazy value to contain fields for a
* particular tyranid field definition object
*/

@@ -279,3 +335,5 @@ export function createFieldThunk(

const field = fields[fieldName];
const fieldConfig = createGraphQLFieldConfig(field, map, fieldName, `${path}${fieldName}`, true);
const fieldConfig = createGraphQLFieldConfig(
field, map, fieldName, `${path}${fieldName}`, true
);
if (fieldConfig) {

@@ -286,3 +344,5 @@ fieldsObj[fieldName] = fieldConfig;

if (!hasFields) return error(`path "${path}" has no entries in its fields object!`);
if (!hasFields) return error(
`path "${path}" has no entries in its fields object!`
);

@@ -298,3 +358,3 @@ return fieldsObj;

export function createGraphQLFieldConfig(
field: Tyr.TyranidFieldDefinition,
field: Tyr.TyranidFieldDefinition | string,
map: GraphQLOutputTypeMap,

@@ -307,4 +367,5 @@ fieldName: string,

if (typeof field === 'string') {
warn(`Ignoring field: "${field}" at path "${path}" as it is a string`);
return;
return createGraphQLFieldConfig(
{ is: field }, map, fieldName, path, single
);
}

@@ -314,4 +375,3 @@

if ('def' in field) {
// grab def property on field and recast
field = ((field as any).def as Tyr.TyranidFieldDefinition);
field = (field as any).def as Tyr.TyranidFieldDefinition;
}

@@ -331,3 +391,5 @@

if (!colFields) return error(`No fields found for collection ${col.def.name}`);
if (!colFields) return error(
`No fields found for collection ${col.def.name}`
);

@@ -337,3 +399,3 @@ return {

args: createArguments(colFields, map),
resolve(parent, args, context, ast) {
resolve(parent, args, context, info) {
const linkField = parent[fieldName];

@@ -345,3 +407,5 @@ args = args || {};

if (!linkType.resolve) {
return error(`No linkType resolve function found for collection: ${field.link}`);
return error(
`No linkType resolve function found for collection: ${field.link}`
);
}

@@ -353,9 +417,11 @@

if (args['_id']) {
const argIds = <string[]> (Array.isArray(args['_id'])
const argIds = (Array.isArray(args['_id'])
? args['_id']
: [ args['_id'] ]);
: [ args['_id'] ]) as string[];
const argIdSet = new Set(argIds);
linkArgs['_id'] = linkIds.filter((id: any) => argIdSet.has(id.toString()));
linkArgs['_id'] = linkIds
.filter((id: any) => argIdSet.has(id.toString()));
} else {

@@ -365,3 +431,3 @@ linkArgs['_id'] = linkIds;

return linkType.resolve(parent, linkArgs, context, ast);
return linkType.resolve(parent, linkArgs, context, info);
}

@@ -413,3 +479,5 @@ };

const subtype = createGraphQLFieldConfig(field.of, map, fieldName, `${path}_`, false);
const subtype = createGraphQLFieldConfig(
field.of, map, fieldName, `${path}_`, false
);

@@ -445,3 +513,3 @@ if (!subtype) {

if (!defFields) {
warn(`Ignoring object field at path "${path}" as it has poorly defined schema`);
warn(`Ignoring object field at path "${path}" as it has no schema`);
return;

@@ -461,3 +529,3 @@ }

default: return error(
`Unable to map type "${field.is}" for field at path "${path}" to GraphQLType instance`
`Unable to map type "${field.is}" for field at path "${path}"`
);

@@ -464,0 +532,0 @@ }

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