Feat/front metadata request (#1977)

* wip

* Wip

* Wip

* Finished v1

* Fix from PR

* Removed unused fragment masking feature
This commit is contained in:
Lucas Bordeau
2023-10-13 18:01:57 +02:00
committed by GitHub
parent 41ae30cada
commit cafcfdc95e
28 changed files with 1439 additions and 140 deletions

View File

@ -58,7 +58,7 @@ module.exports = {
}
},
],
ignorePatterns: ['.eslintrc.js', 'codegen.js', '**/generated/*', '*.config.js'],
ignorePatterns: ['.eslintrc.js', 'codegen*.js', '**/generated*/*', '*.config.js'],
rules: {
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',

13
front/codegen-metadata.js Normal file
View File

@ -0,0 +1,13 @@
module.exports = {
schema: process.env.REACT_APP_SERVER_BASE_URL + "/metadata",
documents: ['./src/modules/metadata/graphql/*.tsx', './src/modules/metadata/graphql/*.ts'],
overwrite: true,
generates: {
'./src/generated-metadata/': {
preset: 'client',
presetConfig: {
fragmentMasking: false
}
},
},
};

View File

@ -1,6 +1,6 @@
module.exports = {
schema: process.env.REACT_APP_SERVER_BASE_URL + "/graphql",
documents: ['./src/**/*.tsx', './src/**/*.ts'],
documents: ['!./src/modules/metadata/**', './src/modules/**/*.tsx', './src/modules/**/*.ts'],
overwrite: true,
generates: {
'./src/generated/graphql.tsx': {

View File

@ -82,7 +82,8 @@
"storybook:pages:build": "STORYBOOK_STORIES_FOLDER=pages yarn storybook:build",
"storybook:modules:coverage": "STORYBOOK_STORIES_FOLDER=modules yarn storybook:coverage",
"storybook:pages:coverage": "STORYBOOK_STORIES_FOLDER=pages yarn storybook:coverage",
"graphql:generate": "dotenv cross-var graphql-codegen --config codegen.js",
"graphql:data:generate": "dotenv cross-var graphql-codegen -- --config codegen.js",
"graphql:metadata:generate": "dotenv cross-var graphql-codegen -- --config codegen-metadata.js",
"chromatic": "dotenv cross-var npx chromatic --project-token=$CHROMATIC_PROJECT_TOKEN",
"install": "yarn eslint-plugin:setup"
},
@ -126,6 +127,7 @@
"devDependencies": {
"@craco/craco": "^7.1.0",
"@graphql-codegen/cli": "^3.3.1",
"@graphql-codegen/client-preset": "^4.1.0",
"@graphql-codegen/typescript": "^3.0.4",
"@graphql-codegen/typescript-operations": "^3.0.4",
"@graphql-codegen/typescript-react-apollo": "^3.3.7",

View File

@ -0,0 +1,42 @@
/* eslint-disable */
import * as types from './graphql';
import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
/**
* Map of all GraphQL operations in the project.
*
* This map has several performance disadvantages:
* 1. It is not tree-shakeable, so it will include all operations in the project.
* 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.
* 3. It does not support dead code elimination, so it will add unused operations.
*
* Therefore it is highly recommended to use the babel or swc plugin for production.
*/
const documents = {
"\n query Objects {\n objects(paging: { first: 100 }) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n createdAt\n updatedAt\n fields(paging: { first: 100 }) {\n edges {\n node {\n id\n type\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n placeholder\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n }\n }\n": types.ObjectsDocument,
};
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*
*
* @example
* ```ts
* const query = graphql(`query GetUser($id: ID!) { user(id: $id) { name } }`);
* ```
*
* The query argument is unknown!
* Please regenerate the types.
*/
export function graphql(source: string): unknown;
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n query Objects {\n objects(paging: { first: 100 }) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n createdAt\n updatedAt\n fields(paging: { first: 100 }) {\n edges {\n node {\n id\n type\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n placeholder\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n }\n }\n"): (typeof documents)["\n query Objects {\n objects(paging: { first: 100 }) {\n edges {\n node {\n id\n dataSourceId\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n isCustom\n isActive\n createdAt\n updatedAt\n fields(paging: { first: 100 }) {\n edges {\n node {\n id\n type\n nameSingular\n namePlural\n labelSingular\n labelPlural\n description\n icon\n placeholder\n isCustom\n isActive\n isNullable\n createdAt\n updatedAt\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n }\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n }\n }\n"];
export function graphql(source: string) {
return (documents as any)[source] ?? {};
}
export type DocumentType<TDocumentNode extends DocumentNode<any, any>> = TDocumentNode extends DocumentNode< infer TType, any> ? TType : never;

View File

@ -0,0 +1,823 @@
/* eslint-disable */
import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
export type Maybe<T> = T | null;
export type InputMaybe<T> = Maybe<T>;
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };
export type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };
export type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };
/** All built-in and custom scalars, mapped to their actual values */
export type Scalars = {
ID: { input: string; output: string; }
String: { input: string; output: string; }
Boolean: { input: boolean; output: boolean; }
Int: { input: number; output: number; }
Float: { input: number; output: number; }
/** Cursor for paging through collections */
ConnectionCursor: { input: any; output: any; }
/** A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format. */
DateTime: { input: any; output: any; }
/** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */
JSON: { input: any; output: any; }
};
export type Activity = {
__typename?: 'Activity';
activityTargets?: Maybe<Array<ActivityTarget>>;
assignee?: Maybe<User>;
assigneeId?: Maybe<Scalars['String']['output']>;
attachments?: Maybe<Array<Attachment>>;
author: User;
authorId: Scalars['String']['output'];
body?: Maybe<Scalars['String']['output']>;
comments?: Maybe<Array<Comment>>;
completedAt?: Maybe<Scalars['DateTime']['output']>;
createdAt: Scalars['DateTime']['output'];
dueAt?: Maybe<Scalars['DateTime']['output']>;
id: Scalars['ID']['output'];
reminderAt?: Maybe<Scalars['DateTime']['output']>;
title?: Maybe<Scalars['String']['output']>;
type: ActivityType;
updatedAt: Scalars['DateTime']['output'];
workspaceMemberAssignee?: Maybe<WorkspaceMember>;
workspaceMemberAssigneeId?: Maybe<Scalars['String']['output']>;
workspaceMemberAuthor?: Maybe<WorkspaceMember>;
workspaceMemberAuthorId?: Maybe<Scalars['String']['output']>;
};
export type ActivityTarget = {
__typename?: 'ActivityTarget';
activity: Activity;
activityId: Scalars['String']['output'];
company?: Maybe<Company>;
companyId?: Maybe<Scalars['String']['output']>;
createdAt: Scalars['DateTime']['output'];
id: Scalars['ID']['output'];
person?: Maybe<Person>;
personId?: Maybe<Scalars['String']['output']>;
updatedAt: Scalars['DateTime']['output'];
};
export enum ActivityType {
Note = 'Note',
Task = 'Task'
}
export type ApiKey = {
__typename?: 'ApiKey';
createdAt: Scalars['DateTime']['output'];
expiresAt?: Maybe<Scalars['DateTime']['output']>;
id: Scalars['ID']['output'];
name: Scalars['String']['output'];
updatedAt: Scalars['DateTime']['output'];
};
export type Attachment = {
__typename?: 'Attachment';
activity?: Maybe<Activity>;
activityId?: Maybe<Scalars['String']['output']>;
author: User;
authorId: Scalars['String']['output'];
company?: Maybe<Company>;
companyId?: Maybe<Scalars['String']['output']>;
createdAt: Scalars['DateTime']['output'];
fullPath: Scalars['String']['output'];
id: Scalars['ID']['output'];
name: Scalars['String']['output'];
person?: Maybe<Person>;
personId?: Maybe<Scalars['String']['output']>;
type: AttachmentType;
updatedAt: Scalars['DateTime']['output'];
workspace: Workspace;
workspaceMemberAuthor?: Maybe<WorkspaceMember>;
workspaceMemberAuthorId?: Maybe<Scalars['String']['output']>;
};
export enum AttachmentType {
Archive = 'Archive',
Audio = 'Audio',
Image = 'Image',
Other = 'Other',
Spreadsheet = 'Spreadsheet',
TextDocument = 'TextDocument',
Video = 'Video'
}
export type AuthProviders = {
__typename?: 'AuthProviders';
google: Scalars['Boolean']['output'];
magicLink: Scalars['Boolean']['output'];
password: Scalars['Boolean']['output'];
};
export type AuthToken = {
__typename?: 'AuthToken';
expiresAt: Scalars['DateTime']['output'];
token: Scalars['String']['output'];
};
export type AuthTokenPair = {
__typename?: 'AuthTokenPair';
accessToken: AuthToken;
refreshToken: AuthToken;
};
export enum ColorScheme {
Dark = 'Dark',
Light = 'Light',
System = 'System'
}
export type Comment = {
__typename?: 'Comment';
activity?: Maybe<Activity>;
activityId?: Maybe<Scalars['String']['output']>;
author: User;
authorId: Scalars['String']['output'];
body: Scalars['String']['output'];
commentThreadId?: Maybe<Scalars['String']['output']>;
createdAt: Scalars['DateTime']['output'];
id: Scalars['ID']['output'];
updatedAt: Scalars['DateTime']['output'];
workspaceMemberAuthor?: Maybe<WorkspaceMember>;
workspaceMemberAuthorId?: Maybe<Scalars['String']['output']>;
};
export type Company = {
__typename?: 'Company';
ActivityTarget?: Maybe<Array<ActivityTarget>>;
Attachment?: Maybe<Array<Attachment>>;
Favorite?: Maybe<Array<Favorite>>;
PipelineProgress?: Maybe<Array<PipelineProgress>>;
accountOwner?: Maybe<User>;
accountOwnerId?: Maybe<Scalars['String']['output']>;
address: Scalars['String']['output'];
annualRecurringRevenue?: Maybe<Scalars['Int']['output']>;
createdAt: Scalars['DateTime']['output'];
domainName: Scalars['String']['output'];
employees?: Maybe<Scalars['Int']['output']>;
id: Scalars['ID']['output'];
idealCustomerProfile: Scalars['Boolean']['output'];
linkedinUrl?: Maybe<Scalars['String']['output']>;
name: Scalars['String']['output'];
people?: Maybe<Array<Person>>;
updatedAt: Scalars['DateTime']['output'];
workspaceMemberAccountOwner?: Maybe<WorkspaceMember>;
workspaceMemberAccountOwnerId?: Maybe<Scalars['String']['output']>;
xUrl?: Maybe<Scalars['String']['output']>;
};
export type CreateFieldInput = {
description?: InputMaybe<Scalars['String']['input']>;
icon?: InputMaybe<Scalars['String']['input']>;
labelPlural?: InputMaybe<Scalars['String']['input']>;
labelSingular: Scalars['String']['input'];
namePlural?: InputMaybe<Scalars['String']['input']>;
nameSingular: Scalars['String']['input'];
objectId: Scalars['String']['input'];
placeholder?: InputMaybe<Scalars['String']['input']>;
type: Scalars['String']['input'];
};
export type CreateObjectInput = {
description?: InputMaybe<Scalars['String']['input']>;
icon?: InputMaybe<Scalars['String']['input']>;
labelPlural: Scalars['String']['input'];
labelSingular: Scalars['String']['input'];
namePlural: Scalars['String']['input'];
nameSingular: Scalars['String']['input'];
};
export type CreateOneFieldInput = {
/** The record to create */
field: CreateFieldInput;
};
export type CreateOneObjectInput = {
/** The record to create */
object: CreateObjectInput;
};
export enum Currency {
Aed = 'AED',
Afn = 'AFN',
All = 'ALL',
Amd = 'AMD',
Ang = 'ANG',
Aoa = 'AOA',
Ars = 'ARS',
Aud = 'AUD',
Awg = 'AWG',
Azn = 'AZN',
Bam = 'BAM',
Bbd = 'BBD',
Bdt = 'BDT',
Bgn = 'BGN',
Bhd = 'BHD',
Bif = 'BIF',
Bmd = 'BMD',
Bnd = 'BND',
Bob = 'BOB',
Bov = 'BOV',
Brl = 'BRL',
Bsd = 'BSD',
Btn = 'BTN',
Bwp = 'BWP',
Byn = 'BYN',
Bzd = 'BZD',
Cad = 'CAD',
Cdf = 'CDF',
Chf = 'CHF',
Clf = 'CLF',
Clp = 'CLP',
Cny = 'CNY',
Cop = 'COP',
Cou = 'COU',
Crc = 'CRC',
Cuc = 'CUC',
Cup = 'CUP',
Cve = 'CVE',
Czk = 'CZK',
Djf = 'DJF',
Dkk = 'DKK',
Dop = 'DOP',
Dzd = 'DZD',
Egp = 'EGP',
Ern = 'ERN',
Etb = 'ETB',
Eur = 'EUR',
Fjd = 'FJD',
Fkp = 'FKP',
Gbp = 'GBP',
Gel = 'GEL',
Ghs = 'GHS',
Gip = 'GIP',
Gmd = 'GMD',
Gnf = 'GNF',
Gtq = 'GTQ',
Gyd = 'GYD',
Hkd = 'HKD',
Hnl = 'HNL',
Hrk = 'HRK',
Htg = 'HTG',
Huf = 'HUF',
Idr = 'IDR',
Ils = 'ILS',
Inr = 'INR',
Iqd = 'IQD',
Irr = 'IRR',
Isk = 'ISK',
Jmd = 'JMD',
Jod = 'JOD',
Jpy = 'JPY',
Kes = 'KES',
Kgs = 'KGS',
Khr = 'KHR',
Kmf = 'KMF',
Kpw = 'KPW',
Krw = 'KRW',
Kwd = 'KWD',
Kyd = 'KYD',
Kzt = 'KZT',
Lak = 'LAK',
Lbp = 'LBP',
Lkr = 'LKR',
Lrd = 'LRD',
Lsl = 'LSL',
Lyd = 'LYD',
Mad = 'MAD',
Mdl = 'MDL',
Mga = 'MGA',
Mkd = 'MKD',
Mmk = 'MMK',
Mnt = 'MNT',
Mop = 'MOP',
Mro = 'MRO',
Mru = 'MRU',
Mur = 'MUR',
Mvr = 'MVR',
Mwk = 'MWK',
Mxn = 'MXN',
Mxv = 'MXV',
Myr = 'MYR',
Mzn = 'MZN',
Nad = 'NAD',
Ngn = 'NGN',
Nio = 'NIO',
Nok = 'NOK',
Npr = 'NPR',
Nzd = 'NZD',
Omr = 'OMR',
Pab = 'PAB',
Pen = 'PEN',
Pgk = 'PGK',
Php = 'PHP',
Pkr = 'PKR',
Pln = 'PLN',
Pyg = 'PYG',
Qar = 'QAR',
Ron = 'RON',
Rsd = 'RSD',
Rub = 'RUB',
Rwf = 'RWF',
Sar = 'SAR',
Sbd = 'SBD',
Scr = 'SCR',
Sdd = 'SDD',
Sdg = 'SDG',
Sek = 'SEK',
Sgd = 'SGD',
Shp = 'SHP',
Sll = 'SLL',
Sos = 'SOS',
Srd = 'SRD',
Ssp = 'SSP',
Std = 'STD',
Stn = 'STN',
Svc = 'SVC',
Syp = 'SYP',
Szl = 'SZL',
Thb = 'THB',
Tjs = 'TJS',
Tmm = 'TMM',
Tmt = 'TMT',
Tnd = 'TND',
Top = 'TOP',
Try = 'TRY',
Ttd = 'TTD',
Twd = 'TWD',
Tzs = 'TZS',
Uah = 'UAH',
Ugx = 'UGX',
Usd = 'USD',
Uyu = 'UYU',
Uzs = 'UZS',
Vef = 'VEF',
Ves = 'VES',
Vnd = 'VND',
Vuv = 'VUV',
Wst = 'WST',
Xaf = 'XAF',
Xcd = 'XCD',
Xof = 'XOF',
Xpf = 'XPF',
Xsu = 'XSU',
Xua = 'XUA',
Yer = 'YER',
Zar = 'ZAR',
Zmw = 'ZMW',
Zwl = 'ZWL'
}
export type CursorPaging = {
/** Paginate after opaque cursor */
after?: InputMaybe<Scalars['ConnectionCursor']['input']>;
/** Paginate before opaque cursor */
before?: InputMaybe<Scalars['ConnectionCursor']['input']>;
/** Paginate first */
first?: InputMaybe<Scalars['Int']['input']>;
/** Paginate last */
last?: InputMaybe<Scalars['Int']['input']>;
};
export type Favorite = {
__typename?: 'Favorite';
company?: Maybe<Company>;
companyId?: Maybe<Scalars['String']['output']>;
id: Scalars['ID']['output'];
person?: Maybe<Person>;
personId?: Maybe<Scalars['String']['output']>;
workspaceId?: Maybe<Scalars['String']['output']>;
workspaceMember?: Maybe<WorkspaceMember>;
workspaceMemberId?: Maybe<Scalars['String']['output']>;
};
export type FieldConnection = {
__typename?: 'FieldConnection';
/** Array of edges. */
edges: Array<FieldEdge>;
/** Paging information */
pageInfo: PageInfo;
/** Fetch total count of records */
totalCount: Scalars['Int']['output'];
};
export type Mutation = {
__typename?: 'Mutation';
createOneField: Field;
createOneObject: Object;
updateOneField: Field;
updateOneObject: Object;
};
export type MutationCreateOneFieldArgs = {
input: CreateOneFieldInput;
};
export type MutationCreateOneObjectArgs = {
input: CreateOneObjectInput;
};
export type MutationUpdateOneFieldArgs = {
input: UpdateOneFieldInput;
};
export type MutationUpdateOneObjectArgs = {
input: UpdateOneObjectInput;
};
export type ObjectConnection = {
__typename?: 'ObjectConnection';
/** Array of edges. */
edges: Array<ObjectEdge>;
/** Paging information */
pageInfo: PageInfo;
/** Fetch total count of records */
totalCount: Scalars['Int']['output'];
};
export type ObjectFieldsConnection = {
__typename?: 'ObjectFieldsConnection';
/** Array of edges. */
edges: Array<FieldEdge>;
/** Paging information */
pageInfo: PageInfo;
/** Fetch total count of records */
totalCount: Scalars['Int']['output'];
};
export type PageInfo = {
__typename?: 'PageInfo';
/** The cursor of the last returned record. */
endCursor?: Maybe<Scalars['ConnectionCursor']['output']>;
/** true if paging forward and there are more records. */
hasNextPage?: Maybe<Scalars['Boolean']['output']>;
/** true if paging backwards and there are more records. */
hasPreviousPage?: Maybe<Scalars['Boolean']['output']>;
/** The cursor of the first returned record. */
startCursor?: Maybe<Scalars['ConnectionCursor']['output']>;
};
export type Person = {
__typename?: 'Person';
ActivityTarget?: Maybe<Array<ActivityTarget>>;
Attachment?: Maybe<Array<Attachment>>;
Favorite?: Maybe<Array<Favorite>>;
PipelineProgress?: Maybe<Array<PipelineProgress>>;
avatarUrl?: Maybe<Scalars['String']['output']>;
city?: Maybe<Scalars['String']['output']>;
company?: Maybe<Company>;
companyId?: Maybe<Scalars['String']['output']>;
contactPipelineProgresses?: Maybe<Array<PipelineProgress>>;
createdAt: Scalars['DateTime']['output'];
email?: Maybe<Scalars['String']['output']>;
firstName?: Maybe<Scalars['String']['output']>;
id: Scalars['ID']['output'];
jobTitle?: Maybe<Scalars['String']['output']>;
lastName?: Maybe<Scalars['String']['output']>;
linkedinUrl?: Maybe<Scalars['String']['output']>;
phone?: Maybe<Scalars['String']['output']>;
updatedAt: Scalars['DateTime']['output'];
xUrl?: Maybe<Scalars['String']['output']>;
};
export type Pipeline = {
__typename?: 'Pipeline';
createdAt: Scalars['DateTime']['output'];
currency: Currency;
icon: Scalars['String']['output'];
id: Scalars['ID']['output'];
name: Scalars['String']['output'];
pipelineProgressableType: PipelineProgressableType;
pipelineProgresses?: Maybe<Array<PipelineProgress>>;
pipelineStages?: Maybe<Array<PipelineStage>>;
updatedAt: Scalars['DateTime']['output'];
};
export type PipelineProgress = {
__typename?: 'PipelineProgress';
amount?: Maybe<Scalars['Int']['output']>;
closeDate?: Maybe<Scalars['DateTime']['output']>;
company?: Maybe<Company>;
companyId?: Maybe<Scalars['String']['output']>;
createdAt: Scalars['DateTime']['output'];
id: Scalars['ID']['output'];
person?: Maybe<Person>;
personId?: Maybe<Scalars['String']['output']>;
pipeline: Pipeline;
pipelineId: Scalars['String']['output'];
pipelineStage: PipelineStage;
pipelineStageId: Scalars['String']['output'];
pointOfContact?: Maybe<Person>;
pointOfContactId?: Maybe<Scalars['String']['output']>;
probability?: Maybe<Scalars['Int']['output']>;
updatedAt: Scalars['DateTime']['output'];
};
export enum PipelineProgressableType {
Company = 'Company',
Person = 'Person'
}
export type PipelineStage = {
__typename?: 'PipelineStage';
color: Scalars['String']['output'];
createdAt: Scalars['DateTime']['output'];
id: Scalars['ID']['output'];
index?: Maybe<Scalars['Int']['output']>;
name: Scalars['String']['output'];
pipeline: Pipeline;
pipelineId: Scalars['String']['output'];
pipelineProgresses?: Maybe<Array<PipelineProgress>>;
type: Scalars['String']['output'];
updatedAt: Scalars['DateTime']['output'];
};
export type Query = {
__typename?: 'Query';
field: Field;
fields: FieldConnection;
object: Object;
objects: ObjectConnection;
};
export type QueryFieldArgs = {
id: Scalars['ID']['input'];
};
export type QueryFieldsArgs = {
paging?: CursorPaging;
};
export type QueryObjectArgs = {
id: Scalars['ID']['input'];
};
export type QueryObjectsArgs = {
paging?: CursorPaging;
};
export type Support = {
__typename?: 'Support';
supportDriver: Scalars['String']['output'];
supportFrontChatId?: Maybe<Scalars['String']['output']>;
};
export type Telemetry = {
__typename?: 'Telemetry';
anonymizationEnabled: Scalars['Boolean']['output'];
enabled: Scalars['Boolean']['output'];
};
export type UpdateFieldInput = {
description?: InputMaybe<Scalars['String']['input']>;
icon?: InputMaybe<Scalars['String']['input']>;
isActive?: InputMaybe<Scalars['Boolean']['input']>;
labelPlural?: InputMaybe<Scalars['String']['input']>;
labelSingular?: InputMaybe<Scalars['String']['input']>;
namePlural?: InputMaybe<Scalars['String']['input']>;
nameSingular?: InputMaybe<Scalars['String']['input']>;
placeholder?: InputMaybe<Scalars['String']['input']>;
};
export type UpdateObjectInput = {
description?: InputMaybe<Scalars['String']['input']>;
icon?: InputMaybe<Scalars['String']['input']>;
isActive?: InputMaybe<Scalars['Boolean']['input']>;
labelPlural: Scalars['String']['input'];
labelSingular: Scalars['String']['input'];
namePlural: Scalars['String']['input'];
nameSingular: Scalars['String']['input'];
};
export type UpdateOneFieldInput = {
/** The id of the record to update */
id: Scalars['ID']['input'];
/** The update to apply. */
update: UpdateFieldInput;
};
export type UpdateOneObjectInput = {
/** The id of the record to update */
id: Scalars['ID']['input'];
/** The update to apply. */
update: UpdateObjectInput;
};
export type User = {
__typename?: 'User';
assignedActivities?: Maybe<Array<Activity>>;
authoredActivities?: Maybe<Array<Activity>>;
authoredAttachments?: Maybe<Array<Attachment>>;
avatarUrl?: Maybe<Scalars['String']['output']>;
canImpersonate: Scalars['Boolean']['output'];
comments?: Maybe<Array<Comment>>;
companies?: Maybe<Array<Company>>;
createdAt: Scalars['DateTime']['output'];
disabled: Scalars['Boolean']['output'];
email: Scalars['String']['output'];
emailVerified: Scalars['Boolean']['output'];
firstName?: Maybe<Scalars['String']['output']>;
id: Scalars['ID']['output'];
lastName?: Maybe<Scalars['String']['output']>;
lastSeen?: Maybe<Scalars['DateTime']['output']>;
locale: Scalars['String']['output'];
metadata?: Maybe<Scalars['JSON']['output']>;
phoneNumber?: Maybe<Scalars['String']['output']>;
settings: UserSettings;
settingsId: Scalars['String']['output'];
updatedAt: Scalars['DateTime']['output'];
workspaceMember?: Maybe<WorkspaceMember>;
};
export type UserSettings = {
__typename?: 'UserSettings';
WorkspaceMember?: Maybe<Array<WorkspaceMember>>;
colorScheme: ColorScheme;
createdAt: Scalars['DateTime']['output'];
id: Scalars['ID']['output'];
locale: Scalars['String']['output'];
updatedAt: Scalars['DateTime']['output'];
user?: Maybe<User>;
};
export type View = {
__typename?: 'View';
fields?: Maybe<Array<ViewField>>;
filters?: Maybe<Array<ViewFilter>>;
id: Scalars['ID']['output'];
name: Scalars['String']['output'];
objectId: Scalars['String']['output'];
sorts?: Maybe<Array<ViewSort>>;
type: ViewType;
};
export type ViewField = {
__typename?: 'ViewField';
index: Scalars['Float']['output'];
isVisible: Scalars['Boolean']['output'];
key: Scalars['String']['output'];
name: Scalars['String']['output'];
objectId: Scalars['String']['output'];
size?: Maybe<Scalars['Int']['output']>;
view: View;
viewId: Scalars['String']['output'];
};
export type ViewFilter = {
__typename?: 'ViewFilter';
displayValue: Scalars['String']['output'];
key: Scalars['String']['output'];
name: Scalars['String']['output'];
operand: ViewFilterOperand;
value: Scalars['String']['output'];
view: View;
viewId: Scalars['String']['output'];
};
export enum ViewFilterOperand {
Contains = 'Contains',
DoesNotContain = 'DoesNotContain',
GreaterThan = 'GreaterThan',
Is = 'Is',
IsNot = 'IsNot',
IsNotNull = 'IsNotNull',
LessThan = 'LessThan'
}
export type ViewSort = {
__typename?: 'ViewSort';
direction: ViewSortDirection;
key: Scalars['String']['output'];
name: Scalars['String']['output'];
view: View;
viewId: Scalars['String']['output'];
};
export enum ViewSortDirection {
Asc = 'asc',
Desc = 'desc'
}
export enum ViewType {
Pipeline = 'Pipeline',
Table = 'Table'
}
export type Workspace = {
__typename?: 'Workspace';
Attachment?: Maybe<Array<Attachment>>;
activities?: Maybe<Array<Activity>>;
activityTargets?: Maybe<Array<ActivityTarget>>;
apiKeys?: Maybe<Array<ApiKey>>;
comments?: Maybe<Array<Comment>>;
companies?: Maybe<Array<Company>>;
createdAt: Scalars['DateTime']['output'];
displayName?: Maybe<Scalars['String']['output']>;
domainName?: Maybe<Scalars['String']['output']>;
id: Scalars['ID']['output'];
inviteHash?: Maybe<Scalars['String']['output']>;
logo?: Maybe<Scalars['String']['output']>;
people?: Maybe<Array<Person>>;
pipelineProgresses?: Maybe<Array<PipelineProgress>>;
pipelineStages?: Maybe<Array<PipelineStage>>;
pipelines?: Maybe<Array<Pipeline>>;
updatedAt: Scalars['DateTime']['output'];
viewFields?: Maybe<Array<ViewField>>;
viewFilters?: Maybe<Array<ViewFilter>>;
viewSorts?: Maybe<Array<ViewSort>>;
views?: Maybe<Array<View>>;
workspaceMember?: Maybe<Array<WorkspaceMember>>;
};
export type WorkspaceMember = {
__typename?: 'WorkspaceMember';
Favorite?: Maybe<Array<Favorite>>;
allowImpersonation: Scalars['Boolean']['output'];
assignedActivities?: Maybe<Array<Activity>>;
authoredActivities?: Maybe<Array<Activity>>;
authoredAttachments?: Maybe<Array<Attachment>>;
comments?: Maybe<Array<Comment>>;
companies?: Maybe<Array<Company>>;
createdAt: Scalars['DateTime']['output'];
id: Scalars['ID']['output'];
settings?: Maybe<UserSettings>;
settingsId?: Maybe<Scalars['String']['output']>;
updatedAt: Scalars['DateTime']['output'];
user: User;
userId: Scalars['String']['output'];
workspace: Workspace;
};
export type Field = {
__typename?: 'field';
createdAt: Scalars['DateTime']['output'];
description?: Maybe<Scalars['String']['output']>;
icon?: Maybe<Scalars['String']['output']>;
id: Scalars['ID']['output'];
isActive: Scalars['Boolean']['output'];
isCustom: Scalars['Boolean']['output'];
isNullable: Scalars['Boolean']['output'];
labelPlural: Scalars['String']['output'];
labelSingular: Scalars['String']['output'];
namePlural: Scalars['String']['output'];
nameSingular: Scalars['String']['output'];
placeholder?: Maybe<Scalars['String']['output']>;
type: Scalars['String']['output'];
updatedAt: Scalars['DateTime']['output'];
};
export type FieldEdge = {
__typename?: 'fieldEdge';
/** Cursor for this node. */
cursor: Scalars['ConnectionCursor']['output'];
/** The node containing the field */
node: Field;
};
export type Object = {
__typename?: 'object';
createdAt: Scalars['DateTime']['output'];
dataSourceId: Scalars['String']['output'];
description?: Maybe<Scalars['String']['output']>;
fields: ObjectFieldsConnection;
icon?: Maybe<Scalars['String']['output']>;
id: Scalars['ID']['output'];
isActive: Scalars['Boolean']['output'];
isCustom: Scalars['Boolean']['output'];
labelPlural: Scalars['String']['output'];
labelSingular: Scalars['String']['output'];
namePlural: Scalars['String']['output'];
nameSingular: Scalars['String']['output'];
updatedAt: Scalars['DateTime']['output'];
};
export type ObjectFieldsArgs = {
paging?: CursorPaging;
};
export type ObjectEdge = {
__typename?: 'objectEdge';
/** Cursor for this node. */
cursor: Scalars['ConnectionCursor']['output'];
/** The node containing the object */
node: Object;
};
export type ObjectsQueryVariables = Exact<{ [key: string]: never; }>;
export type ObjectsQuery = { __typename?: 'Query', objects: { __typename?: 'ObjectConnection', totalCount: number, edges: Array<{ __typename?: 'objectEdge', node: { __typename?: 'object', id: string, dataSourceId: string, nameSingular: string, namePlural: string, labelSingular: string, labelPlural: string, description?: string | null, icon?: string | null, isCustom: boolean, isActive: boolean, createdAt: any, updatedAt: any, fields: { __typename?: 'ObjectFieldsConnection', totalCount: number, edges: Array<{ __typename?: 'fieldEdge', node: { __typename?: 'field', id: string, type: string, nameSingular: string, namePlural: string, labelSingular: string, labelPlural: string, description?: string | null, icon?: string | null, placeholder?: string | null, isCustom: boolean, isActive: boolean, isNullable: boolean, createdAt: any, updatedAt: any } }>, pageInfo: { __typename?: 'PageInfo', hasNextPage?: boolean | null, hasPreviousPage?: boolean | null, startCursor?: any | null, endCursor?: any | null } } } }>, pageInfo: { __typename?: 'PageInfo', hasNextPage?: boolean | null, hasPreviousPage?: boolean | null, startCursor?: any | null, endCursor?: any | null } } };
export const ObjectsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"Objects"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"objects"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"paging"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"first"},"value":{"kind":"IntValue","value":"100"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"dataSourceId"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"labelSingular"}},{"kind":"Field","name":{"kind":"Name","value":"labelPlural"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"fields"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"paging"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"first"},"value":{"kind":"IntValue","value":"100"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"node"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"nameSingular"}},{"kind":"Field","name":{"kind":"Name","value":"namePlural"}},{"kind":"Field","name":{"kind":"Name","value":"labelSingular"}},{"kind":"Field","name":{"kind":"Name","value":"labelPlural"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"Field","name":{"kind":"Name","value":"placeholder"}},{"kind":"Field","name":{"kind":"Name","value":"isCustom"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"isNullable"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"pageInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"hasNextPage"}},{"kind":"Field","name":{"kind":"Name","value":"hasPreviousPage"}},{"kind":"Field","name":{"kind":"Name","value":"startCursor"}},{"kind":"Field","name":{"kind":"Name","value":"endCursor"}}]}},{"kind":"Field","name":{"kind":"Name","value":"totalCount"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"pageInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"hasNextPage"}},{"kind":"Field","name":{"kind":"Name","value":"hasPreviousPage"}},{"kind":"Field","name":{"kind":"Name","value":"startCursor"}},{"kind":"Field","name":{"kind":"Name","value":"endCursor"}}]}},{"kind":"Field","name":{"kind":"Name","value":"totalCount"}}]}}]}}]} as unknown as DocumentNode<ObjectsQuery, ObjectsQueryVariables>;

View File

@ -0,0 +1 @@
export * from "./gql";

View File

@ -13,6 +13,7 @@ export type Scalars = {
Boolean: boolean;
Int: number;
Float: number;
ConnectionCursor: any;
DateTime: string;
JSON: any;
Upload: any;
@ -445,6 +446,63 @@ export type Analytics = {
success: Scalars['Boolean'];
};
export type ApiKey = {
__typename?: 'ApiKey';
createdAt: Scalars['DateTime'];
expiresAt?: Maybe<Scalars['DateTime']>;
id: Scalars['ID'];
name: Scalars['String'];
updatedAt: Scalars['DateTime'];
};
export type ApiKeyCreateInput = {
createdAt?: InputMaybe<Scalars['DateTime']>;
expiresAt?: InputMaybe<Scalars['DateTime']>;
id?: InputMaybe<Scalars['String']>;
name: Scalars['String'];
updatedAt?: InputMaybe<Scalars['DateTime']>;
};
export type ApiKeyOrderByWithRelationInput = {
createdAt?: InputMaybe<SortOrder>;
expiresAt?: InputMaybe<SortOrder>;
id?: InputMaybe<SortOrder>;
name?: InputMaybe<SortOrder>;
updatedAt?: InputMaybe<SortOrder>;
};
export enum ApiKeyScalarFieldEnum {
CreatedAt = 'createdAt',
DeletedAt = 'deletedAt',
ExpiresAt = 'expiresAt',
Id = 'id',
Name = 'name',
RevokedAt = 'revokedAt',
UpdatedAt = 'updatedAt',
WorkspaceId = 'workspaceId'
}
export type ApiKeyUpdateManyWithoutWorkspaceNestedInput = {
connect?: InputMaybe<Array<ApiKeyWhereUniqueInput>>;
disconnect?: InputMaybe<Array<ApiKeyWhereUniqueInput>>;
set?: InputMaybe<Array<ApiKeyWhereUniqueInput>>;
};
export type ApiKeyWhereInput = {
AND?: InputMaybe<Array<ApiKeyWhereInput>>;
NOT?: InputMaybe<Array<ApiKeyWhereInput>>;
OR?: InputMaybe<Array<ApiKeyWhereInput>>;
createdAt?: InputMaybe<DateTimeFilter>;
expiresAt?: InputMaybe<DateTimeNullableFilter>;
id?: InputMaybe<StringFilter>;
name?: InputMaybe<StringFilter>;
updatedAt?: InputMaybe<DateTimeFilter>;
};
export type ApiKeyWhereUniqueInput = {
id?: InputMaybe<Scalars['String']>;
};
export type Attachment = {
__typename?: 'Attachment';
activity?: Maybe<Activity>;
@ -1070,6 +1128,17 @@ export enum Currency {
Zwl = 'ZWL'
}
export type CursorPaging = {
/** Paginate after opaque cursor */
after?: InputMaybe<Scalars['ConnectionCursor']>;
/** Paginate before opaque cursor */
before?: InputMaybe<Scalars['ConnectionCursor']>;
/** Paginate first */
first?: InputMaybe<Scalars['Int']>;
/** Paginate last */
last?: InputMaybe<Scalars['Int']>;
};
export type DateTimeFilter = {
equals?: InputMaybe<Scalars['DateTime']>;
gt?: InputMaybe<Scalars['DateTime']>;
@ -1219,6 +1288,16 @@ export type FavoriteWhereUniqueInput = {
id?: InputMaybe<Scalars['String']>;
};
export type FieldConnection = {
__typename?: 'FieldConnection';
/** Array of edges. */
edges: Array<FieldEdge>;
/** Paging information */
pageInfo: PageInfo;
/** Fetch total count of records */
totalCount: Scalars['Int'];
};
export enum FileFolder {
Attachment = 'Attachment',
PersonPicture = 'PersonPicture',
@ -1274,7 +1353,6 @@ export type Mutation = {
UpdateOneWorkspaceMember: WorkspaceMember;
allowImpersonation: WorkspaceMember;
challenge: LoginToken;
createCustomField: Scalars['String'];
createEvent: Analytics;
createFavoriteForCompany: Favorite;
createFavoriteForPerson: Favorite;
@ -1285,6 +1363,7 @@ export type Mutation = {
createManyViewFilter: AffectedRows;
createManyViewSort: AffectedRows;
createOneActivity: Activity;
createOneApiKey: AuthToken;
createOneComment: Comment;
createOneCompany: Company;
createOnePerson: Person;
@ -1307,6 +1386,7 @@ export type Mutation = {
deleteWorkspaceMember: WorkspaceMember;
impersonate: Verify;
renewToken: AuthTokens;
revokeOneApiKey: ApiKey;
signUp: LoginToken;
updateOneActivity: Activity;
updateOneCompany?: Maybe<Company>;
@ -1346,13 +1426,6 @@ export type MutationChallengeArgs = {
};
export type MutationCreateCustomFieldArgs = {
name: Scalars['String'];
objectId: Scalars['String'];
type: Scalars['String'];
};
export type MutationCreateEventArgs = {
data: Scalars['JSON'];
type: Scalars['String'];
@ -1410,6 +1483,11 @@ export type MutationCreateOneActivityArgs = {
};
export type MutationCreateOneApiKeyArgs = {
data: ApiKeyCreateInput;
};
export type MutationCreateOneCommentArgs = {
data: CommentCreateInput;
};
@ -1510,6 +1588,11 @@ export type MutationRenewTokenArgs = {
};
export type MutationRevokeOneApiKeyArgs = {
where: ApiKeyWhereUniqueInput;
};
export type MutationSignUpArgs = {
email: Scalars['String'];
password: Scalars['String'];
@ -1755,19 +1838,36 @@ export type NestedStringNullableFilter = {
startsWith?: InputMaybe<Scalars['String']>;
};
export type PageInfo = {
__typename?: 'PageInfo';
endCursor?: Maybe<Scalars['String']>;
hasNextPage: Scalars['Boolean'];
hasPreviousPage: Scalars['Boolean'];
startCursor?: Maybe<Scalars['String']>;
export type ObjectConnection = {
__typename?: 'ObjectConnection';
/** Array of edges. */
edges: Array<ObjectEdge>;
/** Paging information */
pageInfo: PageInfo;
/** Fetch total count of records */
totalCount: Scalars['Int'];
};
export type PaginatedUniversalEntity = {
__typename?: 'PaginatedUniversalEntity';
edges?: Maybe<Array<UniversalEntityEdge>>;
pageInfo?: Maybe<PageInfo>;
totalCount: Scalars['Float'];
export type ObjectFieldsConnection = {
__typename?: 'ObjectFieldsConnection';
/** Array of edges. */
edges: Array<FieldEdge>;
/** Paging information */
pageInfo: PageInfo;
/** Fetch total count of records */
totalCount: Scalars['Int'];
};
export type PageInfo = {
__typename?: 'PageInfo';
/** The cursor of the last returned record. */
endCursor?: Maybe<Scalars['ConnectionCursor']>;
/** true if paging forward and there are more records. */
hasNextPage?: Maybe<Scalars['Boolean']>;
/** true if paging backwards and there are more records. */
hasPreviousPage?: Maybe<Scalars['Boolean']>;
/** The cursor of the first returned record. */
startCursor?: Maybe<Scalars['ConnectionCursor']>;
};
export type Person = {
@ -2350,10 +2450,9 @@ export type Query = {
clientConfig: ClientConfig;
currentUser: User;
currentWorkspace: Workspace;
deleteOneCustom: UniversalEntity;
findFavorites: Array<Favorite>;
findMany: PaginatedUniversalEntity;
findManyActivities: Array<Activity>;
findManyApiKey: Array<ApiKey>;
findManyCompany: Array<Company>;
findManyPerson: Array<Person>;
findManyPipeline: Array<Pipeline>;
@ -2365,11 +2464,9 @@ export type Query = {
findManyViewFilter: Array<ViewFilter>;
findManyViewSort: Array<ViewSort>;
findManyWorkspaceMember: Array<WorkspaceMember>;
findUnique: UniversalEntity;
findUniqueCompany: Company;
findUniquePerson: Person;
findWorkspaceFromInviteHash: Workspace;
updateOneCustom: UniversalEntity;
};
@ -2383,21 +2480,6 @@ export type QueryCheckWorkspaceInviteHashIsValidArgs = {
};
export type QueryFindManyArgs = {
after?: InputMaybe<Scalars['String']>;
before?: InputMaybe<Scalars['String']>;
cursor?: InputMaybe<Scalars['JSON']>;
distinct?: InputMaybe<Array<Scalars['String']>>;
entity: Scalars['String'];
first?: InputMaybe<Scalars['Float']>;
last?: InputMaybe<Scalars['Float']>;
orderBy?: InputMaybe<UniversalEntityOrderByRelationInput>;
skip?: InputMaybe<Scalars['Int']>;
take?: InputMaybe<Scalars['Int']>;
where?: InputMaybe<UniversalEntityInput>;
};
export type QueryFindManyActivitiesArgs = {
cursor?: InputMaybe<ActivityWhereUniqueInput>;
distinct?: InputMaybe<Array<ActivityScalarFieldEnum>>;
@ -2408,6 +2490,16 @@ export type QueryFindManyActivitiesArgs = {
};
export type QueryFindManyApiKeyArgs = {
cursor?: InputMaybe<ApiKeyWhereUniqueInput>;
distinct?: InputMaybe<Array<ApiKeyScalarFieldEnum>>;
orderBy?: InputMaybe<Array<ApiKeyOrderByWithRelationInput>>;
skip?: InputMaybe<Scalars['Int']>;
take?: InputMaybe<Scalars['Int']>;
where?: InputMaybe<ApiKeyWhereInput>;
};
export type QueryFindManyCompanyArgs = {
cursor?: InputMaybe<CompanyWhereUniqueInput>;
distinct?: InputMaybe<Array<CompanyScalarFieldEnum>>;
@ -2518,12 +2610,6 @@ export type QueryFindManyWorkspaceMemberArgs = {
};
export type QueryFindUniqueArgs = {
entity: Scalars['String'];
where?: InputMaybe<UniversalEntityInput>;
};
export type QueryFindUniqueCompanyArgs = {
where: CompanyWhereUniqueInput;
};
@ -2590,39 +2676,6 @@ export type Telemetry = {
enabled: Scalars['Boolean'];
};
export enum TypeOrmSortOrder {
Asc = 'ASC',
Desc = 'DESC'
}
export type UniversalEntity = {
__typename?: 'UniversalEntity';
createdAt: Scalars['DateTime'];
data: Scalars['JSON'];
id: Scalars['ID'];
updatedAt: Scalars['DateTime'];
};
export type UniversalEntityEdge = {
__typename?: 'UniversalEntityEdge';
cursor?: Maybe<Scalars['String']>;
node?: Maybe<UniversalEntity>;
};
export type UniversalEntityInput = {
createdAt?: InputMaybe<Scalars['DateTime']>;
data?: InputMaybe<Scalars['JSON']>;
id?: InputMaybe<Scalars['ID']>;
updatedAt?: InputMaybe<Scalars['DateTime']>;
};
export type UniversalEntityOrderByRelationInput = {
createdAt?: InputMaybe<TypeOrmSortOrder>;
data?: InputMaybe<Scalars['JSON']>;
id?: InputMaybe<TypeOrmSortOrder>;
updatedAt?: InputMaybe<TypeOrmSortOrder>;
};
export type User = {
__typename?: 'User';
assignedActivities?: Maybe<Array<Activity>>;
@ -3282,6 +3335,7 @@ export type Workspace = {
Attachment?: Maybe<Array<Attachment>>;
activities?: Maybe<Array<Activity>>;
activityTargets?: Maybe<Array<ActivityTarget>>;
apiKeys?: Maybe<Array<ApiKey>>;
comments?: Maybe<Array<Comment>>;
companies?: Maybe<Array<Company>>;
createdAt: Scalars['DateTime'];
@ -3456,6 +3510,7 @@ export type WorkspaceUpdateInput = {
Attachment?: InputMaybe<AttachmentUpdateManyWithoutWorkspaceNestedInput>;
activities?: InputMaybe<ActivityUpdateManyWithoutWorkspaceNestedInput>;
activityTargets?: InputMaybe<ActivityTargetUpdateManyWithoutWorkspaceNestedInput>;
apiKeys?: InputMaybe<ApiKeyUpdateManyWithoutWorkspaceNestedInput>;
comments?: InputMaybe<CommentUpdateManyWithoutWorkspaceNestedInput>;
companies?: InputMaybe<CompanyUpdateManyWithoutWorkspaceNestedInput>;
createdAt?: InputMaybe<Scalars['DateTime']>;
@ -3476,6 +3531,62 @@ export type WorkspaceUpdateInput = {
workspaceMember?: InputMaybe<WorkspaceMemberUpdateManyWithoutWorkspaceNestedInput>;
};
export type Field = {
__typename?: 'field';
createdAt: Scalars['DateTime'];
description?: Maybe<Scalars['String']>;
icon?: Maybe<Scalars['String']>;
id: Scalars['ID'];
isActive: Scalars['Boolean'];
isCustom: Scalars['Boolean'];
isNullable: Scalars['Boolean'];
labelPlural: Scalars['String'];
labelSingular: Scalars['String'];
namePlural: Scalars['String'];
nameSingular: Scalars['String'];
placeholder?: Maybe<Scalars['String']>;
type: Scalars['String'];
updatedAt: Scalars['DateTime'];
};
export type FieldEdge = {
__typename?: 'fieldEdge';
/** Cursor for this node. */
cursor: Scalars['ConnectionCursor'];
/** The node containing the field */
node: Field;
};
export type Object = {
__typename?: 'object';
createdAt: Scalars['DateTime'];
dataSourceId: Scalars['String'];
description?: Maybe<Scalars['String']>;
fields: ObjectFieldsConnection;
icon?: Maybe<Scalars['String']>;
id: Scalars['ID'];
isActive: Scalars['Boolean'];
isCustom: Scalars['Boolean'];
labelPlural: Scalars['String'];
labelSingular: Scalars['String'];
namePlural: Scalars['String'];
nameSingular: Scalars['String'];
updatedAt: Scalars['DateTime'];
};
export type ObjectFieldsArgs = {
paging?: CursorPaging;
};
export type ObjectEdge = {
__typename?: 'objectEdge';
/** Cursor for this node. */
cursor: Scalars['ConnectionCursor'];
/** The node containing the object */
node: Object;
};
export type ActivityWithTargetsFragment = { __typename?: 'Activity', id: string, createdAt: string, updatedAt: string, activityTargets?: Array<{ __typename?: 'ActivityTarget', id: string, createdAt: string, updatedAt: string, companyId?: string | null, personId?: string | null }> | null };
export type ActivityQueryFragmentFragment = { __typename?: 'Activity', id: string, createdAt: string, title?: string | null, body?: string | null, type: ActivityType, completedAt?: string | null, dueAt?: string | null, assignee?: { __typename?: 'User', id: string, firstName?: string | null, lastName?: string | null, displayName: string, avatarUrl?: string | null } | null, author: { __typename?: 'User', id: string, firstName?: string | null, lastName?: string | null, displayName: string }, comments?: Array<{ __typename?: 'Comment', id: string, body: string, createdAt: string, updatedAt: string, author: { __typename?: 'User', id: string, displayName: string, firstName?: string | null, lastName?: string | null, avatarUrl?: string | null } }> | null, activityTargets?: Array<{ __typename?: 'ActivityTarget', id: string, companyId?: string | null, personId?: string | null, company?: { __typename?: 'Company', id: string, name: string, domainName: string } | null, person?: { __typename?: 'Person', id: string, displayName: string, avatarUrl?: string | null } | null }> | null };

View File

@ -16,6 +16,8 @@ import { UserProvider } from '@/users/components/UserProvider';
import '@emotion/react';
import { PageChangeEffect } from './effect-components/PageChangeEffect';
import { ApolloClientMetadataProvider } from './modules/metadata/components/ApolloClientMetadataProvider';
import { FetchMetadataEffect } from './modules/metadata/components/FetchMetadataEffect';
import { App } from './App';
import './index.css';
@ -33,16 +35,19 @@ root.render(
<HelmetProvider>
<ClientConfigProvider>
<UserProvider>
<PageChangeEffect />
<AppThemeProvider>
<SnackBarProvider>
<DialogProvider>
<StrictMode>
<App />
</StrictMode>
</DialogProvider>
</SnackBarProvider>
</AppThemeProvider>
<ApolloClientMetadataProvider>
<FetchMetadataEffect />
<PageChangeEffect />
<AppThemeProvider>
<SnackBarProvider>
<DialogProvider>
<StrictMode>
<App />
</StrictMode>
</DialogProvider>
</SnackBarProvider>
</AppThemeProvider>
</ApolloClientMetadataProvider>
</UserProvider>
</ClientConfigProvider>
</HelmetProvider>

View File

@ -2,9 +2,12 @@ import { DateTime } from 'luxon';
import { useRecoilState } from 'recoil';
import { currentUserState } from '@/auth/states/currentUserState';
import { FilterOperand } from '@/ui/view-bar/types/FilterOperand';
import { turnFilterIntoWhereClause } from '@/ui/view-bar/utils/turnFilterIntoWhereClause';
import { ActivityType, useGetActivitiesQuery } from '~/generated/graphql';
import {
ActivityType,
useGetActivitiesQuery,
ViewFilterOperand,
} from '~/generated/graphql';
import { parseDate } from '~/utils/date-utils';
export const useCurrentUserTaskCount = () => {
@ -20,7 +23,7 @@ export const useCurrentUserTaskCount = () => {
key: 'assigneeId',
type: 'entity',
value: currentUser.id,
operand: FilterOperand.Is,
operand: ViewFilterOperand.Is,
displayValue: currentUser.displayName,
displayAvatarUrl: currentUser.avatarUrl ?? undefined,
})

View File

@ -0,0 +1,36 @@
/* eslint-disable no-console */
import { useMemo } from 'react';
import { ApolloClient, InMemoryCache } from '@apollo/client';
import { useRecoilState } from 'recoil';
import { tokenPairState } from '@/auth/states/tokenPairState';
import { ApolloClientMetadataContext } from '../context/ApolloClientMetadataContext';
export const ApolloClientMetadataProvider = ({
children,
}: {
children: React.ReactNode;
}) => {
const [tokenPair] = useRecoilState(tokenPairState);
const apolloClientMetadata = useMemo(() => {
if (tokenPair?.accessToken.token) {
return new ApolloClient({
uri: `${process.env.REACT_APP_SERVER_BASE_URL}/metadata`,
cache: new InMemoryCache(),
headers: {
Authorization: `Bearer ${tokenPair.accessToken.token}`,
},
});
} else {
return null;
}
}, [tokenPair]);
return (
<ApolloClientMetadataContext.Provider value={apolloClientMetadata}>
{children}
</ApolloClientMetadataContext.Provider>
);
};

View File

@ -0,0 +1,37 @@
import { useEffect } from 'react';
import { useRecoilState } from 'recoil';
import { ObjectsQuery } from '~/generated-metadata/graphql';
import { GET_ALL_OBJECTS } from '../graphql/queries';
import { useApolloClientMetadata } from '../hooks/useApolloClientMetadata';
import { metadataObjectsState } from '../states/metadataObjectsState';
import { MetadataObject } from '../types/MetadataObject';
export const FetchMetadataEffect = () => {
const [metadataObjects, setMetadataObjects] =
useRecoilState(metadataObjectsState);
const apolloClientMetadata = useApolloClientMetadata();
useEffect(() => {
(async () => {
if (apolloClientMetadata && metadataObjects.length === 0) {
const objects = await apolloClientMetadata.query<ObjectsQuery>({
query: GET_ALL_OBJECTS,
});
if (objects.data.objects.edges.length > 0) {
const formattedObjects: MetadataObject[] =
objects.data.objects.edges.map((object) => ({
...object.node,
fields: object.node.fields.edges.map((field) => field.node),
}));
setMetadataObjects(formattedObjects);
}
}
})();
}, [metadataObjects, setMetadataObjects, apolloClientMetadata]);
return <></>;
};

View File

@ -0,0 +1,5 @@
import { createContext } from 'react';
import { ApolloClient, NormalizedCacheObject } from '@apollo/client';
export const ApolloClientMetadataContext =
createContext<ApolloClient<NormalizedCacheObject> | null>(null);

View File

@ -0,0 +1,58 @@
import { gql } from '@apollo/client';
export const GET_ALL_OBJECTS = gql`
query Objects {
objects(paging: { first: 100 }) {
edges {
node {
id
dataSourceId
nameSingular
namePlural
labelSingular
labelPlural
description
icon
isCustom
isActive
createdAt
updatedAt
fields(paging: { first: 100 }) {
edges {
node {
id
type
nameSingular
namePlural
labelSingular
labelPlural
description
icon
placeholder
isCustom
isActive
isNullable
createdAt
updatedAt
}
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
totalCount
}
}
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
totalCount
}
}
`;

View File

@ -0,0 +1,7 @@
import { useContext } from 'react';
import { ApolloClientMetadataContext } from '../context/ApolloClientMetadataContext';
export const useApolloClientMetadata = () => {
return useContext(ApolloClientMetadataContext);
};

View File

@ -0,0 +1,8 @@
import { atom } from 'recoil';
import { MetadataObject } from '../types/MetadataObject';
export const metadataObjectsState = atom<MetadataObject[]>({
key: 'metadataObjectsState',
default: [],
});

View File

@ -0,0 +1,5 @@
import { Field, Object as GeneratedObject } from '~/generated-metadata/graphql';
export type MetadataObject = Omit<GeneratedObject, 'fields'> & {
fields: Field[];
};

View File

@ -10,10 +10,10 @@ import { useUpsertFilter } from '@/ui/view-bar/hooks/useUpsertFilter';
import { filterDefinitionUsedInDropdownScopedState } from '@/ui/view-bar/states/filterDefinitionUsedInDropdownScopedState';
import { filterDropdownSelectedEntityIdScopedState } from '@/ui/view-bar/states/filterDropdownSelectedEntityIdScopedState';
import { selectedOperandInDropdownScopedState } from '@/ui/view-bar/states/selectedOperandInDropdownScopedState';
import { ViewFilterOperand } from '~/generated/graphql';
import { useViewBarContext } from '../hooks/useViewBarContext';
import { filterDropdownSearchInputScopedState } from '../states/filterDropdownSearchInputScopedState';
import { FilterOperand } from '../types/FilterOperand';
export const FilterDropdownEntitySearchSelect = ({
entitiesForSelect,
@ -113,7 +113,7 @@ export const FilterDropdownEntitySearchSelect = ({
upsertFilter({
displayValue: filterDefinitionUsedInDropdown.selectAllLabel,
key: filterDefinitionUsedInDropdown.key,
operand: FilterOperand.IsNotNull,
operand: ViewFilterOperand.IsNotNull,
type: filterDefinitionUsedInDropdown.type,
value: '',
});
@ -126,7 +126,7 @@ export const FilterDropdownEntitySearchSelect = ({
} else {
setFilterDropdownSelectedEntityId(filterCurrentlyEdited.value);
setIsAllEntitySelected(
filterCurrentlyEdited.operand === FilterOperand.IsNotNull,
filterCurrentlyEdited.operand === ViewFilterOperand.IsNotNull,
);
}
}, [

View File

@ -1,6 +1,7 @@
import { DropdownMenuItemsContainer } from '@/ui/dropdown/components/DropdownMenuItemsContainer';
import { MenuItem } from '@/ui/menu-item/components/MenuItem';
import { useRecoilScopedState } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopedState';
import { ViewFilterOperand } from '~/generated/graphql';
import { useFilterCurrentlyEdited } from '../hooks/useFilterCurrentlyEdited';
import { useUpsertFilter } from '../hooks/useUpsertFilter';
@ -8,7 +9,6 @@ import { useViewBarContext } from '../hooks/useViewBarContext';
import { filterDefinitionUsedInDropdownScopedState } from '../states/filterDefinitionUsedInDropdownScopedState';
import { isFilterDropdownOperandSelectUnfoldedScopedState } from '../states/isFilterDropdownOperandSelectUnfoldedScopedState';
import { selectedOperandInDropdownScopedState } from '../states/selectedOperandInDropdownScopedState';
import { FilterOperand } from '../types/FilterOperand';
import { getOperandLabel } from '../utils/getOperandLabel';
import { getOperandsForFilterType } from '../utils/getOperandsForFilterType';
@ -41,7 +41,7 @@ export const FilterDropdownOperandSelect = () => {
const upsertFilter = useUpsertFilter();
const handleOperangeChange = (newOperand: FilterOperand) => {
const handleOperangeChange = (newOperand: ViewFilterOperand) => {
setSelectedOperandInDropdown(newOperand);
setIsFilterDropdownOperandSelectUnfolded(false);

View File

@ -10,11 +10,11 @@ import { HotkeyScope } from '@/ui/utilities/hotkey/types/HotkeyScope';
import { useRecoilScopedState } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopedState';
import { filterDefinitionUsedInDropdownScopedState } from '@/ui/view-bar/states/filterDefinitionUsedInDropdownScopedState';
import { selectedOperandInDropdownScopedState } from '@/ui/view-bar/states/selectedOperandInDropdownScopedState';
import { ViewFilterOperand } from '~/generated/graphql';
import { useViewBarContext } from '../hooks/useViewBarContext';
import { availableFiltersScopedState } from '../states/availableFiltersScopedState';
import { filtersScopedState } from '../states/filtersScopedState';
import { FilterOperand } from '../types/FilterOperand';
import { getOperandsForFilterType } from '../utils/getOperandsForFilterType';
import { FilterDropdownEntitySearchInput } from './FilterDropdownEntitySearchInput';
@ -72,7 +72,7 @@ export const SingleEntityFilterDropdownButton = ({
<GenericEntityFilterChip
filter={filters[0]}
Icon={
filters[0].operand === FilterOperand.IsNotNull
filters[0].operand === ViewFilterOperand.IsNotNull
? availableFilter.SelectAllIcon
: undefined
}

View File

@ -1,9 +1,9 @@
import { atomFamily } from 'recoil';
import { FilterOperand } from '../types/FilterOperand';
import { ViewFilterOperand } from '~/generated/graphql';
export const selectedOperandInDropdownScopedState = atomFamily<
FilterOperand | null,
ViewFilterOperand | null,
string
>({
key: 'selectedOperandInDropdownScopedState',

View File

@ -1,4 +1,5 @@
import { FilterOperand } from './FilterOperand';
import { ViewFilterOperand } from '~/generated/graphql';
import { FilterType } from './FilterType';
export type Filter = {
@ -7,5 +8,5 @@ export type Filter = {
value: string;
displayValue: string;
displayAvatarUrl?: string;
operand: FilterOperand;
operand: ViewFilterOperand;
};

View File

@ -1 +0,0 @@
export { ViewFilterOperand as FilterOperand } from '~/generated/graphql';

View File

@ -1,20 +1,22 @@
import { FilterOperand } from '../types/FilterOperand';
import { ViewFilterOperand } from '~/generated/graphql';
export const getOperandLabel = (operand: FilterOperand | null | undefined) => {
export const getOperandLabel = (
operand: ViewFilterOperand | null | undefined,
) => {
switch (operand) {
case FilterOperand.Contains:
case ViewFilterOperand.Contains:
return 'Contains';
case FilterOperand.DoesNotContain:
case ViewFilterOperand.DoesNotContain:
return "Doesn't contain";
case FilterOperand.GreaterThan:
case ViewFilterOperand.GreaterThan:
return 'Greater than';
case FilterOperand.LessThan:
case ViewFilterOperand.LessThan:
return 'Less than';
case FilterOperand.Is:
case ViewFilterOperand.Is:
return 'Is';
case FilterOperand.IsNot:
case ViewFilterOperand.IsNot:
return 'Is not';
case FilterOperand.IsNotNull:
case ViewFilterOperand.IsNotNull:
return 'Is not null';
default:
return '';
@ -22,20 +24,20 @@ export const getOperandLabel = (operand: FilterOperand | null | undefined) => {
};
export const getOperandLabelShort = (
operand: FilterOperand | null | undefined,
operand: ViewFilterOperand | null | undefined,
) => {
switch (operand) {
case FilterOperand.Is:
case FilterOperand.Contains:
case ViewFilterOperand.Is:
case ViewFilterOperand.Contains:
return ': ';
case FilterOperand.IsNot:
case FilterOperand.DoesNotContain:
case ViewFilterOperand.IsNot:
case ViewFilterOperand.DoesNotContain:
return ': Not';
case FilterOperand.IsNotNull:
case ViewFilterOperand.IsNotNull:
return ': NotNull';
case FilterOperand.GreaterThan:
case ViewFilterOperand.GreaterThan:
return '\u00A0> ';
case FilterOperand.LessThan:
case ViewFilterOperand.LessThan:
return '\u00A0< ';
default:
return ': ';

View File

@ -1,17 +1,18 @@
import { FilterOperand } from '../types/FilterOperand';
import { ViewFilterOperand } from '~/generated/graphql';
import { FilterType } from '../types/FilterType';
export const getOperandsForFilterType = (
filterType: FilterType | null | undefined,
): FilterOperand[] => {
): ViewFilterOperand[] => {
switch (filterType) {
case 'text':
return [FilterOperand.Contains, FilterOperand.DoesNotContain];
return [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain];
case 'number':
case 'date':
return [FilterOperand.GreaterThan, FilterOperand.LessThan];
return [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan];
case 'entity':
return [FilterOperand.Is, FilterOperand.IsNot];
return [ViewFilterOperand.Is, ViewFilterOperand.IsNot];
default:
return [];
}

View File

@ -1,11 +1,10 @@
import { QueryMode } from '~/generated/graphql';
import { QueryMode, ViewFilterOperand } from '~/generated/graphql';
import { Filter } from '../types/Filter';
import { FilterOperand } from '../types/FilterOperand';
export const turnFilterIntoWhereClause = (filter: Filter) => {
switch (filter.operand) {
case FilterOperand.IsNotNull:
case ViewFilterOperand.IsNotNull:
return {
[filter.key]: {
not: null,
@ -15,14 +14,14 @@ export const turnFilterIntoWhereClause = (filter: Filter) => {
switch (filter.type) {
case 'text':
switch (filter.operand) {
case FilterOperand.Contains:
case ViewFilterOperand.Contains:
return {
[filter.key]: {
contains: filter.value,
mode: QueryMode.Insensitive,
},
};
case FilterOperand.DoesNotContain:
case ViewFilterOperand.DoesNotContain:
return {
[filter.key]: {
not: {
@ -38,13 +37,13 @@ export const turnFilterIntoWhereClause = (filter: Filter) => {
}
case 'number':
switch (filter.operand) {
case FilterOperand.GreaterThan:
case ViewFilterOperand.GreaterThan:
return {
[filter.key]: {
gte: parseFloat(filter.value),
},
};
case FilterOperand.LessThan:
case ViewFilterOperand.LessThan:
return {
[filter.key]: {
lte: parseFloat(filter.value),
@ -57,13 +56,13 @@ export const turnFilterIntoWhereClause = (filter: Filter) => {
}
case 'date':
switch (filter.operand) {
case FilterOperand.GreaterThan:
case ViewFilterOperand.GreaterThan:
return {
[filter.key]: {
gte: filter.value,
},
};
case FilterOperand.LessThan:
case ViewFilterOperand.LessThan:
return {
[filter.key]: {
lte: filter.value,
@ -76,13 +75,13 @@ export const turnFilterIntoWhereClause = (filter: Filter) => {
}
case 'entity':
switch (filter.operand) {
case FilterOperand.Is:
case ViewFilterOperand.Is:
return {
[filter.key]: {
equals: filter.value,
},
};
case FilterOperand.IsNot:
case ViewFilterOperand.IsNot:
return {
[filter.key]: {
not: { equals: filter.value },

View File

@ -6,7 +6,7 @@ import { currentUserState } from '@/auth/states/currentUserState';
import { useRecoilScopedState } from '@/ui/utilities/recoil-scope/hooks/useRecoilScopedState';
import { availableFiltersScopedState } from '@/ui/view-bar/states/availableFiltersScopedState';
import { filtersScopedState } from '@/ui/view-bar/states/filtersScopedState';
import { FilterOperand } from '@/ui/view-bar/types/FilterOperand';
import { ViewFilterOperand } from '~/generated/graphql';
import { tasksFilters } from './tasks-filters';
@ -33,7 +33,7 @@ export const TasksEffect = () => {
key: 'assigneeId',
type: 'entity',
value: currentUser.id,
operand: FilterOperand.Is,
operand: ViewFilterOperand.Is,
displayValue: currentUser.displayName,
displayAvatarUrl: currentUser.avatarUrl ?? undefined,
},

View File

@ -1940,6 +1940,14 @@
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.1.tgz#1a5b1959a528e374e8037c4396c3e825d6cf4a83"
integrity sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==
"@graphql-codegen/add@^5.0.0":
version "5.0.0"
resolved "https://registry.yarnpkg.com/@graphql-codegen/add/-/add-5.0.0.tgz#578ebaf4fa87c1e934c381cd679bcedcf79feaba"
integrity sha512-ynWDOsK2yxtFHwcJTB9shoSkUd7YXd6ZE57f0nk7W5cu/nAgxZZpEsnTPEpZB/Mjf14YRGe2uJHQ7AfElHjqUQ==
dependencies:
"@graphql-codegen/plugin-helpers" "^5.0.0"
tslib "~2.5.0"
"@graphql-codegen/cli@^3.3.1":
version "3.3.1"
resolved "https://registry.yarnpkg.com/@graphql-codegen/cli/-/cli-3.3.1.tgz#103e7a2263126fdde168a1ce623fc2bdc05352f0"
@ -1981,6 +1989,25 @@
yaml "^1.10.0"
yargs "^17.0.0"
"@graphql-codegen/client-preset@^4.1.0":
version "4.1.0"
resolved "https://registry.yarnpkg.com/@graphql-codegen/client-preset/-/client-preset-4.1.0.tgz#81becd32b78b207b0e966876900537ec172d8df1"
integrity sha512-/3Ymb/fjxIF1+HGmaI1YwSZbWsrZAWMSQjh3dU425eBjctjsVQ6gzGRr+l/gE5F1mtmCf+vlbTAT03heAc/QIw==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
"@babel/template" "^7.20.7"
"@graphql-codegen/add" "^5.0.0"
"@graphql-codegen/gql-tag-operations" "4.0.1"
"@graphql-codegen/plugin-helpers" "^5.0.1"
"@graphql-codegen/typed-document-node" "^5.0.1"
"@graphql-codegen/typescript" "^4.0.1"
"@graphql-codegen/typescript-operations" "^4.0.1"
"@graphql-codegen/visitor-plugin-common" "^4.0.1"
"@graphql-tools/documents" "^1.0.0"
"@graphql-tools/utils" "^10.0.0"
"@graphql-typed-document-node/core" "3.2.0"
tslib "~2.5.0"
"@graphql-codegen/core@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@graphql-codegen/core/-/core-3.1.0.tgz#ad859d52d509a4eb2ebe5aabba6543a628fb181b"
@ -1991,6 +2018,17 @@
"@graphql-tools/utils" "^9.1.1"
tslib "~2.5.0"
"@graphql-codegen/gql-tag-operations@4.0.1":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-4.0.1.tgz#36c7d40a135b9889d7f225166be323c3d48cee87"
integrity sha512-qF6wIbBzW8BNT+wiVsBxrYOs2oYcsxQ7mRvCpfEI3HnNZMAST/uX76W8MqFEJvj4mw7NIDv7xYJAcAZIWM5LWw==
dependencies:
"@graphql-codegen/plugin-helpers" "^5.0.0"
"@graphql-codegen/visitor-plugin-common" "4.0.1"
"@graphql-tools/utils" "^10.0.0"
auto-bind "~4.0.0"
tslib "~2.5.0"
"@graphql-codegen/plugin-helpers@^2.7.2":
version "2.7.2"
resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz#6544f739d725441c826a8af6a49519f588ff9bed"
@ -2015,6 +2053,18 @@
lodash "~4.17.0"
tslib "~2.5.0"
"@graphql-codegen/plugin-helpers@^5.0.0", "@graphql-codegen/plugin-helpers@^5.0.1":
version "5.0.1"
resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-5.0.1.tgz#e2429fcfba3f078d5aa18aa062d46c922bbb0d55"
integrity sha512-6L5sb9D8wptZhnhLLBcheSPU7Tg//DGWgc5tQBWX46KYTOTQHGqDpv50FxAJJOyFVJrveN9otWk9UT9/yfY4ww==
dependencies:
"@graphql-tools/utils" "^10.0.0"
change-case-all "1.0.15"
common-tags "1.8.2"
import-from "4.0.0"
lodash "~4.17.0"
tslib "~2.5.0"
"@graphql-codegen/schema-ast@^3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@graphql-codegen/schema-ast/-/schema-ast-3.0.1.tgz#37b458bb57b95715a9eb4259341c856dae2a461d"
@ -2024,6 +2074,26 @@
"@graphql-tools/utils" "^9.0.0"
tslib "~2.5.0"
"@graphql-codegen/schema-ast@^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@graphql-codegen/schema-ast/-/schema-ast-4.0.0.tgz#5d60996c87b64f81847da8fcb2d8ef50ede89755"
integrity sha512-WIzkJFa9Gz28FITAPILbt+7A8+yzOyd1NxgwFh7ie+EmO9a5zQK6UQ3U/BviirguXCYnn+AR4dXsoDrSrtRA1g==
dependencies:
"@graphql-codegen/plugin-helpers" "^5.0.0"
"@graphql-tools/utils" "^10.0.0"
tslib "~2.5.0"
"@graphql-codegen/typed-document-node@^5.0.1":
version "5.0.1"
resolved "https://registry.yarnpkg.com/@graphql-codegen/typed-document-node/-/typed-document-node-5.0.1.tgz#ac90cf67c61554f63ec100d6076b47c9f0b18b27"
integrity sha512-VFkhCuJnkgtbbgzoCAwTdJe2G1H6sd3LfCrDqWUrQe53y2ukfSb5Ov1PhAIkCBStKCMQBUY9YgGz9GKR40qQ8g==
dependencies:
"@graphql-codegen/plugin-helpers" "^5.0.0"
"@graphql-codegen/visitor-plugin-common" "4.0.1"
auto-bind "~4.0.0"
change-case-all "1.0.15"
tslib "~2.5.0"
"@graphql-codegen/typescript-operations@^3.0.4":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-3.0.4.tgz#60163c07f0ef73655779ece450d02c1172c44027"
@ -2035,6 +2105,17 @@
auto-bind "~4.0.0"
tslib "~2.5.0"
"@graphql-codegen/typescript-operations@^4.0.1":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-4.0.1.tgz#930af3e2d2ae8ff06de696291be28fe7046a2fef"
integrity sha512-GpUWWdBVUec/Zqo23aFLBMrXYxN2irypHqDcKjN78JclDPdreasAEPcIpMfqf4MClvpmvDLy4ql+djVAwmkjbw==
dependencies:
"@graphql-codegen/plugin-helpers" "^5.0.0"
"@graphql-codegen/typescript" "^4.0.1"
"@graphql-codegen/visitor-plugin-common" "4.0.1"
auto-bind "~4.0.0"
tslib "~2.5.0"
"@graphql-codegen/typescript-react-apollo@^3.3.7":
version "3.3.7"
resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-react-apollo/-/typescript-react-apollo-3.3.7.tgz#e856caa22c5f7bc9a546c44f54e5f3bd5801ab67"
@ -2057,6 +2138,17 @@
auto-bind "~4.0.0"
tslib "~2.5.0"
"@graphql-codegen/typescript@^4.0.1":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-4.0.1.tgz#7481d68f59bea802dd10e278dce73c8a1552b2a4"
integrity sha512-3YziQ21dCVdnHb+Us1uDb3pA6eG5Chjv0uTK+bt9dXeMlwYBU8MbtzvQTo4qvzWVC1AxSOKj0rgfNu1xCXqJyA==
dependencies:
"@graphql-codegen/plugin-helpers" "^5.0.0"
"@graphql-codegen/schema-ast" "^4.0.0"
"@graphql-codegen/visitor-plugin-common" "4.0.1"
auto-bind "~4.0.0"
tslib "~2.5.0"
"@graphql-codegen/visitor-plugin-common@2.13.1":
version "2.13.1"
resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.1.tgz#2228660f6692bcdb96b1f6d91a0661624266b76b"
@ -2089,6 +2181,22 @@
parse-filepath "^1.0.2"
tslib "~2.5.0"
"@graphql-codegen/visitor-plugin-common@4.0.1", "@graphql-codegen/visitor-plugin-common@^4.0.1":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-4.0.1.tgz#64e293728b3c186f6767141e41fcdb310e50d367"
integrity sha512-Bi/1z0nHg4QMsAqAJhds+ForyLtk7A3HQOlkrZNm3xEkY7lcBzPtiOTLBtvziwopBsXUxqeSwVjOOFPLS5Yw1Q==
dependencies:
"@graphql-codegen/plugin-helpers" "^5.0.0"
"@graphql-tools/optimize" "^2.0.0"
"@graphql-tools/relay-operation-optimizer" "^7.0.0"
"@graphql-tools/utils" "^10.0.0"
auto-bind "~4.0.0"
change-case-all "1.0.15"
dependency-graph "^0.11.0"
graphql-tag "^2.11.0"
parse-filepath "^1.0.2"
tslib "~2.5.0"
"@graphql-tools/apollo-engine-loader@^7.3.6":
version "7.3.26"
resolved "https://registry.yarnpkg.com/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.3.26.tgz#91e54460d5579933e42a2010b8688c3459c245d8"
@ -2133,6 +2241,14 @@
tslib "^2.5.0"
value-or-promise "^1.0.12"
"@graphql-tools/documents@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@graphql-tools/documents/-/documents-1.0.0.tgz#e3ed97197cc22ec830ca227fd7d17e86d8424bdf"
integrity sha512-rHGjX1vg/nZ2DKqRGfDPNC55CWZBMldEVcH+91BThRa6JeT80NqXknffLLEZLRUxyikCfkwMsk6xR3UNMqG0Rg==
dependencies:
lodash.sortby "^4.7.0"
tslib "^2.4.0"
"@graphql-tools/executor-graphql-ws@^0.0.14":
version "0.0.14"
resolved "https://registry.yarnpkg.com/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-0.0.14.tgz#e0f53fc4cfc8a06cc461b2bc1edb4bb9a8e837ed"
@ -2274,6 +2390,13 @@
dependencies:
tslib "^2.4.0"
"@graphql-tools/optimize@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@graphql-tools/optimize/-/optimize-2.0.0.tgz#7a9779d180824511248a50c5a241eff6e7a2d906"
integrity sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==
dependencies:
tslib "^2.4.0"
"@graphql-tools/prisma-loader@^7.2.49":
version "7.2.72"
resolved "https://registry.yarnpkg.com/@graphql-tools/prisma-loader/-/prisma-loader-7.2.72.tgz#6304fc23600458396f3ede713d8e2371df7850e3"
@ -2307,6 +2430,15 @@
"@graphql-tools/utils" "^9.2.1"
tslib "^2.4.0"
"@graphql-tools/relay-operation-optimizer@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-7.0.0.tgz#24367666af87bc5a81748de5e8e9b3c523fd4207"
integrity sha512-UNlJi5y3JylhVWU4MBpL0Hun4Q7IoJwv9xYtmAz+CgRa066szzY7dcuPfxrA7cIGgG/Q6TVsKsYaiF4OHPs1Fw==
dependencies:
"@ardatan/relay-compiler" "12.0.0"
"@graphql-tools/utils" "^10.0.0"
tslib "^2.4.0"
"@graphql-tools/schema@^9.0.0", "@graphql-tools/schema@^9.0.18", "@graphql-tools/schema@^9.0.19":
version "9.0.19"
resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.19.tgz#c4ad373b5e1b8a0cf365163435b7d236ebdd06e7"
@ -2336,6 +2468,15 @@
value-or-promise "^1.0.11"
ws "^8.12.0"
"@graphql-tools/utils@^10.0.0":
version "10.0.7"
resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.0.7.tgz#ed88968b5ce53dabacbdd185df967aaab35f8549"
integrity sha512-KOdeMj6Hd/MENDaqPbws3YJl3wVy0DeYnL7PyUms5Skyf7uzI9INynDwPMhLXfSb0/ph6BXTwMd5zBtWbF8tBQ==
dependencies:
"@graphql-typed-document-node/core" "^3.1.1"
dset "^3.1.2"
tslib "^2.4.0"
"@graphql-tools/utils@^8.8.0":
version "8.13.1"
resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.13.1.tgz#b247607e400365c2cd87ff54654d4ad25a7ac491"