UNPKG

yekonga-server

Version:
164 lines (150 loc) 5.1 kB
// @ts-nocheck /*global Yekonga, serverLibrary */ const Kind = serverLibrary.Kind; const GraphQLScalarType = serverLibrary.GraphQLScalarType; const moment = serverLibrary.moment; const H = Yekonga.Helper; module.exports = { Query: { health: (_, params, context) => { return true; } }, Mutation: { health: (_, params, context) => { return true; } }, Date: (new GraphQLScalarType({ name: 'Date', description: 'Date custom scalar type', // parseValue(value) { // return moment(value).toDate(); // value from the client // }, // serialize(value) { // // return moment(value).format(); // return value; // }, // parseLiteral(ast) { // // @ts-ignore // return moment(ast.value).toDate(); // }, serialize(value) { if(value){ if(value.getTime) { return value; } else { return moment(value).format(); } } return (new Date()); // Convert outgoing Date to integer for JSON }, parseValue(value) { return moment(value).toDate(); }, parseLiteral(ast) { if (ast.kind === Kind.INT) { return new Date(parseInt(ast.value, 10)); // Convert hard-coded AST string to integer and then to Date } return null; // Invalid hard-coded value (not an integer) }, })), Any: (new GraphQLScalarType({ name: 'Any', description: 'Any custom scalar type', parseValue(value) { return value; // value from the client }, serialize(value) { // console.debug(value); return value; }, parseLiteral(ast) { // @ts-ignore return ast.value; }, })), Object: (new GraphQLScalarType({ name: 'Object', description: 'Object custom scalar type', parseValue(value) { return value; // value from the client }, serialize(value) { return value; }, parseLiteral(ast) { // @ts-ignore return ast.value; }, })), Array: (new GraphQLScalarType({ name: 'Array', description: 'Array custom scalar type', parseValue(value) { return value; // value from the client }, serialize(value) { return (Array.isArray(value))? value: []; }, parseLiteral(ast) { // @ts-ignore return ast.value; }, })), AnyOrArray: (new GraphQLScalarType({ name: 'AnyOrArray', description: 'AnyOrArray custom scalar type', parseValue(value) { return value; // value from the client }, serialize(value) { return (Array.isArray(value))? value: []; }, parseLiteral(ast) { // @ts-ignore return ast.value; }, })), URL: (new GraphQLScalarType({ name: 'URL', description: 'URL', parseValue(value, _) { var publicDir = Array.isArray(Yekonga.Config.public) ? Yekonga.Config.public[0] : Yekonga.Config.public; var files = H.saveFile(value, `${publicDir}/uploads`); return Array.isArray(files)? files: files; // value from the client }, serialize(value, _) { var images = []; var values = (Array.isArray(value)) ? value : (value ? [value] : []); var defaultImage = Yekonga.Helper.getBaseUrl(`img/placeholder.jpg`); try { for (const val of values) { if (val && val.trim() != '') { if (val.trim().substr(0, 4) == 'http' || val.trim().substr(0, 2) == '//') { images.push(val); } else { images.push(Yekonga.Helper.getBaseUrl(`/uploads/${val}`)); } } else { images.push(defaultImage); } } } catch (error) { console.error(values); console.error(error); } return (Array.isArray(value)) ? images : ((images.length) ? images.pop() : defaultImage); }, parseLiteral(ast, _) { var publicDir = Array.isArray(Yekonga.Config.public) ? Yekonga.Config.public[0] : Yekonga.Config.public; // @ts-ignore var files = H.saveFile(ast.value, `${publicDir}/uploads`); return Array.isArray(files)? files.join(','): files; }, })), }