@ -12,16 +12,16 @@
|
|||||||
"test:report": "pnpm playwright show-report"
|
"test:report": "pnpm playwright show-report"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@chakra-ui/anatomy": "^2.1.0",
|
"@chakra-ui/anatomy": "^2.1.1",
|
||||||
"@chakra-ui/css-reset": "2.0.10",
|
"@chakra-ui/css-reset": "2.0.11",
|
||||||
"@chakra-ui/react": "2.4.4",
|
"@chakra-ui/react": "2.4.6",
|
||||||
"@chakra-ui/theme-tools": "^2.0.14",
|
"@chakra-ui/theme-tools": "^2.0.16",
|
||||||
"@codemirror/lang-css": "6.0.1",
|
"@codemirror/lang-css": "6.0.1",
|
||||||
"@codemirror/lang-html": "6.4.0",
|
"@codemirror/lang-html": "6.4.0",
|
||||||
"@codemirror/lang-javascript": "6.1.2",
|
"@codemirror/lang-javascript": "6.1.2",
|
||||||
"@codemirror/lang-json": "6.0.1",
|
"@codemirror/lang-json": "6.0.1",
|
||||||
"@codemirror/lint": "6.1.0",
|
"@codemirror/lint": "6.1.0",
|
||||||
"@codemirror/state": "6.1.4",
|
"@codemirror/state": "6.2.0",
|
||||||
"@dnd-kit/core": "6.0.6",
|
"@dnd-kit/core": "6.0.6",
|
||||||
"@dnd-kit/sortable": "7.0.1",
|
"@dnd-kit/sortable": "7.0.1",
|
||||||
"@dnd-kit/utilities": "3.2.1",
|
"@dnd-kit/utilities": "3.2.1",
|
||||||
@ -49,7 +49,7 @@
|
|||||||
"@udecode/plate-ui-link": "18.13.0",
|
"@udecode/plate-ui-link": "18.13.0",
|
||||||
"@udecode/plate-ui-toolbar": "18.13.0",
|
"@udecode/plate-ui-toolbar": "18.13.0",
|
||||||
"@use-gesture/react": "^10.2.23",
|
"@use-gesture/react": "^10.2.23",
|
||||||
"aws-sdk": "2.1282.0",
|
"aws-sdk": "2.1286.0",
|
||||||
"bot-engine": "workspace:*",
|
"bot-engine": "workspace:*",
|
||||||
"browser-image-compression": "2.0.0",
|
"browser-image-compression": "2.0.0",
|
||||||
"canvas-confetti": "1.6.0",
|
"canvas-confetti": "1.6.0",
|
||||||
@ -73,7 +73,7 @@
|
|||||||
"micro-cors": "0.1.1",
|
"micro-cors": "0.1.1",
|
||||||
"minio": "7.0.32",
|
"minio": "7.0.32",
|
||||||
"next": "13.1.1",
|
"next": "13.1.1",
|
||||||
"next-auth": "4.12.3",
|
"next-auth": "4.18.7",
|
||||||
"nextjs-cors": "^2.1.2",
|
"nextjs-cors": "^2.1.2",
|
||||||
"nodemailer": "6.8.0",
|
"nodemailer": "6.8.0",
|
||||||
"nprogress": "0.2.0",
|
"nprogress": "0.2.0",
|
||||||
@ -98,24 +98,24 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.20.7",
|
"@babel/core": "7.20.7",
|
||||||
"@chakra-ui/styled-system": "2.5.0",
|
"@chakra-ui/styled-system": "2.5.1",
|
||||||
"@playwright/test": "1.29.1",
|
"@playwright/test": "1.29.1",
|
||||||
"@types/canvas-confetti": "1.6.0",
|
"@types/canvas-confetti": "1.6.0",
|
||||||
"@types/google-spreadsheet": "3.3.0",
|
"@types/google-spreadsheet": "3.3.0",
|
||||||
"@types/jsonwebtoken": "9.0.0",
|
"@types/jsonwebtoken": "9.0.0",
|
||||||
"@types/micro-cors": "0.1.2",
|
"@types/micro-cors": "0.1.2",
|
||||||
"@types/minio": "7.0.15",
|
"@types/minio": "7.0.15",
|
||||||
"@types/node": "18.11.17",
|
"@types/node": "18.11.18",
|
||||||
"@types/nodemailer": "6.4.7",
|
"@types/nodemailer": "6.4.7",
|
||||||
"@types/nprogress": "0.2.0",
|
"@types/nprogress": "0.2.0",
|
||||||
"@types/papaparse": "5.3.5",
|
"@types/papaparse": "5.3.7",
|
||||||
"@types/prettier": "2.7.2",
|
"@types/prettier": "2.7.2",
|
||||||
"@types/qs": "6.9.7",
|
"@types/qs": "6.9.7",
|
||||||
"@types/react": "18.0.26",
|
"@types/react": "18.0.26",
|
||||||
"@types/tinycolor2": "1.4.3",
|
"@types/tinycolor2": "1.4.3",
|
||||||
"db": "workspace:*",
|
"db": "workspace:*",
|
||||||
"dotenv": "16.0.3",
|
"dotenv": "16.0.3",
|
||||||
"eslint": "8.30.0",
|
"eslint": "8.31.0",
|
||||||
"eslint-config-custom": "workspace:*",
|
"eslint-config-custom": "workspace:*",
|
||||||
"models": "workspace:*",
|
"models": "workspace:*",
|
||||||
"next-transpile-modules": "10.0.0",
|
"next-transpile-modules": "10.0.0",
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { IconProps, Icon } from '@chakra-ui/react'
|
import { IconProps, Icon, useColorModeValue } from '@chakra-ui/react'
|
||||||
|
|
||||||
export const featherIconsBaseProps: IconProps = {
|
export const featherIconsBaseProps: IconProps = {
|
||||||
fill: 'none',
|
fill: 'none',
|
||||||
@ -353,9 +353,13 @@ export const SendEmailIcon = (props: IconProps) => (
|
|||||||
)
|
)
|
||||||
|
|
||||||
export const GithubIcon = (props: IconProps) => (
|
export const GithubIcon = (props: IconProps) => (
|
||||||
<Icon viewBox="0 0 512 512" {...props}>
|
<Icon viewBox="0 0 98 96" xmlns="http://www.w3.org/2000/svg" {...props}>
|
||||||
<title>{'Logo Github'}</title>
|
<path
|
||||||
<path d="M256 32C132.3 32 32 134.9 32 261.7c0 101.5 64.2 187.5 153.2 217.9a17.56 17.56 0 003.8.4c8.3 0 11.5-6.1 11.5-11.4 0-5.5-.2-19.9-.3-39.1a102.4 102.4 0 01-22.6 2.7c-43.1 0-52.9-33.5-52.9-33.5-10.2-26.5-24.9-33.6-24.9-33.6-19.5-13.7-.1-14.1 1.4-14.1h.1c22.5 2 34.3 23.8 34.3 23.8 11.2 19.6 26.2 25.1 39.6 25.1a63 63 0 0025.6-6c2-14.8 7.8-24.9 14.2-30.7-49.7-5.8-102-25.5-102-113.5 0-25.1 8.7-45.6 23-61.6-2.3-5.8-10-29.2 2.2-60.8a18.64 18.64 0 015-.5c8.1 0 26.4 3.1 56.6 24.1a208.21 208.21 0 01112.2 0c30.2-21 48.5-24.1 56.6-24.1a18.64 18.64 0 015 .5c12.2 31.6 4.5 55 2.2 60.8 14.3 16.1 23 36.6 23 61.6 0 88.2-52.4 107.6-102.3 113.3 8 7.1 15.2 21.1 15.2 42.5 0 30.7-.3 55.5-.3 63 0 5.4 3.1 11.5 11.4 11.5a19.35 19.35 0 004-.4C415.9 449.2 480 363.1 480 261.7 480 134.9 379.7 32 256 32z" />
|
fill-rule="evenodd"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z"
|
||||||
|
fill={useColorModeValue('#24292f', 'white')}
|
||||||
|
/>
|
||||||
</Icon>
|
</Icon>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -20,7 +20,6 @@ const userContext = createContext<{
|
|||||||
isLoading: boolean
|
isLoading: boolean
|
||||||
isSaving: boolean
|
isSaving: boolean
|
||||||
hasUnsavedChanges: boolean
|
hasUnsavedChanges: boolean
|
||||||
isOAuthProvider: boolean
|
|
||||||
currentWorkspaceId?: string
|
currentWorkspaceId?: string
|
||||||
updateUser: (newUser: Partial<User>) => void
|
updateUser: (newUser: Partial<User>) => void
|
||||||
saveUser: (newUser?: Partial<User>) => Promise<void>
|
saveUser: (newUser?: Partial<User>) => Promise<void>
|
||||||
@ -36,10 +35,6 @@ export const UserProvider = ({ children }: { children: ReactNode }) => {
|
|||||||
const [currentWorkspaceId, setCurrentWorkspaceId] = useState<string>()
|
const [currentWorkspaceId, setCurrentWorkspaceId] = useState<string>()
|
||||||
|
|
||||||
const [isSaving, setIsSaving] = useState(false)
|
const [isSaving, setIsSaving] = useState(false)
|
||||||
const isOAuthProvider = useMemo(
|
|
||||||
() => (session?.providerType as boolean | undefined) ?? false,
|
|
||||||
[session?.providerType]
|
|
||||||
)
|
|
||||||
|
|
||||||
const hasUnsavedChanges = useMemo(
|
const hasUnsavedChanges = useMemo(
|
||||||
() => !dequal(session?.user, user),
|
() => !dequal(session?.user, user),
|
||||||
@ -97,7 +92,6 @@ export const UserProvider = ({ children }: { children: ReactNode }) => {
|
|||||||
isSaving,
|
isSaving,
|
||||||
isLoading: status === 'loading',
|
isLoading: status === 'loading',
|
||||||
hasUnsavedChanges,
|
hasUnsavedChanges,
|
||||||
isOAuthProvider,
|
|
||||||
currentWorkspaceId,
|
currentWorkspaceId,
|
||||||
updateUser,
|
updateUser,
|
||||||
saveUser,
|
saveUser,
|
||||||
|
@ -18,14 +18,7 @@ import { UploadButton } from '@/components/ImageUploadContent/UploadButton'
|
|||||||
import { useUser } from '@/features/account'
|
import { useUser } from '@/features/account'
|
||||||
|
|
||||||
export const MyAccountForm = () => {
|
export const MyAccountForm = () => {
|
||||||
const {
|
const { user, updateUser, saveUser, hasUnsavedChanges, isSaving } = useUser()
|
||||||
user,
|
|
||||||
updateUser,
|
|
||||||
saveUser,
|
|
||||||
hasUnsavedChanges,
|
|
||||||
isSaving,
|
|
||||||
isOAuthProvider,
|
|
||||||
} = useUser()
|
|
||||||
|
|
||||||
const handleFileUploaded = async (url: string) => {
|
const handleFileUploaded = async (url: string) => {
|
||||||
updateUser({ image: url })
|
updateUser({ image: url })
|
||||||
@ -74,12 +67,7 @@ export const MyAccountForm = () => {
|
|||||||
hasArrow
|
hasArrow
|
||||||
>
|
>
|
||||||
<FormControl>
|
<FormControl>
|
||||||
<FormLabel
|
<FormLabel htmlFor="email">Email address</FormLabel>
|
||||||
htmlFor="email"
|
|
||||||
color={isOAuthProvider ? 'gray.500' : 'current'}
|
|
||||||
>
|
|
||||||
Email address
|
|
||||||
</FormLabel>
|
|
||||||
<Input
|
<Input
|
||||||
id="email"
|
id="email"
|
||||||
type="email"
|
type="email"
|
||||||
|
@ -76,6 +76,7 @@ export const SignInForm = ({
|
|||||||
})
|
})
|
||||||
setAuthLoading(false)
|
setAuthLoading(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isLoadingProviders) return <Spinner />
|
if (isLoadingProviders) return <Spinner />
|
||||||
if (hasNoAuthProvider)
|
if (hasNoAuthProvider)
|
||||||
return (
|
return (
|
||||||
|
@ -7,7 +7,7 @@ import {
|
|||||||
useSession,
|
useSession,
|
||||||
} from 'next-auth/react'
|
} from 'next-auth/react'
|
||||||
import { useRouter } from 'next/router'
|
import { useRouter } from 'next/router'
|
||||||
import React from 'react'
|
import React, { useState } from 'react'
|
||||||
import { stringify } from 'qs'
|
import { stringify } from 'qs'
|
||||||
import { BuiltInProviderType } from 'next-auth/providers'
|
import { BuiltInProviderType } from 'next-auth/providers'
|
||||||
import { GoogleLogo } from '@/components/GoogleLogo'
|
import { GoogleLogo } from '@/components/GoogleLogo'
|
||||||
@ -22,31 +22,28 @@ type Props = {
|
|||||||
export const SocialLoginButtons = ({ providers }: Props) => {
|
export const SocialLoginButtons = ({ providers }: Props) => {
|
||||||
const { query } = useRouter()
|
const { query } = useRouter()
|
||||||
const { status } = useSession()
|
const { status } = useSession()
|
||||||
|
const [authLoading, setAuthLoading] =
|
||||||
|
useState<LiteralUnion<BuiltInProviderType, string>>()
|
||||||
|
|
||||||
const handleGitHubClick = async () =>
|
const handleSignIn = async (provider: string) => {
|
||||||
signIn('github', {
|
setAuthLoading(provider)
|
||||||
|
await signIn(provider, {
|
||||||
callbackUrl: `/typebots?${stringify(query)}`,
|
callbackUrl: `/typebots?${stringify(query)}`,
|
||||||
})
|
})
|
||||||
|
setTimeout(() => setAuthLoading(undefined), 3000)
|
||||||
|
}
|
||||||
|
|
||||||
const handleGoogleClick = async () =>
|
const handleGitHubClick = () => handleSignIn('github')
|
||||||
signIn('google', {
|
|
||||||
callbackUrl: `/typebots?${stringify(query)}`,
|
|
||||||
})
|
|
||||||
|
|
||||||
const handleFacebookClick = async () =>
|
const handleGoogleClick = () => handleSignIn('google')
|
||||||
signIn('facebook', {
|
|
||||||
callbackUrl: `/typebots?${stringify(query)}`,
|
|
||||||
})
|
|
||||||
|
|
||||||
const handleGitlabClick = async () =>
|
const handleFacebookClick = () => handleSignIn('facebook')
|
||||||
signIn('gitlab', {
|
|
||||||
callbackUrl: `/typebots?${stringify(query)}`,
|
|
||||||
})
|
|
||||||
|
|
||||||
const handleAzureAdClick = async () =>
|
const handleGitlabClick = () => handleSignIn('gitlab')
|
||||||
signIn('azure-ad', {
|
|
||||||
callbackUrl: `/typebots?${stringify(query)}`,
|
const handleAzureAdClick = () => handleSignIn('azure-ad')
|
||||||
})
|
|
||||||
|
const handleCustomOAuthClick = () => handleSignIn('custom-oauth')
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack>
|
<Stack>
|
||||||
@ -55,7 +52,10 @@ export const SocialLoginButtons = ({ providers }: Props) => {
|
|||||||
leftIcon={<GithubIcon />}
|
leftIcon={<GithubIcon />}
|
||||||
onClick={handleGitHubClick}
|
onClick={handleGitHubClick}
|
||||||
data-testid="github"
|
data-testid="github"
|
||||||
isLoading={['loading', 'authenticated'].includes(status)}
|
isLoading={
|
||||||
|
['loading', 'authenticated'].includes(status) ||
|
||||||
|
authLoading === 'github'
|
||||||
|
}
|
||||||
variant="outline"
|
variant="outline"
|
||||||
>
|
>
|
||||||
Continue with GitHub
|
Continue with GitHub
|
||||||
@ -66,7 +66,10 @@ export const SocialLoginButtons = ({ providers }: Props) => {
|
|||||||
leftIcon={<GoogleLogo />}
|
leftIcon={<GoogleLogo />}
|
||||||
onClick={handleGoogleClick}
|
onClick={handleGoogleClick}
|
||||||
data-testid="google"
|
data-testid="google"
|
||||||
isLoading={['loading', 'authenticated'].includes(status)}
|
isLoading={
|
||||||
|
['loading', 'authenticated'].includes(status) ||
|
||||||
|
authLoading === 'google'
|
||||||
|
}
|
||||||
variant="outline"
|
variant="outline"
|
||||||
>
|
>
|
||||||
Continue with Google
|
Continue with Google
|
||||||
@ -77,7 +80,10 @@ export const SocialLoginButtons = ({ providers }: Props) => {
|
|||||||
leftIcon={<FacebookLogo />}
|
leftIcon={<FacebookLogo />}
|
||||||
onClick={handleFacebookClick}
|
onClick={handleFacebookClick}
|
||||||
data-testid="facebook"
|
data-testid="facebook"
|
||||||
isLoading={['loading', 'authenticated'].includes(status)}
|
isLoading={
|
||||||
|
['loading', 'authenticated'].includes(status) ||
|
||||||
|
authLoading === 'facebook'
|
||||||
|
}
|
||||||
variant="outline"
|
variant="outline"
|
||||||
>
|
>
|
||||||
Continue with Facebook
|
Continue with Facebook
|
||||||
@ -88,7 +94,10 @@ export const SocialLoginButtons = ({ providers }: Props) => {
|
|||||||
leftIcon={<GitlabLogo />}
|
leftIcon={<GitlabLogo />}
|
||||||
onClick={handleGitlabClick}
|
onClick={handleGitlabClick}
|
||||||
data-testid="gitlab"
|
data-testid="gitlab"
|
||||||
isLoading={['loading', 'authenticated'].includes(status)}
|
isLoading={
|
||||||
|
['loading', 'authenticated'].includes(status) ||
|
||||||
|
authLoading === 'gitlab'
|
||||||
|
}
|
||||||
variant="outline"
|
variant="outline"
|
||||||
>
|
>
|
||||||
Continue with {providers.gitlab.name}
|
Continue with {providers.gitlab.name}
|
||||||
@ -99,7 +108,10 @@ export const SocialLoginButtons = ({ providers }: Props) => {
|
|||||||
leftIcon={<AzureAdLogo />}
|
leftIcon={<AzureAdLogo />}
|
||||||
onClick={handleAzureAdClick}
|
onClick={handleAzureAdClick}
|
||||||
data-testid="azure-ad"
|
data-testid="azure-ad"
|
||||||
isLoading={['loading', 'authenticated'].includes(status)}
|
isLoading={
|
||||||
|
['loading', 'authenticated'].includes(status) ||
|
||||||
|
authLoading === 'azure-ad'
|
||||||
|
}
|
||||||
variant="outline"
|
variant="outline"
|
||||||
>
|
>
|
||||||
Continue with {providers['azure-ad'].name}
|
Continue with {providers['azure-ad'].name}
|
||||||
@ -107,8 +119,11 @@ export const SocialLoginButtons = ({ providers }: Props) => {
|
|||||||
)}
|
)}
|
||||||
{providers?.['custom-oauth'] && (
|
{providers?.['custom-oauth'] && (
|
||||||
<Button
|
<Button
|
||||||
onClick={handleAzureAdClick}
|
onClick={handleCustomOAuthClick}
|
||||||
isLoading={['loading', 'authenticated'].includes(status)}
|
isLoading={
|
||||||
|
['loading', 'authenticated'].includes(status) ||
|
||||||
|
authLoading === 'custom-oauth'
|
||||||
|
}
|
||||||
variant="outline"
|
variant="outline"
|
||||||
>
|
>
|
||||||
Continue with {providers['custom-oauth'].name}
|
Continue with {providers['custom-oauth'].name}
|
||||||
|
@ -155,8 +155,14 @@ const handler = (req: NextApiRequest, res: NextApiResponse) => {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
signIn: async ({ account, user }) => {
|
signIn: async ({ account, user }) => {
|
||||||
const userExists = user?.graphNavigation !== undefined
|
const userExists =
|
||||||
if (!account || (process.env.DISABLE_SIGNUP === 'true' && !userExists))
|
'graphNavigation' in user && user.graphNavigation !== undefined
|
||||||
|
if (
|
||||||
|
!account ||
|
||||||
|
(process.env.DISABLE_SIGNUP === 'true' &&
|
||||||
|
!userExists &&
|
||||||
|
user.email !== process.env.ADMIN_EMAIL)
|
||||||
|
)
|
||||||
return false
|
return false
|
||||||
const requiredGroups = getRequiredGroups(account.provider)
|
const requiredGroups = getRequiredGroups(account.provider)
|
||||||
if (requiredGroups.length > 0) {
|
if (requiredGroups.length > 0) {
|
||||||
|
@ -6,6 +6,7 @@ import {
|
|||||||
Plan,
|
Plan,
|
||||||
WorkspaceRole,
|
WorkspaceRole,
|
||||||
WorkspaceInvitation,
|
WorkspaceInvitation,
|
||||||
|
Session,
|
||||||
} from 'db'
|
} from 'db'
|
||||||
import type { Adapter, AdapterUser } from 'next-auth/adapters'
|
import type { Adapter, AdapterUser } from 'next-auth/adapters'
|
||||||
import cuid from 'cuid'
|
import cuid from 'cuid'
|
||||||
@ -74,19 +75,23 @@ export function CustomAdapter(p: PrismaClient): Adapter {
|
|||||||
await convertInvitationsToCollaborations(p, user, invitations)
|
await convertInvitationsToCollaborations(p, user, invitations)
|
||||||
if (workspaceInvitations.length > 0)
|
if (workspaceInvitations.length > 0)
|
||||||
await joinWorkspaces(p, user, workspaceInvitations)
|
await joinWorkspaces(p, user, workspaceInvitations)
|
||||||
return createdUser
|
return createdUser as AdapterUser
|
||||||
},
|
},
|
||||||
getUser: (id) => p.user.findUnique({ where: { id } }),
|
getUser: async (id) =>
|
||||||
getUserByEmail: (email) => p.user.findUnique({ where: { email } }),
|
(await p.user.findUnique({ where: { id } })) as AdapterUser,
|
||||||
|
getUserByEmail: async (email) =>
|
||||||
|
(await p.user.findUnique({ where: { email } })) as AdapterUser,
|
||||||
async getUserByAccount(provider_providerAccountId) {
|
async getUserByAccount(provider_providerAccountId) {
|
||||||
const account = await p.account.findUnique({
|
const account = await p.account.findUnique({
|
||||||
where: { provider_providerAccountId },
|
where: { provider_providerAccountId },
|
||||||
select: { user: true },
|
select: { user: true },
|
||||||
})
|
})
|
||||||
return account?.user ?? null
|
return (account?.user ?? null) as AdapterUser | null
|
||||||
},
|
},
|
||||||
updateUser: (data) => p.user.update({ where: { id: data.id }, data }),
|
updateUser: async (data) =>
|
||||||
deleteUser: (id) => p.user.delete({ where: { id } }),
|
(await p.user.update({ where: { id: data.id }, data })) as AdapterUser,
|
||||||
|
deleteUser: async (id) =>
|
||||||
|
(await p.user.delete({ where: { id } })) as AdapterUser,
|
||||||
linkAccount: async (data) => {
|
linkAccount: async (data) => {
|
||||||
await p.account.create({
|
await p.account.create({
|
||||||
data: {
|
data: {
|
||||||
@ -117,7 +122,7 @@ export function CustomAdapter(p: PrismaClient): Adapter {
|
|||||||
})
|
})
|
||||||
if (!userAndSession) return null
|
if (!userAndSession) return null
|
||||||
const { user, ...session } = userAndSession
|
const { user, ...session } = userAndSession
|
||||||
return { user, session }
|
return { user, session } as { user: AdapterUser; session: Session }
|
||||||
},
|
},
|
||||||
createSession: (data) => p.session.create({ data }),
|
createSession: (data) => p.session.create({ data }),
|
||||||
updateSession: (data) =>
|
updateSession: (data) =>
|
||||||
|
@ -30,7 +30,7 @@ export const addSubscriptionToWorkspace = async (
|
|||||||
card: {
|
card: {
|
||||||
number: '4242424242424242',
|
number: '4242424242424242',
|
||||||
exp_month: 12,
|
exp_month: 12,
|
||||||
exp_year: 2022,
|
exp_year: 2024,
|
||||||
cvc: '123',
|
cvc: '123',
|
||||||
},
|
},
|
||||||
type: 'card',
|
type: 'card',
|
||||||
|
@ -526,6 +526,9 @@
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"required": [
|
||||||
|
"retryMessageContent"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
"analyze": "cross-env ANALYZE=true next build"
|
"analyze": "cross-env ANALYZE=true next build"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@chakra-ui/icon": "3.0.13",
|
"@chakra-ui/icon": "3.0.14",
|
||||||
"@chakra-ui/react": "2.4.4",
|
"@chakra-ui/react": "2.4.6",
|
||||||
"@emotion/react": "11.10.5",
|
"@emotion/react": "11.10.5",
|
||||||
"@emotion/styled": "11.10.5",
|
"@emotion/styled": "11.10.5",
|
||||||
"@vercel/analytics": "0.1.6",
|
"@vercel/analytics": "0.1.6",
|
||||||
@ -28,14 +28,14 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.20.7",
|
"@babel/core": "7.20.7",
|
||||||
"@chakra-ui/styled-system": "2.5.0",
|
"@chakra-ui/styled-system": "2.5.1",
|
||||||
"@next/bundle-analyzer": "13.1.1",
|
"@next/bundle-analyzer": "13.1.1",
|
||||||
"@types/aos": "3.0.4",
|
"@types/aos": "3.0.4",
|
||||||
"@types/node": "18.11.17",
|
"@types/node": "18.11.18",
|
||||||
"@types/react": "18.0.26",
|
"@types/react": "18.0.26",
|
||||||
"autoprefixer": "10.4.13",
|
"autoprefixer": "10.4.13",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"eslint": "8.30.0",
|
"eslint": "8.31.0",
|
||||||
"eslint-config-custom": "workspace:*",
|
"eslint-config-custom": "workspace:*",
|
||||||
"next-transpile-modules": "10.0.0",
|
"next-transpile-modules": "10.0.0",
|
||||||
"postcss": "8.4.20",
|
"postcss": "8.4.20",
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
"@sentry/nextjs": "7.28.1",
|
"@sentry/nextjs": "7.28.1",
|
||||||
"@trpc/server": "10.7.0",
|
"@trpc/server": "10.7.0",
|
||||||
"@typebot.io/react": "workspace:*",
|
"@typebot.io/react": "workspace:*",
|
||||||
"aws-sdk": "2.1282.0",
|
"aws-sdk": "2.1286.0",
|
||||||
"bot-engine": "workspace:*",
|
"bot-engine": "workspace:*",
|
||||||
"cors": "2.8.5",
|
"cors": "2.8.5",
|
||||||
"cuid": "2.1.8",
|
"cuid": "2.1.8",
|
||||||
@ -38,16 +38,16 @@
|
|||||||
"@playwright/test": "1.29.1",
|
"@playwright/test": "1.29.1",
|
||||||
"@types/cors": "2.8.13",
|
"@types/cors": "2.8.13",
|
||||||
"@types/google-spreadsheet": "3.3.0",
|
"@types/google-spreadsheet": "3.3.0",
|
||||||
"@types/node": "18.11.17",
|
"@types/node": "18.11.18",
|
||||||
"@types/nodemailer": "6.4.7",
|
"@types/nodemailer": "6.4.7",
|
||||||
"@types/papaparse": "5.3.5",
|
"@types/papaparse": "5.3.7",
|
||||||
"@types/qs": "6.9.7",
|
"@types/qs": "6.9.7",
|
||||||
"@types/react": "18.0.26",
|
"@types/react": "18.0.26",
|
||||||
"@types/sanitize-html": "2.8.0",
|
"@types/sanitize-html": "2.8.0",
|
||||||
"cuid": "2.1.8",
|
"cuid": "2.1.8",
|
||||||
"dotenv": "16.0.3",
|
"dotenv": "16.0.3",
|
||||||
"emails": "workspace:*",
|
"emails": "workspace:*",
|
||||||
"eslint": "8.30.0",
|
"eslint": "8.31.0",
|
||||||
"eslint-config-custom": "workspace:*",
|
"eslint-config-custom": "workspace:*",
|
||||||
"google-auth-library": "8.7.0",
|
"google-auth-library": "8.7.0",
|
||||||
"models": "workspace:*",
|
"models": "workspace:*",
|
||||||
|
@ -32,5 +32,5 @@
|
|||||||
"path": "node_modules/cz-emoji"
|
"path": "node_modules/cz-emoji"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@7.19.0"
|
"packageManager": "pnpm@7.21.0"
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"resize-observer": "1.0.4"
|
"resize-observer": "1.0.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "18.11.17",
|
"@types/node": "18.11.18",
|
||||||
"@types/qs": "6.9.7",
|
"@types/qs": "6.9.7",
|
||||||
"@types/react": "18.0.26",
|
"@types/react": "18.0.26",
|
||||||
"@types/react-phone-number-input": "3.0.14",
|
"@types/react-phone-number-input": "3.0.14",
|
||||||
@ -30,8 +30,8 @@
|
|||||||
"@types/react-transition-group": "4.4.5",
|
"@types/react-transition-group": "4.4.5",
|
||||||
"autoprefixer": "10.4.13",
|
"autoprefixer": "10.4.13",
|
||||||
"db": "workspace:*",
|
"db": "workspace:*",
|
||||||
"esbuild": "^0.16.10",
|
"esbuild": "^0.16.12",
|
||||||
"eslint": "8.30.0",
|
"eslint": "8.31.0",
|
||||||
"eslint-config-custom": "workspace:*",
|
"eslint-config-custom": "workspace:*",
|
||||||
"models": "workspace:*",
|
"models": "workspace:*",
|
||||||
"postcss": "8.4.20",
|
"postcss": "8.4.20",
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@faire/mjml-react": "3.0.0",
|
"@faire/mjml-react": "3.0.0",
|
||||||
"@types/node": "18.11.17",
|
"@types/node": "18.11.18",
|
||||||
"@types/nodemailer": "6.4.7",
|
"@types/nodemailer": "6.4.7",
|
||||||
"@types/react": "18.0.26",
|
"@types/react": "18.0.26",
|
||||||
"concurrently": "7.6.0",
|
"concurrently": "7.6.0",
|
||||||
@ -24,7 +24,7 @@
|
|||||||
"react": "18.2.0",
|
"react": "18.2.0",
|
||||||
"tsx": "3.12.1",
|
"tsx": "3.12.1",
|
||||||
"utils": "workspace:*",
|
"utils": "workspace:*",
|
||||||
"eslint": "8.30.0",
|
"eslint": "8.31.0",
|
||||||
"eslint-config-custom": "workspace:*",
|
"eslint-config-custom": "workspace:*",
|
||||||
"tsconfig": "workspace:*"
|
"tsconfig": "workspace:*"
|
||||||
},
|
},
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
"name": "eslint-config-custom",
|
"name": "eslint-config-custom",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"eslint": "8.30.0",
|
"eslint": "8.31.0",
|
||||||
"eslint-config-next": "13.1.1",
|
"eslint-config-next": "13.1.1",
|
||||||
"eslint-config-prettier": "8.5.0",
|
"eslint-config-prettier": "8.5.0",
|
||||||
"eslint-plugin-react": "7.31.11"
|
"eslint-plugin-react": "7.31.11"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@typescript-eslint/eslint-plugin": "^5.47.0",
|
"@typescript-eslint/eslint-plugin": "^5.47.1",
|
||||||
"@typescript-eslint/parser": "^5.47.0"
|
"@typescript-eslint/parser": "^5.47.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,38 +13,38 @@
|
|||||||
},
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@power-elements/stripe-elements": "^3.3.0",
|
"@power-elements/stripe-elements": "3.3.0",
|
||||||
"@stripe/stripe-js": "1.46.0",
|
"@stripe/stripe-js": "1.46.0",
|
||||||
"models": "workspace:*",
|
"models": "workspace:*",
|
||||||
"phone": "^3.1.32",
|
"phone": "3.1.32",
|
||||||
"solid-element": "^1.6.3",
|
"solid-element": "1.6.3",
|
||||||
"solid-js": "^1.6.6",
|
"solid-js": "1.6.6",
|
||||||
"utils": "workspace:*"
|
"utils": "workspace:*"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@rollup/plugin-babel": "^6.0.3",
|
"@rollup/plugin-babel": "6.0.3",
|
||||||
"@rollup/plugin-node-resolve": "^15.0.1",
|
"@rollup/plugin-node-resolve": "15.0.1",
|
||||||
"@rollup/plugin-replace": "^5.0.2",
|
"@rollup/plugin-replace": "5.0.2",
|
||||||
"@rollup/plugin-typescript": "^10.0.1",
|
"@rollup/plugin-typescript": "10.0.1",
|
||||||
"@types/react": "^18.0.26",
|
"@types/react": "18.0.26",
|
||||||
"autoprefixer": "10.4.13",
|
"autoprefixer": "10.4.13",
|
||||||
"babel-preset-solid": "^1.6.6",
|
"babel-preset-solid": "1.6.6",
|
||||||
"eslint": "8.30.0",
|
"eslint": "8.31.0",
|
||||||
"eslint-config-custom": "workspace:*",
|
"eslint-config-custom": "workspace:*",
|
||||||
"eslint-plugin-solid": "^0.9.1",
|
"eslint-plugin-solid": "0.9.1",
|
||||||
"postcss": "8.4.20",
|
"postcss": "8.4.20",
|
||||||
"react": "^18.2.0",
|
"react": "18.2.0",
|
||||||
"rollup": "^3.8.1",
|
"rollup": "3.9.0",
|
||||||
"rollup-plugin-babel": "^4.4.0",
|
"rollup-plugin-babel": "4.4.0",
|
||||||
"rollup-plugin-dts": "^5.1.0",
|
"rollup-plugin-dts": "5.1.0",
|
||||||
"rollup-plugin-postcss": "^4.0.2",
|
"rollup-plugin-postcss": "4.0.2",
|
||||||
"rollup-plugin-terser": "^7.0.2",
|
"rollup-plugin-terser": "7.0.2",
|
||||||
"rollup-plugin-typescript-paths": "^1.4.0",
|
"rollup-plugin-typescript-paths": "1.4.0",
|
||||||
"tailwindcss": "3.2.4",
|
"tailwindcss": "3.2.4",
|
||||||
"tsconfig": "workspace:*",
|
"tsconfig": "workspace:*",
|
||||||
"tsup": "6.5.0",
|
"tsup": "6.5.0",
|
||||||
"typescript": "^4.9.4",
|
"typescript": "4.9.4",
|
||||||
"vite": "^4.0.3",
|
"vite": "4.0.3",
|
||||||
"vite-plugin-solid": "^2.5.0"
|
"vite-plugin-solid": "2.5.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,10 +16,10 @@
|
|||||||
"@typebot.io/js": "workspace:*"
|
"@typebot.io/js": "workspace:*"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/react": "^18.0.26",
|
"@types/react": "18.0.26",
|
||||||
"eslint": "^8.30.0",
|
"eslint": "^8.31.0",
|
||||||
"eslint-config-custom": "workspace:*",
|
"eslint-config-custom": "workspace:*",
|
||||||
"react": "^18.2.0",
|
"react": "18.2.0",
|
||||||
"tsconfig": "workspace:*",
|
"tsconfig": "workspace:*",
|
||||||
"tsup": "6.5.0",
|
"tsup": "6.5.0",
|
||||||
"typescript": "^4.9.4"
|
"typescript": "^4.9.4"
|
||||||
|
@ -13,14 +13,14 @@
|
|||||||
"db:fixTypebots": "tsx fixTypebots.ts"
|
"db:fixTypebots": "tsx fixTypebots.ts"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "18.11.17",
|
"@types/node": "18.11.18",
|
||||||
"@types/prompts": "^2.4.2",
|
"@types/prompts": "2.4.2",
|
||||||
"db": "workspace:*",
|
"db": "workspace:*",
|
||||||
"deep-object-diff": "1.1.9",
|
"deep-object-diff": "1.1.9",
|
||||||
"emails": "workspace:*",
|
"emails": "workspace:*",
|
||||||
"got": "12.5.3",
|
"got": "12.5.3",
|
||||||
"models": "workspace:*",
|
"models": "workspace:*",
|
||||||
"prompts": "^2.4.2",
|
"prompts": "2.4.2",
|
||||||
"stripe": "11.5.0",
|
"stripe": "11.5.0",
|
||||||
"tsx": "3.12.1",
|
"tsx": "3.12.1",
|
||||||
"typescript": "4.9.4",
|
"typescript": "4.9.4",
|
||||||
|
@ -11,9 +11,9 @@
|
|||||||
"test": "pnpm jest"
|
"test": "pnpm jest"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "29.2.4",
|
"@types/jest": "29.2.5",
|
||||||
"tsup": "6.5.0",
|
"tsup": "6.5.0",
|
||||||
"eslint": "8.30.0",
|
"eslint": "8.31.0",
|
||||||
"eslint-config-custom": "workspace:*",
|
"eslint-config-custom": "workspace:*",
|
||||||
"jest": "29.3.1",
|
"jest": "29.3.1",
|
||||||
"jest-environment-jsdom": "29.3.1",
|
"jest-environment-jsdom": "29.3.1",
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@playwright/test": "1.29.1",
|
"@playwright/test": "1.29.1",
|
||||||
"@types/nodemailer": "6.4.7",
|
"@types/nodemailer": "6.4.7",
|
||||||
"aws-sdk": "2.1282.0",
|
"aws-sdk": "2.1286.0",
|
||||||
"cuid": "2.1.8",
|
"cuid": "2.1.8",
|
||||||
"db": "workspace:*",
|
"db": "workspace:*",
|
||||||
"dotenv": "16.0.3",
|
"dotenv": "16.0.3",
|
||||||
|
1678
pnpm-lock.yaml
generated
1678
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user