UNPKG

simpl-to-graphql-schema

Version:
86 lines (71 loc) 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getObjectSchema = exports.getFieldSchema = undefined; var _utils = require("./utils"); // Get field key definition var getFieldSchema = exports.getFieldSchema = function getFieldSchema(schema, k, name) { var custom = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; var S = schema._schema; var key = k.substr(k.lastIndexOf(".") + 1); var value = null; // case of nested simpleSchema if (!S[k]) { return ""; } // use custom type if (custom[k]) { value = custom[k]; } else if ((0, _utils.typeDef)(S, k) === Object) { // Only add it if it has fieldName if (schema._objectKeys[k + "."] && schema._objectKeys[k + "."].length) { value = "" + (0, _utils.subGqlType)(k, name); } } else if ((0, _utils.typeDef)(S, k) === Array && S[k + ".$"]) { if (_utils.gqlType[(0, _utils.typeDef)(S, k + ".$")]) { value = "[" + _utils.gqlType[(0, _utils.typeDef)(S, k + ".$")] + "]"; } // Maybe it is an Object else if (!value && schema._objectKeys[k + ".$."]) { value = "[" + (0, _utils.subGqlType)(k, name) + "]"; } } else if ((0, _utils.typeDef)(S, k) instanceof RegExp) { value = "" + _utils.gqlType[String]; } else if ((0, _utils.typeDef)(S, k).constructor.name === "SimpleSchema") { value = "" + (0, _utils.subGqlType)(k, name); } else { value = "" + _utils.gqlType[(0, _utils.typeDef)(S, k)]; } if (!value) { return ""; } return "\n " + key + ": " + value; }; // Set a new GraphQL type definition var getObjectSchema = exports.getObjectSchema = function getObjectSchema(schema, key, name, custom) { var objectKeys = schema._objectKeys; var splitter = objectKeys[key + "."] ? "." : objectKeys[key + ".$."] ? ".$." : null; var getObjectSchemaKey = key + splitter.substr(0, splitter.lastIndexOf(".")); var content = void 0; if (!splitter) { return ""; } if ((0, _utils.typeDef)(schema._schema, getObjectSchemaKey).constructor.name === "SimpleSchema") { var objectSchema = schema.getObjectSchema(getObjectSchemaKey); content = objectKeys[key + splitter].map(function (k) { return "" + getFieldSchema(objectSchema, k, name, custom); }); } else { content = objectKeys[key + splitter].map(function (k) { return "" + getFieldSchema(schema, "" + (key + splitter + k), name, custom); }); } if (!content.length) { return ""; } content = content.reduce(function (a, b) { return "" + a + b; }); return "\n type " + (0, _utils.subGqlType)(key, name) + " {\n " + content + "\n }\n "; };