Rename info to infos
This commit is contained in:
parent
6428021713
commit
f492028736
|
@ -1,7 +1,15 @@
|
|||
{
|
||||
"README_schema" : "Specifies how to load the GraphQL schema that completion, error highlighting, and documentation is based on in the IDE",
|
||||
"schema": {
|
||||
"README_file" : "Remove 'file' to use request url below. A relative or absolute path to the JSON from a schema introspection query, e.g. '{ data: ... }' or a .graphql/.graphqls file describing the schema using GraphQL Schema Language. Changes to the file are watched.",
|
||||
"file": "./server/src/schema.graphql"
|
||||
}
|
||||
}
|
||||
{
|
||||
"name": "Untitled GraphQL Schema",
|
||||
"schemaPath": "schema.graphql",
|
||||
"extensions": {
|
||||
"endpoints": {
|
||||
"Default GraphQL Endpoint": {
|
||||
"url": "https://alpha.quepasaalpujarra.com/graphql",
|
||||
"headers": {
|
||||
"user-agent": "JS GraphQL"
|
||||
},
|
||||
"introspect": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,250 @@
|
|||
// tslint:disable
|
||||
// graphql typescript definitions
|
||||
|
||||
declare namespace GQL {
|
||||
interface IGraphQLResponseRoot {
|
||||
data?: IQuery | IMutation;
|
||||
errors?: Array<IGraphQLResponseError>;
|
||||
}
|
||||
|
||||
interface IGraphQLResponseError {
|
||||
/** Required for all errors */
|
||||
message: string;
|
||||
locations?: Array<IGraphQLResponseErrorLocation>;
|
||||
/** 7.2.2 says 'GraphQL servers may provide additional entries to error' */
|
||||
[propName: string]: any;
|
||||
}
|
||||
|
||||
interface IGraphQLResponseErrorLocation {
|
||||
line: number;
|
||||
column: number;
|
||||
}
|
||||
|
||||
interface IQuery {
|
||||
__typename: 'Query';
|
||||
event: ICalendarEvent | null;
|
||||
events: Array<ICalendarEvent | null> | null;
|
||||
me: IUser | null;
|
||||
occurrence: IEventOccurrence | null;
|
||||
occurrences: Array<IEventOccurrence | null> | null;
|
||||
}
|
||||
|
||||
interface IEventOnQueryArguments {
|
||||
id: string;
|
||||
}
|
||||
|
||||
interface IEventsOnQueryArguments {
|
||||
filter: IEventsQueryFilter;
|
||||
}
|
||||
|
||||
interface IOccurrenceOnQueryArguments {
|
||||
id: string;
|
||||
}
|
||||
|
||||
interface IOccurrencesOnQueryArguments {
|
||||
filter: IOccurrencesQueryFilter;
|
||||
}
|
||||
|
||||
interface ICalendarEvent {
|
||||
__typename: 'CalendarEvent';
|
||||
id: string;
|
||||
info: IEventInformation | null;
|
||||
infos: Array<IEventInformation | null>;
|
||||
location: ILocation;
|
||||
meta: IEventMeta | null;
|
||||
occurrences: Array<IEventOccurrence | null> | null;
|
||||
owner: IUser;
|
||||
status: any;
|
||||
time: IEventTime;
|
||||
}
|
||||
|
||||
interface IInfoOnCalendarEventArguments {
|
||||
lang: string;
|
||||
}
|
||||
|
||||
interface IEventInformation {
|
||||
__typename: 'EventInformation';
|
||||
description: string | null;
|
||||
language: string;
|
||||
title: string;
|
||||
}
|
||||
|
||||
interface ILocation {
|
||||
__typename: 'Location';
|
||||
address: string | null;
|
||||
name: string | null;
|
||||
}
|
||||
|
||||
interface IEventMeta {
|
||||
__typename: 'EventMeta';
|
||||
tags: Array<string | null>;
|
||||
}
|
||||
|
||||
interface IEventOccurrence {
|
||||
__typename: 'EventOccurrence';
|
||||
end: string;
|
||||
event: ICalendarEvent;
|
||||
id: string;
|
||||
start: string;
|
||||
}
|
||||
|
||||
interface IUser {
|
||||
__typename: 'User';
|
||||
email: string;
|
||||
events: Array<ICalendarEvent | null>;
|
||||
id: string;
|
||||
name: string;
|
||||
roles: Array<IUserRole> | null;
|
||||
username: string | null;
|
||||
}
|
||||
|
||||
interface IUserRole {
|
||||
__typename: 'UserRole';
|
||||
type: any;
|
||||
user: IUser;
|
||||
}
|
||||
|
||||
interface IEventTime {
|
||||
__typename: 'EventTime';
|
||||
end: any | null;
|
||||
exceptions: string | null;
|
||||
recurrence: string | null;
|
||||
start: any | null;
|
||||
timeZone: any | null;
|
||||
}
|
||||
|
||||
interface IEventsQueryFilter {
|
||||
categories?: Array<any | null> | null;
|
||||
from?: any | null;
|
||||
limit?: number | null;
|
||||
owner?: string | null;
|
||||
to?: any | null;
|
||||
}
|
||||
|
||||
interface IOccurrencesQueryFilter {
|
||||
categories?: Array<any | null> | null;
|
||||
from?: any | null;
|
||||
limit?: number | null;
|
||||
timeZone?: any | null;
|
||||
to?: any | null;
|
||||
}
|
||||
|
||||
interface IMutation {
|
||||
__typename: 'Mutation';
|
||||
createEvent: ICalendarEvent | null;
|
||||
grantRole: IUser;
|
||||
requestInvite: boolean;
|
||||
revokeRole: IUser;
|
||||
signin: IUserSession;
|
||||
signup: Array<IError | null> | null;
|
||||
updateEvent: ICalendarEvent | null;
|
||||
}
|
||||
|
||||
interface ICreateEventOnMutationArguments {
|
||||
input: ICreateEventInput;
|
||||
}
|
||||
|
||||
interface IGrantRoleOnMutationArguments {
|
||||
input: IGrantRoleInput;
|
||||
}
|
||||
|
||||
interface IRequestInviteOnMutationArguments {
|
||||
input: IRequestInviteInput;
|
||||
}
|
||||
|
||||
interface IRevokeRoleOnMutationArguments {
|
||||
input: IGrantRoleInput;
|
||||
}
|
||||
|
||||
interface ISigninOnMutationArguments {
|
||||
input: ISigninInput;
|
||||
}
|
||||
|
||||
interface ISignupOnMutationArguments {
|
||||
input: ISignupInput;
|
||||
}
|
||||
|
||||
interface IUpdateEventOnMutationArguments {
|
||||
input: IUpdateEventInput;
|
||||
}
|
||||
|
||||
interface ICreateEventInput {
|
||||
infos: Array<IEventInformationInput | null>;
|
||||
location: IEventLocationInput;
|
||||
meta: IEventMetaInput;
|
||||
status: string;
|
||||
time: IEventTimeInput;
|
||||
}
|
||||
|
||||
interface IEventInformationInput {
|
||||
description?: string | null;
|
||||
language: string;
|
||||
title: string;
|
||||
}
|
||||
|
||||
interface IEventLocationInput {
|
||||
address?: string | null;
|
||||
name?: string | null;
|
||||
}
|
||||
|
||||
interface IEventMetaInput {
|
||||
tags: Array<string | null>;
|
||||
}
|
||||
|
||||
interface IEventTimeInput {
|
||||
end: any;
|
||||
exceptions?: string | null;
|
||||
recurrence?: string | null;
|
||||
start: any;
|
||||
timeZone: any;
|
||||
}
|
||||
|
||||
interface IGrantRoleInput {
|
||||
roleType: any;
|
||||
userId: string;
|
||||
}
|
||||
|
||||
interface IRequestInviteInput {
|
||||
email: string;
|
||||
}
|
||||
|
||||
interface ISigninInput {
|
||||
hash: string;
|
||||
}
|
||||
|
||||
interface IUserSession {
|
||||
__typename: 'UserSession';
|
||||
ctime: any;
|
||||
hash: string;
|
||||
isValid: boolean;
|
||||
user: IUser;
|
||||
}
|
||||
|
||||
interface ISignupInput {
|
||||
email: string;
|
||||
name: string;
|
||||
username: string;
|
||||
}
|
||||
|
||||
interface IError {
|
||||
__typename: 'Error';
|
||||
message: string;
|
||||
path: string;
|
||||
}
|
||||
|
||||
interface IUpdateEventInput {
|
||||
id: string;
|
||||
infos?: Array<IEventInformationInput> | null;
|
||||
location?: IEventLocationInput | null;
|
||||
meta?: IEventMetaInput | null;
|
||||
status?: string | null;
|
||||
time?: IEventTimeInput | null;
|
||||
}
|
||||
|
||||
interface IRevokeRoleInput {
|
||||
roleType: any;
|
||||
userId: string;
|
||||
}
|
||||
}
|
||||
|
||||
// tslint:enable
|
||||
|
|
|
@ -1,217 +1 @@
|
|||
export type EventStatus = "confirmed" | "canceled"
|
||||
|
||||
// tslint:disable
|
||||
// graphql typescript definitions
|
||||
declare namespace GQL {
|
||||
interface IGraphQLResponseRoot {
|
||||
data?: IQuery | IMutation;
|
||||
errors?: Array<IGraphQLResponseError>;
|
||||
}
|
||||
|
||||
interface IGraphQLResponseError {
|
||||
/** Required for all errors */
|
||||
message: string;
|
||||
locations?: Array<IGraphQLResponseErrorLocation>;
|
||||
/** 7.2.2 says 'GraphQL servers may provide additional entries to error' */
|
||||
[propName: string]: any;
|
||||
}
|
||||
|
||||
interface IGraphQLResponseErrorLocation {
|
||||
line: number;
|
||||
column: number;
|
||||
}
|
||||
|
||||
interface IQuery {
|
||||
__typename: 'Query';
|
||||
me: IUser | null;
|
||||
event: ICalendarEvent | null;
|
||||
events: Array<ICalendarEvent | null> | null;
|
||||
occurrences: Array<IEventOccurrence | null> | null;
|
||||
occurrence: IEventOccurrence | null;
|
||||
}
|
||||
|
||||
interface IEventOnQueryArguments {
|
||||
id: string;
|
||||
}
|
||||
|
||||
interface IEventsOnQueryArguments {
|
||||
filter: IEventsQueryFilter;
|
||||
}
|
||||
|
||||
interface IOccurrencesOnQueryArguments {
|
||||
filter: IOccurrencesQueryFilter;
|
||||
}
|
||||
|
||||
interface IOccurrenceOnQueryArguments {
|
||||
id: string;
|
||||
}
|
||||
|
||||
interface IUser {
|
||||
__typename: 'User';
|
||||
name: string;
|
||||
username: string;
|
||||
email: string;
|
||||
id: string;
|
||||
events: Array<ICalendarEvent | null>;
|
||||
}
|
||||
|
||||
interface ICalendarEvent {
|
||||
__typename: 'CalendarEvent';
|
||||
id: string;
|
||||
owner: IUser;
|
||||
info: Array<IEventInformation | null>;
|
||||
time: IEventTime;
|
||||
status: any;
|
||||
location: ILocation;
|
||||
occurrences: Array<IEventOccurrence | null> | null;
|
||||
meta: IEventMeta | null;
|
||||
}
|
||||
|
||||
interface IEventInformation {
|
||||
__typename: 'EventInformation';
|
||||
language: string;
|
||||
title: string;
|
||||
description: string | null;
|
||||
}
|
||||
|
||||
interface IEventTime {
|
||||
__typename: 'EventTime';
|
||||
timeZone: any | null;
|
||||
start: any | null;
|
||||
end: any | null;
|
||||
recurrence: string | null;
|
||||
exceptions: string | null;
|
||||
}
|
||||
|
||||
interface ILocation {
|
||||
__typename: 'Location';
|
||||
address: string | null;
|
||||
name: string | null;
|
||||
}
|
||||
|
||||
interface IEventOccurrence {
|
||||
__typename: 'EventOccurrence';
|
||||
id: string;
|
||||
event: ICalendarEvent;
|
||||
start: string;
|
||||
end: string;
|
||||
}
|
||||
|
||||
interface IEventMeta {
|
||||
__typename: 'EventMeta';
|
||||
tags: Array<string | null>;
|
||||
}
|
||||
|
||||
interface IEventsQueryFilter {
|
||||
owner?: string | null;
|
||||
limit?: number | null;
|
||||
from?: any | null;
|
||||
to?: any | null;
|
||||
categories?: Array<any | null> | null;
|
||||
}
|
||||
|
||||
interface IOccurrencesQueryFilter {
|
||||
from?: any | null;
|
||||
to?: any | null;
|
||||
timeZone?: any | null;
|
||||
categories?: Array<any | null> | null;
|
||||
limit?: number | null;
|
||||
}
|
||||
|
||||
interface IMutation {
|
||||
__typename: 'Mutation';
|
||||
signup: Array<IError | null> | null;
|
||||
signin: IUserSession;
|
||||
requestInvite: boolean;
|
||||
createEvent: ICalendarEvent | null;
|
||||
updateEvent: ICalendarEvent | null;
|
||||
}
|
||||
|
||||
interface ISignupOnMutationArguments {
|
||||
input?: ISignupInput | null;
|
||||
}
|
||||
|
||||
interface ISigninOnMutationArguments {
|
||||
input?: ISigninInput | null;
|
||||
}
|
||||
|
||||
interface IRequestInviteOnMutationArguments {
|
||||
input?: IRequestInviteInput | null;
|
||||
}
|
||||
|
||||
interface ICreateEventOnMutationArguments {
|
||||
input: ICreateEventInput;
|
||||
}
|
||||
|
||||
interface IUpdateEventOnMutationArguments {
|
||||
input: IUpdateEventInput;
|
||||
}
|
||||
|
||||
interface ISignupInput {
|
||||
email: string;
|
||||
username: string;
|
||||
name: string;
|
||||
}
|
||||
|
||||
interface IError {
|
||||
__typename: 'Error';
|
||||
path: string;
|
||||
message: string;
|
||||
}
|
||||
|
||||
interface ISigninInput {
|
||||
hash: string;
|
||||
}
|
||||
|
||||
interface IUserSession {
|
||||
__typename: 'UserSession';
|
||||
hash: string;
|
||||
user: IUser;
|
||||
ctime: any;
|
||||
isValid: boolean;
|
||||
}
|
||||
|
||||
interface IRequestInviteInput {
|
||||
email: string;
|
||||
}
|
||||
|
||||
interface ICreateEventInput {
|
||||
time: IEventTimeInput;
|
||||
info: Array<IEventInformationInput | null>;
|
||||
location: IEventLocationInput;
|
||||
meta: IEventMetaInput;
|
||||
status: string;
|
||||
}
|
||||
|
||||
interface IEventTimeInput {
|
||||
timeZone: any;
|
||||
start: any;
|
||||
end: any;
|
||||
recurrence?: string | null;
|
||||
}
|
||||
|
||||
interface IEventInformationInput {
|
||||
language: string;
|
||||
title: string;
|
||||
description?: string | null;
|
||||
}
|
||||
|
||||
interface IEventLocationInput {
|
||||
address?: string | null;
|
||||
name?: string | null;
|
||||
}
|
||||
|
||||
interface IEventMetaInput {
|
||||
tags: Array<string | null>;
|
||||
}
|
||||
|
||||
interface IUpdateEventInput {
|
||||
id: string;
|
||||
time?: IEventTimeInput | null;
|
||||
info?: Array<IEventInformationInput> | null;
|
||||
location?: IEventLocationInput | null;
|
||||
meta?: IEventMetaInput | null;
|
||||
status?: string | null;
|
||||
}
|
||||
}
|
||||
// tslint:enable
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
"README_schema" : "Specifies how to load the GraphQL schema that completion, error highlighting, and documentation is based on in the IDE",
|
||||
"schema": {
|
||||
"README_file" : "Remove 'file' to use request url below. A relative or absolute path to the JSON from a schema introspection query, e.g. '{ data: ... }' or a .graphql/.graphqls file describing the schema using GraphQL Schema Language. Changes to the file are watched.",
|
||||
"file": "./schema.graphql"
|
||||
}
|
||||
}
|
|
@ -10,7 +10,8 @@
|
|||
"ssr-build": "(cd packages/qpa-ssr; yarn build)",
|
||||
"start": "NODE_ENV=development webpack-dev-server --config packages/qpa/webpack.config.ts --hot --progress",
|
||||
"ssr": "API_URL=http://alpha.quepasaalpujarra.com/graphql ts-node packages/qpa-ssr/index.ts",
|
||||
"release": "docker build -t eu.gcr.io/qpa-staging-237606/web:$TAG .; docker push eu.gcr.io/qpa-staging-237606/web:$TAG"
|
||||
"release": "docker build -t eu.gcr.io/qpa-staging-237606/web:$TAG .; docker push eu.gcr.io/qpa-staging-237606/web:$TAG",
|
||||
"codegen": "gql2ts ./schema.graphql -o ./@types/graphql.d.ts"
|
||||
},
|
||||
"workspaces": [
|
||||
"packages/*"
|
||||
|
@ -22,9 +23,9 @@
|
|||
"jest": "^24.8.0",
|
||||
"jest-cli": "^24.8.0",
|
||||
"nodemon": "^1.19.1",
|
||||
"qpa": "0.0.1",
|
||||
"qpa-components": "0.0.1",
|
||||
"qpa-message-center": "0.0.1",
|
||||
"qpa": "0.0.1"
|
||||
"qpa-message-center": "0.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "^7.2.3",
|
||||
|
@ -51,7 +52,9 @@
|
|||
"apollo-link-context": "^1.0.14",
|
||||
"babel-loader": "^8.0.5",
|
||||
"babel-plugin-styled-components": "^1.10.0",
|
||||
"gql2ts": "^1.10.1",
|
||||
"html-webpack-plugin": "^3.2.0",
|
||||
"prettier": "^1.18.2",
|
||||
"react-hot-loader": "^4.8.2",
|
||||
"ts-jest": "^24.0.0",
|
||||
"ts-node": "^8.0.2",
|
||||
|
|
|
@ -32,7 +32,7 @@ const OccurrenceDetails = (props: Props) => {
|
|||
const event = data.occurrence.event
|
||||
const meIsOwner = me && me.id === event.owner.id
|
||||
|
||||
const info = data.occurrence.event.info[0]
|
||||
const info = data.occurrence.event.infos[0]
|
||||
return (
|
||||
<Root>
|
||||
<Title>
|
||||
|
|
|
@ -13,7 +13,7 @@ const query = gql`
|
|||
id
|
||||
name
|
||||
}
|
||||
info {
|
||||
infos {
|
||||
description
|
||||
language
|
||||
title
|
||||
|
@ -34,7 +34,7 @@ export interface OccurrenceDetailsData {
|
|||
id: string
|
||||
name: string
|
||||
}
|
||||
info: Array<{
|
||||
infos: Array<{
|
||||
description
|
||||
language
|
||||
title
|
||||
|
|
|
@ -9,7 +9,7 @@ interface Props {
|
|||
const CalendarOccurrence = (props: Props) => {
|
||||
const event = props.occurrence.event
|
||||
const localInfo = props.language
|
||||
? event.info.find(info => info.language === props.language)
|
||||
? event.infos.find(info => info.language === props.language)
|
||||
: event.info[0]
|
||||
return (<div>
|
||||
{event.info[0].title}
|
||||
|
|
|
@ -18,7 +18,7 @@ const sanitizeEventName = (name: string) => {
|
|||
const ListItem = (props: Props) => {
|
||||
const {occurrence} = props
|
||||
const {event} = occurrence
|
||||
const info = event.info[0]
|
||||
const info = event.infos[0]
|
||||
const startTime = occurrence.start.split(" ")[1].substring(0, 5)
|
||||
return (
|
||||
<Root>
|
||||
|
|
|
@ -20,7 +20,7 @@ const CreateEvent = () => {
|
|||
createEvent({
|
||||
variables: {
|
||||
input: {
|
||||
info: values.info,
|
||||
infos: values.infos,
|
||||
location: values.location,
|
||||
time: {
|
||||
...values.time,
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
import { Mutation } from 'react-apollo'
|
||||
import gql from 'graphql-tag'
|
||||
import {GQL} from "../../../@types"
|
||||
|
||||
const mutation = gql`
|
||||
mutation CreateEvent($input: CreateEventInput!) {
|
||||
createEvent(input: $input) {
|
||||
id
|
||||
info {
|
||||
infos {
|
||||
description
|
||||
language
|
||||
title
|
||||
|
@ -41,7 +40,7 @@ interface OccurrenceData {
|
|||
}
|
||||
interface Data {
|
||||
id: string
|
||||
info: InfoData[]
|
||||
infos: InfoData[]
|
||||
location: {
|
||||
address: string
|
||||
name: string
|
||||
|
|
|
@ -45,7 +45,7 @@ const EditEvent = (props: Props) => (
|
|||
},
|
||||
time: event.time,
|
||||
location: event.location,
|
||||
info: event.info,
|
||||
infos: event.infos,
|
||||
status: event.status,
|
||||
}}/>
|
||||
)
|
||||
|
|
|
@ -10,8 +10,8 @@ interface Props {
|
|||
const Event = (props: Props) => {
|
||||
// Get desired language or fallback to first language
|
||||
const localInfo = props.language
|
||||
? props.event.info.find(info => info.language === props.language)
|
||||
: props.event.info[0]
|
||||
? props.event.infos.find(info => info.language === props.language)
|
||||
: props.event.infos[0]
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import addHours from "date-fns/add_hours"
|
||||
import format from "date-fns/format"
|
||||
import {addHours, format} from "date-fns"
|
||||
import {Field, Form, Formik} from "formik"
|
||||
import {Button} from "qpa-components"
|
||||
import * as React from "react"
|
||||
|
@ -8,32 +7,32 @@ import {EventStatus} from "../../../@types"
|
|||
import DateTime from "./DateTime"
|
||||
|
||||
interface Props {
|
||||
values?: EventFormData
|
||||
onSubmit: (values: EventFormData) => void
|
||||
loading: boolean
|
||||
values?: EventFormData
|
||||
onSubmit: (values: EventFormData) => void
|
||||
loading: boolean
|
||||
}
|
||||
|
||||
export interface EventFormData {
|
||||
time: {
|
||||
timeZone: string;
|
||||
start: string;
|
||||
end: string;
|
||||
recurrence?: string;
|
||||
exceptions?: string;
|
||||
}
|
||||
info: Array<{
|
||||
language: string;
|
||||
title: string;
|
||||
description: string;
|
||||
}>
|
||||
location: {
|
||||
address?: string;
|
||||
name: string;
|
||||
}
|
||||
status: EventStatus
|
||||
meta: {
|
||||
tags: string[];
|
||||
}
|
||||
time: {
|
||||
timeZone: string;
|
||||
start: string;
|
||||
end: string;
|
||||
recurrence?: string;
|
||||
exceptions?: string;
|
||||
}
|
||||
infos: Array<{
|
||||
language: string;
|
||||
title: string;
|
||||
description: string;
|
||||
}>
|
||||
location: {
|
||||
address?: string;
|
||||
name: string;
|
||||
}
|
||||
status: EventStatus
|
||||
meta: {
|
||||
tags: string[];
|
||||
}
|
||||
}
|
||||
|
||||
class EventFormik extends Formik<EventFormData> {
|
||||
|
@ -47,87 +46,93 @@ const nextWeekMidday = new Date(nextWeekTenAM)
|
|||
nextWeekMidday.setUTCHours(12)
|
||||
|
||||
const EventForm = (props: Props) => {
|
||||
const isEdit = !!props.values
|
||||
return (
|
||||
<EventFormik
|
||||
onSubmit={props.onSubmit}
|
||||
initialValues={
|
||||
props.values
|
||||
? props.values
|
||||
: {
|
||||
time: {
|
||||
timeZone: "Europe/Madrid",
|
||||
start: nextWeekTenAM.toISOString().substring(0, 16),
|
||||
end: nextWeekMidday.toISOString().substring(0, 16),
|
||||
},
|
||||
info: [
|
||||
{
|
||||
language: "en",
|
||||
title: "",
|
||||
description: "",
|
||||
},
|
||||
],
|
||||
location: {
|
||||
name: "",
|
||||
},
|
||||
meta: {
|
||||
tags: [],
|
||||
},
|
||||
status: "confirmed",
|
||||
}
|
||||
}
|
||||
validate={(values) => {
|
||||
const errors: any = {}
|
||||
}}
|
||||
>
|
||||
{({isValid, setFieldValue}) => (
|
||||
<StyledForm>
|
||||
<p>Title</p>
|
||||
<Field name="info[0].title">
|
||||
{({field}) => <input {...field} placeholder="Name your event"/>}
|
||||
</Field>
|
||||
<p>Description</p>
|
||||
<Field name="info[0].description">
|
||||
{({field}) => (
|
||||
<textarea
|
||||
{...field}
|
||||
placeholder="Write a few words about your event"
|
||||
/>
|
||||
)}
|
||||
</Field>
|
||||
<p>Start</p>
|
||||
<Field name="time.start">
|
||||
{
|
||||
({field}) => (
|
||||
<DateTime {...field} onChange={(newStartValue) => {
|
||||
setFieldValue("time.start", newStartValue)
|
||||
setFieldValue("time.end", format(addHours(newStartValue, 2), "YYYY-MM-DDTHH:MM"))
|
||||
}}/>
|
||||
)
|
||||
const isEdit = !!props.values
|
||||
return (
|
||||
<EventFormik
|
||||
onSubmit={props.onSubmit}
|
||||
initialValues={
|
||||
props.values
|
||||
? props.values
|
||||
: {
|
||||
time: {
|
||||
timeZone: "Europe/Madrid",
|
||||
start: nextWeekTenAM.toISOString().substring(0, 16),
|
||||
end: nextWeekMidday.toISOString().substring(0, 16),
|
||||
},
|
||||
infos: [
|
||||
{
|
||||
language: "en",
|
||||
title: "",
|
||||
description: "",
|
||||
},
|
||||
{
|
||||
language: "es",
|
||||
title: "",
|
||||
description: ""
|
||||
}
|
||||
],
|
||||
location: {
|
||||
name: "",
|
||||
},
|
||||
meta: {
|
||||
tags: [],
|
||||
},
|
||||
status: "confirmed",
|
||||
}
|
||||
}
|
||||
</Field>
|
||||
<p>End</p>
|
||||
<Field name="time.end">
|
||||
{
|
||||
({field}) => (
|
||||
<DateTime {...field} onChange={(newEndValue) => setFieldValue("time.end", newEndValue)}/>
|
||||
)
|
||||
}
|
||||
</Field>
|
||||
<p>Location</p>
|
||||
<Field name="location.name">
|
||||
{({field}) => <input {...field} placeholder="Location's name"/>}
|
||||
</Field>
|
||||
<p>Address</p>
|
||||
<Field name="location.address">
|
||||
{({field}) => <input {...field} placeholder="Address"/>}
|
||||
</Field>
|
||||
validate={(values) => {
|
||||
const errors: any = {}
|
||||
}}
|
||||
>
|
||||
{({isValid, setFieldValue}) => (
|
||||
<StyledForm>
|
||||
<p>Title</p>
|
||||
<Field name="info[0].title">
|
||||
{({field}) => <input {...field} placeholder="Name your event"/>}
|
||||
</Field>
|
||||
<p>Description</p>
|
||||
<Field name="info[0].description">
|
||||
{({field}) => (
|
||||
<textarea
|
||||
{...field}
|
||||
placeholder="Write a few words about your event"
|
||||
/>
|
||||
)}
|
||||
</Field>
|
||||
<p>Start</p>
|
||||
<Field name="time.start">
|
||||
{
|
||||
({field}) => (
|
||||
<DateTime {...field} onChange={(newStartValue) => {
|
||||
setFieldValue("time.start", newStartValue)
|
||||
setFieldValue("time.end", format(addHours(newStartValue, 2), "YYYY-MM-DDTHH:MM"))
|
||||
}}/>
|
||||
)
|
||||
}
|
||||
</Field>
|
||||
<p>End</p>
|
||||
<Field name="time.end">
|
||||
{
|
||||
({field}) => (
|
||||
<DateTime {...field}
|
||||
onChange={(newEndValue) => setFieldValue("time.end", newEndValue)}/>
|
||||
)
|
||||
}
|
||||
</Field>
|
||||
<p>Location</p>
|
||||
<Field name="location.name">
|
||||
{({field}) => <input {...field} placeholder="Location's name"/>}
|
||||
</Field>
|
||||
<p>Address</p>
|
||||
<Field name="location.address">
|
||||
{({field}) => <input {...field} placeholder="Address"/>}
|
||||
</Field>
|
||||
|
||||
<Button type="submit" loading={props.loading}>{isEdit ? "Edit" : "Create"}</Button>
|
||||
</StyledForm>
|
||||
)}
|
||||
</EventFormik>
|
||||
)
|
||||
<Button type="submit" loading={props.loading}>{isEdit ? "Edit" : "Create"}</Button>
|
||||
</StyledForm>
|
||||
)}
|
||||
</EventFormik>
|
||||
)
|
||||
}
|
||||
const StyledForm = styled(Form)``
|
||||
export default EventForm
|
||||
|
|
|
@ -6,7 +6,7 @@ const query = gql`
|
|||
events(filter: $filter) {
|
||||
id
|
||||
status
|
||||
info {
|
||||
infos {
|
||||
title
|
||||
description
|
||||
language
|
||||
|
@ -28,7 +28,7 @@ interface Variables {
|
|||
export interface EventData {
|
||||
id: string
|
||||
status: string
|
||||
info: Array<{
|
||||
infos: Array<{
|
||||
title: string
|
||||
description: string
|
||||
language: string
|
||||
|
|
|
@ -5,7 +5,7 @@ import {EventStatus} from "../../../@types"
|
|||
export const EventFragment = gql`
|
||||
fragment EventData on CalendarEvent {
|
||||
id
|
||||
info {
|
||||
infos {
|
||||
description
|
||||
language
|
||||
title
|
||||
|
@ -56,7 +56,7 @@ export interface EventMetaData {
|
|||
|
||||
export interface EventData {
|
||||
id: string
|
||||
info: EventInfoData[]
|
||||
infos: EventInfoData[]
|
||||
contact: ContactData[]
|
||||
location: {
|
||||
address: string
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import {Query} from 'react-apollo'
|
||||
import gql from 'graphql-tag'
|
||||
import {GQL} from "../../../@types"
|
||||
|
||||
const query = gql`
|
||||
query EventsQuery($filter: OccurrencesQueryFilter!) {
|
||||
|
@ -14,7 +13,7 @@ const query = gql`
|
|||
address
|
||||
name
|
||||
}
|
||||
info {
|
||||
infos {
|
||||
language
|
||||
title
|
||||
}
|
||||
|
@ -38,7 +37,7 @@ export interface OccurrenceData {
|
|||
end: string
|
||||
event: {
|
||||
id: string
|
||||
info: InfoData[]
|
||||
infos: InfoData[]
|
||||
location: {
|
||||
address: string
|
||||
name: string
|
||||
|
|
275
schema.graphql
275
schema.graphql
|
@ -1,54 +1,31 @@
|
|||
type User {
|
||||
name: String!
|
||||
username: String
|
||||
email: String!
|
||||
id: ID!
|
||||
events: [CalendarEvent]!
|
||||
roles: [UserRole!]
|
||||
# This file was generated based on ".graphqlconfig". Do not edit manually.
|
||||
|
||||
schema {
|
||||
query: Query
|
||||
mutation: Mutation
|
||||
}
|
||||
|
||||
type UserRole {
|
||||
user: User!
|
||||
type: RoleType!
|
||||
}
|
||||
scalar Date
|
||||
scalar RoleType
|
||||
|
||||
type UserSession {
|
||||
hash: String!
|
||||
user: User!
|
||||
ctime: Date!
|
||||
isValid: Boolean!
|
||||
}
|
||||
|
||||
input SignupInput {
|
||||
email: String!
|
||||
username: String!
|
||||
name: String!
|
||||
}
|
||||
|
||||
input SigninInput {
|
||||
hash: String!
|
||||
}
|
||||
|
||||
input RequestInviteInput {
|
||||
email: String!
|
||||
}
|
||||
|
||||
# ------
|
||||
# Events
|
||||
# ------
|
||||
|
||||
|
||||
type CalendarEvent {
|
||||
id: ID!
|
||||
owner: User!
|
||||
info: [EventInformation]!
|
||||
time: EventTime!
|
||||
status: EventStatus!
|
||||
info(lang: String!): EventInformation
|
||||
infos: [EventInformation]!
|
||||
location: Location!
|
||||
occurrences: [EventOccurrence]
|
||||
meta: EventMeta
|
||||
occurrences: [EventOccurrence]
|
||||
owner: User!
|
||||
status: EventStatus!
|
||||
time: EventTime!
|
||||
}
|
||||
|
||||
type Error {
|
||||
message: String!
|
||||
path: String!
|
||||
}
|
||||
|
||||
type EventInformation {
|
||||
description: String
|
||||
language: String!
|
||||
title: String!
|
||||
}
|
||||
|
||||
type EventMeta {
|
||||
|
@ -56,10 +33,18 @@ type EventMeta {
|
|||
}
|
||||
|
||||
type EventOccurrence {
|
||||
id: ID!
|
||||
event: CalendarEvent!
|
||||
start: String!
|
||||
end: String!
|
||||
event: CalendarEvent!
|
||||
id: ID!
|
||||
start: String!
|
||||
}
|
||||
|
||||
type EventTime {
|
||||
end: Timestamp
|
||||
exceptions: String
|
||||
recurrence: String
|
||||
start: Timestamp
|
||||
timeZone: TimeZone
|
||||
}
|
||||
|
||||
type Location {
|
||||
|
@ -67,62 +52,57 @@ type Location {
|
|||
name: String
|
||||
}
|
||||
|
||||
type EventTime {
|
||||
timeZone: TimeZone
|
||||
start: Timestamp
|
||||
end: Timestamp
|
||||
recurrence: String
|
||||
exceptions: String
|
||||
type Mutation {
|
||||
createEvent(input: CreateEventInput!): CalendarEvent
|
||||
grantRole(input: GrantRoleInput!): User!
|
||||
requestInvite(input: RequestInviteInput!): Boolean!
|
||||
revokeRole(input: GrantRoleInput!): User!
|
||||
signin(input: SigninInput!): UserSession!
|
||||
signup(input: SignupInput!): [Error]
|
||||
updateEvent(input: UpdateEventInput!): CalendarEvent
|
||||
}
|
||||
|
||||
# in RFC3339 e.g. 2002-10-02T10:00:00-05:00 or 2002-10-02T15:00:00Z
|
||||
scalar Timestamp
|
||||
|
||||
# IANA Timezone e.g. "Europe/Zurich"
|
||||
scalar TimeZone
|
||||
|
||||
# "confirmed" | "tentative" | "cancelled"
|
||||
scalar EventStatus
|
||||
|
||||
# e.g. 'de', 'en', etc'
|
||||
scalar Language
|
||||
|
||||
# Event information for presentation
|
||||
type EventInformation {
|
||||
language: String!
|
||||
title: String!
|
||||
description: String
|
||||
type Query {
|
||||
event(id: ID!): CalendarEvent
|
||||
events(filter: EventsQueryFilter!): [CalendarEvent]
|
||||
me: User
|
||||
occurrence(id: ID!): EventOccurrence
|
||||
occurrences(filter: OccurrencesQueryFilter!): [EventOccurrence]
|
||||
}
|
||||
|
||||
scalar Category
|
||||
|
||||
input EventsQueryFilter {
|
||||
owner: ID
|
||||
limit: Int
|
||||
from: Timestamp
|
||||
to: Timestamp
|
||||
categories: [Category]
|
||||
type User {
|
||||
email: String!
|
||||
events: [CalendarEvent]!
|
||||
id: ID!
|
||||
name: String!
|
||||
roles: [UserRole!]
|
||||
username: String
|
||||
}
|
||||
|
||||
input OccurrencesQueryFilter {
|
||||
from: Timestamp
|
||||
to: Timestamp
|
||||
timeZone: TimeZone
|
||||
categories: [Category]
|
||||
limit: Int
|
||||
type UserRole {
|
||||
type: RoleType!
|
||||
user: User!
|
||||
}
|
||||
|
||||
input EventTimeInput {
|
||||
timeZone: TimeZone!
|
||||
start: Timestamp!
|
||||
end: Timestamp!
|
||||
recurrence: String
|
||||
type UserSession {
|
||||
ctime: Date!
|
||||
hash: String!
|
||||
isValid: Boolean!
|
||||
user: User!
|
||||
}
|
||||
|
||||
input CreateEventInput {
|
||||
infos: [EventInformationInput]!
|
||||
location: EventLocationInput!
|
||||
meta: EventMetaInput!
|
||||
status: String!
|
||||
time: EventTimeInput!
|
||||
}
|
||||
|
||||
input EventInformationInput {
|
||||
description: String
|
||||
language: String!
|
||||
title: String!
|
||||
description: String
|
||||
}
|
||||
|
||||
input EventLocationInput {
|
||||
|
@ -134,67 +114,74 @@ input EventMetaInput {
|
|||
tags: [String]!
|
||||
}
|
||||
|
||||
input CreateEventInput {
|
||||
time: EventTimeInput!
|
||||
info: [EventInformationInput]!
|
||||
location: EventLocationInput!
|
||||
meta: EventMetaInput!
|
||||
status: String!
|
||||
input EventTimeInput {
|
||||
end: Timestamp!
|
||||
exceptions: String
|
||||
recurrence: String
|
||||
start: Timestamp!
|
||||
timeZone: TimeZone!
|
||||
}
|
||||
|
||||
input EventsQueryFilter {
|
||||
categories: [Category]
|
||||
from: Timestamp
|
||||
limit: Int
|
||||
owner: ID
|
||||
to: Timestamp
|
||||
}
|
||||
|
||||
input GrantRoleInput {
|
||||
roleType: RoleType!
|
||||
userId: ID!
|
||||
}
|
||||
|
||||
input OccurrencesQueryFilter {
|
||||
categories: [Category]
|
||||
from: Timestamp
|
||||
limit: Int
|
||||
timeZone: TimeZone
|
||||
to: Timestamp
|
||||
}
|
||||
|
||||
input RequestInviteInput {
|
||||
email: String!
|
||||
}
|
||||
|
||||
input RevokeRoleInput {
|
||||
roleType: RoleType!
|
||||
userId: ID!
|
||||
}
|
||||
|
||||
input SigninInput {
|
||||
hash: String!
|
||||
}
|
||||
|
||||
input SignupInput {
|
||||
email: String!
|
||||
name: String!
|
||||
username: String!
|
||||
}
|
||||
|
||||
input UpdateEventInput {
|
||||
id: ID!
|
||||
time: EventTimeInput
|
||||
info: [EventInformationInput!]
|
||||
infos: [EventInformationInput!]
|
||||
location: EventLocationInput
|
||||
meta: EventMetaInput
|
||||
status: String
|
||||
}
|
||||
|
||||
input GrantRoleInput {
|
||||
userId: ID!
|
||||
roleType: RoleType!
|
||||
}
|
||||
|
||||
input RevokeRoleInput {
|
||||
userId: ID!
|
||||
roleType: RoleType!
|
||||
}
|
||||
|
||||
input AcceptEventInput {
|
||||
eventId: ID!,
|
||||
accepted: Boolean!
|
||||
comment: String
|
||||
}
|
||||
|
||||
type Error {
|
||||
path: String!
|
||||
message: String!
|
||||
}
|
||||
|
||||
type Mutation {
|
||||
# Auth
|
||||
signup(input: SignupInput!): [Error]
|
||||
signin(input: SigninInput!): UserSession!
|
||||
requestInvite(input: RequestInviteInput!): Boolean!
|
||||
grantRole(input: GrantRoleInput!): User!
|
||||
revokeRole(input: GrantRoleInput!): User!
|
||||
|
||||
# Event
|
||||
createEvent(input: CreateEventInput!): CalendarEvent
|
||||
updateEvent(input: UpdateEventInput!): CalendarEvent
|
||||
acceptEvent(input: AcceptEventInput!): CalendarEvent
|
||||
|
||||
time: EventTimeInput
|
||||
}
|
||||
|
||||
|
||||
type Query {
|
||||
# Auth
|
||||
me: User
|
||||
scalar TimeZone
|
||||
|
||||
# Event
|
||||
event(id: ID!): CalendarEvent
|
||||
events(filter: EventsQueryFilter!): [CalendarEvent]
|
||||
occurrences(filter: OccurrencesQueryFilter!): [EventOccurrence]
|
||||
occurrence(id: ID!): EventOccurrence
|
||||
}
|
||||
scalar Timestamp
|
||||
|
||||
scalar EventStatus
|
||||
|
||||
scalar RoleType
|
||||
|
||||
scalar Category
|
||||
|
||||
scalar Date
|
||||
|
||||
scalar Language
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
]
|
||||
},
|
||||
"include": [
|
||||
"packages", "@types/index.d.ts"],
|
||||
"packages", "@types/index.d.ts", "@types/graphql.d.ts"],
|
||||
"exclude": [
|
||||
".*/__tests__/.*", "node_modules", "dist", "lib", "__tests__"
|
||||
]
|
||||
|
|
68
yarn.lock
68
yarn.lock
|
@ -933,6 +933,36 @@
|
|||
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.3.tgz#dfa0c92efe44a1d1a7974fb49ffeb40ef2da5a27"
|
||||
integrity sha512-zVgvPwGK7c1aVdUVc9Qv7SqepOGRDrqCw7KZPSZziWGxSlbII3gmvGLPzLX4d0n0BMbamBacUrN22zOMyFFEkQ==
|
||||
|
||||
"@gql2ts/from-query@^1.9.0":
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@gql2ts/from-query/-/from-query-1.9.0.tgz#ae92a4fa3df005df57eb835b371d7964644b9beb"
|
||||
integrity sha512-hfH2Oq3ikHu+zKE4b9kdGbzEqFiX+VxIg0nhgpY5iUgl975cAtTFhAdwfzr/jKdZhC9Ad5dE1CPrjEA+G7hzMg==
|
||||
dependencies:
|
||||
"@gql2ts/language-typescript" "^1.9.0"
|
||||
"@gql2ts/util" "^1.9.0"
|
||||
|
||||
"@gql2ts/from-schema@^1.10.1":
|
||||
version "1.10.1"
|
||||
resolved "https://registry.yarnpkg.com/@gql2ts/from-schema/-/from-schema-1.10.1.tgz#f8bb1f9525d5731163b16f5bcf300f87ef560273"
|
||||
integrity sha512-atYXxY8WBBfK39fEbdwx3CgqRYYUR10a1hGPIwVcvEuNYIlAnIUR1drVbmC3higwMbAyHGkMxDPJ9Us7tnNz6w==
|
||||
dependencies:
|
||||
"@gql2ts/language-typescript" "^1.9.0"
|
||||
"@gql2ts/util" "^1.9.0"
|
||||
dedent "^0.7.0"
|
||||
|
||||
"@gql2ts/language-typescript@^1.9.0":
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@gql2ts/language-typescript/-/language-typescript-1.9.0.tgz#c521e800817d1341552e9c684bca6b64b0abb46f"
|
||||
integrity sha512-d3OlIFMjKoXH+VukXD7+pQRLgrP3NkXDQbCWSGonIl5mpRQ5aO5I8Fo53cMZQ9xCjj1Y5Vg24wtZOuY8spc6Ag==
|
||||
dependencies:
|
||||
"@gql2ts/util" "^1.9.0"
|
||||
humps "^2.0.0"
|
||||
|
||||
"@gql2ts/util@^1.9.0":
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@gql2ts/util/-/util-1.9.0.tgz#d07a54832757d2f2d1fc9891e5b0e3e3b4886c6a"
|
||||
integrity sha512-mkHar7AdyShUFJE6Mlke1tUbb+lPCK1EozZeAhCuRrhQ5aCCBAG6RxzNUYX1Q2jeGeyU0WRAtQu1oE/GoIsNXA==
|
||||
|
||||
"@jest/console@^24.7.1":
|
||||
version "24.7.1"
|
||||
resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545"
|
||||
|
@ -2684,6 +2714,11 @@ commander@^2.12.1, commander@^2.20.0, commander@^2.8.1, commander@~2.20.0:
|
|||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
|
||||
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
|
||||
|
||||
commander@^2.9.0:
|
||||
version "2.20.1"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.1.tgz#3863ce3ca92d0831dcf2a102f5fb4b5926afd0f9"
|
||||
integrity sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==
|
||||
|
||||
commander@~2.19.0:
|
||||
version "2.19.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
|
||||
|
@ -3086,6 +3121,11 @@ decode-uri-component@^0.2.0:
|
|||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
||||
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
|
||||
|
||||
dedent@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
|
||||
integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
|
||||
|
||||
deep-equal@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
|
||||
|
@ -4098,6 +4138,17 @@ got@^6.7.1:
|
|||
unzip-response "^2.0.1"
|
||||
url-parse-lax "^1.0.0"
|
||||
|
||||
gql2ts@^1.10.1:
|
||||
version "1.10.1"
|
||||
resolved "https://registry.yarnpkg.com/gql2ts/-/gql2ts-1.10.1.tgz#aae1a1312744f7c9b36abf78437413ea317f6a71"
|
||||
integrity sha512-Kwa1Db1e3qGediBi1A5wX98UBKmvUklsQgfLwk7J8bj9RQ4AkAwTToFvUmKhflKTZndAtQbdOJWwm5cmgXsLYA==
|
||||
dependencies:
|
||||
"@gql2ts/from-query" "^1.9.0"
|
||||
"@gql2ts/from-schema" "^1.10.1"
|
||||
"@gql2ts/util" "^1.9.0"
|
||||
commander "^2.9.0"
|
||||
graphql ">= 0.10 <15"
|
||||
|
||||
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
|
||||
|
@ -4119,6 +4170,13 @@ graphql-tools@^4.0.3:
|
|||
iterall "^1.1.3"
|
||||
uuid "^3.1.0"
|
||||
|
||||
"graphql@>= 0.10 <15":
|
||||
version "14.5.8"
|
||||
resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.5.8.tgz#504f3d3114cb9a0a3f359bbbcf38d9e5bf6a6b3c"
|
||||
integrity sha512-MMwmi0zlVLQKLdGiMfWkgQD7dY/TUKt4L+zgJ/aR0Howebod3aNgP5JkgvAULiR2HPVZaP2VEElqtdidHweLkg==
|
||||
dependencies:
|
||||
iterall "^1.2.2"
|
||||
|
||||
graphql@^14.0.2:
|
||||
version "14.4.2"
|
||||
resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.4.2.tgz#553a7d546d524663eda49ed6df77577be3203ae3"
|
||||
|
@ -4444,6 +4502,11 @@ https-browserify@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
|
||||
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
|
||||
|
||||
humps@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/humps/-/humps-2.0.1.tgz#dd02ea6081bd0568dc5d073184463957ba9ef9aa"
|
||||
integrity sha1-3QLqYIG9BWjcXQcxhEY5V7qe+ao=
|
||||
|
||||
iconv-lite@0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
|
||||
version "0.4.24"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||
|
@ -6646,6 +6709,11 @@ prepend-http@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
|
||||
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
|
||||
|
||||
prettier@^1.18.2:
|
||||
version "1.18.2"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea"
|
||||
integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==
|
||||
|
||||
pretty-error@^2.0.2:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
|
||||
|
|
Loading…
Reference in New Issue