From d7cd262362ef320cf6728e6400dd095bc05a9e3e Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Mon, 28 Aug 2023 22:55:55 +0200 Subject: [PATCH 1/3] chore: cleanup some code --- src/lib/constants.ts | 4 ++- src/lib/helpers/debounce.ts | 4 +-- src/lib/helpers/object.ts | 2 +- src/lib/helpers/project.ts | 2 +- src/lib/helpers/stores.ts | 2 +- src/lib/pages/domains/wizard/step1.svelte | 5 +-- src/lib/wizards/functions/cover.svelte | 33 ++++++++++++++++--- .../wizards/functions/steps/details.svelte | 3 +- .../steps/functionConfiguration.svelte | 3 +- .../steps/templateConfiguration.svelte | 3 +- src/lib/wizards/functions/store.ts | 5 --- src/routes/+layout.svelte | 2 +- .../(migration-wizard)/resource-form.svelte | 31 +++++++---------- src/routes/console/+layout.svelte | 5 ++- src/routes/console/+layout.ts | 7 +++- .../(filters)/content.svelte | 2 +- .../(filters)/store.ts | 1 - .../functions/function-[function]/+page.ts | 10 ++---- .../deployment-[deployment]/+page.svelte | 2 +- .../settings/updateConfiguration.svelte | 6 ++-- .../project-[project]/functions/store.ts} | 4 +-- .../template-[template]/+page.svelte | 6 ++-- .../functions/wizard/step1.svelte | 2 +- .../rawVariableEditor.svelte | 10 ++++-- .../project-[project]/settings/+page.ts | 10 ++---- .../settings/updateInstallations.svelte | 6 ++-- src/routes/console/project-[project]/store.ts | 1 - .../project-[project]/updateVariables.svelte | 10 ++++-- .../uploadVariablesModal.svelte | 8 +++-- src/routes/console/store.ts | 8 +++++ src/routes/store.ts | 2 +- 31 files changed, 109 insertions(+), 90 deletions(-) rename src/{lib/stores/consoleVariables.ts => routes/console/project-[project]/functions/store.ts} (56%) diff --git a/src/lib/constants.ts b/src/lib/constants.ts index b73ecbbb99..a2107d03cd 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -40,7 +40,9 @@ export enum Dependencies { WEBHOOK = 'dependency:webhook', WEBHOOKS = 'dependency:webhooks', MIGRATIONS = 'dependency:migrations', - COLLECTIONS = 'dependency:collections' + COLLECTIONS = 'dependency:collections', + RUNTIMES = 'dependency:runtimes', + CONSOLE_VARIABLES = 'dependency:console_variables' } export const scopes: { diff --git a/src/lib/helpers/debounce.ts b/src/lib/helpers/debounce.ts index afb93f4a26..6a36b4e47d 100644 --- a/src/lib/helpers/debounce.ts +++ b/src/lib/helpers/debounce.ts @@ -1,6 +1,6 @@ -export function debounce void>(fn: F, delay: number) { +export function debounce void>(fn: F, delay: number) { let timeoutID: ReturnType = null; - const debounceFn = function (this: any, ...args: any[]) { + const debounceFn = function (this: unknown, ...args: unknown[]) { clearTimeout(timeoutID); timeoutID = window.setTimeout(() => fn.apply(this, args), delay) as unknown as ReturnType< typeof setTimeout diff --git a/src/lib/helpers/object.ts b/src/lib/helpers/object.ts index fb09d2ab51..0a901aed30 100644 --- a/src/lib/helpers/object.ts +++ b/src/lib/helpers/object.ts @@ -45,7 +45,7 @@ export function deepMap( return result; } -export function parseIfString(value: unknown): any { +export function parseIfString(value: unknown): unknown { if (typeof value === 'string') { try { return JSON.parse(value); diff --git a/src/lib/helpers/project.ts b/src/lib/helpers/project.ts index ff8f887b05..a8a88cd3f7 100644 --- a/src/lib/helpers/project.ts +++ b/src/lib/helpers/project.ts @@ -1,5 +1,5 @@ export function getProjectId() { - const pathname = window.location.pathname; + const pathname = window.location.pathname + '/'; const projectMatch = pathname.match(/\/project-(.*?)\//); return projectMatch?.[1] || null; } diff --git a/src/lib/helpers/stores.ts b/src/lib/helpers/stores.ts index 509693a9e3..13a63437d2 100644 --- a/src/lib/helpers/stores.ts +++ b/src/lib/helpers/stores.ts @@ -9,7 +9,7 @@ import { deepClone, objectEntries } from './object'; * * @export */ -export function createConservative>(obj: Obj) { +export function createConservative>(obj: Obj) { const stores = Object.fromEntries( objectEntries(obj).map(([key, value]) => [key, writable(value)]) ) as { diff --git a/src/lib/pages/domains/wizard/step1.svelte b/src/lib/pages/domains/wizard/step1.svelte index 6c37353c29..2eea50d4dc 100644 --- a/src/lib/pages/domains/wizard/step1.svelte +++ b/src/lib/pages/domains/wizard/step1.svelte @@ -9,6 +9,7 @@ import { onMount } from 'svelte'; import { ProxyTypes } from '../index.svelte'; import { domain, typeStore } from './store'; + import { consoleVariables } from '$routes/console/store'; let error = null; let isDomainsEnabled = false; @@ -17,9 +18,9 @@ if (!isSelfHosted) { return; } - const vars = await sdk.forConsole.console.variables(); + //@ts-expect-error needs an sdk release - isDomainsEnabled = vars?._APP_DOMAIN_ENABLED === true; + isDomainsEnabled = (await $consoleVariables)?._APP_DOMAIN_ENABLED === true; }); async function createDomain() { diff --git a/src/lib/wizards/functions/cover.svelte b/src/lib/wizards/functions/cover.svelte index f38cfa2b2c..ee607e3c34 100644 --- a/src/lib/wizards/functions/cover.svelte +++ b/src/lib/wizards/functions/cover.svelte @@ -2,7 +2,7 @@ import CreateTemplate from './createTemplate.svelte'; export function connectTemplate(template: MarketplaceTemplate, runtime: string | null = null) { - const variables: any = {}; + const variables: Record = {}; template.variables.forEach((variable) => { variables[variable.name] = variable.value ?? ''; }); @@ -29,17 +29,19 @@
@@ -282,7 +280,7 @@ {:else} - {#if isSelfHosted && !isVcsEnabled} + {#if isSelfHosted && !isVcsEnabled($consoleVariables)} Installing Git to a self-hosted instance diff --git a/src/lib/stores/consoleVariables.ts b/src/routes/console/project-[project]/functions/store.ts similarity index 56% rename from src/lib/stores/consoleVariables.ts rename to src/routes/console/project-[project]/functions/store.ts index 887820b6bc..029ac922dc 100644 --- a/src/lib/stores/consoleVariables.ts +++ b/src/routes/console/project-[project]/functions/store.ts @@ -2,7 +2,7 @@ import { page } from '$app/stores'; import { derived } from 'svelte/store'; import type { Models } from '@appwrite.io/console'; -export const consoleVariables = derived( +export const runtimes = derived( page, - ($page) => $page.data.consoleVariables as Models.ConsoleVariables + async ($page) => (await $page.data.runtimes) as Models.RuntimeList ); diff --git a/src/routes/console/project-[project]/functions/templates/template-[template]/+page.svelte b/src/routes/console/project-[project]/functions/templates/template-[template]/+page.svelte index 6b089bce24..850de53715 100644 --- a/src/routes/console/project-[project]/functions/templates/template-[template]/+page.svelte +++ b/src/routes/console/project-[project]/functions/templates/template-[template]/+page.svelte @@ -4,12 +4,10 @@ import { Pill } from '$lib/elements'; import { Button } from '$lib/elements/forms'; import { Container } from '$lib/layout'; - import { consoleVariables } from '$lib/stores/consoleVariables'; import { isSelfHosted } from '$lib/system'; import { connectTemplate } from '$lib/wizards/functions/cover.svelte'; + import { consoleVariables, isVcsEnabled } from '$routes/console/store'; import { template } from './store'; - - $: isVcsEnabled = $consoleVariables?._APP_VCS_ENABLED === true; @@ -62,7 +60,7 @@

{$template.tagline}

- {#if isSelfHosted && !isVcsEnabled} + {#if isSelfHosted && !isVcsEnabled($consoleVariables)} Cloning templates to a self-hosted instance diff --git a/src/routes/console/project-[project]/functions/wizard/step1.svelte b/src/routes/console/project-[project]/functions/wizard/step1.svelte index 53c58e72e4..7bbecddbf7 100644 --- a/src/routes/console/project-[project]/functions/wizard/step1.svelte +++ b/src/routes/console/project-[project]/functions/wizard/step1.svelte @@ -5,7 +5,7 @@ import { WizardStep } from '$lib/layout'; import { onMount } from 'svelte'; import { createFunction } from './store'; - import { runtimes } from '$lib/wizards/functions/store'; + import { runtimes } from '../store'; let showCustomId = false; diff --git a/src/routes/console/project-[project]/rawVariableEditor.svelte b/src/routes/console/project-[project]/rawVariableEditor.svelte index 97382f807d..012caaf69e 100644 --- a/src/routes/console/project-[project]/rawVariableEditor.svelte +++ b/src/routes/console/project-[project]/rawVariableEditor.svelte @@ -12,9 +12,13 @@ export let showEditor = false; export let variableList: Models.VariableList; - export let sdkCreateVariable: (key: string, value: string) => Promise; - export let sdkUpdateVariable: (variableId: string, key: string, value: string) => Promise; - export let sdkDeleteVariable: (variableId: string) => Promise; + export let sdkCreateVariable: (key: string, value: string) => Promise; + export let sdkUpdateVariable: ( + variableId: string, + key: string, + value: string + ) => Promise; + export let sdkDeleteVariable: (variableId: string) => Promise; let error = ''; let envCode = variableList.variables diff --git a/src/routes/console/project-[project]/settings/+page.ts b/src/routes/console/project-[project]/settings/+page.ts index e57a62558e..125a929bd6 100644 --- a/src/routes/console/project-[project]/settings/+page.ts +++ b/src/routes/console/project-[project]/settings/+page.ts @@ -1,18 +1,13 @@ import { Dependencies, PAGE_LIMIT } from '$lib/constants'; import { sdk } from '$lib/stores/sdk'; -import { Query, type Models } from '@appwrite.io/console'; +import { Query } from '@appwrite.io/console'; import type { PageLoad } from './$types'; -import { isSelfHosted } from '$lib/system'; export const load: PageLoad = async ({ depends, url }) => { depends(Dependencies.PROJECT_VARIABLES); depends(Dependencies.PROJECT_INSTALLATIONS); const limit = PAGE_LIMIT; const offset = Number(url.searchParams.get('offset') ?? 0); - let consoleVariables: Models.ConsoleVariables = null; - if (isSelfHosted) { - consoleVariables = await sdk.forConsole.console.variables(); - } return { limit, @@ -21,7 +16,6 @@ export const load: PageLoad = async ({ depends, url }) => { installations: await sdk.forProject.vcs.listInstallations([ Query.limit(limit), Query.offset(offset) - ]), - consoleVariables + ]) }; }; diff --git a/src/routes/console/project-[project]/settings/updateInstallations.svelte b/src/routes/console/project-[project]/settings/updateInstallations.svelte index 6a36b14523..5ccb5b1f34 100644 --- a/src/routes/console/project-[project]/settings/updateInstallations.svelte +++ b/src/routes/console/project-[project]/settings/updateInstallations.svelte @@ -29,7 +29,7 @@ import GitDisconnectModal from './GitDisconnectModal.svelte'; import dayjs from 'dayjs'; import { isSelfHosted } from '$lib/system'; - import { consoleVariables } from '$lib/stores/consoleVariables'; + import { consoleVariables, isVcsEnabled } from '$routes/console/store'; export let total: number; export let limit: number; @@ -76,8 +76,6 @@ noScroll: true }); } - - $: isVcsEnabled = $consoleVariables?._APP_VCS_ENABLED === true; @@ -181,7 +179,7 @@ bind:offset /> {:else} - {#if isSelfHosted && !isVcsEnabled} + {#if isSelfHosted && !isVcsEnabled($consoleVariables)} Installing Git to a self-hosted instance diff --git a/src/routes/console/project-[project]/store.ts b/src/routes/console/project-[project]/store.ts index a7051573bb..4413c76dda 100644 --- a/src/routes/console/project-[project]/store.ts +++ b/src/routes/console/project-[project]/store.ts @@ -4,7 +4,6 @@ import type { BarSeriesOption } from 'echarts/charts'; import { derived, writable } from 'svelte/store'; export const project = derived(page, ($page) => $page.data.project as Models.Project); - export const onboarding = derived( project, ($project) => $project?.platforms?.length === 0 && $project?.keys?.length === 0 diff --git a/src/routes/console/project-[project]/updateVariables.svelte b/src/routes/console/project-[project]/updateVariables.svelte index a9057b0f05..f9232bf84b 100644 --- a/src/routes/console/project-[project]/updateVariables.svelte +++ b/src/routes/console/project-[project]/updateVariables.svelte @@ -37,9 +37,13 @@ export let globalVariableList: Models.VariableList | undefined = undefined; export let isGlobal: boolean; - export let sdkCreateVariable: (key: string, value: string) => Promise; - export let sdkUpdateVariable: (variableId: string, key: string, value: string) => Promise; - export let sdkDeleteVariable: (variableId: string) => Promise; + export let sdkCreateVariable: (key: string, value: string) => Promise; + export let sdkUpdateVariable: ( + variableId: string, + key: string, + value: string + ) => Promise; + export let sdkDeleteVariable: (variableId: string) => Promise; let showVariablesDropdown = []; let selectedVar: Models.Variable = null; diff --git a/src/routes/console/project-[project]/uploadVariablesModal.svelte b/src/routes/console/project-[project]/uploadVariablesModal.svelte index 1d8e7b4066..0a8484b7c9 100644 --- a/src/routes/console/project-[project]/uploadVariablesModal.svelte +++ b/src/routes/console/project-[project]/uploadVariablesModal.svelte @@ -9,8 +9,12 @@ export let isGlobal: boolean; export let show = false; export let variableList: Models.VariableList; - export let sdkCreateVariable: (key: string, value: string) => Promise; - export let sdkUpdateVariable: (variableId: string, key: string, value: string) => Promise; + export let sdkCreateVariable: (key: string, value: string) => Promise; + export let sdkUpdateVariable: ( + variableId: string, + key: string, + value: string + ) => Promise; let files: FileList; let error: string; diff --git a/src/routes/console/store.ts b/src/routes/console/store.ts index 2e8023dda0..d8f11992f2 100644 --- a/src/routes/console/store.ts +++ b/src/routes/console/store.ts @@ -1,4 +1,12 @@ import { page } from '$app/stores'; +import type { Models } from '@appwrite.io/console'; import { derived } from 'svelte/store'; export const version = derived(page, ($page) => $page.data.version as string | null); +export const consoleVariables = derived( + page, + async ($page) => (await $page.data.consoleVariables) as Models.ConsoleVariables +); +export async function isVcsEnabled(store: Promise) { + return (await store)?._APP_VCS_ENABLED === true; +} diff --git a/src/routes/store.ts b/src/routes/store.ts index c2f973b21a..be68598774 100644 --- a/src/routes/store.ts +++ b/src/routes/store.ts @@ -7,4 +7,4 @@ export const loading = writable(true); export const organizations = derived(page, ($page) => { return $page.data.organizations as Models.TeamList; }); -export const requestedMigration = writable | null>(null); +export const requestedMigration = writable | null>(null); From 4f6dd9b933d217d41776b3399c5e9cc9afc0516c Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 29 Aug 2023 11:04:54 +0200 Subject: [PATCH 2/3] feat: use new sdk --- package-lock.json | 15 +++++++-------- package.json | 2 +- src/lib/pages/domains/wizard/step1.svelte | 1 - 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index ace5f6d0d9..590e07f9ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "dependencies": { "@analytics/google-analytics": "^1.0.5", "@analytics/google-tag-manager": "^0.5.3", - "@appwrite.io/console": "npm:matej-appwrite-console@7.1.130", + "@appwrite.io/console": "^0.3.0", "@appwrite.io/pink": "0.1.0-next.8", "@appwrite.io/pink-icons": "^0.1.0-next.8", "@popperjs/core": "^2.11.6", @@ -169,10 +169,9 @@ "integrity": "sha512-TD+xbmsBLyYy/IxFimW/YL/9L2IEnM7/EoV9Aeh56U64Ify8o27HJcKjo38XY9Tcn0uOq1AX3thkKgvtWvwFQg==" }, "node_modules/@appwrite.io/console": { - "name": "matej-appwrite-console", - "version": "7.1.130", - "resolved": "https://registry.npmjs.org/matej-appwrite-console/-/matej-appwrite-console-7.1.130.tgz", - "integrity": "sha512-XsaGxuUNznKKiQpbYAy7VYtj5f0CitrMcIh+9UiHzI0dVXe4ck8humDv6l8XVFp0aQZWxc6RfiPuHo9oreEKuw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@appwrite.io/console/-/console-0.3.0.tgz", + "integrity": "sha512-XHKQHirzQliXoDpMLakSdXwpq9aPoeTABNhW8Z7MK3p6oBfp2gMplDD43Fbd91JREXoJ+RG8okX0z0nIc6hDiQ==", "dependencies": { "cross-fetch": "3.1.5", "isomorphic-form-data": "2.0.0" @@ -8985,9 +8984,9 @@ "integrity": "sha512-TD+xbmsBLyYy/IxFimW/YL/9L2IEnM7/EoV9Aeh56U64Ify8o27HJcKjo38XY9Tcn0uOq1AX3thkKgvtWvwFQg==" }, "@appwrite.io/console": { - "version": "npm:matej-appwrite-console@7.1.130", - "resolved": "https://registry.npmjs.org/matej-appwrite-console/-/matej-appwrite-console-7.1.130.tgz", - "integrity": "sha512-XsaGxuUNznKKiQpbYAy7VYtj5f0CitrMcIh+9UiHzI0dVXe4ck8humDv6l8XVFp0aQZWxc6RfiPuHo9oreEKuw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@appwrite.io/console/-/console-0.3.0.tgz", + "integrity": "sha512-XHKQHirzQliXoDpMLakSdXwpq9aPoeTABNhW8Z7MK3p6oBfp2gMplDD43Fbd91JREXoJ+RG8okX0z0nIc6hDiQ==", "requires": { "cross-fetch": "3.1.5", "isomorphic-form-data": "2.0.0" diff --git a/package.json b/package.json index e38f65dc4a..27292b7bbc 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "dependencies": { "@analytics/google-analytics": "^1.0.5", "@analytics/google-tag-manager": "^0.5.3", - "@appwrite.io/console": "npm:matej-appwrite-console@7.1.130", + "@appwrite.io/console": "^0.3.0", "@appwrite.io/pink": "0.1.0-next.8", "@appwrite.io/pink-icons": "^0.1.0-next.8", "@popperjs/core": "^2.11.6", diff --git a/src/lib/pages/domains/wizard/step1.svelte b/src/lib/pages/domains/wizard/step1.svelte index 2eea50d4dc..a5b971fad9 100644 --- a/src/lib/pages/domains/wizard/step1.svelte +++ b/src/lib/pages/domains/wizard/step1.svelte @@ -19,7 +19,6 @@ return; } - //@ts-expect-error needs an sdk release isDomainsEnabled = (await $consoleVariables)?._APP_DOMAIN_ENABLED === true; }); From 41adb059689b8419b30933c9b16a1c9346722ed6 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 29 Aug 2023 12:17:06 +0200 Subject: [PATCH 3/3] fix: merge leftover --- .../project-[project]/settings/updateInstallations.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/settings/updateInstallations.svelte b/src/routes/console/project-[project]/settings/updateInstallations.svelte index 1586347139..919377a40c 100644 --- a/src/routes/console/project-[project]/settings/updateInstallations.svelte +++ b/src/routes/console/project-[project]/settings/updateInstallations.svelte @@ -205,7 +205,7 @@