From 9e456a2d65343fd0c9467b8da907d00efa6b2ad4 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Thu, 27 Jul 2023 15:54:19 +0100 Subject: [PATCH 001/283] feat(dui3): adds documentChanged stuff back to tests page --- packages/dui3/app.vue | 4 ++-- packages/dui3/components/header/UserMenu.vue | 5 ++--- .../definitions/IBasicConnectorBinding.ts | 15 +++++++++++++++ packages/dui3/lib/common/generated/gql/gql.ts | 5 ----- .../dui3/lib/common/generated/gql/graphql.ts | 8 +------- packages/dui3/nuxt.config.ts | 4 +++- packages/dui3/pages/index.vue | 2 +- packages/dui3/pages/test.vue | 16 ++++++++++++++-- packages/dui3/store/documentInfo.ts | 4 +--- packages/dui3/store/uiConfig.ts | 3 +-- 10 files changed, 40 insertions(+), 26 deletions(-) diff --git a/packages/dui3/app.vue b/packages/dui3/app.vue index aaadc1d36f..84ada9a3e9 100644 --- a/packages/dui3/app.vue +++ b/packages/dui3/app.vue @@ -8,9 +8,9 @@ diff --git a/packages/dui3/pages/onboarding/v1.vue b/packages/dui3/pages/onboarding/v1.vue new file mode 100644 index 0000000000..a9ae39a45d --- /dev/null +++ b/packages/dui3/pages/onboarding/v1.vue @@ -0,0 +1,16 @@ + + diff --git a/packages/dui3/pages/test.vue b/packages/dui3/pages/test.vue index 818df12d34..d0c47d6ffe 100644 --- a/packages/dui3/pages/test.vue +++ b/packages/dui3/pages/test.vue @@ -5,8 +5,9 @@ Back home -
-

+

+

Document info

+

Current document info. This should change on document swaps, closure, opening, etc.

@@ -14,8 +15,19 @@
{{ documentInfo }}
-
-

+

+

Selection info

+

+ Current document info. This should change on document swaps, closure, opening, + etc. +

+
+
{{ selectionInfo }}
+
+
+
+

Binding tests

+

Do not expect these to save the day. They are just some minor sanity checks . @@ -54,11 +66,16 @@ import { ArrowLeftIcon } from '@heroicons/vue/20/solid' import { TestEventArgs } from '~/lib/bindings/definitions/ITestBinding' import { CheckIcon, MinusIcon, XMarkIcon } from '@heroicons/vue/20/solid' import { useDocumentInfoStore } from '~/store/documentInfo' +import { useSelectionStore } from '~/store/selection' + const { $testBindings } = useNuxtApp() const docInfoStore = useDocumentInfoStore() const { documentInfo } = storeToRefs(docInfoStore) +const selectionStore = useSelectionStore() +const { selectionInfo } = storeToRefs(selectionStore) + const tests = ref([ { name: 'Simple call with parameters', diff --git a/packages/dui3/plugins/00.bindings.ts b/packages/dui3/plugins/00.bindings.ts index b6df5669f4..efb9ef4675 100644 --- a/packages/dui3/plugins/00.bindings.ts +++ b/packages/dui3/plugins/00.bindings.ts @@ -21,6 +21,11 @@ import { MockedConfigBinding } from '~/lib/bindings/definitions/IConfigBinding' +import { + ISelectionBindingKey, + ISelectionBinding +} from '~/lib/bindings/definitions/ISelectionBinding' + // Makes TS happy declare let globalThis: Record & { CefSharp?: { BindObjectAsync: (name: string) => Promise } @@ -49,6 +54,11 @@ export default defineNuxtPlugin(async () => { // UI configuration bindings. const configBinding = await tryHoistBinding(IConfigBindingKey) + // Selection binding + const selectionBinding = await tryHoistBinding( + ISelectionBindingKey + ) + const showDevTools = () => { baseBinding.showDevTools() } @@ -63,6 +73,7 @@ export default defineNuxtPlugin(async () => { nonExistantBindings, baseBinding, configBinding, + selectionBinding, showDevTools, openUrl } diff --git a/packages/dui3/store/selection.ts b/packages/dui3/store/selection.ts new file mode 100644 index 0000000000..e7d7e682af --- /dev/null +++ b/packages/dui3/store/selection.ts @@ -0,0 +1,26 @@ +import { SelectionInfo } from '~/lib/bindings/definitions/ISelectionBinding' + +export const useSelectionStore = defineStore('selectionStore', () => { + const { $selectionBinding } = useNuxtApp() + const hasBinding = ref(!!$selectionBinding) + + const selectionInfo = ref({ + summary: 'Nothing selected', + objectIds: [] as string[] + }) + + $selectionBinding.on('setSelection', (selInfo) => { + selectionInfo.value = selInfo + }) + + const refreshSelectionFromHostApp = async () => { + if (!hasBinding.value) { + console.warn('No selection bidings present. This will do nothing!') + return + } + const selInfo = await $selectionBinding.getSelection() + selectionInfo.value = selInfo + } + + return { hasBinding, selectionInfo, refreshSelectionFromHostApp } +}) From 1e2a52072df52021db5f54c1ebec3bfef541c82b Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Mon, 31 Jul 2023 14:50:09 +0100 Subject: [PATCH 003/283] feat(dui3): WIP WIP WIP --- .../dui3/components/common/ModelSender.vue | 30 ++++ .../components/common/ProjectModelGroup.vue | 57 ++++++ .../dui3/lib/accounts/composables/setup.ts | 6 +- .../definitions/IBasicConnectorBinding.ts | 33 +++- packages/dui3/lib/common/generated/gql/gql.ts | 20 +++ .../dui3/lib/common/generated/gql/graphql.ts | 35 +++- packages/dui3/lib/graphql/composables.ts | 94 ++++++++++ .../dui3/lib/graphql/mutationsAndQueries.ts | 61 +++++++ packages/dui3/pages/index.vue | 25 +-- packages/dui3/pages/onboarding/v1.vue | 168 +++++++++++++++++- packages/dui3/pages/test.vue | 14 +- packages/dui3/store/documentState.ts | 52 ++++++ packages/dui3/store/selection.ts | 2 +- 13 files changed, 561 insertions(+), 36 deletions(-) create mode 100644 packages/dui3/components/common/ModelSender.vue create mode 100644 packages/dui3/components/common/ProjectModelGroup.vue create mode 100644 packages/dui3/lib/graphql/composables.ts create mode 100644 packages/dui3/lib/graphql/mutationsAndQueries.ts create mode 100644 packages/dui3/store/documentState.ts diff --git a/packages/dui3/components/common/ModelSender.vue b/packages/dui3/components/common/ModelSender.vue new file mode 100644 index 0000000000..b2609592b2 --- /dev/null +++ b/packages/dui3/components/common/ModelSender.vue @@ -0,0 +1,30 @@ + + diff --git a/packages/dui3/components/common/ProjectModelGroup.vue b/packages/dui3/components/common/ProjectModelGroup.vue new file mode 100644 index 0000000000..78d0e38c7e --- /dev/null +++ b/packages/dui3/components/common/ProjectModelGroup.vue @@ -0,0 +1,57 @@ + + diff --git a/packages/dui3/lib/accounts/composables/setup.ts b/packages/dui3/lib/accounts/composables/setup.ts index 97dcbfd9e7..d2a17c9661 100644 --- a/packages/dui3/lib/accounts/composables/setup.ts +++ b/packages/dui3/lib/accounts/composables/setup.ts @@ -8,7 +8,7 @@ export type DUIAccount = { /** account info coming from the host app */ accountInfo: Account /** the graphql client; a bit superflous */ - client?: ApolloClient + client: ApolloClient /** whether an intial serverinfo query succeeded. */ isValid: boolean } @@ -17,7 +17,7 @@ export type DUIAccountsState = { accounts: Ref validAccounts: ComputedRef refreshAccounts: () => Promise - defaultAccount: ComputedRef + defaultAccount: ComputedRef loading: Ref } @@ -97,7 +97,7 @@ export function useAccountsSetup(): DUIAccountsState { }) } // We test accounts here so we try to prevent the app from querying/using invalid accounts. - await testAccounts(newAccs) + void testAccounts(newAccs) // Once we have tested the new accounts, finally set them. accounts.value = newAccs loading.value = false diff --git a/packages/dui3/lib/bindings/definitions/IBasicConnectorBinding.ts b/packages/dui3/lib/bindings/definitions/IBasicConnectorBinding.ts index ca85c0274f..83b482d6f3 100644 --- a/packages/dui3/lib/bindings/definitions/IBasicConnectorBinding.ts +++ b/packages/dui3/lib/bindings/definitions/IBasicConnectorBinding.ts @@ -8,12 +8,17 @@ export const IBasicConnectorBindingKey = 'baseBinding' // Needs to be agreed between Frontend and Core export interface IBasicConnectorBinding extends IBinding { + // ACCOUNTS getAccounts: () => Promise + // VARIOUS getSourceApplicationName: () => Promise getSourceApplicationVersion: () => Promise getDocumentInfo: () => Promise - getDocumentModelState: () => Promise - saveDocumentModelState: (state: ModelState) => Promise + // DOC STATE + getDocumentState: () => Promise + saveDocumentState: (state: DocumentState) => Promise + addModelToDocumentState: (model: ModelCard) => Promise + removeModelFromDocumentState: (model: ModelCard) => Promise } export interface IBasicConnectorBindingHostEvents { @@ -21,17 +26,29 @@ export interface IBasicConnectorBindingHostEvents { documentChanged: () => void } -export type ModelState = { - modelCards: ModelCard[] +export type DocumentState = { + models: ModelCard[] } export type ModelCard = { - guid: string + id: string + modelId: string + projectId: string + accountId: string } -export type SendProgressArgs = { - id: string - etc: unknown +export type SenderCard = ModelCard & { + type: 'sender' + sendFilter: ISendFilter +} + +export interface ISendFilter { + name: string + summary: string +} + +export interface ISelectionFilter extends ISendFilter { + objectIds: string[] } // An almost 1-1 mapping of what we need from the Core accounts class. diff --git a/packages/dui3/lib/common/generated/gql/gql.ts b/packages/dui3/lib/common/generated/gql/gql.ts index f6a177038f..15193707ad 100644 --- a/packages/dui3/lib/common/generated/gql/gql.ts +++ b/packages/dui3/lib/common/generated/gql/gql.ts @@ -14,6 +14,10 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document- */ const documents = { "\n query AcccountTestQuery {\n serverInfo {\n version\n name\n company\n }\n }\n ": types.AcccountTestQueryDocument, + "\n mutation CreateModel($input: CreateModelInput!) {\n modelMutations {\n create(input: $input) {\n id\n name\n }\n }\n }\n": types.CreateModelDocument, + "\n mutation CreateProject($input: ProjectCreateInput) {\n projectMutations {\n create(input: $input) {\n id\n name\n }\n }\n }\n": types.CreateProjectDocument, + "\n query ProjectDetails($projectId: String!) {\n project(id: $projectId) {\n id\n role\n name\n team {\n user {\n avatar\n id\n name\n }\n }\n visibility\n }\n }\n": types.ProjectDetailsDocument, + "\n query ModelDetails($modelId: String!, $projectId: String!) {\n project(id: $projectId) {\n id\n model(id: $modelId) {\n id\n displayName\n versions {\n totalCount\n }\n author {\n id\n name\n avatar\n }\n }\n }\n }\n": types.ModelDetailsDocument, }; /** @@ -34,6 +38,22 @@ export function graphql(source: string): unknown; * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql(source: "\n query AcccountTestQuery {\n serverInfo {\n version\n name\n company\n }\n }\n "): (typeof documents)["\n query AcccountTestQuery {\n serverInfo {\n version\n name\n company\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 mutation CreateModel($input: CreateModelInput!) {\n modelMutations {\n create(input: $input) {\n id\n name\n }\n }\n }\n"): (typeof documents)["\n mutation CreateModel($input: CreateModelInput!) {\n modelMutations {\n create(input: $input) {\n id\n name\n }\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 mutation CreateProject($input: ProjectCreateInput) {\n projectMutations {\n create(input: $input) {\n id\n name\n }\n }\n }\n"): (typeof documents)["\n mutation CreateProject($input: ProjectCreateInput) {\n projectMutations {\n create(input: $input) {\n id\n name\n }\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 query ProjectDetails($projectId: String!) {\n project(id: $projectId) {\n id\n role\n name\n team {\n user {\n avatar\n id\n name\n }\n }\n visibility\n }\n }\n"): (typeof documents)["\n query ProjectDetails($projectId: String!) {\n project(id: $projectId) {\n id\n role\n name\n team {\n user {\n avatar\n id\n name\n }\n }\n visibility\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 query ModelDetails($modelId: String!, $projectId: String!) {\n project(id: $projectId) {\n id\n model(id: $modelId) {\n id\n displayName\n versions {\n totalCount\n }\n author {\n id\n name\n avatar\n }\n }\n }\n }\n"): (typeof documents)["\n query ModelDetails($modelId: String!, $projectId: String!) {\n project(id: $projectId) {\n id\n model(id: $modelId) {\n id\n displayName\n versions {\n totalCount\n }\n author {\n id\n name\n avatar\n }\n }\n }\n }\n"]; export function graphql(source: string) { return (documents as any)[source] ?? {}; diff --git a/packages/dui3/lib/common/generated/gql/graphql.ts b/packages/dui3/lib/common/generated/gql/graphql.ts index 33ffc7a588..f82db1b055 100644 --- a/packages/dui3/lib/common/generated/gql/graphql.ts +++ b/packages/dui3/lib/common/generated/gql/graphql.ts @@ -2633,5 +2633,38 @@ export type AcccountTestQueryQueryVariables = Exact<{ [key: string]: never; }>; export type AcccountTestQueryQuery = { __typename?: 'Query', serverInfo: { __typename?: 'ServerInfo', version?: string | null, name: string, company?: string | null } }; +export type CreateModelMutationVariables = Exact<{ + input: CreateModelInput; +}>; + + +export type CreateModelMutation = { __typename?: 'Mutation', modelMutations: { __typename?: 'ModelMutations', create: { __typename?: 'Model', id: string, name: string } } }; + +export type CreateProjectMutationVariables = Exact<{ + input?: InputMaybe; +}>; + + +export type CreateProjectMutation = { __typename?: 'Mutation', projectMutations: { __typename?: 'ProjectMutations', create: { __typename?: 'Project', id: string, name: string } } }; + +export type ProjectDetailsQueryVariables = Exact<{ + projectId: Scalars['String']; +}>; + + +export type ProjectDetailsQuery = { __typename?: 'Query', project: { __typename?: 'Project', id: string, role?: string | null, name: string, visibility: ProjectVisibility, team: Array<{ __typename?: 'ProjectCollaborator', user: { __typename?: 'LimitedUser', avatar?: string | null, id: string, name: string } }> } }; + +export type ModelDetailsQueryVariables = Exact<{ + modelId: Scalars['String']; + projectId: Scalars['String']; +}>; + + +export type ModelDetailsQuery = { __typename?: 'Query', project: { __typename?: 'Project', id: string, model: { __typename?: 'Model', id: string, displayName: string, versions: { __typename?: 'VersionCollection', totalCount: number }, author: { __typename?: 'LimitedUser', id: string, name: string, avatar?: string | null } } } }; + -export const AcccountTestQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"AcccountTestQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serverInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"version"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"company"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file +export const AcccountTestQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"AcccountTestQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serverInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"version"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"company"}}]}}]}}]} as unknown as DocumentNode; +export const CreateModelDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateModel"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CreateModelInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"modelMutations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"create"},"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":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; +export const CreateProjectDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateProject"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ProjectCreateInput"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"projectMutations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"create"},"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":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; +export const ProjectDetailsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ProjectDetails"},"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":"name"}},{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"avatar"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}}]}}]}}]} as unknown as DocumentNode; +export const ModelDetailsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ModelDetails"},"variableDefinitions":[{"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":"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":"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":"displayName"}},{"kind":"Field","name":{"kind":"Name","value":"versions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}}]}},{"kind":"Field","name":{"kind":"Name","value":"author"},"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"}}]}}]}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/packages/dui3/lib/graphql/composables.ts b/packages/dui3/lib/graphql/composables.ts new file mode 100644 index 0000000000..3f5eccfef8 --- /dev/null +++ b/packages/dui3/lib/graphql/composables.ts @@ -0,0 +1,94 @@ +import { ApolloClient } from '@apollo/client/core' +import { ProjectCreateInput } from '~~/lib/common/generated/gql/graphql' +import { + createProjectMutation, + createModelMutation, + projectDetailsQuery, + modelDetailsQuery +} from '~~/lib/graphql/mutationsAndQueries' +import { useAccountStore } from '~~/store/accounts' + +function getValidOrDefaultAccount( + clientId: string | undefined = undefined +): ApolloClient { + const { defaultAccount, validAccounts } = storeToRefs(useAccountStore()) + if (!clientId) return defaultAccount.value.client + const account = validAccounts.value.find((acc) => acc.accountInfo.id === clientId) + if (account) return account.client + + throw new Error(`Failed to find a valid account for id ${clientId}`) +} + +export function useCreateNewProject(clientId: string | undefined = undefined) { + return async (input: ProjectCreateInput) => { + const client = getValidOrDefaultAccount(clientId) + const res = await client.mutate({ + mutation: createProjectMutation, + variables: { input } + }) + + if (!res.data?.projectMutations.create.id) { + console.error(res.errors) + } else { + console.log('created project!') + // success! + } + + return res + } +} + +export function useCreateNewModel(clientId: string | undefined = undefined) { + return async (input: { name: string; projectId: string }) => { + const client = getValidOrDefaultAccount(clientId) + const res = await client.mutate({ + mutation: createModelMutation, + variables: { input } + }) + + if (!res.data?.modelMutations.create.id) { + console.error(res.errors) + } else { + console.log('created model!') + // success! + } + + return res + } +} + +export function useGetProjectDetails(clientId: string | undefined = undefined) { + return async (input: { projectId: string }) => { + const client = getValidOrDefaultAccount(clientId) + const res = await client.query({ + query: projectDetailsQuery, + variables: { projectId: input.projectId } + }) + + if (!res.data?.project.id) { + console.error(res.errors) + } else { + // success! + } + + return res.data.project + } +} + +export function useGetModelDetails(clientId: string | undefined = undefined) { + return async (input: { projectId: string; modelId: string }) => { + const client = getValidOrDefaultAccount(clientId) + const res = await client.query({ + query: modelDetailsQuery, + variables: { ...input } + }) + + if (!res.data?.project.id) { + console.error(res.errors) + } else { + // success! + } + + return res.data.project.model + } +} diff --git a/packages/dui3/lib/graphql/mutationsAndQueries.ts b/packages/dui3/lib/graphql/mutationsAndQueries.ts new file mode 100644 index 0000000000..8e35b54bb0 --- /dev/null +++ b/packages/dui3/lib/graphql/mutationsAndQueries.ts @@ -0,0 +1,61 @@ +import { graphql } from '~~/lib/common/generated/gql' + +export const createModelMutation = graphql(` + mutation CreateModel($input: CreateModelInput!) { + modelMutations { + create(input: $input) { + id + name + } + } + } +`) + +export const createProjectMutation = graphql(` + mutation CreateProject($input: ProjectCreateInput) { + projectMutations { + create(input: $input) { + id + name + } + } + } +`) + +export const projectDetailsQuery = graphql(` + query ProjectDetails($projectId: String!) { + project(id: $projectId) { + id + role + name + team { + user { + avatar + id + name + } + } + visibility + } + } +`) + +export const modelDetailsQuery = graphql(` + query ModelDetails($modelId: String!, $projectId: String!) { + project(id: $projectId) { + id + model(id: $modelId) { + id + displayName + versions { + totalCount + } + author { + id + name + avatar + } + } + } + } +`) diff --git a/packages/dui3/pages/index.vue b/packages/dui3/pages/index.vue index ab940d3f03..daaed902ab 100644 --- a/packages/dui3/pages/index.vue +++ b/packages/dui3/pages/index.vue @@ -1,14 +1,19 @@ - + diff --git a/packages/dui3/pages/onboarding/v1.vue b/packages/dui3/pages/onboarding/v1.vue index a9ae39a45d..8ba43d9469 100644 --- a/packages/dui3/pages/onboarding/v1.vue +++ b/packages/dui3/pages/onboarding/v1.vue @@ -1,16 +1,168 @@ diff --git a/packages/dui3/pages/test.vue b/packages/dui3/pages/test.vue index d0c47d6ffe..1a102d1b71 100644 --- a/packages/dui3/pages/test.vue +++ b/packages/dui3/pages/test.vue @@ -18,10 +18,15 @@

Selection info

- Current document info. This should change on document swaps, closure, opening, - etc. + Selection info. This should change in real time based on user selection, but + there's an imperative method too in case that's impossible.

-
+
+
+ No selection binding registered. +
{{ selectionInfo }}
@@ -74,8 +79,7 @@ const docInfoStore = useDocumentInfoStore() const { documentInfo } = storeToRefs(docInfoStore) const selectionStore = useSelectionStore() -const { selectionInfo } = storeToRefs(selectionStore) - +const { selectionInfo, hasBinding: hasSelectionBinding } = storeToRefs(selectionStore) const tests = ref([ { name: 'Simple call with parameters', diff --git a/packages/dui3/store/documentState.ts b/packages/dui3/store/documentState.ts new file mode 100644 index 0000000000..848c97fadb --- /dev/null +++ b/packages/dui3/store/documentState.ts @@ -0,0 +1,52 @@ +import { + DocumentState, + ModelCard +} from 'lib/bindings/definitions/IBasicConnectorBinding' + +export type ProjectModelGroup = { + projectId: string + accountId: string + models: ModelCard[] +} + +export const useDocumentStateStore = defineStore('documentStateStore', () => { + const { $baseBinding } = useNuxtApp() + const documentState = ref({ models: [] }) + + const models = computed(() => documentState.value.models) + + const projectModelGroups = computed(() => { + const projectModelGroups = [] as ProjectModelGroup[] + + for (const model of documentState.value.models) { + let project = projectModelGroups.find((p) => p.projectId === model.projectId) + if (!project) { + project = { projectId: model.projectId, accountId: model.accountId, models: [] } + projectModelGroups.push(project) + } + project.models.push(model) + } + + return projectModelGroups + }) + + const addModel = async (model: ModelCard) => { + await $baseBinding.addModelToDocumentState(model) + documentState.value.models.push(model) + } + + const removeModel = async (model: ModelCard) => { + await $baseBinding.removeModelFromDocumentState(model) + const index = documentState.value.models.findIndex((m) => m.id === model.id) + documentState.value.models.splice(index, 1) + } + + const init = async () => { + const docState = await $baseBinding.getDocumentState() + documentState.value = docState + } + + void init() + + return { addModel, removeModel, documentState, models, projectModelGroups } +}) diff --git a/packages/dui3/store/selection.ts b/packages/dui3/store/selection.ts index e7d7e682af..00943740c3 100644 --- a/packages/dui3/store/selection.ts +++ b/packages/dui3/store/selection.ts @@ -9,7 +9,7 @@ export const useSelectionStore = defineStore('selectionStore', () => { objectIds: [] as string[] }) - $selectionBinding.on('setSelection', (selInfo) => { + $selectionBinding?.on('setSelection', (selInfo) => { selectionInfo.value = selInfo }) From e4f38c767aa63e173281965ef3538719b786b393 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Wed, 2 Aug 2023 18:32:29 +0100 Subject: [PATCH 004/283] feat(dui3): document state & some extra filters + types --- .../dui3/components/common/ModelSender.vue | 27 +++++-- .../components/common/ProjectModelGroup.vue | 40 ++++++++-- .../dui3/components/filter/EditDialog.vue | 73 +++++++++++++++++++ packages/dui3/components/filter/Selection.vue | 50 +++++++++++++ .../definitions/IBasicConnectorBinding.ts | 48 +++++++++--- .../bindings/definitions/ISelectionBinding.ts | 2 +- packages/dui3/pages/index.vue | 40 +++++++++- packages/dui3/pages/onboarding/v1.vue | 33 ++++++--- packages/dui3/pages/test.vue | 48 ++++++++++++ packages/dui3/store/documentState.ts | 17 ++++- packages/dui3/store/sendFilter.ts | 34 +++++++++ 11 files changed, 374 insertions(+), 38 deletions(-) create mode 100644 packages/dui3/components/filter/EditDialog.vue create mode 100644 packages/dui3/components/filter/Selection.vue create mode 100644 packages/dui3/store/sendFilter.ts diff --git a/packages/dui3/components/common/ModelSender.vue b/packages/dui3/components/common/ModelSender.vue index b2609592b2..bb9c6e2c9e 100644 --- a/packages/dui3/components/common/ModelSender.vue +++ b/packages/dui3/components/common/ModelSender.vue @@ -7,24 +7,41 @@ {{ modelDetails.displayName }}
- {{ modelDetails.versions.totalCount }} - + +
+ + {{ model.sendFilter.name }} + + +
+ + +
diff --git a/packages/dui3/components/common/ProjectModelGroup.vue b/packages/dui3/components/common/ProjectModelGroup.vue index 78d0e38c7e..12aedc197b 100644 --- a/packages/dui3/components/common/ProjectModelGroup.vue +++ b/packages/dui3/components/common/ProjectModelGroup.vue @@ -7,32 +7,48 @@ @click="showModels = !showModels" >
{{ projectDetails.name }}
-
+ +
{{ projectDetails.role?.split(':').reverse()[0] }} - Project Members + +
+ +
-
+ +
+
+ +
diff --git a/packages/dui3/components/filter/EditDialog.vue b/packages/dui3/components/filter/EditDialog.vue new file mode 100644 index 0000000000..dc09581cd1 --- /dev/null +++ b/packages/dui3/components/filter/EditDialog.vue @@ -0,0 +1,73 @@ + + diff --git a/packages/dui3/components/filter/Selection.vue b/packages/dui3/components/filter/Selection.vue new file mode 100644 index 0000000000..1a95a0d34d --- /dev/null +++ b/packages/dui3/components/filter/Selection.vue @@ -0,0 +1,50 @@ + + diff --git a/packages/dui3/lib/bindings/definitions/IBasicConnectorBinding.ts b/packages/dui3/lib/bindings/definitions/IBasicConnectorBinding.ts index 83b482d6f3..e40813b896 100644 --- a/packages/dui3/lib/bindings/definitions/IBasicConnectorBinding.ts +++ b/packages/dui3/lib/bindings/definitions/IBasicConnectorBinding.ts @@ -10,45 +10,75 @@ export interface IBasicConnectorBinding extends IBinding { // ACCOUNTS getAccounts: () => Promise + // VARIOUS getSourceApplicationName: () => Promise getSourceApplicationVersion: () => Promise getDocumentInfo: () => Promise + // DOC STATE getDocumentState: () => Promise saveDocumentState: (state: DocumentState) => Promise - addModelToDocumentState: (model: ModelCard) => Promise - removeModelFromDocumentState: (model: ModelCard) => Promise + addModelToDocumentState: (model: IModelCard) => Promise + removeModelFromDocumentState: (model: IModelCard) => Promise + + // FILTERS AND TYPES + getSendFilters: () => Promise } export interface IBasicConnectorBindingHostEvents { displayToastNotification: (args: ToastInfo) => void documentChanged: () => void + filtersNeedRefresh: () => void +} + +interface IDiscriminatedObject { + typeDiscriminator: string } export type DocumentState = { - models: ModelCard[] + models: IModelCard[] } -export type ModelCard = { +// +// Model cards +// +export interface IModelCard extends IDiscriminatedObject { id: string modelId: string projectId: string accountId: string + lastLocalUpdate?: string } -export type SenderCard = ModelCard & { - type: 'sender' +export type ModelCardTypeDiscriminators = 'SenderModelCard' | 'ReceiverModelCard' + +export interface ISenderModelCard extends IModelCard { + typeDiscriminator: 'SenderModelCard' sendFilter: ISendFilter } -export interface ISendFilter { +export interface IReceiverModelCard extends IModelCard { + typeDiscriminator: 'ReceiverModelCard' + todo: string +} + +// +// Filters +// +export interface ISendFilter extends IDiscriminatedObject { name: string summary: string } -export interface ISelectionFilter extends ISendFilter { - objectIds: string[] +export interface IDirectSelectionSendFilter extends ISendFilter { + selectedObjectIds: string[] +} + +export interface IListSendFilter extends ISendFilter { + options: string[] + selectedOptions: string[] + singleSelection: boolean } // An almost 1-1 mapping of what we need from the Core accounts class. diff --git a/packages/dui3/lib/bindings/definitions/ISelectionBinding.ts b/packages/dui3/lib/bindings/definitions/ISelectionBinding.ts index dfc2e142d3..90bf3c9903 100644 --- a/packages/dui3/lib/bindings/definitions/ISelectionBinding.ts +++ b/packages/dui3/lib/bindings/definitions/ISelectionBinding.ts @@ -12,5 +12,5 @@ export interface ISelectionBindingHostEvents { export type SelectionInfo = { summary?: string - objectIds: string[] + selectedObjectIds: string[] } diff --git a/packages/dui3/pages/index.vue b/packages/dui3/pages/index.vue index daaed902ab..2559576439 100644 --- a/packages/dui3/pages/index.vue +++ b/packages/dui3/pages/index.vue @@ -1,11 +1,13 @@ diff --git a/packages/dui3/pages/onboarding/v1.vue b/packages/dui3/pages/onboarding/v1.vue index 8ba43d9469..6abb50f8a2 100644 --- a/packages/dui3/pages/onboarding/v1.vue +++ b/packages/dui3/pages/onboarding/v1.vue @@ -5,14 +5,17 @@
Let's publish our first model to Speckle.
-
+
First: select a part of your model.
- Great selection! {{ selectionInfo.summary }} + Great object selection! {{ selectionInfo.summary }}
Or continue with publishing @@ -28,7 +31,7 @@ :icon-right="ChevronRightIcon" @click="saveSelectionAndNext" > - Next + Let's publish!
@@ -39,6 +42,9 @@ model ?
+
+ Models in speckle are bla bla, bla bla. Lorem ipsum, painful amet +
project is this model part of?
+
+ Projects in speckle are bla bla, bla bla. Lorem ipsum, painful amet +
+
- Current state: + Debug Current state:
- selection info: {{ selectionFilterCopy?.summary }}
@@ -105,8 +115,8 @@ import { useCreateNewProject, useCreateNewModel } from '~~/lib/graphql/composabl import { useAccountStore } from '~~/store/accounts' import { useDocumentStateStore } from '~~/store/documentState' import { - SenderCard, - ISelectionFilter + ISenderModelCard, + ISendFilter } from 'lib/bindings/definitions/IBasicConnectorBinding' import { nanoid } from 'nanoid' @@ -125,7 +135,7 @@ const modelName = ref('') const projectName = ref('') watch(selectionInfo, (newVal) => { - hasSelectedSomethingNow.value = newVal?.objectIds?.length !== 0 + hasSelectedSomethingNow.value = newVal?.selectedObjectIds?.length !== 0 }) const saveSelectionAndNext = () => { @@ -145,16 +155,17 @@ const publish = async () => { const sendFilter = { name: 'Selection', + typeDiscriminator: 'RhinoSelectionFilter', ...selectionFilterCopy.value } - const modelCard: SenderCard = { + const modelCard: ISenderModelCard = { + typeDiscriminator: 'SenderModelCard', id: nanoid(), modelId: modelRes.data?.modelMutations.create.id as string, projectId: projectRes.data?.projectMutations.create.id as string, accountId: defaultAccount.value.accountInfo.id, - type: 'sender', - sendFilter: sendFilter as ISelectionFilter + sendFilter: sendFilter as ISendFilter } await addModel(modelCard) diff --git a/packages/dui3/pages/test.vue b/packages/dui3/pages/test.vue index 1a102d1b71..0f44f6dc8e 100644 --- a/packages/dui3/pages/test.vue +++ b/packages/dui3/pages/test.vue @@ -15,6 +15,30 @@
{{ documentInfo }}
+
+

Send Filters

+

Available send filters:

+
+
+
+ + {{ filter.name }} + + {{ filter.summary }} +
+
+ {{ (filter as IListSendFilter).options }} +
+
+
+
+
{{ sendFilters }}
+
+

Selection info

@@ -30,6 +54,20 @@

{{ selectionInfo }}
+
+

Document State

+

+ What state is in this document (currently just model cards). +

+
+
+ There are currently {{ documentStateStore.models.length }} model card(s). +
+
{{ documentStateStore.projectModelGroups }}
+
+

Binding tests

@@ -71,7 +109,10 @@ import { ArrowLeftIcon } from '@heroicons/vue/20/solid' import { TestEventArgs } from '~/lib/bindings/definitions/ITestBinding' import { CheckIcon, MinusIcon, XMarkIcon } from '@heroicons/vue/20/solid' import { useDocumentInfoStore } from '~/store/documentInfo' +import { useDocumentStateStore } from '~/store/documentState' import { useSelectionStore } from '~/store/selection' +import { useSendFilterStore } from '~/store/sendFilter' +import { IListSendFilter } from 'lib/bindings/definitions/IBasicConnectorBinding' const { $testBindings } = useNuxtApp() @@ -80,6 +121,13 @@ const { documentInfo } = storeToRefs(docInfoStore) const selectionStore = useSelectionStore() const { selectionInfo, hasBinding: hasSelectionBinding } = storeToRefs(selectionStore) + +const sendFilterStore = useSendFilterStore() +const { sendFilters } = storeToRefs(sendFilterStore) +await sendFilterStore.updateSendFilters() + +const documentStateStore = useDocumentStateStore() + const tests = ref([ { name: 'Simple call with parameters', diff --git a/packages/dui3/store/documentState.ts b/packages/dui3/store/documentState.ts index 848c97fadb..894f657759 100644 --- a/packages/dui3/store/documentState.ts +++ b/packages/dui3/store/documentState.ts @@ -1,12 +1,13 @@ import { DocumentState, - ModelCard + IModelCard, + ISendFilter } from 'lib/bindings/definitions/IBasicConnectorBinding' export type ProjectModelGroup = { projectId: string accountId: string - models: ModelCard[] + models: IModelCard[] } export const useDocumentStateStore = defineStore('documentStateStore', () => { @@ -30,12 +31,20 @@ export const useDocumentStateStore = defineStore('documentStateStore', () => { return projectModelGroups }) - const addModel = async (model: ModelCard) => { + const addModel = async (model: IModelCard) => { await $baseBinding.addModelToDocumentState(model) documentState.value.models.push(model) } - const removeModel = async (model: ModelCard) => { + const updateModel = async () => { + // TODO + } + + const updateModelFilter = async (modelId: string, filter: ISendFilter) => { + const model = documentState.value.models.find((m) => m.id === modelId) + } + + const removeModel = async (model: IModelCard) => { await $baseBinding.removeModelFromDocumentState(model) const index = documentState.value.models.findIndex((m) => m.id === model.id) documentState.value.models.splice(index, 1) diff --git a/packages/dui3/store/sendFilter.ts b/packages/dui3/store/sendFilter.ts new file mode 100644 index 0000000000..11bfee572b --- /dev/null +++ b/packages/dui3/store/sendFilter.ts @@ -0,0 +1,34 @@ +import { ISendFilter } from 'lib/bindings/definitions/IBasicConnectorBinding' + +export const useSendFilterStore = defineStore('sendFilterStore', () => { + const app = useNuxtApp() + const sendFilters = ref() + + const selectionFilter = computed(() => + sendFilters.value?.find((f) => f.name === 'Selection') + ) + const everythingFilter = computed(() => + sendFilters.value?.find((f) => f.name === 'Everything') + ) + + const updateSendFilters = async () => { + const res = await app.$baseBinding.getSendFilters() + console.log(res) + sendFilters.value = res + } + + app.$baseBinding.on('documentChanged', () => { + console.log('doc changed in filter store') + setTimeout(() => { + void updateSendFilters() + }, 500) + }) + + app.$baseBinding.on('filtersNeedRefresh', () => { + void updateSendFilters() + }) + + void updateSendFilters() + + return { sendFilters, selectionFilter, everythingFilter, updateSendFilters } +}) From e1ec09fdf6ecdf24c5854ba8a91c12e1a9030f04 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Sat, 5 Aug 2023 18:30:54 +0100 Subject: [PATCH 005/283] feat(dui3): cleans up and updates bindings --- packages/dui3/app.vue | 3 - .../dui3/components/common/ModelSender.vue | 4 +- .../components/common/ProjectModelGroup.vue | 14 +- .../dui3/components/filter/EditDialog.vue | 40 +++++- packages/dui3/components/filter/Selection.vue | 36 ++--- .../dui3/components/header/UserAccount.vue | 2 +- packages/dui3/components/header/UserMenu.vue | 11 +- .../dui3/lib/accounts/composables/setup.ts | 136 ------------------ .../bindings/definitions/IAccountBinding.ts | 24 ++++ .../definitions/IBasicConnectorBinding.ts | 42 ++---- packages/dui3/pages/test.vue | 10 +- packages/dui3/plugins/00.bindings.ts | 29 ++-- packages/dui3/store/accounts.ts | 95 +++++++++++- packages/dui3/store/documentState.ts | 28 +++- packages/dui3/store/selection.ts | 2 +- packages/dui3/store/sendFilter.ts | 3 +- 16 files changed, 241 insertions(+), 238 deletions(-) delete mode 100644 packages/dui3/lib/accounts/composables/setup.ts create mode 100644 packages/dui3/lib/bindings/definitions/IAccountBinding.ts diff --git a/packages/dui3/app.vue b/packages/dui3/app.vue index 37428cd95b..ac483f4dbb 100644 --- a/packages/dui3/app.vue +++ b/packages/dui3/app.vue @@ -6,14 +6,11 @@

diff --git a/packages/dui3/components/filter/Selection.vue b/packages/dui3/components/filter/Selection.vue index 1a95a0d34d..976314ce38 100644 --- a/packages/dui3/components/filter/Selection.vue +++ b/packages/dui3/components/filter/Selection.vue @@ -7,7 +7,7 @@ selectionStore.selectionInfo.selectedObjectIds?.length === 0 " > - Currently sending {{ filter.selectedObjectIds.length }} objects. Select some + Currently sending {{ filter.selectedObjectIds?.length }} objects. Select some objects to change what you send to this model.
@@ -16,20 +16,8 @@ {{ selectionStore.selectionInfo.summary }}
- - Save - - - - Save & Send - - + Save + Save & Send
@@ -39,12 +27,26 @@ import { IDirectSelectionSendFilter } from '~~/lib/bindings/definitions/IBasicCo import { useSendFilterStore } from '~~/store/sendFilter' import { useSelectionStore } from '~~/store/selection' +const emit = defineEmits<{ + (e: 'save', filter: IDirectSelectionSendFilter): void + (e: 'save-and-send', filter: IDirectSelectionSendFilter): void +}>() + const sendFilterStore = useSendFilterStore() -const { sendFilters } = storeToRefs(sendFilterStore) +const { selectionFilter } = storeToRefs(sendFilterStore) const selectionStore = useSelectionStore() -const props = defineProps<{ +defineProps<{ filter: IDirectSelectionSendFilter }>() + +const save = (andSend = false) => { + const filter = { ...selectionFilter.value } as IDirectSelectionSendFilter + filter.selectedObjectIds = selectionStore.selectionInfo.selectedObjectIds + filter.summary = selectionStore.selectionInfo.summary as string + + if (andSend) return emit('save-and-send', filter) + emit('save', filter) +} diff --git a/packages/dui3/components/header/UserAccount.vue b/packages/dui3/components/header/UserAccount.vue index 9e0608bfb5..c7f777234a 100644 --- a/packages/dui3/components/header/UserAccount.vue +++ b/packages/dui3/components/header/UserAccount.vue @@ -26,7 +26,7 @@ diff --git a/packages/dui3/plugins/00.bindings.ts b/packages/dui3/plugins/00.bindings.ts index efb9ef4675..e129178523 100644 --- a/packages/dui3/plugins/00.bindings.ts +++ b/packages/dui3/plugins/00.bindings.ts @@ -9,6 +9,11 @@ import { MockedBaseBinding } from '~/lib/bindings/definitions/IBasicConnectorBinding' +import { + IAccountBinding, + IAccountBindingKey +} from '~/lib/bindings/definitions/IAccountBinding' + import { ITestBinding, ITestBindingKey, @@ -39,40 +44,46 @@ declare let globalThis: Record & { * strip or customize functionality from the ui itself. */ export default defineNuxtPlugin(async () => { + // Tries to register some non-existant bindings as a test. + const nonExistantBindings = await tryHoistBinding('nonExistantBindings') + // Registers some default test bindings. const testBindings = (await tryHoistBinding(ITestBindingKey)) || new MockedTestBinding() - // Tries to register some non-existant bindings. - const nonExistantBindings = await tryHoistBinding('nonExistantBindings') + // UI configuration bindings. + const configBinding = + (await tryHoistBinding(IConfigBindingKey)) || + new MockedConfigBinding() + + // Account bindings + const accountBinding = await tryHoistBinding(IAccountBindingKey) // Registers a set of default bindings. const baseBinding = (await tryHoistBinding(IBasicConnectorBindingKey)) || new MockedBaseBinding() - // UI configuration bindings. - const configBinding = await tryHoistBinding(IConfigBindingKey) - // Selection binding const selectionBinding = await tryHoistBinding( ISelectionBindingKey ) const showDevTools = () => { - baseBinding.showDevTools() + configBinding.showDevTools() } const openUrl = (url: string) => { - baseBinding.openUrl(url) + configBinding.openUrl(url) } return { provide: { - testBindings, nonExistantBindings, - baseBinding, + testBindings, configBinding, + accountBinding, + baseBinding, selectionBinding, showDevTools, openUrl diff --git a/packages/dui3/store/accounts.ts b/packages/dui3/store/accounts.ts index 16872ea9d3..b08cdb421d 100644 --- a/packages/dui3/store/accounts.ts +++ b/packages/dui3/store/accounts.ts @@ -1,10 +1,95 @@ import { defineStore } from 'pinia' -import { useInjectedAccounts } from '~/lib/accounts/composables/setup' +import { ApolloClient, gql } from '@apollo/client/core' +import { ApolloClients } from '@vue/apollo-composable' +import { resolveClientConfig } from '~/lib/core/configs/apollo' +import { Account } from '~/lib/bindings/definitions/IAccountBinding' + +export type DUIAccount = { + /** account info coming from the host app */ + accountInfo: Account + /** the graphql client; a bit superflous */ + client: ApolloClient + /** whether an intial serverinfo query succeeded. */ + isValid: boolean +} + +const accountTestQuery = gql` + query AcccountTestQuery { + serverInfo { + version + name + company + } + } +` -// NOTE: this store simply wraps around the injected accounts composable (for now) export const useAccountStore = defineStore('accountStore', () => { - const { accounts, refreshAccounts, defaultAccount, validAccounts, loading } = - useInjectedAccounts() + const app = useNuxtApp() + const { $accountBinding } = app + + const apolloClients = {} as Record> + const accounts = ref([]) + const isLoading = ref(false) + + const defaultAccount = computed(() => + accounts.value.find((acc) => acc.accountInfo.isDefault) + ) + + const testAccounts = async () => { + isLoading.value = true + + for (const acc of accounts.value) { + if (!acc.client) continue + try { + await acc.client.query({ query: accountTestQuery }) + acc.isValid = true + } catch (error) { + // TODO: properly dispose and kill this client. It's unclear how to do it. + acc.isValid = false + // NOTE: we do not want to delete the client, as we might want to "refresh" in + // case the user was not connected to the interweb. + // acc.client.disableNetworkFetches = true + // acc.client.stop() + // delete acc.client + } + } + isLoading.value = false + } + + const refreshAccounts = async () => { + isLoading.value = true + const accs = await $accountBinding.getAccounts() + const newAccs: DUIAccount[] = [] + for (const acc of accs) { + const existing = accounts.value.find((a) => a.accountInfo.id === acc.id) + if (existing) { + newAccs.push(existing as DUIAccount) + continue + } + + const client = new ApolloClient( + resolveClientConfig({ + httpEndpoint: new URL('/graphql', acc.serverInfo.url).href, + authToken: () => acc.token + }) + ) + apolloClients[acc.id] = client + newAccs.push({ + accountInfo: acc, + client, + isValid: true + }) + } + accounts.value = newAccs + isLoading.value = false + } + + watch(accounts, () => { + void testAccounts() + }) + + void refreshAccounts() - return { accounts, refreshAccounts, defaultAccount, validAccounts, loading } + app.vueApp.provide(ApolloClients, apolloClients) + return { isLoading, accounts, defaultAccount, refreshAccounts } }) diff --git a/packages/dui3/store/documentState.ts b/packages/dui3/store/documentState.ts index 894f657759..73b24467b9 100644 --- a/packages/dui3/store/documentState.ts +++ b/packages/dui3/store/documentState.ts @@ -1,6 +1,7 @@ import { DocumentState, IModelCard, + ISenderModelCard, ISendFilter } from 'lib/bindings/definitions/IBasicConnectorBinding' @@ -31,17 +32,25 @@ export const useDocumentStateStore = defineStore('documentStateStore', () => { return projectModelGroups }) + $baseBinding.on('documentChanged', () => { + setTimeout(async () => { + await init() + }, 500) // Rhino needs some time. + }) + const addModel = async (model: IModelCard) => { await $baseBinding.addModelToDocumentState(model) documentState.value.models.push(model) } - const updateModel = async () => { - // TODO - } - const updateModelFilter = async (modelId: string, filter: ISendFilter) => { - const model = documentState.value.models.find((m) => m.id === modelId) + const modelIndex = documentState.value.models.findIndex((m) => m.id === modelId) + // TODO: check index, correct type, etc + ;(documentState.value.models[modelIndex] as ISenderModelCard).sendFilter = filter + + await $baseBinding.updateModelInDocumentState( + documentState.value.models[modelIndex] + ) } const removeModel = async (model: IModelCard) => { @@ -57,5 +66,12 @@ export const useDocumentStateStore = defineStore('documentStateStore', () => { void init() - return { addModel, removeModel, documentState, models, projectModelGroups } + return { + addModel, + updateModelFilter, + removeModel, + documentState, + models, + projectModelGroups + } }) diff --git a/packages/dui3/store/selection.ts b/packages/dui3/store/selection.ts index 00943740c3..5e847333fb 100644 --- a/packages/dui3/store/selection.ts +++ b/packages/dui3/store/selection.ts @@ -6,7 +6,7 @@ export const useSelectionStore = defineStore('selectionStore', () => { const selectionInfo = ref({ summary: 'Nothing selected', - objectIds: [] as string[] + selectedObjectIds: [] as string[] }) $selectionBinding?.on('setSelection', (selInfo) => { diff --git a/packages/dui3/store/sendFilter.ts b/packages/dui3/store/sendFilter.ts index 11bfee572b..4f78a5ad2f 100644 --- a/packages/dui3/store/sendFilter.ts +++ b/packages/dui3/store/sendFilter.ts @@ -7,18 +7,17 @@ export const useSendFilterStore = defineStore('sendFilterStore', () => { const selectionFilter = computed(() => sendFilters.value?.find((f) => f.name === 'Selection') ) + const everythingFilter = computed(() => sendFilters.value?.find((f) => f.name === 'Everything') ) const updateSendFilters = async () => { const res = await app.$baseBinding.getSendFilters() - console.log(res) sendFilters.value = res } app.$baseBinding.on('documentChanged', () => { - console.log('doc changed in filter store') setTimeout(() => { void updateSendFilters() }, 500) From 4742115e77290b8ab97baeec02359f5c0dcc30a2 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Sun, 6 Aug 2023 18:38:52 +0100 Subject: [PATCH 006/283] feat(dui3): centralizes bindings --- .../dui3/components/common/ModelSender.vue | 4 +- .../components/common/ProjectModelGroup.vue | 24 ++-- .../dui3/components/filter/EditDialog.vue | 28 ++--- packages/dui3/components/filter/Selection.vue | 8 +- packages/dui3/components/user/Avatar.vue | 2 +- .../definitions/IBasicConnectorBinding.ts | 24 +--- .../lib/bindings/definitions/ISendBinding.ts | 34 ++++++ .../dui3/lib/bindings/definitions/common.ts | 29 +++++ packages/dui3/lib/common/generated/gql/gql.ts | 5 - .../dui3/lib/common/generated/gql/graphql.ts | 6 - packages/dui3/lib/graphql/composables.ts | 4 +- packages/dui3/pages/index.vue | 44 +------- packages/dui3/pages/onboarding/v1.vue | 10 +- packages/dui3/pages/test.vue | 32 +++--- packages/dui3/plugins/00.bindings.ts | 27 +++-- packages/dui3/store/documentState.ts | 5 +- packages/dui3/store/hostApp.ts | 105 ++++++++++++++++++ 17 files changed, 238 insertions(+), 153 deletions(-) create mode 100644 packages/dui3/lib/bindings/definitions/ISendBinding.ts create mode 100644 packages/dui3/lib/bindings/definitions/common.ts create mode 100644 packages/dui3/store/hostApp.ts diff --git a/packages/dui3/components/common/ModelSender.vue b/packages/dui3/components/common/ModelSender.vue index 45aabd3935..767a62a161 100644 --- a/packages/dui3/components/common/ModelSender.vue +++ b/packages/dui3/components/common/ModelSender.vue @@ -7,7 +7,6 @@ {{ modelDetails.displayName }} -
-
- diff --git a/packages/dui3/store/hostApp.ts b/packages/dui3/store/hostApp.ts index 56d5707afc..82d7e513bb 100644 --- a/packages/dui3/store/hostApp.ts +++ b/packages/dui3/store/hostApp.ts @@ -23,6 +23,7 @@ export type ProjectModelGroup = { export const useHostAppStore = defineStore('hostAppStore', () => { const app = useNuxtApp() + const hostAppName = ref() const documentInfo = ref() const documentModelStore = ref({ models: [] }) const projectModelGroups = computed(() => { @@ -93,6 +94,9 @@ export const useHostAppStore = defineStore('hostAppStore', () => { await app.$sendBinding.cancelSend(modelId) } + const getHostAppName = async () => + (hostAppName.value = await app.$baseBinding.getSourceApplicationName()) + const refreshDocumentInfo = async () => (documentInfo.value = await app.$baseBinding.getDocumentInfo()) @@ -146,8 +150,10 @@ export const useHostAppStore = defineStore('hostAppStore', () => { void refreshDocumentInfo() void refreshDocumentModelStore() void refreshSendFilters() + void getHostAppName() return { + hostAppName, documentInfo, projectModelGroups, sendFilters, From a9cc7855dfa8d60f5876538d6ad8701379bde482 Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Fri, 25 Aug 2023 01:58:21 +0300 Subject: [PATCH 022/283] WIP: receive --- packages/dui3/pages/onboarding/receive.vue | 76 +++++++++++++++++++--- 1 file changed, 67 insertions(+), 9 deletions(-) diff --git a/packages/dui3/pages/onboarding/receive.vue b/packages/dui3/pages/onboarding/receive.vue index 60132eeb61..aa96305538 100644 --- a/packages/dui3/pages/onboarding/receive.vue +++ b/packages/dui3/pages/onboarding/receive.vue @@ -3,18 +3,76 @@ class="flex flex-col items-center justify-center h-[calc(100vh-16rem)] px-4 space-y-2" >
{{ `Let's receive our first model to ${hostAppName}.` }}
-
{{ `Let's receive our first model to host app.` }}
+
+

Choose Speckle project

+

Choose a Speckle project and model which you want receive.

+
+ + +
+
+ Next +
+
- From 07297db8a55e4a48831f8cc2cdc3d6f93090d546 Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Tue, 29 Aug 2023 14:52:47 +0300 Subject: [PATCH 023/283] super wip for receive --- .../dui3/components/form/select/Projects.vue | 116 ++++++++++++++++++ packages/dui3/lib/common/generated/gql/gql.ts | 5 + .../dui3/lib/common/generated/gql/graphql.ts | 10 ++ packages/dui3/lib/form/select/types.ts | 2 + packages/dui3/lib/graphql/composables.ts | 21 +++- .../dui3/lib/graphql/mutationsAndQueries.ts | 13 ++ packages/dui3/pages/onboarding/receive.vue | 85 +++++++++++-- 7 files changed, 242 insertions(+), 10 deletions(-) create mode 100644 packages/dui3/components/form/select/Projects.vue create mode 100644 packages/dui3/lib/form/select/types.ts diff --git a/packages/dui3/components/form/select/Projects.vue b/packages/dui3/components/form/select/Projects.vue new file mode 100644 index 0000000000..452e990e78 --- /dev/null +++ b/packages/dui3/components/form/select/Projects.vue @@ -0,0 +1,116 @@ + + + diff --git a/packages/dui3/lib/common/generated/gql/gql.ts b/packages/dui3/lib/common/generated/gql/gql.ts index fd3c4e28c1..4f18d70724 100644 --- a/packages/dui3/lib/common/generated/gql/gql.ts +++ b/packages/dui3/lib/common/generated/gql/gql.ts @@ -17,6 +17,7 @@ const documents = { "\n mutation CreateVersion($input: VersionCreateInput!) {\n versionMutations {\n create(input: $input) {\n id\n message\n referencedObject\n }\n }\n }\n": types.CreateVersionDocument, "\n mutation CreateModel($input: CreateModelInput!) {\n modelMutations {\n create(input: $input) {\n id\n name\n }\n }\n }\n": types.CreateModelDocument, "\n mutation CreateProject($input: ProjectCreateInput) {\n projectMutations {\n create(input: $input) {\n id\n name\n }\n }\n }\n": types.CreateProjectDocument, + "\n query ProjectsList($query: String, $limit: Int, $cursor: String) {\n streams(query: $query, limit: $limit, cursor: $cursor) {\n totalCount\n cursor\n items {\n id\n name\n }\n }\n }\n": types.ProjectsListDocument, "\n query ProjectDetails($projectId: String!) {\n project(id: $projectId) {\n id\n role\n name\n team {\n user {\n avatar\n id\n name\n }\n }\n visibility\n }\n }\n": types.ProjectDetailsDocument, "\n query ModelDetails($modelId: String!, $projectId: String!) {\n project(id: $projectId) {\n id\n model(id: $modelId) {\n id\n displayName\n versions {\n totalCount\n }\n author {\n id\n name\n avatar\n }\n }\n }\n }\n": types.ModelDetailsDocument, }; @@ -51,6 +52,10 @@ export function graphql(source: "\n mutation CreateModel($input: CreateModelInp * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql(source: "\n mutation CreateProject($input: ProjectCreateInput) {\n projectMutations {\n create(input: $input) {\n id\n name\n }\n }\n }\n"): (typeof documents)["\n mutation CreateProject($input: ProjectCreateInput) {\n projectMutations {\n create(input: $input) {\n id\n name\n }\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 query ProjectsList($query: String, $limit: Int, $cursor: String) {\n streams(query: $query, limit: $limit, cursor: $cursor) {\n totalCount\n cursor\n items {\n id\n name\n }\n }\n }\n"): (typeof documents)["\n query ProjectsList($query: String, $limit: Int, $cursor: String) {\n streams(query: $query, limit: $limit, cursor: $cursor) {\n totalCount\n cursor\n items {\n id\n name\n }\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/dui3/lib/common/generated/gql/graphql.ts b/packages/dui3/lib/common/generated/gql/graphql.ts index 501ca6b719..60d3662b29 100644 --- a/packages/dui3/lib/common/generated/gql/graphql.ts +++ b/packages/dui3/lib/common/generated/gql/graphql.ts @@ -2746,6 +2746,15 @@ export type CreateProjectMutationVariables = Exact<{ export type CreateProjectMutation = { __typename?: 'Mutation', projectMutations: { __typename?: 'ProjectMutations', create: { __typename?: 'Project', id: string, name: string } } }; +export type ProjectsListQueryVariables = Exact<{ + query?: InputMaybe; + limit?: InputMaybe; + cursor?: InputMaybe; +}>; + + +export type ProjectsListQuery = { __typename?: 'Query', streams?: { __typename?: 'StreamCollection', totalCount: number, cursor?: string | null, items?: Array<{ __typename?: 'Stream', id: string, name: string }> | null } | null }; + export type ProjectDetailsQueryVariables = Exact<{ projectId: Scalars['String']; }>; @@ -2766,5 +2775,6 @@ export const CommitCreateDocument = {"kind":"Document","definitions":[{"kind":"O export const CreateVersionDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateVersion"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"VersionCreateInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"versionMutations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"create"},"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":"id"}},{"kind":"Field","name":{"kind":"Name","value":"message"}},{"kind":"Field","name":{"kind":"Name","value":"referencedObject"}}]}}]}}]}}]} as unknown as DocumentNode; export const CreateModelDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateModel"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CreateModelInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"modelMutations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"create"},"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":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; export const CreateProjectDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateProject"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ProjectCreateInput"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"projectMutations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"create"},"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":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; +export const ProjectsListDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ProjectsList"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"query"}},"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"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"streams"},"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"}}}],"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":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; export const ProjectDetailsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ProjectDetails"},"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":"name"}},{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"avatar"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"visibility"}}]}}]}}]} as unknown as DocumentNode; export const ModelDetailsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ModelDetails"},"variableDefinitions":[{"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":"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":"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":"displayName"}},{"kind":"Field","name":{"kind":"Name","value":"versions"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}}]}},{"kind":"Field","name":{"kind":"Name","value":"author"},"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"}}]}}]}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/packages/dui3/lib/form/select/types.ts b/packages/dui3/lib/form/select/types.ts new file mode 100644 index 0000000000..12577d016d --- /dev/null +++ b/packages/dui3/lib/form/select/types.ts @@ -0,0 +1,2 @@ +export type ProjectsSelectItemType = { id: string; name: string } +export type ModelsSelectItemType = { id: string; name: string } diff --git a/packages/dui3/lib/graphql/composables.ts b/packages/dui3/lib/graphql/composables.ts index 6a0bab4912..cfe52c9a11 100644 --- a/packages/dui3/lib/graphql/composables.ts +++ b/packages/dui3/lib/graphql/composables.ts @@ -10,7 +10,8 @@ import { createModelMutation, projectDetailsQuery, modelDetailsQuery, - createCommitMutation + createCommitMutation, + projectsListQuery } from '~~/lib/graphql/mutationsAndQueries' import { useAccountStore } from '~~/store/accounts' @@ -91,6 +92,24 @@ export function useCreateNewModel(clientId: string | undefined = undefined) { } } +export function useGetProjects(clientId: string | undefined = undefined) { + return async (query: string) => { + const client = getValidOrDefaultAccount(clientId) + const res = await client.query({ + query: projectsListQuery, + variables: { query } + }) + + if (!res.data) { + console.error(res.errors) + } else { + // success! + } + + return res.data?.streams?.items + } +} + export function useGetProjectDetails(clientId: string | undefined = undefined) { return async (input: { projectId: string }) => { const client = getValidOrDefaultAccount(clientId) diff --git a/packages/dui3/lib/graphql/mutationsAndQueries.ts b/packages/dui3/lib/graphql/mutationsAndQueries.ts index b519bc8e68..683ceb9134 100644 --- a/packages/dui3/lib/graphql/mutationsAndQueries.ts +++ b/packages/dui3/lib/graphql/mutationsAndQueries.ts @@ -40,6 +40,19 @@ export const createProjectMutation = graphql(` } `) +export const projectsListQuery = graphql(` + query ProjectsList($query: String, $limit: Int, $cursor: String) { + streams(query: $query, limit: $limit, cursor: $cursor) { + totalCount + cursor + items { + id + name + } + } + } +`) + export const projectDetailsQuery = graphql(` query ProjectDetails($projectId: String!) { project(id: $projectId) { diff --git a/packages/dui3/pages/onboarding/receive.vue b/packages/dui3/pages/onboarding/receive.vue index aa96305538..61db8e193e 100644 --- a/packages/dui3/pages/onboarding/receive.vue +++ b/packages/dui3/pages/onboarding/receive.vue @@ -7,25 +7,39 @@ class="flex flex-col justify-center space-y-4" @submit="onProjectModelSelected" > -

Choose Speckle project

Choose a Speckle project and model which you want receive.

+ > + + +
- Next + + Receive +
@@ -46,11 +67,31 @@ type ModelsSelectItemType = { id: string; name: string } import { useForm } from 'vee-validate' import { useHostAppStore } from '~~/store/hostApp' import { ValidationHelpers } from '@speckle/ui-components' +import { useGetProjects } from '~/lib/graphql/composables' +import { Nullable } from '@speckle/shared' const hostAppStore = useHostAppStore() const hostAppName = computed(() => hostAppStore.hostAppName) +type ItemType = ProjectsSelectItemType | ModelsSelectItemType +type ValueType = ItemType | ItemType[] | undefined + +const props = defineProps({ + projectValue: { + type: [Object, Array] as PropType, + default: undefined + }, + modelValue: { + type: [Object, Array] as PropType, + default: undefined + } +}) + +const selectProjectValue = computed(() => props.projectValue) +const selectModelValue = computed(() => props.modelValue) + const emit = defineEmits<{ + (e: 'update:modelValue', v: ValueType): void ( e: 'next', payload: { @@ -60,14 +101,40 @@ const emit = defineEmits<{ ): void }>() +const getProjects = useGetProjects() + +type ProjectsType = { + id: string | undefined + name: string | undefined +} + +type ModelsType = { + id: string | undefined + name: string | undefined +} + +const projects = ref() +const models = ref() + +const invokeProjectSearch = async (search: string) => { + const res = (await getProjects(search)) as ProjectsType[] + console.log(res) + projects.value = res + return projects.value || [] +} + +const invokeModelSearch = async (search: string) => { + const res = (await getProjects(search)) as ProjectsType[] + console.log(res) + projects.value = res + return projects.value || [] +} + const { handleSubmit, errors } = useForm<{ model: ProjectsSelectItemType project: ModelsSelectItemType }>() -const selectedProject = ref() -const selectedModel = ref() - const hasProjectFormErrors = computed(() => { return Object.keys(errors.value).length > 0 }) From 81a2835852ddfcd47f0b6ca5d2d3ea178fb5b297 Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Tue, 29 Aug 2023 22:41:46 +0300 Subject: [PATCH 024/283] WIP: Add select components for projects and models --- .../dui3/components/form/select/Models.vue | 127 ++++++++++++++++++ .../dui3/components/form/select/Projects.vue | 7 +- packages/dui3/lib/graphql/composables.ts | 21 ++- .../dui3/lib/graphql/mutationsAndQueries.ts | 15 +++ packages/dui3/package.json | 1 + packages/dui3/pages/onboarding/receive.vue | 104 +++----------- .../lib/common/generated/gql/graphql.ts | 20 +-- yarn.lock | 20 +++ 8 files changed, 213 insertions(+), 102 deletions(-) create mode 100644 packages/dui3/components/form/select/Models.vue diff --git a/packages/dui3/components/form/select/Models.vue b/packages/dui3/components/form/select/Models.vue new file mode 100644 index 0000000000..1440fff39e --- /dev/null +++ b/packages/dui3/components/form/select/Models.vue @@ -0,0 +1,127 @@ + + diff --git a/packages/dui3/components/form/select/Projects.vue b/packages/dui3/components/form/select/Projects.vue index 452e990e78..a610b29c15 100644 --- a/packages/dui3/components/form/select/Projects.vue +++ b/packages/dui3/components/form/select/Projects.vue @@ -1,11 +1,8 @@ From 9b49bdbe0b184936f3b9e2d7b6ac7f6262f6eb71 Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Wed, 13 Sep 2023 18:31:41 +0300 Subject: [PATCH 043/283] Extract common features like delete, notifications, progress from sender and receiver --- packages/dui3/components/common/ModelCard.vue | 103 ++++++++++++++++++ .../dui3/components/common/ModelSender.vue | 92 ++++++++-------- .../dui3/components/common/ModelSenderV2.vue | 71 ++++++++++++ .../components/common/ProjectModelGroup.vue | 13 ++- .../definitions/IBasicConnectorBinding.ts | 7 +- .../bindings/definitions/IReceiveBinding.ts | 4 +- .../lib/bindings/definitions/ISendBinding.ts | 8 +- packages/dui3/store/hostApp.ts | 10 +- 8 files changed, 249 insertions(+), 59 deletions(-) create mode 100644 packages/dui3/components/common/ModelCard.vue create mode 100644 packages/dui3/components/common/ModelSenderV2.vue diff --git a/packages/dui3/components/common/ModelCard.vue b/packages/dui3/components/common/ModelCard.vue new file mode 100644 index 0000000000..513766e76b --- /dev/null +++ b/packages/dui3/components/common/ModelCard.vue @@ -0,0 +1,103 @@ + + diff --git a/packages/dui3/components/common/ModelSender.vue b/packages/dui3/components/common/ModelSender.vue index 965a8b9582..b97ee81c9c 100644 --- a/packages/dui3/components/common/ModelSender.vue +++ b/packages/dui3/components/common/ModelSender.vue @@ -1,15 +1,56 @@ diff --git a/packages/dui3/components/common/ModelSenderV2.vue b/packages/dui3/components/common/ModelSenderV2.vue deleted file mode 100644 index 73693f0560..0000000000 --- a/packages/dui3/components/common/ModelSenderV2.vue +++ /dev/null @@ -1,71 +0,0 @@ - - diff --git a/packages/dui3/components/common/ProjectModelGroup.vue b/packages/dui3/components/common/ProjectModelGroup.vue index fc7423a136..38a34ed3a3 100644 --- a/packages/dui3/components/common/ProjectModelGroup.vue +++ b/packages/dui3/components/common/ProjectModelGroup.vue @@ -36,12 +36,13 @@
diff --git a/packages/dui3/components/form/select/Versions.vue b/packages/dui3/components/form/select/Versions.vue index 12d3cec95a..08d872da41 100644 --- a/packages/dui3/components/form/select/Versions.vue +++ b/packages/dui3/components/form/select/Versions.vue @@ -115,13 +115,12 @@ const getVersions = useGetModelVersions() const versions = ref() const invokeSearch = async () => { - if (!props.projectId) return [] + if (!props.projectId || !props.modelId) return [] const res = (await getVersions( props.projectId, props.modelId - )) as VersionsSelectItemType[] - console.log(res) + )) as unknown as VersionsSelectItemType[] versions.value = res return versions.value || [] } diff --git a/packages/dui3/lib/form/select/types.ts b/packages/dui3/lib/form/select/types.ts index c8e11f7de7..593868ca81 100644 --- a/packages/dui3/lib/form/select/types.ts +++ b/packages/dui3/lib/form/select/types.ts @@ -1,5 +1,5 @@ -export type ProjectsSelectItemType = { id: string; name: string } -export type ModelsSelectItemType = { id: string; name: string } +export type ProjectsSelectItemType = { id?: string; name: string } +export type ModelsSelectItemType = { id?: string; name: string } export type VersionsSelectItemType = { id: string message: string diff --git a/packages/dui3/pages/onboarding/receive.vue b/packages/dui3/pages/onboarding/receive.vue index 6f4ed266a5..cc361f6ce8 100644 --- a/packages/dui3/pages/onboarding/receive.vue +++ b/packages/dui3/pages/onboarding/receive.vue @@ -20,7 +20,7 @@ -
+
Let's publish our first model to Speckle.
Or continue with publishing - - the whole model. - + the whole model. This might take a bit longer.
-
- Back - - Let's publish! - -
-
- -
-
- What shall we call this - model - ? -
-
- Models in speckle are bla bla, bla bla. Lorem ipsum, painful amet -
-
- + -
-
- Back - - Next - -
-
- -
-
- What - project - is this model part of? -
-
- Projects in speckle are bla bla, bla bla. Lorem ipsum, painful amet -
- -
- -
-
- Back - - Publish - -
+
+ + Let's publish! + +
+
Debug Current state:
- selection info: {{ selectionFilterCopy?.summary }} -
- - model name: {{ modelName }} -
- - project name: {{ projectName }}
diff --git a/packages/dui3/plugins/00.bindings.ts b/packages/dui3/plugins/00.bindings.ts index 3dd2452ad9..a7d6ec7fbb 100644 --- a/packages/dui3/plugins/00.bindings.ts +++ b/packages/dui3/plugins/00.bindings.ts @@ -1,11 +1,12 @@ import { IRawBridge } from '~/lib/bridge/definitions' - import { GenericBridge } from '~/lib/bridge/generic-v2' import { SketchupBridge } from '~/lib/bridge/sketchup' +import { BaseBridge } from '~~/lib/bridge/base' import { IAccountBinding, - IAccountBindingKey + IAccountBindingKey, + MockedAccountBinding } from '~/lib/bindings/definitions/IAccountBinding' import { @@ -27,15 +28,21 @@ import { MockedBaseBinding } from '~/lib/bindings/definitions/IBasicConnectorBinding' -import { ISendBindingKey, ISendBinding } from '~/lib/bindings/definitions/ISendBinding' +import { + ISendBindingKey, + ISendBinding, + MockedSendBinding +} from '~/lib/bindings/definitions/ISendBinding' import { IReceiveBindingKey, - IReceiveBinding + IReceiveBinding, + MockedReceiveBinding } from '~/lib/bindings/definitions/IReceiveBinding' import { ISelectionBindingKey, - ISelectionBinding + ISelectionBinding, + MockedSelectionBinding } from '~/lib/bindings/definitions/ISelectionBinding' // Makes TS happy @@ -56,28 +63,33 @@ export default defineNuxtPlugin(async () => { // Registers some default test bindings. const testBindings = - (await tryHoistBinding(ITestBindingKey)) || new MockedTestBinding() - - // Actual bindings follow below. + (await tryHoistBinding(ITestBindingKey)) || + hoistMockBinding(new MockedTestBinding(), ITestBindingKey) + // Actual || mock bindings follow below. const configBinding = (await tryHoistBinding(IConfigBindingKey)) || - new MockedConfigBinding() + hoistMockBinding(new MockedConfigBinding(), IConfigBindingKey) const accountBinding = - (await tryHoistBinding(IAccountBindingKey)) || null + (await tryHoistBinding(IAccountBindingKey)) || + hoistMockBinding(new MockedAccountBinding(), IAccountBindingKey) const baseBinding = (await tryHoistBinding(IBasicConnectorBindingKey)) || - new MockedBaseBinding() + hoistMockBinding(new MockedBaseBinding(), IBasicConnectorBindingKey) - const sendBinding = await tryHoistBinding(ISendBindingKey) + const sendBinding = + (await tryHoistBinding(ISendBindingKey)) || + hoistMockBinding(new MockedSendBinding(), ISendBindingKey) - const receiveBinding = await tryHoistBinding(IReceiveBindingKey) + const receiveBinding = + (await tryHoistBinding(IReceiveBindingKey)) || + hoistMockBinding(new MockedReceiveBinding(), IReceiveBindingKey) - const selectionBinding = await tryHoistBinding( - ISelectionBindingKey - ) + const selectionBinding = + (await tryHoistBinding(ISelectionBindingKey)) || + hoistMockBinding(new MockedSelectionBinding(), ISelectionBindingKey) // Any binding implments these two methods below, we just choose one to // expose globally to the app. @@ -131,8 +143,24 @@ const tryHoistBinding = async (name: string) => { const res = await tempBridge?.create() if (res) bridge = tempBridge - if (!bridge) console.warn(`Failed to bind ${name} binding.`) + if (!bridge) { + console.warn(`Failed to bind ${name} binding.`) + return bridge as unknown as T + } globalThis[name] = bridge + console.log( + `%c✔ ${name} connector binding added succesfully.`, + 'color: green; font-weight: bold; font-size: small' + ) return bridge as unknown as T } + +const hoistMockBinding = (mockBinding: BaseBridge, name: string) => { + globalThis[name] = mockBinding + console.log( + `%c✔ Mocked ${name} binding added succesfully.`, + 'color: green; font-weight: bold; font-size: small' + ) + return mockBinding +} diff --git a/packages/dui3/store/accounts.ts b/packages/dui3/store/accounts.ts index b08cdb421d..76ebfa2909 100644 --- a/packages/dui3/store/accounts.ts +++ b/packages/dui3/store/accounts.ts @@ -66,7 +66,6 @@ export const useAccountStore = defineStore('accountStore', () => { newAccs.push(existing as DUIAccount) continue } - const client = new ApolloClient( resolveClientConfig({ httpEndpoint: new URL('/graphql', acc.serverInfo.url).href, diff --git a/packages/dui3/store/config.ts b/packages/dui3/store/config.ts new file mode 100644 index 0000000000..3ef51e3b49 --- /dev/null +++ b/packages/dui3/store/config.ts @@ -0,0 +1,98 @@ +import { + ConnectorConfig, + GlobalConfig, + UiConfig +} from 'lib/bindings/definitions/IConfigBinding' +import { useHostAppStore } from '~~/store/hostApp' + +export const useConfigStore = defineStore('configStore', () => { + const { $configBinding } = useNuxtApp() + const hostAppStore = useHostAppStore() + + const hasConfigBindings = ref(!!$configBinding) + + const config = ref() + + const globalConfig = ref({ + onboardingSkipped: false, + onboardings: {} + }) + + const connectorConfig = ref({ + hostApp: hostAppStore.hostAppName as string, + darkTheme: false, + onboardings: {} + }) + + watch( + connectorConfig, + async (newValue) => { + if (!newValue || !$configBinding) return + await $configBinding.updateConnectorConfig(newValue) + }, + { deep: true } + ) + watch( + globalConfig, + async (newValue) => { + if (!newValue || !$configBinding) return + await $configBinding.updateGlobalConfig(newValue) + }, + { deep: true } + ) + + const onboardings = computed(() => { + return { + ...globalConfig.value.onboardings, + ...connectorConfig.value.onboardings + } + }) + + const onboardingSkipped = computed(() => globalConfig.value.onboardingSkipped) + + const onboardingCompleted = computed(() => { + return Object.values(onboardings.value).every((o) => o.completed) + }) + + const skipOnboarding = () => { + globalConfig.value.onboardingSkipped = true + } + + const completeOnboarding = (id: string) => { + onboardings.value[id].completed = true + } + + const isDarkTheme = computed(() => { + return connectorConfig.value?.darkTheme + }) + + const toggleTheme = () => { + connectorConfig.value.darkTheme = !connectorConfig.value.darkTheme + } + + const isInitialized = ref(false) + + const init = async () => { + if (!$configBinding) return + const uiConfig = await $configBinding.getConfig() + config.value = uiConfig + globalConfig.value = uiConfig.global + connectorConfig.value = + uiConfig.connectors[hostAppStore.hostAppName?.toLowerCase() as string] + isInitialized.value = true + } + init() + + return { + isInitialized, + config, + hasConfigBindings, + isDarkTheme, + onboardings, + onboardingCompleted, + onboardingSkipped, + toggleTheme, + completeOnboarding, + skipOnboarding + } +}) diff --git a/packages/dui3/store/hostApp.ts b/packages/dui3/store/hostApp.ts index 0ab98d7d23..065623b11a 100644 --- a/packages/dui3/store/hostApp.ts +++ b/packages/dui3/store/hostApp.ts @@ -62,7 +62,7 @@ export const useHostAppStore = defineStore('hostAppStore', () => { const addModel = async (model: IModelCard) => { await app.$baseBinding.addModel(model) - documentModelStore.value.models.push(model) + documentModelStore.value.models = documentModelStore.value.models.concat([model]) } const highlightModel = async (modelId: string) => { diff --git a/packages/dui3/store/uiConfig.ts b/packages/dui3/store/uiConfig.ts deleted file mode 100644 index 99777bbbec..0000000000 --- a/packages/dui3/store/uiConfig.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Config } from 'lib/bindings/definitions/IConfigBinding' - -export const useUiConfigStore = defineStore('uiConfigStore', () => { - const { $configBinding } = useNuxtApp() - - const hasConfigBindings = ref(!!$configBinding) - const uiConfig = ref({ darkTheme: false }) - - watch( - uiConfig, - async (newValue) => { - if (!newValue || !$configBinding) return - await $configBinding.updateConfig(newValue) - }, - { deep: true } - ) - - const isDarkTheme = computed(() => { - return uiConfig.value?.darkTheme - }) - - const toggleTheme = () => { - uiConfig.value.darkTheme = !uiConfig.value.darkTheme - } - - const init = async () => { - if (!$configBinding) return - uiConfig.value = await $configBinding.getConfig() - } - void init() - - return { hasConfigBindings, isDarkTheme, toggleTheme } -}) diff --git a/yarn.lock b/yarn.lock index 31c6b14fe2..f45ecacc8c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -46,9 +46,45 @@ __metadata: languageName: node linkType: hard -"@apollo/client@npm:^3.6.6, @apollo/client@npm:^3.7.0, @apollo/client@npm:^3.7.14, @apollo/client@npm:^3.8.1": - version: 3.8.1 - resolution: "@apollo/client@npm:3.8.1" +"@apollo/client@npm:^3.6.6, @apollo/client@npm:^3.7.0, @apollo/client@npm:^3.7.14": + version: 3.8.4 + resolution: "@apollo/client@npm:3.8.4" + dependencies: + "@graphql-typed-document-node/core": ^3.1.1 + "@wry/context": ^0.7.3 + "@wry/equality": ^0.5.6 + "@wry/trie": ^0.4.3 + graphql-tag: ^2.12.6 + hoist-non-react-statics: ^3.3.2 + optimism: ^0.17.5 + prop-types: ^15.7.2 + response-iterator: ^0.2.6 + symbol-observable: ^4.0.0 + ts-invariant: ^0.10.3 + tslib: ^2.3.0 + zen-observable-ts: ^1.2.5 + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-ws: ^5.5.5 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + subscriptions-transport-ws: ^0.9.0 || ^0.11.0 + peerDependenciesMeta: + graphql-ws: + optional: true + react: + optional: true + react-dom: + optional: true + subscriptions-transport-ws: + optional: true + checksum: 509e37cdce7462cacda0a86c413ce471cd8f618625fb8ac3a60d6347d12f37a4fc60e12fc3fc1a375799caa21e56ff58d709e13ef5e13ab15e4dfc828a527848 + languageName: node + linkType: hard + +"@apollo/client@npm:^3.8.1": + version: 3.8.7 + resolution: "@apollo/client@npm:3.8.7" dependencies: "@graphql-typed-document-node/core": ^3.1.1 "@wry/context": ^0.7.3 @@ -78,7 +114,7 @@ __metadata: optional: true subscriptions-transport-ws: optional: true - checksum: 3a1748359a7c0f339764e7764dc6c7426be1d522eda963416d3a693733edbce8408cb8f78f9c98b036d34621af663e3dd3446703dfd29037c78a77eacd3c70bb + checksum: b4343d7f64481d6e4ee9f3ff461cfdab669728104b7540a4fff885232335fed55920e76de823ee4f2fa711aa72afbbf1cfe29601eacabb3577dc1f3ee82046d4 languageName: node linkType: hard @@ -1546,6 +1582,16 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/code-frame@npm:7.22.13" + dependencies: + "@babel/highlight": ^7.22.13 + chalk: ^2.4.2 + checksum: 22e342c8077c8b77eeb11f554ecca2ba14153f707b85294fcf6070b6f6150aae88a7b7436dd88d8c9289970585f3fe5b9b941c5aa3aa26a6d5a8ef3f292da058 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.22.5": version: 7.22.5 resolution: "@babel/code-frame@npm:7.22.5" @@ -1851,17 +1897,6 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.19.4": - version: 7.19.5 - resolution: "@babel/generator@npm:7.19.5" - dependencies: - "@babel/types": ^7.19.4 - "@jridgewell/gen-mapping": ^0.3.2 - jsesc: ^2.5.1 - checksum: a66eafc540f80fc36c1b009b28bde1d12aff85e7916e7f5adf49c5a8866fecee4906b3c3c6db315d2723ea54e4e5ddfb2913fe6ab424f51dbccf753000930eaf - languageName: node - linkType: hard - "@babel/generator@npm:^7.19.6": version: 7.19.6 resolution: "@babel/generator@npm:7.19.6" @@ -1873,18 +1908,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.20.0, @babel/generator@npm:^7.7.2": - version: 7.20.0 - resolution: "@babel/generator@npm:7.20.0" - dependencies: - "@babel/types": ^7.20.0 - "@jridgewell/gen-mapping": ^0.3.2 - jsesc: ^2.5.1 - checksum: df2fef0ac305cf031013e311d4582b15b5c297fd538bec71e6cae3b689189ac4be6055482487b06da1be2f007b8985d5162a84e14e43a20435b8c89551910509 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.21.0, @babel/generator@npm:^7.21.1": +"@babel/generator@npm:^7.21.0": version: 7.21.1 resolution: "@babel/generator@npm:7.21.1" dependencies: @@ -1920,7 +1944,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.22.5, @babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9": +"@babel/generator@npm:^7.22.5, @babel/generator@npm:^7.22.9": version: 7.22.9 resolution: "@babel/generator@npm:7.22.9" dependencies: @@ -1932,6 +1956,29 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/generator@npm:7.23.0" + dependencies: + "@babel/types": ^7.23.0 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: 8efe24adad34300f1f8ea2add420b28171a646edc70f2a1b3e1683842f23b8b7ffa7e35ef0119294e1901f45bfea5b3dc70abe1f10a1917ccdfb41bed69be5f1 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.7.2": + version: 7.20.0 + resolution: "@babel/generator@npm:7.20.0" + dependencies: + "@babel/types": ^7.20.0 + "@jridgewell/gen-mapping": ^0.3.2 + jsesc: ^2.5.1 + checksum: df2fef0ac305cf031013e311d4582b15b5c297fd538bec71e6cae3b689189ac4be6055482487b06da1be2f007b8985d5162a84e14e43a20435b8c89551910509 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.16.7": version: 7.16.7 resolution: "@babel/helper-annotate-as-pure@npm:7.16.7" @@ -2305,6 +2352,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-environment-visitor@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 + languageName: node + linkType: hard + "@babel/helper-environment-visitor@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-environment-visitor@npm:7.22.5" @@ -2370,6 +2424,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" + dependencies: + "@babel/template": ^7.22.15 + "@babel/types": ^7.23.0 + checksum: e44542257b2d4634a1f979244eb2a4ad8e6d75eb6761b4cfceb56b562f7db150d134bc538c8e6adca3783e3bc31be949071527aa8e3aab7867d1ad2d84a26e10 + languageName: node + linkType: hard + "@babel/helper-hoist-variables@npm:^7.16.7": version: 7.16.7 resolution: "@babel/helper-hoist-variables@npm:7.16.7" @@ -2905,6 +2969,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-validator-identifier@npm:7.22.5" @@ -3096,6 +3167,17 @@ __metadata: languageName: node linkType: hard +"@babel/highlight@npm:^7.22.13": + version: 7.22.20 + resolution: "@babel/highlight@npm:7.22.20" + dependencies: + "@babel/helper-validator-identifier": ^7.22.20 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + checksum: 84bd034dca309a5e680083cd827a766780ca63cef37308404f17653d32366ea76262bd2364b2d38776232f2d01b649f26721417d507e8b4b6da3e4e739f6d134 + languageName: node + linkType: hard + "@babel/highlight@npm:^7.22.5": version: 7.22.5 resolution: "@babel/highlight@npm:7.22.5" @@ -3152,7 +3234,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.18.10, @babel/parser@npm:^7.19.4": +"@babel/parser@npm:^7.18.10": version: 7.19.4 resolution: "@babel/parser@npm:7.19.4" bin: @@ -3170,25 +3252,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/parser@npm:7.20.0" - bin: - parser: ./bin/babel-parser.js - checksum: d54d68e45ff1b9a0c50a3f79d9031f482eb58f18928525949dc20da5b1658ee79167e756129371fd75d3e8fc7e218ab707727145a68958636be9672c7b71768e - languageName: node - linkType: hard - -"@babel/parser@npm:^7.20.13": - version: 7.20.13 - resolution: "@babel/parser@npm:7.20.13" - bin: - parser: ./bin/babel-parser.js - checksum: 7eb2e3d9d9ad5e24b087c88d137f5701d94f049e28b9dce9f3f5c6d4d9b06a0d7c43b9106f1c02df8a204226200e0517de4bc81a339768a4ebd4c59107ea93a4 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.20.15, @babel/parser@npm:^7.21.3, @babel/parser@npm:^7.21.5, @babel/parser@npm:^7.21.8, @babel/parser@npm:~7.21.2": +"@babel/parser@npm:^7.20.15, @babel/parser@npm:^7.21.3, @babel/parser@npm:^7.21.8, @babel/parser@npm:~7.21.2": version: 7.21.8 resolution: "@babel/parser@npm:7.21.8" bin: @@ -3206,7 +3270,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.21.0, @babel/parser@npm:^7.21.2": +"@babel/parser@npm:^7.21.0": version: 7.21.2 resolution: "@babel/parser@npm:7.21.2" bin: @@ -3215,6 +3279,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.21.5, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/parser@npm:7.23.0" + bin: + parser: ./bin/babel-parser.js + checksum: 453fdf8b9e2c2b7d7b02139e0ce003d1af21947bbc03eb350fb248ee335c9b85e4ab41697ddbdd97079698de825a265e45a0846bb2ed47a2c7c1df833f42a354 + languageName: node + linkType: hard + "@babel/parser@npm:^7.22.11": version: 7.22.11 resolution: "@babel/parser@npm:7.22.11" @@ -6571,6 +6644,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/template@npm:7.22.15" + dependencies: + "@babel/code-frame": ^7.22.13 + "@babel/parser": ^7.22.15 + "@babel/types": ^7.22.15 + checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd + languageName: node + linkType: hard + "@babel/template@npm:^7.22.5": version: 7.22.5 resolution: "@babel/template@npm:7.22.5" @@ -6582,151 +6666,25 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.0.0, @babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.1, @babel/traverse@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/traverse@npm:7.19.4" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.4 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.19.4 - "@babel/types": ^7.19.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 8ae1ac3dace181620cd0e3078aec99604a48302fb873193a171e37a7cc4f8909ed496f286bf08c6473f9692db36423e2601eb9c771493d19f6a5fd1a56745af5 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.16.7, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.17.10, @babel/traverse@npm:^7.17.3, @babel/traverse@npm:^7.17.9": - version: 7.17.10 - resolution: "@babel/traverse@npm:7.17.10" - dependencies: - "@babel/code-frame": ^7.16.7 - "@babel/generator": ^7.17.10 - "@babel/helper-environment-visitor": ^7.16.7 - "@babel/helper-function-name": ^7.17.9 - "@babel/helper-hoist-variables": ^7.16.7 - "@babel/helper-split-export-declaration": ^7.16.7 - "@babel/parser": ^7.17.10 - "@babel/types": ^7.17.10 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 44ec0a59aa274b59464d52b1796eb6e54c67ae0f946de0d608068e28b1ab7065bdf53c0169d9102854cb00aa01944c83e722f08aeab96d9cc6bf56f8aede70fd - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.18.5": - version: 7.18.5 - resolution: "@babel/traverse@npm:7.18.5" - dependencies: - "@babel/code-frame": ^7.16.7 - "@babel/generator": ^7.18.2 - "@babel/helper-environment-visitor": ^7.18.2 - "@babel/helper-function-name": ^7.17.9 - "@babel/helper-hoist-variables": ^7.16.7 - "@babel/helper-split-export-declaration": ^7.16.7 - "@babel/parser": ^7.18.5 - "@babel/types": ^7.18.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: cc0470c880e15a748ca3424665c65836dba450fd0331fb28f9d30aa42acd06387b6321996517ab1761213f781fe8d657e2c3ad67c34afcb766d50653b393810f - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.18.0, @babel/traverse@npm:^7.18.2": - version: 7.18.2 - resolution: "@babel/traverse@npm:7.18.2" - dependencies: - "@babel/code-frame": ^7.16.7 - "@babel/generator": ^7.18.2 - "@babel/helper-environment-visitor": ^7.18.2 - "@babel/helper-function-name": ^7.17.9 - "@babel/helper-hoist-variables": ^7.16.7 - "@babel/helper-split-export-declaration": ^7.16.7 - "@babel/parser": ^7.18.0 - "@babel/types": ^7.18.2 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: e21c2d550bf610406cf21ef6fbec525cb1d80b9d6d71af67552478a24ee371203cb4025b23b110ae7288a62a874ad5898daad19ad23daa95dfc8ab47a47a092f - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/traverse@npm:7.19.6" +"@babel/traverse@npm:^7.0.0, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.7, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.17.10, @babel/traverse@npm:^7.17.3, @babel/traverse@npm:^7.17.9, @babel/traverse@npm:^7.18.0, @babel/traverse@npm:^7.18.2, @babel/traverse@npm:^7.18.5, @babel/traverse@npm:^7.19.0, @babel/traverse@npm:^7.19.1, @babel/traverse@npm:^7.19.4, @babel/traverse@npm:^7.19.6, @babel/traverse@npm:^7.20.10, @babel/traverse@npm:^7.20.12, @babel/traverse@npm:^7.20.7, @babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2, @babel/traverse@npm:^7.21.5, @babel/traverse@npm:^7.22.11, @babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8, @babel/traverse@npm:^7.7.2": + version: 7.23.2 + resolution: "@babel/traverse@npm:7.23.2" dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.19.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.19.6 - "@babel/types": ^7.19.4 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 3fafa244f7d0b696a9d38f5da016a8f8db4b08ac60a067b299a8f54d91fb7c70c3edf06f921221d333137e65ffb64392526e68fdcf596ec91e95720037789d66 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.20.10, @babel/traverse@npm:^7.20.7": - version: 7.20.10 - resolution: "@babel/traverse@npm:7.20.10" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.20.7 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 8e36dfc76b8f7aafa01b98130c0257e3148eb7132e4b599be565bddae5faec7e20a0f92786a829a8d962a0bf5652fe0019cadd85716d70d140785dec640ff6f7 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.20.12": - version: 7.20.13 - resolution: "@babel/traverse@npm:7.20.13" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.20.7 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.20.13 - "@babel/types": ^7.20.7 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 30ca6e0bd18233fda48fa09315efd14dfc61dcf5b8fa3712b343bfc61b32bc63b5e85ea1773cc9576c9b293b96f46b4589aaeb0a52e1f3eeac4edc076d049fc7 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/traverse@npm:7.21.2" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.21.1 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.21.2 - "@babel/types": ^7.21.2 + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.23.0 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-function-name": ^7.23.0 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.23.0 + "@babel/types": ^7.23.0 debug: ^4.1.0 globals: ^11.1.0 - checksum: d851e3f5cfbdc2fac037a014eae7b0707709de50f7d2fbb82ffbf932d3eeba90a77431529371d6e544f8faaf8c6540eeb18fdd8d1c6fa2b61acea0fb47e18d4b + checksum: 26a1eea0dde41ab99dde8b9773a013a0dc50324e5110a049f5d634e721ff08afffd54940b3974a20308d7952085ac769689369e9127dea655f868c0f6e1ab35d languageName: node linkType: hard -"@babel/traverse@npm:^7.21.5, @babel/traverse@npm:~7.21.2": +"@babel/traverse@npm:~7.21.2": version: 7.21.5 resolution: "@babel/traverse@npm:7.21.5" dependencies: @@ -6744,60 +6702,6 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/traverse@npm:7.22.11" - dependencies: - "@babel/code-frame": ^7.22.10 - "@babel/generator": ^7.22.10 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.22.11 - "@babel/types": ^7.22.11 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 4ad62d548ca8b95dbf45bae16cc167428f174f3c837d55a5878b1f17bdbc8b384d6df741dc7c461b62c04d881cf25644d3ab885909ba46e3ac43224e2b15b504 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8": - version: 7.22.8 - resolution: "@babel/traverse@npm:7.22.8" - dependencies: - "@babel/code-frame": ^7.22.5 - "@babel/generator": ^7.22.7 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.22.7 - "@babel/types": ^7.22.5 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: a381369bc3eedfd13ed5fef7b884657f1c29024ea7388198149f0edc34bd69ce3966e9f40188d15f56490a5e12ba250ccc485f2882b53d41b054fccefb233e33 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.7.2": - version: 7.20.0 - resolution: "@babel/traverse@npm:7.20.0" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.20.0 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.19.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.20.0 - "@babel/types": ^7.20.0 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 19615ec2c3467f929dfa2ae98494961a2c7b333b6628e1c7643188d936abc167c41f5af541b692b1ca776a4d066291a7eb8b22f98aba3d496f362bae4c2082cd - languageName: node - linkType: hard - "@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.16.0, @babel/types@npm:^7.16.7, @babel/types@npm:^7.16.8, @babel/types@npm:^7.17.0, @babel/types@npm:^7.17.10, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.17.10 resolution: "@babel/types@npm:7.17.10" @@ -6884,6 +6788,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.22.15, @babel/types@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/types@npm:7.23.0" + dependencies: + "@babel/helper-string-parser": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.20 + to-fast-properties: ^2.0.0 + checksum: 215fe04bd7feef79eeb4d33374b39909ce9cad1611c4135a4f7fdf41fe3280594105af6d7094354751514625ea92d0875aba355f53e86a92600f290e77b0e604 + languageName: node + linkType: hard + "@babel/types@npm:^7.22.5": version: 7.22.5 resolution: "@babel/types@npm:7.22.5" @@ -7869,6 +7784,13 @@ __metadata: languageName: node linkType: hard +"@fastify/busboy@npm:^2.0.0": + version: 2.0.0 + resolution: "@fastify/busboy@npm:2.0.0" + checksum: 41879937ce1dee6421ef9cd4da53239830617e1f0bb7a0e843940772cd72827205d05e518af6adabe6e1ea19301285fff432b9d11bad01a531e698bea95c781b + languageName: node + linkType: hard + "@floating-ui/core@npm:^1.4.1": version: 1.4.1 resolution: "@floating-ui/core@npm:1.4.1" @@ -12386,6 +12308,7 @@ __metadata: apollo-upload-client: ^17.0.0 autoprefixer: ^10.4.14 concurrently: ^7.5.0 + dotenv: ^16.3.1 eslint: ^8.24.0 eslint-config-prettier: ^8.5.0 eslint-plugin-nuxt: ^4.0.0 @@ -14993,11 +14916,11 @@ __metadata: linkType: hard "@tryghost/content-api@npm:^1.5.12": - version: 1.9.2 - resolution: "@tryghost/content-api@npm:1.9.2" + version: 1.11.19 + resolution: "@tryghost/content-api@npm:1.11.19" dependencies: - axios: ^0.27.0 - checksum: fb69863f95de942437a9e8c39529bbfd7a58e4b2ac6bb9572b57536e801fc431aef2eef91ed299e64721bf2e6bde3c21880064c8b86ba9156947f2d93a12a88c + axios: ^1.0.0 + checksum: 9910c62afb0668f5e7f6ff8e5c20d95ce713d7867ad6b28c258fb552e23debd8972acc5aaaab59728e6d382c0aa993ff0ed0d1ad71c709dd162ecefaa5a8dc76 languageName: node linkType: hard @@ -15265,11 +15188,11 @@ __metadata: linkType: hard "@types/cors@npm:^2.8.12": - version: 2.8.13 - resolution: "@types/cors@npm:2.8.13" + version: 2.8.16 + resolution: "@types/cors@npm:2.8.16" dependencies: "@types/node": "*" - checksum: 7ef197ea19d2e5bf1313b8416baa6f3fd6dd887fd70191da1f804f557395357dafd8bc8bed0ac60686923406489262a7c8a525b55748f7b2b8afa686700de907 + checksum: 0c760aa826167a42bfbccff00d67e39c9dd9852e0cd88610f6d3ea1ed17e438df0f8f1f3175c77bfbfdee4c77bf677b12f6b5bd309358c30b5d0e758624b7250 languageName: node linkType: hard @@ -15454,11 +15377,11 @@ __metadata: linkType: hard "@types/fs-extra@npm:^8.0.1": - version: 8.1.2 - resolution: "@types/fs-extra@npm:8.1.2" + version: 8.1.5 + resolution: "@types/fs-extra@npm:8.1.5" dependencies: "@types/node": "*" - checksum: 7277198ded9caea5750c82e569ba1e6fbac28cdb4a95e5d52d24e7c4c2ac90bf45fbe89e08fc21de8f9d3c9b302e30680566eb04e460c30ceac66ad24c161b37 + checksum: a76db2a9640a24c7cb7a75981113ccec1be8a876453beb0a4d51ea8df5980562b6a6d2adf70cab0a9ccb4f1fa677c7900c875ce0a73e48105bb100cb043461f0 languageName: node linkType: hard @@ -15824,9 +15747,11 @@ __metadata: linkType: hard "@types/node@npm:>=10.0.0": - version: 20.5.7 - resolution: "@types/node@npm:20.5.7" - checksum: fc284c8e16ddc04569730d58e87eae349eb1c3dd9020cb79a1862d9d9add6f04e7367a236f3252db8db2572f90278e250f4cd43d27d264972b54394eaba1ed76 + version: 20.9.0 + resolution: "@types/node@npm:20.9.0" + dependencies: + undici-types: ~5.26.4 + checksum: bfd927da6bff8a32051fa44bb47ca32a56d2c8bc8ba0170770f181cc1fa3c0b05863c9b930f0ba8604a48d5eb0d319166601709ca53bf2deae0025d8b6c6b8a3 languageName: node linkType: hard @@ -15852,9 +15777,9 @@ __metadata: linkType: hard "@types/node@npm:^16.11.26": - version: 16.18.46 - resolution: "@types/node@npm:16.18.46" - checksum: 1aed3fe9693f2098b8dac8c76c809c1925a456da00dd6f06c1ccb55c62ccfbbe7ec43ccfd12001f9cb4ff84e138292ae53456435dfecd5c4bb1324394c3e09c7 + version: 16.18.61 + resolution: "@types/node@npm:16.18.61" + checksum: fdd162829eddc9b0b82a1ec485ba3876428ff3bd94c5869b13f4a36eb2aa9bddd22ea7e8ee3b2faa91a0f70ff08d8fd8d4be7dd0d143f8ee776907d6a1d2ed25 languageName: node linkType: hard @@ -17379,8 +17304,8 @@ __metadata: linkType: hard "@vue/devtools@npm:^6.5.0": - version: 6.5.0 - resolution: "@vue/devtools@npm:6.5.0" + version: 6.5.1 + resolution: "@vue/devtools@npm:6.5.1" dependencies: cross-spawn: ^7.0.3 electron: ^21.0.1 @@ -17391,7 +17316,7 @@ __metadata: utf-8-validate: ^5.0.9 bin: vue-devtools: bin.js - checksum: fd1742321814e243d7f2d5a06351e3b7a75e71c7a7fc5c8b02661d1c93936cbb9539c6f063d61b36a0ccded6024ae4fc9d8ac70dd931f0edbdba78126549e985 + checksum: 0ea1cf23f78cd0f5eae0389f12cd455abba063b61f0c81ab9c4fae40e357f377d2bb00a60150b810d0389d8d6cf7a8d02eca97eb9a02502148af14b1f95c68d3 languageName: node linkType: hard @@ -17676,11 +17601,9 @@ __metadata: linkType: hard "@vuejs-community/vue-filter-date-parse@npm:^1.1.6": - version: 1.1.6 - resolution: "@vuejs-community/vue-filter-date-parse@npm:1.1.6" - peerDependencies: - vue: ^2.0.0 - checksum: c0c03afeeb85981a1b92baf1e9309a71bb410af0d974b725da2eb177200fcc2de4403ec13665b8e0a05106e2de970259a0d428849a8fee6f900cc52fb315934f + version: 1.2.0 + resolution: "@vuejs-community/vue-filter-date-parse@npm:1.2.0" + checksum: 92ad64996aef07ebba75ecb5839e6c5ddd3b8708dfd4c5eaf509c2936c368b1270714b4d98b750651cf6b19102c4878cf67dab9ddeba5e714a8a126ed88c9dcb languageName: node linkType: hard @@ -18442,7 +18365,7 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^2.0.0, ansi-regex@npm:^5.0.1": +"ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b @@ -18704,13 +18627,6 @@ __metadata: languageName: node linkType: hard -"aproba@npm:^1.0.3": - version: 1.2.0 - resolution: "aproba@npm:1.2.0" - checksum: 0fca141966559d195072ed047658b6e6c4fe92428c385dd38e288eacfc55807e7b4989322f030faff32c0f46bb0bc10f1e0ac32ec22d25315a1e5bbc0ebb76dc - languageName: node - linkType: hard - "aproba@npm:^1.0.3 || ^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" @@ -18785,16 +18701,6 @@ __metadata: languageName: node linkType: hard -"are-we-there-yet@npm:~1.1.2": - version: 1.1.7 - resolution: "are-we-there-yet@npm:1.1.7" - dependencies: - delegates: ^1.0.0 - readable-stream: ^2.0.6 - checksum: 70d251719c969b2745bfe5ddf3ebaefa846a636e90a6d5212573676af5d6670e15457761d4725731e19cbebdce42c4ab0cbedf23ab047f2a08274985aa10a3c7 - languageName: node - linkType: hard - "arg@npm:^4.1.0": version: 4.1.3 resolution: "arg@npm:4.1.3" @@ -19226,13 +19132,14 @@ __metadata: languageName: node linkType: hard -"axios@npm:^0.27.0": - version: 0.27.2 - resolution: "axios@npm:0.27.2" +"axios@npm:^1.0.0": + version: 1.6.0 + resolution: "axios@npm:1.6.0" dependencies: - follow-redirects: ^1.14.9 + follow-redirects: ^1.15.0 form-data: ^4.0.0 - checksum: 38cb7540465fe8c4102850c4368053c21683af85c5fdf0ea619f9628abbcb59415d1e22ebc8a6390d2bbc9b58a9806c874f139767389c862ec9b772235f06854 + proxy-from-env: ^1.1.0 + checksum: c7c9f2ae9e0b9bad7d6f9a4dff030930b12ee667dedf54c3c776714f91681feb743c509ac0796ae5c01e12c4ab4a2bee74905068dd200fbc1ab86f9814578fb0 languageName: node linkType: hard @@ -19747,7 +19654,7 @@ __metadata: languageName: node linkType: hard -"bn.js@npm:^5.0.0, bn.js@npm:^5.1.1": +"bn.js@npm:^5.0.0, bn.js@npm:^5.2.1": version: 5.2.1 resolution: "bn.js@npm:5.2.1" checksum: 3dd8c8d38055fedfa95c1d5fc3c99f8dd547b36287b37768db0abab3c239711f88ff58d18d155dd8ad902b0b0cee973747b7ae20ea12a09473272b0201c9edd3 @@ -19958,7 +19865,7 @@ __metadata: languageName: node linkType: hard -"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.0.1": +"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": version: 4.1.0 resolution: "browserify-rsa@npm:4.1.0" dependencies: @@ -19969,19 +19876,19 @@ __metadata: linkType: hard "browserify-sign@npm:^4.0.0": - version: 4.2.1 - resolution: "browserify-sign@npm:4.2.1" + version: 4.2.2 + resolution: "browserify-sign@npm:4.2.2" dependencies: - bn.js: ^5.1.1 - browserify-rsa: ^4.0.1 + bn.js: ^5.2.1 + browserify-rsa: ^4.1.0 create-hash: ^1.2.0 create-hmac: ^1.1.7 - elliptic: ^6.5.3 + elliptic: ^6.5.4 inherits: ^2.0.4 - parse-asn1: ^5.1.5 - readable-stream: ^3.6.0 - safe-buffer: ^5.2.0 - checksum: 0221f190e3f5b2d40183fa51621be7e838d9caa329fe1ba773406b7637855f37b30f5d83e52ff8f244ed12ffe6278dd9983638609ed88c841ce547e603855707 + parse-asn1: ^5.1.6 + readable-stream: ^3.6.2 + safe-buffer: ^5.2.1 + checksum: b622730c0fc183328c3a1c9fdaaaa5118821ed6822b266fa6b0375db7e20061ebec87301d61931d79b9da9a96ada1cab317fce3c68f233e5e93ed02dbb35544c languageName: node linkType: hard @@ -21144,13 +21051,6 @@ __metadata: languageName: node linkType: hard -"code-point-at@npm:^1.0.0": - version: 1.1.0 - resolution: "code-point-at@npm:1.1.0" - checksum: 17d5666611f9b16d64fdf48176d9b7fb1c7d1c1607a189f7e600040a11a6616982876af148230336adb7d8fe728a559f743a4e29db3747e3b1a32fa7f4529681 - languageName: node - linkType: hard - "collect-v8-coverage@npm:^1.0.0": version: 1.0.1 resolution: "collect-v8-coverage@npm:1.0.1" @@ -21552,7 +21452,7 @@ __metadata: languageName: node linkType: hard -"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0, console-control-strings@npm:~1.1.0": +"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed @@ -22977,13 +22877,20 @@ __metadata: languageName: node linkType: hard -"detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.1": +"detect-libc@npm:^2.0.0": version: 2.0.1 resolution: "detect-libc@npm:2.0.1" checksum: ccb05fcabbb555beb544d48080179c18523a343face9ee4e1a86605a8715b4169f94d663c21a03c310ac824592f2ba9a5270218819bb411ad7be578a527593d7 languageName: node linkType: hard +"detect-libc@npm:^2.0.1": + version: 2.0.2 + resolution: "detect-libc@npm:2.0.2" + checksum: 2b2cd3649b83d576f4be7cc37eb3b1815c79969c8b1a03a40a4d55d83bc74d010753485753448eacb98784abf22f7dbd3911fd3b60e29fda28fed2d1a997944d + languageName: node + linkType: hard + "detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -23543,7 +23450,7 @@ __metadata: languageName: node linkType: hard -"elliptic@npm:^6.5.3": +"elliptic@npm:^6.5.3, elliptic@npm:^6.5.4": version: 6.5.4 resolution: "elliptic@npm:6.5.4" dependencies: @@ -23662,8 +23569,8 @@ __metadata: linkType: hard "engine.io@npm:~6.5.2": - version: 6.5.2 - resolution: "engine.io@npm:6.5.2" + version: 6.5.3 + resolution: "engine.io@npm:6.5.3" dependencies: "@types/cookie": ^0.4.1 "@types/cors": ^2.8.12 @@ -23675,7 +23582,7 @@ __metadata: debug: ~4.3.1 engine.io-parser: ~5.2.1 ws: ~8.11.0 - checksum: 2fb1da39932d526cd5033c399978c65d367cce51e6b511a572bcf4a520b863652e26123d7efceee6cef8c96221585eb953a0e541ae25f6009e9ff5149b067ecd + checksum: b71769b17a663d07b14a2ba6de7a729bce47cef936a25b46dcc1cc75e42b377d82548cfbaf66ce4a0b237536c488a29d301c2514ab1cafbdc1f594bd327fc498 languageName: node linkType: hard @@ -24544,54 +24451,20 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-vue@npm:^9.2.0": - version: 9.2.0 - resolution: "eslint-plugin-vue@npm:9.2.0" +"eslint-plugin-vue@npm:^9.2.0, eslint-plugin-vue@npm:^9.4.0, eslint-plugin-vue@npm:^9.5.1": + version: 9.18.1 + resolution: "eslint-plugin-vue@npm:9.18.1" dependencies: - eslint-utils: ^3.0.0 - natural-compare: ^1.4.0 - nth-check: ^2.0.1 - postcss-selector-parser: ^6.0.9 - semver: ^7.3.5 - vue-eslint-parser: ^9.0.1 - xml-name-validator: ^4.0.0 - peerDependencies: - eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 - checksum: 008819b12ad50ed62bfdc7f93e9e610575fa16dcccfb62ad9bb4ad27e69b1245419bf76752285742434fa6b9cf076f6fc173324084639e10209b2af2992630df - languageName: node - linkType: hard - -"eslint-plugin-vue@npm:^9.4.0": - version: 9.8.0 - resolution: "eslint-plugin-vue@npm:9.8.0" - dependencies: - eslint-utils: ^3.0.0 - natural-compare: ^1.4.0 - nth-check: ^2.0.1 - postcss-selector-parser: ^6.0.9 - semver: ^7.3.5 - vue-eslint-parser: ^9.0.1 - xml-name-validator: ^4.0.0 - peerDependencies: - eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 - checksum: f3fc36512fa124a81332e353b161a84dd7b55ae07c69c0e9eabc85d56fdc2940422e1f33172d90af0f7913fc5cd25cfc7dfe025db37311d15a2ba5ea486b7602 - languageName: node - linkType: hard - -"eslint-plugin-vue@npm:^9.5.1": - version: 9.6.0 - resolution: "eslint-plugin-vue@npm:9.6.0" - dependencies: - eslint-utils: ^3.0.0 + "@eslint-community/eslint-utils": ^4.4.0 natural-compare: ^1.4.0 - nth-check: ^2.0.1 - postcss-selector-parser: ^6.0.9 - semver: ^7.3.5 - vue-eslint-parser: ^9.0.1 + nth-check: ^2.1.1 + postcss-selector-parser: ^6.0.13 + semver: ^7.5.4 + vue-eslint-parser: ^9.3.1 xml-name-validator: ^4.0.0 peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 - checksum: fcfb333b09af4d1db027f8a52b7ffdf0ebaa649f5738b7a6124bd02aaa1e075daaaa97e490a863667dda16c79e1d37688a8311d7685b9a63d3c4c0dd5f1d9622 + checksum: 774c1e91634f3fce33d5dcb8055959890f2b7620b558f9a5372175b2161d1341d69857d158bb9e97846252722d569126478c0be313bb4d3ac47beac875076f36 languageName: node linkType: hard @@ -25236,13 +25109,13 @@ __metadata: linkType: hard "farmhash@npm:^3.2.2": - version: 3.2.2 - resolution: "farmhash@npm:3.2.2" + version: 3.3.0 + resolution: "farmhash@npm:3.3.0" dependencies: - node-addon-api: ^4.2.0 + node-addon-api: ^5.1.0 node-gyp: latest - prebuild-install: ^7.0.0 - checksum: 65fc5511f3568b829612e88332060f2d206a55862f89da8082673c054451901f3c7192e4dbf2cb0bdcb8f15167db97ae488472620960b53d4afad64f8cb6fb7a + prebuild-install: ^7.1.1 + checksum: 4704c5acab7fb55f188f61df86a62015818e4d571c506cedc32f12376330830f07a368eb0d349859132d6768481e588ecf1d571c5c75fd5c4a574c65e11a6839 languageName: node linkType: hard @@ -25699,7 +25572,7 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.7, follow-redirects@npm:^1.14.9": +"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.7": version: 1.15.0 resolution: "follow-redirects@npm:1.15.0" peerDependenciesMeta: @@ -25719,6 +25592,16 @@ __metadata: languageName: node linkType: hard +"follow-redirects@npm:^1.15.0": + version: 1.15.3 + resolution: "follow-redirects@npm:1.15.3" + peerDependenciesMeta: + debug: + optional: true + checksum: 584da22ec5420c837bd096559ebfb8fe69d82512d5585004e36a3b4a6ef6d5905780e0c74508c7b72f907d1fa2b7bd339e613859e9c304d0dc96af2027fd0231 + languageName: node + linkType: hard + "for-each@npm:^0.3.3": version: 0.3.3 resolution: "for-each@npm:0.3.3" @@ -26081,22 +25964,6 @@ __metadata: languageName: node linkType: hard -"gauge@npm:~2.7.3": - version: 2.7.4 - resolution: "gauge@npm:2.7.4" - dependencies: - aproba: ^1.0.3 - console-control-strings: ^1.0.0 - has-unicode: ^2.0.0 - object-assign: ^4.1.0 - signal-exit: ^3.0.0 - string-width: ^1.0.1 - strip-ansi: ^3.0.1 - wide-align: ^1.1.0 - checksum: a89b53cee65579b46832e050b5f3a79a832cc422c190de79c6b8e2e15296ab92faddde6ddf2d376875cbba2b043efa99b9e1ed8124e7365f61b04e3cee9d40ee - languageName: node - linkType: hard - "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -26119,9 +25986,9 @@ __metadata: linkType: hard "get-func-name@npm:^2.0.0": - version: 2.0.0 - resolution: "get-func-name@npm:2.0.0" - checksum: 8d82e69f3e7fab9e27c547945dfe5cc0c57fc0adf08ce135dddb01081d75684a03e7a0487466f478872b341d52ac763ae49e660d01ab83741f74932085f693c3 + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b languageName: node linkType: hard @@ -27097,7 +26964,7 @@ __metadata: languageName: node linkType: hard -"has-unicode@npm:^2.0.0, has-unicode@npm:^2.0.1": +"has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 @@ -28271,15 +28138,6 @@ __metadata: languageName: node linkType: hard -"is-fullwidth-code-point@npm:^1.0.0": - version: 1.0.0 - resolution: "is-fullwidth-code-point@npm:1.0.0" - dependencies: - number-is-nan: ^1.0.0 - checksum: 4d46a7465a66a8aebcc5340d3b63a56602133874af576a9ca42c6f0f4bd787a743605771c5f246db77da96605fefeffb65fc1dbe862dcc7328f4b4d03edf5a57 - languageName: node - linkType: hard - "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -33148,15 +33006,6 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.3, nanoid@npm:^3.3.4": - version: 3.3.4 - resolution: "nanoid@npm:3.3.4" - bin: - nanoid: bin/nanoid.cjs - checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c - languageName: node - linkType: hard - "nanoid@npm:^4.0.2": version: 4.0.2 resolution: "nanoid@npm:4.0.2" @@ -33329,21 +33178,12 @@ __metadata: languageName: node linkType: hard -"node-addon-api@npm:^4.2.0": - version: 4.3.0 - resolution: "node-addon-api@npm:4.3.0" - dependencies: - node-gyp: latest - checksum: 3de396e23cc209f539c704583e8e99c148850226f6e389a641b92e8967953713228109f919765abc1f4355e801e8f41842f96210b8d61c7dcc10a477002dcf00 - languageName: node - linkType: hard - -"node-addon-api@npm:^5.0.0": - version: 5.0.0 - resolution: "node-addon-api@npm:5.0.0" +"node-addon-api@npm:^5.0.0, node-addon-api@npm:^5.1.0": + version: 5.1.0 + resolution: "node-addon-api@npm:5.1.0" dependencies: node-gyp: latest - checksum: 7c5e2043ac37f6108784d94ed73a44ae6d3e68eb968de60680922fc6bc3d17fa69448c0feb4e0c9d3f4c74a0324822e566a8340a56916d9d6f23cb3e85620334 + checksum: 2508bd2d2981945406243a7bd31362fc7af8b70b8b4d65f869c61731800058fb818cc2fd36c8eac714ddd0e568cc85becf5e165cebbdf7b5024d5151bbc75ea1 languageName: node linkType: hard @@ -33842,18 +33682,6 @@ __metadata: languageName: node linkType: hard -"npmlog@npm:^4.0.1": - version: 4.1.2 - resolution: "npmlog@npm:4.1.2" - dependencies: - are-we-there-yet: ~1.1.2 - console-control-strings: ~1.1.0 - gauge: ~2.7.3 - set-blocking: ~2.0.0 - checksum: edbda9f95ec20957a892de1839afc6fb735054c3accf6fbefe767bac9a639fd5cea2baeac6bd2bcd50a85cb54924d57d9886c81c7fbc2332c2ddd19227504192 - languageName: node - linkType: hard - "npmlog@npm:^5.0.1": version: 5.0.1 resolution: "npmlog@npm:5.0.1" @@ -33887,6 +33715,15 @@ __metadata: languageName: node linkType: hard +"nth-check@npm:^2.1.1": + version: 2.1.1 + resolution: "nth-check@npm:2.1.1" + dependencies: + boolbase: ^1.0.0 + checksum: 5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 + languageName: node + linkType: hard + "nullthrows@npm:^1.1.1": version: 1.1.1 resolution: "nullthrows@npm:1.1.1" @@ -33894,13 +33731,6 @@ __metadata: languageName: node linkType: hard -"number-is-nan@npm:^1.0.0": - version: 1.0.1 - resolution: "number-is-nan@npm:1.0.1" - checksum: 13656bc9aa771b96cef209ffca31c31a03b507ca6862ba7c3f638a283560620d723d52e626d57892c7fff475f4c36ac07f0600f14544692ff595abff214b9ffb - languageName: node - linkType: hard - "numeral@npm:^2.0.6": version: 2.0.6 resolution: "numeral@npm:2.0.6" @@ -34749,7 +34579,7 @@ __metadata: languageName: node linkType: hard -"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.5": +"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.6": version: 5.1.6 resolution: "parse-asn1@npm:5.1.6" dependencies: @@ -36221,15 +36051,15 @@ __metadata: linkType: hard "postcss-scss@npm:^4.0.3": - version: 4.0.4 - resolution: "postcss-scss@npm:4.0.4" + version: 4.0.9 + resolution: "postcss-scss@npm:4.0.9" peerDependencies: - postcss: ^8.3.3 - checksum: b4f240dd5eeb0c21738b673d9caf9a06b9a6db665a5b1c815ee4ca10c4c74a67c54f11cd5a4970dea98475cbb9e6d846e05dd3e48924189c2ecbf1f50cd44aa4 + postcss: ^8.4.29 + checksum: dc358bafc23d52ed3a9a29333808825deba213042be74ece6eae7a61c692f67d0e6691fa7005367b013c01c79562fbb9ef2fe4c0485075233931bd90715f5132 languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9": +"postcss-selector-parser@npm:^6.0.10, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5": version: 6.0.10 resolution: "postcss-selector-parser@npm:6.0.10" dependencies: @@ -36317,80 +36147,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.1.10": - version: 8.4.16 - resolution: "postcss@npm:8.4.16" - dependencies: - nanoid: ^3.3.4 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 10eee25efd77868036403858577da0cefaf2e0905feeaba5770d5438ccdddba3d01cba8063e96b8aac4c6daa0ed413dd5ae0554a433a3c4db38df1d134cffc1f - languageName: node - linkType: hard - -"postcss@npm:^8.2.14, postcss@npm:^8.4.12, postcss@npm:^8.4.14": - version: 8.4.14 - resolution: "postcss@npm:8.4.14" - dependencies: - nanoid: ^3.3.3 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: fe58766ff32e4becf65a7d57678995cfd239df6deed2fe0557f038b47c94e4132e7e5f68b5aa820c13adfec32e523b693efaeb65798efb995ce49ccd83953816 - languageName: node - linkType: hard - -"postcss@npm:^8.2.15, postcss@npm:^8.4.0, postcss@npm:^8.4.18": - version: 8.4.18 - resolution: "postcss@npm:8.4.18" - dependencies: - nanoid: ^3.3.4 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 9349fd99849b2e3d2e134ff949b7770ecb12375f352723ce2bcc06167eba3850ea7844c1b191a85cd915d6a396b4e8ee9a5267e6cc5d8d003d0cbc7a97555d39 - languageName: node - linkType: hard - -"postcss@npm:^8.3.11": - version: 8.4.13 - resolution: "postcss@npm:8.4.13" - dependencies: - nanoid: ^3.3.3 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 514fb3552805a5d039a2d6b4df3e73f657001716ca93c0d57e6067b0473abdea70276d80afc96005c9aaff82ed5d98062bd97724d3f47ca400fba0b5e9e436ed - languageName: node - linkType: hard - -"postcss@npm:^8.4.21": - version: 8.4.21 - resolution: "postcss@npm:8.4.21" - dependencies: - nanoid: ^3.3.4 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: e39ac60ccd1542d4f9d93d894048aac0d686b3bb38e927d8386005718e6793dbbb46930f0a523fe382f1bbd843c6d980aaea791252bf5e176180e5a4336d9679 - languageName: node - linkType: hard - -"postcss@npm:^8.4.23": - version: 8.4.23 - resolution: "postcss@npm:8.4.23" +"postcss@npm:^8.1.10, postcss@npm:^8.2.14, postcss@npm:^8.2.15, postcss@npm:^8.3.11, postcss@npm:^8.4.0, postcss@npm:^8.4.12, postcss@npm:^8.4.14, postcss@npm:^8.4.18, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.24": + version: 8.4.31 + resolution: "postcss@npm:8.4.31" dependencies: nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: 8bb9d1b2ea6e694f8987d4f18c94617971b2b8d141602725fedcc2222fdc413b776a6e1b969a25d627d7b2681ca5aabb56f59e727ef94072e1b6ac8412105a2f - languageName: node - linkType: hard - -"postcss@npm:^8.4.24": - version: 8.4.25 - resolution: "postcss@npm:8.4.25" - dependencies: - nanoid: ^3.3.6 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 9ed3ab8af43ad5210c28f56f916fd9b8c9f94fbeaebbf645dcf579bc28bdd8056c2a7ecc934668d399b81fedb6128f0c4b299f931e50454964bc911c25a3a0a2 + checksum: 1d8611341b073143ad90486fcdfeab49edd243377b1f51834dc4f6d028e82ce5190e4f11bb2633276864503654fb7cab28e67abdc0fbf9d1f88cad4a0ff0beea languageName: node linkType: hard @@ -36424,29 +36188,6 @@ __metadata: languageName: node linkType: hard -"prebuild-install@npm:^7.0.0": - version: 7.1.0 - resolution: "prebuild-install@npm:7.1.0" - dependencies: - detect-libc: ^2.0.0 - expand-template: ^2.0.3 - github-from-package: 0.0.0 - minimist: ^1.2.3 - mkdirp-classic: ^0.5.3 - napi-build-utils: ^1.0.1 - node-abi: ^3.3.0 - npmlog: ^4.0.1 - pump: ^3.0.0 - rc: ^1.2.7 - simple-get: ^4.0.0 - tar-fs: ^2.0.0 - tunnel-agent: ^0.6.0 - bin: - prebuild-install: bin.js - checksum: 204f2d89c6d6179fa1039036514aa72f7d0b537e421ef72c40840286e318f41489f00f22c6acc725cce6e10d43825b69dcabeaadfc917db781c58cd56fc25f90 - languageName: node - linkType: hard - "prebuild-install@npm:^7.1.1": version: 7.1.1 resolution: "prebuild-install@npm:7.1.1" @@ -36992,7 +36733,7 @@ __metadata: languageName: node linkType: hard -"proxy-from-env@npm:1.1.0, proxy-from-env@npm:^1.0.0": +"proxy-from-env@npm:1.1.0, proxy-from-env@npm:^1.0.0, proxy-from-env@npm:^1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" checksum: ed7fcc2ba0a33404958e34d95d18638249a68c430e30fcb6c478497d72739ba64ce9810a24f53a7d921d0c065e5b78e3822759800698167256b04659366ca4d4 @@ -37705,7 +37446,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.5, readable-stream@npm:^2.0.6, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.5": +"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.5": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" dependencies: @@ -37731,6 +37472,17 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:^3.6.2": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: ^2.0.3 + string_decoder: ^1.1.1 + util-deprecate: ^1.0.1 + checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d + languageName: node + linkType: hard + "readable-stream@npm:^4.0.0": version: 4.2.0 resolution: "readable-stream@npm:4.2.0" @@ -38603,15 +38355,15 @@ __metadata: linkType: hard "rollup-plugin-copy@npm:^3.4.0": - version: 3.4.0 - resolution: "rollup-plugin-copy@npm:3.4.0" + version: 3.5.0 + resolution: "rollup-plugin-copy@npm:3.5.0" dependencies: "@types/fs-extra": ^8.0.1 colorette: ^1.1.0 fs-extra: ^8.1.0 globby: 10.0.1 is-plain-object: ^3.0.0 - checksum: 6eed5b2498fbe44d694f65ae9a9287b13a606b98a232b5a144a94140e8631efae5f5953b573ba68bf2dc59ab11c223ad3ea6f6cd15b51f42287f4bcc234f0e8b + checksum: 706ba6bd2052b95d1037f12963ff4b50749730f18aefad10544f9574aff7c035c88c5dd9ae1f0c0408cf09862e595a0ea4d68e13c2717addaea2bda3ade0d0e0 languageName: node linkType: hard @@ -38862,7 +38614,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -39218,7 +38970,7 @@ __metadata: languageName: node linkType: hard -"set-blocking@npm:^2.0.0, set-blocking@npm:~2.0.0": +"set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 @@ -39861,9 +39613,9 @@ __metadata: linkType: hard "sprintf-js@npm:^1.1.2": - version: 1.1.2 - resolution: "sprintf-js@npm:1.1.2" - checksum: d4bb46464632b335e5faed381bd331157e0af64915a98ede833452663bc672823db49d7531c32d58798e85236581fb7342fd0270531ffc8f914e186187bf1c90 + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: a3fdac7b49643875b70864a9d9b469d87a40dfeaf5d34d9d0c5b1cda5fd7d065531fcb43c76357d62254c57184a7b151954156563a4d6a747015cfb41021cad0 languageName: node linkType: hard @@ -40132,17 +39884,6 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^1.0.1": - version: 1.0.2 - resolution: "string-width@npm:1.0.2" - dependencies: - code-point-at: ^1.0.0 - is-fullwidth-code-point: ^1.0.0 - strip-ansi: ^3.0.0 - checksum: 5c79439e95bc3bd7233a332c5f5926ab2ee90b23816ed4faa380ce3b2576d7800b0a5bb15ae88ed28737acc7ea06a518c2eef39142dd727adad0e45c776cd37e - languageName: node - linkType: hard - "string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2": version: 5.1.2 resolution: "string-width@npm:5.1.2" @@ -40210,15 +39951,6 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1": - version: 3.0.1 - resolution: "strip-ansi@npm:3.0.1" - dependencies: - ansi-regex: ^2.0.0 - checksum: 9b974de611ce5075c70629c00fa98c46144043db92ae17748fb780f706f7a789e9989fd10597b7c2053ae8d1513fd707816a91f1879b2f71e6ac0b6a863db465 - languageName: node - linkType: hard - "strip-ansi@npm:^7.0.1": version: 7.0.1 resolution: "strip-ansi@npm:7.0.1" @@ -41952,12 +41684,28 @@ __metadata: languageName: node linkType: hard -"undici@npm:^5.1.0, undici@npm:^5.12.0, undici@npm:^5.19.1, undici@npm:^5.22.1, undici@npm:^5.8.0": - version: 5.22.1 - resolution: "undici@npm:5.22.1" +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 3192ef6f3fd5df652f2dc1cd782b49d6ff14dc98e5dced492aa8a8c65425227da5da6aafe22523c67f035a272c599bb89cfe803c1db6311e44bed3042fc25487 + languageName: node + linkType: hard + +"undici@npm:^5.1.0, undici@npm:^5.12.0, undici@npm:^5.22.1, undici@npm:^5.8.0": + version: 5.26.3 + resolution: "undici@npm:5.26.3" dependencies: - busboy: ^1.6.0 - checksum: 048a3365f622be44fb319316cedfaa241c59cf7f3368ae7667a12323447e1822e8cc3d00f6956c852d1478a6fde1cbbe753f49e05f2fdaed229693e716ebaf35 + "@fastify/busboy": ^2.0.0 + checksum: aaa9aadb712cf80e1a9cea2377e4842670105e00abbc184a21770ea5a8b77e4e2eadc200eac62442e74a1cd3b16a840c6f73b112b9e886bd3c1a125eb22e4f21 + languageName: node + linkType: hard + +"undici@npm:^5.19.1": + version: 5.27.2 + resolution: "undici@npm:5.27.2" + dependencies: + "@fastify/busboy": ^2.0.0 + checksum: 22bbdd763798700979986546d70072b67223189353d2a811efa9c6e44476161a0d1781ffe24115221f69a1b344b95d5926bd39a6eb760a2cd8804781cec0c5eb languageName: node linkType: hard @@ -43310,6 +43058,23 @@ __metadata: languageName: node linkType: hard +"vue-eslint-parser@npm:^9.3.1": + version: 9.3.2 + resolution: "vue-eslint-parser@npm:9.3.2" + dependencies: + debug: ^4.3.4 + eslint-scope: ^7.1.1 + eslint-visitor-keys: ^3.3.0 + espree: ^9.3.1 + esquery: ^1.4.0 + lodash: ^4.17.21 + semver: ^7.3.6 + peerDependencies: + eslint: ">=6.0.0" + checksum: f55056fcd94b6c9d4e940616294f72fb20ae9561a23bc2d7f32499307db7af128dc84d8c43cb8c1a267e0c5d34fc61a9215656a5ea7413df4f58eec81175c6ad + languageName: node + linkType: hard + "vue-histogram-slider@npm:^0.3.8": version: 0.3.8 resolution: "vue-histogram-slider@npm:0.3.8" @@ -44039,7 +43804,7 @@ __metadata: languageName: node linkType: hard -"wide-align@npm:^1.1.0, wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": +"wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: @@ -44410,9 +44175,9 @@ __metadata: linkType: hard "xxhash-wasm@npm:^1.0.1": - version: 1.0.1 - resolution: "xxhash-wasm@npm:1.0.1" - checksum: beb7677772724508c6ffde7924c0c8b3b879337d1d1598563af09e87befc6a335015bec0fa41873cc27d4745f32dea19d20f9c606ea71d29e1c949e8a13d5c24 + version: 1.0.2 + resolution: "xxhash-wasm@npm:1.0.2" + checksum: 11fec6e6196e37ad96cc958b7a4477dc30caf5b4da889a02a84f6f663ab8cd3c9be6ae405e66f0af0404301f27c39375191c5254f0409a793020e2093afd1409 languageName: node linkType: hard From 79453c8346ba61ab9409789a4b60bc1ac9abb8ea Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Wed, 22 Nov 2023 11:23:56 +0300 Subject: [PATCH 058/283] Update yarn.lock post merge --- .../dui3/lib/common/generated/gql/graphql.ts | 148 ++++- yarn.lock | 604 +++++++++++++++++- 2 files changed, 724 insertions(+), 28 deletions(-) diff --git a/packages/dui3/lib/common/generated/gql/graphql.ts b/packages/dui3/lib/common/generated/gql/graphql.ts index 30a0b880ea..f8fb6c6ba5 100644 --- a/packages/dui3/lib/common/generated/gql/graphql.ts +++ b/packages/dui3/lib/common/generated/gql/graphql.ts @@ -148,8 +148,8 @@ export type ApiTokenCreateInput = { export type AppAuthor = { __typename?: 'AppAuthor'; avatar?: Maybe; - id?: Maybe; - name?: Maybe; + id: Scalars['String']; + name: Scalars['String']; }; export type AppCreateInput = { @@ -182,6 +182,98 @@ export type AuthStrategy = { url: Scalars['String']; }; +export type AutomationCreateInput = { + automationId: Scalars['String']; + automationName: Scalars['String']; + automationRevisionId: Scalars['String']; + modelId: Scalars['String']; + projectId: Scalars['String']; + webhookId?: InputMaybe; +}; + +export type AutomationFunctionRun = { + __typename?: 'AutomationFunctionRun'; + contextView?: Maybe; + elapsed: Scalars['Float']; + functionId: Scalars['String']; + functionLogo?: Maybe; + functionName: Scalars['String']; + id: Scalars['ID']; + resultVersions: Array; + /** + * NOTE: this is the schema for the results field below! + * Current schema: { + * version: "1.0.0", + * values: { + * objectResults: Record | null + * visualoverrides: Records | null + * }[]> + * blobIds?: string[] + * } + * } + */ + results?: Maybe; + status: AutomationRunStatus; + statusMessage?: Maybe; +}; + +export type AutomationMutations = { + __typename?: 'AutomationMutations'; + create: Scalars['Boolean']; + functionRunStatusReport: Scalars['Boolean']; +}; + + +export type AutomationMutationsCreateArgs = { + input: AutomationCreateInput; +}; + + +export type AutomationMutationsFunctionRunStatusReportArgs = { + input: AutomationRunStatusUpdateInput; +}; + +export type AutomationRun = { + __typename?: 'AutomationRun'; + automationId: Scalars['String']; + automationName: Scalars['String']; + createdAt: Scalars['DateTime']; + functionRuns: Array; + id: Scalars['ID']; + /** Resolved from all function run statuses */ + status: AutomationRunStatus; + updatedAt: Scalars['DateTime']; + versionId: Scalars['String']; +}; + +export enum AutomationRunStatus { + Failed = 'FAILED', + Initializing = 'INITIALIZING', + Running = 'RUNNING', + Succeeded = 'SUCCEEDED' +} + +export type AutomationRunStatusUpdateInput = { + automationId: Scalars['String']; + automationRevisionId: Scalars['String']; + automationRunId: Scalars['String']; + functionRuns: Array; + versionId: Scalars['String']; +}; + +export type AutomationsStatus = { + __typename?: 'AutomationsStatus'; + automationRuns: Array; + id: Scalars['ID']; + status: AutomationRunStatus; + statusMessage?: Maybe; +}; + export type BlobMetadata = { __typename?: 'BlobMetadata'; createdAt: Scalars['DateTime']; @@ -588,6 +680,27 @@ export type FileUpload = { userId: Scalars['String']; }; +export type FunctionRunStatusInput = { + contextView?: InputMaybe; + elapsed: Scalars['Float']; + functionId: Scalars['String']; + functionLogo?: InputMaybe; + functionName: Scalars['String']; + resultVersionIds: Array; + /** + * Current schema: { + * version: "1.0.0", + * values: { + * speckleObjects: Record + * blobIds?: string[] + * } + * } + */ + results?: InputMaybe; + status: AutomationRunStatus; + statusMessage?: InputMaybe; +}; + export type LegacyCommentViewerData = { __typename?: 'LegacyCommentViewerData'; /** @@ -678,6 +791,7 @@ export type LimitedUserTimelineArgs = { export type Model = { __typename?: 'Model'; author: LimitedUser; + automationStatus?: Maybe; /** Return a model tree of children */ childrenTree: Array; /** All comment threads in this model */ @@ -805,6 +919,7 @@ export type Mutation = { appRevokeAccess?: Maybe; /** Update an existing third party application. **Note: This will invalidate all existing tokens, refresh tokens and access codes and will require existing users to re-authorize it.** */ appUpdate: Scalars['Boolean']; + automationMutations: AutomationMutations; branchCreate: Scalars['String']; branchDelete: Scalars['Boolean']; branchUpdate: Scalars['Boolean']; @@ -1305,7 +1420,7 @@ export type Project = { /** Return metadata about resources being requested in the viewer */ viewerResources: Array; visibility: ProjectVisibility; - webhooks?: Maybe; + webhooks: WebhookCollection; }; @@ -1361,6 +1476,14 @@ export type ProjectWebhooksArgs = { id?: InputMaybe; }; +export type ProjectAutomationsStatusUpdatedMessage = { + __typename?: 'ProjectAutomationsStatusUpdatedMessage'; + model: Model; + project: Project; + status: AutomationsStatus; + version: Version; +}; + export type ProjectCollaborator = { __typename?: 'ProjectCollaborator'; role: Scalars['String']; @@ -1903,6 +2026,8 @@ export type ServerInfo = { adminContact?: Maybe; /** The authentication strategies available on this server. */ authStrategies: Array; + /** Base URL of Speckle Automate, if set */ + automateUrl?: Maybe; blobSizeLimitBytes: Scalars['Int']; canonicalUrl?: Maybe; company?: Maybe; @@ -2049,7 +2174,7 @@ export type Stream = { role?: Maybe; size?: Maybe; updatedAt: Scalars['DateTime']; - webhooks?: Maybe; + webhooks: WebhookCollection; }; @@ -2225,6 +2350,7 @@ export type Subscription = { commitDeleted?: Maybe; /** Subscribe to commit updated event. */ commitUpdated?: Maybe; + projectAutomationsStatusUpdated: ProjectAutomationsStatusUpdatedMessage; /** * Subscribe to updates to resource comments/threads. Optionally specify resource ID string to only receive * updates regarding comments for those resources. @@ -2312,6 +2438,11 @@ export type SubscriptionCommitUpdatedArgs = { }; +export type SubscriptionProjectAutomationsStatusUpdatedArgs = { + projectId: Scalars['String']; +}; + + export type SubscriptionProjectCommentsUpdatedArgs = { target: ViewerUpdateTrackingTarget; }; @@ -2554,6 +2685,7 @@ export type UserUpdateInput = { export type Version = { __typename?: 'Version'; authorUser?: Maybe; + automationStatus?: Maybe; /** All comment threads in this version */ commentThreads: CommentCollection; createdAt: Scalars['DateTime']; @@ -2676,10 +2808,12 @@ export type Webhook = { __typename?: 'Webhook'; description?: Maybe; enabled?: Maybe; + hasSecret: Scalars['Boolean']; history?: Maybe; id: Scalars['String']; + projectId: Scalars['String']; streamId: Scalars['String']; - triggers: Array>; + triggers: Array; url: Scalars['String']; }; @@ -2690,8 +2824,8 @@ export type WebhookHistoryArgs = { export type WebhookCollection = { __typename?: 'WebhookCollection'; - items?: Maybe>>; - totalCount?: Maybe; + items: Array; + totalCount: Scalars['Int']; }; export type WebhookCreateInput = { diff --git a/yarn.lock b/yarn.lock index 39d51cc357..50423479c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6990,6 +6990,28 @@ __metadata: languageName: node linkType: hard +"@electron/get@npm:^1.14.1": + version: 1.14.1 + resolution: "@electron/get@npm:1.14.1" + dependencies: + debug: ^4.1.1 + env-paths: ^2.2.0 + fs-extra: ^8.1.0 + global-agent: ^3.0.0 + global-tunnel-ng: ^2.7.1 + got: ^9.6.0 + progress: ^2.0.3 + semver: ^6.2.0 + sumchecker: ^3.0.1 + dependenciesMeta: + global-agent: + optional: true + global-tunnel-ng: + optional: true + checksum: 21fec5e82bbee8f9fa183b46e05675b137c3130c7999d3b2b34a0047d1a06ec3c76347b9bbdb9911ba9b2123697804e360a15dda9db614c0226d5d4dcc4d6d15 + languageName: node + linkType: hard + "@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": version: 1.0.0 resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.0" @@ -12106,6 +12128,13 @@ __metadata: languageName: node linkType: hard +"@sindresorhus/is@npm:^0.14.0": + version: 0.14.0 + resolution: "@sindresorhus/is@npm:0.14.0" + checksum: 971e0441dd44ba3909b467219a5e242da0fc584048db5324cfb8048148fa8dcc9d44d71e3948972c4f6121d24e5da402ef191420d1266a95f713bb6d6e59c98a + languageName: node + linkType: hard + "@sindresorhus/is@npm:^4.0.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" @@ -12209,6 +12238,13 @@ __metadata: languageName: node linkType: hard +"@socket.io/component-emitter@npm:~3.1.0": + version: 3.1.0 + resolution: "@socket.io/component-emitter@npm:3.1.0" + checksum: db069d95425b419de1514dffe945cc439795f6a8ef5b9465715acf5b8b50798e2c91b8719cbf5434b3fe7de179d6cdcd503c277b7871cb3dd03febb69bdd50fa + languageName: node + linkType: hard + "@speckle/dui3@workspace:packages/dui3": version: 0.0.0-use.local resolution: "@speckle/dui3@workspace:packages/dui3" @@ -12228,10 +12264,12 @@ __metadata: "@types/node": ^18 "@vitejs/plugin-legacy": ^4.0.3 "@vue/apollo-composable": ^4.0.0-beta.5 + "@vue/devtools": ^6.5.0 "@vueuse/core": ^9.13.0 apollo-upload-client: ^17.0.0 autoprefixer: ^10.4.14 concurrently: ^7.5.0 + dotenv: ^16.3.1 eslint: ^8.24.0 eslint-config-prettier: ^8.5.0 eslint-plugin-nuxt: ^4.0.0 @@ -12257,6 +12295,7 @@ __metadata: tailwindcss: ^3.3.2 type-fest: ^3.5.1 typescript: ^4.8.3 + vee-validate: 4.7.0 vue-tippy: ^6.2.0 vue-tsc: 1.3.4 languageName: unknown @@ -14309,6 +14348,15 @@ __metadata: languageName: node linkType: hard +"@szmarczak/http-timer@npm:^1.1.2": + version: 1.1.2 + resolution: "@szmarczak/http-timer@npm:1.1.2" + dependencies: + defer-to-connect: ^1.0.1 + checksum: 4d9158061c5f397c57b4988cde33a163244e4f02df16364f103971957a32886beb104d6180902cbe8b38cb940e234d9f98a4e486200deca621923f62f50a06fe + languageName: node + linkType: hard + "@szmarczak/http-timer@npm:^4.0.5": version: 4.0.6 resolution: "@szmarczak/http-timer@npm:4.0.6" @@ -15081,6 +15129,13 @@ __metadata: languageName: node linkType: hard +"@types/cookie@npm:^0.4.1": + version: 0.4.1 + resolution: "@types/cookie@npm:0.4.1" + checksum: 3275534ed69a76c68eb1a77d547d75f99fedc80befb75a3d1d03662fb08d697e6f8b1274e12af1a74c6896071b11510631ba891f64d30c78528d0ec45a9c1a18 + languageName: node + linkType: hard + "@types/cookiejar@npm:*": version: 2.1.2 resolution: "@types/cookiejar@npm:2.1.2" @@ -15095,6 +15150,15 @@ __metadata: languageName: node linkType: hard +"@types/cors@npm:^2.8.12": + version: 2.8.17 + resolution: "@types/cors@npm:2.8.17" + dependencies: + "@types/node": "*" + checksum: 469bd85e29a35977099a3745c78e489916011169a664e97c4c3d6538143b0a16e4cc72b05b407dc008df3892ed7bf595f9b7c0f1f4680e169565ee9d64966bde + languageName: node + linkType: hard + "@types/cross-spawn@npm:^6.0.2": version: 6.0.2 resolution: "@types/cross-spawn@npm:6.0.2" @@ -15443,7 +15507,7 @@ __metadata: languageName: node linkType: hard -"@types/keyv@npm:^3.1.4": +"@types/keyv@npm:^3.1.1, @types/keyv@npm:^3.1.4": version: 3.1.4 resolution: "@types/keyv@npm:3.1.4" dependencies: @@ -15636,6 +15700,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:>=10.0.0": + version: 20.9.3 + resolution: "@types/node@npm:20.9.3" + dependencies: + undici-types: ~5.26.4 + checksum: 0cfbfd2a8bd18acc75aa4d7685c7dcf56344f48addd4041d306dc194f3132f8014d56fd49fcb26bcdf400b883f9527e5e2beaf52dfce029cef15c69b8ed2e72a + languageName: node + linkType: hard + "@types/node@npm:^10.1.0": version: 10.17.60 resolution: "@types/node@npm:10.17.60" @@ -15657,6 +15730,13 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^16.11.26": + version: 16.18.63 + resolution: "@types/node@npm:16.18.63" + checksum: 5600ad585e8bf68359cfbff965ebd6f04f22130232d057949c88840bf8acf6a05fbac343f69deac417439c47e8e5e396fdb049f575382f534bb98c0e8ac62a46 + languageName: node + linkType: hard + "@types/node@npm:^17.0.43": version: 17.0.43 resolution: "@types/node@npm:17.0.43" @@ -17177,6 +17257,23 @@ __metadata: languageName: node linkType: hard +"@vue/devtools@npm:^6.5.0": + version: 6.5.1 + resolution: "@vue/devtools@npm:6.5.1" + dependencies: + cross-spawn: ^7.0.3 + electron: ^21.0.1 + express: ^4.17.1 + ip: ^1.1.5 + socket.io: ^4.4.0 + socket.io-client: ^4.4.1 + utf-8-validate: ^5.0.9 + bin: + vue-devtools: bin.js + checksum: 0ea1cf23f78cd0f5eae0389f12cd455abba063b61f0c81ab9c4fae40e357f377d2bb00a60150b810d0389d8d6cf7a8d02eca97eb9a02502148af14b1f95c68d3 + languageName: node + linkType: hard + "@vue/eslint-config-typescript@npm:^11.0.1": version: 11.0.1 resolution: "@vue/eslint-config-typescript@npm:11.0.1" @@ -19357,6 +19454,13 @@ __metadata: languageName: node linkType: hard +"base64id@npm:2.0.0, base64id@npm:~2.0.0": + version: 2.0.0 + resolution: "base64id@npm:2.0.0" + checksum: 581b1d37e6cf3738b7ccdd4d14fe2bfc5c238e696e2720ee6c44c183b838655842e22034e53ffd783f872a539915c51b0d4728a49c7cc678ac5a758e00d62168 + languageName: node + linkType: hard + "base64url@npm:3.x.x, base64url@npm:^3.0.0, base64url@npm:^3.0.1": version: 3.0.1 resolution: "base64url@npm:3.0.1" @@ -19553,6 +19657,26 @@ __metadata: languageName: node linkType: hard +"body-parser@npm:1.20.1": + version: 1.20.1 + resolution: "body-parser@npm:1.20.1" + dependencies: + bytes: 3.1.2 + content-type: ~1.0.4 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: ~1.6.18 + unpipe: 1.0.0 + checksum: f1050dbac3bede6a78f0b87947a8d548ce43f91ccc718a50dd774f3c81f2d8b04693e52acf62659fad23101827dd318da1fb1363444ff9a8482b886a3e4a5266 + languageName: node + linkType: hard + "bonjour-service@npm:^1.0.11": version: 1.0.12 resolution: "bonjour-service@npm:1.0.12" @@ -19572,6 +19696,13 @@ __metadata: languageName: node linkType: hard +"boolean@npm:^3.0.1": + version: 3.2.0 + resolution: "boolean@npm:3.2.0" + checksum: fb29535b8bf710ef45279677a86d14f5185d604557204abd2ca5fa3fb2a5c80e04d695c8dbf13ab269991977a79bb6c04b048220a6b2a3849853faa94f4a7d77 + languageName: node + linkType: hard + "bowser@npm:^2.11.0": version: 2.11.0 resolution: "bowser@npm:2.11.0" @@ -20129,6 +20260,21 @@ __metadata: languageName: node linkType: hard +"cacheable-request@npm:^6.0.0": + version: 6.1.0 + resolution: "cacheable-request@npm:6.1.0" + dependencies: + clone-response: ^1.0.2 + get-stream: ^5.1.0 + http-cache-semantics: ^4.0.0 + keyv: ^3.0.0 + lowercase-keys: ^2.0.0 + normalize-url: ^4.1.0 + responselike: ^1.0.2 + checksum: b510b237b18d17e89942e9ee2d2a077cb38db03f12167fd100932dfa8fc963424bfae0bfa1598df4ae16c944a5484e43e03df8f32105b04395ee9495e9e4e9f1 + languageName: node + linkType: hard + "cacheable-request@npm:^7.0.2": version: 7.0.2 resolution: "cacheable-request@npm:7.0.2" @@ -21212,7 +21358,7 @@ __metadata: languageName: node linkType: hard -"config-chain@npm:^1.1.13": +"config-chain@npm:^1.1.11, config-chain@npm:^1.1.13": version: 1.1.13 resolution: "config-chain@npm:1.1.13" dependencies: @@ -21378,7 +21524,7 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.4.2, cookie@npm:^0.4.1": +"cookie@npm:0.4.2, cookie@npm:^0.4.1, cookie@npm:~0.4.1": version: 0.4.2 resolution: "cookie@npm:0.4.2" checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b @@ -21458,7 +21604,7 @@ __metadata: languageName: node linkType: hard -"cors@npm:^2.8.5": +"cors@npm:^2.8.5, cors@npm:~2.8.5": version: 2.8.5 resolution: "cors@npm:2.8.5" dependencies: @@ -22241,7 +22387,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:~4.3.1, debug@npm:~4.3.2": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -22307,6 +22453,15 @@ __metadata: languageName: node linkType: hard +"decompress-response@npm:^3.3.0": + version: 3.3.0 + resolution: "decompress-response@npm:3.3.0" + dependencies: + mimic-response: ^1.0.0 + checksum: 952552ac3bd7de2fc18015086b09468645c9638d98a551305e485230ada278c039c91116e946d07894b39ee53c0f0d5b6473f25a224029344354513b412d7380 + languageName: node + linkType: hard + "decompress-response@npm:^6.0.0": version: 6.0.0 resolution: "decompress-response@npm:6.0.0" @@ -22433,6 +22588,13 @@ __metadata: languageName: node linkType: hard +"defer-to-connect@npm:^1.0.1": + version: 1.1.3 + resolution: "defer-to-connect@npm:1.1.3" + checksum: 9491b301dcfa04956f989481ba7a43c2231044206269eb4ab64a52d6639ee15b1252262a789eb4239fb46ab63e44d4e408641bae8e0793d640aee55398cb3930 + languageName: node + linkType: hard + "defer-to-connect@npm:^2.0.0": version: 2.0.1 resolution: "defer-to-connect@npm:2.0.1" @@ -23084,6 +23246,13 @@ __metadata: languageName: node linkType: hard +"duplexer3@npm:^0.1.4": + version: 0.1.5 + resolution: "duplexer3@npm:0.1.5" + checksum: e677cb4c48f031ca728601d6a20bf6aed4c629d69ef9643cb89c67583d673c4ec9317cc6427501f38bd8c368d3a18f173987cc02bd99d8cf8fe3d94259a22a20 + languageName: node + linkType: hard + "duplexer@npm:^0.1.2": version: 0.1.2 resolution: "duplexer@npm:0.1.2" @@ -23219,6 +23388,19 @@ __metadata: languageName: node linkType: hard +"electron@npm:^21.0.1": + version: 21.4.4 + resolution: "electron@npm:21.4.4" + dependencies: + "@electron/get": ^1.14.1 + "@types/node": ^16.11.26 + extract-zip: ^2.0.1 + bin: + electron: cli.js + checksum: 55962e67469ebfb5b4272d027698018217b68a2411d757ed66c9eaae52e212c1414e12251e9c3f6c29a48fe7e0c376cc907862fa74bf9d7549a8d972260f475f + languageName: node + linkType: hard + "elliptic@npm:^6.5.3, elliptic@npm:^6.5.4": version: 6.5.4 resolution: "elliptic@npm:6.5.4" @@ -23317,6 +23499,44 @@ __metadata: languageName: node linkType: hard +"engine.io-client@npm:~6.5.2": + version: 6.5.3 + resolution: "engine.io-client@npm:6.5.3" + dependencies: + "@socket.io/component-emitter": ~3.1.0 + debug: ~4.3.1 + engine.io-parser: ~5.2.1 + ws: ~8.11.0 + xmlhttprequest-ssl: ~2.0.0 + checksum: a72596fae99afbdb899926fccdb843f8fa790c69085b881dde121285a6935da2c2c665ebe88e0e6aa4285637782df84ac882084ff4892ad2430b059fc0045db0 + languageName: node + linkType: hard + +"engine.io-parser@npm:~5.2.1": + version: 5.2.1 + resolution: "engine.io-parser@npm:5.2.1" + checksum: 55b0e8e18500f50c1573675c53597c5552554ead08d3f30ff19fde6409e48f882a8e01f84e9772cd155c18a1d653d06f6bf57b4e1f8b834c63c9eaf3b657b88e + languageName: node + linkType: hard + +"engine.io@npm:~6.5.2": + version: 6.5.4 + resolution: "engine.io@npm:6.5.4" + dependencies: + "@types/cookie": ^0.4.1 + "@types/cors": ^2.8.12 + "@types/node": ">=10.0.0" + accepts: ~1.3.4 + base64id: 2.0.0 + cookie: ~0.4.1 + cors: ~2.8.5 + debug: ~4.3.1 + engine.io-parser: ~5.2.1 + ws: ~8.11.0 + checksum: d5b55cbac718c5b1c10800314379923f8c7ef9e3a8a60c6827ed86303d1154b81d354a89fdecf4cbb773515c82c84a98d3c791ff88279393b53625dd67299d30 + languageName: node + linkType: hard + "enhanced-resolve@npm:^4.1.1": version: 4.5.0 resolution: "enhanced-resolve@npm:4.5.0" @@ -23514,7 +23734,7 @@ __metadata: languageName: node linkType: hard -"es6-error@npm:^4.0.1": +"es6-error@npm:^4.0.1, es6-error@npm:^4.1.1": version: 4.1.1 resolution: "es6-error@npm:4.1.1" checksum: ae41332a51ec1323da6bbc5d75b7803ccdeddfae17c41b6166ebbafc8e8beb7a7b80b884b7fab1cc80df485860ac3c59d78605e860bb4f8cd816b3d6ade0d010 @@ -24672,6 +24892,45 @@ __metadata: languageName: node linkType: hard +"express@npm:^4.17.1": + version: 4.18.2 + resolution: "express@npm:4.18.2" + dependencies: + accepts: ~1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: ~1.0.4 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + etag: ~1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: ~1.1.2 + on-finished: 2.4.1 + parseurl: ~1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: ~2.0.7 + qs: 6.11.0 + range-parser: ~1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: ~1.6.18 + utils-merge: 1.0.1 + vary: ~1.1.2 + checksum: 3c4b9b076879442f6b968fe53d85d9f1eeacbb4f4c41e5f16cc36d77ce39a2b0d81b3f250514982110d815b2f7173f5561367f9110fcc541f9371948e8c8b037 + languageName: node + linkType: hard + "express@npm:^4.17.3": version: 4.18.1 resolution: "express@npm:4.18.1" @@ -24755,7 +25014,7 @@ __metadata: languageName: node linkType: hard -"extract-zip@npm:2.0.1": +"extract-zip@npm:2.0.1, extract-zip@npm:^2.0.1": version: 2.0.1 resolution: "extract-zip@npm:2.0.1" dependencies: @@ -25497,6 +25756,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^8.1.0": + version: 8.1.0 + resolution: "fs-extra@npm:8.1.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^4.0.0 + universalify: ^0.1.0 + checksum: bf44f0e6cea59d5ce071bba4c43ca76d216f89e402dc6285c128abc0902e9b8525135aa808adad72c9d5d218e9f4bcc63962815529ff2f684ad532172a284880 + languageName: node + linkType: hard + "fs-extra@npm:~7.0.1": version: 7.0.1 resolution: "fs-extra@npm:7.0.1" @@ -25738,6 +26008,15 @@ __metadata: languageName: node linkType: hard +"get-stream@npm:^4.1.0": + version: 4.1.0 + resolution: "get-stream@npm:4.1.0" + dependencies: + pump: ^3.0.0 + checksum: 443e1914170c15bd52ff8ea6eff6dfc6d712b031303e36302d2778e3de2506af9ee964d6124010f7818736dcfde05c04ba7ca6cc26883106e084357a17ae7d73 + languageName: node + linkType: hard + "get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" @@ -26022,6 +26301,20 @@ __metadata: languageName: node linkType: hard +"global-agent@npm:^3.0.0": + version: 3.0.0 + resolution: "global-agent@npm:3.0.0" + dependencies: + boolean: ^3.0.1 + es6-error: ^4.1.1 + matcher: ^3.0.0 + roarr: ^2.15.3 + semver: ^7.3.2 + serialize-error: ^7.0.1 + checksum: 75074d80733b4bd5386c47f5df028e798018025beac0ab310e9908c72bf5639e408203e7bca0130d5ee01b5f4abc6d34385d96a9f950ea5fe1979bb431c808f7 + languageName: node + linkType: hard + "global-dirs@npm:^0.1.1": version: 0.1.1 resolution: "global-dirs@npm:0.1.1" @@ -26106,6 +26399,18 @@ __metadata: languageName: node linkType: hard +"global-tunnel-ng@npm:^2.7.1": + version: 2.7.1 + resolution: "global-tunnel-ng@npm:2.7.1" + dependencies: + encodeurl: ^1.0.2 + lodash: ^4.17.10 + npm-conf: ^1.1.3 + tunnel: ^0.0.6 + checksum: b7e016093eab6058b5fdd8caea31c22dc1a607f0f0b41c001ade5e0227c5d74efe9ce9bae56316d794bc1cedd461a187b8b7e8f0a3eb4d194972cdfb9d860af2 + languageName: node + linkType: hard + "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -26122,6 +26427,15 @@ __metadata: languageName: node linkType: hard +"globalthis@npm:^1.0.1": + version: 1.0.3 + resolution: "globalthis@npm:1.0.3" + dependencies: + define-properties: ^1.1.3 + checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 + languageName: node + linkType: hard + "globby@npm:^10.0.1": version: 10.0.2 resolution: "globby@npm:10.0.2" @@ -26239,6 +26553,25 @@ __metadata: languageName: node linkType: hard +"got@npm:^9.6.0": + version: 9.6.0 + resolution: "got@npm:9.6.0" + dependencies: + "@sindresorhus/is": ^0.14.0 + "@szmarczak/http-timer": ^1.1.2 + cacheable-request: ^6.0.0 + decompress-response: ^3.3.0 + duplexer3: ^0.1.4 + get-stream: ^4.1.0 + lowercase-keys: ^1.0.1 + mimic-response: ^1.0.1 + p-cancelable: ^1.0.0 + to-readable-stream: ^1.0.0 + url-parse-lax: ^3.0.0 + checksum: 941807bd9704bacf5eb401f0cc1212ffa1f67c6642f2d028fd75900471c221b1da2b8527f4553d2558f3faeda62ea1cf31665f8b002c6137f5de8732f07370b0 + languageName: node + linkType: hard + "graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" @@ -29824,6 +30157,13 @@ __metadata: languageName: node linkType: hard +"json-buffer@npm:3.0.0": + version: 3.0.0 + resolution: "json-buffer@npm:3.0.0" + checksum: 0cecacb8025370686a916069a2ff81f7d55167421b6aa7270ee74e244012650dd6bce22b0852202ea7ff8624fce50ff0ec1bdf95914ccb4553426e290d5a63fa + languageName: node + linkType: hard + "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -29895,7 +30235,7 @@ __metadata: languageName: node linkType: hard -"json-stringify-safe@npm:~5.0.1": +"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee @@ -30046,6 +30386,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^3.0.0": + version: 3.1.0 + resolution: "keyv@npm:3.1.0" + dependencies: + json-buffer: 3.0.0 + checksum: bb7e8f3acffdbafbc2dd5b63f377fe6ec4c0e2c44fc82720449ef8ab54f4a7ce3802671ed94c0f475ae0a8549703353a2124561fcf3317010c141b32ca1ce903 + languageName: node + linkType: hard + "keyv@npm:^4.0.0": version: 4.5.2 resolution: "keyv@npm:4.5.2" @@ -30954,6 +31303,13 @@ __metadata: languageName: node linkType: hard +"lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "lowercase-keys@npm:1.0.1" + checksum: 4d045026595936e09953e3867722e309415ff2c80d7701d067546d75ef698dac218a4f53c6d1d0e7368b47e45fd7529df47e6cb56fbb90523ba599f898b3d147 + languageName: node + linkType: hard + "lowercase-keys@npm:^2.0.0": version: 2.0.0 resolution: "lowercase-keys@npm:2.0.0" @@ -31251,6 +31607,15 @@ __metadata: languageName: node linkType: hard +"matcher@npm:^3.0.0": + version: 3.0.0 + resolution: "matcher@npm:3.0.0" + dependencies: + escape-string-regexp: ^4.0.0 + checksum: 8bee1a7ab7609c2c21d9c9254b6785fa708eadf289032b556d57a34e98fcd4c537659a004dafee6ce80ab157099e645c199dc52678dff1e7fb0a6684e0da4dbe + languageName: node + linkType: hard + "mathml-tag-names@npm:^2.1.3": version: 2.1.3 resolution: "mathml-tag-names@npm:2.1.3" @@ -31533,7 +31898,7 @@ __metadata: languageName: node linkType: hard -"mimic-response@npm:^1.0.0": +"mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1": version: 1.0.1 resolution: "mimic-response@npm:1.0.1" checksum: 034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 @@ -32849,6 +33214,17 @@ __metadata: languageName: node linkType: hard +"node-gyp-build@npm:^4.3.0": + version: 4.7.0 + resolution: "node-gyp-build@npm:4.7.0" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 5b0417487c8b30c36e23974f968fe4c166dc9ee0707ec17a74ff6c8265af9ec9e2bab9ca36c5113b828fdb384f405fcd546231c215c721559a776a07b5c0b98b + languageName: node + linkType: hard + "node-gyp@npm:^9.0.0": version: 9.3.1 resolution: "node-gyp@npm:9.3.1" @@ -33104,6 +33480,13 @@ __metadata: languageName: node linkType: hard +"normalize-url@npm:^4.1.0": + version: 4.5.1 + resolution: "normalize-url@npm:4.5.1" + checksum: 9a9dee01df02ad23e171171893e56e22d752f7cff86fb96aafeae074819b572ea655b60f8302e2d85dbb834dc885c972cc1c573892fea24df46b2765065dd05a + languageName: node + linkType: hard + "normalize-url@npm:^6.0.1": version: 6.1.0 resolution: "normalize-url@npm:6.1.0" @@ -33120,6 +33503,16 @@ __metadata: languageName: node linkType: hard +"npm-conf@npm:^1.1.3": + version: 1.1.3 + resolution: "npm-conf@npm:1.1.3" + dependencies: + config-chain: ^1.1.11 + pify: ^3.0.0 + checksum: 2d4e933b657623d98183ec408d17318547296b1cd17c4d3587e2920c554675f24f829d8f5f7f84db3a020516678fdcd01952ebaaf0e7fa8a17f6c39be4154bef + languageName: node + linkType: hard + "npm-install-checks@npm:^6.0.0": version: 6.0.0 resolution: "npm-install-checks@npm:6.0.0" @@ -33870,6 +34263,13 @@ __metadata: languageName: node linkType: hard +"p-cancelable@npm:^1.0.0": + version: 1.1.0 + resolution: "p-cancelable@npm:1.1.0" + checksum: 2db3814fef6d9025787f30afaee4496a8857a28be3c5706432cbad76c688a6db1874308f48e364a42f5317f5e41e8e7b4f2ff5c8ff2256dbb6264bc361704ece + languageName: node + linkType: hard + "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" @@ -34647,6 +35047,13 @@ __metadata: languageName: node linkType: hard +"pify@npm:^3.0.0": + version: 3.0.0 + resolution: "pify@npm:3.0.0" + checksum: 6cdcbc3567d5c412450c53261a3f10991665d660961e06605decf4544a61a97a54fefe70a68d5c37080ff9d6f4cf51444c90198d1ba9f9309a6c0d6e9f5c4fde + languageName: node + linkType: hard + "pify@npm:^4.0.1": version: 4.0.1 resolution: "pify@npm:4.0.1" @@ -35697,6 +36104,13 @@ __metadata: languageName: node linkType: hard +"prepend-http@npm:^2.0.0": + version: 2.0.0 + resolution: "prepend-http@npm:2.0.0" + checksum: 7694a9525405447662c1ffd352fcb41b6410c705b739b6f4e3a3e21cf5fdede8377890088e8934436b8b17ba55365a615f153960f30877bf0d0392f9e93503ea + languageName: node + linkType: hard + "prettier@npm:^2.8.7": version: 2.8.7 resolution: "prettier@npm:2.8.7" @@ -35827,7 +36241,7 @@ __metadata: languageName: node linkType: hard -"progress@npm:2.0.3, progress@npm:^2.0.1": +"progress@npm:2.0.3, progress@npm:^2.0.1, progress@npm:^2.0.3": version: 2.0.3 resolution: "progress@npm:2.0.3" checksum: f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 @@ -36490,14 +36904,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.9.7": - version: 6.9.7 - resolution: "qs@npm:6.9.7" - checksum: 5bbd263332ccf320a1f36d04a2019a5834dc20bcb736431eaccde2a39dcba03fb26d2fd00174f5d7bc26aaad1cad86124b18440883ac042ea2a0fca6170c1bf1 - languageName: node - linkType: hard - -"qs@npm:^6.10.0": +"qs@npm:6.11.0, qs@npm:^6.10.0": version: 6.11.0 resolution: "qs@npm:6.11.0" dependencies: @@ -36506,6 +36913,13 @@ __metadata: languageName: node linkType: hard +"qs@npm:6.9.7": + version: 6.9.7 + resolution: "qs@npm:6.9.7" + checksum: 5bbd263332ccf320a1f36d04a2019a5834dc20bcb736431eaccde2a39dcba03fb26d2fd00174f5d7bc26aaad1cad86124b18440883ac042ea2a0fca6170c1bf1 + languageName: node + linkType: hard + "qs@npm:~6.5.2": version: 6.5.3 resolution: "qs@npm:6.5.3" @@ -37685,6 +38099,15 @@ __metadata: languageName: node linkType: hard +"responselike@npm:^1.0.2": + version: 1.0.2 + resolution: "responselike@npm:1.0.2" + dependencies: + lowercase-keys: ^1.0.0 + checksum: 2e9e70f1dcca3da621a80ce71f2f9a9cad12c047145c6ece20df22f0743f051cf7c73505e109814915f23f9e34fb0d358e22827723ee3d56b623533cab8eafcd + languageName: node + linkType: hard + "responselike@npm:^2.0.0": version: 2.0.1 resolution: "responselike@npm:2.0.1" @@ -37804,6 +38227,20 @@ __metadata: languageName: node linkType: hard +"roarr@npm:^2.15.3": + version: 2.15.4 + resolution: "roarr@npm:2.15.4" + dependencies: + boolean: ^3.0.1 + detect-node: ^2.0.4 + globalthis: ^1.0.1 + json-stringify-safe: ^5.0.1 + semver-compare: ^1.0.0 + sprintf-js: ^1.1.2 + checksum: 682e28d5491e3ae99728a35ba188f4f0ccb6347dbd492f95dc9f4bfdfe8ee63d8203ad234766ee2db88c8d7a300714304976eb095ce5c9366fe586c03a21586c + languageName: node + linkType: hard + "rollup-plugin-delete@npm:^2.0.0": version: 2.0.0 resolution: "rollup-plugin-delete@npm:2.0.0" @@ -38193,6 +38630,13 @@ __metadata: languageName: node linkType: hard +"semver-compare@npm:^1.0.0": + version: 1.0.0 + resolution: "semver-compare@npm:1.0.0" + checksum: dd1d7e2909744cf2cf71864ac718efc990297f9de2913b68e41a214319e70174b1d1793ac16e31183b128c2b9812541300cb324db8168e6cf6b570703b171c68 + languageName: node + linkType: hard + "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.6.0, semver@npm:^5.7.1": version: 5.7.2 resolution: "semver@npm:5.7.2" @@ -38213,7 +38657,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.2.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -38285,6 +38729,15 @@ __metadata: languageName: node linkType: hard +"serialize-error@npm:^7.0.1": + version: 7.0.1 + resolution: "serialize-error@npm:7.0.1" + dependencies: + type-fest: ^0.13.1 + checksum: e0aba4dca2fc9fe74ae1baf38dbd99190e1945445a241ba646290f2176cdb2032281a76443b02ccf0caf30da5657d510746506368889a593b9835a497fc0732e + languageName: node + linkType: hard + "serialize-javascript@npm:6.0.0, serialize-javascript@npm:^6.0.0": version: 6.0.0 resolution: "serialize-javascript@npm:6.0.0" @@ -38713,6 +39166,52 @@ __metadata: languageName: node linkType: hard +"socket.io-adapter@npm:~2.5.2": + version: 2.5.2 + resolution: "socket.io-adapter@npm:2.5.2" + dependencies: + ws: ~8.11.0 + checksum: 481251c3547221e57eb5cb247d0b1a3cde4d152a4c1c9051cc887345a7770e59f3b47f1011cac4499e833f01fcfc301ed13c4ec6e72f7dbb48a476375a6344cd + languageName: node + linkType: hard + +"socket.io-client@npm:^4.4.1": + version: 4.7.2 + resolution: "socket.io-client@npm:4.7.2" + dependencies: + "@socket.io/component-emitter": ~3.1.0 + debug: ~4.3.2 + engine.io-client: ~6.5.2 + socket.io-parser: ~4.2.4 + checksum: 8f0ab6b623e014d889bae0cd847ef7826658e8f131bd9367ee5ae4404bb52a6d7b1755b8fbe8e68799b60e92149370a732b381f913b155e40094facb135cd088 + languageName: node + linkType: hard + +"socket.io-parser@npm:~4.2.4": + version: 4.2.4 + resolution: "socket.io-parser@npm:4.2.4" + dependencies: + "@socket.io/component-emitter": ~3.1.0 + debug: ~4.3.1 + checksum: 61540ef99af33e6a562b9effe0fad769bcb7ec6a301aba5a64b3a8bccb611a0abdbe25f469933ab80072582006a78ca136bf0ad8adff9c77c9953581285e2263 + languageName: node + linkType: hard + +"socket.io@npm:^4.4.0": + version: 4.7.2 + resolution: "socket.io@npm:4.7.2" + dependencies: + accepts: ~1.3.4 + base64id: ~2.0.0 + cors: ~2.8.5 + debug: ~4.3.2 + engine.io: ~6.5.2 + socket.io-adapter: ~2.5.2 + socket.io-parser: ~4.2.4 + checksum: 2dfac8983a75e100e889c3dafc83b21b75a9863d0d1ee79cdc60c4391d5d9dffcf3a86fc8deca7568032bc11c2572676335fd2e469c7982f40d19f1141d4b266 + languageName: node + linkType: hard + "sockjs@npm:^0.3.21": version: 0.3.24 resolution: "sockjs@npm:0.3.24" @@ -38969,6 +39468,13 @@ __metadata: languageName: node linkType: hard +"sprintf-js@npm:^1.1.2": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: a3fdac7b49643875b70864a9d9b469d87a40dfeaf5d34d9d0c5b1cda5fd7d065531fcb43c76357d62254c57184a7b151954156563a4d6a747015cfb41021cad0 + languageName: node + linkType: hard + "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" @@ -39582,6 +40088,15 @@ __metadata: languageName: node linkType: hard +"sumchecker@npm:^3.0.1": + version: 3.0.1 + resolution: "sumchecker@npm:3.0.1" + dependencies: + debug: ^4.1.0 + checksum: 31ba7a62c889236b5b07f75b5c250d481158a1ca061b8f234fca0457bdbe48a20e5011c12c715343dc577e111463dc3d9e721b98015a445a2a88c35e0c9f0f91 + languageName: node + linkType: hard + "superagent@npm:3.8.1": version: 3.8.1 resolution: "superagent@npm:3.8.1" @@ -40312,6 +40827,13 @@ __metadata: languageName: node linkType: hard +"to-readable-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "to-readable-stream@npm:1.0.0" + checksum: 2bd7778490b6214a2c40276065dd88949f4cf7037ce3964c76838b8cb212893aeb9cceaaf4352a4c486e3336214c350270f3263e1ce7a0c38863a715a4d9aeb5 + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -40742,6 +41264,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.13.1": + version: 0.13.1 + resolution: "type-fest@npm:0.13.1" + checksum: e6bf2e3c449f27d4ef5d56faf8b86feafbc3aec3025fc9a5fbe2db0a2587c44714521f9c30d8516a833c8c506d6263f5cc11267522b10c6ccdb6cc55b0a9d1c4 + languageName: node + linkType: hard + "type-fest@npm:^0.16.0": version: 0.16.0 resolution: "type-fest@npm:0.16.0" @@ -41053,6 +41582,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 3192ef6f3fd5df652f2dc1cd782b49d6ff14dc98e5dced492aa8a8c65425227da5da6aafe22523c67f035a272c599bb89cfe803c1db6311e44bed3042fc25487 + languageName: node + linkType: hard + "undici@npm:^5.1.0, undici@npm:^5.12.0, undici@npm:^5.22.1, undici@npm:^5.26.2, undici@npm:^5.8.0": version: 5.26.3 resolution: "undici@npm:5.26.3" @@ -41671,6 +42207,15 @@ __metadata: languageName: node linkType: hard +"url-parse-lax@npm:^3.0.0": + version: 3.0.0 + resolution: "url-parse-lax@npm:3.0.0" + dependencies: + prepend-http: ^2.0.0 + checksum: 1040e357750451173132228036aff1fd04abbd43eac1fb3e4fca7495a078bcb8d33cb765fe71ad7e473d9c94d98fd67adca63bd2716c815a2da066198dd37217 + languageName: node + linkType: hard + "url-parse@npm:^1.5.3": version: 1.5.10 resolution: "url-parse@npm:1.5.10" @@ -41740,6 +42285,16 @@ __metadata: languageName: node linkType: hard +"utf-8-validate@npm:^5.0.9": + version: 5.0.10 + resolution: "utf-8-validate@npm:5.0.10" + dependencies: + node-gyp: latest + node-gyp-build: ^4.3.0 + checksum: 5579350a023c66a2326752b6c8804cc7b39dcd251bb088241da38db994b8d78352e388dcc24ad398ab98385ba3c5ffcadb6b5b14b2637e43f767869055e46ba6 + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -41926,7 +42481,7 @@ __metadata: languageName: node linkType: hard -"vee-validate@npm:^4.7.0": +"vee-validate@npm:4.7.0, vee-validate@npm:^4.7.0": version: 4.7.0 resolution: "vee-validate@npm:4.7.0" dependencies: @@ -43286,7 +43841,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.11.0": +"ws@npm:8.11.0, ws@npm:~8.11.0": version: 8.11.0 resolution: "ws@npm:8.11.0" peerDependencies: @@ -43465,6 +44020,13 @@ __metadata: languageName: node linkType: hard +"xmlhttprequest-ssl@npm:~2.0.0": + version: 2.0.0 + resolution: "xmlhttprequest-ssl@npm:2.0.0" + checksum: 1e98df67f004fec15754392a131343ea92e6ab5ac4d77e842378c5c4e4fd5b6a9134b169d96842cc19422d77b1606b8df84a5685562b3b698cb68441636f827e + languageName: node + linkType: hard + "xss@npm:^1.0.8": version: 1.0.11 resolution: "xss@npm:1.0.11" From af10efd522a3dcdccee34db9be0f2a688082df00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuzhan=20Koral?= <45078678+oguzhankoral@users.noreply.github.com> Date: Fri, 1 Dec 2023 18:28:50 +0300 Subject: [PATCH 059/283] Feat (Settings): Render settings with JsonForms (#1884) * Clean start for jsonforms * Remove lodash alias from nuxt * Update yarn.lock * Implement settings for send and receive * Fix trigger twice issue * WIP * Update model card settings --- .../dui3/components/common/ModelReceiver.vue | 58 ++++++++- .../dui3/components/common/ModelSender.vue | 57 ++++++++- packages/dui3/components/config/Dialog.vue | 79 ++++-------- .../form/json/BooleanControlRenderer.vue | 34 +++++ .../form/json/DateControlRenderer.vue | 35 +++++ .../form/json/DateTimeControlRenderer.vue | 50 ++++++++ .../form/json/EnumControlRenderer.vue | 120 ++++++++++++++++++ .../form/json/EnumOneOfControlRenderer.vue | 18 +++ packages/dui3/components/form/json/Form.vue | 78 ++++++++++++ .../form/json/IntegerControlRenderer.vue | 37 ++++++ .../form/json/MultiStringControlRenderer.vue | 32 +++++ .../form/json/NumberControlRenderer.vue | 36 ++++++ .../form/json/StringControlRenderer.vue | 33 +++++ .../form/json/TimeControlRenderer.vue | 35 +++++ packages/dui3/components/header/NavBar.vue | 33 ++++- packages/dui3/components/header/UserMenu.vue | 2 +- .../definitions/IBasicConnectorBinding.ts | 39 +++++- .../bindings/definitions/IConfigBinding.ts | 6 +- .../bindings/definitions/IReceiveBinding.ts | 29 +++++ .../lib/bindings/definitions/ISendBinding.ts | 14 ++ .../lib/form/composables/jsonRenderers.ts | 50 ++++++++ packages/dui3/lib/form/jsonRenderers.ts | 91 +++++++++++++ packages/dui3/lib/models/card.ts | 2 + packages/dui3/lib/models/card/setting.ts | 11 ++ packages/dui3/nuxt.config.ts | 5 +- packages/dui3/package.json | 3 + packages/dui3/pages/onboarding/receive.vue | 3 +- packages/dui3/pages/onboarding/send.vue | 3 +- packages/dui3/store/hostApp.ts | 39 ++++++ yarn.lock | 61 ++++++++- 30 files changed, 1019 insertions(+), 74 deletions(-) create mode 100644 packages/dui3/components/form/json/BooleanControlRenderer.vue create mode 100644 packages/dui3/components/form/json/DateControlRenderer.vue create mode 100644 packages/dui3/components/form/json/DateTimeControlRenderer.vue create mode 100644 packages/dui3/components/form/json/EnumControlRenderer.vue create mode 100644 packages/dui3/components/form/json/EnumOneOfControlRenderer.vue create mode 100644 packages/dui3/components/form/json/Form.vue create mode 100644 packages/dui3/components/form/json/IntegerControlRenderer.vue create mode 100644 packages/dui3/components/form/json/MultiStringControlRenderer.vue create mode 100644 packages/dui3/components/form/json/NumberControlRenderer.vue create mode 100644 packages/dui3/components/form/json/StringControlRenderer.vue create mode 100644 packages/dui3/components/form/json/TimeControlRenderer.vue create mode 100644 packages/dui3/lib/form/composables/jsonRenderers.ts create mode 100644 packages/dui3/lib/form/jsonRenderers.ts create mode 100644 packages/dui3/lib/models/card/setting.ts diff --git a/packages/dui3/components/common/ModelReceiver.vue b/packages/dui3/components/common/ModelReceiver.vue index cc3053778c..9dfa4fe1b6 100644 --- a/packages/dui3/components/common/ModelReceiver.vue +++ b/packages/dui3/components/common/ModelReceiver.vue @@ -6,14 +6,14 @@
- Receive + Load Cancel + + +
Load Settings
+
+ +
diff --git a/packages/dui3/components/common/ModelSender.vue b/packages/dui3/components/common/ModelSender.vue index fd6f90ef35..958ba359e8 100644 --- a/packages/dui3/components/common/ModelSender.vue +++ b/packages/dui3/components/common/ModelSender.vue @@ -39,17 +39,41 @@ > Cancel + + +
Publish Settings
+
+ +
diff --git a/packages/dui3/components/config/Dialog.vue b/packages/dui3/components/config/Dialog.vue index 859dcd1b8c..4d9c2e183b 100644 --- a/packages/dui3/components/config/Dialog.vue +++ b/packages/dui3/components/config/Dialog.vue @@ -1,60 +1,33 @@ diff --git a/packages/dui3/components/form/json/BooleanControlRenderer.vue b/packages/dui3/components/form/json/BooleanControlRenderer.vue new file mode 100644 index 0000000000..f1c87c3a65 --- /dev/null +++ b/packages/dui3/components/form/json/BooleanControlRenderer.vue @@ -0,0 +1,34 @@ + + diff --git a/packages/dui3/components/form/json/DateControlRenderer.vue b/packages/dui3/components/form/json/DateControlRenderer.vue new file mode 100644 index 0000000000..533da7f69c --- /dev/null +++ b/packages/dui3/components/form/json/DateControlRenderer.vue @@ -0,0 +1,35 @@ + + diff --git a/packages/dui3/components/form/json/DateTimeControlRenderer.vue b/packages/dui3/components/form/json/DateTimeControlRenderer.vue new file mode 100644 index 0000000000..d9972afbae --- /dev/null +++ b/packages/dui3/components/form/json/DateTimeControlRenderer.vue @@ -0,0 +1,50 @@ + + diff --git a/packages/dui3/components/form/json/EnumControlRenderer.vue b/packages/dui3/components/form/json/EnumControlRenderer.vue new file mode 100644 index 0000000000..70f244c0ed --- /dev/null +++ b/packages/dui3/components/form/json/EnumControlRenderer.vue @@ -0,0 +1,120 @@ + + diff --git a/packages/dui3/components/form/json/EnumOneOfControlRenderer.vue b/packages/dui3/components/form/json/EnumOneOfControlRenderer.vue new file mode 100644 index 0000000000..61c7a40aeb --- /dev/null +++ b/packages/dui3/components/form/json/EnumOneOfControlRenderer.vue @@ -0,0 +1,18 @@ + + diff --git a/packages/dui3/components/form/json/Form.vue b/packages/dui3/components/form/json/Form.vue new file mode 100644 index 0000000000..20f4ffd4cf --- /dev/null +++ b/packages/dui3/components/form/json/Form.vue @@ -0,0 +1,78 @@ + + + diff --git a/packages/dui3/components/form/json/IntegerControlRenderer.vue b/packages/dui3/components/form/json/IntegerControlRenderer.vue new file mode 100644 index 0000000000..430c30af7e --- /dev/null +++ b/packages/dui3/components/form/json/IntegerControlRenderer.vue @@ -0,0 +1,37 @@ + + diff --git a/packages/dui3/components/form/json/MultiStringControlRenderer.vue b/packages/dui3/components/form/json/MultiStringControlRenderer.vue new file mode 100644 index 0000000000..2a60d94666 --- /dev/null +++ b/packages/dui3/components/form/json/MultiStringControlRenderer.vue @@ -0,0 +1,32 @@ + + diff --git a/packages/dui3/components/form/json/NumberControlRenderer.vue b/packages/dui3/components/form/json/NumberControlRenderer.vue new file mode 100644 index 0000000000..5859e05f02 --- /dev/null +++ b/packages/dui3/components/form/json/NumberControlRenderer.vue @@ -0,0 +1,36 @@ + + diff --git a/packages/dui3/components/form/json/StringControlRenderer.vue b/packages/dui3/components/form/json/StringControlRenderer.vue new file mode 100644 index 0000000000..831e3d4b8a --- /dev/null +++ b/packages/dui3/components/form/json/StringControlRenderer.vue @@ -0,0 +1,33 @@ + + diff --git a/packages/dui3/components/form/json/TimeControlRenderer.vue b/packages/dui3/components/form/json/TimeControlRenderer.vue new file mode 100644 index 0000000000..b3fd5ce9e1 --- /dev/null +++ b/packages/dui3/components/form/json/TimeControlRenderer.vue @@ -0,0 +1,35 @@ + + diff --git a/packages/dui3/components/header/NavBar.vue b/packages/dui3/components/header/NavBar.vue index ce7230d16c..b3d5b48fb3 100644 --- a/packages/dui3/components/header/NavBar.vue +++ b/packages/dui3/components/header/NavBar.vue @@ -10,11 +10,38 @@
-
- +
+ +
+ + + + +
+
+ +
- + diff --git a/packages/dui3/components/header/UserMenu.vue b/packages/dui3/components/header/UserMenu.vue index a9a9eca349..6137970805 100644 --- a/packages/dui3/components/header/UserMenu.vue +++ b/packages/dui3/components/header/UserMenu.vue @@ -1,6 +1,6 @@