diff --git a/apps/web/app/(dashboard)/home/[account]/layout.tsx b/apps/web/app/(dashboard)/home/[account]/layout.tsx index 9abb75f22..b41ba1d85 100644 --- a/apps/web/app/(dashboard)/home/[account]/layout.tsx +++ b/apps/web/app/(dashboard)/home/[account]/layout.tsx @@ -1,13 +1,12 @@ import { use } from 'react'; -import { parseSidebarStateCookie } from '@kit/shared/cookies/sidebar-state.cookie'; -import { parseThemeCookie } from '@kit/shared/cookies/theme.cookie'; import { Page } from '@kit/ui/page'; -import { AccountLayoutSidebar } from '~/(dashboard)/home/[account]/_components/account-layout-sidebar'; -import { loadTeamWorkspace } from '~/(dashboard)/home/[account]/_lib/load-team-account-workspace'; import { withI18n } from '~/lib/i18n/with-i18n'; +import { AccountLayoutSidebar } from './_components/account-layout-sidebar'; +import { loadTeamWorkspace } from './_lib/load-team-account-workspace'; + interface Params { account: string; } @@ -19,8 +18,6 @@ function TeamWorkspaceLayout({ params: Params; }>) { const data = use(loadTeamWorkspace(params.account)); - const ui = getUIStateCookies(); - const sidebarCollapsed = ui.sidebarState === 'collapsed'; const accounts = data.accounts.map(({ name, slug, picture_url }) => ({ label: name, @@ -32,7 +29,7 @@ function TeamWorkspaceLayout({ @@ -44,10 +41,3 @@ function TeamWorkspaceLayout({ } export default withI18n(TeamWorkspaceLayout); - -function getUIStateCookies() { - return { - theme: parseThemeCookie(), - sidebarState: parseSidebarStateCookie(), - }; -} diff --git a/apps/web/middleware.ts b/apps/web/middleware.ts index b5d55e7c2..d92c6820d 100644 --- a/apps/web/middleware.ts +++ b/apps/web/middleware.ts @@ -3,6 +3,7 @@ import { NextResponse, URLPattern } from 'next/server'; import csrf from 'edge-csrf'; +import { Logger } from '@kit/shared/logger'; import { checkRequiresMultiFactorAuthentication } from '@kit/supabase/check-requires-mfa'; import { createMiddlewareClient } from '@kit/supabase/middleware-client'; @@ -21,6 +22,8 @@ export const config = { export async function middleware(request: NextRequest) { const response = NextResponse.next(); + Logger.info({ name: `middleware`, message: `middleware` }); + // apply CSRF and session middleware const csrfResponse = await withCsrfMiddleware(request, response); diff --git a/apps/web/package.json b/apps/web/package.json index 43f525136..56f786adb 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -33,7 +33,7 @@ "@kit/ui": "workspace:^", "@radix-ui/react-icons": "^1.3.0", "@supabase/ssr": "^0.1.0", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.42.0", "@tanstack/react-query": "5.28.6", "@tanstack/react-query-next-experimental": "^5.28.14", "@tanstack/react-table": "^8.15.3", diff --git a/packages/billing/gateway/package.json b/packages/billing/gateway/package.json index 8c1ef4fc2..fd72b2710 100644 --- a/packages/billing/gateway/package.json +++ b/packages/billing/gateway/package.json @@ -19,7 +19,7 @@ "@kit/stripe": "0.1.0", "@kit/supabase": "^0.1.0", "@kit/ui": "0.1.0", - "@supabase/supabase-js": "^2.40.0", + "@supabase/supabase-js": "^2.42.0", "lucide-react": "^0.363.0", "zod": "^3.22.4" }, @@ -34,7 +34,7 @@ "@kit/tailwind-config": "workspace:*", "@kit/tsconfig": "workspace:*", "@kit/ui": "workspace:^", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.42.0", "lucide-react": "^0.363.0", "zod": "^3.22.4" }, diff --git a/packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts b/packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts index 7f5f94548..8739195a9 100644 --- a/packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts +++ b/packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts @@ -44,7 +44,7 @@ export class LemonSqueezyWebhookHandlerService // clone the request so we can read the body twice const reqClone = request.clone(); - const body = await request.json(); + const body = (await request.json()) as SubscriptionWebhook | OrderWebhook; const rawBody = await reqClone.text(); if (!signature) { diff --git a/packages/billing/lemon-squeezy/src/types/order-webhook.ts b/packages/billing/lemon-squeezy/src/types/order-webhook.ts index c9e57a078..5091794f4 100644 --- a/packages/billing/lemon-squeezy/src/types/order-webhook.ts +++ b/packages/billing/lemon-squeezy/src/types/order-webhook.ts @@ -5,6 +5,7 @@ export type OrderWebhook = { account_id: number; }; }; + data: { type: string; id: string; @@ -30,11 +31,12 @@ export type OrderWebhook = { status: string; status_formatted: string; refunded: boolean; - refunded_at: any; + refunded_at: string | null; subtotal_formatted: string; discount_total_formatted: string; tax_formatted: string; total_formatted: string; + first_order_item: { id: number; order_id: number; @@ -45,15 +47,18 @@ export type OrderWebhook = { price: number; created_at: string; updated_at: string; - deleted_at: any; + deleted_at: string | null; test_mode: boolean; }; + urls: { receipt: string; }; + created_at: string; updated_at: string; }; + relationships: { store: { links: { diff --git a/packages/billing/stripe/src/components/stripe-embedded-checkout.tsx b/packages/billing/stripe/src/components/stripe-embedded-checkout.tsx index 7111c4284..3312f9688 100644 --- a/packages/billing/stripe/src/components/stripe-embedded-checkout.tsx +++ b/packages/billing/stripe/src/components/stripe-embedded-checkout.tsx @@ -8,12 +8,7 @@ import { } from '@stripe/react-stripe-js'; import { loadStripe } from '@stripe/stripe-js'; -import { - Dialog, - DialogContent, - DialogHeader, - DialogTitle, -} from '@kit/ui/dialog'; +import { Dialog, DialogContent } from '@kit/ui/dialog'; import { StripeClientEnvSchema } from '../schema/stripe-client-env.schema'; diff --git a/packages/cms/contentlayer/src/client.ts b/packages/cms/contentlayer/src/client.ts index a249719a5..e184409b7 100644 --- a/packages/cms/contentlayer/src/client.ts +++ b/packages/cms/contentlayer/src/client.ts @@ -126,7 +126,7 @@ export class ContentlayerClient implements CmsClient { order: 'order' in post ? post.order : 0, image: 'image' in post ? post.image : undefined, publishedAt: 'date' in post ? new Date(post.date) : new Date(), - parentId: 'parentId' in post ? (post.parentId as string) : undefined, + parentId: 'parentId' in post ? post.parentId : undefined, url: post.url, slug: post.slug, author: 'author' in post ? post.author : '', diff --git a/packages/cms/wordpress/src/wp-client.ts b/packages/cms/wordpress/src/wp-client.ts index 5fc764fd6..fcf557f4b 100644 --- a/packages/cms/wordpress/src/wp-client.ts +++ b/packages/cms/wordpress/src/wp-client.ts @@ -77,7 +77,9 @@ export class WordpressClient implements CmsClient { const urls = endpoints.map((endpoint) => `${this.apiUrl}${endpoint}`); const responses = await Promise.all( - urls.map((url) => fetch(url).then((value) => value.json())), + urls.map((url) => + fetch(url).then((value) => value.json() as Promise), + ), ).then((values) => values.flat().filter(Boolean)); return await Promise.all( @@ -130,14 +132,16 @@ export class WordpressClient implements CmsClient { ]; const promises = endpoints.map((endpoint) => - fetch(this.apiUrl + endpoint).then((res) => res.json()), + fetch(this.apiUrl + endpoint).then( + (res) => res.json() as Promise, + ), ); const responses = await Promise.all(promises).then((values) => values.filter(Boolean), ); - const item = responses[0][0] as WP_REST_API_Post; + const item = responses[0] ? responses[0][0] : undefined; if (!item) { return; diff --git a/packages/database-webhooks/package.json b/packages/database-webhooks/package.json index ee6a91876..8b520eb37 100644 --- a/packages/database-webhooks/package.json +++ b/packages/database-webhooks/package.json @@ -16,8 +16,7 @@ "@kit/billing-gateway": "workspace:^", "@kit/shared": "^0.1.0", "@kit/supabase": "^0.1.0", - "@kit/team-accounts": "workspace:^", - "@supabase/supabase-js": "^2.40.0" + "@kit/team-accounts": "workspace:^" }, "devDependencies": { "@kit/billing": "workspace:^", @@ -31,7 +30,7 @@ "@kit/team-accounts": "*", "@kit/tsconfig": "workspace:*", "@kit/ui": "workspace:^", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.42.0", "lucide-react": "^0.363.0", "zod": "^3.22.4" }, diff --git a/packages/database-webhooks/src/server/services/database-webhook-router.service.ts b/packages/database-webhooks/src/server/services/database-webhook-router.service.ts index d6caf9766..c82b2f5eb 100644 --- a/packages/database-webhooks/src/server/services/database-webhook-router.service.ts +++ b/packages/database-webhooks/src/server/services/database-webhook-router.service.ts @@ -56,6 +56,7 @@ export class DatabaseWebhookRouterService { private handleAccountsMembershipsWebhook( payload: RecordChange<'accounts_memberships'>, ) { + console.log('Accounts Memberships Webhook', payload); // no-op return Promise.resolve(undefined); } diff --git a/packages/features/accounts/src/components/personal-account-settings/update-account-image-container.tsx b/packages/features/accounts/src/components/personal-account-settings/update-account-image-container.tsx index 61e45af32..0e5df1dcc 100644 --- a/packages/features/accounts/src/components/personal-account-settings/update-account-image-container.tsx +++ b/packages/features/accounts/src/components/personal-account-settings/update-account-image-container.tsx @@ -7,6 +7,7 @@ import type { SupabaseClient } from '@supabase/supabase-js'; import { useTranslation } from 'react-i18next'; import { toast } from 'sonner'; +import { Database } from '@kit/supabase/database'; import { useSupabase } from '@kit/supabase/hooks/use-supabase'; import { ImageUploader } from '@kit/ui/image-uploader'; import { LoadingOverlay } from '@kit/ui/loading-overlay'; @@ -123,7 +124,7 @@ function UploadProfileAvatarForm(props: { ); } -function deleteProfilePhoto(client: SupabaseClient, url: string) { +function deleteProfilePhoto(client: SupabaseClient, url: string) { const bucket = client.storage.from(AVATARS_BUCKET); const fileName = url.split('/').pop()?.split('?')[0]; @@ -135,7 +136,7 @@ function deleteProfilePhoto(client: SupabaseClient, url: string) { } async function uploadUserProfilePhoto( - client: SupabaseClient, + client: SupabaseClient, photoFile: File, userId: string, ) { @@ -158,6 +159,9 @@ async function getAvatarFileName( extension: string | undefined, ) { const { nanoid } = await import('nanoid'); + + // we add a version to the URL to ensure + // the browser always fetches the latest image const uniqueId = nanoid(16); return `${userId}.${extension}?v=${uniqueId}`; diff --git a/packages/features/admin/package.json b/packages/features/admin/package.json index 3dcd49eac..d6507ca64 100644 --- a/packages/features/admin/package.json +++ b/packages/features/admin/package.json @@ -19,7 +19,7 @@ "@kit/tailwind-config": "workspace:*", "@kit/tsconfig": "workspace:*", "@kit/ui": "workspace:^", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.42.0", "lucide-react": "^0.363.0" }, "exports": { diff --git a/packages/features/team-accounts/package.json b/packages/features/team-accounts/package.json index 1ad3484d4..0e1e9b5f7 100644 --- a/packages/features/team-accounts/package.json +++ b/packages/features/team-accounts/package.json @@ -25,6 +25,7 @@ "@kit/tailwind-config": "workspace:*", "@kit/tsconfig": "workspace:*", "@kit/ui": "workspace:^", + "@supabase/supabase-js": "^2.42.0", "@tanstack/react-query": "5.28.6", "lucide-react": "^0.363.0", "react-i18next": "^14.1.0" @@ -36,6 +37,7 @@ "@kit/shared": "0.1.0", "@kit/supabase": "0.1.0", "@kit/ui": "0.1.0", + "@supabase/supabase-js": "^2.42.0", "lucide-react": "^0.363.0" }, "prettier": "@kit/prettier-config", diff --git a/packages/features/team-accounts/src/components/settings/team-account-danger-zone.tsx b/packages/features/team-accounts/src/components/settings/team-account-danger-zone.tsx index 149ea4624..7b3265566 100644 --- a/packages/features/team-accounts/src/components/settings/team-account-danger-zone.tsx +++ b/packages/features/team-accounts/src/components/settings/team-account-danger-zone.tsx @@ -53,12 +53,15 @@ export function TeamAccountDangerZone({ return ; } + // Only the primary owner can delete the team account const userIsPrimaryOwner = user?.id === primaryOwnerUserId; if (userIsPrimaryOwner) { - return ; + return ; } + // A primary owner can't leave the team account + // but other members can return ; } diff --git a/packages/shared/package.json b/packages/shared/package.json index 71e212d6c..a7285d5a8 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -11,9 +11,6 @@ "prettier": "@kit/prettier-config", "exports": { "./logger": "./src/logger/index.ts", - "./hooks/*": "./src/hooks/*.ts", - "./contexts/*": "./src/contexts/*.ts", - "./cookies/*": "./src/cookies/*.ts", "./utils": "./src/utils.ts" }, "dependencies": { diff --git a/packages/shared/src/cookies/sidebar-state.cookie.ts b/packages/shared/src/cookies/sidebar-state.cookie.ts deleted file mode 100644 index 9a2b7af3c..000000000 --- a/packages/shared/src/cookies/sidebar-state.cookie.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { cookies } from 'next/headers'; - -const SIDEBAR_STATE_COOKIE_NAME = 'sidebarState'; - -export function parseSidebarStateCookie() { - return cookies().get(SIDEBAR_STATE_COOKIE_NAME)?.value; -} diff --git a/packages/shared/src/cookies/theme.cookie.ts b/packages/shared/src/cookies/theme.cookie.ts deleted file mode 100644 index 26ad2a45b..000000000 --- a/packages/shared/src/cookies/theme.cookie.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { cookies } from 'next/headers'; - -const THEME_COOKIE_NAME = 'theme'; - -export function parseThemeCookie() { - return cookies().get(THEME_COOKIE_NAME)?.value; -} diff --git a/packages/shared/src/logger/index.ts b/packages/shared/src/logger/index.ts index 97c24d1b6..0323c4dca 100644 --- a/packages/shared/src/logger/index.ts +++ b/packages/shared/src/logger/index.ts @@ -1,6 +1,23 @@ +import { Logger as LoggerInstance } from './logger'; + /* * Logger * By default, the logger is set to use Pino. To change the logger, update the import statement below. * to your desired logger implementation. */ -export * from './impl/pino'; +async function getLogger(): Promise { + switch (process.env.LOGGER ?? 'pino') { + case 'pino': { + const { Logger: PinoLogger } = await import('./impl/pino'); + + return PinoLogger; + } + + default: + throw new Error(`Unknown logger: ${process.env.LOGGER}`); + } +} + +const Logger = await getLogger(); + +export { Logger }; diff --git a/packages/shared/src/logger/logger.ts b/packages/shared/src/logger/logger.ts new file mode 100644 index 000000000..4bd01185f --- /dev/null +++ b/packages/shared/src/logger/logger.ts @@ -0,0 +1,17 @@ +type LogFn = { + (obj: T, msg?: string, ...args: unknown[]): void; + (obj: unknown, msg?: string, ...args: unknown[]): void; + (msg: string, ...args: unknown[]): void; +}; + +/** + * @name Logger + * @description Logger interface for logging messages + */ +export interface Logger { + info: LogFn; + error: LogFn; + warn: LogFn; + debug: LogFn; + fatal: LogFn; +} diff --git a/packages/supabase/package.json b/packages/supabase/package.json index 93a3ac7cc..d088f4ceb 100644 --- a/packages/supabase/package.json +++ b/packages/supabase/package.json @@ -30,13 +30,13 @@ "@kit/tsconfig": "workspace:*", "@supabase/gotrue-js": "2.62.2", "@supabase/ssr": "^0.1.0", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.42.0", "@tanstack/react-query": "5.28.6" }, "peerDependencies": { "@epic-web/invariant": "^1.0.0", "@supabase/ssr": "^0.1.0", - "@supabase/supabase-js": "^2.40.0", + "@supabase/supabase-js": "^2.42.0", "@tanstack/react-query": "^5.28.6" }, "eslintConfig": { diff --git a/packages/supabase/src/database.types.ts b/packages/supabase/src/database.types.ts index 8fa7f8193..a5123aa34 100644 --- a/packages/supabase/src/database.types.ts +++ b/packages/supabase/src/database.types.ts @@ -4,1214 +4,1213 @@ export type Json = | boolean | null | { [key: string]: Json | undefined } - | Json[] + | Json[]; export type Database = { graphql_public: { Tables: { - [_ in never]: never - } + [_ in never]: never; + }; Views: { - [_ in never]: never - } + [_ in never]: never; + }; Functions: { graphql: { Args: { - operationName?: string - query?: string - variables?: Json - extensions?: Json - } - Returns: Json - } - } + operationName?: string; + query?: string; + variables?: Json; + extensions?: Json; + }; + Returns: Json; + }; + }; Enums: { - [_ in never]: never - } + [_ in never]: never; + }; CompositeTypes: { - [_ in never]: never - } - } + [_ in never]: never; + }; + }; public: { Tables: { account_roles: { Row: { - account_id: string - id: number - role: string - } + account_id: string; + id: number; + role: string; + }; Insert: { - account_id: string - id?: number - role: string - } + account_id: string; + id?: number; + role: string; + }; Update: { - account_id?: string - id?: number - role?: string - } + account_id?: string; + id?: number; + role?: string; + }; Relationships: [ { - foreignKeyName: "account_roles_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "accounts" - referencedColumns: ["id"] + foreignKeyName: 'account_roles_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'accounts'; + referencedColumns: ['id']; }, { - foreignKeyName: "account_roles_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_account_workspace" - referencedColumns: ["id"] + foreignKeyName: 'account_roles_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_account_workspace'; + referencedColumns: ['id']; }, { - foreignKeyName: "account_roles_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_accounts" - referencedColumns: ["id"] + foreignKeyName: 'account_roles_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_accounts'; + referencedColumns: ['id']; }, { - foreignKeyName: "account_roles_role_fkey" - columns: ["role"] - isOneToOne: false - referencedRelation: "roles" - referencedColumns: ["name"] + foreignKeyName: 'account_roles_role_fkey'; + columns: ['role']; + isOneToOne: false; + referencedRelation: 'roles'; + referencedColumns: ['name']; }, - ] - } + ]; + }; accounts: { Row: { - created_at: string | null - created_by: string | null - email: string | null - id: string - is_personal_account: boolean - name: string - picture_url: string | null - primary_owner_user_id: string - slug: string | null - updated_at: string | null - updated_by: string | null - } + created_at: string | null; + created_by: string | null; + email: string | null; + id: string; + is_personal_account: boolean; + name: string; + picture_url: string | null; + primary_owner_user_id: string; + slug: string | null; + updated_at: string | null; + updated_by: string | null; + }; Insert: { - created_at?: string | null - created_by?: string | null - email?: string | null - id?: string - is_personal_account?: boolean - name: string - picture_url?: string | null - primary_owner_user_id?: string - slug?: string | null - updated_at?: string | null - updated_by?: string | null - } + created_at?: string | null; + created_by?: string | null; + email?: string | null; + id?: string; + is_personal_account?: boolean; + name: string; + picture_url?: string | null; + primary_owner_user_id?: string; + slug?: string | null; + updated_at?: string | null; + updated_by?: string | null; + }; Update: { - created_at?: string | null - created_by?: string | null - email?: string | null - id?: string - is_personal_account?: boolean - name?: string - picture_url?: string | null - primary_owner_user_id?: string - slug?: string | null - updated_at?: string | null - updated_by?: string | null - } + created_at?: string | null; + created_by?: string | null; + email?: string | null; + id?: string; + is_personal_account?: boolean; + name?: string; + picture_url?: string | null; + primary_owner_user_id?: string; + slug?: string | null; + updated_at?: string | null; + updated_by?: string | null; + }; Relationships: [ { - foreignKeyName: "accounts_created_by_fkey" - columns: ["created_by"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] + foreignKeyName: 'accounts_created_by_fkey'; + columns: ['created_by']; + isOneToOne: false; + referencedRelation: 'users'; + referencedColumns: ['id']; }, { - foreignKeyName: "accounts_primary_owner_user_id_fkey" - columns: ["primary_owner_user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] + foreignKeyName: 'accounts_primary_owner_user_id_fkey'; + columns: ['primary_owner_user_id']; + isOneToOne: false; + referencedRelation: 'users'; + referencedColumns: ['id']; }, { - foreignKeyName: "accounts_updated_by_fkey" - columns: ["updated_by"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] + foreignKeyName: 'accounts_updated_by_fkey'; + columns: ['updated_by']; + isOneToOne: false; + referencedRelation: 'users'; + referencedColumns: ['id']; }, - ] - } + ]; + }; accounts_memberships: { Row: { - account_id: string - account_role: string - created_at: string - created_by: string | null - updated_at: string - updated_by: string | null - user_id: string - } + account_id: string; + account_role: string; + created_at: string; + created_by: string | null; + updated_at: string; + updated_by: string | null; + user_id: string; + }; Insert: { - account_id: string - account_role: string - created_at?: string - created_by?: string | null - updated_at?: string - updated_by?: string | null - user_id: string - } + account_id: string; + account_role: string; + created_at?: string; + created_by?: string | null; + updated_at?: string; + updated_by?: string | null; + user_id: string; + }; Update: { - account_id?: string - account_role?: string - created_at?: string - created_by?: string | null - updated_at?: string - updated_by?: string | null - user_id?: string - } + account_id?: string; + account_role?: string; + created_at?: string; + created_by?: string | null; + updated_at?: string; + updated_by?: string | null; + user_id?: string; + }; Relationships: [ { - foreignKeyName: "accounts_memberships_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "accounts" - referencedColumns: ["id"] + foreignKeyName: 'accounts_memberships_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'accounts'; + referencedColumns: ['id']; }, { - foreignKeyName: "accounts_memberships_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_account_workspace" - referencedColumns: ["id"] + foreignKeyName: 'accounts_memberships_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_account_workspace'; + referencedColumns: ['id']; }, { - foreignKeyName: "accounts_memberships_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_accounts" - referencedColumns: ["id"] + foreignKeyName: 'accounts_memberships_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_accounts'; + referencedColumns: ['id']; }, { - foreignKeyName: "accounts_memberships_account_role_fkey" - columns: ["account_role"] - isOneToOne: false - referencedRelation: "roles" - referencedColumns: ["name"] + foreignKeyName: 'accounts_memberships_account_role_fkey'; + columns: ['account_role']; + isOneToOne: false; + referencedRelation: 'roles'; + referencedColumns: ['name']; }, { - foreignKeyName: "accounts_memberships_created_by_fkey" - columns: ["created_by"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] + foreignKeyName: 'accounts_memberships_created_by_fkey'; + columns: ['created_by']; + isOneToOne: false; + referencedRelation: 'users'; + referencedColumns: ['id']; }, { - foreignKeyName: "accounts_memberships_updated_by_fkey" - columns: ["updated_by"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] + foreignKeyName: 'accounts_memberships_updated_by_fkey'; + columns: ['updated_by']; + isOneToOne: false; + referencedRelation: 'users'; + referencedColumns: ['id']; }, { - foreignKeyName: "accounts_memberships_user_id_fkey" - columns: ["user_id"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] + foreignKeyName: 'accounts_memberships_user_id_fkey'; + columns: ['user_id']; + isOneToOne: false; + referencedRelation: 'users'; + referencedColumns: ['id']; }, - ] - } + ]; + }; billing_customers: { Row: { - account_id: string - customer_id: string - email: string | null - id: number - provider: Database["public"]["Enums"]["billing_provider"] - } + account_id: string; + customer_id: string; + email: string | null; + id: number; + provider: Database['public']['Enums']['billing_provider']; + }; Insert: { - account_id: string - customer_id: string - email?: string | null - id?: number - provider: Database["public"]["Enums"]["billing_provider"] - } + account_id: string; + customer_id: string; + email?: string | null; + id?: number; + provider: Database['public']['Enums']['billing_provider']; + }; Update: { - account_id?: string - customer_id?: string - email?: string | null - id?: number - provider?: Database["public"]["Enums"]["billing_provider"] - } + account_id?: string; + customer_id?: string; + email?: string | null; + id?: number; + provider?: Database['public']['Enums']['billing_provider']; + }; Relationships: [ { - foreignKeyName: "billing_customers_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "accounts" - referencedColumns: ["id"] + foreignKeyName: 'billing_customers_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'accounts'; + referencedColumns: ['id']; }, { - foreignKeyName: "billing_customers_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_account_workspace" - referencedColumns: ["id"] + foreignKeyName: 'billing_customers_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_account_workspace'; + referencedColumns: ['id']; }, { - foreignKeyName: "billing_customers_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_accounts" - referencedColumns: ["id"] + foreignKeyName: 'billing_customers_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_accounts'; + referencedColumns: ['id']; }, - ] - } + ]; + }; config: { Row: { - billing_provider: Database["public"]["Enums"]["billing_provider"] - enable_account_billing: boolean - enable_team_account_billing: boolean - enable_team_accounts: boolean - } + billing_provider: Database['public']['Enums']['billing_provider']; + enable_account_billing: boolean; + enable_team_account_billing: boolean; + enable_team_accounts: boolean; + }; Insert: { - billing_provider?: Database["public"]["Enums"]["billing_provider"] - enable_account_billing?: boolean - enable_team_account_billing?: boolean - enable_team_accounts?: boolean - } + billing_provider?: Database['public']['Enums']['billing_provider']; + enable_account_billing?: boolean; + enable_team_account_billing?: boolean; + enable_team_accounts?: boolean; + }; Update: { - billing_provider?: Database["public"]["Enums"]["billing_provider"] - enable_account_billing?: boolean - enable_team_account_billing?: boolean - enable_team_accounts?: boolean - } - Relationships: [] - } + billing_provider?: Database['public']['Enums']['billing_provider']; + enable_account_billing?: boolean; + enable_team_account_billing?: boolean; + enable_team_accounts?: boolean; + }; + Relationships: []; + }; invitations: { Row: { - account_id: string - created_at: string - email: string - expires_at: string - id: number - invite_token: string - invited_by: string - role: string - updated_at: string - } + account_id: string; + created_at: string; + email: string; + expires_at: string; + id: number; + invite_token: string; + invited_by: string; + role: string; + updated_at: string; + }; Insert: { - account_id: string - created_at?: string - email: string - expires_at?: string - id?: number - invite_token: string - invited_by: string - role: string - updated_at?: string - } + account_id: string; + created_at?: string; + email: string; + expires_at?: string; + id?: number; + invite_token: string; + invited_by: string; + role: string; + updated_at?: string; + }; Update: { - account_id?: string - created_at?: string - email?: string - expires_at?: string - id?: number - invite_token?: string - invited_by?: string - role?: string - updated_at?: string - } + account_id?: string; + created_at?: string; + email?: string; + expires_at?: string; + id?: number; + invite_token?: string; + invited_by?: string; + role?: string; + updated_at?: string; + }; Relationships: [ { - foreignKeyName: "invitations_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "accounts" - referencedColumns: ["id"] + foreignKeyName: 'invitations_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'accounts'; + referencedColumns: ['id']; }, { - foreignKeyName: "invitations_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_account_workspace" - referencedColumns: ["id"] + foreignKeyName: 'invitations_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_account_workspace'; + referencedColumns: ['id']; }, { - foreignKeyName: "invitations_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_accounts" - referencedColumns: ["id"] + foreignKeyName: 'invitations_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_accounts'; + referencedColumns: ['id']; }, { - foreignKeyName: "invitations_invited_by_fkey" - columns: ["invited_by"] - isOneToOne: false - referencedRelation: "users" - referencedColumns: ["id"] + foreignKeyName: 'invitations_invited_by_fkey'; + columns: ['invited_by']; + isOneToOne: false; + referencedRelation: 'users'; + referencedColumns: ['id']; }, { - foreignKeyName: "invitations_role_fkey" - columns: ["role"] - isOneToOne: false - referencedRelation: "roles" - referencedColumns: ["name"] + foreignKeyName: 'invitations_role_fkey'; + columns: ['role']; + isOneToOne: false; + referencedRelation: 'roles'; + referencedColumns: ['name']; }, - ] - } + ]; + }; order_items: { Row: { - created_at: string - order_id: string - price_amount: number | null - product_id: string - quantity: number - updated_at: string - variant_id: string - } + created_at: string; + order_id: string; + price_amount: number | null; + product_id: string; + quantity: number; + updated_at: string; + variant_id: string; + }; Insert: { - created_at?: string - order_id: string - price_amount?: number | null - product_id: string - quantity?: number - updated_at?: string - variant_id: string - } + created_at?: string; + order_id: string; + price_amount?: number | null; + product_id: string; + quantity?: number; + updated_at?: string; + variant_id: string; + }; Update: { - created_at?: string - order_id?: string - price_amount?: number | null - product_id?: string - quantity?: number - updated_at?: string - variant_id?: string - } + created_at?: string; + order_id?: string; + price_amount?: number | null; + product_id?: string; + quantity?: number; + updated_at?: string; + variant_id?: string; + }; Relationships: [ { - foreignKeyName: "order_items_order_id_fkey" - columns: ["order_id"] - isOneToOne: false - referencedRelation: "orders" - referencedColumns: ["id"] + foreignKeyName: 'order_items_order_id_fkey'; + columns: ['order_id']; + isOneToOne: false; + referencedRelation: 'orders'; + referencedColumns: ['id']; }, - ] - } + ]; + }; orders: { Row: { - account_id: string - billing_customer_id: number - billing_provider: Database["public"]["Enums"]["billing_provider"] - created_at: string - currency: string - id: string - status: Database["public"]["Enums"]["payment_status"] - total_amount: number - updated_at: string - } + account_id: string; + billing_customer_id: number; + billing_provider: Database['public']['Enums']['billing_provider']; + created_at: string; + currency: string; + id: string; + status: Database['public']['Enums']['payment_status']; + total_amount: number; + updated_at: string; + }; Insert: { - account_id: string - billing_customer_id: number - billing_provider: Database["public"]["Enums"]["billing_provider"] - created_at?: string - currency: string - id: string - status: Database["public"]["Enums"]["payment_status"] - total_amount: number - updated_at?: string - } + account_id: string; + billing_customer_id: number; + billing_provider: Database['public']['Enums']['billing_provider']; + created_at?: string; + currency: string; + id: string; + status: Database['public']['Enums']['payment_status']; + total_amount: number; + updated_at?: string; + }; Update: { - account_id?: string - billing_customer_id?: number - billing_provider?: Database["public"]["Enums"]["billing_provider"] - created_at?: string - currency?: string - id?: string - status?: Database["public"]["Enums"]["payment_status"] - total_amount?: number - updated_at?: string - } + account_id?: string; + billing_customer_id?: number; + billing_provider?: Database['public']['Enums']['billing_provider']; + created_at?: string; + currency?: string; + id?: string; + status?: Database['public']['Enums']['payment_status']; + total_amount?: number; + updated_at?: string; + }; Relationships: [ { - foreignKeyName: "orders_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "accounts" - referencedColumns: ["id"] + foreignKeyName: 'orders_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'accounts'; + referencedColumns: ['id']; }, { - foreignKeyName: "orders_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_account_workspace" - referencedColumns: ["id"] + foreignKeyName: 'orders_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_account_workspace'; + referencedColumns: ['id']; }, { - foreignKeyName: "orders_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_accounts" - referencedColumns: ["id"] + foreignKeyName: 'orders_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_accounts'; + referencedColumns: ['id']; }, { - foreignKeyName: "orders_billing_customer_id_fkey" - columns: ["billing_customer_id"] - isOneToOne: false - referencedRelation: "billing_customers" - referencedColumns: ["id"] + foreignKeyName: 'orders_billing_customer_id_fkey'; + columns: ['billing_customer_id']; + isOneToOne: false; + referencedRelation: 'billing_customers'; + referencedColumns: ['id']; }, - ] - } + ]; + }; role_permissions: { Row: { - id: number - permission: Database["public"]["Enums"]["app_permissions"] - role: string - } + id: number; + permission: Database['public']['Enums']['app_permissions']; + role: string; + }; Insert: { - id?: number - permission: Database["public"]["Enums"]["app_permissions"] - role: string - } + id?: number; + permission: Database['public']['Enums']['app_permissions']; + role: string; + }; Update: { - id?: number - permission?: Database["public"]["Enums"]["app_permissions"] - role?: string - } + id?: number; + permission?: Database['public']['Enums']['app_permissions']; + role?: string; + }; Relationships: [ { - foreignKeyName: "role_permissions_role_fkey" - columns: ["role"] - isOneToOne: false - referencedRelation: "roles" - referencedColumns: ["name"] + foreignKeyName: 'role_permissions_role_fkey'; + columns: ['role']; + isOneToOne: false; + referencedRelation: 'roles'; + referencedColumns: ['name']; }, - ] - } + ]; + }; roles: { Row: { - account_id: string | null - hierarchy_level: number - name: string - } + account_id: string | null; + hierarchy_level: number; + name: string; + }; Insert: { - account_id?: string | null - hierarchy_level: number - name: string - } + account_id?: string | null; + hierarchy_level: number; + name: string; + }; Update: { - account_id?: string | null - hierarchy_level?: number - name?: string - } + account_id?: string | null; + hierarchy_level?: number; + name?: string; + }; Relationships: [ { - foreignKeyName: "roles_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "accounts" - referencedColumns: ["id"] + foreignKeyName: 'roles_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'accounts'; + referencedColumns: ['id']; }, { - foreignKeyName: "roles_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_account_workspace" - referencedColumns: ["id"] + foreignKeyName: 'roles_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_account_workspace'; + referencedColumns: ['id']; }, { - foreignKeyName: "roles_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_accounts" - referencedColumns: ["id"] + foreignKeyName: 'roles_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_accounts'; + referencedColumns: ['id']; }, - ] - } + ]; + }; subscription_items: { Row: { - created_at: string - interval: string - interval_count: number - price_amount: number | null - product_id: string - quantity: number - subscription_id: string - updated_at: string - variant_id: string - } + created_at: string; + interval: string; + interval_count: number; + price_amount: number | null; + product_id: string; + quantity: number; + subscription_id: string; + updated_at: string; + variant_id: string; + }; Insert: { - created_at?: string - interval: string - interval_count: number - price_amount?: number | null - product_id: string - quantity?: number - subscription_id: string - updated_at?: string - variant_id: string - } + created_at?: string; + interval: string; + interval_count: number; + price_amount?: number | null; + product_id: string; + quantity?: number; + subscription_id: string; + updated_at?: string; + variant_id: string; + }; Update: { - created_at?: string - interval?: string - interval_count?: number - price_amount?: number | null - product_id?: string - quantity?: number - subscription_id?: string - updated_at?: string - variant_id?: string - } + created_at?: string; + interval?: string; + interval_count?: number; + price_amount?: number | null; + product_id?: string; + quantity?: number; + subscription_id?: string; + updated_at?: string; + variant_id?: string; + }; Relationships: [ { - foreignKeyName: "subscription_items_subscription_id_fkey" - columns: ["subscription_id"] - isOneToOne: false - referencedRelation: "subscriptions" - referencedColumns: ["id"] + foreignKeyName: 'subscription_items_subscription_id_fkey'; + columns: ['subscription_id']; + isOneToOne: false; + referencedRelation: 'subscriptions'; + referencedColumns: ['id']; }, - ] - } + ]; + }; subscriptions: { Row: { - account_id: string - active: boolean - billing_customer_id: number - billing_provider: Database["public"]["Enums"]["billing_provider"] - cancel_at_period_end: boolean - created_at: string - currency: string - id: string - period_ends_at: string - period_starts_at: string - status: Database["public"]["Enums"]["subscription_status"] - trial_ends_at: string | null - trial_starts_at: string | null - updated_at: string - } + account_id: string; + active: boolean; + billing_customer_id: number; + billing_provider: Database['public']['Enums']['billing_provider']; + cancel_at_period_end: boolean; + created_at: string; + currency: string; + id: string; + period_ends_at: string; + period_starts_at: string; + status: Database['public']['Enums']['subscription_status']; + trial_ends_at: string | null; + trial_starts_at: string | null; + updated_at: string; + }; Insert: { - account_id: string - active: boolean - billing_customer_id: number - billing_provider: Database["public"]["Enums"]["billing_provider"] - cancel_at_period_end: boolean - created_at?: string - currency: string - id: string - period_ends_at: string - period_starts_at: string - status: Database["public"]["Enums"]["subscription_status"] - trial_ends_at?: string | null - trial_starts_at?: string | null - updated_at?: string - } + account_id: string; + active: boolean; + billing_customer_id: number; + billing_provider: Database['public']['Enums']['billing_provider']; + cancel_at_period_end: boolean; + created_at?: string; + currency: string; + id: string; + period_ends_at: string; + period_starts_at: string; + status: Database['public']['Enums']['subscription_status']; + trial_ends_at?: string | null; + trial_starts_at?: string | null; + updated_at?: string; + }; Update: { - account_id?: string - active?: boolean - billing_customer_id?: number - billing_provider?: Database["public"]["Enums"]["billing_provider"] - cancel_at_period_end?: boolean - created_at?: string - currency?: string - id?: string - period_ends_at?: string - period_starts_at?: string - status?: Database["public"]["Enums"]["subscription_status"] - trial_ends_at?: string | null - trial_starts_at?: string | null - updated_at?: string - } + account_id?: string; + active?: boolean; + billing_customer_id?: number; + billing_provider?: Database['public']['Enums']['billing_provider']; + cancel_at_period_end?: boolean; + created_at?: string; + currency?: string; + id?: string; + period_ends_at?: string; + period_starts_at?: string; + status?: Database['public']['Enums']['subscription_status']; + trial_ends_at?: string | null; + trial_starts_at?: string | null; + updated_at?: string; + }; Relationships: [ { - foreignKeyName: "subscriptions_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "accounts" - referencedColumns: ["id"] + foreignKeyName: 'subscriptions_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'accounts'; + referencedColumns: ['id']; }, { - foreignKeyName: "subscriptions_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_account_workspace" - referencedColumns: ["id"] + foreignKeyName: 'subscriptions_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_account_workspace'; + referencedColumns: ['id']; }, { - foreignKeyName: "subscriptions_account_id_fkey" - columns: ["account_id"] - isOneToOne: false - referencedRelation: "user_accounts" - referencedColumns: ["id"] + foreignKeyName: 'subscriptions_account_id_fkey'; + columns: ['account_id']; + isOneToOne: false; + referencedRelation: 'user_accounts'; + referencedColumns: ['id']; }, { - foreignKeyName: "subscriptions_billing_customer_id_fkey" - columns: ["billing_customer_id"] - isOneToOne: false - referencedRelation: "billing_customers" - referencedColumns: ["id"] + foreignKeyName: 'subscriptions_billing_customer_id_fkey'; + columns: ['billing_customer_id']; + isOneToOne: false; + referencedRelation: 'billing_customers'; + referencedColumns: ['id']; }, - ] - } - } + ]; + }; + }; Views: { user_account_workspace: { Row: { - id: string | null - name: string | null - picture_url: string | null + id: string | null; + name: string | null; + picture_url: string | null; subscription_status: - | Database["public"]["Enums"]["subscription_status"] - | null - } - Relationships: [] - } + | Database['public']['Enums']['subscription_status'] + | null; + }; + Relationships: []; + }; user_accounts: { Row: { - id: string | null - name: string | null - picture_url: string | null - role: string | null - slug: string | null - } + id: string | null; + name: string | null; + picture_url: string | null; + role: string | null; + slug: string | null; + }; Relationships: [ { - foreignKeyName: "accounts_memberships_account_role_fkey" - columns: ["role"] - isOneToOne: false - referencedRelation: "roles" - referencedColumns: ["name"] + foreignKeyName: 'accounts_memberships_account_role_fkey'; + columns: ['role']; + isOneToOne: false; + referencedRelation: 'roles'; + referencedColumns: ['name']; }, - ] - } - } + ]; + }; + }; Functions: { accept_invitation: { Args: { - token: string - user_id: string - } - Returns: undefined - } + token: string; + user_id: string; + }; + Returns: undefined; + }; add_invitations_to_account: { Args: { - account_slug: string - invitations: unknown[] - } - Returns: Database["public"]["Tables"]["invitations"]["Row"][] - } + account_slug: string; + invitations: unknown[]; + }; + Returns: Database['public']['Tables']['invitations']['Row'][]; + }; create_account: { Args: { - account_name: string - } + account_name: string; + }; Returns: { - created_at: string | null - created_by: string | null - email: string | null - id: string - is_personal_account: boolean - name: string - picture_url: string | null - primary_owner_user_id: string - slug: string | null - updated_at: string | null - updated_by: string | null - } - } + created_at: string | null; + created_by: string | null; + email: string | null; + id: string; + is_personal_account: boolean; + name: string; + picture_url: string | null; + primary_owner_user_id: string; + slug: string | null; + updated_at: string | null; + updated_by: string | null; + }; + }; create_invitation: { Args: { - account_id: string - email: string - role: string - } + account_id: string; + email: string; + role: string; + }; Returns: { - account_id: string - created_at: string - email: string - expires_at: string - id: number - invite_token: string - invited_by: string - role: string - updated_at: string - } - } + account_id: string; + created_at: string; + email: string; + expires_at: string; + id: number; + invite_token: string; + invited_by: string; + role: string; + updated_at: string; + }; + }; get_account_invitations: { Args: { - account_slug: string - } + account_slug: string; + }; Returns: { - id: number - email: string - account_id: string - invited_by: string - role: string - created_at: string - updated_at: string - expires_at: string - inviter_name: string - inviter_email: string - }[] - } + id: number; + email: string; + account_id: string; + invited_by: string; + role: string; + created_at: string; + updated_at: string; + expires_at: string; + inviter_name: string; + inviter_email: string; + }[]; + }; get_account_members: { Args: { - account_slug: string - } + account_slug: string; + }; Returns: { - id: string - user_id: string - account_id: string - role: string - role_hierarchy_level: number - primary_owner_user_id: string - name: string - email: string - picture_url: string - created_at: string - updated_at: string - }[] - } + id: string; + user_id: string; + account_id: string; + role: string; + role_hierarchy_level: number; + primary_owner_user_id: string; + name: string; + email: string; + picture_url: string; + created_at: string; + updated_at: string; + }[]; + }; get_config: { - Args: Record - Returns: Json - } + Args: Record; + Returns: Json; + }; get_user_accounts: { - Args: Record + Args: Record; Returns: { - created_at: string | null - created_by: string | null - email: string | null - id: string - is_personal_account: boolean - name: string - picture_url: string | null - primary_owner_user_id: string - slug: string | null - updated_at: string | null - updated_by: string | null - }[] - } + created_at: string | null; + created_by: string | null; + email: string | null; + id: string; + is_personal_account: boolean; + name: string; + picture_url: string | null; + primary_owner_user_id: string; + slug: string | null; + updated_at: string | null; + updated_by: string | null; + }[]; + }; has_more_elevated_role: { Args: { - target_user_id: string - target_account_id: string - role_name: string - } - Returns: boolean - } + target_user_id: string; + target_account_id: string; + role_name: string; + }; + Returns: boolean; + }; has_permission: { Args: { - user_id: string - account_id: string - permission_name: Database["public"]["Enums"]["app_permissions"] - } - Returns: boolean - } + user_id: string; + account_id: string; + permission_name: Database['public']['Enums']['app_permissions']; + }; + Returns: boolean; + }; has_role_on_account: { Args: { - account_id: string - account_role?: string - } - Returns: boolean - } + account_id: string; + account_role?: string; + }; + Returns: boolean; + }; is_account_owner: { Args: { - account_id: string - } - Returns: boolean - } + account_id: string; + }; + Returns: boolean; + }; is_set: { Args: { - field_name: string - } - Returns: boolean - } + field_name: string; + }; + Returns: boolean; + }; is_team_member: { Args: { - account_id: string - user_id: string - } - Returns: boolean - } + account_id: string; + user_id: string; + }; + Returns: boolean; + }; organization_account_workspace: { Args: { - account_slug: string - } + account_slug: string; + }; Returns: { - id: string - name: string - picture_url: string - slug: string - role: string - role_hierarchy_level: number - primary_owner_user_id: string - subscription_status: Database["public"]["Enums"]["subscription_status"] - permissions: Database["public"]["Enums"]["app_permissions"][] - }[] - } + id: string; + name: string; + picture_url: string; + slug: string; + role: string; + role_hierarchy_level: number; + primary_owner_user_id: string; + subscription_status: Database['public']['Enums']['subscription_status']; + permissions: Database['public']['Enums']['app_permissions'][]; + }[]; + }; transfer_team_account_ownership: { Args: { - target_account_id: string - new_owner_id: string - } - Returns: undefined - } + target_account_id: string; + new_owner_id: string; + }; + Returns: undefined; + }; unaccent: { Args: { - "": string - } - Returns: string - } + '': string; + }; + Returns: string; + }; unaccent_init: { Args: { - "": unknown - } - Returns: unknown - } + '': unknown; + }; + Returns: unknown; + }; upsert_order: { Args: { - target_account_id: string - target_customer_id: string - target_order_id: string - status: Database["public"]["Enums"]["payment_status"] - billing_provider: Database["public"]["Enums"]["billing_provider"] - total_amount: number - currency: string - line_items: Json - } + target_account_id: string; + target_customer_id: string; + target_order_id: string; + status: Database['public']['Enums']['payment_status']; + billing_provider: Database['public']['Enums']['billing_provider']; + total_amount: number; + currency: string; + line_items: Json; + }; Returns: { - account_id: string - billing_customer_id: number - billing_provider: Database["public"]["Enums"]["billing_provider"] - created_at: string - currency: string - id: string - status: Database["public"]["Enums"]["payment_status"] - total_amount: number - updated_at: string - } - } + account_id: string; + billing_customer_id: number; + billing_provider: Database['public']['Enums']['billing_provider']; + created_at: string; + currency: string; + id: string; + status: Database['public']['Enums']['payment_status']; + total_amount: number; + updated_at: string; + }; + }; upsert_subscription: { Args: { - target_account_id: string - target_customer_id: string - target_subscription_id: string - active: boolean - status: Database["public"]["Enums"]["subscription_status"] - billing_provider: Database["public"]["Enums"]["billing_provider"] - cancel_at_period_end: boolean - currency: string - period_starts_at: string - period_ends_at: string - line_items: Json - trial_starts_at?: string - trial_ends_at?: string - } + target_account_id: string; + target_customer_id: string; + target_subscription_id: string; + active: boolean; + status: Database['public']['Enums']['subscription_status']; + billing_provider: Database['public']['Enums']['billing_provider']; + cancel_at_period_end: boolean; + currency: string; + period_starts_at: string; + period_ends_at: string; + line_items: Json; + trial_starts_at?: string; + trial_ends_at?: string; + }; Returns: { - account_id: string - active: boolean - billing_customer_id: number - billing_provider: Database["public"]["Enums"]["billing_provider"] - cancel_at_period_end: boolean - created_at: string - currency: string - id: string - period_ends_at: string - period_starts_at: string - status: Database["public"]["Enums"]["subscription_status"] - trial_ends_at: string | null - trial_starts_at: string | null - updated_at: string - } - } - } + account_id: string; + active: boolean; + billing_customer_id: number; + billing_provider: Database['public']['Enums']['billing_provider']; + cancel_at_period_end: boolean; + created_at: string; + currency: string; + id: string; + period_ends_at: string; + period_starts_at: string; + status: Database['public']['Enums']['subscription_status']; + trial_ends_at: string | null; + trial_starts_at: string | null; + updated_at: string; + }; + }; + }; Enums: { app_permissions: - | "roles.manage" - | "billing.manage" - | "settings.manage" - | "members.manage" - | "invites.manage" - billing_provider: "stripe" | "lemon-squeezy" | "paddle" - payment_status: "pending" | "succeeded" | "failed" + | 'roles.manage' + | 'billing.manage' + | 'settings.manage' + | 'members.manage' + | 'invites.manage'; + billing_provider: 'stripe' | 'lemon-squeezy' | 'paddle'; + payment_status: 'pending' | 'succeeded' | 'failed'; subscription_status: - | "active" - | "trialing" - | "past_due" - | "canceled" - | "unpaid" - | "incomplete" - | "incomplete_expired" - | "paused" - } + | 'active' + | 'trialing' + | 'past_due' + | 'canceled' + | 'unpaid' + | 'incomplete' + | 'incomplete_expired' + | 'paused'; + }; CompositeTypes: { - [_ in never]: never - } - } + [_ in never]: never; + }; + }; storage: { Tables: { buckets: { Row: { - allowed_mime_types: string[] | null - avif_autodetection: boolean | null - created_at: string | null - file_size_limit: number | null - id: string - name: string - owner: string | null - owner_id: string | null - public: boolean | null - updated_at: string | null - } + allowed_mime_types: string[] | null; + avif_autodetection: boolean | null; + created_at: string | null; + file_size_limit: number | null; + id: string; + name: string; + owner: string | null; + owner_id: string | null; + public: boolean | null; + updated_at: string | null; + }; Insert: { - allowed_mime_types?: string[] | null - avif_autodetection?: boolean | null - created_at?: string | null - file_size_limit?: number | null - id: string - name: string - owner?: string | null - owner_id?: string | null - public?: boolean | null - updated_at?: string | null - } + allowed_mime_types?: string[] | null; + avif_autodetection?: boolean | null; + created_at?: string | null; + file_size_limit?: number | null; + id: string; + name: string; + owner?: string | null; + owner_id?: string | null; + public?: boolean | null; + updated_at?: string | null; + }; Update: { - allowed_mime_types?: string[] | null - avif_autodetection?: boolean | null - created_at?: string | null - file_size_limit?: number | null - id?: string - name?: string - owner?: string | null - owner_id?: string | null - public?: boolean | null - updated_at?: string | null - } - Relationships: [] - } + allowed_mime_types?: string[] | null; + avif_autodetection?: boolean | null; + created_at?: string | null; + file_size_limit?: number | null; + id?: string; + name?: string; + owner?: string | null; + owner_id?: string | null; + public?: boolean | null; + updated_at?: string | null; + }; + Relationships: []; + }; migrations: { Row: { - executed_at: string | null - hash: string - id: number - name: string - } + executed_at: string | null; + hash: string; + id: number; + name: string; + }; Insert: { - executed_at?: string | null - hash: string - id: number - name: string - } + executed_at?: string | null; + hash: string; + id: number; + name: string; + }; Update: { - executed_at?: string | null - hash?: string - id?: number - name?: string - } - Relationships: [] - } + executed_at?: string | null; + hash?: string; + id?: number; + name?: string; + }; + Relationships: []; + }; objects: { Row: { - bucket_id: string | null - created_at: string | null - id: string - last_accessed_at: string | null - metadata: Json | null - name: string | null - owner: string | null - owner_id: string | null - path_tokens: string[] | null - updated_at: string | null - version: string | null - } + bucket_id: string | null; + created_at: string | null; + id: string; + last_accessed_at: string | null; + metadata: Json | null; + name: string | null; + owner: string | null; + owner_id: string | null; + path_tokens: string[] | null; + updated_at: string | null; + version: string | null; + }; Insert: { - bucket_id?: string | null - created_at?: string | null - id?: string - last_accessed_at?: string | null - metadata?: Json | null - name?: string | null - owner?: string | null - owner_id?: string | null - path_tokens?: string[] | null - updated_at?: string | null - version?: string | null - } + bucket_id?: string | null; + created_at?: string | null; + id?: string; + last_accessed_at?: string | null; + metadata?: Json | null; + name?: string | null; + owner?: string | null; + owner_id?: string | null; + path_tokens?: string[] | null; + updated_at?: string | null; + version?: string | null; + }; Update: { - bucket_id?: string | null - created_at?: string | null - id?: string - last_accessed_at?: string | null - metadata?: Json | null - name?: string | null - owner?: string | null - owner_id?: string | null - path_tokens?: string[] | null - updated_at?: string | null - version?: string | null - } + bucket_id?: string | null; + created_at?: string | null; + id?: string; + last_accessed_at?: string | null; + metadata?: Json | null; + name?: string | null; + owner?: string | null; + owner_id?: string | null; + path_tokens?: string[] | null; + updated_at?: string | null; + version?: string | null; + }; Relationships: [ { - foreignKeyName: "objects_bucketId_fkey" - columns: ["bucket_id"] - isOneToOne: false - referencedRelation: "buckets" - referencedColumns: ["id"] + foreignKeyName: 'objects_bucketId_fkey'; + columns: ['bucket_id']; + isOneToOne: false; + referencedRelation: 'buckets'; + referencedColumns: ['id']; }, - ] - } - } + ]; + }; + }; Views: { - [_ in never]: never - } + [_ in never]: never; + }; Functions: { can_insert_object: { Args: { - bucketid: string - name: string - owner: string - metadata: Json - } - Returns: undefined - } + bucketid: string; + name: string; + owner: string; + metadata: Json; + }; + Returns: undefined; + }; extension: { Args: { - name: string - } - Returns: string - } + name: string; + }; + Returns: string; + }; filename: { Args: { - name: string - } - Returns: string - } + name: string; + }; + Returns: string; + }; foldername: { Args: { - name: string - } - Returns: string[] - } + name: string; + }; + Returns: string[]; + }; get_size_by_bucket: { - Args: Record + Args: Record; Returns: { - size: number - bucket_id: string - }[] - } + size: number; + bucket_id: string; + }[]; + }; search: { Args: { - prefix: string - bucketname: string - limits?: number - levels?: number - offsets?: number - search?: string - sortcolumn?: string - sortorder?: string - } + prefix: string; + bucketname: string; + limits?: number; + levels?: number; + offsets?: number; + search?: string; + sortcolumn?: string; + sortorder?: string; + }; Returns: { - name: string - id: string - updated_at: string - created_at: string - last_accessed_at: string - metadata: Json - }[] - } - } + name: string; + id: string; + updated_at: string; + created_at: string; + last_accessed_at: string; + metadata: Json; + }[]; + }; + }; Enums: { - [_ in never]: never - } + [_ in never]: never; + }; CompositeTypes: { - [_ in never]: never - } - } -} + [_ in never]: never; + }; + }; +}; -type PublicSchema = Database[Extract] +type PublicSchema = Database[Extract]; export type Tables< PublicTableNameOrOptions extends - | keyof (PublicSchema["Tables"] & PublicSchema["Views"]) + | keyof (PublicSchema['Tables'] & PublicSchema['Views']) | { schema: keyof Database }, TableName extends PublicTableNameOrOptions extends { schema: keyof Database } - ? keyof (Database[PublicTableNameOrOptions["schema"]]["Tables"] & - Database[PublicTableNameOrOptions["schema"]]["Views"]) + ? keyof (Database[PublicTableNameOrOptions['schema']]['Tables'] & + Database[PublicTableNameOrOptions['schema']]['Views']) : never = never, > = PublicTableNameOrOptions extends { schema: keyof Database } - ? (Database[PublicTableNameOrOptions["schema"]]["Tables"] & - Database[PublicTableNameOrOptions["schema"]]["Views"])[TableName] extends { - Row: infer R + ? (Database[PublicTableNameOrOptions['schema']]['Tables'] & + Database[PublicTableNameOrOptions['schema']]['Views'])[TableName] extends { + Row: infer R; } ? R : never - : PublicTableNameOrOptions extends keyof (PublicSchema["Tables"] & - PublicSchema["Views"]) - ? (PublicSchema["Tables"] & - PublicSchema["Views"])[PublicTableNameOrOptions] extends { - Row: infer R + : PublicTableNameOrOptions extends keyof (PublicSchema['Tables'] & + PublicSchema['Views']) + ? (PublicSchema['Tables'] & + PublicSchema['Views'])[PublicTableNameOrOptions] extends { + Row: infer R; } ? R : never - : never + : never; export type TablesInsert< PublicTableNameOrOptions extends - | keyof PublicSchema["Tables"] + | keyof PublicSchema['Tables'] | { schema: keyof Database }, TableName extends PublicTableNameOrOptions extends { schema: keyof Database } - ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"] + ? keyof Database[PublicTableNameOrOptions['schema']]['Tables'] : never = never, > = PublicTableNameOrOptions extends { schema: keyof Database } - ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends { - Insert: infer I + ? Database[PublicTableNameOrOptions['schema']]['Tables'][TableName] extends { + Insert: infer I; } ? I : never - : PublicTableNameOrOptions extends keyof PublicSchema["Tables"] - ? PublicSchema["Tables"][PublicTableNameOrOptions] extends { - Insert: infer I + : PublicTableNameOrOptions extends keyof PublicSchema['Tables'] + ? PublicSchema['Tables'][PublicTableNameOrOptions] extends { + Insert: infer I; } ? I : never - : never + : never; export type TablesUpdate< PublicTableNameOrOptions extends - | keyof PublicSchema["Tables"] + | keyof PublicSchema['Tables'] | { schema: keyof Database }, TableName extends PublicTableNameOrOptions extends { schema: keyof Database } - ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"] + ? keyof Database[PublicTableNameOrOptions['schema']]['Tables'] : never = never, > = PublicTableNameOrOptions extends { schema: keyof Database } - ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends { - Update: infer U + ? Database[PublicTableNameOrOptions['schema']]['Tables'][TableName] extends { + Update: infer U; } ? U : never - : PublicTableNameOrOptions extends keyof PublicSchema["Tables"] - ? PublicSchema["Tables"][PublicTableNameOrOptions] extends { - Update: infer U + : PublicTableNameOrOptions extends keyof PublicSchema['Tables'] + ? PublicSchema['Tables'][PublicTableNameOrOptions] extends { + Update: infer U; } ? U : never - : never + : never; export type Enums< PublicEnumNameOrOptions extends - | keyof PublicSchema["Enums"] + | keyof PublicSchema['Enums'] | { schema: keyof Database }, EnumName extends PublicEnumNameOrOptions extends { schema: keyof Database } - ? keyof Database[PublicEnumNameOrOptions["schema"]]["Enums"] + ? keyof Database[PublicEnumNameOrOptions['schema']]['Enums'] : never = never, > = PublicEnumNameOrOptions extends { schema: keyof Database } - ? Database[PublicEnumNameOrOptions["schema"]]["Enums"][EnumName] - : PublicEnumNameOrOptions extends keyof PublicSchema["Enums"] - ? PublicSchema["Enums"][PublicEnumNameOrOptions] - : never - + ? Database[PublicEnumNameOrOptions['schema']]['Enums'][EnumName] + : PublicEnumNameOrOptions extends keyof PublicSchema['Enums'] + ? PublicSchema['Enums'][PublicEnumNameOrOptions] + : never; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5326b2838..66754db7f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,7 +87,7 @@ importers: specifier: ^0.1.0 version: 0.1.0(@supabase/supabase-js@2.42.0) '@supabase/supabase-js': - specifier: ^2.41.1 + specifier: ^2.42.0 version: 2.42.0 '@tanstack/react-query': specifier: 5.28.6 @@ -250,8 +250,8 @@ importers: specifier: workspace:^ version: link:../../ui '@supabase/supabase-js': - specifier: ^2.41.1 - version: 2.41.1 + specifier: ^2.42.0 + version: 2.42.0 lucide-react: specifier: ^0.363.0 version: 0.363.0(react@18.2.0) @@ -427,8 +427,8 @@ importers: specifier: workspace:^ version: link:../ui '@supabase/supabase-js': - specifier: ^2.41.1 - version: 2.41.1 + specifier: ^2.42.0 + version: 2.42.0 lucide-react: specifier: ^0.363.0 version: 0.363.0(react@18.2.0) @@ -536,8 +536,8 @@ importers: specifier: workspace:^ version: link:../../ui '@supabase/supabase-js': - specifier: ^2.41.1 - version: 2.41.1 + specifier: ^2.42.0 + version: 2.42.0 lucide-react: specifier: ^0.363.0 version: 0.363.0(react@18.2.0) @@ -622,6 +622,9 @@ importers: '@kit/ui': specifier: workspace:^ version: link:../../ui + '@supabase/supabase-js': + specifier: ^2.42.0 + version: 2.42.0 '@tanstack/react-query': specifier: 5.28.6 version: 5.28.6(react@18.2.0) @@ -725,10 +728,10 @@ importers: version: 2.62.2 '@supabase/ssr': specifier: ^0.1.0 - version: 0.1.0(@supabase/supabase-js@2.41.1) + version: 0.1.0(@supabase/supabase-js@2.42.0) '@supabase/supabase-js': - specifier: ^2.41.1 - version: 2.41.1 + specifier: ^2.42.0 + version: 2.42.0 '@tanstack/react-query': specifier: 5.28.6 version: 5.28.6(react@18.2.0) @@ -4200,13 +4203,6 @@ packages: resolution: {integrity: sha512-U4bwBOrhsXWqDjZiYNbVqMBtRGgIIYE0kE5ZNSwsIbeBWfr/UxOMrnkIQUBGIZRhpYW/tw1WnTdRl1AGNyaxcw==} dependencies: '@supabase/node-fetch': 2.6.15 - dev: false - - /@supabase/postgrest-js@1.9.2: - resolution: {integrity: sha512-I6yHo8CC9cxhOo6DouDMy9uOfW7hjdsnCxZiaJuIVZm1dBGTFiQPgfMa9zXCamEWzNyWRjZvupAUuX+tqcl5Sw==} - dependencies: - '@supabase/node-fetch': 2.6.15 - dev: true /@supabase/realtime-js@2.9.3: resolution: {integrity: sha512-lAp50s2n3FhGJFq+wTSXLNIDPw5Y0Wxrgt44eM5nLSA3jZNUUP3Oq2Ccd1CbZdVntPCWLZvJaU//pAd2NE+QnQ==} @@ -4219,16 +4215,6 @@ packages: - bufferutil - utf-8-validate - /@supabase/ssr@0.1.0(@supabase/supabase-js@2.41.1): - resolution: {integrity: sha512-bIVrkqjAK5G3KjkIMKYKtAOlCgRRplEWjrlyRyXSOYtgDieiOhk2ZyNAPsEOa1By9OZVxuX5eAW1fitdnuxayw==} - peerDependencies: - '@supabase/supabase-js': ^2.33.1 - dependencies: - '@supabase/supabase-js': 2.41.1 - cookie: 0.5.0 - ramda: 0.29.1 - dev: true - /@supabase/ssr@0.1.0(@supabase/supabase-js@2.42.0): resolution: {integrity: sha512-bIVrkqjAK5G3KjkIMKYKtAOlCgRRplEWjrlyRyXSOYtgDieiOhk2ZyNAPsEOa1By9OZVxuX5eAW1fitdnuxayw==} peerDependencies: @@ -4237,27 +4223,12 @@ packages: '@supabase/supabase-js': 2.42.0 cookie: 0.5.0 ramda: 0.29.1 - dev: false /@supabase/storage-js@2.5.5: resolution: {integrity: sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==} dependencies: '@supabase/node-fetch': 2.6.15 - /@supabase/supabase-js@2.41.1: - resolution: {integrity: sha512-xmECLhYugMo/6SObpsOhu5xaxVfsk+JK/d4JSh055bpESmgmN3PLpzbfqejKCpaUeeUNF21+lrJp/U9HQzT9mA==} - dependencies: - '@supabase/auth-js': 2.63.0 - '@supabase/functions-js': 2.2.2 - '@supabase/node-fetch': 2.6.15 - '@supabase/postgrest-js': 1.9.2 - '@supabase/realtime-js': 2.9.3 - '@supabase/storage-js': 2.5.5 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true - /@supabase/supabase-js@2.42.0: resolution: {integrity: sha512-1PDqJiA4iG45w3AAu6xkccJ3wPqlGJUoz9CPhScRLLTStxhewYhz0mjryTpXz1kgtNHdUAsirALreezn8UZMjA==} dependencies: @@ -4270,7 +4241,6 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false /@swc/core-darwin-arm64@1.3.101: resolution: {integrity: sha512-mNFK+uHNPRXSnfTOG34zJOeMl2waM4hF4a2NY7dkMXrPqw9CoJn4MwTXJcyMiSz1/BnNjjTCHF3Yhj0jPxmkzQ==}