From 1605cd0f5e91a5590c9574462073d1d0574ec7cf Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 14 May 2025 19:45:08 +0530 Subject: [PATCH 01/18] attempt: fix var check. --- src/lib/system.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/system.ts b/src/lib/system.ts index 72bb2a0f6..97959ffb1 100644 --- a/src/lib/system.ts +++ b/src/lib/system.ts @@ -11,7 +11,7 @@ export const VARS = { APPWRITE_ENDPOINT: env.PUBLIC_APPWRITE_ENDPOINT ?? undefined, GROWTH_ENDPOINT: env.PUBLIC_GROWTH_ENDPOINT ?? undefined, PUBLIC_STRIPE_KEY: env.PUBLIC_STRIPE_KEY ?? undefined, - APPWRITE_MULTI_REGION: env.PUBLIC_APPWRITE_MULTI_REGION ?? false + APPWRITE_MULTI_REGION: env.PUBLIC_APPWRITE_MULTI_REGION === "true" }; export const ENV = { From 0250a0d49052c3ff5f949a158b35de8636a841c3 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 14 May 2025 19:47:37 +0530 Subject: [PATCH 02/18] fix: linter --- src/lib/system.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/system.ts b/src/lib/system.ts index 97959ffb1..80f7c3a8d 100644 --- a/src/lib/system.ts +++ b/src/lib/system.ts @@ -11,7 +11,7 @@ export const VARS = { APPWRITE_ENDPOINT: env.PUBLIC_APPWRITE_ENDPOINT ?? undefined, GROWTH_ENDPOINT: env.PUBLIC_GROWTH_ENDPOINT ?? undefined, PUBLIC_STRIPE_KEY: env.PUBLIC_STRIPE_KEY ?? undefined, - APPWRITE_MULTI_REGION: env.PUBLIC_APPWRITE_MULTI_REGION === "true" + APPWRITE_MULTI_REGION: env.PUBLIC_APPWRITE_MULTI_REGION === 'true' }; export const ENV = { From d741f7c9dc254751dbdc938be9bd4d86cc26f627 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 15 May 2025 11:18:36 +0530 Subject: [PATCH 03/18] update: confirmation logic. --- .../billing/retryPaymentModal.svelte | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/routes/(console)/organization-[organization]/billing/retryPaymentModal.svelte b/src/routes/(console)/organization-[organization]/billing/retryPaymentModal.svelte index 94fe73d44..92a927b86 100644 --- a/src/routes/(console)/organization-[organization]/billing/retryPaymentModal.svelte +++ b/src/routes/(console)/organization-[organization]/billing/retryPaymentModal.svelte @@ -71,18 +71,21 @@ if (setAsDefault) { await sdk.forConsole.billing.setDefaultPaymentMethod(paymentMethodId); } - const { clientSecret } = await sdk.forConsole.billing.retryPayment( + const { clientSecret, status } = await sdk.forConsole.billing.retryPayment( $organization.$id, invoice.$id, paymentMethodId ); - await confirmPayment( - $organization.$id, - clientSecret, - paymentMethodId ? paymentMethodId : $organization.paymentMethodId, - `${base}/organization-${$organization.$id}/billing?type=validate-invoice&invoice=${invoice.$id}` - ); + if (status !== 'succeeded' && status !== 'cancelled') { + // probably still pending, confirm via stripe! + await confirmPayment( + $organization.$id, + clientSecret, + paymentMethodId ? paymentMethodId : $organization.paymentMethodId, + `${base}/organization-${$organization.$id}/billing?type=validate-invoice&invoice=${invoice.$id}` + ); + } await sdk.forConsole.billing.updateInvoiceStatus($organization.$id, invoice.$id); From 06302e9dc61b05c8a6a4db0f5b03ca95026fac7d Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 15 May 2025 11:24:07 +0530 Subject: [PATCH 04/18] address comments. --- .../billing/retryPaymentModal.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/organization-[organization]/billing/retryPaymentModal.svelte b/src/routes/(console)/organization-[organization]/billing/retryPaymentModal.svelte index 92a927b86..7f5194be5 100644 --- a/src/routes/(console)/organization-[organization]/billing/retryPaymentModal.svelte +++ b/src/routes/(console)/organization-[organization]/billing/retryPaymentModal.svelte @@ -85,9 +85,9 @@ paymentMethodId ? paymentMethodId : $organization.paymentMethodId, `${base}/organization-${$organization.$id}/billing?type=validate-invoice&invoice=${invoice.$id}` ); - } - await sdk.forConsole.billing.updateInvoiceStatus($organization.$id, invoice.$id); + await sdk.forConsole.billing.updateInvoiceStatus($organization.$id, invoice.$id); + } invalidate(Dependencies.ORGANIZATION); invalidate(Dependencies.INVOICES); From ecfe1f596280f39affcddc4f5d4b72b772632c91 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 15 May 2025 11:22:14 +0200 Subject: [PATCH 05/18] fix: sheet component --- .../executions/sheet.svelte | 243 +++++++++--------- .../sites/site-[site]/logs/sheet.svelte | 191 +++++++------- 2 files changed, 230 insertions(+), 204 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/executions/sheet.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/executions/sheet.svelte index ee525786a..fd6e2bee1 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/executions/sheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/executions/sheet.svelte @@ -46,124 +46,133 @@ $: selectedLog = logs?.find((log) => log.$id === selectedLogId); $: isFirstLog = logs.findIndex((log) => log.$id === selectedLogId) === 0; $: isLastLog = logs.findIndex((log) => log.$id === selectedLogId) === logs.length - 1; + + let sheet: HTMLDivElement; + function handleClickOutside(event: MouseEvent) { + if (sheet && !sheet.contains(event.target as Node)) { + open = false; + } + } - (open = false)} /> + - -
- - - Execution ID - - {selectedLog?.$id} - - - - - - - -
- {#if selectedLog} - - - - - - - Method - - - {selectedLog.requestMethod} - - - - - Status code - - - = 400 - ? 'error' - : selectedLog.responseStatusCode === 0 - ? undefined - : 'success'} /> - - - - - Status - - - -
- - -
- - {`Scheduled to execute on ${toLocaleDateTime(selectedLog.scheduledAt)}`} - -
-
- - - - Triggered by - - - {capitalize(selectedLog.trigger)} - - - - - - Duration - - - {calculateTime(selectedLog.duration)} - - - - - - Created - - - {capitalize(timeFromNow(selectedLog.$createdAt))} - - -
- - - Path - -
- -
-
+
+ +
+ + + Execution ID + + {selectedLog?.$id} + - - - - - - - - - {/if} - + + + + + +
+ {#if selectedLog} + + + + + + + Method + + + {selectedLog.requestMethod} + + + + + Status code + + + = 400 + ? 'error' + : selectedLog.responseStatusCode === 0 + ? undefined + : 'success'} /> + + + + + Status + + + +
+ + +
+ + {`Scheduled to execute on ${toLocaleDateTime(selectedLog.scheduledAt)}`} + +
+
+ + + + Triggered by + + + {capitalize(selectedLog.trigger)} + + + + + + Duration + + + {calculateTime(selectedLog.duration)} + + + + + + Created + + + {capitalize(timeFromNow(selectedLog.$createdAt))} + + +
+ + + Path + +
+ +
+
+
+
+ + + + + + +
+ {/if} +
+
diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/logs/sheet.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/logs/sheet.svelte index 7026fbd02..881e4e3d2 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/logs/sheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/logs/sheet.svelte @@ -42,94 +42,111 @@ $: selectedLog = logs?.find((log) => log.$id === selectedLogId); $: isFirstLog = logs.findIndex((log) => log.$id === selectedLogId) === 0; $: isLastLog = logs.findIndex((log) => log.$id === selectedLogId) === logs.length - 1; + + let sheet: HTMLDivElement; + function handleClickOutside(event: MouseEvent) { + if (sheet && !sheet.contains(event.target as Node)) { + open = false; + } + } - (open = false)} /> + - -
- - - Log ID - - {selectedLog?.$id} - - - - - - - -
- {#if selectedLog} - - - - - - - - Method - - - {selectedLog.requestMethod} - - - - - Status code - - - = 400 - ? 'error' - : 'success'} /> - - - - - Duration - - - {calculateTime(selectedLog.duration)} - - - - - Created - - - {capitalize(timeFromNow(selectedLog.$createdAt))} - - - - - - - - Path - -
- -
-
+
+ +
+ + + Log ID + + {selectedLog?.$id} + - - - - - - - - - {/if} - + + + + + +
+ {#if selectedLog} + + + + + + + + Method + + + {selectedLog.requestMethod} + + + + + Status code + + + = 400 + ? 'error' + : 'success'} /> + + + + + Duration + + + {calculateTime(selectedLog.duration)} + + + + + Created + + + {capitalize(timeFromNow(selectedLog.$createdAt))} + + + + + + + + Path + +
+ +
+
+
+
+ + + + + + +
+ {/if} +
+
From ff8654324fc7b79961189e6c06f0a82ddbfc54e0 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 15 May 2025 11:40:45 +0200 Subject: [PATCH 06/18] chore: hide new features --- src/lib/components/sidebar.svelte | 84 ++++--- src/lib/system.ts | 1 + .../organization-[organization]/header.svelte | 6 +- .../collection-[collection]/+page.svelte | 17 +- .../overview/+layout.svelte | 13 +- .../overview/header.svelte | 2 +- .../bucket-[bucket]/file-[file]/+page.svelte | 227 +++++++++--------- .../file-[file]/fileTokensCopyUrl.svelte | 4 +- 8 files changed, 186 insertions(+), 168 deletions(-) diff --git a/src/lib/components/sidebar.svelte b/src/lib/components/sidebar.svelte index 99bd5db85..7fd0bc37f 100644 --- a/src/lib/components/sidebar.svelte +++ b/src/lib/components/sidebar.svelte @@ -40,6 +40,7 @@ import type { HTMLAttributes } from 'svelte/elements'; import type { NavbarProject } from '$lib/components/navbar.svelte'; + import { SHOW_INIT_FEATURES } from '$lib/system'; type $$Props = HTMLAttributes & { state?: 'closed' | 'open' | 'icons'; @@ -190,46 +191,49 @@ {projectOption.name} {/each} -
- -
-
- Deploy - -
- {@const deployProjectOptions = projectOptions.filter( - (projectOption) => projectOption.category === 'deploy' - )} - {#each deployProjectOptions as projectOption} - - { - trackEvent(`click_menu_${projectOption.slug}`); - sideBarIsOpen = false; - }}> - - - - - {projectOption.name} - {#if projectOption?.badge} - - {/if} - - - {projectOption.name} - - {/each} + {#if SHOW_INIT_FEATURES} +
+ +
+
+ Deploy + +
+ {@const deployProjectOptions = projectOptions.filter( + (projectOption) => projectOption.category === 'deploy' + )} + {#each deployProjectOptions as projectOption} + + { + trackEvent(`click_menu_${projectOption.slug}`); + sideBarIsOpen = false; + }}> + + + + + {projectOption.name} + {#if projectOption?.badge} + + {/if} + + + {projectOption.name} + + {/each} + {/if}
diff --git a/src/lib/system.ts b/src/lib/system.ts index 80f7c3a8d..8805c3628 100644 --- a/src/lib/system.ts +++ b/src/lib/system.ts @@ -28,3 +28,4 @@ export const isDev = ENV.DEV; export const isProd = ENV.PROD; export const hasStripePublicKey = !!VARS.PUBLIC_STRIPE_KEY; export const GRACE_PERIOD_OVERRIDE = false; +export const SHOW_INIT_FEATURES = !ENV.PROD; diff --git a/src/routes/(console)/organization-[organization]/header.svelte b/src/routes/(console)/organization-[organization]/header.svelte index 419cf7530..9af8b5823 100644 --- a/src/routes/(console)/organization-[organization]/header.svelte +++ b/src/routes/(console)/organization-[organization]/header.svelte @@ -11,12 +11,13 @@ import { members, newMemberModal, organization } from '$lib/stores/organization'; import { canSeeBilling, + canSeeDomains, canSeeProjects, canSeeTeams, isBilling, isOwner } from '$lib/stores/roles'; - import { GRACE_PERIOD_OVERRIDE, isCloud } from '$lib/system'; + import { GRACE_PERIOD_OVERRIDE, isCloud, SHOW_INIT_FEATURES } from '$lib/system'; import { IconGithub, IconPlus } from '@appwrite.io/pink-icons-svelte'; import { Icon, Tooltip, Typography, Layout, Badge } from '@appwrite.io/pink-svelte'; @@ -44,8 +45,7 @@ href: `${path}/domains`, event: 'domains', title: 'Domains', - disabled: !isCloud - // disabled: !(isCloud && $canSeeDomains) //TODO: enable this before release + disabled: !isCloud || !$canSeeDomains || !SHOW_INIT_FEATURES }, { href: `${path}/members`, diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte index b4b2e9915..4367866f0 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -24,6 +24,7 @@ import { base } from '$app/paths'; import { IconPlus } from '@appwrite.io/pink-icons-svelte'; import type { Models } from '@appwrite.io/console'; + import { SHOW_INIT_FEATURES } from '$lib/system'; export let data: PageData; @@ -99,13 +100,15 @@ analyticsSource="database_documents" /> - + {#if SHOW_INIT_FEATURES} + + {/if} {#if !$isSmallViewport} - + {#if SHOW_INIT_FEATURES} + + File tokens + Use tokens to provide public access to the file. + + {#if $tokens.total} + + + - - - {#each $columns as { id, title } (id)} - {title} - {/each} - + + + {#each $columns as { id, title } (id)} + {title} + {/each} + - {#each $tokens.tokens as token} - - {toLocaleDate(token.$createdAt)} + {#each $tokens.tokens as token} + + {toLocaleDate(token.$createdAt)} - - - {@const expiration = getExpiryDetails(token)} - {token.expire ? cleanFormattedDate(token.expire) : 'Never'} + + + {@const expiration = getExpiryDetails(token)} + {token.expire + ? cleanFormattedDate(token.expire) + : 'Never'} - {#if expiration.status} - + {#if expiration.status} + + {/if} + + + + {token.accessedAt + ? cleanFormattedDate(token.accessedAt, true) + : 'Never'} + + + {#if token.$permissions.length} + + {getPermissionGroups(token)} + + {:else} + none {/if} - - + - {token.accessedAt - ? cleanFormattedDate(token.accessedAt, true) - : 'Never'} + + + + + + - - {#if token.$permissions.length} - - {getPermissionGroups(token)} - - {:else} - none - {/if} - - - - - - - - - - - - + + + + { + toggle(); + showCopyUrlModal = true; + selectedFileToken = token; + }} + leadingIcon={IconDuplicate}> + Copy URL + + { toggle(); - showCopyUrlModal = true; + showManageToken = true; selectedFileToken = token; - }} - leadingIcon={IconDuplicate}> - Copy URL + }}> + Edit expiry + + { + toggle(); + showManageToken = true; + tokenPermissionsMode = true; + selectedFileToken = token; + }}> + Edit permissions + + { + toggle(); + tokenDeleteMode = true; + showManageToken = true; + selectedFileToken = token; + }}> + Delete - { - toggle(); - showManageToken = true; - selectedFileToken = token; - }}> - Edit expiry - - { - toggle(); - showManageToken = true; - tokenPermissionsMode = true; - selectedFileToken = token; - }}> - Edit permissions - - { - toggle(); - tokenDeleteMode = true; - showManageToken = true; - selectedFileToken = token; - }}> - Delete - - - - - - - - {/each} - - {:else} - (showManageToken = true)}>Create new file token - {/if} - - - + + + + + + {/each} + + {:else} + (showManageToken = true)} + >Create new file token + {/if} + + + {/if} Permissions Assign read or write permissions at the bucket level or file level. If bucket level permissions diff --git a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/fileTokensCopyUrl.svelte b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/fileTokensCopyUrl.svelte index 106947370..7600e2a71 100644 --- a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/fileTokensCopyUrl.svelte +++ b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/fileTokensCopyUrl.svelte @@ -2,8 +2,8 @@ import { cachedJwts } from './store'; import { sdk } from '$lib/stores/sdk'; import type { Models } from '@appwrite.io/console'; - import { Modal, Card, CopyInput } from '$lib/components'; - import { Button, InputSelect, InputText } from '$lib/elements/forms'; + import { Modal, CopyInput } from '$lib/components'; + import { Button } from '$lib/elements/forms'; import { Alert, Layout, Tabs, Typography } from '@appwrite.io/pink-svelte'; import { page } from '$app/state'; From 32e706756c60cfaf3b350fc08b5cf4f473bca14c Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 15 May 2025 11:57:04 +0200 Subject: [PATCH 07/18] chore: enforce`noUnusedLocals` --- src/lib/commandCenter/searchers/databases.ts | 2 -- .../components/filters/filtersModal.svelte | 9 +---- .../components/filters/quickFilters.svelte | 2 +- .../git/productionBranchFieldset.svelte | 2 +- src/lib/components/git/repositories.svelte | 1 - src/lib/components/labelCard.svelte | 2 +- src/lib/components/paginationInline.svelte | 34 +++++++++---------- src/lib/components/searchQuery.svelte | 2 +- .../elements/forms/inputSelectCheckbox.svelte | 2 +- src/lib/layout/containerHeader.svelte | 1 - src/lib/layout/unauthenticated.svelte | 1 - src/lib/stores/pagination.ts | 2 +- src/lib/stores/uploader.ts | 1 - .../(console)/apply-credit/+page.svelte | 2 +- .../create-organization/+page.svelte | 16 ++------- .../billing/paymentHistory.svelte | 1 - .../billing/planSummary.svelte | 1 - .../change-plan/+page.svelte | 4 +-- .../domain-[domain]/createRecordModal.svelte | 1 - .../settings/deleteOrganizationModal.svelte | 2 +- .../settings/invoicesTable.svelte | 2 +- .../usage/[[invoice]]/ProjectBreakdown.svelte | 6 ++-- .../auth/templates/emailTemplate.svelte | 2 +- .../auth/templates/resetEmail.svelte | 1 - .../attributes/datetime.svelte | 1 - .../attributes/email.svelte | 1 - .../attributes/enum.svelte | 1 - .../attributes/float.svelte | 1 - .../attributes/integer.svelte | 1 - .../attributes/ip.svelte | 1 - .../attributes/string.svelte | 1 - .../relationshipsModal.svelte | 1 - .../collection-[collection]/table.svelte | 1 - .../database-[database]/string.svelte | 1 - .../database-[database]/table.svelte | 1 - .../function-[function]/+page.svelte | 4 +-- .../deployment-[deployment]/+page.svelte | 4 +-- .../executions/table.svelte | 2 +- .../settings/executeFunction.svelte | 4 +-- .../functions/templates/+page.ts | 4 +-- .../messaging/header.svelte | 1 - .../message-[message]/sendModal.svelte | 1 - .../providers/settingsFormInput.svelte | 1 - .../providers/wizard/settings.svelte | 9 ----- .../topics/topic-[topic]/+page.svelte | 2 +- .../overview/keys/[key]/header.svelte | 1 - .../components/OnboardingPlatformCard.svelte | 2 +- .../settings/domains/add-domain/+page.svelte | 2 -- .../settings/webhooks/+page.svelte | 2 -- .../(components)/openOnMobileModal.svelte | 2 +- .../sites/(components)/siteCard.svelte | 1 - .../sites/header.svelte | 1 - .../site-[site]/deployments/+page.svelte | 2 +- .../sites/site-[site]/header.svelte | 1 - .../sites/site-[site]/logs/+page.svelte | 6 ++-- .../sites/site-[site]/logs/table.svelte | 2 +- .../sites/site-[site]/settings/+page.ts | 1 - .../storage/bucket-[bucket]/+page.svelte | 1 - .../bucket-[bucket]/file-[file]/+page.svelte | 1 - .../storage/table.svelte | 1 - .../(public)/auth/preview/access/+page.svelte | 6 ++-- .../template-[template]/+layout.svelte | 1 - src/routes/+layout.ts | 4 --- tsconfig.json | 1 + 64 files changed, 53 insertions(+), 127 deletions(-) diff --git a/src/lib/commandCenter/searchers/databases.ts b/src/lib/commandCenter/searchers/databases.ts index 2ba0a1359..f50a1474d 100644 --- a/src/lib/commandCenter/searchers/databases.ts +++ b/src/lib/commandCenter/searchers/databases.ts @@ -1,6 +1,4 @@ import { goto } from '$app/navigation'; -import { project } from '$routes/(console)/project-[region]-[project]/store'; -import { get } from 'svelte/store'; import type { Searcher } from '../commands'; import { sdk } from '$lib/stores/sdk'; import { base } from '$app/paths'; diff --git a/src/lib/components/filters/filtersModal.svelte b/src/lib/components/filters/filtersModal.svelte index a192a60ea..07d410ad2 100644 --- a/src/lib/components/filters/filtersModal.svelte +++ b/src/lib/components/filters/filtersModal.svelte @@ -11,14 +11,7 @@ } from '$lib/elements/forms'; import type { Writable } from 'svelte/store'; import Modal from '../modal.svelte'; - import { - addFilter, - generateTag, - operators, - queries, - ValidOperators, - type TagValue - } from './store'; + import { generateTag, operators, ValidOperators, type TagValue } from './store'; import type { Column } from '$lib/helpers/types'; import { TagList } from '.'; import { Icon, Layout } from '@appwrite.io/pink-svelte'; diff --git a/src/lib/components/filters/quickFilters.svelte b/src/lib/components/filters/quickFilters.svelte index c00316154..3e1d1142a 100644 --- a/src/lib/components/filters/quickFilters.svelte +++ b/src/lib/components/filters/quickFilters.svelte @@ -1,7 +1,7 @@ {#if !hidePages} diff --git a/src/lib/components/searchQuery.svelte b/src/lib/components/searchQuery.svelte index 3c26004a8..2246d2a57 100644 --- a/src/lib/components/searchQuery.svelte +++ b/src/lib/components/searchQuery.svelte @@ -1,7 +1,7 @@ diff --git a/src/routes/(console)/project-[region]-[project]/functions/templates/+page.ts b/src/routes/(console)/project-[region]-[project]/functions/templates/+page.ts index d70e17a1e..6c252e152 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/templates/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/functions/templates/+page.ts @@ -1,9 +1,9 @@ -import { Dependencies, PAGE_LIMIT } from '$lib/constants'; +import { Dependencies } from '$lib/constants'; import { getSearch } from '$lib/helpers/load'; import { sdk } from '$lib/stores/sdk'; import type { PageLoad } from './$types'; -export const load: PageLoad = async ({ url, route, depends, parent, params }) => { +export const load: PageLoad = async ({ url, depends, parent, params }) => { depends(Dependencies.FUNCTIONS); const search = getSearch(url); diff --git a/src/routes/(console)/project-[region]-[project]/messaging/header.svelte b/src/routes/(console)/project-[region]-[project]/messaging/header.svelte index 1e11749b1..d0e5082cf 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/header.svelte @@ -6,7 +6,6 @@ import { Cover } from '$lib/layout'; import { Typography } from '@appwrite.io/pink-svelte'; - const projectId = page.params.project; const path = `${base}/project-${page.params.region}-${page.params.project}/messaging`; const tabs = [ { diff --git a/src/routes/(console)/project-[region]-[project]/messaging/message-[message]/sendModal.svelte b/src/routes/(console)/project-[region]-[project]/messaging/message-[message]/sendModal.svelte index 47e7f99d8..3fb7c5d22 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/message-[message]/sendModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/message-[message]/sendModal.svelte @@ -1,6 +1,5 @@ diff --git a/src/routes/(console)/project-[region]-[project]/sites/(components)/openOnMobileModal.svelte b/src/routes/(console)/project-[region]-[project]/sites/(components)/openOnMobileModal.svelte index 893da5fbb..97021ef42 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/(components)/openOnMobileModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/openOnMobileModal.svelte @@ -8,7 +8,7 @@ import { protocol } from '$routes/(console)/store'; import type { Models } from '@appwrite.io/console'; import { IconDuplicate } from '@appwrite.io/pink-icons-svelte'; - import { Icon, Image, Input, Layout, Tooltip } from '@appwrite.io/pink-svelte'; + import { Icon, Image, Layout, Tooltip } from '@appwrite.io/pink-svelte'; let { show = $bindable(), diff --git a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte index a298df23c..f01665e55 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte @@ -29,7 +29,6 @@ export let variant: 'primary' | 'secondary' = 'primary'; let show = false; - const siteUrl = proxyRuleList.total > 0 ? proxyRuleList.rules[0].domain : undefined; $: totalSize = humanFileSize(deployment?.totalSize ?? 0); diff --git a/src/routes/(console)/project-[region]-[project]/sites/header.svelte b/src/routes/(console)/project-[region]-[project]/sites/header.svelte index fcf9e71b7..511fcc0d3 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/header.svelte @@ -6,7 +6,6 @@ import { Cover } from '$lib/layout'; import { Typography } from '@appwrite.io/pink-svelte'; - $: projectId = page.params.project; $: path = `${base}/project-${page.params.region}-${page.params.project}/sites`; $: tabs = [ { diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte index bd2b77b96..7d2f8b9b1 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte @@ -1,5 +1,5 @@ diff --git a/src/routes/(public)/auth/preview/access/+page.svelte b/src/routes/(public)/auth/preview/access/+page.svelte index f69f3783f..be0b3d4cc 100644 --- a/src/routes/(public)/auth/preview/access/+page.svelte +++ b/src/routes/(public)/auth/preview/access/+page.svelte @@ -103,9 +103,9 @@ } } - async function requestAccess() { - //TODO: Implement request access - } + // async function requestAccess() { + // //TODO: Implement request access + // } $: console.log(data); diff --git a/src/routes/(public)/template-[template]/+layout.svelte b/src/routes/(public)/template-[template]/+layout.svelte index 9ca526e9c..24b88068c 100644 --- a/src/routes/(public)/template-[template]/+layout.svelte +++ b/src/routes/(public)/template-[template]/+layout.svelte @@ -1,6 +1,5 @@ diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts index a5aa3f371..78d86d2e4 100644 --- a/src/routes/+layout.ts +++ b/src/routes/+layout.ts @@ -28,10 +28,6 @@ export const load: LayoutLoad = async ({ depends, url, route }) => { } if (account) { - const organizations = !isCloud - ? await sdk.forConsole.teams.list() - : await sdk.forConsole.billing.listOrganization(); - return { account: account, organizations: !isCloud diff --git a/tsconfig.json b/tsconfig.json index 8f29ac22a..e7556c460 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,6 +9,7 @@ "skipLibCheck": true, "sourceMap": true, "strict": false, + "noUnusedLocals": true, "moduleResolution": "bundler" } } From ca41c431de20fb9b9bc2d2b544ae39fcecf1614f Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 15 May 2025 11:59:24 +0200 Subject: [PATCH 08/18] chore: enforce `noUnusedParameters` --- .../domains/+page.ts | 2 +- .../(modals)/createCli.svelte | 51 +++++++++---------- .../add-domain/verify-[domain]/+page.ts | 2 +- .../bucket-[bucket]/file-[file]/+page.svelte | 2 +- tsconfig.json | 1 + 5 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/routes/(console)/organization-[organization]/domains/+page.ts b/src/routes/(console)/organization-[organization]/domains/+page.ts index f083f1bec..d51738731 100644 --- a/src/routes/(console)/organization-[organization]/domains/+page.ts +++ b/src/routes/(console)/organization-[organization]/domains/+page.ts @@ -4,7 +4,7 @@ import { getLimit, getPage, getQuery, getSearch, pageToOffset } from '$lib/helpe import { Dependencies, PAGE_LIMIT } from '$lib/constants'; import { queries, queryParamToMap } from '$lib/components/filters'; -export const load = async ({ depends, url, route, params }) => { +export const load = async ({ depends, url, route }) => { depends(Dependencies.DOMAINS); const page = getPage(url); const limit = getLimit(url, route, PAGE_LIMIT); diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(modals)/createCli.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(modals)/createCli.svelte index bcc852e01..ae5cdc4c3 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(modals)/createCli.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(modals)/createCli.svelte @@ -3,13 +3,12 @@ import { Modal } from '$lib/components'; import { onMount } from 'svelte'; import { page } from '$app/state'; - import { func } from '../store'; import { Alert, Code, Layout, Tabs } from '@appwrite.io/pink-svelte'; import { Link } from '$lib/elements'; export let show = false; - let lang = 'js'; + // let lang = 'js'; let codeSnippets = {}; let os = 'unknown'; let category = 'Unix'; @@ -17,8 +16,8 @@ const functionId = page.params.function; onMount(() => { - lang = setLanguage($func.runtime); - codeSnippets = setCodeSnippets(lang); + // lang = setLanguage($func.runtime); + codeSnippets = setCodeSnippets(); os = navigator['userAgentData']?.platform || navigator?.platform || 'unknown'; if (os.includes('Win')) { @@ -30,29 +29,29 @@ } }); - function setLanguage(runtime: string) { - if (runtime.includes('node') || runtime.includes('deno')) { - return 'js'; - } else if (runtime.includes('php')) { - return 'php'; - } else if (runtime.includes('python')) { - return 'py'; - } else if (runtime.includes('dart')) { - return 'dart'; - } else if (runtime.includes('dotnet')) { - return 'cs'; - } else if (runtime.includes('ruby')) { - return 'rb'; - } else if (runtime.includes('swift')) { - return 'swift'; - } else if (runtime.includes('kotlin')) { - return 'kt'; - } else if (runtime.includes('java')) { - return 'java'; - } - } + // function setLanguage(runtime: string) { + // if (runtime.includes('node') || runtime.includes('deno')) { + // return 'js'; + // } else if (runtime.includes('php')) { + // return 'php'; + // } else if (runtime.includes('python')) { + // return 'py'; + // } else if (runtime.includes('dart')) { + // return 'dart'; + // } else if (runtime.includes('dotnet')) { + // return 'cs'; + // } else if (runtime.includes('ruby')) { + // return 'rb'; + // } else if (runtime.includes('swift')) { + // return 'swift'; + // } else if (runtime.includes('kotlin')) { + // return 'kt'; + // } else if (runtime.includes('java')) { + // return 'java'; + // } + // } - function setCodeSnippets(lang: string) { + function setCodeSnippets() { return { Unix: { code: `appwrite client --projectId="${page.params.project}" && \\ diff --git a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/verify-[domain]/+page.ts b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/verify-[domain]/+page.ts index dfaaa1a60..6e84864d1 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/verify-[domain]/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/verify-[domain]/+page.ts @@ -3,7 +3,7 @@ import { Dependencies } from '$lib/constants.js'; import { isCloud } from '$lib/system'; import type { Domain, DomainsList } from '$lib/sdk/domains.js'; -export const load = async ({ parent, depends, params }) => { +export const load = async ({ depends, params }) => { depends(Dependencies.DOMAINS); let domain: Domain; diff --git a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/+page.svelte b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/+page.svelte index 811ab2b50..3078996c3 100644 --- a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/+page.svelte @@ -358,7 +358,7 @@ { + on:click={async () => { toggle(); tokenDeleteMode = true; showManageToken = true; diff --git a/tsconfig.json b/tsconfig.json index e7556c460..8e3f5ada4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,7 @@ "sourceMap": true, "strict": false, "noUnusedLocals": true, + "noUnusedParameters": true, "moduleResolution": "bundler" } } From a141506d9cfabbba3352c8f5e776b2cf58e7ffff Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 15 May 2025 12:05:36 +0200 Subject: [PATCH 09/18] chore: more ts fixes --- src/lib/components/git/repositories.svelte | 4 +++- .../sites/site-[site]/domains/createPreviewDomainModal.svelte | 2 +- .../bucket-[bucket]/file-[file]/fileTokensCopyUrl.svelte | 2 +- tsconfig.json | 1 + 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/lib/components/git/repositories.svelte b/src/lib/components/git/repositories.svelte index e0d6a58f6..4212997bc 100644 --- a/src/lib/components/git/repositories.svelte +++ b/src/lib/components/git/repositories.svelte @@ -42,7 +42,7 @@ } = $props(); let search = $state(''); - let selectedInstallation = null; + let selectedInstallation: string = null; let isLoadingRepositories = $state(null); async function loadInstallations() { @@ -110,6 +110,8 @@ $repositories.search = search; $repositories.installationId = installationId; } + + $inspect(selectedRepository); {#if hasInstallations} diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/createPreviewDomainModal.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/createPreviewDomainModal.svelte index 9ab54a7b2..3cfc0d6ad 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/createPreviewDomainModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/createPreviewDomainModal.svelte @@ -18,7 +18,7 @@ let domain = baseDomain; let domainStatus: 'complete' | 'failed' | 'pending' = 'complete'; - let error = null; + let error: string = null; async function onSubmit() { try { await sdk diff --git a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/fileTokensCopyUrl.svelte b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/fileTokensCopyUrl.svelte index 7600e2a71..2744c6531 100644 --- a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/fileTokensCopyUrl.svelte +++ b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/fileTokensCopyUrl.svelte @@ -11,7 +11,7 @@ export let file: Models.File; export let token: Models.ResourceToken; - let error = null; + let error: boolean = null; let codeSnippets = {}; let selectedTab = 'Preview'; diff --git a/tsconfig.json b/tsconfig.json index 8e3f5ada4..900ee4e39 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,6 +11,7 @@ "strict": false, "noUnusedLocals": true, "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, "moduleResolution": "bundler" } } From 5be36b26f70c935587f9ff85b2950194eb9b2aef Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 15 May 2025 12:27:30 +0200 Subject: [PATCH 10/18] chore: remove some implicit `any` --- .../overview/(components)/create.svelte | 2 +- .../overview/(components)/keyDetails.svelte | 4 ++-- .../settings/domains/+page.svelte | 12 +++++------- .../settings/webhooks/create/+page.svelte | 2 +- .../sites/create-site/configuration.svelte | 3 --- .../templates/template-[template]/+page.svelte | 6 +++--- .../sites/site-[site]/deployments/+layout.svelte | 2 +- .../site-[site]/deployments/deploymentMetrics.svelte | 2 +- .../sites/site-[site]/domains/+page.svelte | 12 +++++------- .../storage/bucket-[bucket]/file-[file]/+page.svelte | 4 ++-- src/routes/(public)/card/+layout.svelte | 11 ----------- src/routes/(public)/hackathon/+layout.svelte | 11 ----------- 12 files changed, 21 insertions(+), 50 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/(components)/create.svelte b/src/routes/(console)/project-[region]-[project]/overview/(components)/create.svelte index 0cfda2130..3378bfe09 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/(components)/create.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/(components)/create.svelte @@ -22,7 +22,7 @@ let formComponent: Form; let isSubmitting = writable(false); - let scopes = []; + let scopes: string[] = []; let name = '', expire = ''; diff --git a/src/routes/(console)/project-[region]-[project]/overview/(components)/keyDetails.svelte b/src/routes/(console)/project-[region]-[project]/overview/(components)/keyDetails.svelte index 570abf8a1..ece01a739 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/(components)/keyDetails.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/(components)/keyDetails.svelte @@ -20,8 +20,8 @@ export let key: Models.DevKey | Models.Key; export let keyType: 'api' | 'dev' = 'api'; - let name = null; - let scopes = null; + let name: string = null; + let scopes: string[] = null; let showDelete = false; const isApiKey = keyType === 'api'; diff --git a/src/routes/(console)/project-[region]-[project]/settings/domains/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/domains/+page.svelte index b7e41a344..927045162 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/domains/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/domains/+page.svelte @@ -41,13 +41,11 @@ total={data.rules.total} /> {:else if data?.search} - - - + {:else} diff --git a/src/routes/(console)/project-[region]-[project]/settings/webhooks/create/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/webhooks/create/+page.svelte index b367c1d3a..4b21c8848 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/webhooks/create/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/webhooks/create/+page.svelte @@ -16,7 +16,7 @@ let showExitModal = false; let name = '', - events = [], + events: string[] = [], url = '', security = true, httpUser = '', diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/configuration.svelte b/src/routes/(console)/project-[region]-[project]/sites/create-site/configuration.svelte index f8491a38f..cc3e4cf16 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/configuration.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/configuration.svelte @@ -135,9 +135,6 @@
- - Environment variables - Set up environment variables to securely manage keys and settings for your project. diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/templates/template-[template]/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/create-site/templates/template-[template]/+page.svelte index 51f11db5d..7568aa58d 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/templates/template-[template]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/templates/template-[template]/+page.svelte @@ -24,7 +24,7 @@ import Details from '../../details.svelte'; import Configuration from './configuration.svelte'; import Aside from '../../aside.svelte'; - import { Adapter, BuildRuntime, Framework, ID } from '@appwrite.io/console'; + import { Adapter, BuildRuntime, Framework, ID, type Models } from '@appwrite.io/console'; import { ConnectBehaviour, NewRepository, @@ -56,12 +56,12 @@ let rootDir = './'; let connectBehaviour: 'now' | 'later' = 'now'; let repositoryBehaviour: 'new' | 'existing' = 'new'; - let repositoryName = undefined; + let repositoryName: string = undefined; let repositoryPrivate = true; let selectedInstallationId = ''; let selectedRepository = ''; let showSiteConfig = false; - let variables = []; + let variables: Partial[] = []; let silentMode = false; onMount(async () => { diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte index 7ac2ca58f..9c248525f 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte @@ -12,7 +12,7 @@ import { IconList, IconPlus, IconSearch } from '@appwrite.io/pink-icons-svelte'; onMount(() => { - let previousStatus = null; + let previousStatus: string = null; return sdk.forConsole.client.subscribe('console', (message) => { if (previousStatus === message.payload.status) { return; diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deploymentMetrics.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deploymentMetrics.svelte index 72304c395..32f018523 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deploymentMetrics.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deploymentMetrics.svelte @@ -18,7 +18,7 @@ ]; let range = SiteUsageRange.ThirtyDays; - let metrics = [ + let metrics: { id: string; value: string | null; description: string }[] = [ { id: 'buildsTotal', value: null, diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/+page.svelte index d77fc3a2a..23537ff99 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/+page.svelte @@ -39,13 +39,11 @@ total={data.domains.total} /> {:else if data?.search} - - - + {:else} diff --git a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/+page.svelte b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/+page.svelte index 3078996c3..389793fb5 100644 --- a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/file-[file]/+page.svelte @@ -180,7 +180,7 @@ const groups = token.$permissions.reduce((set, perm) => { const match = perm.match(/^(\w+)\(/); - const key = match?.[1]; + const key = match?.[1] as keyof typeof map; if (key && map[key]) set.add(map[key]); return set; }, new Set()); @@ -308,7 +308,7 @@ {#if token.$permissions.length} - + {getPermissionGroups(token)} {:else} diff --git a/src/routes/(public)/card/+layout.svelte b/src/routes/(public)/card/+layout.svelte index eaebf310b..b795ff5b0 100644 --- a/src/routes/(public)/card/+layout.svelte +++ b/src/routes/(public)/card/+layout.svelte @@ -1,20 +1,9 @@ -