How to use the graphql.GraphQLScalarType function in graphql

To help you get started, we’ve selected a few graphql examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github Innovic-io / apollo-graphql-pintrest-clone / src / graphql / scalars / image.scalar.ts View on Github external
import { GraphQLScalarType, Kind } from 'graphql';

const parseValue = value => value; // value from the client

const serialize = value => {
  // value sent to the client
  value.buffer = value.buffer.toString('base64');
  return value;
};

const parseLiteral = ast => ast.value; // ast is always string format

const ImageScalarType = new GraphQLScalarType({
  name: 'ImageScalar',
  description: 'Image manipulating scalar',
  parseValue,
  serialize,
  parseLiteral
});

export default ImageScalarType;
github mfix22 / gnt / packages / phone / index.js View on Github external
const { GraphQLScalarType } = require('graphql')
const phone = require('phone')

const TOLL_FREE_PREFIX = ['800', '844', '855', '866', '877', '888']

const parse = (value) => {
  const num = String(value).replace(/\D/g, '').slice(-10)
  if (num.length === 10 && TOLL_FREE_PREFIX.some(v => v === num.substr(0, 3))) {
    return `+1${num}`
  }
  return phone(String(value))[0]
}

// Index 0 is phone, index 1 is country code
module.exports = new GraphQLScalarType({
  name: 'PhoneNumber',
  serialize: parse,
  parseValue: parse,
  parseLiteral (ast) {
    return parse(ast.value)
  }
})
github mimecuvalo / helloworld / server / data / graphql / resolvers / index.js View on Github external
import contentResolvers from './content';
import contentRemoteResolvers from './content_remote';
import { GraphQLScalarType } from 'graphql';
import { Kind } from 'graphql/language';
import userResolvers from './user';
import userRemoteResolvers from './user_remote';

const exampleResolvers = {
  Date: new GraphQLScalarType({
    name: 'Date',
    description: 'Date custom scalar type',
    parseValue(value) {
      return new Date(value); // value from the client
    },
    serialize(value) {
      return value.getTime(); // value sent to the client
    },
    parseLiteral(ast) {
      if (ast.kind === Kind.INT) {
        return parseInt(ast.value, 10); // ast value is always in string format
      }
      return null;
    },
  }),
github iotexproject / iotex-explorer / src / api-gateway / scalars / bignumber-scalar.ts View on Github external
import { BigNumber } from "bignumber.js";
import { ASTNode, GraphQLScalarType } from "graphql";
import * as language from "graphql/language/kinds";

export const BigNumberScalar = new GraphQLScalarType({
  name: "BigNumber",
  description:
    "The BigNumber scalar type represents numeric values with precision as in https://github.com/MikeMcl/bignumber.js/",
  serialize(value: BigNumber): string {
    return new BigNumber(value).toString();
  },
  parseValue(value: string): string {
    return new BigNumber(value).toString(10);
  },
  // value received from the client
  parseLiteral(ast: ASTNode): string | null {
    switch (ast.kind) {
      case language.Kind.INT:
      case language.Kind.FLOAT:
        return new BigNumber(ast.value).toString(10);
      default:
github the-control-group / authx / packages / authx / src / graphql / GraphQLTimestamp.ts View on Github external
}

function parseLiteral(
  ast:
    | { kind: typeof Kind.INT; value: number }
    | { kind: typeof Kind.STRING; value: string }
    | any
): null | Date {
  if (ast.kind === Kind.INT || ast.kind === Kind.STRING) {
    return parseValue(ast.value);
  }

  return null;
}

export const GraphQLTimestamp = new GraphQLScalarType({
  name: "Timestamp",
  description:
    "The javascript `Date` as integer. Type represents date and time as number of milliseconds from start of UNIX epoch.",
  serialize,
  parseValue,
  parseLiteral
});
github parse-community / parse-server / src / GraphQL / loaders / defaultGraphQLTypes.js View on Github external
const parseObjectFields = fields => {
  if (Array.isArray(fields)) {
    return fields.reduce(
      (object, field) => ({
        ...object,
        [field.name.value]: parseValue(field.value),
      }),
      {}
    );
  }

  throw new TypeValidationError(fields, 'Object');
};

const ANY = new GraphQLScalarType({
  name: 'Any',
  description:
    'The Any scalar type is used in operations and types that involve any type of value.',
  parseValue: value => value,
  serialize: value => value,
  parseLiteral: ast => parseValue(ast),
});

const OBJECT = new GraphQLScalarType({
  name: 'Object',
  description:
    'The Object scalar type is used in operations and types that involve objects.',
  parseValue(value) {
    if (typeof value === 'object') {
      return value;
    }
github terascope / teraslice / packages / data-types / src / graphql-helper.ts View on Github external
throw new TSError(`${keyName}: ${keyValue} is not a valid string`);
            }
        }

        if (keyName === 'array') {
            if (keyValue != null && typeof keyValue !== 'boolean') {
                throw new TSError(`${keyName}: ${keyValue} is not a valid boolean`);
            }
        }

        accum[fieldName] = { [keyName]: keyValue };
        return accum;
    }, {});
}

export const GraphQLDataType = new GraphQLScalarType({
    name: 'GraphQLDataType',
    description: 'Scalar type for data type configs',
    serialize,
    parseValue,
    parseLiteral,
});

export function formatSchema(schemaStr: string) {
    const schema = buildSchema(schemaStr, { commentDescriptions: true });
    return printSchema(schema, {
        commentDescriptions: true
    });
}
github olymp / olymp / cms / graphql / server / scalars / time-range.js View on Github external
parseLiteral: function parseLiteral(ast) {
    switch (ast.kind) {
      case _language.Kind.INT:
        return ast.value;
      case _language.Kind.LIST:
        return ast.values.map(timeRange.parseLiteral);
      default:
        return null;
    }
  }
};

exports.default = {
  schema: '\n    scalar TimeRange\n  ',
  resolvers: {
    TimeRange: new _graphql.GraphQLScalarType(timeRange)
  }
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNtcy9ncmFwaHFsL3NlcnZlci9zY2FsYXJzL3RpbWUtcmFuZ2UuZXM2Il0sIm5hbWVzIjpbInRpbWVSYW5nZSIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsInNlcmlhbGl6ZSIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwiT2JqZWN0Iiwia2V5cyIsIm1hcCIsIngiLCJwYXJzZVZhbHVlIiwicGFyc2VMaXRlcmFsIiwiYXN0Iiwia2luZCIsIklOVCIsIkxJU1QiLCJ2YWx1ZXMiLCJzY2hlbWEiLCJyZXNvbHZlcnMiLCJUaW1lUmFuZ2UiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUVBLElBQU1BLFlBQVk7QUFDaEJDLFFBQU0sV0FEVTtBQUVoQkMsZUFBYSx1QkFGRztBQUdoQkMsYUFBVyxtQkFBQ0MsS0FBRCxFQUFXO0FBQ3BCLFFBQUlBLFNBQVMsQ0FBQ0MsTUFBTUMsT0FBTixDQUFjRixLQUFkLENBQWQsRUFBb0M7QUFDbEMsYUFBT0csT0FBT0MsSUFBUCxDQUFZSixLQUFaLEVBQW1CSyxHQUFuQixDQUF1QjtBQUFBLGVBQUtMLE1BQU1NLENBQU4sQ0FBTDtBQUFBLE9BQXZCLENBQVA7QUFDRDtBQUNELFdBQU9OLEtBQVA7QUFDRCxHQVJlO0FBU2hCTyxjQUFZLG9CQUFDUCxLQUFELEVBQVc7QUFDckIsUUFBSUEsU0FBUyxDQUFDQyxNQUFNQyxPQUFOLENBQWNGLEtBQWQsQ0FBZCxFQUFvQztBQUNsQyxhQUFPRyxPQUFPQyxJQUFQLENBQVlKLEtBQVosRUFBbUJLLEdBQW5CLENBQXVCO0FBQUEsZUFBS0wsTUFBTU0sQ0FBTixDQUFMO0FBQUEsT0FBdkIsQ0FBUDtBQUNEO0FBQ0QsV0FBT04sS0FBUDtBQUNELEdBZGU7QUFlaEJRLGdCQUFjLHNCQUFDQyxHQUFELEVBQVM7QUFDckIsWUFBUUEsSUFBSUMsSUFBWjtBQUNFLFdBQUssZUFBS0MsR0FBVjtBQUNFLGVBQU9GLElBQUlULEtBQVg7QUFDRixXQUFLLGVBQUtZLElBQVY7QUFDRSxlQUFPSCxJQUFJSSxNQUFKLENBQVdSLEdBQVgsQ0FBZVQsVUFBVVksWUFBekIsQ0FBUDtBQUNGO0FBQ0UsZUFBTyxJQUFQO0FBTko7QUFRRDtBQXhCZSxDQUFsQjs7a0JBNEJlO0FBQ2JNLHNDQURhO0FBSWJDLGFBQVc7QUFDVEMsZUFBVywrQkFBc0JwQixTQUF0QjtBQURGO0FBSkUsQyIsImZpbGUiOiJjbXMvZ3JhcGhxbC9zZXJ2ZXIvc2NhbGFycy90aW1lLXJhbmdlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2luZCB9IGZyb20gJ2dyYXBocWwvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgR3JhcGhRTFNjYWxhclR5cGUgfSBmcm9tICdncmFwaHFsJztcblxuY29uc3QgdGltZVJhbmdlID0ge1xuICBuYW1lOiAnVGltZVJhbmdlJyxcbiAgZGVzY3JpcHRpb246ICdUaW1lUmFuZ2Ugc2NhbGFyIHR5cGUnLFxuICBzZXJpYWxpemU6ICh2YWx1ZSkgPT4ge1xuICAgIGlmICh2YWx1ZSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSkubWFwKHggPT4gdmFsdWVbeF0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIHBhcnNlVmFsdWU6ICh2YWx1ZSkgPT4ge1xuICAgIGlmICh2YWx1ZSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSkubWFwKHggPT4gdmFsdWVbeF0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIHBhcnNlTGl0ZXJhbDogKGFzdCkgPT4ge1xuICAgIHN3aXRjaCAoYXN0LmtpbmQpIHtcbiAgICAgIGNhc2UgS2luZC5JTlQ6XG4gICAgICAgIHJldHVybiBhc3QudmFsdWU7XG4gICAgICBjYXNlIEtpbmQuTElTVDpcbiAgICAgICAgcmV0dXJuIGFzdC52YWx1ZXMubWFwKHRpbWVSYW5nZS5wYXJzZUxpdGVyYWwpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LFxufTtcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNjaGVtYTogYFxuICAgIHNjYWxhciBUaW1lUmFuZ2VcbiAgYCxcbiAgcmVzb2x2ZXJzOiB7XG4gICAgVGltZVJhbmdlOiBuZXcgR3JhcGhRTFNjYWxhclR5cGUodGltZVJhbmdlKSxcbiAgfSxcbn07XG4iXX0=
github olymp / olymp / cms / graphql / server / scalars / json.js View on Github external
});

          return value;
        }
      case _language.Kind.LIST:
        return ast.values.map(json.parseLiteral);
      default:
        return null;
    }
  }
};

exports.default = {
  schema: '\n    scalar Json\n  ',
  resolvers: {
    Json: new _graphql.GraphQLScalarType(json)
  }
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNtcy9ncmFwaHFsL3NlcnZlci9zY2FsYXJzL2pzb24uZXM2Il0sIm5hbWVzIjpbImpzb24iLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJzZXJpYWxpemUiLCJ2YWx1ZSIsInBhcnNlVmFsdWUiLCJwYXJzZUxpdGVyYWwiLCJhc3QiLCJraW5kIiwiU1RSSU5HIiwiQk9PTEVBTiIsIklOVCIsIkZMT0FUIiwicGFyc2VGbG9hdCIsIk9CSkVDVCIsIk9iamVjdCIsImNyZWF0ZSIsImZpZWxkcyIsImZvckVhY2giLCJmaWVsZCIsIkxJU1QiLCJ2YWx1ZXMiLCJtYXAiLCJzY2hlbWEiLCJyZXNvbHZlcnMiLCJKc29uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxJQUFNQSxPQUFPO0FBQ1hDLFFBQU0sTUFESztBQUVYQyxlQUNFLHFKQUhTO0FBSVhDLGFBQVc7QUFBQSxXQUFTQyxLQUFUO0FBQUEsR0FKQTtBQUtYQyxjQUFZO0FBQUEsV0FBU0QsS0FBVDtBQUFBLEdBTEQ7QUFNWEUsZ0JBQWMsc0JBQUNDLEdBQUQsRUFBUztBQUNyQixZQUFRQSxJQUFJQyxJQUFaO0FBQ0UsV0FBSyxlQUFLQyxNQUFWO0FBQ0EsV0FBSyxlQUFLQyxPQUFWO0FBQ0UsZUFBT0gsSUFBSUgsS0FBWDtBQUNGLFdBQUssZUFBS08sR0FBVjtBQUNBLFdBQUssZUFBS0MsS0FBVjtBQUNFLGVBQU9DLFdBQVdOLElBQUlILEtBQWYsQ0FBUDtBQUNGLFdBQUssZUFBS1UsTUFBVjtBQUFrQjtBQUNoQixjQUFNVixRQUFRVyxPQUFPQyxNQUFQLENBQWMsSUFBZCxDQUFkO0FBQ0FULGNBQUlVLE1BQUosQ0FBV0MsT0FBWCxDQUFtQixVQUFDQyxLQUFELEVBQVc7QUFDNUJmLGtCQUFNZSxNQUFNbEIsSUFBTixDQUFXRyxLQUFqQixJQUEwQkosS0FBS00sWUFBTCxDQUFrQmEsTUFBTWYsS0FBeEIsQ0FBMUI7QUFDRCxXQUZEOztBQUlBLGlCQUFPQSxLQUFQO0FBQ0Q7QUFDRCxXQUFLLGVBQUtnQixJQUFWO0FBQ0UsZUFBT2IsSUFBSWMsTUFBSixDQUFXQyxHQUFYLENBQWV0QixLQUFLTSxZQUFwQixDQUFQO0FBQ0Y7QUFDRSxlQUFPLElBQVA7QUFsQko7QUFvQkQ7QUEzQlUsQ0FBYjs7a0JBOEJlO0FBQ2JpQixpQ0FEYTtBQUliQyxhQUFXO0FBQ1RDLFVBQU0sK0JBQXNCekIsSUFBdEI7QUFERztBQUpFLEMiLCJmaWxlIjoiY21zL2dyYXBocWwvc2VydmVyL3NjYWxhcnMvanNvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtpbmQgfSBmcm9tICdncmFwaHFsL2xhbmd1YWdlJztcbmltcG9ydCB7IEdyYXBoUUxTY2FsYXJUeXBlIH0gZnJvbSAnZ3JhcGhxbCc7XG5cbmNvbnN0IGpzb24gPSB7XG4gIG5hbWU6ICdKc29uJyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBKU09OIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgSlNPTiB2YWx1ZXMgYXMgc3BlY2lmaWVkIGJ5IFtFQ01BLTQwNF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnLyBwdWJsaWNhdGlvbnMvZmlsZXMvRUNNQS1TVC9FQ01BLTQwNC5wZGYpLicsXG4gIHNlcmlhbGl6ZTogdmFsdWUgPT4gdmFsdWUsXG4gIHBhcnNlVmFsdWU6IHZhbHVlID0+IHZhbHVlLFxuICBwYXJzZUxpdGVyYWw6IChhc3QpID0+IHtcbiAgICBzd2l0Y2ggKGFzdC5raW5kKSB7XG4gICAgICBjYXNlIEtpbmQuU1RSSU5HOlxuICAgICAgY2FzZSBLaW5kLkJPT0xFQU46XG4gICAgICAgIHJldHVybiBhc3QudmFsdWU7XG4gICAgICBjYXNlIEtpbmQuSU5UOlxuICAgICAgY2FzZSBLaW5kLkZMT0FUOlxuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChhc3QudmFsdWUpO1xuICAgICAgY2FzZSBLaW5kLk9CSkVDVDoge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGFzdC5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICB2YWx1ZVtmaWVsZC5uYW1lLnZhbHVlXSA9IGpzb24ucGFyc2VMaXRlcmFsKGZpZWxkLnZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgY2FzZSBLaW5kLkxJU1Q6XG4gICAgICAgIHJldHVybiBhc3QudmFsdWVzLm1hcChqc29uLnBhcnNlTGl0ZXJhbCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNjaGVtYTogYFxuICAgIHNjYWxhciBKc29uXG4gIGAsXG4gIHJlc29sdmVyczoge1xuICAgIEpzb246IG5ldyBHcmFwaFFMU2NhbGFyVHlwZShqc29uKSxcbiAgfSxcbn07XG4iXX0=
github apollographql / graphql-tools / src / stitching / schemaRecreation.ts View on Github external
deprecationReason: value.deprecationReason,
        description: value.description,
        astNode: value.astNode,
      };
    });
    return new GraphQLEnumType({
      name: type.name,
      description: type.description,
      astNode: type.astNode,
      values: newValues,
    });
  } else if (type instanceof GraphQLScalarType) {
    if (keepResolvers || isSpecifiedScalarType(type)) {
      return type;
    } else {
      return new GraphQLScalarType({
        name: type.name,
        description: type.description,
        astNode: type.astNode,
        serialize(value: any) {
          return value;
        },
        parseValue(value: any) {
          return value;
        },
        parseLiteral(ast: ValueNode) {
          return parseLiteral(ast);
        },
      });
    }
  } else {
    throw new Error(`Invalid type ${type}`);