const parseDateIsoLiteral = ast => { if (ast.kind === _graphql.Kind.STRING) { return parseDateIsoValue(ast.value); } throw new TypeValidationError(ast.kind, 'Date'); }
parseLiteral(ast) { if (ast.kind === _graphql.Kind.STRING) { return parseFileValue(ast.value); } else if (ast.kind === _graphql.Kind.OBJECT) { const __type = ast.fields.find(field => field.name.value === '__type'); const name = ast.fields.find(field => field.name.value === 'name'); const url = ast.fields.find(field => field.name.value === 'url'); if (__type && __type.value && name && name.value) { return parseFileValue({ __type: __type.value.value, name: name.value.value, url: url && url.value ? url.value.value : undefined }); } } throw new TypeValidationError(ast.kind, 'File'); }
describe('parseListValues', () => { it('should parse to list if an array', () => { expect( parseListValues([ { kind: Kind.STRING, value: 'someString' }, { kind: Kind.INT, value: '123' }, ]) ).toEqual(['someString', 123]); }); it('should fail if not an array', () => { expect(() => parseListValues()).toThrow( jasmine.stringMatching('is not a valid List') ); expect(() => parseListValues({})).toThrow( jasmine.stringMatching('is not a valid List') ); expect(() => parseListValues('some string')).toThrow( jasmine.stringMatching('is not a valid List') ); expect(() => parseListValues(123)).toThrow( jasmine.stringMatching('is not a valid List') ); }); });
const parseValue = value => { switch (value.kind) { case _graphql.Kind.STRING: return parseStringValue(value.value); case _graphql.Kind.INT: return parseIntValue(value.value); case _graphql.Kind.FLOAT: return parseFloatValue(value.value); case _graphql.Kind.BOOLEAN: return parseBooleanValue(value.value); case _graphql.Kind.LIST: return parseListValues(value.values); case _graphql.Kind.OBJECT: return parseObjectFields(value.fields); default: return value.value; } }
parseLiteral(ast) { if (ast.kind === _graphql.Kind.STRING) { return { __type: 'Date', iso: parseDateIsoLiteral(ast) }; } else if (ast.kind === _graphql.Kind.OBJECT) { const __type = ast.fields.find(field => field.name.value === '__type'); const iso = ast.fields.find(field => field.name.value === 'iso'); if (__type && __type.value && __type.value.value === 'Date' && iso) { return { __type: __type.value.value, iso: parseDateIsoLiteral(iso.value) }; } } throw new TypeValidationError(ast.kind, 'Date'); }
expect(parseLiteral(createValue(Kind.STRING, 'bytesContent'))).toEqual({ __type: 'Bytes', base64: 'bytesContent',
describe('parseValue', () => { const someString = createValue(Kind.STRING, 'somestring'); const someInt = createValue(Kind.INT, '123'); const someFloat = createValue(Kind.FLOAT, '123.4');
expect(parseLiteral(createValue(Kind.STRING, 'parsefile'))).toEqual({ __type: 'File', name: 'parsefile',
value: { kind: Kind.STRING, value: 'someString' }, },
parseLiteral(ast) { if (ast.kind === _graphql.Kind.STRING) { return { __type: 'Bytes', base64: ast.value }; } else if (ast.kind === _graphql.Kind.OBJECT) { const __type = ast.fields.find(field => field.name.value === '__type'); const base64 = ast.fields.find(field => field.name.value === 'base64'); if (__type && __type.value && __type.value.value === 'Bytes' && base64 && base64.value && typeof base64.value.value === 'string') { return { __type: __type.value.value, base64: base64.value.value }; } } throw new TypeValidationError(ast.kind, 'Bytes'); }
parseLiteral(ast) { if (ast.kind !== Kind.STRING) { throw new GraphQLError( `Can only validate strings as email addresses but got a: ${ast.kind}` ) } if (!isEmail(ast.value)) { throw new TypeError(`Value is not a valid email address: ${ast.value}`) } return ast.value }
parseLiteral(ast) { if (ast.kind !== Kind.STRING) { throw new GraphQLError( `Query error: Can only parse dates strings, got a: ${ast.kind}`, [ast], ); } if (isNaN(Date.parse(ast.value))) { throw new GraphQLError(`Query error: not a valid date`, [ast]); } return new Date(ast.value); }
parseLiteral (ast) { if (ast.kind === Kind.STRING) { return new Date(ast.value) } return null }
parseLiteral (ast) { if (ast.kind === Kind.STRING) { return new Date(`${ast.value}-01`) } return null }