UNPKG

shyft

Version:

Model driven GraphQL API framework

171 lines (170 loc) 7.3 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatGraphQLError = exports.gql = exports.translateListFn = exports.translateInstanceFn = exports.translateList = exports.translateInstance = exports.addRelayTypePromoterToListFn = exports.addRelayTypePromoterToInstanceFn = exports.addRelayTypePromoterToList = exports.addRelayTypePromoterToInstance = exports.deserializeCursor = exports.serializeCursor = exports.fromBase64 = exports.toBase64 = exports.generateTypeNameUpperCase = exports.generateTypeNamePluralPascalCase = exports.generateTypeNamePlural = exports.generateTypeNamePascalCase = exports.plural = exports.pascalCase = exports.generateTypeName = void 0; var _ = __importStar(require("lodash")); var pluralize = __importStar(require("pluralize")); var protocolGraphqlConstants_1 = require("./protocolGraphqlConstants"); var CustomError_1 = require("../engine/CustomError"); var util_1 = require("../engine/util"); var registry_1 = require("./registry"); function generateTypeName(name) { return _.camelCase(name); } exports.generateTypeName = generateTypeName; function pascalCase(str) { return str.charAt(0).toUpperCase() + str.slice(1); } exports.pascalCase = pascalCase; function plural(str) { return pluralize.plural(str); } exports.plural = plural; function generateTypeNamePascalCase(name) { return pascalCase(generateTypeName(name)); } exports.generateTypeNamePascalCase = generateTypeNamePascalCase; function generateTypeNamePlural(name) { return pluralize.plural(generateTypeName(name)); } exports.generateTypeNamePlural = generateTypeNamePlural; function generateTypeNamePluralPascalCase(name) { return pascalCase(pluralize.plural(generateTypeName(name))); } exports.generateTypeNamePluralPascalCase = generateTypeNamePluralPascalCase; function generateTypeNameUpperCase(name) { return _.snakeCase(name).toUpperCase(); } exports.generateTypeNameUpperCase = generateTypeNameUpperCase; var toBase64 = function (value) { return new Buffer(value.toString()).toString('base64'); }; exports.toBase64 = toBase64; var fromBase64 = function (value) { return new Buffer(value.toString(), 'base64').toString(); }; exports.fromBase64 = fromBase64; var serializeCursor = function (cursor) { return exports.toBase64(JSON.stringify(cursor)); }; exports.serializeCursor = serializeCursor; var deserializeCursor = function (cursor) { try { return JSON.parse(exports.fromBase64(cursor)); } catch (e) { // TODO: check // should throw error, not return // https://github.com/graphql/graphql-js/issues/910 return new Error('Invalid cursor provided'); } }; exports.deserializeCursor = deserializeCursor; var addRelayTypePromoterToInstance = function (typeName, instance) { if (!instance) { return instance; } instance[protocolGraphqlConstants_1.RELAY_TYPE_PROMOTER_FIELD] = typeName; return instance; }; exports.addRelayTypePromoterToInstance = addRelayTypePromoterToInstance; var addRelayTypePromoterToList = function (typeName, list) { return list.map(function (instance) { return exports.addRelayTypePromoterToInstance(typeName, instance); }); }; exports.addRelayTypePromoterToList = addRelayTypePromoterToList; var addRelayTypePromoterToInstanceFn = function (typeName) { return function (instance) { return exports.addRelayTypePromoterToInstance(typeName, instance); }; }; exports.addRelayTypePromoterToInstanceFn = addRelayTypePromoterToInstanceFn; var addRelayTypePromoterToListFn = function (typeName) { return function (list) { return exports.addRelayTypePromoterToList(typeName, list); }; }; exports.addRelayTypePromoterToListFn = addRelayTypePromoterToListFn; var translateInstance = function (entity, instance, _a) { var i18nLanguage = _a.i18nLanguage, i18nDefaultLanguage = _a.i18nDefaultLanguage, i18nLanguageDisableFallback = _a.i18nLanguageDisableFallback; if (!instance || !i18nLanguage || i18nLanguage === i18nDefaultLanguage || !entity.getI18nAttributeNames || !entity.getI18nAttributeNames()) { return instance; } var attributes = entity.getAttributes(); var i18nAttributeNames = entity.getI18nAttributeNames(); i18nAttributeNames.map(function (attributeName) { var required = attributes[attributeName].required; var _a = registry_1.getRegisteredEntityAttribute(entity.name, attributes[attributeName].name), gqlFieldName = _a.fieldName, gqlFieldNameI18n = _a.fieldNameI18n; var translation = instance[gqlFieldNameI18n] ? instance[gqlFieldNameI18n][i18nLanguage] : undefined; if (i18nLanguageDisableFallback) { instance[gqlFieldName] = !util_1.isDefined(translation) && required ? new CustomError_1.CustomError("Translation for '" + gqlFieldName + "' not found", 'TranslationNotFoundError') : translation; } else if (util_1.isDefined(translation)) { instance[gqlFieldName] = translation; } }); return instance; }; exports.translateInstance = translateInstance; var translateList = function (entity, list, context) { return list.map(function (instance) { return exports.translateInstance(entity, instance, context); }); }; exports.translateList = translateList; var translateInstanceFn = function (entity, context) { return function (instance) { return exports.translateInstance(entity, instance, context); }; }; exports.translateInstanceFn = translateInstanceFn; var translateListFn = function (entity, context) { return function (list) { return exports.translateList(entity, list, context); }; }; exports.translateListFn = translateListFn; // emulate gql tag for prettier exports.gql = String.raw; var formatGraphQLError = function (err) { if (err.originalError && err.originalError.message) { var _a = err.originalError, message = _a.message, code = _a.code, meta = _a.meta; var locations = err.locations, path = err.path; return { message: message, locations: locations, path: path, meta: meta, extensions: { code: code }, originalError: err.originalError, }; } return err; }; exports.formatGraphQLError = formatGraphQLError;