shyft
Version:
Model driven GraphQL API framework
171 lines (170 loc) • 7.3 kB
JavaScript
;
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;