diff --git a/packages/frontend-2/components/common/tiptap/EmailMentionPopup.vue b/packages/frontend-2/components/common/tiptap/EmailMentionPopup.vue
deleted file mode 100644
index cd32cf64af..0000000000
--- a/packages/frontend-2/components/common/tiptap/EmailMentionPopup.vue
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
- Invite {{ query }}
-
-
-
diff --git a/packages/frontend-2/components/common/tiptap/TextEditor.vue b/packages/frontend-2/components/common/tiptap/TextEditor.vue
index 506933c64d..d1af117ad2 100644
--- a/packages/frontend-2/components/common/tiptap/TextEditor.vue
+++ b/packages/frontend-2/components/common/tiptap/TextEditor.vue
@@ -44,13 +44,9 @@ const props = defineProps<{
placeholder?: string
readonly?: boolean
/**
- * Used to invite users to project when their emails are mentioned
+ * Used to scope things like user mentions to project collaborators etc.
*/
projectId?: string
- /**
- * Disable invitation CTA, e.g. if user doesn't have the required accesses
- */
- disableInvitationCta?: boolean
}>()
const editorContentRef = ref(null as Nullable)
@@ -65,8 +61,7 @@ const editor = new Editor({
editable: isEditable.value,
extensions: getEditorExtensions(props.schemaOptions, {
placeholder: props.placeholder,
- projectId:
- props.projectId && !props.disableInvitationCta ? props.projectId : undefined
+ projectId: props.projectId
}),
onUpdate: () => {
const data = getData()
diff --git a/packages/frontend-2/lib/common/generated/gql/gql.ts b/packages/frontend-2/lib/common/generated/gql/gql.ts
index 100ce84483..9db81d89c8 100644
--- a/packages/frontend-2/lib/common/generated/gql/gql.ts
+++ b/packages/frontend-2/lib/common/generated/gql/gql.ts
@@ -66,7 +66,6 @@ const documents = {
"\n fragment ProjectPageAutomationHeader_Project on Project {\n id\n role\n workspaceId\n ...ProjectPageModelsCardProject\n }\n": types.ProjectPageAutomationHeader_ProjectFragmentDoc,
"\n fragment ProjectPageAutomationModels_Project on Project {\n id\n ...ProjectPageModelsCardProject\n }\n": types.ProjectPageAutomationModels_ProjectFragmentDoc,
"\n fragment ProjectPageAutomationRuns_Automation on Automation {\n id\n name\n enabled\n isTestAutomation\n runs(limit: 10) {\n items {\n ...AutomationRunDetails\n }\n totalCount\n cursor\n }\n }\n": types.ProjectPageAutomationRuns_AutomationFragmentDoc,
- "\n fragment ProjectPageAutomationsEmptyState_Query on Query {\n automateFunctions(limit: 9) {\n items {\n ...AutomationsFunctionsCard_AutomateFunction\n ...AutomateAutomationCreateDialog_AutomateFunction\n }\n }\n }\n": types.ProjectPageAutomationsEmptyState_QueryFragmentDoc,
"\n fragment ProjectPageAutomationsRow_Automation on Automation {\n id\n name\n enabled\n isTestAutomation\n currentRevision {\n id\n triggerDefinitions {\n ... on VersionCreatedTriggerDefinition {\n model {\n id\n name\n }\n }\n }\n }\n runs(limit: 10) {\n totalCount\n items {\n ...AutomationRunDetails\n }\n cursor\n }\n }\n": types.ProjectPageAutomationsRow_AutomationFragmentDoc,
"\n fragment ProjectDiscussionsPageHeader_Project on Project {\n id\n name\n }\n": types.ProjectDiscussionsPageHeader_ProjectFragmentDoc,
"\n fragment ProjectDiscussionsPageResults_Project on Project {\n id\n }\n": types.ProjectDiscussionsPageResults_ProjectFragmentDoc,
@@ -176,7 +175,7 @@ const documents = {
"\n query ActiveUserFunctions {\n activeUser {\n automateFunctions(limit: 2) {\n items {\n id\n ...AutomationsFunctionsCard_AutomateFunction\n }\n }\n }\n }\n": types.ActiveUserFunctionsDocument,
"\n mutation BillingCreateCheckoutSession($input: CheckoutSessionInput!) {\n workspaceMutations {\n billing {\n createCheckoutSession(input: $input) {\n url\n id\n }\n }\n }\n }\n": types.BillingCreateCheckoutSessionDocument,
"\n mutation BillingUpgradePlan($input: UpgradePlanInput!) {\n workspaceMutations {\n billing {\n upgradePlan(input: $input)\n }\n }\n }\n": types.BillingUpgradePlanDocument,
- "\n query MentionsUserSearch($query: String!, $emailOnly: Boolean = false) {\n userSearch(\n query: $query\n limit: 5\n cursor: null\n archived: false\n emailOnly: $emailOnly\n ) {\n items {\n id\n name\n company\n }\n }\n }\n": types.MentionsUserSearchDocument,
+ "\n query MentionsUserSearch($query: String!, $projectId: String) {\n users(input: { query: $query, limit: 5, cursor: null, projectId: $projectId }) {\n items {\n id\n name\n company\n }\n }\n }\n": types.MentionsUserSearchDocument,
"\n query UserSearch(\n $query: String!\n $limit: Int\n $cursor: String\n $archived: Boolean\n $workspaceId: String\n ) {\n userSearch(query: $query, limit: $limit, cursor: $cursor, archived: $archived) {\n cursor\n items {\n id\n name\n bio\n company\n avatar\n verified\n role\n workspaceDomainPolicyCompliant(workspaceId: $workspaceId)\n }\n }\n }\n": types.UserSearchDocument,
"\n query ServerInfoBlobSizeLimit {\n serverInfo {\n configuration {\n blobSizeLimitBytes\n }\n }\n }\n": types.ServerInfoBlobSizeLimitDocument,
"\n query ServerInfoAllScopes {\n serverInfo {\n scopes {\n name\n description\n }\n }\n }\n": types.ServerInfoAllScopesDocument,
@@ -257,7 +256,7 @@ const documents = {
"\n query ProjectModelVersions(\n $projectId: String!\n $modelId: String!\n $versionsCursor: String\n ) {\n project(id: $projectId) {\n id\n ...ProjectModelPageVersionsPagination\n }\n }\n": types.ProjectModelVersionsDocument,
"\n query ProjectModelsPage($projectId: String!) {\n project(id: $projectId) {\n id\n ...ProjectModelsPageHeader_Project\n ...ProjectModelsPageResults_Project\n }\n }\n": types.ProjectModelsPageDocument,
"\n query ProjectDiscussionsPage($projectId: String!) {\n project(id: $projectId) {\n id\n ...ProjectDiscussionsPageHeader_Project\n ...ProjectDiscussionsPageResults_Project\n }\n }\n": types.ProjectDiscussionsPageDocument,
- "\n query ProjectAutomationsTab($projectId: String!) {\n project(id: $projectId) {\n id\n role\n models(limit: 1) {\n items {\n id\n }\n }\n automations(filter: null, cursor: null, limit: 5) {\n totalCount\n items {\n id\n ...ProjectPageAutomationsRow_Automation\n }\n cursor\n }\n workspace {\n id\n slug\n }\n ...FormSelectProjects_Project\n }\n ...ProjectPageAutomationsEmptyState_Query\n }\n": types.ProjectAutomationsTabDocument,
+ "\n query ProjectAutomationsTab($projectId: String!) {\n project(id: $projectId) {\n id\n role\n models(limit: 1) {\n items {\n id\n }\n }\n automations(filter: null, cursor: null, limit: 5) {\n totalCount\n items {\n id\n ...ProjectPageAutomationsRow_Automation\n }\n cursor\n }\n workspace {\n id\n slug\n }\n ...FormSelectProjects_Project\n }\n }\n": types.ProjectAutomationsTabDocument,
"\n query ProjectAutomationsTabAutomationsPagination(\n $projectId: String!\n $search: String = null\n $cursor: String = null\n ) {\n project(id: $projectId) {\n id\n automations(filter: $search, cursor: $cursor, limit: 5) {\n totalCount\n cursor\n items {\n id\n ...ProjectPageAutomationsRow_Automation\n }\n }\n }\n }\n": types.ProjectAutomationsTabAutomationsPaginationDocument,
"\n query ProjectAutomationPage($projectId: String!, $automationId: String!) {\n project(id: $projectId) {\n id\n ...ProjectPageAutomationPage_Project\n automation(id: $automationId) {\n id\n ...ProjectPageAutomationPage_Automation\n }\n }\n }\n": types.ProjectAutomationPageDocument,
"\n query ProjectAutomationPagePaginatedRuns(\n $projectId: String!\n $automationId: String!\n $cursor: String = null\n ) {\n project(id: $projectId) {\n id\n automation(id: $automationId) {\n id\n runs(cursor: $cursor, limit: 10) {\n totalCount\n cursor\n items {\n id\n ...AutomationRunDetails\n }\n }\n }\n }\n }\n": types.ProjectAutomationPagePaginatedRunsDocument,
@@ -598,10 +597,6 @@ export function graphql(source: "\n fragment ProjectPageAutomationModels_Projec
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n fragment ProjectPageAutomationRuns_Automation on Automation {\n id\n name\n enabled\n isTestAutomation\n runs(limit: 10) {\n items {\n ...AutomationRunDetails\n }\n totalCount\n cursor\n }\n }\n"): (typeof documents)["\n fragment ProjectPageAutomationRuns_Automation on Automation {\n id\n name\n enabled\n isTestAutomation\n runs(limit: 10) {\n items {\n ...AutomationRunDetails\n }\n totalCount\n cursor\n }\n }\n"];
-/**
- * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
- */
-export function graphql(source: "\n fragment ProjectPageAutomationsEmptyState_Query on Query {\n automateFunctions(limit: 9) {\n items {\n ...AutomationsFunctionsCard_AutomateFunction\n ...AutomateAutomationCreateDialog_AutomateFunction\n }\n }\n }\n"): (typeof documents)["\n fragment ProjectPageAutomationsEmptyState_Query on Query {\n automateFunctions(limit: 9) {\n items {\n ...AutomationsFunctionsCard_AutomateFunction\n ...AutomateAutomationCreateDialog_AutomateFunction\n }\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
@@ -1041,7 +1036,7 @@ export function graphql(source: "\n mutation BillingUpgradePlan($input: Upgrade
/**
* 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 MentionsUserSearch($query: String!, $emailOnly: Boolean = false) {\n userSearch(\n query: $query\n limit: 5\n cursor: null\n archived: false\n emailOnly: $emailOnly\n ) {\n items {\n id\n name\n company\n }\n }\n }\n"): (typeof documents)["\n query MentionsUserSearch($query: String!, $emailOnly: Boolean = false) {\n userSearch(\n query: $query\n limit: 5\n cursor: null\n archived: false\n emailOnly: $emailOnly\n ) {\n items {\n id\n name\n company\n }\n }\n }\n"];
+export function graphql(source: "\n query MentionsUserSearch($query: String!, $projectId: String) {\n users(input: { query: $query, limit: 5, cursor: null, projectId: $projectId }) {\n items {\n id\n name\n company\n }\n }\n }\n"): (typeof documents)["\n query MentionsUserSearch($query: String!, $projectId: String) {\n users(input: { query: $query, limit: 5, cursor: null, projectId: $projectId }) {\n items {\n id\n name\n company\n }\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
@@ -1365,7 +1360,7 @@ export function graphql(source: "\n query ProjectDiscussionsPage($projectId: St
/**
* 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 ProjectAutomationsTab($projectId: String!) {\n project(id: $projectId) {\n id\n role\n models(limit: 1) {\n items {\n id\n }\n }\n automations(filter: null, cursor: null, limit: 5) {\n totalCount\n items {\n id\n ...ProjectPageAutomationsRow_Automation\n }\n cursor\n }\n workspace {\n id\n slug\n }\n ...FormSelectProjects_Project\n }\n ...ProjectPageAutomationsEmptyState_Query\n }\n"): (typeof documents)["\n query ProjectAutomationsTab($projectId: String!) {\n project(id: $projectId) {\n id\n role\n models(limit: 1) {\n items {\n id\n }\n }\n automations(filter: null, cursor: null, limit: 5) {\n totalCount\n items {\n id\n ...ProjectPageAutomationsRow_Automation\n }\n cursor\n }\n workspace {\n id\n slug\n }\n ...FormSelectProjects_Project\n }\n ...ProjectPageAutomationsEmptyState_Query\n }\n"];
+export function graphql(source: "\n query ProjectAutomationsTab($projectId: String!) {\n project(id: $projectId) {\n id\n role\n models(limit: 1) {\n items {\n id\n }\n }\n automations(filter: null, cursor: null, limit: 5) {\n totalCount\n items {\n id\n ...ProjectPageAutomationsRow_Automation\n }\n cursor\n }\n workspace {\n id\n slug\n }\n ...FormSelectProjects_Project\n }\n }\n"): (typeof documents)["\n query ProjectAutomationsTab($projectId: String!) {\n project(id: $projectId) {\n id\n role\n models(limit: 1) {\n items {\n id\n }\n }\n automations(filter: null, cursor: null, limit: 5) {\n totalCount\n items {\n id\n ...ProjectPageAutomationsRow_Automation\n }\n cursor\n }\n workspace {\n id\n slug\n }\n ...FormSelectProjects_Project\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
diff --git a/packages/frontend-2/lib/common/generated/gql/graphql.ts b/packages/frontend-2/lib/common/generated/gql/graphql.ts
index 3de3293a24..33cc0526a9 100644
--- a/packages/frontend-2/lib/common/generated/gql/graphql.ts
+++ b/packages/frontend-2/lib/common/generated/gql/graphql.ts
@@ -2555,8 +2555,11 @@ export type Query = {
/**
* Search for users and return limited metadata about them, if you have the server:user role.
* The query looks for matches in name & email
+ * @deprecated Use users() instead.
*/
userSearch: UserSearchResultCollection;
+ /** Look up server users */
+ users: UserSearchResultCollection;
/** Validates the slug, to make sure it contains only valid characters and its not taken. */
validateWorkspaceSlug: Scalars['Boolean']['output'];
workspace: Workspace;
@@ -2698,6 +2701,11 @@ export type QueryUserSearchArgs = {
};
+export type QueryUsersArgs = {
+ input: UsersRetrievalInput;
+};
+
+
export type QueryValidateWorkspaceSlugArgs = {
slug: Scalars['String']['input'];
};
@@ -3870,6 +3878,18 @@ export type UserWorkspacesFilter = {
search?: InputMaybe;
};
+export type UsersRetrievalInput = {
+ cursor?: InputMaybe;
+ /** Only find users with directly matching emails */
+ emailOnly?: InputMaybe;
+ /** Limit defaults to 10 */
+ limit?: InputMaybe;
+ /** Only find users that are collaborators of the specified project */
+ projectId?: InputMaybe;
+ /** The query looks for matches in user name & email */
+ query: Scalars['String']['input'];
+};
+
export type Version = {
__typename?: 'Version';
authorUser?: Maybe;
@@ -4667,8 +4687,6 @@ export type ProjectPageAutomationModels_ProjectFragment = { __typename?: 'Projec
export type ProjectPageAutomationRuns_AutomationFragment = { __typename?: 'Automation', id: string, name: string, enabled: boolean, isTestAutomation: boolean, runs: { __typename?: 'AutomateRunCollection', totalCount: number, cursor?: string | null, items: Array<{ __typename?: 'AutomateRun', id: string, status: AutomateRunStatus, createdAt: string, updatedAt: string, functionRuns: Array<{ __typename?: 'AutomateFunctionRun', statusMessage?: string | null, id: string, status: AutomateRunStatus }>, trigger: { __typename?: 'VersionCreatedTrigger', version?: { __typename?: 'Version', id: string } | null, model?: { __typename?: 'Model', id: string } | null } }> } };
-export type ProjectPageAutomationsEmptyState_QueryFragment = { __typename?: 'Query', automateFunctions: { __typename?: 'AutomateFunctionCollection', items: Array<{ __typename?: 'AutomateFunction', id: string, name: string, isFeatured: boolean, description: string, logo?: string | null, repo: { __typename?: 'BasicGitRepositoryMetadata', id: string, url: string, owner: string, name: string }, releases: { __typename?: 'AutomateFunctionReleaseCollection', items: Array<{ __typename?: 'AutomateFunctionRelease', id: string, inputSchema?: {} | null }> } }> } };
-
export type ProjectPageAutomationsRow_AutomationFragment = { __typename?: 'Automation', id: string, name: string, enabled: boolean, isTestAutomation: boolean, currentRevision?: { __typename?: 'AutomationRevision', id: string, triggerDefinitions: Array<{ __typename?: 'VersionCreatedTriggerDefinition', model?: { __typename?: 'Model', id: string, name: string } | null }> } | null, runs: { __typename?: 'AutomateRunCollection', totalCount: number, cursor?: string | null, items: Array<{ __typename?: 'AutomateRun', id: string, status: AutomateRunStatus, createdAt: string, updatedAt: string, functionRuns: Array<{ __typename?: 'AutomateFunctionRun', statusMessage?: string | null, id: string, status: AutomateRunStatus }>, trigger: { __typename?: 'VersionCreatedTrigger', version?: { __typename?: 'Version', id: string } | null, model?: { __typename?: 'Model', id: string } | null } }> } };
export type ProjectDiscussionsPageHeader_ProjectFragment = { __typename?: 'Project', id: string, name: string };
@@ -4997,11 +5015,11 @@ export type BillingUpgradePlanMutation = { __typename?: 'Mutation', workspaceMut
export type MentionsUserSearchQueryVariables = Exact<{
query: Scalars['String']['input'];
- emailOnly?: InputMaybe;
+ projectId?: InputMaybe;
}>;
-export type MentionsUserSearchQuery = { __typename?: 'Query', userSearch: { __typename?: 'UserSearchResultCollection', items: Array<{ __typename?: 'LimitedUser', id: string, name: string, company?: string | null }> } };
+export type MentionsUserSearchQuery = { __typename?: 'Query', users: { __typename?: 'UserSearchResultCollection', items: Array<{ __typename?: 'LimitedUser', id: string, name: string, company?: string | null }> } };
export type UserSearchQueryVariables = Exact<{
query: Scalars['String']['input'];
@@ -5536,7 +5554,7 @@ export type ProjectAutomationsTabQueryVariables = Exact<{
}>;
-export type ProjectAutomationsTabQuery = { __typename?: 'Query', project: { __typename?: 'Project', id: string, role?: string | null, name: string, models: { __typename?: 'ModelCollection', items: Array<{ __typename?: 'Model', id: string }> }, automations: { __typename?: 'AutomationCollection', totalCount: number, cursor?: string | null, items: Array<{ __typename?: 'Automation', id: string, name: string, enabled: boolean, isTestAutomation: boolean, currentRevision?: { __typename?: 'AutomationRevision', id: string, triggerDefinitions: Array<{ __typename?: 'VersionCreatedTriggerDefinition', model?: { __typename?: 'Model', id: string, name: string } | null }> } | null, runs: { __typename?: 'AutomateRunCollection', totalCount: number, cursor?: string | null, items: Array<{ __typename?: 'AutomateRun', id: string, status: AutomateRunStatus, createdAt: string, updatedAt: string, functionRuns: Array<{ __typename?: 'AutomateFunctionRun', statusMessage?: string | null, id: string, status: AutomateRunStatus }>, trigger: { __typename?: 'VersionCreatedTrigger', version?: { __typename?: 'Version', id: string } | null, model?: { __typename?: 'Model', id: string } | null } }> } }> }, workspace?: { __typename?: 'Workspace', id: string, slug: string } | null }, automateFunctions: { __typename?: 'AutomateFunctionCollection', items: Array<{ __typename?: 'AutomateFunction', id: string, name: string, isFeatured: boolean, description: string, logo?: string | null, repo: { __typename?: 'BasicGitRepositoryMetadata', id: string, url: string, owner: string, name: string }, releases: { __typename?: 'AutomateFunctionReleaseCollection', items: Array<{ __typename?: 'AutomateFunctionRelease', id: string, inputSchema?: {} | null }> } }> } };
+export type ProjectAutomationsTabQuery = { __typename?: 'Query', project: { __typename?: 'Project', id: string, role?: string | null, name: string, models: { __typename?: 'ModelCollection', items: Array<{ __typename?: 'Model', id: string }> }, automations: { __typename?: 'AutomationCollection', totalCount: number, cursor?: string | null, items: Array<{ __typename?: 'Automation', id: string, name: string, enabled: boolean, isTestAutomation: boolean, currentRevision?: { __typename?: 'AutomationRevision', id: string, triggerDefinitions: Array<{ __typename?: 'VersionCreatedTriggerDefinition', model?: { __typename?: 'Model', id: string, name: string } | null }> } | null, runs: { __typename?: 'AutomateRunCollection', totalCount: number, cursor?: string | null, items: Array<{ __typename?: 'AutomateRun', id: string, status: AutomateRunStatus, createdAt: string, updatedAt: string, functionRuns: Array<{ __typename?: 'AutomateFunctionRun', statusMessage?: string | null, id: string, status: AutomateRunStatus }>, trigger: { __typename?: 'VersionCreatedTrigger', version?: { __typename?: 'Version', id: string } | null, model?: { __typename?: 'Model', id: string } | null } }> } }> }, workspace?: { __typename?: 'Workspace', id: string, slug: string } | null } };
export type ProjectAutomationsTabAutomationsPaginationQueryVariables = Exact<{
projectId: Scalars['String']['input'];
@@ -6328,7 +6346,6 @@ export const ProjectPageInviteDialog_ProjectFragmentDoc = {"kind":"Document","de
export const ProjectPageModelsActions_ProjectFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageModelsActions_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectsModelPageEmbed_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectsPageTeamDialogManagePermissions_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectsModelPageEmbed_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectsPageTeamDialogManagePermissions_Project"}}]}}]} as unknown as DocumentNode;
export const ProjectPageModelsCardProjectFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageModelsCardProject"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageModelsActions_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectsPageTeamDialogManagePermissions_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectsModelPageEmbed_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectsPageTeamDialogManagePermissions_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageModelsActions_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectsModelPageEmbed_Project"}}]}}]} as unknown as DocumentNode;
export const ProjectPageAutomationModels_ProjectFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationModels_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageModelsCardProject"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectsPageTeamDialogManagePermissions_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectsModelPageEmbed_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectsPageTeamDialogManagePermissions_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageModelsActions_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectsModelPageEmbed_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageModelsCardProject"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageModelsActions_Project"}}]}}]} as unknown as DocumentNode;
-export const ProjectPageAutomationsEmptyState_QueryFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationsEmptyState_Query"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Query"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"automateFunctions"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"9"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationsFunctionsCard_AutomateFunction"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomateAutomationCreateDialog_AutomateFunction"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationsFunctionsCard_AutomateFunction"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"repo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"owner"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomateAutomationCreateDialogFunctionParametersStep_AutomateFunction"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"releases"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"1"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"inputSchema"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomateAutomationCreateDialog_AutomateFunction"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationsFunctionsCard_AutomateFunction"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomateAutomationCreateDialogFunctionParametersStep_AutomateFunction"}}]}}]} as unknown as DocumentNode;
export const AutomationRunDetailsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationRunDetails"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FunctionRunStatusForSummary"}},{"kind":"Field","name":{"kind":"Name","value":"statusMessage"}}]}},{"kind":"Field","name":{"kind":"Name","value":"trigger"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTrigger"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"version"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FunctionRunStatusForSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunctionRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]} as unknown as DocumentNode;
export const ProjectPageAutomationsRow_AutomationFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationsRow_Automation"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Automation"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"enabled"}},{"kind":"Field","name":{"kind":"Name","value":"isTestAutomation"}},{"kind":"Field","name":{"kind":"Name","value":"currentRevision"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"triggerDefinitions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTriggerDefinition"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"runs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationRunDetails"}}]}},{"kind":"Field","name":{"kind":"Name","value":"cursor"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FunctionRunStatusForSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunctionRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationRunDetails"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FunctionRunStatusForSummary"}},{"kind":"Field","name":{"kind":"Name","value":"statusMessage"}}]}},{"kind":"Field","name":{"kind":"Name","value":"trigger"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTrigger"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"version"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
export const ProjectDiscussionsPageHeader_ProjectFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectDiscussionsPageHeader_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]} as unknown as DocumentNode;
@@ -6476,7 +6493,7 @@ export const AutomateFunctionsPagePaginationDocument = {"kind":"Document","defin
export const ActiveUserFunctionsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ActiveUserFunctions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"automateFunctions"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"2"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationsFunctionsCard_AutomateFunction"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationsFunctionsCard_AutomateFunction"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"repo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"owner"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode;
export const BillingCreateCheckoutSessionDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"BillingCreateCheckoutSession"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CheckoutSessionInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"workspaceMutations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"billing"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createCheckoutSession"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]}}]} as unknown as DocumentNode;
export const BillingUpgradePlanDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"BillingUpgradePlan"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpgradePlanInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"workspaceMutations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"billing"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"upgradePlan"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}]}]}}]}}]}}]} as unknown as DocumentNode;
-export const MentionsUserSearchDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"MentionsUserSearch"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"query"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"emailOnly"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}},"defaultValue":{"kind":"BooleanValue","value":false}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"userSearch"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"query"},"value":{"kind":"Variable","name":{"kind":"Name","value":"query"}}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}},{"kind":"Argument","name":{"kind":"Name","value":"cursor"},"value":{"kind":"NullValue"}},{"kind":"Argument","name":{"kind":"Name","value":"archived"},"value":{"kind":"BooleanValue","value":false}},{"kind":"Argument","name":{"kind":"Name","value":"emailOnly"},"value":{"kind":"Variable","name":{"kind":"Name","value":"emailOnly"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"company"}}]}}]}}]}}]} as unknown as DocumentNode;
+export const MentionsUserSearchDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"MentionsUserSearch"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"query"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"users"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"query"},"value":{"kind":"Variable","name":{"kind":"Name","value":"query"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}},{"kind":"ObjectField","name":{"kind":"Name","value":"cursor"},"value":{"kind":"NullValue"}},{"kind":"ObjectField","name":{"kind":"Name","value":"projectId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"company"}}]}}]}}]}}]} as unknown as DocumentNode;
export const UserSearchDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"UserSearch"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"query"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"limit"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"cursor"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"archived"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"userSearch"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"query"},"value":{"kind":"Variable","name":{"kind":"Name","value":"query"}}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"Variable","name":{"kind":"Name","value":"limit"}}},{"kind":"Argument","name":{"kind":"Name","value":"cursor"},"value":{"kind":"Variable","name":{"kind":"Name","value":"cursor"}}},{"kind":"Argument","name":{"kind":"Name","value":"archived"},"value":{"kind":"Variable","name":{"kind":"Name","value":"archived"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"cursor"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"bio"}},{"kind":"Field","name":{"kind":"Name","value":"company"}},{"kind":"Field","name":{"kind":"Name","value":"avatar"}},{"kind":"Field","name":{"kind":"Name","value":"verified"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceDomainPolicyCompliant"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}}]}]}}]}}]}}]} as unknown as DocumentNode;
export const ServerInfoBlobSizeLimitDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ServerInfoBlobSizeLimit"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serverInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"configuration"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"blobSizeLimitBytes"}}]}}]}}]}}]} as unknown as DocumentNode;
export const ServerInfoAllScopesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ServerInfoAllScopes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serverInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"scopes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}}]}}]}}]} as unknown as DocumentNode;
@@ -6547,7 +6564,7 @@ export const ProjectModelPageDocument = {"kind":"Document","definitions":[{"kind
export const ProjectModelVersionsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ProjectModelVersions"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modelId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"versionsCursor"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"project"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectModelPageVersionsPagination"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"LimitedUserAvatar"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LimitedUser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatar"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectModelPageDialogDeleteVersion"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Version"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"message"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectModelPageDialogMoveToVersion"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Version"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"message"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FunctionRunStatusForSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunctionRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"TriggeredAutomationsStatusSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"TriggeredAutomationsStatus"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"automationRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"FunctionRunStatusForSummary"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomateRunsTriggerStatusDialogFunctionRun_AutomateFunctionRun"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunctionRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"results"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"statusMessage"}},{"kind":"Field","name":{"kind":"Name","value":"contextView"}},{"kind":"Field","name":{"kind":"Name","value":"function"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationsStatusOrderedRuns_AutomationRun"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"automation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomateRunsTriggerStatusDialogRunsRows_AutomateRun"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomateRunsTriggerStatusDialogFunctionRun_AutomateFunctionRun"}}]}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationsStatusOrderedRuns_AutomationRun"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomateRunsTriggerStatusDialog_TriggeredAutomationsStatus"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"TriggeredAutomationsStatus"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"automationRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomateRunsTriggerStatusDialogRunsRows_AutomateRun"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomateRunsTriggerStatus_TriggeredAutomationsStatus"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"TriggeredAutomationsStatus"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"TriggeredAutomationsStatusSummary"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomateRunsTriggerStatusDialog_TriggeredAutomationsStatus"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectModelPageVersionsCardVersion"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Version"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"message"}},{"kind":"Field","name":{"kind":"Name","value":"authorUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"LimitedUserAvatar"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"previewUrl"}},{"kind":"Field","name":{"kind":"Name","value":"sourceApplication"}},{"kind":"Field","alias":{"kind":"Name","value":"commentThreadCount"},"name":{"kind":"Name","value":"commentThreads"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"0"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}}]}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectModelPageDialogDeleteVersion"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectModelPageDialogMoveToVersion"}},{"kind":"Field","name":{"kind":"Name","value":"automationsStatus"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomateRunsTriggerStatus_TriggeredAutomationsStatus"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectsPageTeamDialogManagePermissions_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectsModelPageEmbed_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectsPageTeamDialogManagePermissions_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectModelPageVersionsPagination"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"model"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modelId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"versions"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"16"}},{"kind":"Argument","name":{"kind":"Name","value":"cursor"},"value":{"kind":"Variable","name":{"kind":"Name","value":"versionsCursor"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"cursor"}},{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectModelPageVersionsCardVersion"}}]}}]}}]}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectsModelPageEmbed_Project"}}]}}]} as unknown as DocumentNode;
export const ProjectModelsPageDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ProjectModelsPage"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"project"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectModelsPageHeader_Project"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectModelsPageResults_Project"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FormUsersSelectItem"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LimitedUser"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatar"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectsPageTeamDialogManagePermissions_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectsModelPageEmbed_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectsPageTeamDialogManagePermissions_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageModelsActions_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectsModelPageEmbed_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageModelsStructureItem_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageModelsActions_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageLatestItemsModels"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","alias":{"kind":"Name","value":"modelCount"},"name":{"kind":"Name","value":"models"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"0"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}}]}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageModelsStructureItem_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectModelsPageHeader_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"sourceApps"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"models"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}}]}},{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FormUsersSelectItem"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectModelsPageResults_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageLatestItemsModels"}}]}}]} as unknown as DocumentNode;
export const ProjectDiscussionsPageDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ProjectDiscussionsPage"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"project"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectDiscussionsPageHeader_Project"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectDiscussionsPageResults_Project"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectDiscussionsPageHeader_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectDiscussionsPageResults_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]} as unknown as DocumentNode;
-export const ProjectAutomationsTabDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ProjectAutomationsTab"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"project"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"models"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"1"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"automations"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"NullValue"}},{"kind":"Argument","name":{"kind":"Name","value":"cursor"},"value":{"kind":"NullValue"}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageAutomationsRow_Automation"}}]}},{"kind":"Field","name":{"kind":"Name","value":"cursor"}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspace"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}}]}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"FormSelectProjects_Project"}}]}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageAutomationsEmptyState_Query"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FunctionRunStatusForSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunctionRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationRunDetails"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FunctionRunStatusForSummary"}},{"kind":"Field","name":{"kind":"Name","value":"statusMessage"}}]}},{"kind":"Field","name":{"kind":"Name","value":"trigger"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTrigger"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"version"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationsFunctionsCard_AutomateFunction"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"repo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"owner"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomateAutomationCreateDialogFunctionParametersStep_AutomateFunction"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"releases"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"1"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"inputSchema"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomateAutomationCreateDialog_AutomateFunction"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationsFunctionsCard_AutomateFunction"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomateAutomationCreateDialogFunctionParametersStep_AutomateFunction"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationsRow_Automation"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Automation"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"enabled"}},{"kind":"Field","name":{"kind":"Name","value":"isTestAutomation"}},{"kind":"Field","name":{"kind":"Name","value":"currentRevision"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"triggerDefinitions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTriggerDefinition"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"runs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationRunDetails"}}]}},{"kind":"Field","name":{"kind":"Name","value":"cursor"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FormSelectProjects_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationsEmptyState_Query"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Query"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"automateFunctions"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"9"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationsFunctionsCard_AutomateFunction"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomateAutomationCreateDialog_AutomateFunction"}}]}}]}}]}}]} as unknown as DocumentNode;
+export const ProjectAutomationsTabDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ProjectAutomationsTab"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"project"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"models"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"1"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"automations"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"NullValue"}},{"kind":"Argument","name":{"kind":"Name","value":"cursor"},"value":{"kind":"NullValue"}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageAutomationsRow_Automation"}}]}},{"kind":"Field","name":{"kind":"Name","value":"cursor"}}]}},{"kind":"Field","name":{"kind":"Name","value":"workspace"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}}]}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"FormSelectProjects_Project"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FunctionRunStatusForSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunctionRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationRunDetails"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FunctionRunStatusForSummary"}},{"kind":"Field","name":{"kind":"Name","value":"statusMessage"}}]}},{"kind":"Field","name":{"kind":"Name","value":"trigger"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTrigger"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"version"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationsRow_Automation"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Automation"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"enabled"}},{"kind":"Field","name":{"kind":"Name","value":"isTestAutomation"}},{"kind":"Field","name":{"kind":"Name","value":"currentRevision"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"triggerDefinitions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTriggerDefinition"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"runs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationRunDetails"}}]}},{"kind":"Field","name":{"kind":"Name","value":"cursor"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FormSelectProjects_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]} as unknown as DocumentNode;
export const ProjectAutomationsTabAutomationsPaginationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ProjectAutomationsTabAutomationsPagination"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"search"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"defaultValue":{"kind":"NullValue"}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"cursor"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"defaultValue":{"kind":"NullValue"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"project"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"automations"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"Variable","name":{"kind":"Name","value":"search"}}},{"kind":"Argument","name":{"kind":"Name","value":"cursor"},"value":{"kind":"Variable","name":{"kind":"Name","value":"cursor"}}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"cursor"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageAutomationsRow_Automation"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FunctionRunStatusForSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunctionRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationRunDetails"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FunctionRunStatusForSummary"}},{"kind":"Field","name":{"kind":"Name","value":"statusMessage"}}]}},{"kind":"Field","name":{"kind":"Name","value":"trigger"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTrigger"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"version"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationsRow_Automation"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Automation"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"enabled"}},{"kind":"Field","name":{"kind":"Name","value":"isTestAutomation"}},{"kind":"Field","name":{"kind":"Name","value":"currentRevision"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"triggerDefinitions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTriggerDefinition"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"runs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationRunDetails"}}]}},{"kind":"Field","name":{"kind":"Name","value":"cursor"}}]}}]}}]} as unknown as DocumentNode;
export const ProjectAutomationPageDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ProjectAutomationPage"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"automationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"project"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageAutomationPage_Project"}},{"kind":"Field","name":{"kind":"Name","value":"automation"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"automationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageAutomationPage_Automation"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectsPageTeamDialogManagePermissions_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectsModelPageEmbed_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectsPageTeamDialogManagePermissions_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageModelsActions_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectsModelPageEmbed_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageModelsCardProject"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageModelsActions_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationHeader_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceId"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageModelsCardProject"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"PendingFileUpload"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"FileUpload"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"projectId"}},{"kind":"Field","name":{"kind":"Name","value":"modelName"}},{"kind":"Field","name":{"kind":"Name","value":"convertedStatus"}},{"kind":"Field","name":{"kind":"Name","value":"convertedMessage"}},{"kind":"Field","name":{"kind":"Name","value":"uploadDate"}},{"kind":"Field","name":{"kind":"Name","value":"convertedLastUpdate"}},{"kind":"Field","name":{"kind":"Name","value":"fileType"}},{"kind":"Field","name":{"kind":"Name","value":"fileName"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageModelsCardRenameDialog"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Model"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageModelsCardDeleteDialog"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Model"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageModelsActions"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Model"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FunctionRunStatusForSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunctionRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"TriggeredAutomationsStatusSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"TriggeredAutomationsStatus"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"automationRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"FunctionRunStatusForSummary"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomateRunsTriggerStatusDialogFunctionRun_AutomateFunctionRun"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunctionRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"results"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"statusMessage"}},{"kind":"Field","name":{"kind":"Name","value":"contextView"}},{"kind":"Field","name":{"kind":"Name","value":"function"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationsStatusOrderedRuns_AutomationRun"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"automation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomateRunsTriggerStatusDialogRunsRows_AutomateRun"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomateRunsTriggerStatusDialogFunctionRun_AutomateFunctionRun"}}]}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationsStatusOrderedRuns_AutomationRun"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomateRunsTriggerStatusDialog_TriggeredAutomationsStatus"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"TriggeredAutomationsStatus"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"automationRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomateRunsTriggerStatusDialogRunsRows_AutomateRun"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomateRunsTriggerStatus_TriggeredAutomationsStatus"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"TriggeredAutomationsStatus"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"TriggeredAutomationsStatusSummary"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomateRunsTriggerStatusDialog_TriggeredAutomationsStatus"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageLatestItemsModelItem"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Model"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"displayName"}},{"kind":"Field","alias":{"kind":"Name","value":"versionCount"},"name":{"kind":"Name","value":"versions"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"0"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"commentThreadCount"},"name":{"kind":"Name","value":"commentThreads"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"0"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}}]}},{"kind":"Field","name":{"kind":"Name","value":"pendingImportedVersions"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"1"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"PendingFileUpload"}}]}},{"kind":"Field","name":{"kind":"Name","value":"previewUrl"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageModelsCardRenameDialog"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageModelsCardDeleteDialog"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageModelsActions"}},{"kind":"Field","name":{"kind":"Name","value":"automationsStatus"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomateRunsTriggerStatus_TriggeredAutomationsStatus"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationHeader_Automation"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Automation"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"enabled"}},{"kind":"Field","name":{"kind":"Name","value":"isTestAutomation"}},{"kind":"Field","name":{"kind":"Name","value":"currentRevision"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"triggerDefinitions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTriggerDefinition"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageLatestItemsModelItem"}}]}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CommonModelSelectorModel"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Model"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationFunctionSettingsDialog_AutomationRevision"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomationRevision"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"triggerDefinitions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTriggerDefinition"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CommonModelSelectorModel"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationsFunctionsCard_AutomateFunction"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"isFeatured"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"logo"}},{"kind":"Field","name":{"kind":"Name","value":"repo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"owner"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationFunctionSettingsDialog_AutomationRevisionFunction"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomationRevisionFunction"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"parameters"}},{"kind":"Field","name":{"kind":"Name","value":"release"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"inputSchema"}},{"kind":"Field","name":{"kind":"Name","value":"function"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationFunctions_Automation"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Automation"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"currentRevision"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageAutomationFunctionSettingsDialog_AutomationRevision"}},{"kind":"Field","name":{"kind":"Name","value":"functions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"release"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"function"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationsFunctionsCard_AutomateFunction"}},{"kind":"Field","name":{"kind":"Name","value":"releases"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"1"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageAutomationFunctionSettingsDialog_AutomationRevisionFunction"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationRunDetails"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FunctionRunStatusForSummary"}},{"kind":"Field","name":{"kind":"Name","value":"statusMessage"}}]}},{"kind":"Field","name":{"kind":"Name","value":"trigger"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTrigger"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"version"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationRuns_Automation"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Automation"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"enabled"}},{"kind":"Field","name":{"kind":"Name","value":"isTestAutomation"}},{"kind":"Field","name":{"kind":"Name","value":"runs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationRunDetails"}}]}},{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"cursor"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationPage_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceId"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageAutomationHeader_Project"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"ProjectPageAutomationPage_Automation"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Automation"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageAutomationHeader_Automation"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageAutomationFunctions_Automation"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"ProjectPageAutomationRuns_Automation"}}]}}]} as unknown as DocumentNode;
export const ProjectAutomationPagePaginatedRunsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ProjectAutomationPagePaginatedRuns"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"automationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"cursor"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"defaultValue":{"kind":"NullValue"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"project"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"automation"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"automationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"runs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"cursor"},"value":{"kind":"Variable","name":{"kind":"Name","value":"cursor"}}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"cursor"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"AutomationRunDetails"}}]}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FunctionRunStatusForSummary"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateFunctionRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"AutomationRunDetails"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AutomateRun"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"functionRuns"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FunctionRunStatusForSummary"}},{"kind":"Field","name":{"kind":"Name","value":"statusMessage"}}]}},{"kind":"Field","name":{"kind":"Name","value":"trigger"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreatedTrigger"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"version"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"model"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]} as unknown as DocumentNode;
@@ -7498,6 +7515,7 @@ export type QueryFieldArgs = {
user: QueryUserArgs,
userPwdStrength: QueryUserPwdStrengthArgs,
userSearch: QueryUserSearchArgs,
+ users: QueryUsersArgs,
validateWorkspaceSlug: QueryValidateWorkspaceSlugArgs,
workspace: QueryWorkspaceArgs,
workspaceBySlug: QueryWorkspaceBySlugArgs,
diff --git a/packages/frontend-2/lib/common/graphql/queries.ts b/packages/frontend-2/lib/common/graphql/queries.ts
index 5886c5ef24..ebda39f14b 100644
--- a/packages/frontend-2/lib/common/graphql/queries.ts
+++ b/packages/frontend-2/lib/common/graphql/queries.ts
@@ -1,14 +1,8 @@
import { graphql } from '~~/lib/common/generated/gql'
export const mentionsUserSearchQuery = graphql(`
- query MentionsUserSearch($query: String!, $emailOnly: Boolean = false) {
- userSearch(
- query: $query
- limit: 5
- cursor: null
- archived: false
- emailOnly: $emailOnly
- ) {
+ query MentionsUserSearch($query: String!, $projectId: String) {
+ users(input: { query: $query, limit: 5, cursor: null, projectId: $projectId }) {
items {
id
name
diff --git a/packages/frontend-2/lib/common/helpers/tiptap.ts b/packages/frontend-2/lib/common/helpers/tiptap.ts
index 24ad5016c5..0be2ccee6a 100644
--- a/packages/frontend-2/lib/common/helpers/tiptap.ts
+++ b/packages/frontend-2/lib/common/helpers/tiptap.ts
@@ -16,7 +16,8 @@ import { TextSelection } from '@tiptap/pm/state'
import { VALID_HTTP_URL } from '~~/lib/common/helpers/validation'
import type { Nullable } from '@speckle/shared'
import { getMentionExtension } from '~~/lib/core/tiptap/mentionExtension'
-import { EmailMention } from '~~/lib/core/tiptap/emailMentionExtension'
+import { LegacyEmailMention } from '~/lib/core/tiptap/emailMentionExtension'
+import { EditorInstanceStateStorage } from '~/lib/core/tiptap/editorStateExtension'
declare module '@tiptap/core' {
interface Commands {
@@ -240,7 +241,9 @@ export function getEditorExtensions(
const { multiLine = true } = schemaOptions || {}
const { placeholder, projectId } = extensionOptions || {}
return [
- ...(multiLine ? [Document] : [InlineDoc, EnterKeypressTrackerExtension]),
+ ...(multiLine
+ ? [Document]
+ : [InlineDoc, EnterKeypressTrackerExtension.configure()]),
HardBreak,
UtilitiesExtension,
Text,
@@ -257,10 +260,9 @@ export function getEditorExtensions(
// Autolink off cause otherwise it's impossible to end the link
autolink: false
}),
+ EditorInstanceStateStorage.configure({ projectId, test: new Date().toISOString() }),
getMentionExtension(),
- EmailMention.configure({
- projectId
- }),
+ LegacyEmailMention,
History,
...(placeholder ? [Placeholder.configure({ placeholder })] : [])
]
diff --git a/packages/frontend-2/lib/core/tiptap/editorStateExtension.ts b/packages/frontend-2/lib/core/tiptap/editorStateExtension.ts
new file mode 100644
index 0000000000..f0581b728d
--- /dev/null
+++ b/packages/frontend-2/lib/core/tiptap/editorStateExtension.ts
@@ -0,0 +1,38 @@
+import type { Nullable } from '@speckle/shared'
+import { Extension } from '@tiptap/core'
+
+type EditorInstanceState = {
+ projectId: Nullable
+ test: string
+}
+
+const initState = (): EditorInstanceState => ({
+ projectId: null,
+ test: ''
+})
+
+export type EditorInstanceStateStorage = {
+ state: EditorInstanceState
+}
+
+export const EditorInstanceStateStorage = Extension.create<
+ EditorInstanceState,
+ EditorInstanceStateStorage
+>({
+ name: 'editorInstanceState',
+
+ addStorage() {
+ return {
+ state: initState()
+ }
+ },
+
+ addOptions() {
+ return initState()
+ },
+
+ onCreate() {
+ // Populate storage from options
+ this.storage.state = this.options
+ }
+})
diff --git a/packages/frontend-2/lib/core/tiptap/email-mention/findSuggestionMatch.ts b/packages/frontend-2/lib/core/tiptap/email-mention/findSuggestionMatch.ts
deleted file mode 100644
index 70cc87d39b..0000000000
--- a/packages/frontend-2/lib/core/tiptap/email-mention/findSuggestionMatch.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import type { Range } from '@tiptap/core'
-import type { ResolvedPos } from '@tiptap/pm/model'
-
-const EMAIL_RGX = /[\w-_.+]+@[\w-_.+]+/
-
-export interface Trigger {
- allowSpaces: boolean
- allowedPrefixes: string[] | null
- startOfLine: boolean
- $position: ResolvedPos
-}
-
-export type SuggestionMatch = {
- range: Range
- query: string
- text: string
-} | null
-
-export function findSuggestionMatch(config: Trigger): SuggestionMatch {
- const { allowSpaces, allowedPrefixes, startOfLine, $position } = config
-
- const emailRegexSource = EMAIL_RGX.source
- const suffix = new RegExp(`\\s${emailRegexSource}$`)
- const prefix = startOfLine ? '^' : ''
- const regexp = allowSpaces
- ? new RegExp(`${prefix}${emailRegexSource}.*?(?=\\s\\w-_.|$)`, 'gm')
- : new RegExp(`${prefix}(?:^)?${emailRegexSource}[^\\s\\w-_.]*`, 'gm')
-
- const text = $position.nodeBefore?.isText && $position.nodeBefore.text
-
- if (!text) {
- return null
- }
-
- const textFrom = $position.pos - text.length
- const match = Array.from(text.matchAll(regexp)).pop()
-
- if (!match || match.input === undefined || match.index === undefined) {
- return null
- }
-
- // JavaScript doesn't have lookbehinds. This hacks a check that first character
- // is a space or the start of the line
- const matchPrefix = match.input.slice(Math.max(0, match.index - 1), match.index)
- const matchPrefixIsAllowed = new RegExp(
- `^[${allowedPrefixes?.join('') || ''}\0]?$`
- ).test(matchPrefix)
-
- if (allowedPrefixes !== null && !matchPrefixIsAllowed) {
- return null
- }
-
- // The absolute position of the match in the document
- const from = textFrom + match.index
- let to = from + match[0].length
-
- // Edge case handling; if spaces are allowed and we're directly in between
- // two triggers
- if (allowSpaces && suffix.test(text.slice(to - 1, to + 1))) {
- match[0] += ' '
- to += 1
- }
-
- // If the $position is located within the matched substring, return that range
- if (from < $position.pos && to >= $position.pos) {
- return {
- range: {
- from,
- to
- },
- query: match[0],
- text: match[0]
- }
- }
-
- return null
-}
diff --git a/packages/frontend-2/lib/core/tiptap/email-mention/suggestion.ts b/packages/frontend-2/lib/core/tiptap/email-mention/suggestion.ts
deleted file mode 100644
index 892d07ad3d..0000000000
--- a/packages/frontend-2/lib/core/tiptap/email-mention/suggestion.ts
+++ /dev/null
@@ -1,494 +0,0 @@
-/* eslint-disable @typescript-eslint/no-unsafe-assignment */
-/* eslint-disable @typescript-eslint/no-explicit-any */
-import type { Editor, Range } from '@tiptap/core'
-import type { EditorState } from '@tiptap/pm/state'
-import { Plugin, PluginKey } from '@tiptap/pm/state'
-import type { EditorView } from '@tiptap/pm/view'
-import { Decoration, DecorationSet } from '@tiptap/pm/view'
-
-import tippy from 'tippy.js'
-import type { Instance, GetReferenceClientRect } from 'tippy.js'
-import TiptapEmailMentionPopup from '~~/components/common/tiptap/EmailMentionPopup.vue'
-import { VueRenderer } from '@tiptap/vue-3'
-import { mentionsUserSearchQuery } from '~~/lib/common/graphql/queries'
-import type { ApolloClient } from '@apollo/client/core'
-import type {
- MentionData,
- SuggestionOptionsItem
-} from '~~/lib/core/tiptap/mentionExtension'
-import type { Optional } from '@speckle/shared'
-import { inviteProjectUserMutation } from '~~/lib/projects/graphql/mutations'
-import {
- convertThrowIntoFetchResult,
- getFirstErrorMessage
-} from '~~/lib/common/helpers/graphql'
-import { ToastNotificationType, useGlobalToast } from '~~/lib/common/composables/toast'
-import { findSuggestionMatch } from '~~/lib/core/tiptap/email-mention/findSuggestionMatch'
-
-/**
- * This is essentially the original Tiptap suggestion extension adapted to support the specialized
- * email mention use case. A bit of a mess probably, but this low level prosemirror stuff is quite complicated
- * and I just tried my best to reverse engineer it.
- */
-
-export type SuggestionCommandProps = {
- mention: MentionData | null
- email: string | null
-}
-
-type SuggestionCommand = (props: {
- editor: Editor
- range: Range
- props: SuggestionCommandProps
- nodeName: string
- projectId: string
-}) => void
-
-type AllowFn = (props: {
- editor: Editor
- state: EditorState
- range: Range
- nodeName: string
-}) => boolean
-
-type SuggestionRenderer = () => {
- onBeforeStart?: (props: SuggestionProps) => void
- onStart?: (props: SuggestionProps) => void
- onBeforeUpdate?: (props: SuggestionProps) => void
- onUpdate?: (props: SuggestionProps) => void
- onExit?: (props: SuggestionProps) => void
- onKeyDown?: (props: SuggestionKeyDownProps) => boolean
-}
-
-export interface SuggestionOptions {
- editor: Editor
- nodeName: string
- projectId: string
-}
-
-export interface SuggestionProps {
- editor: Editor
- range: Range
- query: string | null
- text: string | null
- items: SuggestionOptionsItem[]
- command: (props: SuggestionCommandProps) => void
- decorationNode: Element | null
- clientRect?: (() => DOMRect | null) | null
-}
-
-export interface SuggestionKeyDownProps {
- view: EditorView
- event: KeyboardEvent
- range: Range
-}
-
-type SuggestionPluginState = {
- active: boolean
- range: Range
- query: null | string
- text: null | string
- composing: boolean
- decorationId?: string | null
-}
-
-const inviteEmail = async (email: string, projectId: string) => {
- if (!email) return
-
- const { $apollo } = useNuxtApp()
- const { triggerNotification } = useGlobalToast()
- const apolloClient = ($apollo as { default: ApolloClient }).default
-
- const { data, errors } = await apolloClient
- .mutate({
- mutation: inviteProjectUserMutation,
- variables: {
- input: { email },
- projectId
- }
- })
- .catch(convertThrowIntoFetchResult)
-
- if (data?.projectMutations.invites.batchCreate.id) {
- triggerNotification({
- type: ToastNotificationType.Success,
- title: 'Invite sent'
- })
- } else {
- const errMsg = getFirstErrorMessage(errors)
- triggerNotification({
- type: ToastNotificationType.Danger,
- title: 'Invitation failed',
- description: errMsg
- })
- }
-}
-
-const command: SuggestionCommand = ({ editor, range, props, nodeName, projectId }) => {
- // increase range.to by one when the next node is of type "text"
- // and starts with a space character
- const nodeAfter = editor.view.state.selection.$to.nodeAfter
- const overrideSpace = nodeAfter?.text?.startsWith(' ')
-
- if (overrideSpace) {
- range.to += 1
- }
-
- const chain = editor.chain().focus()
-
- if (props.mention) {
- // Insert mention
- chain
- .insertContentAt(range, [
- {
- type: 'mention',
- attrs: props.mention
- },
- {
- type: 'text',
- text: ' '
- }
- ])
- .run()
- } else if (props.email) {
- // Insert email mention
- chain
- .insertContentAt(range, [
- {
- type: nodeName,
- attrs: {
- email: props.email
- }
- },
- {
- type: 'text',
- text: ' '
- }
- ])
- .run()
-
- inviteEmail(props.email, projectId)
- }
-
- window.getSelection()?.collapseToEnd()
-}
-
-const allow: AllowFn = (props) => {
- const { state, range, nodeName } = props
-
- const $from = state.doc.resolve(range.from)
- const type = state.schema.nodes[nodeName]
- const allow = !!$from.parent.type.contentMatch.matchType(type)
- return allow
-}
-
-const getItems = async (params: { editor: Editor; query: string | null }) => {
- const { query } = params
- if (!query?.length) return []
-
- const { $apollo } = useNuxtApp()
- const apolloClient = ($apollo as { default: ApolloClient }).default
- const { data } = await apolloClient.query({
- query: mentionsUserSearchQuery,
- variables: {
- query,
- emailOnly: true
- }
- })
-
- return data.userSearch?.items || []
-}
-
-const buildRenderer: SuggestionRenderer = () => {
- let component: VueRenderer
- let popup: Instance[]
-
- return {
- onStart: (props) => {
- component = new VueRenderer(TiptapEmailMentionPopup, {
- props,
- editor: props.editor
- })
-
- if (!props.clientRect) {
- return
- }
-
- popup = tippy('body', {
- getReferenceClientRect: props.clientRect as null | GetReferenceClientRect,
- appendTo: () => document.body,
- content: component.element,
- showOnCreate: true,
- interactive: true,
- trigger: 'manual',
- placement: 'bottom-start',
- theme: 'mention'
- })
- },
-
- onUpdate(props) {
- component.updateProps(props)
-
- if (!props.clientRect) {
- return
- }
-
- popup[0].setProps({
- getReferenceClientRect: props.clientRect as null | GetReferenceClientRect
- })
- },
-
- onKeyDown(props) {
- if (props.event.key === 'Escape') {
- popup[0].hide()
- return true
- }
-
- return (
- (
- component?.ref as Optional<{
- onKeyDown: (props: SuggestionKeyDownProps) => boolean
- }>
- )?.onKeyDown(props) || false
- )
- },
-
- onExit() {
- popup[0].destroy()
- component.destroy()
- component.element.remove()
- }
- }
-}
-
-export const SuggestionPluginKey = new PluginKey(
- 'emailSuggestion'
-)
-
-export function EmailSuggestion({ editor, nodeName, projectId }: SuggestionOptions) {
- let props: SuggestionProps | undefined
-
- const allowSpaces = false
- const allowedPrefixes = [' ']
- const startOfLine = false
- const decorationTag = 'span'
- const decorationClass = 'emailSuggestion'
- const items = getItems
-
- const renderer = buildRenderer()
-
- const plugin: Plugin = new Plugin({
- key: SuggestionPluginKey,
-
- view() {
- return {
- update: async (view, prevState) => {
- const prev = this.key?.getState(prevState) as SuggestionPluginState
- const next = this.key?.getState(view.state) as SuggestionPluginState
-
- // See how the state changed
- const moved =
- prev.active && next.active && prev.range.from !== next.range.from
- const started = !prev.active && next.active
- const stopped = prev.active && !next.active
- const changed = !started && !stopped && prev.query !== next.query
- const handleStart = started || moved
- const handleChange = changed && !moved
- const handleExit = stopped || moved
-
- // Cancel when suggestion isn't active
- if (!handleStart && !handleChange && !handleExit) {
- return
- }
-
- const state = handleExit && !handleStart ? prev : next
- const decorationNode = view.dom.querySelector(
- `[data-decoration-id="${state.decorationId}"]`
- )
-
- props = {
- editor,
- range: state.range,
- query: state.query,
- text: state.text,
- items: [],
- command: (commandProps) => {
- command({
- editor,
- range: state.range,
- props: commandProps,
- nodeName,
- projectId
- })
- },
- decorationNode,
- // virtual node for popper.js or tippy.js
- // this can be used for building popups without a DOM node
- clientRect: decorationNode
- ? () => {
- // because of `items` can be asynchrounous we’ll search for the current decoration node
- const { decorationId } = this.key?.getState(
- editor.state
- ) as SuggestionPluginState
- const currentDecorationNode = view.dom.querySelector(
- `[data-decoration-id="${decorationId}"]`
- )
-
- return currentDecorationNode?.getBoundingClientRect() || null
- }
- : null
- }
-
- if (handleStart) {
- renderer?.onBeforeStart?.(props)
- }
-
- if (handleChange) {
- renderer?.onBeforeUpdate?.(props)
- }
-
- if (handleChange || handleStart) {
- props.items = await items({
- editor,
- query: state.query
- })
- }
-
- if (handleExit) {
- renderer?.onExit?.(props)
- }
-
- if (handleChange) {
- renderer?.onUpdate?.(props)
- }
-
- if (handleStart) {
- renderer?.onStart?.(props)
- }
- },
-
- destroy: () => {
- if (!props) {
- return
- }
-
- renderer?.onExit?.(props)
- }
- }
- },
-
- state: {
- // Initialize the plugin's internal state.
- init() {
- const state: {
- active: boolean
- range: Range
- query: null | string
- text: null | string
- composing: boolean
- decorationId?: string | null
- } = {
- active: false,
- range: {
- from: 0,
- to: 0
- },
- query: null,
- text: null,
- composing: false
- }
-
- return state
- },
-
- // Apply changes to the plugin state from a view transaction.
- apply(transaction, prev, oldState, state) {
- const { isEditable } = editor
- const { composing } = editor.view
- const { selection } = transaction
- const { empty, from } = selection
- const next = { ...prev }
-
- next.composing = composing
-
- // We can only be suggesting if the view is editable, and:
- // * there is no selection, or
- // * a composition is active (see: https://github.com/ueberdosis/tiptap/issues/1449)
- if (isEditable && (empty || editor.view.composing)) {
- // Reset active state if we just left the previous suggestion range
- if (
- (from < prev.range.from || from > prev.range.to) &&
- !composing &&
- !prev.composing
- ) {
- next.active = false
- }
-
- // Try to match against where our cursor currently is
- const match = findSuggestionMatch({
- allowSpaces,
- allowedPrefixes,
- startOfLine,
- $position: selection.$from as any // some kind of dependency version mismatch bug here
- })
- const decorationId = `id_${Math.floor(Math.random() * 0xffffffff)}`
-
- // If we found a match, update the current state to show it
- if (match && allow({ editor, state, range: match.range, nodeName })) {
- next.active = true
- next.decorationId = prev.decorationId ? prev.decorationId : decorationId
- next.range = match.range
- next.query = match.query
- next.text = match.text
- } else {
- next.active = false
- }
- } else {
- next.active = false
- }
-
- // Make sure to empty the range if suggestion is inactive
- if (!next.active) {
- next.decorationId = null
- next.range = { from: 0, to: 0 }
- next.query = null
- next.text = null
- }
-
- return next
- }
- },
-
- props: {
- // Call the keydown hook if suggestion is active.
- handleKeyDown(view, event) {
- const { active, range } = plugin.getState(view.state)!
-
- if (!active) {
- return false
- }
-
- return renderer?.onKeyDown?.({ view, event, range }) || false
- },
-
- // Setup decorator on the currently active suggestion.
- decorations(state) {
- const { active, range, decorationId } = plugin.getState(state)!
-
- if (!active) {
- return null
- }
-
- return DecorationSet.create(state.doc, [
- Decoration.inline(range.from, range.to, {
- nodeName: decorationTag,
- class: decorationClass,
- ...(decorationId ? { 'data-decoration-id': decorationId } : {})
- })
- ])
- }
- }
- })
-
- return plugin
-}
diff --git a/packages/frontend-2/lib/core/tiptap/emailMentionExtension.ts b/packages/frontend-2/lib/core/tiptap/emailMentionExtension.ts
index f87cf8760f..1badc966f5 100644
--- a/packages/frontend-2/lib/core/tiptap/emailMentionExtension.ts
+++ b/packages/frontend-2/lib/core/tiptap/emailMentionExtension.ts
@@ -1,22 +1,13 @@
-/* eslint-disable @typescript-eslint/no-unsafe-return */
-/* eslint-disable @typescript-eslint/no-unsafe-assignment */
-import { Node, mergeAttributes } from '@tiptap/core'
-import type { Plugin } from '@tiptap/pm/state'
-import { EmailSuggestion } from '~~/lib/core/tiptap/email-mention/suggestion'
-
-export type EmailMentionOptions = {
- projectId?: string
-}
-
-export const EmailMention = Node.create({
+import { mergeAttributes, Node } from '@tiptap/core'
+
+/**
+ * This has since been removed, but we need it in place for backwards compatibility, otherwise
+ * older comments that use this node type will break and not render.
+ *
+ * So the following extension just renders those node types as plain text, and that's it
+ */
+export const LegacyEmailMention = Node.create({
name: 'emailMention',
-
- addOptions() {
- return {
- projectId: undefined
- }
- },
-
group: 'inline',
inline: true,
selectable: false,
@@ -29,7 +20,7 @@ export const EmailMention = Node.create({
parseHTML: (element) => element.getAttribute('data-email'),
renderHTML: (attributes) => {
if (!attributes.email) return {}
- return { 'data-email': attributes.email }
+ return { 'data-email': attributes.email as string }
}
}
}
@@ -55,46 +46,6 @@ export const EmailMention = Node.create({
},
renderText({ node }) {
- return node.attrs.email
- },
-
- addKeyboardShortcuts() {
- return {
- Backspace: () =>
- this.editor.commands.command(({ tr, state }) => {
- let isMention = false
- const { selection } = state
- const { empty, anchor } = selection
-
- if (!empty) {
- return false
- }
-
- state.doc.nodesBetween(anchor - 1, anchor, (node, pos) => {
- if (node.type.name === this.name) {
- isMention = true
- tr.insertText('', pos, pos + node.nodeSize)
- return false
- }
- })
-
- return isMention
- })
- }
- },
-
- addProseMirrorPlugins() {
- const plugins: Array = []
- if (this.options.projectId) {
- plugins.push(
- EmailSuggestion({
- editor: this.editor,
- nodeName: this.name,
- projectId: this.options.projectId
- })
- )
- }
-
- return plugins
+ return node.attrs.email as string
}
})
diff --git a/packages/frontend-2/lib/core/tiptap/mentionExtension.ts b/packages/frontend-2/lib/core/tiptap/mentionExtension.ts
index 94d7c08270..cde8b50f7a 100644
--- a/packages/frontend-2/lib/core/tiptap/mentionExtension.ts
+++ b/packages/frontend-2/lib/core/tiptap/mentionExtension.ts
@@ -10,27 +10,32 @@ import type { Get } from 'type-fest'
import tippy from 'tippy.js'
import type { Instance, GetReferenceClientRect } from 'tippy.js'
import type { Optional } from '@speckle/shared'
+import type { EditorInstanceStateStorage } from '~/lib/core/tiptap/editorStateExtension'
export type SuggestionOptionsItem = NonNullable<
- Get
+ Get
>
export type MentionData = { label: string; id: string }
const suggestionOptions: Omit, 'editor'> = {
- items: async ({ query }) => {
+ async items({ query, editor }) {
if (query.length < 3) return []
+ const state = editor.storage.editorInstanceState as EditorInstanceStateStorage
+ const projectId = state.state.projectId
+
const { $apollo } = useNuxtApp()
const apolloClient = ($apollo as { default: ApolloClient }).default
const { data } = await apolloClient.query({
query: mentionsUserSearchQuery,
variables: {
- query
+ query,
+ projectId
}
})
- return data.userSearch?.items || []
+ return data.users?.items || []
},
render: () => {
let component: VueRenderer
@@ -50,7 +55,7 @@ const suggestionOptions: Omit, 'editor'
popup = tippy('body', {
getReferenceClientRect: props.clientRect as null | GetReferenceClientRect,
appendTo: () => document.body,
- content: component.element,
+ content: component.element!,
showOnCreate: true,
interactive: true,
trigger: 'manual',
@@ -89,7 +94,7 @@ const suggestionOptions: Omit, 'editor'
onExit() {
popup[0].destroy()
component.destroy()
- component.element.remove()
+ component.element?.remove()
}
}
}
diff --git a/packages/frontend-2/lib/projects/graphql/queries.ts b/packages/frontend-2/lib/projects/graphql/queries.ts
index a9214e62ee..c426134364 100644
--- a/packages/frontend-2/lib/projects/graphql/queries.ts
+++ b/packages/frontend-2/lib/projects/graphql/queries.ts
@@ -257,7 +257,6 @@ export const projectAutomationsTabQuery = graphql(`
}
...FormSelectProjects_Project
}
- ...ProjectPageAutomationsEmptyState_Query
}
`)
diff --git a/packages/frontend-2/package.json b/packages/frontend-2/package.json
index ac7bbdf28b..a651463abb 100644
--- a/packages/frontend-2/package.json
+++ b/packages/frontend-2/package.json
@@ -36,22 +36,22 @@
"@speckle/ui-components-nuxt": "workspace:^",
"@speckle/viewer": "workspace:^",
"@survicate/survicate-web-surveys-wrapper": "^1.2.1",
- "@tiptap/core": "2.0.0-beta.220",
- "@tiptap/extension-bold": "2.0.0-beta.220",
- "@tiptap/extension-document": "2.0.0-beta.220",
- "@tiptap/extension-hard-break": "2.0.0-beta.220",
- "@tiptap/extension-history": "2.0.0-beta.220",
- "@tiptap/extension-italic": "2.0.0-beta.220",
- "@tiptap/extension-link": "2.0.0-beta.220",
- "@tiptap/extension-mention": "2.0.0-beta.220",
- "@tiptap/extension-paragraph": "2.0.0-beta.220",
- "@tiptap/extension-placeholder": "2.0.0-beta.220",
- "@tiptap/extension-strike": "2.0.0-beta.220",
- "@tiptap/extension-text": "2.0.0-beta.220",
- "@tiptap/extension-underline": "2.0.0-beta.220",
- "@tiptap/pm": "2.0.0-beta.220",
- "@tiptap/suggestion": "2.0.0-beta.220",
- "@tiptap/vue-3": "2.0.0-beta.220",
+ "@tiptap/core": "2.10.3",
+ "@tiptap/extension-bold": "2.10.3",
+ "@tiptap/extension-document": "2.10.3",
+ "@tiptap/extension-hard-break": "2.10.3",
+ "@tiptap/extension-history": "2.10.3",
+ "@tiptap/extension-italic": "2.10.3",
+ "@tiptap/extension-link": "2.10.3",
+ "@tiptap/extension-mention": "2.10.3",
+ "@tiptap/extension-paragraph": "2.10.3",
+ "@tiptap/extension-placeholder": "2.10.3",
+ "@tiptap/extension-strike": "2.10.3",
+ "@tiptap/extension-text": "2.10.3",
+ "@tiptap/extension-underline": "2.10.3",
+ "@tiptap/pm": "2.10.3",
+ "@tiptap/suggestion": "2.10.3",
+ "@tiptap/vue-3": "2.10.3",
"@tryghost/content-api": "^1.11.21",
"@vue/apollo-composable": "4.0.2",
"@vue/apollo-ssr": "4.0.0",
diff --git a/packages/server/assets/core/typedefs/user.graphql b/packages/server/assets/core/typedefs/user.graphql
index 475ea712ce..d8911f09e1 100644
--- a/packages/server/assets/core/typedefs/user.graphql
+++ b/packages/server/assets/core/typedefs/user.graphql
@@ -42,7 +42,14 @@ extend type Query {
cursor: String
archived: Boolean = false
emailOnly: Boolean = false
- ): UserSearchResultCollection!
+ ): UserSearchResultCollection! @deprecated(reason: "Use users() instead.")
+
+ """
+ Look up server users
+ """
+ users(input: UsersRetrievalInput!): UserSearchResultCollection!
+ @hasServerRole(role: SERVER_GUEST)
+ @hasScopes(scopes: ["users:read", "profile:read"])
"""
Validate password strength
@@ -53,6 +60,26 @@ extend type Query {
)
}
+input UsersRetrievalInput {
+ """
+ The query looks for matches in user name & email
+ """
+ query: String!
+ cursor: String
+ """
+ Limit defaults to 10
+ """
+ limit: Int
+ """
+ Only find users with directly matching emails
+ """
+ emailOnly: Boolean
+ """
+ Only find users that are collaborators of the specified project
+ """
+ projectId: String
+}
+
type PasswordStrengthCheckResults {
"""
Integer from 0-4 (useful for implementing a strength bar):
diff --git a/packages/server/logging/logging.ts b/packages/server/logging/logging.ts
index 34390451ec..3878375d27 100644
--- a/packages/server/logging/logging.ts
+++ b/packages/server/logging/logging.ts
@@ -31,6 +31,7 @@ export const crossServerSyncLogger = extendLoggerComponent(logger, 'cross-server
export const automateLogger = extendLoggerComponent(logger, 'automate')
export const subscriptionLogger = extendLoggerComponent(logger, 'subscription')
export const healthCheckLogger = extendLoggerComponent(logger, 'healthcheck')
+export const testLogger = extendLoggerComponent(logger, 'test')
export type Logger = typeof logger
export { extendLoggerComponent, Observability }
diff --git a/packages/server/modules/core/domain/streams/operations.ts b/packages/server/modules/core/domain/streams/operations.ts
index 499beeba31..055066a354 100644
--- a/packages/server/modules/core/domain/streams/operations.ts
+++ b/packages/server/modules/core/domain/streams/operations.ts
@@ -64,7 +64,10 @@ export type GetCommitStream = (params: {
export type GetStreamCollaborators = (
streamId: string,
- type?: StreamRoles
+ type?: StreamRoles,
+ options?: Partial<{
+ limit: number
+ }>
) => Promise>
export type GetUserDeletableStreams = (userId: string) => Promise>
diff --git a/packages/server/modules/core/domain/users/operations.ts b/packages/server/modules/core/domain/users/operations.ts
index 58175e99c8..8d35419d0e 100644
--- a/packages/server/modules/core/domain/users/operations.ts
+++ b/packages/server/modules/core/domain/users/operations.ts
@@ -8,6 +8,7 @@ import { UserUpdateInput } from '@/modules/core/graph/generated/graphql'
import { ServerInviteGraphQLReturnType } from '@/modules/core/helpers/graphTypes'
import { ServerAclRecord, UserWithRole } from '@/modules/core/helpers/types'
import {
+ MaybeNullOrUndefined,
Nullable,
NullableKeysToOptional,
Optional,
@@ -173,6 +174,27 @@ export type SearchLimitedUsers = (
cursor: Nullable
}>
+export type LookupUsers = (filter: {
+ query: string
+ /**
+ * Only find user with directly matching email
+ */
+ emailOnly?: MaybeNullOrUndefined
+ /**
+ * Only find users that are collaborators of the specified project
+ */
+ projectId?: MaybeNullOrUndefined
+ /**
+ * Defaults to 10
+ */
+ limit?: MaybeNullOrUndefined
+ cursor?: MaybeNullOrUndefined
+ archived?: MaybeNullOrUndefined
+}) => Promise<{
+ users: User[]
+ cursor: Nullable
+}>
+
type AdminUserListArgs = {
cursor: string | null
query: string | null
diff --git a/packages/server/modules/core/graph/generated/graphql.ts b/packages/server/modules/core/graph/generated/graphql.ts
index 916015137d..2012e64625 100644
--- a/packages/server/modules/core/graph/generated/graphql.ts
+++ b/packages/server/modules/core/graph/generated/graphql.ts
@@ -2577,8 +2577,11 @@ export type Query = {
/**
* Search for users and return limited metadata about them, if you have the server:user role.
* The query looks for matches in name & email
+ * @deprecated Use users() instead.
*/
userSearch: UserSearchResultCollection;
+ /** Look up server users */
+ users: UserSearchResultCollection;
/** Validates the slug, to make sure it contains only valid characters and its not taken. */
validateWorkspaceSlug: Scalars['Boolean']['output'];
workspace: Workspace;
@@ -2720,6 +2723,11 @@ export type QueryUserSearchArgs = {
};
+export type QueryUsersArgs = {
+ input: UsersRetrievalInput;
+};
+
+
export type QueryValidateWorkspaceSlugArgs = {
slug: Scalars['String']['input'];
};
@@ -3892,6 +3900,18 @@ export type UserWorkspacesFilter = {
search?: InputMaybe;
};
+export type UsersRetrievalInput = {
+ cursor?: InputMaybe;
+ /** Only find users with directly matching emails */
+ emailOnly?: InputMaybe;
+ /** Limit defaults to 10 */
+ limit?: InputMaybe;
+ /** Only find users that are collaborators of the specified project */
+ projectId?: InputMaybe;
+ /** The query looks for matches in user name & email */
+ query: Scalars['String']['input'];
+};
+
export type Version = {
__typename?: 'Version';
authorUser?: Maybe;
@@ -4871,6 +4891,7 @@ export type ResolversTypes = {
UserStreamCollection: ResolverTypeWrapper & { items?: Maybe> }>;
UserUpdateInput: UserUpdateInput;
UserWorkspacesFilter: UserWorkspacesFilter;
+ UsersRetrievalInput: UsersRetrievalInput;
Version: ResolverTypeWrapper;
VersionCollection: ResolverTypeWrapper & { items: Array }>;
VersionCreatedTrigger: ResolverTypeWrapper;
@@ -5139,6 +5160,7 @@ export type ResolversParentTypes = {
UserStreamCollection: Omit & { items?: Maybe> };
UserUpdateInput: UserUpdateInput;
UserWorkspacesFilter: UserWorkspacesFilter;
+ UsersRetrievalInput: UsersRetrievalInput;
Version: VersionGraphQLReturn;
VersionCollection: Omit & { items: Array };
VersionCreatedTrigger: AutomationRunTriggerGraphQLReturn;
@@ -6106,6 +6128,7 @@ export type QueryResolvers, ParentType, ContextType, Partial>;
userPwdStrength?: Resolver>;
userSearch?: Resolver>;
+ users?: Resolver>;
validateWorkspaceSlug?: Resolver>;
workspace?: Resolver>;
workspaceBySlug?: Resolver>;
diff --git a/packages/server/modules/core/graph/resolvers/users.ts b/packages/server/modules/core/graph/resolvers/users.ts
index 4eafc84c41..2bab5a4e9d 100644
--- a/packages/server/modules/core/graph/resolvers/users.ts
+++ b/packages/server/modules/core/graph/resolvers/users.ts
@@ -14,7 +14,8 @@ import {
searchUsersFactory,
markOnboardingCompleteFactory,
legacyGetPaginatedUsersCountFactory,
- legacyGetPaginatedUsersFactory
+ legacyGetPaginatedUsersFactory,
+ lookupUsersFactory
} from '@/modules/core/repositories/users'
import { UsersMeta } from '@/modules/core/dbSchema'
import { throwForNotHavingServerRole } from '@/modules/shared/authz'
@@ -68,6 +69,7 @@ const changeUserRole = changeUserRoleFactory({
updateUserServerRole: updateUserServerRoleFactory({ db })
})
const searchUsers = searchUsersFactory({ db })
+const lookupUsers = lookupUsersFactory({ db })
const markOnboardingComplete = markOnboardingCompleteFactory({ db })
const getAdminUsersListCollection = getAdminUsersListCollectionFactory({
countUsers: legacyGetPaginatedUsersCountFactory({ db }),
@@ -93,7 +95,7 @@ export = {
if (!id) return null
return await getUser(id)
},
- async user(parent, args, context) {
+ async user(_parent, args, context) {
// User wants info about himself and he's not authenticated - just return null
if (!context.auth && !args.id) return null
@@ -136,14 +138,27 @@ export = {
return { cursor, items: users }
},
- async userPwdStrength(parent, args) {
+ async users(_parent, args) {
+ if (args.input.query.length < 3)
+ throw new BadRequestError('Search query must be at least 3 characters.')
+
+ if ((args.input.limit || 0) > 100)
+ throw new BadRequestError(
+ 'Cannot return more than 100 items, please use pagination.'
+ )
+
+ const { cursor, users } = await lookupUsers(args.input)
+ return { cursor, items: users }
+ },
+
+ async userPwdStrength(_parent, args) {
const res = zxcvbn(args.pwd)
return { score: res.score, feedback: res.feedback }
}
},
User: {
- async email(parent, args, context) {
+ async email(parent, _args, context) {
// NOTE: we're redacting the field (returning null) rather than throwing a full error which would invalidate the request.
if (context.userId === parent.id) {
try {
diff --git a/packages/server/modules/core/repositories/streams.ts b/packages/server/modules/core/repositories/streams.ts
index 59dde302b7..a2cbf98e68 100644
--- a/packages/server/modules/core/repositories/streams.ts
+++ b/packages/server/modules/core/repositories/streams.ts
@@ -602,7 +602,9 @@ export const getDiscoverableStreamsPageFactory =
*/
export const getStreamCollaboratorsFactory =
(deps: { db: Knex }): GetStreamCollaborators =>
- async (streamId: string, type?: StreamRoles) => {
+ async (streamId: string, type?: StreamRoles, options?) => {
+ const { limit } = options || {}
+
const q = tables
.streamAcl(deps.db)
.select>([
@@ -619,6 +621,10 @@ export const getStreamCollaboratorsFactory =
q.andWhere(StreamAcl.col.role, type)
}
+ if (limit) {
+ q.limit(limit)
+ }
+
const items = (await q).map((i) => ({
...removePrivateFields(i),
streamRole: i.streamRole,
diff --git a/packages/server/modules/core/repositories/users.ts b/packages/server/modules/core/repositories/users.ts
index 104814293d..abf8c4af16 100644
--- a/packages/server/modules/core/repositories/users.ts
+++ b/packages/server/modules/core/repositories/users.ts
@@ -1,4 +1,4 @@
-import { ServerAcl, UserEmails, Users, knex } from '@/modules/core/dbSchema'
+import { ServerAcl, StreamAcl, UserEmails, Users, knex } from '@/modules/core/dbSchema'
import { ServerAclRecord, UserRecord, UserWithRole } from '@/modules/core/helpers/types'
import { Nullable } from '@/modules/shared/helpers/typeHelper'
import { clamp, isArray, omit } from 'lodash'
@@ -25,6 +25,7 @@ import {
LegacyGetUser,
LegacyGetUserByEmail,
ListPaginatedUsersPage,
+ LookupUsers,
MarkOnboardingComplete,
MarkUserAsVerified,
SearchLimitedUsers,
@@ -33,7 +34,7 @@ import {
UpdateUser,
UpdateUserServerRole
} from '@/modules/core/domain/users/operations'
-import { LIMITED_USER_FIELDS } from '@/modules/core/helpers/userHelper'
+import { removePrivateFields } from '@/modules/core/helpers/userHelper'
export type { UserWithOptionalRole, GetUserParams }
const tables = {
@@ -449,39 +450,84 @@ export const getUserRoleFactory =
}
/**
- * User search available for normal server users. It's more limited because of the lower access level.
+ * Used for (Limited)User search. No need to convert users to Limited here, because non-limited fields
+ * cannot be leaked out from the GQL API.
*/
-export const searchUsersFactory =
- (deps: { db: Knex }): SearchLimitedUsers =>
- async (searchQuery, limit, cursor, archived = false, emailOnly = false) => {
- const prefixedLimitedUserFields = LIMITED_USER_FIELDS.map(
- (field) => `users.${field}`
- )
+export const lookupUsersFactory =
+ (deps: { db: Knex }): LookupUsers =>
+ async (filter) => {
+ const {
+ query: searchQuery,
+ limit = 10,
+ cursor,
+ archived = false,
+ emailOnly = false,
+ projectId
+ } = filter
+
const query = tables
.users(deps.db)
- .join('server_acl', 'users.id', 'server_acl.userId')
+ .join(ServerAcl.name, Users.col.id, ServerAcl.col.userId)
.leftJoin(UserEmails.name, UserEmails.col.userId, Users.col.id)
.columns([
- ...Object.values(omit(Users.col, ['email', 'verified'])).filter((col) =>
- prefixedLimitedUserFields.includes(col)
+ ...Object.values(
+ omit(Users.col, [
+ Users.col.email,
+ Users.col.verified,
+ Users.col.passwordDigest
+ ])
),
- knex.raw(`(array_agg("user_emails"."verified"))[1] as verified`)
+ knex.raw(`(array_agg(??))[1] as "verified"`, [UserEmails.col.verified]),
+ knex.raw(`(array_agg(??))[1] as "email"`, [UserEmails.col.email])
])
.groupBy(Users.col.id)
.where((queryBuilder) => {
queryBuilder.where({ [UserEmails.col.email]: searchQuery }) //match full email or partial name
- if (!emailOnly) queryBuilder.orWhere('name', 'ILIKE', `%${searchQuery}%`)
- if (!archived) queryBuilder.andWhere('role', '!=', Roles.Server.ArchivedUser)
+ if (!emailOnly)
+ queryBuilder.orWhere(Users.col.name, 'ILIKE', `%${searchQuery}%`)
+ if (!archived)
+ queryBuilder.andWhere(ServerAcl.col.role, '!=', Roles.Server.ArchivedUser)
})
- if (cursor) query.andWhere('users.createdAt', '<', cursor)
+ if (projectId) {
+ query
+ .innerJoin(StreamAcl.name, StreamAcl.col.userId, Users.col.id)
+ .andWhere(StreamAcl.col.resourceId, projectId)
+ }
+
+ if (cursor) query.andWhere(Users.col.createdAt, '<', cursor)
+
+ const finalLimit = clamp(limit || 10, 1, 100)
+ query.orderBy(Users.col.createdAt, 'desc').limit(finalLimit)
+ const rows = (await query) as UserRecord[]
+ const users = rows.map((u) => sanitizeUserRecord(u)) // pw shouldnt be there, but just making sure
+
+ return {
+ users,
+ cursor: users.length > 0 ? users[users.length - 1].createdAt.toISOString() : null
+ }
+ }
+
+/**
+ * User search available for normal server users. It's more limited because of the lower access level.
+ * @deprecated Use lookupUsers instead
+ */
+export const searchUsersFactory =
+ (deps: { db: Knex }): SearchLimitedUsers =>
+ async (searchQuery, limit, cursor, archived = false, emailOnly = false) => {
+ const lookupUsers = lookupUsersFactory(deps)
const defaultLimit = 25
- query.orderBy('users.createdAt', 'desc').limit(limit || defaultLimit)
+ const res = await lookupUsers({
+ query: searchQuery,
+ limit: limit || defaultLimit,
+ cursor,
+ archived,
+ emailOnly
+ })
- const rows = await query
return {
- users: rows,
- cursor: rows.length > 0 ? rows[rows.length - 1].createdAt.toISOString() : null
+ users: res.users.map(removePrivateFields),
+ cursor: res.cursor
}
}
diff --git a/packages/server/modules/core/tests/helpers/graphql.ts b/packages/server/modules/core/tests/helpers/graphql.ts
index d5597f8b09..5043845c0b 100644
--- a/packages/server/modules/core/tests/helpers/graphql.ts
+++ b/packages/server/modules/core/tests/helpers/graphql.ts
@@ -118,3 +118,15 @@ export const onBranchDeletedSubscription = gql`
branchDeleted(streamId: $streamId)
}
`
+
+export const usersRetrievalQuery = gql`
+ query UsersRetrieval($input: UsersRetrievalInput!) {
+ users(input: $input) {
+ cursor
+ items {
+ id
+ name
+ }
+ }
+ }
+`
diff --git a/packages/server/modules/core/tests/integration/subs.graph.spec.ts b/packages/server/modules/core/tests/integration/subs.graph.spec.ts
index fa82aa354f..854abbc147 100644
--- a/packages/server/modules/core/tests/integration/subs.graph.spec.ts
+++ b/packages/server/modules/core/tests/integration/subs.graph.spec.ts
@@ -106,7 +106,7 @@ import { BasicTestCommit, createTestCommits } from '@/test/speckle-helpers/commi
import { TestError } from '@/test/speckle-helpers/error'
import {
isMultiRegionTestMode,
- waitForRegionUser
+ waitForRegionUsers
} from '@/test/speckle-helpers/regions'
import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper'
import { faker } from '@faker-js/faker'
@@ -297,12 +297,7 @@ describe('Core GraphQL Subscriptions (New)', () => {
})
])
- if (isMultiRegion) {
- await Promise.all([
- waitForRegionUser({ userId: me.id }),
- waitForRegionUser({ userId: otherGuy.id })
- ])
- }
+ await waitForRegionUsers([me, otherGuy])
})
describe('Project Subs', () => {
diff --git a/packages/server/modules/core/tests/integration/users.graph.spec.ts b/packages/server/modules/core/tests/integration/users.graph.spec.ts
new file mode 100644
index 0000000000..32cc784cc1
--- /dev/null
+++ b/packages/server/modules/core/tests/integration/users.graph.spec.ts
@@ -0,0 +1,306 @@
+import { getFeatureFlags } from '@/modules/shared/helpers/envHelper'
+import {
+ assignToWorkspaces,
+ BasicTestWorkspace,
+ createTestWorkspace
+} from '@/modules/workspaces/tests/helpers/creation'
+import { BasicTestUser, createTestUser, createTestUsers } from '@/test/authHelper'
+import {
+ UsersRetrievalDocument,
+ UsersRetrievalInput
+} from '@/test/graphql/generated/graphql'
+import {
+ ExecuteOperationOptions,
+ testApolloServer,
+ TestApolloServer
+} from '@/test/graphqlHelper'
+import { beforeEachContext, getMainTestRegionKeyIfMultiRegion } from '@/test/hooks'
+import { waitForRegionUsers } from '@/test/speckle-helpers/regions'
+import {
+ addAllToStream,
+ BasicTestStream,
+ createTestStream
+} from '@/test/speckle-helpers/streamHelper'
+import { Roles } from '@speckle/shared'
+import { expect } from 'chai'
+
+const { FF_WORKSPACES_MODULE_ENABLED } = getFeatureFlags()
+
+describe('Users @graphql', () => {
+ let me: BasicTestUser = {
+ name: 'Itsame mario!',
+ email: 'itsame@hehehe.com',
+ id: ''
+ }
+ let apollo: TestApolloServer
+
+ before(async () => {
+ await beforeEachContext()
+ me = await createTestUser()
+ apollo = await testApolloServer({ authUserId: me.id })
+ await waitForRegionUsers([me])
+ })
+
+ describe('search', () => {
+ const RANDOMIZED_USER_COUNT = 20
+ const BASIC_COLLABORATOR_PROJECT_USER_COUNT = Math.floor(RANDOMIZED_USER_COUNT / 2)
+ const WORKSPACE_COLLABORATOR_USER_COUNT =
+ RANDOMIZED_USER_COUNT - BASIC_COLLABORATOR_PROJECT_USER_COUNT
+ const WORKSPACE_GUEST_USER_COUNT = FF_WORKSPACES_MODULE_ENABLED
+ ? Math.floor(WORKSPACE_COLLABORATOR_USER_COUNT / 3)
+ : 0
+
+ const firstSpecificUser: BasicTestUser = {
+ name: 'first specific user',
+ email: 'lookatmyepicemail@email.com',
+ id: ''
+ }
+ const secondSpecificUser: BasicTestUser = {
+ name: 'second specific user',
+ email: 'alsolookatmyepicemail@email.com',
+ id: ''
+ }
+ let randomizedUsers: BasicTestUser[]
+
+ const myWorkspace: BasicTestWorkspace = {
+ name: 'My Workspace #1',
+ ownerId: '',
+ id: '',
+ slug: ''
+ }
+ const myWorkspaceCollaboratorProject: BasicTestStream = {
+ name: 'My Workspace Collaborator Project #1',
+ ownerId: '',
+ id: '',
+ isPublic: true
+ }
+
+ const myBasicCollaboratorProject: BasicTestStream = {
+ name: 'My Basic Collaborator Project #1',
+ ownerId: '',
+ id: '',
+ isPublic: true
+ }
+
+ const getBasicRandomizedUsers = () =>
+ randomizedUsers.filter((u) => u.name.includes('Basic'))
+ const getWorkspaceRandomizedUsers = () =>
+ randomizedUsers.filter((u) => u.name.includes('Workspace'))
+ const getWorkspaceNonGuestRandomizedUsers = () =>
+ getWorkspaceRandomizedUsers().filter((u) => !u.name.includes('Guest'))
+
+ const search = (input: UsersRetrievalInput, options?: ExecuteOperationOptions) =>
+ apollo.execute(UsersRetrievalDocument, { input }, options)
+
+ before(async () => {
+ await Promise.all([
+ createTestStream(myBasicCollaboratorProject, me),
+ createTestWorkspace(myWorkspace, me, {
+ regionKey: getMainTestRegionKeyIfMultiRegion()
+ }).then(() => (myWorkspaceCollaboratorProject.workspaceId = myWorkspace.id))
+ ])
+ await createTestStream(myWorkspaceCollaboratorProject, me)
+
+ // Seed in users
+ let remainingBasicProjectCollaborators = BASIC_COLLABORATOR_PROJECT_USER_COUNT
+ let remainingWorkspaceGuests = WORKSPACE_GUEST_USER_COUNT
+
+ randomizedUsers = await createTestUsers({
+ count: RANDOMIZED_USER_COUNT,
+ mapper: ({ user, idx }) => {
+ const isBasicProjectCollaborator = remainingBasicProjectCollaborators-- > 0
+ const isWorkspaceGuest = !isBasicProjectCollaborator
+ ? remainingWorkspaceGuests-- > 0
+ : false
+
+ return {
+ ...user,
+ name: `Randomized ${
+ isBasicProjectCollaborator
+ ? 'Basic'
+ : 'Workspace ' + (isWorkspaceGuest ? 'Guest' : 'Member')
+ } User #${idx + 1}`
+ }
+ },
+ serial: true
+ })
+
+ // Seed in specific users
+ await createTestUsers({
+ users: [firstSpecificUser, secondSpecificUser],
+ serial: true
+ })
+
+ // Assign to projects & workspaces
+ const basicProjectCollaborators = [
+ ...randomizedUsers.slice(0, BASIC_COLLABORATOR_PROJECT_USER_COUNT),
+ firstSpecificUser
+ ]
+ await addAllToStream(myBasicCollaboratorProject, basicProjectCollaborators, {
+ owner: me
+ })
+
+ const workspaceCollaborators = [
+ ...randomizedUsers.slice(BASIC_COLLABORATOR_PROJECT_USER_COUNT).map((u) => {
+ const isGuest = u.name.includes('Guest')
+ const role = isGuest ? Roles.Workspace.Guest : Roles.Workspace.Member
+
+ return { user: u, role }
+ }),
+ { user: secondSpecificUser, role: Roles.Workspace.Member }
+ ]
+
+ // Assign to workspaces (or attach to other project)
+ if (FF_WORKSPACES_MODULE_ENABLED) {
+ await assignToWorkspaces(
+ workspaceCollaborators.map(({ user, role }) => [myWorkspace, user, role])
+ )
+ } else {
+ await addAllToStream(
+ myWorkspaceCollaboratorProject,
+ workspaceCollaborators.map(({ user }) => user),
+ {
+ owner: me
+ }
+ )
+ }
+ })
+
+ it('works with basic query', async () => {
+ const res1 = await search(
+ {
+ query: 'first'
+ },
+ { assertNoErrors: true }
+ )
+
+ expect(res1.data?.users.items || []).to.have.lengthOf(1)
+ expect(res1.data?.users.items[0]?.id).to.equal(firstSpecificUser.id)
+
+ const res2 = await search(
+ {
+ query: 'second'
+ },
+ { assertNoErrors: true }
+ )
+ expect(res2.data?.users.items || []).to.have.lengthOf(1)
+ expect(res2.data?.users.items[0]?.id).to.equal(secondSpecificUser.id)
+
+ const res3 = await search(
+ {
+ query: 'specific user'
+ },
+ { assertNoErrors: true }
+ )
+ expect(res3.data?.users.items || []).to.have.lengthOf(2)
+ expect((res3.data?.users.items || []).map((u) => u.id)).to.have.members([
+ firstSpecificUser.id,
+ secondSpecificUser.id
+ ])
+ })
+
+ it('doesnt work with less than 3 characters', async () => {
+ const res = await search({
+ query: 'fi'
+ })
+ expect(res).to.haveGraphQLErrors('Search query must be at least 3 characters')
+ })
+
+ it('doesnt work with more than 100 items', async () => {
+ const res = await search({
+ query: 'user',
+ limit: 101
+ })
+ expect(res).to.haveGraphQLErrors(
+ 'Cannot return more than 100 items, please use pagination'
+ )
+ })
+
+ it('works with projectId set', async () => {
+ const res = await search(
+ {
+ query: 'user',
+ projectId: myBasicCollaboratorProject.id,
+ limit: 100
+ },
+ { assertNoErrors: true }
+ )
+
+ expect(res.data?.users.items || []).to.have.lengthOf(
+ BASIC_COLLABORATOR_PROJECT_USER_COUNT + 1 // +1 for the firstSpecificUser
+ )
+ expect((res.data?.users.items || []).map((u) => u.id)).to.have.members([
+ ...getBasicRandomizedUsers().map((u) => u.id),
+ firstSpecificUser.id
+ ])
+ })
+
+ it('works with a projectId from a workspace', async () => {
+ const res = await search(
+ {
+ query: 'user',
+ projectId: myWorkspaceCollaboratorProject.id,
+ limit: 100
+ },
+ { assertNoErrors: true }
+ )
+
+ expect(res.data?.users.items || []).to.have.lengthOf(
+ WORKSPACE_COLLABORATOR_USER_COUNT - WORKSPACE_GUEST_USER_COUNT + 1 // +1 for the secondSpecificUser
+ )
+ expect((res.data?.users.items || []).map((u) => u.id)).to.have.members([
+ ...getWorkspaceNonGuestRandomizedUsers().map((u) => u.id),
+ secondSpecificUser.id
+ ])
+ })
+
+ it('works with pagination', async () => {
+ const totalUserCount = RANDOMIZED_USER_COUNT + 2 // +2 for the specific users
+ const firstLimit = Math.floor(totalUserCount / 2)
+ const res1 = await search(
+ {
+ query: 'user',
+ limit: firstLimit
+ },
+ { assertNoErrors: true }
+ )
+
+ const firstCursor = res1.data?.users.cursor
+ const firstBatch = res1.data?.users.items || []
+ expect(firstBatch).to.have.lengthOf(firstLimit)
+ expect(firstCursor).to.be.ok
+
+ const secondLimit = totalUserCount - firstLimit
+ const res2 = await search(
+ {
+ query: 'user',
+ limit: secondLimit,
+ cursor: firstCursor
+ },
+ { assertNoErrors: true }
+ )
+
+ const secondCursor = res2.data?.users.cursor
+ const secondBatch = res2.data?.users.items || []
+ expect(secondBatch).to.have.lengthOf(secondLimit)
+ expect(secondCursor).to.be.ok
+ expect([...firstBatch, ...secondBatch].map((u) => u.id)).to.have.members([
+ ...randomizedUsers.map((u) => u.id),
+ firstSpecificUser.id,
+ secondSpecificUser.id
+ ])
+
+ const res3 = await search(
+ {
+ query: 'user',
+ limit: 100,
+ cursor: secondCursor
+ },
+ { assertNoErrors: true }
+ )
+
+ expect(res3.data?.users.items || []).to.have.lengthOf(0)
+ expect(res3.data?.users.cursor).to.be.not.ok
+ })
+ })
+})
diff --git a/packages/server/modules/cross-server-sync/graph/generated/graphql.ts b/packages/server/modules/cross-server-sync/graph/generated/graphql.ts
index ee9cce8705..34bc3acd8c 100644
--- a/packages/server/modules/cross-server-sync/graph/generated/graphql.ts
+++ b/packages/server/modules/cross-server-sync/graph/generated/graphql.ts
@@ -2558,8 +2558,11 @@ export type Query = {
/**
* Search for users and return limited metadata about them, if you have the server:user role.
* The query looks for matches in name & email
+ * @deprecated Use users() instead.
*/
userSearch: UserSearchResultCollection;
+ /** Look up server users */
+ users: UserSearchResultCollection;
/** Validates the slug, to make sure it contains only valid characters and its not taken. */
validateWorkspaceSlug: Scalars['Boolean']['output'];
workspace: Workspace;
@@ -2701,6 +2704,11 @@ export type QueryUserSearchArgs = {
};
+export type QueryUsersArgs = {
+ input: UsersRetrievalInput;
+};
+
+
export type QueryValidateWorkspaceSlugArgs = {
slug: Scalars['String']['input'];
};
@@ -3873,6 +3881,18 @@ export type UserWorkspacesFilter = {
search?: InputMaybe;
};
+export type UsersRetrievalInput = {
+ cursor?: InputMaybe;
+ /** Only find users with directly matching emails */
+ emailOnly?: InputMaybe;
+ /** Limit defaults to 10 */
+ limit?: InputMaybe;
+ /** Only find users that are collaborators of the specified project */
+ projectId?: InputMaybe;
+ /** The query looks for matches in user name & email */
+ query: Scalars['String']['input'];
+};
+
export type Version = {
__typename?: 'Version';
authorUser?: Maybe;
diff --git a/packages/server/modules/multiregion/dbSelector.ts b/packages/server/modules/multiregion/dbSelector.ts
index 67c325077a..89a3a8407f 100644
--- a/packages/server/modules/multiregion/dbSelector.ts
+++ b/packages/server/modules/multiregion/dbSelector.ts
@@ -23,7 +23,7 @@ import {
getMainRegionConfig
} from '@/modules/multiregion/regionConfig'
import { ensureError, MaybeNullOrUndefined } from '@speckle/shared'
-import { isTestEnv } from '@/modules/shared/helpers/envHelper'
+import { isDevOrTestEnv, isTestEnv } from '@/modules/shared/helpers/envHelper'
import { migrateDbToLatest } from '@/db/migrations'
let getter: GetProjectDb | undefined = undefined
@@ -119,7 +119,8 @@ export const initializeRegisteredRegionClients = async (): Promise initializeRegion({ regionKey }))
)
diff --git a/packages/server/modules/notifications/services/handlers/mentionedInComment.ts b/packages/server/modules/notifications/services/handlers/mentionedInComment.ts
index eee354344a..8aa7ce7e00 100644
--- a/packages/server/modules/notifications/services/handlers/mentionedInComment.ts
+++ b/packages/server/modules/notifications/services/handlers/mentionedInComment.ts
@@ -23,7 +23,7 @@ import {
NotificationHandler,
MentionedInCommentMessage
} from '@/modules/notifications/helpers/types'
-import { getBaseUrl } from '@/modules/shared/helpers/envHelper'
+import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper'
import { MaybeFalsy, Nullable } from '@/modules/shared/helpers/typeHelper'
import { Knex } from 'knex'
@@ -151,7 +151,7 @@ function buildEmailTemplateParams(
objectId,
commitId
})
- const url = new URL(commentRoute, getBaseUrl()).toString()
+ const url = new URL(commentRoute, getFrontendOrigin()).toString()
return {
mjml: buildEmailTemplateMjml(state),
diff --git a/packages/server/modules/shared/helpers/envHelper.ts b/packages/server/modules/shared/helpers/envHelper.ts
index 05a52ed448..c279a695af 100644
--- a/packages/server/modules/shared/helpers/envHelper.ts
+++ b/packages/server/modules/shared/helpers/envHelper.ts
@@ -167,15 +167,6 @@ export function getMailchimpNewsletterIds() {
return { listId: process.env.MAILCHIMP_NEWSLETTER_LIST_ID }
}
-/**
- * Get app base url / canonical url / origin
- * TODO: Go over all getBaseUrl() usages and move them to getXOrigin() instead
- * @deprecated Since the new FE both apps (Server & FE) have different base urls, so use `getFrontendOrigin()` or `getServerOrigin()` instead
- */
-export function getBaseUrl() {
- return getServerOrigin()
-}
-
/**
* Whether notification job consumption & handling should be disabled
*/
@@ -241,7 +232,7 @@ export function getPort() {
* Check whether we're running an SSL server
*/
export function isSSLServer() {
- return /^https:\/\//.test(getBaseUrl())
+ return /^https:\/\//.test(getServerOrigin())
}
function parseUrlVar(value: string, name: string) {
diff --git a/packages/server/modules/workspaces/tests/helpers/creation.ts b/packages/server/modules/workspaces/tests/helpers/creation.ts
index 5fdee90a57..368011dd5a 100644
--- a/packages/server/modules/workspaces/tests/helpers/creation.ts
+++ b/packages/server/modules/workspaces/tests/helpers/creation.ts
@@ -234,6 +234,10 @@ export const assignToWorkspace = async (
user: BasicTestUser,
role?: WorkspaceRoles
) => {
+ if (!FF_WORKSPACES_MODULE_ENABLED) {
+ return // Just skip
+ }
+
const updateWorkspaceRole = updateWorkspaceRoleFactory({
getWorkspaceWithDomains: getWorkspaceWithDomainsFactory({ db }),
findVerifiedEmailsByUserId: findVerifiedEmailsByUserIdFactory({ db }),
@@ -253,6 +257,10 @@ export const unassignFromWorkspace = async (
workspace: BasicTestWorkspace,
user: BasicTestUser
) => {
+ if (!FF_WORKSPACES_MODULE_ENABLED) {
+ return // Just skip
+ }
+
const deleteWorkspaceRole = deleteWorkspaceRoleFactory({
getWorkspaceRoles: getWorkspaceRolesFactory({ db }),
deleteWorkspaceRole: dbDeleteWorkspaceRoleFactory({ db }),
@@ -274,7 +282,11 @@ export const unassignFromWorkspaces = async (
export const assignToWorkspaces = async (
pairs: [BasicTestWorkspace, BasicTestUser, MaybeNullOrUndefined][]
) => {
- await Promise.all(pairs.map((p) => assignToWorkspace(p[0], p[1], p[2] || undefined)))
+ // Serial execution is somehow faster with bigger batch sizes, assignToWorkspace
+ // may be quite heavy on the DB
+ for (const [workspace, user, role] of pairs) {
+ await assignToWorkspace(workspace, user, role || undefined)
+ }
}
export const createTestWorkspaces = async (
diff --git a/packages/server/modules/workspaces/tests/integration/subs.graph.spec.ts b/packages/server/modules/workspaces/tests/integration/subs.graph.spec.ts
index 36eeaaceea..f3beae25ed 100644
--- a/packages/server/modules/workspaces/tests/integration/subs.graph.spec.ts
+++ b/packages/server/modules/workspaces/tests/integration/subs.graph.spec.ts
@@ -41,7 +41,7 @@ import { captureCreatedInvite } from '@/test/speckle-helpers/inviteHelper'
import {
getMainTestRegionKey,
isMultiRegionTestMode,
- waitForRegionUser
+ waitForRegionUsers
} from '@/test/speckle-helpers/regions'
import { faker } from '@faker-js/faker'
import { expect } from 'chai'
@@ -102,13 +102,7 @@ describe('Workspace GQL Subscriptions', () => {
}
before(async () => {
- if (isMultiRegion) {
- await Promise.all([
- waitForRegionUser({ userId: me.id }),
- waitForRegionUser({ userId: otherGuy.id })
- ])
- }
-
+ await waitForRegionUsers([me, otherGuy])
await createTestWorkspace(myMainWorkspace, me, {
regionKey: isMultiRegion ? getMainTestRegionKey() : undefined
})
diff --git a/packages/server/test/authHelper.ts b/packages/server/test/authHelper.ts
index 3725630678..eb5994123b 100644
--- a/packages/server/test/authHelper.ts
+++ b/packages/server/test/authHelper.ts
@@ -33,8 +33,8 @@ import {
} from '@/modules/serverinvites/repositories/serverInvites'
import { finalizeInvitedServerRegistrationFactory } from '@/modules/serverinvites/services/processing'
import { faker } from '@faker-js/faker'
-import { ServerScope } from '@speckle/shared'
-import { kebabCase, omit } from 'lodash'
+import { ServerScope, wait } from '@speckle/shared'
+import { isArray, isNumber, kebabCase, omit, times } from 'lodash'
const getServerInfo = getServerInfoFactory({ db })
const findEmail = findEmailFactory({ db })
@@ -123,11 +123,58 @@ export async function createTestUser(userObj?: Partial) {
return baseUser
}
+export type CreateTestUsersParams = {
+ /**
+ * Number of users to create. Either this or `users` must be set
+ */
+ count?: number
+ /**
+ * The users to create. Either this or `count` must be set
+ */
+ users?: BasicTestUser[]
+ /**
+ * Optional mapper to run on each user obj before insertion
+ */
+ mapper?: (params: { user: BasicTestUser; idx: number }) => BasicTestUser
+ /**
+ * For pagination purposes it might be imperative that users are serially created to ensure different timestamps
+ * and avoid flaky pagination bugs
+ */
+ serial?: boolean
+}
+
/**
* Create multiple users for tests and update them to include their ID
*/
-export async function createTestUsers(userObjs: BasicTestUser[]) {
- await Promise.all(userObjs.map((o) => createTestUser(o)))
+export async function createTestUsers(
+ usersOrParams: BasicTestUser[] | CreateTestUsersParams
+) {
+ const params: CreateTestUsersParams = isArray(usersOrParams)
+ ? { users: usersOrParams }
+ : usersOrParams
+ if (!params.users && !isNumber(params.count)) {
+ throw new Error('Either count or users must be set')
+ }
+
+ let finalUsers = params.users
+ ? params.users
+ : times(params.count || 1, () => initTestUser({}))
+
+ const mapper = params.mapper
+ if (mapper) {
+ finalUsers = finalUsers.map((user, idx) => mapper({ user, idx }))
+ }
+
+ if (params.serial) {
+ const results: BasicTestUser[] = []
+ for (const finalUser of finalUsers) {
+ results.push(await createTestUser(finalUser))
+ await wait(1)
+ }
+ return results
+ } else {
+ return await Promise.all(finalUsers.map((o) => createTestUser(o)))
+ }
}
/**
diff --git a/packages/server/test/graphql/generated/graphql.ts b/packages/server/test/graphql/generated/graphql.ts
index 2aea701028..ba4e0fe528 100644
--- a/packages/server/test/graphql/generated/graphql.ts
+++ b/packages/server/test/graphql/generated/graphql.ts
@@ -2559,8 +2559,11 @@ export type Query = {
/**
* Search for users and return limited metadata about them, if you have the server:user role.
* The query looks for matches in name & email
+ * @deprecated Use users() instead.
*/
userSearch: UserSearchResultCollection;
+ /** Look up server users */
+ users: UserSearchResultCollection;
/** Validates the slug, to make sure it contains only valid characters and its not taken. */
validateWorkspaceSlug: Scalars['Boolean']['output'];
workspace: Workspace;
@@ -2702,6 +2705,11 @@ export type QueryUserSearchArgs = {
};
+export type QueryUsersArgs = {
+ input: UsersRetrievalInput;
+};
+
+
export type QueryValidateWorkspaceSlugArgs = {
slug: Scalars['String']['input'];
};
@@ -3874,6 +3882,18 @@ export type UserWorkspacesFilter = {
search?: InputMaybe;
};
+export type UsersRetrievalInput = {
+ cursor?: InputMaybe;
+ /** Only find users with directly matching emails */
+ emailOnly?: InputMaybe;
+ /** Limit defaults to 10 */
+ limit?: InputMaybe;
+ /** Only find users that are collaborators of the specified project */
+ projectId?: InputMaybe;
+ /** The query looks for matches in user name & email */
+ query: Scalars['String']['input'];
+};
+
export type Version = {
__typename?: 'Version';
authorUser?: Maybe;
@@ -4649,6 +4669,13 @@ export type OnBranchDeletedSubscriptionVariables = Exact<{
export type OnBranchDeletedSubscription = { __typename?: 'Subscription', branchDeleted?: Record | null };
+export type UsersRetrievalQueryVariables = Exact<{
+ input: UsersRetrievalInput;
+}>;
+
+
+export type UsersRetrievalQuery = { __typename?: 'Query', users: { __typename?: 'UserSearchResultCollection', cursor?: string | null, items: Array<{ __typename?: 'LimitedUser', id: string, name: string }> } };
+
export type BasicWorkspaceFragment = { __typename?: 'Workspace', id: string, name: string, slug: string, updatedAt: string, createdAt: string, role?: string | null };
export type BasicPendingWorkspaceCollaboratorFragment = { __typename?: 'PendingWorkspaceCollaborator', id: string, inviteId: string, workspaceId: string, workspaceName: string, title: string, role: string, token?: string | null, invitedBy: { __typename?: 'LimitedUser', id: string, name: string }, user?: { __typename?: 'LimitedUser', id: string, name: string } | null };
@@ -5469,6 +5496,7 @@ export const OnProjectModelsUpdatedDocument = {"kind":"Document","definitions":[
export const OnBranchCreatedDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"OnBranchCreated"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"streamId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"branchCreated"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"streamId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"streamId"}}}]}]}}]} as unknown as DocumentNode;
export const OnBranchUpdatedDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"OnBranchUpdated"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"streamId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"branchId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"branchUpdated"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"streamId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"streamId"}}},{"kind":"Argument","name":{"kind":"Name","value":"branchId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"branchId"}}}]}]}}]} as unknown as DocumentNode;
export const OnBranchDeletedDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"subscription","name":{"kind":"Name","value":"OnBranchDeleted"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"streamId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"branchDeleted"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"streamId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"streamId"}}}]}]}}]} as unknown as DocumentNode;
+export const UsersRetrievalDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"UsersRetrieval"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UsersRetrievalInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"users"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"cursor"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode;
export const CreateWorkspaceInviteDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateWorkspaceInvite"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"WorkspaceInviteCreateInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"workspaceMutations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"invites"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"create"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}},{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"BasicWorkspace"}},{"kind":"Field","name":{"kind":"Name","value":"invitedTeam"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"BasicPendingWorkspaceCollaborator"}}]}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BasicWorkspace"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Workspace"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BasicPendingWorkspaceCollaborator"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"PendingWorkspaceCollaborator"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"inviteId"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceName"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"invitedBy"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"token"}}]}}]} as unknown as DocumentNode;
export const BatchCreateWorkspaceInvitesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"BatchCreateWorkspaceInvites"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"WorkspaceInviteCreateInput"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"workspaceMutations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"invites"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"batchCreate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}},{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"BasicWorkspace"}},{"kind":"Field","name":{"kind":"Name","value":"invitedTeam"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"BasicPendingWorkspaceCollaborator"}}]}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BasicWorkspace"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Workspace"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BasicPendingWorkspaceCollaborator"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"PendingWorkspaceCollaborator"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"inviteId"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceName"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"invitedBy"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"token"}}]}}]} as unknown as DocumentNode;
export const GetWorkspaceWithTeamDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetWorkspaceWithTeam"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"workspace"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"BasicWorkspace"}},{"kind":"Field","name":{"kind":"Name","value":"invitedTeam"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"BasicPendingWorkspaceCollaborator"}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BasicWorkspace"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Workspace"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"role"}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"BasicPendingWorkspaceCollaborator"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"PendingWorkspaceCollaborator"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"inviteId"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceId"}},{"kind":"Field","name":{"kind":"Name","value":"workspaceName"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"invitedBy"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"token"}}]}}]} as unknown as DocumentNode;
diff --git a/packages/server/test/hooks.ts b/packages/server/test/hooks.ts
index 1e7f07ac65..ab4597e01e 100644
--- a/packages/server/test/hooks.ts
+++ b/packages/server/test/hooks.ts
@@ -77,6 +77,11 @@ export const getMainTestRegionKey = () => {
return key
}
+export const getMainTestRegionKeyIfMultiRegion = () => {
+ const isMultiRegionMode = isMultiRegionTestMode()
+ return isMultiRegionMode ? getMainTestRegionKey() : undefined
+}
+
export const getMainTestRegionClient = () => {
const key = getMainTestRegionKey()
const client = regionClients[key]
diff --git a/packages/server/test/speckle-helpers/regions.ts b/packages/server/test/speckle-helpers/regions.ts
index 065b6232da..c293d17f33 100644
--- a/packages/server/test/speckle-helpers/regions.ts
+++ b/packages/server/test/speckle-helpers/regions.ts
@@ -6,12 +6,14 @@ import {
isTestEnv,
shouldRunTestsInMultiregionMode
} from '@/modules/shared/helpers/envHelper'
+import { BasicTestUser } from '@/test/authHelper'
import {
getRegionKeys,
getMainTestRegionClient,
getMainTestRegionKey
} from '@/test/hooks'
import { wait } from '@speckle/shared'
+import { isString } from 'lodash'
/**
* Delete all regions entries that are not part of the main multi region mode
@@ -44,17 +46,24 @@ const waitForPredicate = async (params: {
/**
* Wait for user to exist in region db
*/
-export const waitForRegionUser = async (params: { userId: string }) => {
+export const waitForRegionUser = async (userOrId: string | BasicTestUser) => {
+ if (!isMultiRegionTestMode()) return
+
+ const userId = isString(userOrId) ? userOrId : userOrId.id
const client = getMainTestRegionClient()
const getUser = getUserFactory({ db: client })
await waitForPredicate({
predicate: async () => {
- const user = await getUser(params.userId)
+ const user = await getUser(userId)
return !!user
},
- errMsg: `User ${params.userId} not found in region db`
+ errMsg: `User ${userId} not found in region db`
})
}
+export const waitForRegionUsers = async (userOrIds: Array) => {
+ await Promise.all(userOrIds.map((userOrId) => waitForRegionUser(userOrId)))
+}
+
export { getMainTestRegionClient, getMainTestRegionKey }
diff --git a/packages/server/test/speckle-helpers/streamHelper.ts b/packages/server/test/speckle-helpers/streamHelper.ts
index 2e452629bd..5c24e049f5 100644
--- a/packages/server/test/speckle-helpers/streamHelper.ts
+++ b/packages/server/test/speckle-helpers/streamHelper.ts
@@ -1,6 +1,10 @@
import { db } from '@/db/knex'
import { saveActivityFactory } from '@/modules/activitystream/repositories'
-import { addStreamPermissionsRevokedActivityFactory } from '@/modules/activitystream/services/streamActivity'
+import {
+ addStreamInviteAcceptedActivityFactory,
+ addStreamPermissionsAddedActivityFactory,
+ addStreamPermissionsRevokedActivityFactory
+} from '@/modules/activitystream/services/streamActivity'
import { StreamAcl } from '@/modules/core/dbSchema'
import { ProjectsEmitter } from '@/modules/core/events/projectsEmitter'
import { StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types'
@@ -8,11 +12,14 @@ import { createBranchFactory } from '@/modules/core/repositories/branches'
import { getServerInfoFactory } from '@/modules/core/repositories/server'
import {
createStreamFactory,
+ getStreamCollaboratorsFactory,
getStreamFactory,
+ grantStreamPermissionsFactory,
revokeStreamPermissionsFactory
} from '@/modules/core/repositories/streams'
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
import {
+ addOrUpdateStreamCollaboratorFactory,
isStreamCollaboratorFactory,
removeStreamCollaboratorFactory,
validateStreamAccessFactory
@@ -38,7 +45,7 @@ import { createWorkspaceProjectFactory } from '@/modules/workspaces/services/pro
import { BasicTestUser } from '@/test/authHelper'
import { ProjectVisibility } from '@/test/graphql/generated/graphql'
import { faker } from '@faker-js/faker'
-import { ensureError } from '@speckle/shared'
+import { ensureError, Roles, StreamRoles } from '@speckle/shared'
import { omit } from 'lodash'
const getServerInfo = getServerInfoFactory({ db })
@@ -88,6 +95,20 @@ const removeStreamCollaborator = removeStreamCollaboratorFactory({
})
})
+const addOrUpdateStreamCollaborator = addOrUpdateStreamCollaboratorFactory({
+ validateStreamAccess,
+ getUser,
+ grantStreamPermissions: grantStreamPermissionsFactory({ db }),
+ addStreamInviteAcceptedActivity: addStreamInviteAcceptedActivityFactory({
+ saveActivity,
+ publish
+ }),
+ addStreamPermissionsAddedActivity: addStreamPermissionsAddedActivityFactory({
+ saveActivity,
+ publish
+ })
+})
+
export type BasicTestStream = {
name: string
isPublic: boolean
@@ -155,6 +176,68 @@ export async function leaveStream(streamObj: BasicTestStream, user: BasicTestUse
})
}
+export async function addToStream(
+ streamObj: BasicTestStream,
+ user: BasicTestUser,
+ role: StreamRoles,
+ options?: Partial<{
+ owner: BasicTestUser
+ }>
+) {
+ const { owner } = options || {}
+ let ownerId = owner?.id
+ if (!ownerId) {
+ const getStreamCollaborators = getStreamCollaboratorsFactory({ db })
+ const collaborators = await getStreamCollaborators(
+ streamObj.id,
+ Roles.Stream.Owner,
+ {
+ limit: 1
+ }
+ )
+ ownerId = collaborators[0]?.id
+ }
+ if (!ownerId) {
+ throw new Error('Attempted to add a collaborator to a stream without an owner')
+ }
+
+ await addOrUpdateStreamCollaborator(streamObj.id, user.id, role, ownerId, null)
+}
+
+export async function addAllToStream(
+ streamObj: BasicTestStream,
+ users: BasicTestUser[] | { user: BasicTestUser; role: StreamRoles }[],
+ options?: Partial<{
+ owner: BasicTestUser
+ }>
+) {
+ const { owner } = options || {}
+ let ownerId = owner?.id
+ if (!ownerId) {
+ const getStreamCollaborators = getStreamCollaboratorsFactory({ db })
+ const collaborators = await getStreamCollaborators(
+ streamObj.id,
+ Roles.Stream.Owner,
+ {
+ limit: 1
+ }
+ )
+ ownerId = collaborators[0]?.id
+ }
+ if (!ownerId) {
+ throw new Error('Attempted to add a collaborator to a stream without an owner')
+ }
+
+ const usersWithRoles = users.map((u) =>
+ 'user' in u ? u : { user: u, role: Roles.Stream.Contributor }
+ )
+ await Promise.all(
+ usersWithRoles.map(({ user, role }) =>
+ addOrUpdateStreamCollaborator(streamObj.id, user.id, role, ownerId!, null)
+ )
+ )
+}
+
/**
* Get the role user has for the specified stream
*/
diff --git a/packages/shared/src/core/helpers/batch.ts b/packages/shared/src/core/helpers/batch.ts
index 26d0d96986..9abee7203b 100644
--- a/packages/shared/src/core/helpers/batch.ts
+++ b/packages/shared/src/core/helpers/batch.ts
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/no-explicit-any */
import { range } from '#lodash'
/**
@@ -28,7 +29,7 @@ export async function batchAsyncOperations(
/**
* Optionally override the logger with a custom one
*/
- logger: (...args: unknown[]) => void
+ logger: (...args: any[]) => void
/**
* If set to true, the function won't collect all of the returns of each operation in an effort to reduce
diff --git a/yarn.lock b/yarn.lock
index 86ef2104ff..6b9a839592 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -12297,13 +12297,6 @@ __metadata:
languageName: node
linkType: hard
-"@linaria/core@npm:3.0.0-beta.13":
- version: 3.0.0-beta.13
- resolution: "@linaria/core@npm:3.0.0-beta.13"
- checksum: 10/9b4865187c26997769258206d7caf27c2093b68adf0424d39a5d72e1121e43b57c739ad91dda1bafcd428ab6c54b65ea79f61e880a1827f7b9251751878bddd4
- languageName: node
- linkType: hard
-
"@mailchimp/mailchimp_marketing@npm:^3.0.80":
version: 3.0.80
resolution: "@mailchimp/mailchimp_marketing@npm:3.0.80"
@@ -14533,44 +14526,10 @@ __metadata:
languageName: node
linkType: hard
-"@remirror/core-constants@npm:^2.0.0":
- version: 2.0.0
- resolution: "@remirror/core-constants@npm:2.0.0"
- dependencies:
- "@babel/runtime": "npm:^7.13.10"
- checksum: 10/8c5c2e42da66d9a9a8da91c1288d0be5038c56644e860c012203d00e9839cdd8e616b482b95a05dc7b9dcc9cd066923aab5458286e6f8b5aa688c4be73b7479b
- languageName: node
- linkType: hard
-
-"@remirror/core-helpers@npm:^2.0.1":
- version: 2.0.1
- resolution: "@remirror/core-helpers@npm:2.0.1"
- dependencies:
- "@babel/runtime": "npm:^7.13.10"
- "@linaria/core": "npm:3.0.0-beta.13"
- "@remirror/core-constants": "npm:^2.0.0"
- "@remirror/types": "npm:^1.0.0"
- "@types/object.omit": "npm:^3.0.0"
- "@types/object.pick": "npm:^1.3.1"
- "@types/throttle-debounce": "npm:^2.1.0"
- case-anything: "npm:^2.1.10"
- dash-get: "npm:^1.0.2"
- deepmerge: "npm:^4.2.2"
- fast-deep-equal: "npm:^3.1.3"
- make-error: "npm:^1.3.6"
- object.omit: "npm:^3.0.0"
- object.pick: "npm:^1.3.0"
- throttle-debounce: "npm:^3.0.1"
- checksum: 10/4737280aaa7e756f4b03a9fa9cff43a9fe52c1cee861a1652a3b18df2c8f16bd1dcb00a8e988ef9abc65d5fdfd3193f37b1bc4d6ead8d98d11e33777d06aa7da
- languageName: node
- linkType: hard
-
-"@remirror/types@npm:^1.0.0":
- version: 1.0.0
- resolution: "@remirror/types@npm:1.0.0"
- dependencies:
- type-fest: "npm:^2.0.0"
- checksum: 10/9514b67bbc576c9e80520b7644a105d3a627856d6b2fa6e2fa5b3204a7eb8426ba14d3fe7b9ea79fe7ec642ec429422f0f22007ef0a38fb67235b3c87168a751
+"@remirror/core-constants@npm:3.0.0":
+ version: 3.0.0
+ resolution: "@remirror/core-constants@npm:3.0.0"
+ checksum: 10/de15b1df099a7646739e5fb6bb55195618a8ac4fa938db7c719e867eefd72ebc5a05865591788ade449613141619cc1002fb6c0f824de4468dfefa951fbf19a2
languageName: node
linkType: hard
@@ -16774,22 +16733,22 @@ __metadata:
"@tailwindcss/line-clamp": "npm:^0.4.2"
"@tailwindcss/typography": "npm:^0.5.12"
"@testing-library/vue": "npm:^6.6.1"
- "@tiptap/core": "npm:2.0.0-beta.220"
- "@tiptap/extension-bold": "npm:2.0.0-beta.220"
- "@tiptap/extension-document": "npm:2.0.0-beta.220"
- "@tiptap/extension-hard-break": "npm:2.0.0-beta.220"
- "@tiptap/extension-history": "npm:2.0.0-beta.220"
- "@tiptap/extension-italic": "npm:2.0.0-beta.220"
- "@tiptap/extension-link": "npm:2.0.0-beta.220"
- "@tiptap/extension-mention": "npm:2.0.0-beta.220"
- "@tiptap/extension-paragraph": "npm:2.0.0-beta.220"
- "@tiptap/extension-placeholder": "npm:2.0.0-beta.220"
- "@tiptap/extension-strike": "npm:2.0.0-beta.220"
- "@tiptap/extension-text": "npm:2.0.0-beta.220"
- "@tiptap/extension-underline": "npm:2.0.0-beta.220"
- "@tiptap/pm": "npm:2.0.0-beta.220"
- "@tiptap/suggestion": "npm:2.0.0-beta.220"
- "@tiptap/vue-3": "npm:2.0.0-beta.220"
+ "@tiptap/core": "npm:2.10.3"
+ "@tiptap/extension-bold": "npm:2.10.3"
+ "@tiptap/extension-document": "npm:2.10.3"
+ "@tiptap/extension-hard-break": "npm:2.10.3"
+ "@tiptap/extension-history": "npm:2.10.3"
+ "@tiptap/extension-italic": "npm:2.10.3"
+ "@tiptap/extension-link": "npm:2.10.3"
+ "@tiptap/extension-mention": "npm:2.10.3"
+ "@tiptap/extension-paragraph": "npm:2.10.3"
+ "@tiptap/extension-placeholder": "npm:2.10.3"
+ "@tiptap/extension-strike": "npm:2.10.3"
+ "@tiptap/extension-text": "npm:2.10.3"
+ "@tiptap/extension-underline": "npm:2.10.3"
+ "@tiptap/pm": "npm:2.10.3"
+ "@tiptap/suggestion": "npm:2.10.3"
+ "@tiptap/vue-3": "npm:2.10.3"
"@tryghost/content-api": "npm:^1.11.21"
"@types/apollo-upload-client": "npm:^18.0.0"
"@types/dompurify": "npm:^3.0.2"
@@ -18975,12 +18934,12 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/core@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/core@npm:2.0.0-beta.220"
+"@tiptap/core@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/core@npm:2.10.3"
peerDependencies:
- "@tiptap/pm": ^2.0.0-beta.209
- checksum: 10/d18557536f8ddc3e9ff8d1a11ceda98648a40d1898aa5126d5b9df09f7f153b047bd954050984aab58119231960d655aab79cdbe8509bab8f7f6825ce85c20b6
+ "@tiptap/pm": ^2.7.0
+ checksum: 10/0a9f81046885b26180da293d9281cd4bbfb45d1e80539aaea279082fccb93b712e852aba1d2baebba777582acc1cf9e747e3b383715d44499a0c627fb8c40236
languageName: node
linkType: hard
@@ -19006,12 +18965,12 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-bold@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-bold@npm:2.0.0-beta.220"
+"@tiptap/extension-bold@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-bold@npm:2.10.3"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- checksum: 10/a47884dcb2261383ced64a2be342bb7d10b950bfee546f1ac3bc23de69d2320159f5e5659cb61d0802baa0c5f1322223f0c45641c85aa9bd42c20de8e534d882
+ "@tiptap/core": ^2.7.0
+ checksum: 10/810b717293eba8a6473fb13be100329d010d71eb338d5bb00d72811122bd4b9f16f6238d346ff52e3ffc3038717692c06d0365f4c623d05ff25ad532c5ce482d
languageName: node
linkType: hard
@@ -19024,19 +18983,6 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-bubble-menu@npm:^2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-bubble-menu@npm:2.0.0-beta.220"
- dependencies:
- lodash: "npm:^4.17.21"
- tippy.js: "npm:^6.3.7"
- peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- "@tiptap/pm": ^2.0.0-beta.209
- checksum: 10/ccb17e5d6729c506fc62831fba540aeffe114ad3a50475d76b60bdbb6eeab1130388bc5a28263809fcb734ebea052e9e7ca3b3fad58baecc7003444fa1072e25
- languageName: node
- linkType: hard
-
"@tiptap/extension-bubble-menu@npm:^2.0.0-beta.56":
version: 2.0.0-beta.56
resolution: "@tiptap/extension-bubble-menu@npm:2.0.0-beta.56"
@@ -19050,12 +18996,24 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-document@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-document@npm:2.0.0-beta.220"
+"@tiptap/extension-bubble-menu@npm:^2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-bubble-menu@npm:2.10.3"
+ dependencies:
+ tippy.js: "npm:^6.3.7"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- checksum: 10/fff651a6b45586fbad7ca0aea45b6d57f86263dd1d8839dabf55617b58f204ea8fcce6e9a6d9916b0e301b32d7aea9f1a7c10b4c167618b3a0c12b2f2bb5dfb6
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 10/c1c0d53277d7f91418a5b040744c34f75dcdae105c719637a02688cb19fc2aa515dcb2f21245762f4868de31a62d6c25b95c7d44284e6a2c9b1d21dbf7aea9a0
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-document@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-document@npm:2.10.3"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ checksum: 10/63d4a981981596ff97d825cf8e6c49c2af06b9cc87cb9817c4a7ba76894e71200c4f55bcdc1909dd3d12517e8f1473dcad04fc508865e846524bb269b66dae5c
languageName: node
linkType: hard
@@ -19068,18 +19026,6 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-floating-menu@npm:^2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-floating-menu@npm:2.0.0-beta.220"
- dependencies:
- tippy.js: "npm:^6.3.7"
- peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- "@tiptap/pm": ^2.0.0-beta.209
- checksum: 10/d9d280a232e552fe820b5f5cbf6011e1c275c37dea492e2bb92100d09a4a4c904b8eab68a5981b5d7435ec3be09094d22df9b0dcad6047486072042903922e34
- languageName: node
- linkType: hard
-
"@tiptap/extension-floating-menu@npm:^2.0.0-beta.51":
version: 2.0.0-beta.51
resolution: "@tiptap/extension-floating-menu@npm:2.0.0-beta.51"
@@ -19093,12 +19039,24 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-hard-break@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-hard-break@npm:2.0.0-beta.220"
+"@tiptap/extension-floating-menu@npm:^2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-floating-menu@npm:2.10.3"
+ dependencies:
+ tippy.js: "npm:^6.3.7"
+ peerDependencies:
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 10/120c4377e5a56a4389830f8bed0ded15eff3ba04e904e5a097c5cea6e11d96c54d9d9f7132c37e79f0ef037d41014af38636ade4eb25a560ffeb87d11f628eb4
+ languageName: node
+ linkType: hard
+
+"@tiptap/extension-hard-break@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-hard-break@npm:2.10.3"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- checksum: 10/b80a7d25fbec3a8948a622796d3ed5a4f459dd50527a27406153aa40b64190bffd53f65aa87d9382197aabcecf077e890e8cf03e7e10788cdf5f83cdb73719dd
+ "@tiptap/core": ^2.7.0
+ checksum: 10/f542cc89f27d063bae4ce13c0839d5ac72519434befc325367af4421191f77a33f7e599a6de5d5c18884ac6044d0155ed2edbf4c5378f26f188580257c3639a9
languageName: node
linkType: hard
@@ -19111,13 +19069,13 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-history@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-history@npm:2.0.0-beta.220"
+"@tiptap/extension-history@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-history@npm:2.10.3"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- "@tiptap/pm": ^2.0.0-beta.209
- checksum: 10/f9628f84d7c08c71170c19b559f2d690a1bf056bb620c6aebd7c2d44e70ba2e19f2b21776379606db9bd4fbbc6ce7c60661175e36de8d1dcf3b213b5d986ac5d
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 10/11b0be291144d59ccf3a8b3e86f443c5d16d0b5167294b8192fed1397e54ce1890695eff3129142d65b9f1462f6f4a4cde459b3dc2a70ca4291e71b2d8a136fa
languageName: node
linkType: hard
@@ -19133,12 +19091,12 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-italic@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-italic@npm:2.0.0-beta.220"
+"@tiptap/extension-italic@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-italic@npm:2.10.3"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- checksum: 10/21d72e7ec645367a058fbf032c4ab333831280cda97ff5da6f070bca6b0998c5a39b5b18392c9cef472f9fb0c1354440699bba7acd324a53ec46598914fe6f89
+ "@tiptap/core": ^2.7.0
+ checksum: 10/b0095308dcc9fbe29862be7ac21fb8f8a4edd5b403117368976af16704f9e452a2cc04eb22d3bb91298c5bc2a669b53a4d1e26fee333c5a20828017f2e2ac1ea
languageName: node
linkType: hard
@@ -19151,15 +19109,15 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-link@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-link@npm:2.0.0-beta.220"
+"@tiptap/extension-link@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-link@npm:2.10.3"
dependencies:
linkifyjs: "npm:^4.1.0"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- "@tiptap/pm": ^2.0.0-beta.209
- checksum: 10/344094d5d586eb41b1eb3e001a1ff72328dd32982865634ab4e05a246ba92ec15fe2f92f92c8d99be08e1feb07516dbc2636cea5e68714d56eed3c20989b0930
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 10/7ac1359c1241901af5868f339761907ed6bb1fb46e36d2bd8fb79227271e19e3639538971260f8927825db9a1eea038e0ad41511279a9034bf8f56c9f1918487
languageName: node
linkType: hard
@@ -19176,14 +19134,14 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-mention@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-mention@npm:2.0.0-beta.220"
+"@tiptap/extension-mention@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-mention@npm:2.10.3"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- "@tiptap/pm": ^2.0.0-beta.209
- "@tiptap/suggestion": ^2.0.0-beta.209
- checksum: 10/f618ddffc9c2e3fc7d4a98f4e4cd5ef103c47fbcf63e06f3c69a07ab943a6f59d91f32adc610601d8c4a8a5dff4f2ee9ac08d8b2eab48d3d08ce6de23fdbba65
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ "@tiptap/suggestion": ^2.7.0
+ checksum: 10/77816b90158b7ddaa954d161e753131f0e2b9e1683817161876910a9df31f7cdb427c8b73962d8dd1793a23328f8f2869f6c3f927df88ceb6fe94d4612f1c9f7
languageName: node
linkType: hard
@@ -19200,12 +19158,12 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-paragraph@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-paragraph@npm:2.0.0-beta.220"
+"@tiptap/extension-paragraph@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-paragraph@npm:2.10.3"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- checksum: 10/e0eb62b4f47877444e7bc3781d1a8187f83cf0a4d00ae2145f922a88097defc57663594d89e78995cb22d4d5087bfe83edad13a9181c2b2df392ffb2eaf1c6cb
+ "@tiptap/core": ^2.7.0
+ checksum: 10/907fd6287d1f281368e55fea904ee3e5f363d33292ec037ef7649a2ec07456c32bb02d555b8b5412ac09d0e237cf99f919e8572635ee2aa5d35d9cfe7d717162
languageName: node
linkType: hard
@@ -19218,13 +19176,13 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-placeholder@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-placeholder@npm:2.0.0-beta.220"
+"@tiptap/extension-placeholder@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-placeholder@npm:2.10.3"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- "@tiptap/pm": ^2.0.0-beta.209
- checksum: 10/d3674dad1f4f45678f27bb7c4b5a0fb48812ca9fadf009a77ac00a5df69953ba947e8de15f085530db531453d225c586414ce529742fc5ecb325b383efdaf541
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 10/aed0fa260069d4ef1bdd8b92581b0e3a83b7ff04fa1457c3ebcede68abfdd98c97288569b2b395b67bc60607cda7fdcba3fdbe432c7e439662ea7d3de732897b
languageName: node
linkType: hard
@@ -19241,12 +19199,12 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-strike@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-strike@npm:2.0.0-beta.220"
+"@tiptap/extension-strike@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-strike@npm:2.10.3"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- checksum: 10/d71b309c1b9e2364b31e97fef819553efb29312ed504ad56e23269deb43069990bd351621a9077059419d9987acaa26fc2eb7797180ab56e16d4d4e4da903c56
+ "@tiptap/core": ^2.7.0
+ checksum: 10/4830a5e3236051e4a75a056117bf91ef4a76a3a5cdc0806acf765ca949cbbbacb37a237b92a5156c3a0ad79086b1cebd729d49a39181fd9c1b8fd9eb37ce0e83
languageName: node
linkType: hard
@@ -19259,12 +19217,12 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-text@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-text@npm:2.0.0-beta.220"
+"@tiptap/extension-text@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-text@npm:2.10.3"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- checksum: 10/8b28d70eb8141ce13247f719c025e62189745be7229659ff0e57d9b796b5d042fe396cb8b0fee4bcdad82054d0d707f0e0616f0c9c263e6a22777d0c67269ba3
+ "@tiptap/core": ^2.7.0
+ checksum: 10/b56ce656fc7467ba81541bf4c7214a410a97193a0faebf9ba4fe52c3e4444ab63de8408550ea776546722d7b0d7d2f5da0551227e267f73c708c2435596f7161
languageName: node
linkType: hard
@@ -19277,12 +19235,12 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/extension-underline@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/extension-underline@npm:2.0.0-beta.220"
+"@tiptap/extension-underline@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/extension-underline@npm:2.10.3"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- checksum: 10/57f7bad2902638ee11bfcc83b24964b74379d61c00da27b07bcc4818ed5406581c96b2291ae12edd9de98def903a74cdb294206158d2d9647fd327e60f93e97c
+ "@tiptap/core": ^2.7.0
+ checksum: 10/ca5fb009f342162a1d2323cae577f2996c4a01e0f199b143074249b7912552ad7d0a97119aacce1f2664cb0cf91a3d1b9336fddc1e87d1a59f1abda9c95d3c9d
languageName: node
linkType: hard
@@ -19295,41 +19253,39 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/pm@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/pm@npm:2.0.0-beta.220"
- dependencies:
- prosemirror-changeset: "npm:^2.2.0"
- prosemirror-collab: "npm:^1.3.0"
- prosemirror-commands: "npm:^1.3.1"
- prosemirror-dropcursor: "npm:^1.5.0"
- prosemirror-gapcursor: "npm:^1.3.1"
- prosemirror-history: "npm:^1.3.0"
- prosemirror-inputrules: "npm:^1.2.0"
- prosemirror-keymap: "npm:^1.2.0"
- prosemirror-markdown: "npm:^1.10.1"
- prosemirror-menu: "npm:^1.2.1"
- prosemirror-model: "npm:^1.18.1"
- prosemirror-schema-basic: "npm:^1.2.0"
- prosemirror-schema-list: "npm:^1.2.2"
- prosemirror-state: "npm:^1.4.1"
- prosemirror-tables: "npm:^1.3.0"
- prosemirror-trailing-node: "npm:^2.0.2"
- prosemirror-transform: "npm:^1.7.0"
- prosemirror-view: "npm:^1.28.2"
- peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- checksum: 10/e5cce529d558ed4c6bab820446dae42a783fb8645560d75ada5114a722eb5819fc06d0038000830cf1e329906405acb7891b827d19d00b017e8b41afaa0a58d3
- languageName: node
- linkType: hard
-
-"@tiptap/suggestion@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/suggestion@npm:2.0.0-beta.220"
+"@tiptap/pm@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/pm@npm:2.10.3"
+ dependencies:
+ prosemirror-changeset: "npm:^2.2.1"
+ prosemirror-collab: "npm:^1.3.1"
+ prosemirror-commands: "npm:^1.6.2"
+ prosemirror-dropcursor: "npm:^1.8.1"
+ prosemirror-gapcursor: "npm:^1.3.2"
+ prosemirror-history: "npm:^1.4.1"
+ prosemirror-inputrules: "npm:^1.4.0"
+ prosemirror-keymap: "npm:^1.2.2"
+ prosemirror-markdown: "npm:^1.13.1"
+ prosemirror-menu: "npm:^1.2.4"
+ prosemirror-model: "npm:^1.23.0"
+ prosemirror-schema-basic: "npm:^1.2.3"
+ prosemirror-schema-list: "npm:^1.4.1"
+ prosemirror-state: "npm:^1.4.3"
+ prosemirror-tables: "npm:^1.6.1"
+ prosemirror-trailing-node: "npm:^3.0.0"
+ prosemirror-transform: "npm:^1.10.2"
+ prosemirror-view: "npm:^1.37.0"
+ checksum: 10/dd61ef7becf82a5a36fc404d58287f72a7076215c7331b4451c37f9968c0fc8772af2c7764ac3d08dfa9cd03d30ede450ec0d4d8a84924a13a1b7bd86288144d
+ languageName: node
+ linkType: hard
+
+"@tiptap/suggestion@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/suggestion@npm:2.10.3"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- "@tiptap/pm": ^2.0.0-beta.209
- checksum: 10/44df0e53440f50f75fc1b18facd53e905ec288e238f692839953da2a9dfe65ec46f3d24cd3596245b7fca4a39b7ce162677096a5e2d85e281fe2ce822acce231
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
+ checksum: 10/de08fa1388105e459a363a675b3331267ce19db742be28c435ab1ad87995c49286f5f9ee1de9361056271a932f34632bcbc036ae788f21f9cff590e6e37bac0a
languageName: node
linkType: hard
@@ -19360,17 +19316,17 @@ __metadata:
languageName: node
linkType: hard
-"@tiptap/vue-3@npm:2.0.0-beta.220":
- version: 2.0.0-beta.220
- resolution: "@tiptap/vue-3@npm:2.0.0-beta.220"
+"@tiptap/vue-3@npm:2.10.3":
+ version: 2.10.3
+ resolution: "@tiptap/vue-3@npm:2.10.3"
dependencies:
- "@tiptap/extension-bubble-menu": "npm:^2.0.0-beta.220"
- "@tiptap/extension-floating-menu": "npm:^2.0.0-beta.220"
+ "@tiptap/extension-bubble-menu": "npm:^2.10.3"
+ "@tiptap/extension-floating-menu": "npm:^2.10.3"
peerDependencies:
- "@tiptap/core": ^2.0.0-beta.209
- "@tiptap/pm": ^2.0.0-beta.209
+ "@tiptap/core": ^2.7.0
+ "@tiptap/pm": ^2.7.0
vue: ^3.0.0
- checksum: 10/acc86a1150681a64c02ce4a252a9d63e86a82d70b78c2eb37d1235ae9d939160ce96fb3da1f7af02c287e73ce64c8bf5d6c96147e3178a79a6f0dc653a2bf8f8
+ checksum: 10/f2180b7f286a3f9bdefec1c8565d7d72997542d113f5a837c701ad8e16b59c2d9e1e85ac16a8e0420269fbdf130f7fa29521d1bbc24bd831462c60b9adece436
languageName: node
linkType: hard
@@ -20147,6 +20103,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/linkify-it@npm:^5":
+ version: 5.0.0
+ resolution: "@types/linkify-it@npm:5.0.0"
+ checksum: 10/c3919044d4876f9d71d037e861745cd2485c95ac8c36a4fa67b132d4e60eb1d067e123cc7965c9cf5110eea351517d767f0d306af5e9147d6d0af87bc374ddcf
+ languageName: node
+ linkType: hard
+
"@types/lockfile@npm:^1.0.2":
version: 1.0.2
resolution: "@types/lockfile@npm:1.0.2"
@@ -20221,6 +20184,16 @@ __metadata:
languageName: node
linkType: hard
+"@types/markdown-it@npm:^14.0.0":
+ version: 14.1.2
+ resolution: "@types/markdown-it@npm:14.1.2"
+ dependencies:
+ "@types/linkify-it": "npm:^5"
+ "@types/mdurl": "npm:^2"
+ checksum: 10/ca2f239c8d59610b9f936fd40261a6ccf2fa1ae27a21816c031e5712542dcf9ee01e2fe29b31118df90716e11ade54e47d92a498e9b6488800e77ca8827255a2
+ languageName: node
+ linkType: hard
+
"@types/marked@npm:^5.0.0":
version: 5.0.2
resolution: "@types/marked@npm:5.0.2"
@@ -20228,6 +20201,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/mdurl@npm:^2":
+ version: 2.0.0
+ resolution: "@types/mdurl@npm:2.0.0"
+ checksum: 10/78746e96c655ceed63db06382da466fd52c7e9dc54d60b12973dfdd110cae06b9439c4b90e17bb8d4461109184b3ea9f3e9f96b3e4bf4aa9fe18b6ac35f283c8
+ languageName: node
+ linkType: hard
+
"@types/mdx@npm:^2.0.0":
version: 2.0.3
resolution: "@types/mdx@npm:2.0.3"
@@ -20447,20 +20427,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/object.omit@npm:^3.0.0":
- version: 3.0.0
- resolution: "@types/object.omit@npm:3.0.0"
- checksum: 10/bddcf21a89590b3129e3ae21007e70ccbc9b036a1479b78450546f2caf97223dfe13603c78a0af6a70a94afcd9d554bb7bb593f6362e04e3ca457991e0292397
- languageName: node
- linkType: hard
-
-"@types/object.pick@npm:^1.3.1":
- version: 1.3.2
- resolution: "@types/object.pick@npm:1.3.2"
- checksum: 10/71053ec6849142e934a1f2232e004f103e26a7df4782a83e83d976c74f1804c3ac29ed96223a6eef7b08f36ee019d1675f0d752fd79c9f444a080646d438c87d
- languageName: node
- linkType: hard
-
"@types/orderedmap@npm:*":
version: 1.0.0
resolution: "@types/orderedmap@npm:1.0.0"
@@ -20881,13 +20847,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/throttle-debounce@npm:^2.1.0":
- version: 2.1.0
- resolution: "@types/throttle-debounce@npm:2.1.0"
- checksum: 10/678dbd8a3c158e49f057a2e8898ba3c29e06cda95f6ca393a7a7785298d48758dc62c5c49090ec0bdea572a6d51a60a9ba5c95e17de2ca24d57a28de63ca25c7
- languageName: node
- linkType: hard
-
"@types/tough-cookie@npm:*":
version: 4.0.5
resolution: "@types/tough-cookie@npm:4.0.5"
@@ -26522,13 +26481,6 @@ __metadata:
languageName: node
linkType: hard
-"case-anything@npm:^2.1.10":
- version: 2.1.10
- resolution: "case-anything@npm:2.1.10"
- checksum: 10/cb5e3be2c77af23682930dcd11b3b9324e4ad908b6329b1b556de01f0e4731fc5c930a7d25f07c2d335a11bac6ee4cfc1a067669822d6b846d4e91c3611fd2db
- languageName: node
- linkType: hard
-
"caseless@npm:~0.12.0":
version: 0.12.0
resolution: "caseless@npm:0.12.0"
@@ -28750,13 +28702,6 @@ __metadata:
languageName: node
linkType: hard
-"dash-get@npm:^1.0.2":
- version: 1.0.2
- resolution: "dash-get@npm:1.0.2"
- checksum: 10/5aa0bc487f7c66ae25fc2ee1a8e85fbbd4da1b4616c7b386399813355b8464615ac73a239d3549ec299c23e06e1a0f30eb4fedc1e52e51ea2b9154ad6210deee
- languageName: node
- linkType: hard
-
"dashdash@npm:^1.12.0":
version: 1.14.1
resolution: "dashdash@npm:1.14.1"
@@ -30275,13 +30220,6 @@ __metadata:
languageName: node
linkType: hard
-"entities@npm:~3.0.1":
- version: 3.0.1
- resolution: "entities@npm:3.0.1"
- checksum: 10/3706e0292ea3f3679720b3d3b1ed6290b164aaeb11116691a922a3acea144503871e0de2170b47671c3b735549b8b7f4741d0d3c2987e8f985ccaa0dd3762eba
- languageName: node
- linkType: hard
-
"env-paths@npm:^2.2.0, env-paths@npm:^2.2.1":
version: 2.2.1
resolution: "env-paths@npm:2.2.1"
@@ -35432,15 +35370,6 @@ __metadata:
languageName: node
linkType: hard
-"is-extendable@npm:^1.0.0":
- version: 1.0.1
- resolution: "is-extendable@npm:1.0.1"
- dependencies:
- is-plain-object: "npm:^2.0.4"
- checksum: 10/db07bc1e9de6170de70eff7001943691f05b9d1547730b11be01c0ebfe67362912ba743cf4be6fd20a5e03b4180c685dad80b7c509fe717037e3eee30ad8e84f
- languageName: node
- linkType: hard
-
"is-extglob@npm:^2.1.1":
version: 2.1.1
resolution: "is-extglob@npm:2.1.1"
@@ -37892,12 +37821,12 @@ __metadata:
languageName: node
linkType: hard
-"linkify-it@npm:^4.0.1":
- version: 4.0.1
- resolution: "linkify-it@npm:4.0.1"
+"linkify-it@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "linkify-it@npm:5.0.0"
dependencies:
- uc.micro: "npm:^1.0.1"
- checksum: 10/d0a786d2e3f02f46b6f4a9b466af9eb936fb68e86b7cd305933d5457b12fdc53a4d0e0b697b02dc2e7d84a51d2425d719598bb7b47af7e01911e492e07a97957
+ uc.micro: "npm:^2.0.0"
+ checksum: 10/ef3b7609dda6ec0c0be8a7b879cea195f0d36387b0011660cd6711bba0ad82137f59b458b7e703ec74f11d88e7c1328e2ad9b855a8500c0ded67461a8c4519e6
languageName: node
linkType: hard
@@ -38828,7 +38757,7 @@ __metadata:
languageName: node
linkType: hard
-"make-error@npm:^1.1.1, make-error@npm:^1.3.6":
+"make-error@npm:^1.1.1":
version: 1.3.6
resolution: "make-error@npm:1.3.6"
checksum: 10/b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402
@@ -38915,18 +38844,19 @@ __metadata:
languageName: node
linkType: hard
-"markdown-it@npm:^13.0.1":
- version: 13.0.1
- resolution: "markdown-it@npm:13.0.1"
+"markdown-it@npm:^14.0.0":
+ version: 14.1.0
+ resolution: "markdown-it@npm:14.1.0"
dependencies:
argparse: "npm:^2.0.1"
- entities: "npm:~3.0.1"
- linkify-it: "npm:^4.0.1"
- mdurl: "npm:^1.0.1"
- uc.micro: "npm:^1.0.5"
+ entities: "npm:^4.4.0"
+ linkify-it: "npm:^5.0.0"
+ mdurl: "npm:^2.0.0"
+ punycode.js: "npm:^2.3.1"
+ uc.micro: "npm:^2.1.0"
bin:
- markdown-it: bin/markdown-it.js
- checksum: 10/ebe2cfd515c23d2d88692efac41e4070fcd2e932af15e5455e73e1a47f1f86298a4aacb2de3b5cc647a409bed5951739980c02dbf7d34f78e25554d8742751db
+ markdown-it: bin/markdown-it.mjs
+ checksum: 10/f34f921be178ed0607ba9e3e27c733642be445e9bb6b1dba88da7aafe8ba1bc5d2f1c3aa8f3fc33b49a902da4e4c08c2feadfafb290b8c7dda766208bb6483a9
languageName: node
linkType: hard
@@ -38998,10 +38928,10 @@ __metadata:
languageName: node
linkType: hard
-"mdurl@npm:^1.0.1":
- version: 1.0.1
- resolution: "mdurl@npm:1.0.1"
- checksum: 10/ada367d01c9e81d07328101f187d5bd8641b71f33eab075df4caed935a24fa679e625f07108801d8250a5e4a99e5cd4be7679957a11424a3aa3e740d2bb2d5cb
+"mdurl@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "mdurl@npm:2.0.0"
+ checksum: 10/1720349d4a53e401aa993241368e35c0ad13d816ad0b28388928c58ca9faa0cf755fa45f18ccbf64f4ce54a845a50ddce5c84e4016897b513096a68dac4b0158
languageName: node
linkType: hard
@@ -42085,24 +42015,6 @@ __metadata:
languageName: node
linkType: hard
-"object.omit@npm:^3.0.0":
- version: 3.0.0
- resolution: "object.omit@npm:3.0.0"
- dependencies:
- is-extendable: "npm:^1.0.0"
- checksum: 10/1feb3a5891e3892451e34d3b460caae06f2a8a829854eced577cd30654a2ed37750e3d7f0d462e692b3b6623ad74777457c0ad32a9e622136b8171209d356890
- languageName: node
- linkType: hard
-
-"object.pick@npm:^1.3.0":
- version: 1.3.0
- resolution: "object.pick@npm:1.3.0"
- dependencies:
- isobject: "npm:^3.0.1"
- checksum: 10/92d7226a6b581d0d62694a5632b6a1594c81b3b5a4eb702a7662e0b012db532557067d6f773596c577f75322eba09cdca37ca01ea79b6b29e3e17365f15c615e
- languageName: node
- linkType: hard
-
"obuf@npm:^1.0.0, obuf@npm:^1.1.2":
version: 1.1.2
resolution: "obuf@npm:1.1.2"
@@ -45024,25 +44936,25 @@ __metadata:
languageName: node
linkType: hard
-"prosemirror-changeset@npm:^2.2.0":
- version: 2.2.0
- resolution: "prosemirror-changeset@npm:2.2.0"
+"prosemirror-changeset@npm:^2.2.1":
+ version: 2.2.1
+ resolution: "prosemirror-changeset@npm:2.2.1"
dependencies:
prosemirror-transform: "npm:^1.0.0"
- checksum: 10/ebf5e391b3b872ebd7a4c548e11cc7f669e05d3d8729c672c97d6c71c471e462a7e800cbd38abaa72c7807fd037949fc6e7b367e0103d1ed12b2e13c3c66ddf6
+ checksum: 10/39c70af95e2a9be8d414d546188656e5d6db4034e2640c887ff72c7ff8e638817ff061b5c08590e8ba8027b5b0c1954dc60b62d2d2a8e3a7b7d6a05453a283ad
languageName: node
linkType: hard
-"prosemirror-collab@npm:^1.3.0":
- version: 1.3.0
- resolution: "prosemirror-collab@npm:1.3.0"
+"prosemirror-collab@npm:^1.3.1":
+ version: 1.3.1
+ resolution: "prosemirror-collab@npm:1.3.1"
dependencies:
prosemirror-state: "npm:^1.0.0"
- checksum: 10/6f9959e0007483f894d2de3cd03034df55c3a617aa62481cd349e163aab80cd0c8ac6e91f9a45d5b61744e7f3843e78c494c3a244cadf6429738b3aecbf8a401
+ checksum: 10/6b1ccc52841fbb62a39ef0fb8da2d731381030609ea7a0ba7d533b1937d56fe4b91344e79c023e790bed5392efe9f917c41c8434e0a379dc1dc842ba83594e34
languageName: node
linkType: hard
-"prosemirror-commands@npm:^1.0.0, prosemirror-commands@npm:^1.3.1":
+"prosemirror-commands@npm:^1.0.0":
version: 1.5.1
resolution: "prosemirror-commands@npm:1.5.1"
dependencies:
@@ -45064,30 +44976,41 @@ __metadata:
languageName: node
linkType: hard
-"prosemirror-dropcursor@npm:^1.5.0":
- version: 1.7.1
- resolution: "prosemirror-dropcursor@npm:1.7.1"
+"prosemirror-commands@npm:^1.6.2":
+ version: 1.6.2
+ resolution: "prosemirror-commands@npm:1.6.2"
+ dependencies:
+ prosemirror-model: "npm:^1.0.0"
+ prosemirror-state: "npm:^1.0.0"
+ prosemirror-transform: "npm:^1.10.2"
+ checksum: 10/048422039a91dc1ba1a661698c110967a14744fb606ef958ca63f58e7efe4f64023ab63c4a5029ccef0159d0e2580224c158ce60a27323ea814989d6301dad16
+ languageName: node
+ linkType: hard
+
+"prosemirror-dropcursor@npm:^1.8.1":
+ version: 1.8.1
+ resolution: "prosemirror-dropcursor@npm:1.8.1"
dependencies:
prosemirror-state: "npm:^1.0.0"
prosemirror-transform: "npm:^1.1.0"
prosemirror-view: "npm:^1.1.0"
- checksum: 10/873381e776b211a37cc31407cadd0ef20c0b66ea6ea4fc5027f14c7c5aadea3aded49a516d7b1afb3c978a195720663361156adf5f4756d023d77baa226d275b
+ checksum: 10/a2584dfbbeed3d7f703c1f7f174396ebf85f29e4f31a43e08cb9c7596d6d0b82f1bc73d0bbcd7c25e421d875ef0dc7f0c9918287fffa5267b6c65e89659444d0
languageName: node
linkType: hard
-"prosemirror-gapcursor@npm:^1.3.1":
- version: 1.3.1
- resolution: "prosemirror-gapcursor@npm:1.3.1"
+"prosemirror-gapcursor@npm:^1.3.2":
+ version: 1.3.2
+ resolution: "prosemirror-gapcursor@npm:1.3.2"
dependencies:
prosemirror-keymap: "npm:^1.0.0"
prosemirror-model: "npm:^1.0.0"
prosemirror-state: "npm:^1.0.0"
prosemirror-view: "npm:^1.0.0"
- checksum: 10/658c0822bf10908626046ee38aba036030c5c03a6b3200440867135c5b77399e4902b48903128b7811e011ebe7aa6762126b9b58f04353d7e5eabcc95bcd1d3d
+ checksum: 10/8de9e9c0f7f69ae74a3189a86b3e8a2bd8dd5bd693c18efc5271ad4a4c6777092906c8ac7722ab5d1428de04b13404c676fddef54966ed3606b3040602eb1325
languageName: node
linkType: hard
-"prosemirror-history@npm:^1.0.0, prosemirror-history@npm:^1.2.0, prosemirror-history@npm:^1.3.0":
+"prosemirror-history@npm:^1.0.0, prosemirror-history@npm:^1.2.0":
version: 1.3.0
resolution: "prosemirror-history@npm:1.3.0"
dependencies:
@@ -45098,17 +45021,29 @@ __metadata:
languageName: node
linkType: hard
-"prosemirror-inputrules@npm:^1.2.0":
- version: 1.2.0
- resolution: "prosemirror-inputrules@npm:1.2.0"
+"prosemirror-history@npm:^1.4.1":
+ version: 1.4.1
+ resolution: "prosemirror-history@npm:1.4.1"
+ dependencies:
+ prosemirror-state: "npm:^1.2.2"
+ prosemirror-transform: "npm:^1.0.0"
+ prosemirror-view: "npm:^1.31.0"
+ rope-sequence: "npm:^1.3.0"
+ checksum: 10/7ac68fc8233dcd159bb15c2aaf542fd9aa0524b50523b24de6c8209b1f5eae9545f7fa82d584c93e68b1e910bcae5e07bee1085094aca4c565c607cf737c39b8
+ languageName: node
+ linkType: hard
+
+"prosemirror-inputrules@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "prosemirror-inputrules@npm:1.4.0"
dependencies:
prosemirror-state: "npm:^1.0.0"
prosemirror-transform: "npm:^1.0.0"
- checksum: 10/dfd10074001440d3650d49332abf7fafd4402b0ccdcfcdfe9bb650ccf42e9fca4c5f436a8c097e0be7b22957871d198af124dfe314668990e42b810d0c5e27be
+ checksum: 10/04453d06a4bb3540e3df254e46bcafd4faaf73cd72f4486a804af598a084ee9cddb9fedd23a09c34c79ed98182b151461f447e4f5920bdd7465327975c773bca
languageName: node
linkType: hard
-"prosemirror-keymap@npm:^1.0.0, prosemirror-keymap@npm:^1.1.2, prosemirror-keymap@npm:^1.2.0":
+"prosemirror-keymap@npm:^1.0.0, prosemirror-keymap@npm:^1.1.2":
version: 1.2.1
resolution: "prosemirror-keymap@npm:1.2.1"
dependencies:
@@ -45128,25 +45063,36 @@ __metadata:
languageName: node
linkType: hard
-"prosemirror-markdown@npm:^1.10.1":
- version: 1.10.1
- resolution: "prosemirror-markdown@npm:1.10.1"
+"prosemirror-keymap@npm:^1.2.2":
+ version: 1.2.2
+ resolution: "prosemirror-keymap@npm:1.2.2"
dependencies:
- markdown-it: "npm:^13.0.1"
- prosemirror-model: "npm:^1.0.0"
- checksum: 10/37b672cbb956d59737e492bf1f054278e9474932b5dd158bedc94e6e1f1492edb2d236f72f8a374c94edd517abcfd89cdfdf18694d88e05b66ae281260c3476b
+ prosemirror-state: "npm:^1.0.0"
+ w3c-keyname: "npm:^2.2.0"
+ checksum: 10/75a6db1a8f899918a25606fa5824ffe9dea9729b8fb4346854aa6f0e37a0f8bad40cc1b01eef1046ee442f76afc234c8eb2b1c50a03c8b6062f3cd348694b8be
languageName: node
linkType: hard
-"prosemirror-menu@npm:^1.2.1":
- version: 1.2.1
- resolution: "prosemirror-menu@npm:1.2.1"
+"prosemirror-markdown@npm:^1.13.1":
+ version: 1.13.1
+ resolution: "prosemirror-markdown@npm:1.13.1"
+ dependencies:
+ "@types/markdown-it": "npm:^14.0.0"
+ markdown-it: "npm:^14.0.0"
+ prosemirror-model: "npm:^1.20.0"
+ checksum: 10/91af650e17e92c1c911c8bbf7dd4c6d5ba56ee140b0fe493e4e4bab85de1121cece3736eeabb7f789ef2b40afd1f6abe870f908213ce1918fd590257a8932c6c
+ languageName: node
+ linkType: hard
+
+"prosemirror-menu@npm:^1.2.4":
+ version: 1.2.4
+ resolution: "prosemirror-menu@npm:1.2.4"
dependencies:
crelt: "npm:^1.0.0"
prosemirror-commands: "npm:^1.0.0"
prosemirror-history: "npm:^1.0.0"
prosemirror-state: "npm:^1.0.0"
- checksum: 10/6c9c8058159636b53d97594575ab30ceea6e6b91f4d437a7953a84f7f22aee2f3df511be36bfcd3023fb3598d9c353916d4a5dae5adee3d3b14ab156b30e202b
+ checksum: 10/1148419fd115e86d43096d1e7574fd657547ac8875ee34ae9a2056b15f3bcc6ca104aaa305cde5ff72f19d4c4cfc9989909271d6cd317549d749a15aa4c2e2a1
languageName: node
linkType: hard
@@ -45159,7 +45105,7 @@ __metadata:
languageName: node
linkType: hard
-"prosemirror-model@npm:^1.18.1, prosemirror-model@npm:^1.19.0, prosemirror-model@npm:^1.8.1":
+"prosemirror-model@npm:^1.19.0, prosemirror-model@npm:^1.8.1":
version: 1.19.0
resolution: "prosemirror-model@npm:1.19.0"
dependencies:
@@ -45168,12 +45114,21 @@ __metadata:
languageName: node
linkType: hard
-"prosemirror-schema-basic@npm:^1.2.0":
- version: 1.2.1
- resolution: "prosemirror-schema-basic@npm:1.2.1"
+"prosemirror-model@npm:^1.20.0, prosemirror-model@npm:^1.21.0, prosemirror-model@npm:^1.23.0":
+ version: 1.24.0
+ resolution: "prosemirror-model@npm:1.24.0"
+ dependencies:
+ orderedmap: "npm:^2.0.0"
+ checksum: 10/ce5e2e9b3aa5d5bfe5bc4090dd7113df34bd037546465305023bddd9d2ede4450f1cd38717fac286e2dda41d240d419a80916e73ec22a67226171e8e319dc5ba
+ languageName: node
+ linkType: hard
+
+"prosemirror-schema-basic@npm:^1.2.3":
+ version: 1.2.3
+ resolution: "prosemirror-schema-basic@npm:1.2.3"
dependencies:
prosemirror-model: "npm:^1.19.0"
- checksum: 10/1fd59c47c1e05d037cd030acde4b406f62d8d5f87bd6cf51c877307ab02d61a39871da53cadd07746cbb8ca4fe87c317710d00caa39bbac16774d96fe42213cc
+ checksum: 10/af129408a6625707ff001077565d609b1d6b4e9393e86cc628c58bc2d995f5144921f83b6123db4210b48cf26c7899dd38a5de9fdc0c288a2d40650c8e018092
languageName: node
linkType: hard
@@ -45188,18 +45143,18 @@ __metadata:
languageName: node
linkType: hard
-"prosemirror-schema-list@npm:^1.2.2":
- version: 1.2.2
- resolution: "prosemirror-schema-list@npm:1.2.2"
+"prosemirror-schema-list@npm:^1.4.1":
+ version: 1.5.0
+ resolution: "prosemirror-schema-list@npm:1.5.0"
dependencies:
prosemirror-model: "npm:^1.0.0"
prosemirror-state: "npm:^1.0.0"
- prosemirror-transform: "npm:^1.0.0"
- checksum: 10/9957ffa98d384a348427ca20d762ec3c533ed53c56be1633fad8cbeb8acf35c362255bcfc4a587ae27828af9fa3199305227b9834f2f716b9216c232030ddb85
+ prosemirror-transform: "npm:^1.7.3"
+ checksum: 10/754c7ba13e356783642597b59838bd5ea43fa74f43aede80181d38d3cbd2086d8ea86c50d172b8c2a1f5cc8b8c6e1b7386082265628db4f941d27495102d65bc
languageName: node
linkType: hard
-"prosemirror-state@npm:^1.0.0, prosemirror-state@npm:^1.2.2, prosemirror-state@npm:^1.3.1, prosemirror-state@npm:^1.3.4, prosemirror-state@npm:^1.4.1":
+"prosemirror-state@npm:^1.0.0, prosemirror-state@npm:^1.2.2, prosemirror-state@npm:^1.3.1, prosemirror-state@npm:^1.3.4":
version: 1.4.2
resolution: "prosemirror-state@npm:1.4.2"
dependencies:
@@ -45210,32 +45165,41 @@ __metadata:
languageName: node
linkType: hard
-"prosemirror-tables@npm:^1.3.0":
- version: 1.3.2
- resolution: "prosemirror-tables@npm:1.3.2"
+"prosemirror-state@npm:^1.4.3":
+ version: 1.4.3
+ resolution: "prosemirror-state@npm:1.4.3"
+ dependencies:
+ prosemirror-model: "npm:^1.0.0"
+ prosemirror-transform: "npm:^1.0.0"
+ prosemirror-view: "npm:^1.27.0"
+ checksum: 10/57eb0cc7d7412b9d87430b5a9e489d60aed3a3eb9deffff4314b76ad6a5ae019618be658303796285877c9c535392b97b5a4d4d173485b0dd0403671ada9f2a1
+ languageName: node
+ linkType: hard
+
+"prosemirror-tables@npm:^1.6.1":
+ version: 1.6.1
+ resolution: "prosemirror-tables@npm:1.6.1"
dependencies:
prosemirror-keymap: "npm:^1.1.2"
prosemirror-model: "npm:^1.8.1"
prosemirror-state: "npm:^1.3.1"
prosemirror-transform: "npm:^1.2.1"
prosemirror-view: "npm:^1.13.3"
- checksum: 10/df7b7aaf813fae62c5cf72b098c715cde1a380df41e7dd9f6c9341df00b7bb84326984d643ec6f8c292aa0a0d88a8078b5d804e4cb44d77649fe80369fbfc050
+ checksum: 10/8ab343220594ba8e1d788d760c7234607b9ebc9d9fc44434828fb84ff990fac990ec6ce25708445e3203792d471b52b3dc1a73564863eef050fc805bc65abb22
languageName: node
linkType: hard
-"prosemirror-trailing-node@npm:^2.0.2":
- version: 2.0.3
- resolution: "prosemirror-trailing-node@npm:2.0.3"
+"prosemirror-trailing-node@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "prosemirror-trailing-node@npm:3.0.0"
dependencies:
- "@babel/runtime": "npm:^7.13.10"
- "@remirror/core-constants": "npm:^2.0.0"
- "@remirror/core-helpers": "npm:^2.0.1"
+ "@remirror/core-constants": "npm:3.0.0"
escape-string-regexp: "npm:^4.0.0"
peerDependencies:
- prosemirror-model: ^1
- prosemirror-state: ^1
- prosemirror-view: ^1
- checksum: 10/122a8d4f7a57f40c0abd9b87aa9b6f17f58e5ed654adcc16528dbee16b25cacc13baafedc2e0411b3619ba93742345b19d61cd7adf1df4c3e623338f1a264e72
+ prosemirror-model: ^1.22.1
+ prosemirror-state: ^1.4.2
+ prosemirror-view: ^1.33.8
+ checksum: 10/044b199b8001373c1bd4c1573876597840df89e66c1f02497a8bb4f2885ebe830faa9764e1269ed6c24bf2fde06ad5f40322afde648ae331d4663f531000adaa
languageName: node
linkType: hard
@@ -45248,7 +45212,16 @@ __metadata:
languageName: node
linkType: hard
-"prosemirror-transform@npm:^1.2.1, prosemirror-transform@npm:^1.7.0":
+"prosemirror-transform@npm:^1.10.2, prosemirror-transform@npm:^1.7.3":
+ version: 1.10.2
+ resolution: "prosemirror-transform@npm:1.10.2"
+ dependencies:
+ prosemirror-model: "npm:^1.21.0"
+ checksum: 10/be0feb6ec2a775cf00cfb251f7a261c919c8a4ba6d3217e21679631ee27a9f52757417a72301703e01b635513793019c9ad58752dd4a48929bf4a234dc094a53
+ languageName: node
+ linkType: hard
+
+"prosemirror-transform@npm:^1.2.1":
version: 1.7.1
resolution: "prosemirror-transform@npm:1.7.1"
dependencies:
@@ -45279,7 +45252,7 @@ __metadata:
languageName: node
linkType: hard
-"prosemirror-view@npm:^1.27.0, prosemirror-view@npm:^1.28.2":
+"prosemirror-view@npm:^1.27.0":
version: 1.30.0
resolution: "prosemirror-view@npm:1.30.0"
dependencies:
@@ -45290,6 +45263,17 @@ __metadata:
languageName: node
linkType: hard
+"prosemirror-view@npm:^1.31.0, prosemirror-view@npm:^1.37.0":
+ version: 1.37.0
+ resolution: "prosemirror-view@npm:1.37.0"
+ dependencies:
+ prosemirror-model: "npm:^1.20.0"
+ prosemirror-state: "npm:^1.0.0"
+ prosemirror-transform: "npm:^1.1.0"
+ checksum: 10/6455646ae3c9093fb754bf6e65a722682065f66d432cebe81c9d1fd84c1e8ccf106abc78a3a0cb52c1c5b34c8a69fde169de6639ddcb9381c8036c5fac83262d
+ languageName: node
+ linkType: hard
+
"proto-list@npm:~1.2.1":
version: 1.2.4
resolution: "proto-list@npm:1.2.4"
@@ -45631,6 +45615,13 @@ __metadata:
languageName: node
linkType: hard
+"punycode.js@npm:^2.3.1":
+ version: 2.3.1
+ resolution: "punycode.js@npm:2.3.1"
+ checksum: 10/f0e946d1edf063f9e3d30a32ca86d8ff90ed13ca40dad9c75d37510a04473340cfc98db23a905cc1e517b1e9deb0f6021dce6f422ace235c60d3c9ac47c5a16a
+ languageName: node
+ linkType: hard
+
"punycode@npm:^1.3.2":
version: 1.4.1
resolution: "punycode@npm:1.4.1"
@@ -50844,7 +50835,7 @@ __metadata:
languageName: node
linkType: hard
-"type-fest@npm:^2.0.0, type-fest@npm:^2.11.2, type-fest@npm:^2.12.2, type-fest@npm:^2.19.0, type-fest@npm:~2.19":
+"type-fest@npm:^2.11.2, type-fest@npm:^2.12.2, type-fest@npm:^2.19.0, type-fest@npm:~2.19":
version: 2.19.0
resolution: "type-fest@npm:2.19.0"
checksum: 10/7bf9e8fdf34f92c8bb364c0af14ca875fac7e0183f2985498b77be129dc1b3b1ad0a6b3281580f19e48c6105c037fb966ad9934520c69c6434d17fd0af4eed78
@@ -50983,10 +50974,10 @@ __metadata:
languageName: node
linkType: hard
-"uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5":
- version: 1.0.6
- resolution: "uc.micro@npm:1.0.6"
- checksum: 10/6898bb556319a38e9cf175e3628689347bd26fec15fc6b29fa38e0045af63075ff3fea4cf1fdba9db46c9f0cbf07f2348cd8844889dd31ebd288c29fe0d27e7a
+"uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "uc.micro@npm:2.1.0"
+ checksum: 10/37197358242eb9afe367502d4638ac8c5838b78792ab218eafe48287b0ed28aaca268ec0392cc5729f6c90266744de32c06ae938549aee041fc93b0f9672d6b2
languageName: node
linkType: hard