diff --git a/.changeset/sharp-jokes-rescue.md b/.changeset/sharp-jokes-rescue.md new file mode 100644 index 000000000..1d122c587 --- /dev/null +++ b/.changeset/sharp-jokes-rescue.md @@ -0,0 +1,7 @@ +--- +"@panora/embedded-card-react": minor +"@panora/frontend-sdk": minor +"@panora/shared": minor +--- + +update minor for npm packages diff --git a/.dockerignore b/.dockerignore index 68e160bdc..5f801e041 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,8 +6,8 @@ node_modules/ apps/magic-link/node_modules apps/magic-link/dist -apps/client-ts/node_modules -apps/client-ts/.next +apps/webapp/node_modules +apps/webapp/.next packages/api/node_modules packages/api/dist \ No newline at end of file diff --git a/.env.example b/.env.example index f88aba857..61c55439e 100644 --- a/.env.example +++ b/.env.example @@ -2,11 +2,12 @@ # API Backend # ================================================ ENV=dev -DISTRIBUTION=selfhosted # selfhosted or managed +DISTRIBUTION=selfhost # selfhost or managed PANORA_BASE_API_URL=http://localhost:3000 JWT_SECRET=secret_jwt ENCRYPT_CRYPTO_SECRET_KEY="0123456789abcdef0123456789abcdef" -#Managed only + +# Only used when DISTRIBUTION=managed SENTRY_DSN= SENTRY_ENABLED=FALSE @@ -30,12 +31,23 @@ POSTGRES_USER=my_user POSTGRES_DB=panora_db POSTGRES_HOST=postgres POSTGRES_PASSWORD=my_password + # Endpoint on which realtime webhooks are sent to -WEBHOOK_INGRESS=http://localhost:3000 +WEBHOOK_INGRESS=YOUR_ENDPOINT_URL_TO_RECEIVE_PANORA_WEBHOOKS + +# Mandatory only when DISTRIBUTION=selfhost +# 1. Execute cp ngrok.yml.example ngrok.yml +# 2. Uncomment ngrok service in docker-compose{.dev, .source}.yml +# Endpoint (an Ngrok tunnel domain) when you have to test your OAuth App and needs a redirectUri that redirects to your localhost +# (useful for contributors that might need to test their oAuth flow) +REDIRECT_TUNNEL_INGRESS=NGROK_DOMAIN + # Each Provider is of form PROVIDER_VERTICAL_SOFTWAREMODE_ATTRIBUTE +# check (https://docs.panora.dev/open-source/contributors) +# OAuth : ATTRIBUTE c [CLIENT_ID, CLIENT_SECRET] & {SUBDOMAIN} (some providers might need a subdomain) # ================================================ -# Integration Providers +# Credentials of Integration Providers # ================================================ # CRM # Hubspot @@ -50,13 +62,9 @@ PIPEDRIVE_CRM_CLOUD_CLIENT_SECRET= # Zendesk ZENDESK_CRM_CLOUD_CLIENT_ID= ZENDESK_CRM_CLOUD_CLIENT_SECRET= -# Freshsales -FRESHSALES_CRM_CLOUD_CLIENT_ID= -FRESHSALES_CRM_CLOUD_CLIENT_SECRET= # Attio ATTIO_CRM_CLOUD_CLIENT_ID= ATTIO_CRM_CLOUD_CLIENT_SECRET= - # Close CLOSE_CRM_CLOUD_CLIENT_ID= CLOSE_CRM_CLOUD_CLIENT_SECRET= @@ -68,15 +76,24 @@ CLOSE_CRM_CLOUD_CLIENT_SECRET= ZENDESK_TICKETING_CLOUD_CLIENT_ID= ZENDESK_TICKETING_CLOUD_CLIENT_SECRET= ZENDESK_TICKETING_CLOUD_SUBDOMAIN= +# Jira JIRA_TICKETING_CLOUD_CLIENT_ID= JIRA_TICKETING_CLOUD_CLIENT_SECRET= -GORGIAS_TICKETING_CLOUD_CLIENT_ID= -GORGIAS_TICKETING_CLOUD_CLIENT_SECRET= -GORGIAS_TICKETING_CLOUD_SUBDOMAIN= +# Front FRONT_TICKETING_CLOUD_CLIENT_ID= FRONT_TICKETING_CLOUD_CLIENT_SECRET= +# Gitlab GITLAB_TICKETING_CLOUD_CLIENT_ID= GITLAB_TICKETING_CLOUD_CLIENT_SECRET= + +# ================================================ +# File Storage +# ================================================ +# Box +BOX_FILESTORAGE_CLOUD_CLIENT_ID= +BOX_FILESTORAGE_CLOUD_CLIENT_SECRET= + + # ================================================ # Webapp settings # Must be set in the perspective of the end user browser @@ -86,5 +103,5 @@ NEXT_PUBLIC_MAGIC_LINK_DOMAIN=http://localhost:81 NEXT_PUBLIC_POSTHOG_KEY= NEXT_PUBLIC_POSTHOG_HOST= NEXT_PUBLIC_WEBAPP_DOMAIN="http://localhost" -# Disable Next.js spyware -NEXT_TELEMETRY_DISABLED=1 \ No newline at end of file +NEXT_PUBLIC_DISTRIBUTION="selfhost" # selfhost or managed + diff --git a/.github/workflows/docker.check-build.dashboard.selfhosted.yml b/.github/workflows/docker.check-build.dashboard.selfhosted.yml index 7c2f2f5b3..0ca62a5d8 100644 --- a/.github/workflows/docker.check-build.dashboard.selfhosted.yml +++ b/.github/workflows/docker.check-build.dashboard.selfhosted.yml @@ -23,14 +23,10 @@ jobs: with: platforms: linux/amd64,linux/arm64 context: . - file: ./apps/client-ts/Dockerfile + file: ./apps/webapp/Dockerfile push: false tags: panoradotdev/frontend-webapp:selfhosted build-args: | NEXT_PUBLIC_BACKEND_DOMAIN=${{ secrets.NEXT_PUBLIC_BACKEND_DOMAIN }} NEXT_PUBLIC_MAGIC_LINK_DOMAIN=${{ secrets.NEXT_PUBLIC_MAGIC_LINK_DOMAIN }} - NEXT_PUBLIC_STYTCH_PROJECT_ID=${{ secrets.NEXT_PUBLIC_STYTCH_PROJECT_ID }} - NEXT_PUBLIC_STYTCH_SECRET=${{ secrets.NEXT_PUBLIC_STYTCH_SECRET }} - NEXT_PUBLIC_STYTCH_PROJECT_ENV=${{ secrets.NEXT_PUBLIC_STYTCH_PROJECT_ENV }} - NEXT_PUBLIC_STYTCH_PUBLIC_TOKEN=${{ secrets.NEXT_PUBLIC_STYTCH_PUBLIC_TOKEN }} NEXT_PUBLIC_DISTRIBUTION=${{ env.DISTRIBUTION }} \ No newline at end of file diff --git a/.github/workflows/docker.export.frontend-dashboard.selfhosted.yml b/.github/workflows/docker.export.frontend-dashboard.selfhosted.yml index 4fd7ba4ec..05472ff17 100644 --- a/.github/workflows/docker.export.frontend-dashboard.selfhosted.yml +++ b/.github/workflows/docker.export.frontend-dashboard.selfhosted.yml @@ -29,14 +29,10 @@ jobs: with: platforms: linux/amd64,linux/arm64 context: . - file: ./apps/client-ts/Dockerfile + file: ./apps/webapp/Dockerfile push: true tags: panoradotdev/frontend-webapp:selfhosted build-args: | NEXT_PUBLIC_BACKEND_DOMAIN=${{ secrets.NEXT_PUBLIC_BACKEND_DOMAIN }} NEXT_PUBLIC_MAGIC_LINK_DOMAIN=${{ secrets.NEXT_PUBLIC_MAGIC_LINK_DOMAIN }} - NEXT_PUBLIC_STYTCH_PROJECT_ID=${{ secrets.NEXT_PUBLIC_STYTCH_PROJECT_ID }} - NEXT_PUBLIC_STYTCH_SECRET=${{ secrets.NEXT_PUBLIC_STYTCH_SECRET }} - NEXT_PUBLIC_STYTCH_PROJECT_ENV=${{ secrets.NEXT_PUBLIC_STYTCH_PROJECT_ENV }} - NEXT_PUBLIC_STYTCH_PUBLIC_TOKEN=${{ secrets.NEXT_PUBLIC_STYTCH_PUBLIC_TOKEN }} NEXT_PUBLIC_DISTRIBUTION=${{ env.DISTRIBUTION }} \ No newline at end of file diff --git a/apps/client-ts/Dockerfile b/apps/client-ts/Dockerfile deleted file mode 100644 index 9557e5761..000000000 --- a/apps/client-ts/Dockerfile +++ /dev/null @@ -1,126 +0,0 @@ -# run directly from the repo root directory -# docker build -f ./apps/client-ts/Dockerfile . -FROM node:20-alpine AS base -# ======================================================================= -# Turbo: Prepare a standalone workspace for docker -FROM base AS builder -RUN apk add --no-cache libc6-compat -RUN apk update - -# Set pnpm -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" -RUN corepack enable - -WORKDIR /app -RUN pnpm add -g turbo@1.13.4 -COPY . . -RUN turbo prune client-ts --docker - -#check content -RUN ls -la ./out/full/apps/client-ts - -# ======================================================================= -# Install Deps and build project using PNPM -FROM base AS installer -RUN apk add --no-cache libc6-compat -RUN apk update -# Set pnpm -ENV PNPM_HOME="/pnpm" -ENV PATH="$PNPM_HOME:$PATH" - - -ARG NEXT_PUBLIC_STYTCH_PROJECT_ID -ARG NEXT_PUBLIC_STYTCH_SECRET -ARG NEXT_PUBLIC_STYTCH_PROJECT_ENV -ARG NEXT_PUBLIC_STYTCH_PUBLIC_TOKEN -ARG NEXT_PUBLIC_DISTRIBUTION -ARG NEXT_PUBLIC_BACKEND_DOMAIN -ARG NEXT_PUBLIC_MAGIC_LINK_DOMAIN -ARG NEXT_PUBLIC_WEBAPP_DOMAIN - -ENV NEXT_PUBLIC_STYTCH_PROJECT_ID="$NEXT_PUBLIC_STYTCH_PROJECT_ID" -ENV NEXT_PUBLIC_STYTCH_SECRET="$NEXT_PUBLIC_STYTCH_SECRET" -ENV NEXT_PUBLIC_STYTCH_PROJECT_ENV="$NEXT_PUBLIC_STYTCH_PROJECT_ENV" -ENV NEXT_PUBLIC_STYTCH_PUBLIC_TOKEN="$NEXT_PUBLIC_STYTCH_PUBLIC_TOKEN" - -ENV NEXT_PUBLIC_DISTRIBUTION="$NEXT_PUBLIC_DISTRIBUTION" -ENV NEXT_PUBLIC_BACKEND_DOMAIN="${NEXT_PUBLIC_BACKEND_DOMAIN}" -ENV NEXT_PUBLIC_MAGIC_LINK_DOMAIN="${NEXT_PUBLIC_MAGIC_LINK_DOMAIN}" -ENV NEXT_PUBLIC_WEBAPP_DOMAIN="${NEXT_PUBLIC_WEBAPP_DOMAIN}" - -RUN corepack enable - -WORKDIR /app - -# Tweak in case of symlink issue -#ARG node-linker="hoisted" -#ARG package-import-method="copy" -#ARG symlink="false" - -RUN ls -la - -# First install the dependencies (as they change less often) -COPY .gitignore .gitignore -COPY --from=builder /app/out/json/ . - -# 🔴🔴🔴 possible bug due to missing dependencies here, when using "standalone mode" -COPY --from=builder /app/out/pnpm-lock.yaml ./pnpm-lock.yaml - -# install dependencies -RUN pnpm install --shamefully-hoist - -# Build the project -COPY --from=builder ./app/out/full/ . -RUN pnpm run build - -# check content -#RUN ls -la /app/apps/client-ts/ -#RUN ls -la /app/apps/client-ts/.next/ - -CMD cd /app/apps/client-ts/ && pnpm run start - -#RUN cd /app/apps/client-ts && node .next/standalone/server.js -#RUN ls -la /app/apps/client-ts/.next/standalone - -# # Node.js server - serving dynamic content -# # # ======================================================================== -# FROM node:20-alpine AS runner -# WORKDIR /app - -# # set hostname to localhost -# ENV HOSTNAME "0.0.0.0" -# ENV PORT 3000 - -# # Import Standalone files -# COPY --from=installer ./app/apps/client-ts/public ./public -# COPY --from=installer ./app/apps/client-ts/.next/static ./.next/static -# COPY --from=installer ./app/apps/client-ts/.next/standalone ./ - -# RUN ls -a ./ - - -# # Expose port and run -# EXPOSE 3000 -# CMD ["node", "server.js"] - - -# # For serving static content - some nextjs features will be lost -# # ======================================================================== -# FROM nginx:stable-alpine as runner - -# #ARG VITE_BACKEND_DOMAIN -# #ARG VITE_FRONTEND_DOMAIN -# #ENV VITE_BACKEND_DOMAIN="$VITE_BACKEND_DOMAIN" -# #ENV VITE_FRONTEND_DOMAIN="$VITE_FRONTEND_DOMAIN" -# COPY --from=installer ./app/apps/client-ts/dist/standalone/ /usr/share/nginx/html -# RUN ls -l /usr/share/nginx/html/ - -# RUN echo "***********************" -# RUN cat /etc/nginx/conf.d/default.conf -# RUN echo "***********************" - -# COPY apps/client-ts/nginx.conf /etc/nginx/conf.d/default.conf - -# EXPOSE 80 -# CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/apps/embedded-catalog/react/src/components/PanoraDynamicCatalog.tsx b/apps/embedded-catalog/react/src/components/PanoraDynamicCatalog.tsx index 65b2e6e93..27685e13e 100644 --- a/apps/embedded-catalog/react/src/components/PanoraDynamicCatalog.tsx +++ b/apps/embedded-catalog/react/src/components/PanoraDynamicCatalog.tsx @@ -91,7 +91,7 @@ const DynamicCatalog = ({projectId,linkedUserId, category, optionalApiUrl} : Dyn projectId: projectId, linkedUserId: linkedUserId, optionalApiUrl: optionalApiUrl, - onSuccess: () => { + onSuccess: () => { console.log('OAuth successful'); setOpenSuccessDialog(true); }, diff --git a/apps/frontend-sdk/package.json b/apps/frontend-sdk/package.json new file mode 100644 index 000000000..26a917a47 --- /dev/null +++ b/apps/frontend-sdk/package.json @@ -0,0 +1,17 @@ +{ + "name": "@panora/frontend-sdk", + "version": "1.0.0", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc" + }, + "dependencies": { + "@panora/shared": "workspace:^", + "axios": "^1.5.1" + }, + "devDependencies": { + "@types/node": "^20.3.1", + "typescript": "^5.1.3" + } +} \ No newline at end of file diff --git a/apps/frontend-sdk/src/index.ts b/apps/frontend-sdk/src/index.ts new file mode 100644 index 000000000..6a8256af4 --- /dev/null +++ b/apps/frontend-sdk/src/index.ts @@ -0,0 +1,198 @@ +import axios from 'axios'; +import { ConnectorCategory, constructAuthUrl } from '@panora/shared'; + +interface PanoraConfig { + apiKey: string; + overrideApiUrl?: string; +} + +interface Credentials { + username?: string; + password?: string; + apiKey?: string; +} + +interface ConnectOptions { + providerName: string; + vertical: ConnectorCategory; + linkedUserId: string; + credentials?: Credentials; + options: { + onSuccess?: () => void; + onError?: (error: Error) => void; + overrideReturnUrl?: string; + } +} + +interface IGConnectionDto { + query: { + providerName: string; + vertical: string; + projectId: string; + linkedUserId: string; + }, + data: { + [key: string]: string; + } +} + +class Panora { + private API_KEY: string; + private apiUrl: string; + private projectId: string | null = null; + + constructor(config: PanoraConfig) { + this.API_KEY = config.apiKey; + this.apiUrl = config.overrideApiUrl || 'https://api.panora.dev'; + } + + private async fetchProjectId(): Promise { + if (this.projectId) { + return this.projectId; + } + try { + const response = await axios.get(`${this.apiUrl}/projects/current`, { + headers: { + 'Authorization': `Bearer ${this.API_KEY}` + } + }); + + this.projectId = response.data; + return this.projectId as string; + } catch (error) { + throw new Error('Failed to fetch project ID'); + } + } + + async connect(options: ConnectOptions): Promise { + const { providerName, vertical, linkedUserId, credentials, options: {onSuccess, onError, overrideReturnUrl} } = options; + + try { + const projectId = await this.fetchProjectId(); + + if (credentials) { + // Handle API Key or Basic Auth + return this.handleCredentialsAuth(projectId, providerName, vertical, linkedUserId, credentials, onSuccess, onError); + } else { + // Handle OAuth + return this.handleOAuth(projectId, providerName, vertical, linkedUserId, overrideReturnUrl, onSuccess, onError); + } + } catch (error) { + if (onError) { + onError(error as Error); + } + return null; + } + } + + private async handleCredentialsAuth( + projectId: string, + providerName: string, + vertical: string, + linkedUserId: string, + credentials: Credentials, + onSuccess?: () => void, + onError?: (error: Error) => void + ): Promise { + const connectionData: IGConnectionDto = { + query: { + providerName, + vertical, + projectId, + linkedUserId, + }, + data: credentials as {[key: string]: any} + }; + + try { + const response = await fetch( + `${this.apiUrl}/connections/basicorapikey/callback?state=${encodeURIComponent(JSON.stringify(connectionData.query))}`, + { + method: 'POST', + body: JSON.stringify(connectionData.data), + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${this.API_KEY}` + }, + } + ); + + if (!response.ok) { + const errorData = await response.json(); + throw new Error(errorData.message || "Unknown error occurred"); + } + + if (onSuccess) { + onSuccess(); + } + } catch (error) { + if (onError) { + onError(error as Error); + } + } + + return null; + } + + private async handleOAuth( + projectId: string, + providerName: string, + vertical: string, + linkedUserId: string, + overrideReturnUrl?: string, + onSuccess?: () => void, + onError?: (error: Error) => void + ): Promise { + const returnUrl = overrideReturnUrl || `${window.location.origin}`; + + const authUrl = await constructAuthUrl({ + projectId, + linkedUserId, + providerName, + returnUrl, + apiUrl: this.apiUrl, + vertical + }); + + if (!authUrl) { + throw new Error(`Auth URL is invalid: ${authUrl}`); + } + + const width = 600, height = 600; + const left = (window.innerWidth - width) / 2; + const top = (window.innerHeight - height) / 2; + const authWindow = window.open(authUrl, 'OAuth', `width=${width},height=${height},top=${top},left=${left}`); + + if (authWindow) { + this.pollForRedirect(authWindow, returnUrl, onSuccess, onError); + } + + return authWindow; + } + + private pollForRedirect(authWindow: Window, returnUrl: string, onSuccess?: () => void, onError?: (error: Error) => void) { + const interval = setInterval(() => { + try { + const redirectedURL = authWindow.location.href; + if (redirectedURL.startsWith(returnUrl)) { + if (onSuccess) { + onSuccess(); + } + clearInterval(interval); + authWindow.close(); + } + } catch (e) { + // Ignore cross-origin errors + } + + if (authWindow.closed) { + clearInterval(interval); + if (onError) { + onError(new Error('Authentication window was closed')); + } + } + }, 500); + } +} + +export default Panora; \ No newline at end of file diff --git a/apps/frontend-sdk/tsconfig.json b/apps/frontend-sdk/tsconfig.json new file mode 100644 index 000000000..e5da16b07 --- /dev/null +++ b/apps/frontend-sdk/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "declaration": true, + "outDir": "./dist", + "strict": true, + "esModuleInterop": true + }, + "include": ["src"], + "exclude": ["node_modules", "dist"] + } \ No newline at end of file diff --git a/apps/magic-link/Dockerfile b/apps/magic-link/Dockerfile index b8efb57e2..8e9a8cad1 100644 --- a/apps/magic-link/Dockerfile +++ b/apps/magic-link/Dockerfile @@ -27,10 +27,8 @@ ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" ARG VITE_BACKEND_DOMAIN -ARG VITE_FRONTEND_DOMAIN ENV VITE_BACKEND_DOMAIN="$VITE_BACKEND_DOMAIN" -ENV VITE_FRONTEND_DOMAIN="$VITE_FRONTEND_DOMAIN" RUN corepack enable @@ -49,10 +47,6 @@ RUN pnpm turbo run build --filter=magic-link... # ======================================================================== FROM nginx:1.24-alpine3.17 as runner -#ARG VITE_BACKEND_DOMAIN -#ARG VITE_FRONTEND_DOMAIN -#ENV VITE_BACKEND_DOMAIN="$VITE_BACKEND_DOMAIN" -#ENV VITE_FRONTEND_DOMAIN="$VITE_FRONTEND_DOMAIN" COPY --from=installer ./app/apps/magic-link/dist/ /usr/share/nginx/html COPY apps/magic-link/nginx.conf /etc/nginx/conf.d/default.conf diff --git a/apps/magic-link/Dockerfile.dev b/apps/magic-link/Dockerfile.dev index f6f74b25d..26cdf0048 100644 --- a/apps/magic-link/Dockerfile.dev +++ b/apps/magic-link/Dockerfile.dev @@ -11,10 +11,8 @@ ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" ARG VITE_BACKEND_DOMAIN -ARG VITE_FRONTEND_DOMAIN ENV VITE_BACKEND_DOMAIN="$VITE_BACKEND_DOMAIN" -ENV VITE_FRONTEND_DOMAIN="$VITE_FRONTEND_DOMAIN" RUN corepack enable diff --git a/apps/client-ts/.dockerignore b/apps/webapp/.dockerignore similarity index 100% rename from apps/client-ts/.dockerignore rename to apps/webapp/.dockerignore diff --git a/apps/client-ts/.eslintrc.json b/apps/webapp/.eslintrc.json similarity index 100% rename from apps/client-ts/.eslintrc.json rename to apps/webapp/.eslintrc.json diff --git a/apps/client-ts/.gitignore b/apps/webapp/.gitignore similarity index 100% rename from apps/client-ts/.gitignore rename to apps/webapp/.gitignore diff --git a/apps/client-ts/CHANGELOG.md b/apps/webapp/CHANGELOG.md similarity index 98% rename from apps/client-ts/CHANGELOG.md rename to apps/webapp/CHANGELOG.md index 732247bd3..38181bc49 100644 --- a/apps/client-ts/CHANGELOG.md +++ b/apps/webapp/CHANGELOG.md @@ -1,4 +1,4 @@ -# client-ts +# webapp ## 0.1.7 diff --git a/apps/webapp/Dockerfile b/apps/webapp/Dockerfile new file mode 100644 index 000000000..8a3ba64e4 --- /dev/null +++ b/apps/webapp/Dockerfile @@ -0,0 +1,65 @@ +# run directly from the repo root directory +# docker build -f ./apps/webapp/Dockerfile . +FROM node:20-alpine AS base +# ======================================================================= +# Turbo: Prepare a standalone workspace for docker +FROM base AS builder +RUN apk add --no-cache libc6-compat +RUN apk update + +# Set pnpm +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable + +WORKDIR /app +RUN pnpm add -g turbo@1.13.4 +COPY . . +RUN turbo prune webapp --docker + +#check content +RUN ls -la ./out/full/apps/webapp + +# ======================================================================= +# Install Deps and build project using PNPM +FROM base AS installer +RUN apk add --no-cache libc6-compat +RUN apk update +# Set pnpm +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" + + +ARG NEXT_PUBLIC_DISTRIBUTION +ARG NEXT_PUBLIC_BACKEND_DOMAIN +ARG NEXT_PUBLIC_MAGIC_LINK_DOMAIN +ARG NEXT_PUBLIC_WEBAPP_DOMAIN + + +ENV NEXT_PUBLIC_DISTRIBUTION="$NEXT_PUBLIC_DISTRIBUTION" +ENV NEXT_PUBLIC_BACKEND_DOMAIN="${NEXT_PUBLIC_BACKEND_DOMAIN}" +ENV NEXT_PUBLIC_MAGIC_LINK_DOMAIN="${NEXT_PUBLIC_MAGIC_LINK_DOMAIN}" +ENV NEXT_PUBLIC_WEBAPP_DOMAIN="${NEXT_PUBLIC_WEBAPP_DOMAIN}" + +RUN corepack enable + +WORKDIR /app + +RUN ls -la + +# First install the dependencies (as they change less often) +COPY .gitignore .gitignore +COPY --from=builder /app/out/json/ . + +# 🔴🔴🔴 possible bug due to missing dependencies here, when using "standalone mode" +COPY --from=builder /app/out/pnpm-lock.yaml ./pnpm-lock.yaml + +# install dependencies +RUN pnpm install --shamefully-hoist + +# Build the project +COPY --from=builder ./app/out/full/ . +RUN pnpm run build + +CMD cd /app/apps/webapp/ && pnpm run start + diff --git a/apps/client-ts/Dockerfile.dev b/apps/webapp/Dockerfile.dev similarity index 64% rename from apps/client-ts/Dockerfile.dev rename to apps/webapp/Dockerfile.dev index 3b940a38f..3c9bc1a95 100644 --- a/apps/client-ts/Dockerfile.dev +++ b/apps/webapp/Dockerfile.dev @@ -1,5 +1,5 @@ # run directly from the repo root directory -# docker build -f ./apps/client-ts/Dockerfile.dev . +# docker build -f ./apps/webapp/Dockerfile.dev . FROM node:20-alpine AS base # ======================================================================= FROM base AS builder @@ -11,12 +11,8 @@ ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" ARG VITE_BACKEND_DOMAIN -ARG VITE_FRONTEND_DOMAIN -ARG VITE_STYTCH_TOKEN ENV VITE_BACKEND_DOMAIN="$VITE_BACKEND_DOMAIN" -ENV VITE_FRONTEND_DOMAIN="$VITE_FRONTEND_DOMAIN" -ENV VITE_STYTCH_TOKEN="$VITE_STYTCH_TOKEN" RUN corepack enable @@ -24,4 +20,4 @@ WORKDIR /app RUN pnpm add -g turbo@1.13.4 # Start the Webapp -CMD cd apps/client-ts && pnpm install && pnpm run dev +CMD cd apps/webapp && pnpm install && pnpm run dev diff --git a/apps/client-ts/README.md b/apps/webapp/README.md similarity index 100% rename from apps/client-ts/README.md rename to apps/webapp/README.md diff --git a/apps/client-ts/components.json b/apps/webapp/components.json similarity index 100% rename from apps/client-ts/components.json rename to apps/webapp/components.json diff --git a/apps/client-ts/next.config.mjs b/apps/webapp/next.config.mjs similarity index 100% rename from apps/client-ts/next.config.mjs rename to apps/webapp/next.config.mjs diff --git a/apps/client-ts/nginx.conf b/apps/webapp/nginx.conf similarity index 100% rename from apps/client-ts/nginx.conf rename to apps/webapp/nginx.conf diff --git a/apps/client-ts/package-lock.json b/apps/webapp/package-lock.json similarity index 99% rename from apps/client-ts/package-lock.json rename to apps/webapp/package-lock.json index 8353e0048..299dd2f1d 100644 --- a/apps/client-ts/package-lock.json +++ b/apps/webapp/package-lock.json @@ -1,11 +1,11 @@ { - "name": "client-ts", + "name": "webapp", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "client-ts", + "name": "webapp", "version": "0.1.0", "dependencies": { "@hookform/resolvers": "^3.3.4", diff --git a/apps/client-ts/package.json b/apps/webapp/package.json similarity index 99% rename from apps/client-ts/package.json rename to apps/webapp/package.json index fdb77cf8a..7eefcfdf2 100644 --- a/apps/client-ts/package.json +++ b/apps/webapp/package.json @@ -1,5 +1,5 @@ { - "name": "client-ts", + "name": "webapp", "version": "0.1.7", "private": true, "scripts": { diff --git a/apps/client-ts/postcss.config.js b/apps/webapp/postcss.config.js similarity index 100% rename from apps/client-ts/postcss.config.js rename to apps/webapp/postcss.config.js diff --git a/apps/client-ts/public/avatars/01.png b/apps/webapp/public/avatars/01.png similarity index 100% rename from apps/client-ts/public/avatars/01.png rename to apps/webapp/public/avatars/01.png diff --git a/apps/client-ts/public/avatars/02.png b/apps/webapp/public/avatars/02.png similarity index 100% rename from apps/client-ts/public/avatars/02.png rename to apps/webapp/public/avatars/02.png diff --git a/apps/client-ts/public/avatars/03.png b/apps/webapp/public/avatars/03.png similarity index 100% rename from apps/client-ts/public/avatars/03.png rename to apps/webapp/public/avatars/03.png diff --git a/apps/client-ts/public/avatars/04.png b/apps/webapp/public/avatars/04.png similarity index 100% rename from apps/client-ts/public/avatars/04.png rename to apps/webapp/public/avatars/04.png diff --git a/apps/client-ts/public/avatars/05.png b/apps/webapp/public/avatars/05.png similarity index 100% rename from apps/client-ts/public/avatars/05.png rename to apps/webapp/public/avatars/05.png diff --git a/apps/client-ts/public/bg-panora.jpeg b/apps/webapp/public/bg-panora.jpeg similarity index 100% rename from apps/client-ts/public/bg-panora.jpeg rename to apps/webapp/public/bg-panora.jpeg diff --git a/apps/client-ts/public/bgbg.jpeg b/apps/webapp/public/bgbg.jpeg similarity index 100% rename from apps/client-ts/public/bgbg.jpeg rename to apps/webapp/public/bgbg.jpeg diff --git a/apps/client-ts/public/icons/google.tsx b/apps/webapp/public/icons/google.tsx similarity index 100% rename from apps/client-ts/public/icons/google.tsx rename to apps/webapp/public/icons/google.tsx diff --git a/apps/client-ts/public/icons/microsoft.tsx b/apps/webapp/public/icons/microsoft.tsx similarity index 100% rename from apps/client-ts/public/icons/microsoft.tsx rename to apps/webapp/public/icons/microsoft.tsx diff --git a/apps/client-ts/public/images.jpeg b/apps/webapp/public/images.jpeg similarity index 100% rename from apps/client-ts/public/images.jpeg rename to apps/webapp/public/images.jpeg diff --git a/apps/client-ts/public/logo-panora-black.png b/apps/webapp/public/logo-panora-black.png similarity index 100% rename from apps/client-ts/public/logo-panora-black.png rename to apps/webapp/public/logo-panora-black.png diff --git a/apps/client-ts/public/logo-panora-white-hq.png b/apps/webapp/public/logo-panora-white-hq.png similarity index 100% rename from apps/client-ts/public/logo-panora-white-hq.png rename to apps/webapp/public/logo-panora-white-hq.png diff --git a/apps/client-ts/public/logo.png b/apps/webapp/public/logo.png similarity index 100% rename from apps/client-ts/public/logo.png rename to apps/webapp/public/logo.png diff --git a/apps/client-ts/public/next.svg b/apps/webapp/public/next.svg similarity index 100% rename from apps/client-ts/public/next.svg rename to apps/webapp/public/next.svg diff --git a/apps/client-ts/public/providers/crm/attio.png b/apps/webapp/public/providers/crm/attio.png similarity index 100% rename from apps/client-ts/public/providers/crm/attio.png rename to apps/webapp/public/providers/crm/attio.png diff --git a/apps/client-ts/public/providers/crm/hubspot.jpg b/apps/webapp/public/providers/crm/hubspot.jpg similarity index 100% rename from apps/client-ts/public/providers/crm/hubspot.jpg rename to apps/webapp/public/providers/crm/hubspot.jpg diff --git a/apps/client-ts/public/providers/crm/pipedrive.png b/apps/webapp/public/providers/crm/pipedrive.png similarity index 100% rename from apps/client-ts/public/providers/crm/pipedrive.png rename to apps/webapp/public/providers/crm/pipedrive.png diff --git a/apps/client-ts/public/providers/crm/zendesk.png b/apps/webapp/public/providers/crm/zendesk.png similarity index 100% rename from apps/client-ts/public/providers/crm/zendesk.png rename to apps/webapp/public/providers/crm/zendesk.png diff --git a/apps/client-ts/public/providers/crm/zendesk_tcg.png b/apps/webapp/public/providers/crm/zendesk_tcg.png similarity index 100% rename from apps/client-ts/public/providers/crm/zendesk_tcg.png rename to apps/webapp/public/providers/crm/zendesk_tcg.png diff --git a/apps/client-ts/public/providers/crm/zoho.png b/apps/webapp/public/providers/crm/zoho.png similarity index 100% rename from apps/client-ts/public/providers/crm/zoho.png rename to apps/webapp/public/providers/crm/zoho.png diff --git a/apps/client-ts/public/providers/crm/zoho.webp b/apps/webapp/public/providers/crm/zoho.webp similarity index 100% rename from apps/client-ts/public/providers/crm/zoho.webp rename to apps/webapp/public/providers/crm/zoho.webp diff --git a/apps/client-ts/public/quickstart/1.png b/apps/webapp/public/quickstart/1.png similarity index 100% rename from apps/client-ts/public/quickstart/1.png rename to apps/webapp/public/quickstart/1.png diff --git a/apps/client-ts/public/quickstart/2.png b/apps/webapp/public/quickstart/2.png similarity index 100% rename from apps/client-ts/public/quickstart/2.png rename to apps/webapp/public/quickstart/2.png diff --git a/apps/client-ts/public/quickstart/3.png b/apps/webapp/public/quickstart/3.png similarity index 100% rename from apps/client-ts/public/quickstart/3.png rename to apps/webapp/public/quickstart/3.png diff --git a/apps/client-ts/public/quickstart/4.png b/apps/webapp/public/quickstart/4.png similarity index 100% rename from apps/client-ts/public/quickstart/4.png rename to apps/webapp/public/quickstart/4.png diff --git a/apps/client-ts/public/quickstart/5.png b/apps/webapp/public/quickstart/5.png similarity index 100% rename from apps/client-ts/public/quickstart/5.png rename to apps/webapp/public/quickstart/5.png diff --git a/apps/client-ts/public/quickstart/gif11.gif b/apps/webapp/public/quickstart/gif11.gif similarity index 100% rename from apps/client-ts/public/quickstart/gif11.gif rename to apps/webapp/public/quickstart/gif11.gif diff --git a/apps/client-ts/public/quickstart/gif12.gif b/apps/webapp/public/quickstart/gif12.gif similarity index 100% rename from apps/client-ts/public/quickstart/gif12.gif rename to apps/webapp/public/quickstart/gif12.gif diff --git a/apps/client-ts/public/vercel.svg b/apps/webapp/public/vercel.svg similarity index 100% rename from apps/client-ts/public/vercel.svg rename to apps/webapp/public/vercel.svg diff --git a/apps/client-ts/src/app/(Dashboard)/api-keys/page.tsx b/apps/webapp/src/app/(Dashboard)/api-keys/page.tsx similarity index 100% rename from apps/client-ts/src/app/(Dashboard)/api-keys/page.tsx rename to apps/webapp/src/app/(Dashboard)/api-keys/page.tsx diff --git a/apps/client-ts/src/app/(Dashboard)/b2c/profile/page.tsx b/apps/webapp/src/app/(Dashboard)/b2c/profile/page.tsx similarity index 100% rename from apps/client-ts/src/app/(Dashboard)/b2c/profile/page.tsx rename to apps/webapp/src/app/(Dashboard)/b2c/profile/page.tsx diff --git a/apps/client-ts/src/app/(Dashboard)/configuration/page.tsx b/apps/webapp/src/app/(Dashboard)/configuration/page.tsx similarity index 100% rename from apps/client-ts/src/app/(Dashboard)/configuration/page.tsx rename to apps/webapp/src/app/(Dashboard)/configuration/page.tsx diff --git a/apps/client-ts/src/app/(Dashboard)/connections/page.tsx b/apps/webapp/src/app/(Dashboard)/connections/page.tsx similarity index 100% rename from apps/client-ts/src/app/(Dashboard)/connections/page.tsx rename to apps/webapp/src/app/(Dashboard)/connections/page.tsx diff --git a/apps/client-ts/src/app/(Dashboard)/events/page.tsx b/apps/webapp/src/app/(Dashboard)/events/page.tsx similarity index 100% rename from apps/client-ts/src/app/(Dashboard)/events/page.tsx rename to apps/webapp/src/app/(Dashboard)/events/page.tsx diff --git a/apps/client-ts/src/app/(Dashboard)/layout.tsx b/apps/webapp/src/app/(Dashboard)/layout.tsx similarity index 97% rename from apps/client-ts/src/app/(Dashboard)/layout.tsx rename to apps/webapp/src/app/(Dashboard)/layout.tsx index 84449c320..7b765b8cf 100644 --- a/apps/client-ts/src/app/(Dashboard)/layout.tsx +++ b/apps/webapp/src/app/(Dashboard)/layout.tsx @@ -1,5 +1,5 @@ 'use client' -import "./../globals.css"; +import "../globals.css"; import { RootLayout } from "@/components/RootLayout"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; diff --git a/apps/client-ts/src/app/b2c/login/page.tsx b/apps/webapp/src/app/b2c/login/page.tsx similarity index 100% rename from apps/client-ts/src/app/b2c/login/page.tsx rename to apps/webapp/src/app/b2c/login/page.tsx diff --git a/apps/client-ts/src/app/favicon.ico b/apps/webapp/src/app/favicon.ico similarity index 100% rename from apps/client-ts/src/app/favicon.ico rename to apps/webapp/src/app/favicon.ico diff --git a/apps/client-ts/src/app/globals.css b/apps/webapp/src/app/globals.css similarity index 100% rename from apps/client-ts/src/app/globals.css rename to apps/webapp/src/app/globals.css diff --git a/apps/client-ts/src/app/layout.tsx b/apps/webapp/src/app/layout.tsx similarity index 100% rename from apps/client-ts/src/app/layout.tsx rename to apps/webapp/src/app/layout.tsx diff --git a/apps/client-ts/src/components/ApiKeys/columns.tsx b/apps/webapp/src/components/ApiKeys/columns.tsx similarity index 100% rename from apps/client-ts/src/components/ApiKeys/columns.tsx rename to apps/webapp/src/components/ApiKeys/columns.tsx diff --git a/apps/client-ts/src/components/ApiKeys/schema.ts b/apps/webapp/src/components/ApiKeys/schema.ts similarity index 100% rename from apps/client-ts/src/components/ApiKeys/schema.ts rename to apps/webapp/src/components/ApiKeys/schema.ts diff --git a/apps/client-ts/src/components/Auth/CustomLoginComponent/CreateUserForm.tsx b/apps/webapp/src/components/Auth/CustomLoginComponent/CreateUserForm.tsx similarity index 100% rename from apps/client-ts/src/components/Auth/CustomLoginComponent/CreateUserForm.tsx rename to apps/webapp/src/components/Auth/CustomLoginComponent/CreateUserForm.tsx diff --git a/apps/client-ts/src/components/Auth/CustomLoginComponent/LoginUserForm.tsx b/apps/webapp/src/components/Auth/CustomLoginComponent/LoginUserForm.tsx similarity index 100% rename from apps/client-ts/src/components/Auth/CustomLoginComponent/LoginUserForm.tsx rename to apps/webapp/src/components/Auth/CustomLoginComponent/LoginUserForm.tsx diff --git a/apps/client-ts/src/components/Auth/EmailLoginForm.tsx b/apps/webapp/src/components/Auth/EmailLoginForm.tsx similarity index 100% rename from apps/client-ts/src/components/Auth/EmailLoginForm.tsx rename to apps/webapp/src/components/Auth/EmailLoginForm.tsx diff --git a/apps/client-ts/src/components/Auth/SAMLConnectionForm.tsx b/apps/webapp/src/components/Auth/SAMLConnectionForm.tsx similarity index 100% rename from apps/client-ts/src/components/Auth/SAMLConnectionForm.tsx rename to apps/webapp/src/components/Auth/SAMLConnectionForm.tsx diff --git a/apps/client-ts/src/components/Auth/SMSAuthenticateForm.tsx b/apps/webapp/src/components/Auth/SMSAuthenticateForm.tsx similarity index 100% rename from apps/client-ts/src/components/Auth/SMSAuthenticateForm.tsx rename to apps/webapp/src/components/Auth/SMSAuthenticateForm.tsx diff --git a/apps/client-ts/src/components/Auth/SMSSendForm.tsx b/apps/webapp/src/components/Auth/SMSSendForm.tsx similarity index 100% rename from apps/client-ts/src/components/Auth/SMSSendForm.tsx rename to apps/webapp/src/components/Auth/SMSSendForm.tsx diff --git a/apps/client-ts/src/components/Configuration/Catalog/CatalogWidget.tsx b/apps/webapp/src/components/Configuration/Catalog/CatalogWidget.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/Catalog/CatalogWidget.tsx rename to apps/webapp/src/components/Configuration/Catalog/CatalogWidget.tsx diff --git a/apps/client-ts/src/components/Configuration/Catalog/CopySnippet.tsx b/apps/webapp/src/components/Configuration/Catalog/CopySnippet.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/Catalog/CopySnippet.tsx rename to apps/webapp/src/components/Configuration/Catalog/CopySnippet.tsx diff --git a/apps/client-ts/src/components/Configuration/Connector/ConnectorDisplay.tsx b/apps/webapp/src/components/Configuration/Connector/ConnectorDisplay.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/Connector/ConnectorDisplay.tsx rename to apps/webapp/src/components/Configuration/Connector/ConnectorDisplay.tsx diff --git a/apps/client-ts/src/components/Configuration/Connector/ConnectorLayout.tsx b/apps/webapp/src/components/Configuration/Connector/ConnectorLayout.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/Connector/ConnectorLayout.tsx rename to apps/webapp/src/components/Configuration/Connector/ConnectorLayout.tsx diff --git a/apps/client-ts/src/components/Configuration/Connector/ConnectorList.tsx b/apps/webapp/src/components/Configuration/Connector/ConnectorList.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/Connector/ConnectorList.tsx rename to apps/webapp/src/components/Configuration/Connector/ConnectorList.tsx diff --git a/apps/client-ts/src/components/Configuration/Connector/CustomConnectorPage.tsx b/apps/webapp/src/components/Configuration/Connector/CustomConnectorPage.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/Connector/CustomConnectorPage.tsx rename to apps/webapp/src/components/Configuration/Connector/CustomConnectorPage.tsx diff --git a/apps/client-ts/src/components/Configuration/Connector/VerticalSelector.tsx b/apps/webapp/src/components/Configuration/Connector/VerticalSelector.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/Connector/VerticalSelector.tsx rename to apps/webapp/src/components/Configuration/Connector/VerticalSelector.tsx diff --git a/apps/client-ts/src/components/Configuration/Connector/useConnector.tsx b/apps/webapp/src/components/Configuration/Connector/useConnector.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/Connector/useConnector.tsx rename to apps/webapp/src/components/Configuration/Connector/useConnector.tsx diff --git a/apps/client-ts/src/components/Configuration/DragDrop.tsx b/apps/webapp/src/components/Configuration/DragDrop.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/DragDrop.tsx rename to apps/webapp/src/components/Configuration/DragDrop.tsx diff --git a/apps/client-ts/src/components/Configuration/FieldMappings/FieldMappingsTable.tsx b/apps/webapp/src/components/Configuration/FieldMappings/FieldMappingsTable.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/FieldMappings/FieldMappingsTable.tsx rename to apps/webapp/src/components/Configuration/FieldMappings/FieldMappingsTable.tsx diff --git a/apps/client-ts/src/components/Configuration/FieldMappings/Stepper/stepper-form.tsx b/apps/webapp/src/components/Configuration/FieldMappings/Stepper/stepper-form.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/FieldMappings/Stepper/stepper-form.tsx rename to apps/webapp/src/components/Configuration/FieldMappings/Stepper/stepper-form.tsx diff --git a/apps/client-ts/src/components/Configuration/FieldMappings/columns.tsx b/apps/webapp/src/components/Configuration/FieldMappings/columns.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/FieldMappings/columns.tsx rename to apps/webapp/src/components/Configuration/FieldMappings/columns.tsx diff --git a/apps/client-ts/src/components/Configuration/FieldMappings/defineForm.tsx b/apps/webapp/src/components/Configuration/FieldMappings/defineForm.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/FieldMappings/defineForm.tsx rename to apps/webapp/src/components/Configuration/FieldMappings/defineForm.tsx diff --git a/apps/client-ts/src/components/Configuration/FieldMappings/mapForm.tsx b/apps/webapp/src/components/Configuration/FieldMappings/mapForm.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/FieldMappings/mapForm.tsx rename to apps/webapp/src/components/Configuration/FieldMappings/mapForm.tsx diff --git a/apps/client-ts/src/components/Configuration/FieldMappings/schema.ts b/apps/webapp/src/components/Configuration/FieldMappings/schema.ts similarity index 100% rename from apps/client-ts/src/components/Configuration/FieldMappings/schema.ts rename to apps/webapp/src/components/Configuration/FieldMappings/schema.ts diff --git a/apps/client-ts/src/components/Configuration/LinkedUsers/AddLinkedAccount.tsx b/apps/webapp/src/components/Configuration/LinkedUsers/AddLinkedAccount.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/LinkedUsers/AddLinkedAccount.tsx rename to apps/webapp/src/components/Configuration/LinkedUsers/AddLinkedAccount.tsx diff --git a/apps/client-ts/src/components/Configuration/LinkedUsers/LinkedUsersPage.tsx b/apps/webapp/src/components/Configuration/LinkedUsers/LinkedUsersPage.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/LinkedUsers/LinkedUsersPage.tsx rename to apps/webapp/src/components/Configuration/LinkedUsers/LinkedUsersPage.tsx diff --git a/apps/client-ts/src/components/Configuration/LinkedUsers/columns.tsx b/apps/webapp/src/components/Configuration/LinkedUsers/columns.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/LinkedUsers/columns.tsx rename to apps/webapp/src/components/Configuration/LinkedUsers/columns.tsx diff --git a/apps/client-ts/src/components/Configuration/LinkedUsers/schema.ts b/apps/webapp/src/components/Configuration/LinkedUsers/schema.ts similarity index 100% rename from apps/client-ts/src/components/Configuration/LinkedUsers/schema.ts rename to apps/webapp/src/components/Configuration/LinkedUsers/schema.ts diff --git a/apps/client-ts/src/components/Configuration/NavMenu.tsx b/apps/webapp/src/components/Configuration/NavMenu.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/NavMenu.tsx rename to apps/webapp/src/components/Configuration/NavMenu.tsx diff --git a/apps/client-ts/src/components/Configuration/Webhooks/AddWebhook.tsx b/apps/webapp/src/components/Configuration/Webhooks/AddWebhook.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/Webhooks/AddWebhook.tsx rename to apps/webapp/src/components/Configuration/Webhooks/AddWebhook.tsx diff --git a/apps/client-ts/src/components/Configuration/Webhooks/WebhooksPage.tsx b/apps/webapp/src/components/Configuration/Webhooks/WebhooksPage.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/Webhooks/WebhooksPage.tsx rename to apps/webapp/src/components/Configuration/Webhooks/WebhooksPage.tsx diff --git a/apps/client-ts/src/components/Configuration/Webhooks/columns.tsx b/apps/webapp/src/components/Configuration/Webhooks/columns.tsx similarity index 100% rename from apps/client-ts/src/components/Configuration/Webhooks/columns.tsx rename to apps/webapp/src/components/Configuration/Webhooks/columns.tsx diff --git a/apps/client-ts/src/components/Configuration/Webhooks/schema.ts b/apps/webapp/src/components/Configuration/Webhooks/schema.ts similarity index 100% rename from apps/client-ts/src/components/Configuration/Webhooks/schema.ts rename to apps/webapp/src/components/Configuration/Webhooks/schema.ts diff --git a/apps/client-ts/src/components/Connection/AddConnectionButton.tsx b/apps/webapp/src/components/Connection/AddConnectionButton.tsx similarity index 100% rename from apps/client-ts/src/components/Connection/AddConnectionButton.tsx rename to apps/webapp/src/components/Connection/AddConnectionButton.tsx diff --git a/apps/client-ts/src/components/Connection/ConnectionTable.tsx b/apps/webapp/src/components/Connection/ConnectionTable.tsx similarity index 100% rename from apps/client-ts/src/components/Connection/ConnectionTable.tsx rename to apps/webapp/src/components/Connection/ConnectionTable.tsx diff --git a/apps/client-ts/src/components/Connection/CopyLinkInput.tsx b/apps/webapp/src/components/Connection/CopyLinkInput.tsx similarity index 100% rename from apps/client-ts/src/components/Connection/CopyLinkInput.tsx rename to apps/webapp/src/components/Connection/CopyLinkInput.tsx diff --git a/apps/client-ts/src/components/Connection/LoadingSpinner.tsx b/apps/webapp/src/components/Connection/LoadingSpinner.tsx similarity index 100% rename from apps/client-ts/src/components/Connection/LoadingSpinner.tsx rename to apps/webapp/src/components/Connection/LoadingSpinner.tsx diff --git a/apps/client-ts/src/components/Connection/columns.tsx b/apps/webapp/src/components/Connection/columns.tsx similarity index 99% rename from apps/client-ts/src/components/Connection/columns.tsx rename to apps/webapp/src/components/Connection/columns.tsx index eabd1004e..96982c994 100644 --- a/apps/client-ts/src/components/Connection/columns.tsx +++ b/apps/webapp/src/components/Connection/columns.tsx @@ -3,7 +3,7 @@ import { ColumnDef } from "@tanstack/react-table" import { Badge } from "@/components/ui/badge" import { Connection } from "./schema" -import { DataTableColumnHeader } from "./../shared/data-table-column-header" +import { DataTableColumnHeader } from "../shared/data-table-column-header" import React from "react" import { ClipboardIcon } from '@radix-ui/react-icons' import { toast } from "sonner" diff --git a/apps/client-ts/src/components/Connection/schema.ts b/apps/webapp/src/components/Connection/schema.ts similarity index 100% rename from apps/client-ts/src/components/Connection/schema.ts rename to apps/webapp/src/components/Connection/schema.ts diff --git a/apps/client-ts/src/components/Events/EventsTable.tsx b/apps/webapp/src/components/Events/EventsTable.tsx similarity index 100% rename from apps/client-ts/src/components/Events/EventsTable.tsx rename to apps/webapp/src/components/Events/EventsTable.tsx diff --git a/apps/client-ts/src/components/Events/columns.tsx b/apps/webapp/src/components/Events/columns.tsx similarity index 100% rename from apps/client-ts/src/components/Events/columns.tsx rename to apps/webapp/src/components/Events/columns.tsx diff --git a/apps/client-ts/src/components/Events/schema.ts b/apps/webapp/src/components/Events/schema.ts similarity index 100% rename from apps/client-ts/src/components/Events/schema.ts rename to apps/webapp/src/components/Events/schema.ts diff --git a/apps/client-ts/src/components/Nav/main-nav-sm.tsx b/apps/webapp/src/components/Nav/main-nav-sm.tsx similarity index 100% rename from apps/client-ts/src/components/Nav/main-nav-sm.tsx rename to apps/webapp/src/components/Nav/main-nav-sm.tsx diff --git a/apps/client-ts/src/components/Nav/main-nav.tsx b/apps/webapp/src/components/Nav/main-nav.tsx similarity index 100% rename from apps/client-ts/src/components/Nav/main-nav.tsx rename to apps/webapp/src/components/Nav/main-nav.tsx diff --git a/apps/client-ts/src/components/Nav/theme-provider.tsx b/apps/webapp/src/components/Nav/theme-provider.tsx similarity index 100% rename from apps/client-ts/src/components/Nav/theme-provider.tsx rename to apps/webapp/src/components/Nav/theme-provider.tsx diff --git a/apps/client-ts/src/components/Nav/theme-toggle.tsx b/apps/webapp/src/components/Nav/theme-toggle.tsx similarity index 100% rename from apps/client-ts/src/components/Nav/theme-toggle.tsx rename to apps/webapp/src/components/Nav/theme-toggle.tsx diff --git a/apps/client-ts/src/components/Nav/user-nav.tsx b/apps/webapp/src/components/Nav/user-nav.tsx similarity index 100% rename from apps/client-ts/src/components/Nav/user-nav.tsx rename to apps/webapp/src/components/Nav/user-nav.tsx diff --git a/apps/client-ts/src/components/Provider/provider.tsx b/apps/webapp/src/components/Provider/provider.tsx similarity index 100% rename from apps/client-ts/src/components/Provider/provider.tsx rename to apps/webapp/src/components/Provider/provider.tsx diff --git a/apps/client-ts/src/components/RootLayout/index.tsx b/apps/webapp/src/components/RootLayout/index.tsx similarity index 100% rename from apps/client-ts/src/components/RootLayout/index.tsx rename to apps/webapp/src/components/RootLayout/index.tsx diff --git a/apps/client-ts/src/components/shared/api-data-table-pagination.tsx b/apps/webapp/src/components/shared/api-data-table-pagination.tsx similarity index 100% rename from apps/client-ts/src/components/shared/api-data-table-pagination.tsx rename to apps/webapp/src/components/shared/api-data-table-pagination.tsx diff --git a/apps/client-ts/src/components/shared/api-data-table.tsx b/apps/webapp/src/components/shared/api-data-table.tsx similarity index 100% rename from apps/client-ts/src/components/shared/api-data-table.tsx rename to apps/webapp/src/components/shared/api-data-table.tsx diff --git a/apps/client-ts/src/components/shared/custom-heading.tsx b/apps/webapp/src/components/shared/custom-heading.tsx similarity index 100% rename from apps/client-ts/src/components/shared/custom-heading.tsx rename to apps/webapp/src/components/shared/custom-heading.tsx diff --git a/apps/client-ts/src/components/shared/data-table-column-header.tsx b/apps/webapp/src/components/shared/data-table-column-header.tsx similarity index 100% rename from apps/client-ts/src/components/shared/data-table-column-header.tsx rename to apps/webapp/src/components/shared/data-table-column-header.tsx diff --git a/apps/client-ts/src/components/shared/data-table-faceted-filter.tsx b/apps/webapp/src/components/shared/data-table-faceted-filter.tsx similarity index 100% rename from apps/client-ts/src/components/shared/data-table-faceted-filter.tsx rename to apps/webapp/src/components/shared/data-table-faceted-filter.tsx diff --git a/apps/client-ts/src/components/shared/data-table-loading.tsx b/apps/webapp/src/components/shared/data-table-loading.tsx similarity index 100% rename from apps/client-ts/src/components/shared/data-table-loading.tsx rename to apps/webapp/src/components/shared/data-table-loading.tsx diff --git a/apps/client-ts/src/components/shared/data-table-pagination.tsx b/apps/webapp/src/components/shared/data-table-pagination.tsx similarity index 100% rename from apps/client-ts/src/components/shared/data-table-pagination.tsx rename to apps/webapp/src/components/shared/data-table-pagination.tsx diff --git a/apps/client-ts/src/components/shared/data-table-row-actions.tsx b/apps/webapp/src/components/shared/data-table-row-actions.tsx similarity index 100% rename from apps/client-ts/src/components/shared/data-table-row-actions.tsx rename to apps/webapp/src/components/shared/data-table-row-actions.tsx diff --git a/apps/client-ts/src/components/shared/data-table-view-options.tsx b/apps/webapp/src/components/shared/data-table-view-options.tsx similarity index 100% rename from apps/client-ts/src/components/shared/data-table-view-options.tsx rename to apps/webapp/src/components/shared/data-table-view-options.tsx diff --git a/apps/client-ts/src/components/shared/data-table-webhook-scopes.tsx b/apps/webapp/src/components/shared/data-table-webhook-scopes.tsx similarity index 100% rename from apps/client-ts/src/components/shared/data-table-webhook-scopes.tsx rename to apps/webapp/src/components/shared/data-table-webhook-scopes.tsx diff --git a/apps/client-ts/src/components/shared/data-table.tsx b/apps/webapp/src/components/shared/data-table.tsx similarity index 100% rename from apps/client-ts/src/components/shared/data-table.tsx rename to apps/webapp/src/components/shared/data-table.tsx diff --git a/apps/client-ts/src/components/shared/icons.tsx b/apps/webapp/src/components/shared/icons.tsx similarity index 100% rename from apps/client-ts/src/components/shared/icons.tsx rename to apps/webapp/src/components/shared/icons.tsx diff --git a/apps/client-ts/src/components/shared/team-switcher.tsx b/apps/webapp/src/components/shared/team-switcher.tsx similarity index 100% rename from apps/client-ts/src/components/shared/team-switcher.tsx rename to apps/webapp/src/components/shared/team-switcher.tsx diff --git a/apps/client-ts/src/components/ui/avatar.tsx b/apps/webapp/src/components/ui/avatar.tsx similarity index 100% rename from apps/client-ts/src/components/ui/avatar.tsx rename to apps/webapp/src/components/ui/avatar.tsx diff --git a/apps/client-ts/src/components/ui/badge.tsx b/apps/webapp/src/components/ui/badge.tsx similarity index 100% rename from apps/client-ts/src/components/ui/badge.tsx rename to apps/webapp/src/components/ui/badge.tsx diff --git a/apps/client-ts/src/components/ui/button.tsx b/apps/webapp/src/components/ui/button.tsx similarity index 100% rename from apps/client-ts/src/components/ui/button.tsx rename to apps/webapp/src/components/ui/button.tsx diff --git a/apps/client-ts/src/components/ui/button2.tsx b/apps/webapp/src/components/ui/button2.tsx similarity index 100% rename from apps/client-ts/src/components/ui/button2.tsx rename to apps/webapp/src/components/ui/button2.tsx diff --git a/apps/client-ts/src/components/ui/calendar.tsx b/apps/webapp/src/components/ui/calendar.tsx similarity index 100% rename from apps/client-ts/src/components/ui/calendar.tsx rename to apps/webapp/src/components/ui/calendar.tsx diff --git a/apps/client-ts/src/components/ui/card.tsx b/apps/webapp/src/components/ui/card.tsx similarity index 100% rename from apps/client-ts/src/components/ui/card.tsx rename to apps/webapp/src/components/ui/card.tsx diff --git a/apps/client-ts/src/components/ui/checkbox.tsx b/apps/webapp/src/components/ui/checkbox.tsx similarity index 100% rename from apps/client-ts/src/components/ui/checkbox.tsx rename to apps/webapp/src/components/ui/checkbox.tsx diff --git a/apps/client-ts/src/components/ui/command.tsx b/apps/webapp/src/components/ui/command.tsx similarity index 100% rename from apps/client-ts/src/components/ui/command.tsx rename to apps/webapp/src/components/ui/command.tsx diff --git a/apps/client-ts/src/components/ui/dialog.tsx b/apps/webapp/src/components/ui/dialog.tsx similarity index 100% rename from apps/client-ts/src/components/ui/dialog.tsx rename to apps/webapp/src/components/ui/dialog.tsx diff --git a/apps/client-ts/src/components/ui/dropdown-menu.tsx b/apps/webapp/src/components/ui/dropdown-menu.tsx similarity index 100% rename from apps/client-ts/src/components/ui/dropdown-menu.tsx rename to apps/webapp/src/components/ui/dropdown-menu.tsx diff --git a/apps/client-ts/src/components/ui/file-uploader.tsx b/apps/webapp/src/components/ui/file-uploader.tsx similarity index 100% rename from apps/client-ts/src/components/ui/file-uploader.tsx rename to apps/webapp/src/components/ui/file-uploader.tsx diff --git a/apps/client-ts/src/components/ui/form.tsx b/apps/webapp/src/components/ui/form.tsx similarity index 100% rename from apps/client-ts/src/components/ui/form.tsx rename to apps/webapp/src/components/ui/form.tsx diff --git a/apps/client-ts/src/components/ui/heading.tsx b/apps/webapp/src/components/ui/heading.tsx similarity index 100% rename from apps/client-ts/src/components/ui/heading.tsx rename to apps/webapp/src/components/ui/heading.tsx diff --git a/apps/client-ts/src/components/ui/input.tsx b/apps/webapp/src/components/ui/input.tsx similarity index 100% rename from apps/client-ts/src/components/ui/input.tsx rename to apps/webapp/src/components/ui/input.tsx diff --git a/apps/client-ts/src/components/ui/label.tsx b/apps/webapp/src/components/ui/label.tsx similarity index 100% rename from apps/client-ts/src/components/ui/label.tsx rename to apps/webapp/src/components/ui/label.tsx diff --git a/apps/client-ts/src/components/ui/loading-spinner.tsx b/apps/webapp/src/components/ui/loading-spinner.tsx similarity index 100% rename from apps/client-ts/src/components/ui/loading-spinner.tsx rename to apps/webapp/src/components/ui/loading-spinner.tsx diff --git a/apps/client-ts/src/components/ui/navigation-menu.tsx b/apps/webapp/src/components/ui/navigation-menu.tsx similarity index 100% rename from apps/client-ts/src/components/ui/navigation-menu.tsx rename to apps/webapp/src/components/ui/navigation-menu.tsx diff --git a/apps/client-ts/src/components/ui/password-input.tsx b/apps/webapp/src/components/ui/password-input.tsx similarity index 100% rename from apps/client-ts/src/components/ui/password-input.tsx rename to apps/webapp/src/components/ui/password-input.tsx diff --git a/apps/client-ts/src/components/ui/popover.tsx b/apps/webapp/src/components/ui/popover.tsx similarity index 100% rename from apps/client-ts/src/components/ui/popover.tsx rename to apps/webapp/src/components/ui/popover.tsx diff --git a/apps/client-ts/src/components/ui/progress.tsx b/apps/webapp/src/components/ui/progress.tsx similarity index 100% rename from apps/client-ts/src/components/ui/progress.tsx rename to apps/webapp/src/components/ui/progress.tsx diff --git a/apps/client-ts/src/components/ui/resizable.tsx b/apps/webapp/src/components/ui/resizable.tsx similarity index 100% rename from apps/client-ts/src/components/ui/resizable.tsx rename to apps/webapp/src/components/ui/resizable.tsx diff --git a/apps/client-ts/src/components/ui/scroll-area.tsx b/apps/webapp/src/components/ui/scroll-area.tsx similarity index 100% rename from apps/client-ts/src/components/ui/scroll-area.tsx rename to apps/webapp/src/components/ui/scroll-area.tsx diff --git a/apps/client-ts/src/components/ui/scrollbar.tsx b/apps/webapp/src/components/ui/scrollbar.tsx similarity index 100% rename from apps/client-ts/src/components/ui/scrollbar.tsx rename to apps/webapp/src/components/ui/scrollbar.tsx diff --git a/apps/client-ts/src/components/ui/select.tsx b/apps/webapp/src/components/ui/select.tsx similarity index 100% rename from apps/client-ts/src/components/ui/select.tsx rename to apps/webapp/src/components/ui/select.tsx diff --git a/apps/client-ts/src/components/ui/separator.tsx b/apps/webapp/src/components/ui/separator.tsx similarity index 100% rename from apps/client-ts/src/components/ui/separator.tsx rename to apps/webapp/src/components/ui/separator.tsx diff --git a/apps/client-ts/src/components/ui/sheet.tsx b/apps/webapp/src/components/ui/sheet.tsx similarity index 100% rename from apps/client-ts/src/components/ui/sheet.tsx rename to apps/webapp/src/components/ui/sheet.tsx diff --git a/apps/client-ts/src/components/ui/skeleton.tsx b/apps/webapp/src/components/ui/skeleton.tsx similarity index 100% rename from apps/client-ts/src/components/ui/skeleton.tsx rename to apps/webapp/src/components/ui/skeleton.tsx diff --git a/apps/client-ts/src/components/ui/sonner.tsx b/apps/webapp/src/components/ui/sonner.tsx similarity index 100% rename from apps/client-ts/src/components/ui/sonner.tsx rename to apps/webapp/src/components/ui/sonner.tsx diff --git a/apps/client-ts/src/components/ui/stepper/context.tsx b/apps/webapp/src/components/ui/stepper/context.tsx similarity index 100% rename from apps/client-ts/src/components/ui/stepper/context.tsx rename to apps/webapp/src/components/ui/stepper/context.tsx diff --git a/apps/client-ts/src/components/ui/stepper/horizontal-step.tsx b/apps/webapp/src/components/ui/stepper/horizontal-step.tsx similarity index 100% rename from apps/client-ts/src/components/ui/stepper/horizontal-step.tsx rename to apps/webapp/src/components/ui/stepper/horizontal-step.tsx diff --git a/apps/client-ts/src/components/ui/stepper/index.tsx b/apps/webapp/src/components/ui/stepper/index.tsx similarity index 100% rename from apps/client-ts/src/components/ui/stepper/index.tsx rename to apps/webapp/src/components/ui/stepper/index.tsx diff --git a/apps/client-ts/src/components/ui/stepper/step-button-container.tsx b/apps/webapp/src/components/ui/stepper/step-button-container.tsx similarity index 100% rename from apps/client-ts/src/components/ui/stepper/step-button-container.tsx rename to apps/webapp/src/components/ui/stepper/step-button-container.tsx diff --git a/apps/client-ts/src/components/ui/stepper/step-icon.tsx b/apps/webapp/src/components/ui/stepper/step-icon.tsx similarity index 100% rename from apps/client-ts/src/components/ui/stepper/step-icon.tsx rename to apps/webapp/src/components/ui/stepper/step-icon.tsx diff --git a/apps/client-ts/src/components/ui/stepper/step-label.tsx b/apps/webapp/src/components/ui/stepper/step-label.tsx similarity index 100% rename from apps/client-ts/src/components/ui/stepper/step-label.tsx rename to apps/webapp/src/components/ui/stepper/step-label.tsx diff --git a/apps/client-ts/src/components/ui/stepper/step.tsx b/apps/webapp/src/components/ui/stepper/step.tsx similarity index 100% rename from apps/client-ts/src/components/ui/stepper/step.tsx rename to apps/webapp/src/components/ui/stepper/step.tsx diff --git a/apps/client-ts/src/components/ui/stepper/types.ts b/apps/webapp/src/components/ui/stepper/types.ts similarity index 100% rename from apps/client-ts/src/components/ui/stepper/types.ts rename to apps/webapp/src/components/ui/stepper/types.ts diff --git a/apps/client-ts/src/components/ui/stepper/use-media-query.tsx b/apps/webapp/src/components/ui/stepper/use-media-query.tsx similarity index 100% rename from apps/client-ts/src/components/ui/stepper/use-media-query.tsx rename to apps/webapp/src/components/ui/stepper/use-media-query.tsx diff --git a/apps/client-ts/src/components/ui/stepper/use-stepper.ts b/apps/webapp/src/components/ui/stepper/use-stepper.ts similarity index 100% rename from apps/client-ts/src/components/ui/stepper/use-stepper.ts rename to apps/webapp/src/components/ui/stepper/use-stepper.ts diff --git a/apps/client-ts/src/components/ui/stepper/vertical-step.tsx b/apps/webapp/src/components/ui/stepper/vertical-step.tsx similarity index 100% rename from apps/client-ts/src/components/ui/stepper/vertical-step.tsx rename to apps/webapp/src/components/ui/stepper/vertical-step.tsx diff --git a/apps/client-ts/src/components/ui/switch.tsx b/apps/webapp/src/components/ui/switch.tsx similarity index 100% rename from apps/client-ts/src/components/ui/switch.tsx rename to apps/webapp/src/components/ui/switch.tsx diff --git a/apps/client-ts/src/components/ui/table.tsx b/apps/webapp/src/components/ui/table.tsx similarity index 100% rename from apps/client-ts/src/components/ui/table.tsx rename to apps/webapp/src/components/ui/table.tsx diff --git a/apps/client-ts/src/components/ui/tabs.tsx b/apps/webapp/src/components/ui/tabs.tsx similarity index 100% rename from apps/client-ts/src/components/ui/tabs.tsx rename to apps/webapp/src/components/ui/tabs.tsx diff --git a/apps/client-ts/src/components/ui/textarea.tsx b/apps/webapp/src/components/ui/textarea.tsx similarity index 100% rename from apps/client-ts/src/components/ui/textarea.tsx rename to apps/webapp/src/components/ui/textarea.tsx diff --git a/apps/client-ts/src/components/ui/tooltip.tsx b/apps/webapp/src/components/ui/tooltip.tsx similarity index 100% rename from apps/client-ts/src/components/ui/tooltip.tsx rename to apps/webapp/src/components/ui/tooltip.tsx diff --git a/apps/client-ts/src/hooks/create/useCreateApiKey.tsx b/apps/webapp/src/hooks/create/useCreateApiKey.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useCreateApiKey.tsx rename to apps/webapp/src/hooks/create/useCreateApiKey.tsx diff --git a/apps/client-ts/src/hooks/create/useCreateBatchLinkedUser.tsx b/apps/webapp/src/hooks/create/useCreateBatchLinkedUser.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useCreateBatchLinkedUser.tsx rename to apps/webapp/src/hooks/create/useCreateBatchLinkedUser.tsx diff --git a/apps/client-ts/src/hooks/create/useCreateConnectionStrategy.tsx b/apps/webapp/src/hooks/create/useCreateConnectionStrategy.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useCreateConnectionStrategy.tsx rename to apps/webapp/src/hooks/create/useCreateConnectionStrategy.tsx diff --git a/apps/client-ts/src/hooks/create/useCreateLinkedUser.tsx b/apps/webapp/src/hooks/create/useCreateLinkedUser.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useCreateLinkedUser.tsx rename to apps/webapp/src/hooks/create/useCreateLinkedUser.tsx diff --git a/apps/client-ts/src/hooks/create/useCreateLogin.tsx b/apps/webapp/src/hooks/create/useCreateLogin.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useCreateLogin.tsx rename to apps/webapp/src/hooks/create/useCreateLogin.tsx diff --git a/apps/client-ts/src/hooks/create/useCreateMagicLink.tsx b/apps/webapp/src/hooks/create/useCreateMagicLink.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useCreateMagicLink.tsx rename to apps/webapp/src/hooks/create/useCreateMagicLink.tsx diff --git a/apps/client-ts/src/hooks/create/useCreateProfile.tsx b/apps/webapp/src/hooks/create/useCreateProfile.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useCreateProfile.tsx rename to apps/webapp/src/hooks/create/useCreateProfile.tsx diff --git a/apps/client-ts/src/hooks/create/useCreateProject.tsx b/apps/webapp/src/hooks/create/useCreateProject.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useCreateProject.tsx rename to apps/webapp/src/hooks/create/useCreateProject.tsx diff --git a/apps/client-ts/src/hooks/create/useCreateUser.tsx b/apps/webapp/src/hooks/create/useCreateUser.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useCreateUser.tsx rename to apps/webapp/src/hooks/create/useCreateUser.tsx diff --git a/apps/client-ts/src/hooks/create/useCreateWebhook.tsx b/apps/webapp/src/hooks/create/useCreateWebhook.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useCreateWebhook.tsx rename to apps/webapp/src/hooks/create/useCreateWebhook.tsx diff --git a/apps/client-ts/src/hooks/create/useDefineField.tsx b/apps/webapp/src/hooks/create/useDefineField.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useDefineField.tsx rename to apps/webapp/src/hooks/create/useDefineField.tsx diff --git a/apps/client-ts/src/hooks/create/useMapField.tsx b/apps/webapp/src/hooks/create/useMapField.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useMapField.tsx rename to apps/webapp/src/hooks/create/useMapField.tsx diff --git a/apps/client-ts/src/hooks/create/useRefreshAccessToken.tsx b/apps/webapp/src/hooks/create/useRefreshAccessToken.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useRefreshAccessToken.tsx rename to apps/webapp/src/hooks/create/useRefreshAccessToken.tsx diff --git a/apps/client-ts/src/hooks/create/useResync.tsx b/apps/webapp/src/hooks/create/useResync.tsx similarity index 100% rename from apps/client-ts/src/hooks/create/useResync.tsx rename to apps/webapp/src/hooks/create/useResync.tsx diff --git a/apps/client-ts/src/hooks/delete/useDeleteApiKey.tsx b/apps/webapp/src/hooks/delete/useDeleteApiKey.tsx similarity index 100% rename from apps/client-ts/src/hooks/delete/useDeleteApiKey.tsx rename to apps/webapp/src/hooks/delete/useDeleteApiKey.tsx diff --git a/apps/client-ts/src/hooks/delete/useDeleteConnectionStrategy.tsx b/apps/webapp/src/hooks/delete/useDeleteConnectionStrategy.tsx similarity index 100% rename from apps/client-ts/src/hooks/delete/useDeleteConnectionStrategy.tsx rename to apps/webapp/src/hooks/delete/useDeleteConnectionStrategy.tsx diff --git a/apps/client-ts/src/hooks/delete/useDeleteWebhook.tsx b/apps/webapp/src/hooks/delete/useDeleteWebhook.tsx similarity index 100% rename from apps/client-ts/src/hooks/delete/useDeleteWebhook.tsx rename to apps/webapp/src/hooks/delete/useDeleteWebhook.tsx diff --git a/apps/client-ts/src/hooks/get/useApiKeys.tsx b/apps/webapp/src/hooks/get/useApiKeys.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useApiKeys.tsx rename to apps/webapp/src/hooks/get/useApiKeys.tsx diff --git a/apps/client-ts/src/hooks/get/useConnectionStrategies.tsx b/apps/webapp/src/hooks/get/useConnectionStrategies.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useConnectionStrategies.tsx rename to apps/webapp/src/hooks/get/useConnectionStrategies.tsx diff --git a/apps/client-ts/src/hooks/get/useConnectionStrategyAuthCredentials.tsx b/apps/webapp/src/hooks/get/useConnectionStrategyAuthCredentials.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useConnectionStrategyAuthCredentials.tsx rename to apps/webapp/src/hooks/get/useConnectionStrategyAuthCredentials.tsx diff --git a/apps/client-ts/src/hooks/get/useConnections.tsx b/apps/webapp/src/hooks/get/useConnections.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useConnections.tsx rename to apps/webapp/src/hooks/get/useConnections.tsx diff --git a/apps/client-ts/src/hooks/get/useEvents.tsx b/apps/webapp/src/hooks/get/useEvents.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useEvents.tsx rename to apps/webapp/src/hooks/get/useEvents.tsx diff --git a/apps/client-ts/src/hooks/get/useEventsCount.tsx b/apps/webapp/src/hooks/get/useEventsCount.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useEventsCount.tsx rename to apps/webapp/src/hooks/get/useEventsCount.tsx diff --git a/apps/client-ts/src/hooks/get/useFieldMappings.tsx b/apps/webapp/src/hooks/get/useFieldMappings.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useFieldMappings.tsx rename to apps/webapp/src/hooks/get/useFieldMappings.tsx diff --git a/apps/client-ts/src/hooks/get/useLinkedUsers.tsx b/apps/webapp/src/hooks/get/useLinkedUsers.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useLinkedUsers.tsx rename to apps/webapp/src/hooks/get/useLinkedUsers.tsx diff --git a/apps/client-ts/src/hooks/get/useProjectConnectors.tsx b/apps/webapp/src/hooks/get/useProjectConnectors.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useProjectConnectors.tsx rename to apps/webapp/src/hooks/get/useProjectConnectors.tsx diff --git a/apps/client-ts/src/hooks/get/useProjects.tsx b/apps/webapp/src/hooks/get/useProjects.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useProjects.tsx rename to apps/webapp/src/hooks/get/useProjects.tsx diff --git a/apps/client-ts/src/hooks/get/useProviderProperties.tsx b/apps/webapp/src/hooks/get/useProviderProperties.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useProviderProperties.tsx rename to apps/webapp/src/hooks/get/useProviderProperties.tsx diff --git a/apps/client-ts/src/hooks/get/useQueryPagination.tsx b/apps/webapp/src/hooks/get/useQueryPagination.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useQueryPagination.tsx rename to apps/webapp/src/hooks/get/useQueryPagination.tsx diff --git a/apps/client-ts/src/hooks/get/useUser.tsx b/apps/webapp/src/hooks/get/useUser.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useUser.tsx rename to apps/webapp/src/hooks/get/useUser.tsx diff --git a/apps/client-ts/src/hooks/get/useWebhooks.tsx b/apps/webapp/src/hooks/get/useWebhooks.tsx similarity index 100% rename from apps/client-ts/src/hooks/get/useWebhooks.tsx rename to apps/webapp/src/hooks/get/useWebhooks.tsx diff --git a/apps/client-ts/src/hooks/update/useUpdateConnectionStrategy.tsx b/apps/webapp/src/hooks/update/useUpdateConnectionStrategy.tsx similarity index 100% rename from apps/client-ts/src/hooks/update/useUpdateConnectionStrategy.tsx rename to apps/webapp/src/hooks/update/useUpdateConnectionStrategy.tsx diff --git a/apps/client-ts/src/hooks/update/useUpdateProjectConnectors.tsx b/apps/webapp/src/hooks/update/useUpdateProjectConnectors.tsx similarity index 100% rename from apps/client-ts/src/hooks/update/useUpdateProjectConnectors.tsx rename to apps/webapp/src/hooks/update/useUpdateProjectConnectors.tsx diff --git a/apps/client-ts/src/hooks/update/useUpdateWebhookStatus.tsx b/apps/webapp/src/hooks/update/useUpdateWebhookStatus.tsx similarity index 100% rename from apps/client-ts/src/hooks/update/useUpdateWebhookStatus.tsx rename to apps/webapp/src/hooks/update/useUpdateWebhookStatus.tsx diff --git a/apps/client-ts/src/hooks/use-callback-ref.ts b/apps/webapp/src/hooks/use-callback-ref.ts similarity index 100% rename from apps/client-ts/src/hooks/use-callback-ref.ts rename to apps/webapp/src/hooks/use-callback-ref.ts diff --git a/apps/client-ts/src/hooks/use-controllable-state.ts b/apps/webapp/src/hooks/use-controllable-state.ts similarity index 100% rename from apps/client-ts/src/hooks/use-controllable-state.ts rename to apps/webapp/src/hooks/use-controllable-state.ts diff --git a/apps/client-ts/src/lib/config.ts b/apps/webapp/src/lib/config.ts similarity index 85% rename from apps/client-ts/src/lib/config.ts rename to apps/webapp/src/lib/config.ts index 294a3e6a3..abf350b1b 100644 --- a/apps/client-ts/src/lib/config.ts +++ b/apps/webapp/src/lib/config.ts @@ -4,7 +4,6 @@ const config = { POSTHOG_HOST: process.env.NEXT_PUBLIC_POSTHOG_HOST, POSTHOG_KEY: process.env.NEXT_PUBLIC_POSTHOG_KEY, DISTRIBUTION: process.env.NEXT_PUBLIC_DISTRIBUTION, - STYTCH_TOKEN: process.env.NEXT_PUBLIC_STYTCH_TOKEN }; export default config; diff --git a/apps/client-ts/src/lib/types.ts b/apps/webapp/src/lib/types.ts similarity index 100% rename from apps/client-ts/src/lib/types.ts rename to apps/webapp/src/lib/types.ts diff --git a/apps/client-ts/src/lib/utils.ts b/apps/webapp/src/lib/utils.ts similarity index 100% rename from apps/client-ts/src/lib/utils.ts rename to apps/webapp/src/lib/utils.ts diff --git a/apps/client-ts/src/state/magicLinkStore.ts b/apps/webapp/src/state/magicLinkStore.ts similarity index 100% rename from apps/client-ts/src/state/magicLinkStore.ts rename to apps/webapp/src/state/magicLinkStore.ts diff --git a/apps/client-ts/src/state/organisationStore.ts b/apps/webapp/src/state/organisationStore.ts similarity index 100% rename from apps/client-ts/src/state/organisationStore.ts rename to apps/webapp/src/state/organisationStore.ts diff --git a/apps/client-ts/src/state/profileStore.ts b/apps/webapp/src/state/profileStore.ts similarity index 100% rename from apps/client-ts/src/state/profileStore.ts rename to apps/webapp/src/state/profileStore.ts diff --git a/apps/client-ts/src/state/projectStore.ts b/apps/webapp/src/state/projectStore.ts similarity index 100% rename from apps/client-ts/src/state/projectStore.ts rename to apps/webapp/src/state/projectStore.ts diff --git a/apps/client-ts/src/state/sessionStore.ts b/apps/webapp/src/state/sessionStore.ts similarity index 100% rename from apps/client-ts/src/state/sessionStore.ts rename to apps/webapp/src/state/sessionStore.ts diff --git a/apps/client-ts/src/state/verticalStore.ts b/apps/webapp/src/state/verticalStore.ts similarity index 100% rename from apps/client-ts/src/state/verticalStore.ts rename to apps/webapp/src/state/verticalStore.ts diff --git a/apps/client-ts/tailwind.config.ts b/apps/webapp/tailwind.config.ts similarity index 100% rename from apps/client-ts/tailwind.config.ts rename to apps/webapp/tailwind.config.ts diff --git a/apps/client-ts/tsconfig.json b/apps/webapp/tsconfig.json similarity index 100% rename from apps/client-ts/tsconfig.json rename to apps/webapp/tsconfig.json diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index fa0e3e0f3..0341c7383 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -34,6 +34,7 @@ services: DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB}?ssl=false DISTRIBUTION: ${DISTRIBUTION} WEBHOOK_INGRESS: ${WEBHOOK_INGRESS} + REDIRECT_TUNNEL_INGRESS: ${REDIRECT_TUNNEL_INGRESS} JWT_SECRET: ${JWT_SECRET} SENTRY_ENABLED: ${SENTRY_ENABLED} SENTRY_DSN: ${SENTRY_DSN} @@ -196,11 +197,10 @@ services: webapp-nextjs: build: - dockerfile: ./apps/client-ts/Dockerfile.dev + dockerfile: ./apps/webapp/Dockerfile.dev context: ./ args: VITE_BACKEND_DOMAIN: ${NEXT_PUBLIC_BACKEND_DOMAIN} - VITE_FRONTEND_DOMAIN: ${NEXT_PUBLIC_MAGIC_LINK_DOMAIN} environment: NEXT_PUBLIC_DISTRIBUTION: ${DISTRIBUTION} NEXT_PUBLIC_BACKEND_DOMAIN: ${NEXT_PUBLIC_BACKEND_DOMAIN} diff --git a/docker-compose.source.yml b/docker-compose.source.yml index 446dd49fb..3d21e7b8a 100644 --- a/docker-compose.source.yml +++ b/docker-compose.source.yml @@ -35,6 +35,7 @@ services: DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB}?ssl=false DISTRIBUTION: ${DISTRIBUTION} WEBHOOK_INGRESS: ${WEBHOOK_INGRESS} + REDIRECT_TUNNEL_INGRESS: ${REDIRECT_TUNNEL_INGRESS} JWT_SECRET: ${JWT_SECRET} SENTRY_ENABLED: ${SENTRY_ENABLED} SENTRY_DSN: ${SENTRY_DSN} @@ -196,7 +197,7 @@ services: webapp-next: build: - dockerfile: ./apps/client-ts/Dockerfile + dockerfile: ./apps/webapp/Dockerfile context: ./ args: NEXT_PUBLIC_DISTRIBUTION: ${DISTRIBUTION} @@ -228,6 +229,24 @@ services: networks: - backend - frontend + + ngrok: + image: ngrok/ngrok:latest + restart: always + command: + - "start" + - "--all" + - "--config" + - "/etc/ngrok.yml" + volumes: + - ./ngrok.yml:/etc/ngrok.yml + ports: + - 4040:4040 + depends_on: + api: + condition: service_healthy + network_mode: "host" + networks: frontend: backend: \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 54c18116a..7e580085f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,6 +29,7 @@ services: DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB}?ssl=false DISTRIBUTION: ${DISTRIBUTION} WEBHOOK_INGRESS: ${WEBHOOK_INGRESS} + REDIRECT_TUNNEL_INGRESS: ${REDIRECT_TUNNEL_INGRESS} JWT_SECRET: ${JWT_SECRET} SENTRY_ENABLED: ${SENTRY_ENABLED} SENTRY_DSN: ${SENTRY_DSN} @@ -162,12 +163,12 @@ services: condition: service_healthy networks: - backend - # healthcheck: - # test: ["CMD-SHELL", "curl", "-f", "http://localhost:3000/health"] - # start_period: 60s - # interval: 10s - # timeout: 1s - # retries: 50 + healthcheck: + test: ["CMD-SHELL", "curl", "-f", "http://localhost:3000/health"] + start_period: 60s + interval: 10s + timeout: 1s + retries: 50 redis: image: valkey/valkey:7.2-alpine @@ -215,6 +216,20 @@ services: networks: - backend - frontend + + ngrok: + image: ngrok/ngrok:latest + restart: always + command: + - "start" + - "--all" + - "--config" + - "/etc/ngrok.yml" + volumes: + - ./ngrok.yml:/etc/ngrok.yml + ports: + - 4040:4040 + network_mode: "host" networks: frontend: diff --git a/docs/mint.json b/docs/mint.json index 4cdd81eed..cf7bce06d 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -59,7 +59,7 @@ }, "tabs": [ { - "name": "CRM", + "name": "Crm", "url": "crm" }, { @@ -171,7 +171,7 @@ "group": "Unified Objects", "pages": [ { - "group": "CRM", + "group": "Crm", "pages": [ { "group": "Contact", diff --git a/docs/open-source/self-host-guide.mdx b/docs/open-source/self-host-guide.mdx index 4af4413c3..9c7dceeb9 100644 --- a/docs/open-source/self-host-guide.mdx +++ b/docs/open-source/self-host-guide.mdx @@ -59,9 +59,9 @@ The backend runs on `http://localhost:3000` - + -Visit our [guide here](/core-concepts/auth) for more details. +Visit our [guide here](/quick-start) for more details. diff --git a/docs/quick-start.mdx b/docs/quick-start.mdx index 93df37f09..206a30410 100644 --- a/docs/quick-start.mdx +++ b/docs/quick-start.mdx @@ -128,7 +128,7 @@ Once the user successfully completes the granting auth flow, the connection will You can find the Typescript SDK on NPM [here](https://www.npmjs.com/package/@panora/sdk-typescript) - In this example, we will create a contact in a CRM. Visit other sections of the [documentation](/ticketing/try) to find category-specific examples. + In this example, we will create a contact in a CRM. Visit other sections of the [documentation](/api-reference/introduction) to find category-specific examples. ```javascript TypeScript import { PanoraSDK } from '@panora/sdk-typescript'; diff --git a/docs/recipes/catch-connection-token.mdx b/docs/recipes/catch-connection-token.mdx index 897f6a96c..dc8f37c83 100644 --- a/docs/recipes/catch-connection-token.mdx +++ b/docs/recipes/catch-connection-token.mdx @@ -76,7 +76,7 @@ It is a field of the [Connection Object](/glossary/connection-object) that Panor ``` - If you log `event.data`, you'll be able to check that it is a [Connetion Object](/glossary/connection-object). Hence, it contains an `id_linked_user`(more info [here](/glossary/linked-account-object)) which is helpful to attach it to your own end-user on your backend/db systems. + If you log `event.data`, you'll be able to check that it is a [Connection Object](/glossary/connection-object). Hence, it contains an `id_linked_user`(more info [here](/glossary/linked-account-object)) which is helpful to attach it to your own end-user on your backend/db systems. Register the webhook endpoint’s accessible URL using the _Webhooks_ [section](https://dashboard.panora.dev/configuration) or the API so Panora knows where to deliver events.
diff --git a/docs/webhooks/events/event-types.mdx b/docs/webhooks/events/event-types.mdx index 6d67e7333..094d9a444 100644 --- a/docs/webhooks/events/event-types.mdx +++ b/docs/webhooks/events/event-types.mdx @@ -4,7 +4,7 @@ description: "List of Event Types." --- Find down here all the types of events we currently send. We may add more at any time, so in developing and maintaining your code, you should not assume that only these types exist. -You’ll notice that these events follow a pattern: resource.event. Our goal is to design a consistent system that makes things easier to anticipate and code against. +You'll notice that these events follow a pattern: resource.event. Our goal is to design a consistent system that makes things easier to anticipate and code against. @@ -152,5 +152,75 @@ You’ll notice that these events follow a pattern: resource.event. Our goal is Occurs whenever a team has been deleted in a Ticketing software. The **data** field is a [`Ticketing Team`](/ticketing/teams/overview) + + Occurs whenever a drive has been pulled from a file storage. The **data** field is a [`File Storage Drive`](/filestorage/drives/overview) + + + Occurs whenever a file has been pulled from a file storage. The **data** field is a [`File Storage File`](/filestorage/files/overview) + + + Occurs whenever a folder has been pulled from a file storage. The **data** field is a [`File Storage Folder`](/filestorage/folders/overview) + + + Occurs whenever a group has been pulled from a file storage. The **data** field is a [`File Storage Group`](/filestorage/groups/overview) + + + Occurs whenever a user has been pulled from a file storage. The **data** field is a [`File Storage User`](/filestorage/users/overview) + + + + Occurs whenever an activity has been pulled from an ATS. The **data** field is a [`ATS Activity`](/ats/activities/overview) + + + Occurs whenever an application has been pulled from an ATS. The **data** field is a [`ATS Application`](/ats/applications/overview) + + + Occurs whenever an application has been created in an ATS. The **data** field is a [`ATS Application`](/ats/applications/overview) + + + Occurs whenever an attachment has been pulled from an ATS. The **data** field is a [`ATS Attachment`](/ats/attachments/overview) + + + Occurs whenever an attachment has been created in an ATS. The **data** field is a [`ATS Attachment`](/ats/attachments/overview) + + + Occurs whenever a candidate has been pulled from an ATS. The **data** field is a [`ATS Candidate`](/ats/candidates/overview) + + + Occurs whenever a candidate has been created in an ATS. The **data** field is a [`ATS Candidate`](/ats/candidates/overview) + + + Occurs whenever a department has been pulled from an ATS. The **data** field is a [`ATS Department`](/ats/departments/overview) + + + Occurs whenever EEOC data has been pulled from an ATS. The **data** field is a [`ATS EEOC`](/ats/eeocs/overview) + + + Occurs whenever an interview has been pulled from an ATS. The **data** field is a [`ATS Interview`](/ats/interviews/overview) + + + Occurs whenever a job has been pulled from an ATS. The **data** field is a [`ATS Job`](/ats/jobs/overview) + + + Occurs whenever a job interview stage has been pulled from an ATS. The **data** field is a [`ATS Job Interview Stage`](/ats/jobinterviewstages/overview) + + + Occurs whenever an offer has been pulled from an ATS. The **data** field is a [`ATS Offer`](/ats/offers/overview) + + + Occurs whenever an offer has been created in an ATS. The **data** field is a [`ATS Offer`](/ats/offers/overview) + + + Occurs whenever an office has been pulled from an ATS. The **data** field is a [`ATS Office`](/ats/offices/overview) + + + Occurs whenever a reject reason has been pulled from an ATS. The **data** field is a [`ATS Reject Reason`](/ats/rejectreasons/overview) + + + Occurs whenever a scorecard has been pulled from an ATS. The **data** field is a [`ATS Scorecard`](/ats/scorecards/overview) + + + Occurs whenever a tag has been pulled from an ATS. The **data** field is a [`ATS Tag`](/ats/tags/overview) + - + \ No newline at end of file diff --git a/ngrok.yml.example b/ngrok.yml.example index ac0839d96..1f4547afb 100644 --- a/ngrok.yml.example +++ b/ngrok.yml.example @@ -1,5 +1,5 @@ version: 2 -authtoken: AUTH_TOKEN +authtoken: AUTH_TOKEN # Grab your auth token here (https://dashboard.ngrok.com/get-started/your-authtoken) log_level: debug log: stdout @@ -7,5 +7,5 @@ tunnels: api-tunnel: proto: http addr: 3000 - domain: DOMAIN + domain: DOMAIN # Grab your domain here (https://dashboard.ngrok.com/cloud-edge/domains) diff --git a/packages/api/src/@core/@core-services/environment/environment.service.ts b/packages/api/src/@core/@core-services/environment/environment.service.ts index d28cbf1cf..8982198ce 100644 --- a/packages/api/src/@core/@core-services/environment/environment.service.ts +++ b/packages/api/src/@core/@core-services/environment/environment.service.ts @@ -23,6 +23,9 @@ export class EnvironmentService { getWebhookIngress(): string { return this.configService.get('WEBHOOK_INGRESS'); } + getTunnelIngress(): string { + return this.configService.get('REDIRECT_TUNNEL_INGRESS'); + } getSentryDsn(): string { return this.configService.get('SENTRY_DSN'); } diff --git a/packages/api/src/@core/@core-services/webhooks/panora-webhooks/webhook.processor.ts b/packages/api/src/@core/@core-services/webhooks/panora-webhooks/webhook.processor.ts index a6c5f2f40..9680b98e0 100644 --- a/packages/api/src/@core/@core-services/webhooks/panora-webhooks/webhook.processor.ts +++ b/packages/api/src/@core/@core-services/webhooks/panora-webhooks/webhook.processor.ts @@ -44,6 +44,12 @@ export class WebhookProcessor { webhooks_payloads: true, }, }); + + const event = await this.prisma.events.findUnique({ + where: { + id_event: deliveryAttempt.id_event + } + }) // Check if the endpoint is active if (deliveryAttempt.webhook_endpoints.active) { @@ -54,6 +60,7 @@ export class WebhookProcessor { { id_event: deliveryAttempt.id_event, data: deliveryAttempt.webhooks_payloads.data, + type: event.type }, { headers: { diff --git a/packages/api/src/@core/auth/auth.service.ts b/packages/api/src/@core/auth/auth.service.ts index 9d5fa4ed1..8e679fb32 100644 --- a/packages/api/src/@core/auth/auth.service.ts +++ b/packages/api/src/@core/auth/auth.service.ts @@ -270,6 +270,26 @@ export class AuthService { }); } catch (error) { throw error; + } + } + + async getProjectIdForApiKey(apiKey: string) { + try{ + // Decode the JWT to verify if it's valid and get the payload + const decoded = this.jwtService.verify(apiKey, { + secret: process.env.JWT_SECRET, + }); + + //const hashed_api_key = this.hashApiKey(apiKey); + const saved_api_key = await this.prisma.api_keys.findUnique({ + where: { + api_key_hash: apiKey, + }, + }); + + return saved_api_key.id_project; + }catch(error){ + throw error; } } diff --git a/packages/api/src/@core/auth/strategies/auth-header-api-key.strategy.ts b/packages/api/src/@core/auth/strategies/auth-header-api-key.strategy.ts index c42b6e6cb..d42dbc9ff 100644 --- a/packages/api/src/@core/auth/strategies/auth-header-api-key.strategy.ts +++ b/packages/api/src/@core/auth/strategies/auth-header-api-key.strategy.ts @@ -18,9 +18,10 @@ export class ApiKeyStrategy extends PassportStrategy( if (!isValid) { return done(new UnauthorizedException('Invalid API Key'), null); } + const projectId = await this.authService.getProjectIdForApiKey(apikey); //console.log('validating api request... : ' + req.user); // If the API key is valid, attach the user to the request object - req.user = { ...req.user, apiKeyValidated: true }; + req.user = { ...req.user, projectId: projectId, apiKeyValidated: true }; // If valid, we now have the user info from the API key validation process return done(null, req.user); diff --git a/packages/api/src/@core/connections/accounting/services/accounting.connection.service.ts b/packages/api/src/@core/connections/accounting/services/accounting.connection.service.ts index 813a6087e..8870f0369 100644 --- a/packages/api/src/@core/connections/accounting/services/accounting.connection.service.ts +++ b/packages/api/src/@core/connections/accounting/services/accounting.connection.service.ts @@ -66,7 +66,7 @@ export class AccountingConnectionsService implements IConnectionCategory { }, }); //directly send the webhook - await this.webhook.deliverWebhook( + await this.webhook.dispatchWebhook( data, 'connection.created', callbackOpts.projectId, diff --git a/packages/api/src/@core/connections/accounting/services/freshbooks/freshbooks.service.ts b/packages/api/src/@core/connections/accounting/services/freshbooks/freshbooks.service.ts index 3977ebce0..29d1b6885 100644 --- a/packages/api/src/@core/connections/accounting/services/freshbooks/freshbooks.service.ts +++ b/packages/api/src/@core/connections/accounting/services/freshbooks/freshbooks.service.ts @@ -65,7 +65,7 @@ export class FreshbooksConnectionService const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; const CREDENTIALS = (await this.cService.getCredentials( diff --git a/packages/api/src/@core/connections/accounting/services/pennylane/pennylane.service.ts b/packages/api/src/@core/connections/accounting/services/pennylane/pennylane.service.ts index 093e27d32..8d7419d6b 100644 --- a/packages/api/src/@core/connections/accounting/services/pennylane/pennylane.service.ts +++ b/packages/api/src/@core/connections/accounting/services/pennylane/pennylane.service.ts @@ -64,7 +64,7 @@ export class PennylaneConnectionService const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; const CREDENTIALS = (await this.cService.getCredentials( diff --git a/packages/api/src/@core/connections/ats/services/ats.connection.service.ts b/packages/api/src/@core/connections/ats/services/ats.connection.service.ts index 444e43038..f4de86a44 100644 --- a/packages/api/src/@core/connections/ats/services/ats.connection.service.ts +++ b/packages/api/src/@core/connections/ats/services/ats.connection.service.ts @@ -66,7 +66,7 @@ export class AtsConnectionsService implements IConnectionCategory { }, }); //directly send the webhook - await this.webhook.deliverWebhook( + await this.webhook.dispatchWebhook( data, 'connection.created', callbackOpts.projectId, diff --git a/packages/api/src/@core/connections/ats/services/bamboohr/bamboohr.service.ts b/packages/api/src/@core/connections/ats/services/bamboohr/bamboohr.service.ts index 9461d8ba9..c38666ef4 100644 --- a/packages/api/src/@core/connections/ats/services/bamboohr/bamboohr.service.ts +++ b/packages/api/src/@core/connections/ats/services/bamboohr/bamboohr.service.ts @@ -58,7 +58,7 @@ export class BamboohrConnectionService implements IAtsConnectionService { //reconstruct the redirect URI that was passed in the githubend it must be the same const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/ats/services/greenhouse/greenhouse.service.ts b/packages/api/src/@core/connections/ats/services/greenhouse/greenhouse.service.ts index 70826d01d..946c2fc2b 100644 --- a/packages/api/src/@core/connections/ats/services/greenhouse/greenhouse.service.ts +++ b/packages/api/src/@core/connections/ats/services/greenhouse/greenhouse.service.ts @@ -63,7 +63,7 @@ export class GreenhouseConnectionService implements IAtsConnectionService { const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; const CREDENTIALS = (await this.cService.getCredentials( diff --git a/packages/api/src/@core/connections/ats/services/jobadder/jobadder.service.ts b/packages/api/src/@core/connections/ats/services/jobadder/jobadder.service.ts index 78f9513c6..2c75d0f93 100644 --- a/packages/api/src/@core/connections/ats/services/jobadder/jobadder.service.ts +++ b/packages/api/src/@core/connections/ats/services/jobadder/jobadder.service.ts @@ -63,7 +63,7 @@ export class JobadderConnectionService implements IAtsConnectionService { const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; const CREDENTIALS = (await this.cService.getCredentials( diff --git a/packages/api/src/@core/connections/ats/services/lever/lever.service.ts b/packages/api/src/@core/connections/ats/services/lever/lever.service.ts index 05317e52d..8defbfe83 100644 --- a/packages/api/src/@core/connections/ats/services/lever/lever.service.ts +++ b/packages/api/src/@core/connections/ats/services/lever/lever.service.ts @@ -61,7 +61,7 @@ export class LeverConnectionService implements IAtsConnectionService { const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; const CREDENTIALS = (await this.cService.getCredentials( diff --git a/packages/api/src/@core/connections/crm/services/crm.connection.service.ts b/packages/api/src/@core/connections/crm/services/crm.connection.service.ts index 24da89f42..21dea2d84 100644 --- a/packages/api/src/@core/connections/crm/services/crm.connection.service.ts +++ b/packages/api/src/@core/connections/crm/services/crm.connection.service.ts @@ -53,7 +53,7 @@ export class CrmConnectionsService implements IConnectionCategory { }, }); //directly send the webhook - await this.webhook.deliverWebhook( + await this.webhook.dispatchWebhook( data, 'connection.created', callbackOpts.projectId, diff --git a/packages/api/src/@core/connections/crm/services/hubspot/hubspot.service.ts b/packages/api/src/@core/connections/crm/services/hubspot/hubspot.service.ts index acbed393c..bb948884e 100644 --- a/packages/api/src/@core/connections/crm/services/hubspot/hubspot.service.ts +++ b/packages/api/src/@core/connections/crm/services/hubspot/hubspot.service.ts @@ -58,7 +58,7 @@ export class HubspotConnectionService implements ICrmConnectionService { //reconstruct the redirect URI that was passed in the frontend it must be the same const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/crm/services/pipedrive/pipedrive.service.ts b/packages/api/src/@core/connections/crm/services/pipedrive/pipedrive.service.ts index b431eab9a..6456a78b2 100644 --- a/packages/api/src/@core/connections/crm/services/pipedrive/pipedrive.service.ts +++ b/packages/api/src/@core/connections/crm/services/pipedrive/pipedrive.service.ts @@ -60,7 +60,7 @@ export class PipedriveConnectionService implements ICrmConnectionService { //reconstruct the redirect URI that was passed in the frontend it must be the same const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; const CREDENTIALS = (await this.cService.getCredentials( @@ -147,7 +147,7 @@ export class PipedriveConnectionService implements ICrmConnectionService { const { connectionId, refreshToken, projectId } = opts; const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; const CREDENTIALS = (await this.cService.getCredentials( diff --git a/packages/api/src/@core/connections/crm/services/wealthbox/wealthbox.service.ts b/packages/api/src/@core/connections/crm/services/wealthbox/wealthbox.service.ts index 7663a8ca9..ec82f7cf9 100644 --- a/packages/api/src/@core/connections/crm/services/wealthbox/wealthbox.service.ts +++ b/packages/api/src/@core/connections/crm/services/wealthbox/wealthbox.service.ts @@ -61,7 +61,7 @@ export class WealthboxConnectionService implements ICrmConnectionService { //reconstruct the redirect URI that was passed in the frontend it must be the same const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/filestorage/services/dropbox/dropbox.service.ts b/packages/api/src/@core/connections/filestorage/services/dropbox/dropbox.service.ts index 0b62e1f3f..2c2c7f553 100644 --- a/packages/api/src/@core/connections/filestorage/services/dropbox/dropbox.service.ts +++ b/packages/api/src/@core/connections/filestorage/services/dropbox/dropbox.service.ts @@ -154,7 +154,7 @@ export class DropboxConnectionService implements IFilestorageConnectionService { const { connectionId, refreshToken, projectId } = opts; const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/filestorage/services/filestorage.connection.service.ts b/packages/api/src/@core/connections/filestorage/services/filestorage.connection.service.ts index d88445993..3598f5e16 100644 --- a/packages/api/src/@core/connections/filestorage/services/filestorage.connection.service.ts +++ b/packages/api/src/@core/connections/filestorage/services/filestorage.connection.service.ts @@ -67,7 +67,7 @@ export class FilestorageConnectionsService implements IConnectionCategory { }, }); //directly send the webhook - await this.webhook.deliverWebhook( + await this.webhook.dispatchWebhook( data, 'connection.created', callbackOpts.projectId, diff --git a/packages/api/src/@core/connections/filestorage/services/sharepoint/sharepoint.service.ts b/packages/api/src/@core/connections/filestorage/services/sharepoint/sharepoint.service.ts index 75acddd83..5b858d919 100644 --- a/packages/api/src/@core/connections/filestorage/services/sharepoint/sharepoint.service.ts +++ b/packages/api/src/@core/connections/filestorage/services/sharepoint/sharepoint.service.ts @@ -74,7 +74,7 @@ export class SharepointConnectionService const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; @@ -166,7 +166,7 @@ export class SharepointConnectionService const { connectionId, refreshToken, projectId } = opts; const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/hris/services/bamboohr/bamboohr.service.ts b/packages/api/src/@core/connections/hris/services/bamboohr/bamboohr.service.ts index 96f2c3a69..4a3f96b94 100644 --- a/packages/api/src/@core/connections/hris/services/bamboohr/bamboohr.service.ts +++ b/packages/api/src/@core/connections/hris/services/bamboohr/bamboohr.service.ts @@ -58,7 +58,7 @@ export class BamboohrConnectionService implements IHrisConnectionService { //reconstruct the redirect URI that was passed in the githubend it must be the same const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/hris/services/deel/deel.service.ts b/packages/api/src/@core/connections/hris/services/deel/deel.service.ts index cfd483553..2b230f55a 100644 --- a/packages/api/src/@core/connections/hris/services/deel/deel.service.ts +++ b/packages/api/src/@core/connections/hris/services/deel/deel.service.ts @@ -68,7 +68,7 @@ export class DeelConnectionService implements IHrisConnectionService { //reconstruct the redirect URI that was passed in the githubend it must be the same const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; @@ -158,7 +158,7 @@ export class DeelConnectionService implements IHrisConnectionService { const { connectionId, refreshToken, projectId } = opts; const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/hris/services/factorial/factorial.service.ts b/packages/api/src/@core/connections/hris/services/factorial/factorial.service.ts index 2064cf8c8..edb905bc8 100644 --- a/packages/api/src/@core/connections/hris/services/factorial/factorial.service.ts +++ b/packages/api/src/@core/connections/hris/services/factorial/factorial.service.ts @@ -68,7 +68,7 @@ export class FactorialConnectionService implements IHrisConnectionService { //reconstruct the redirect URI that was passed in the githubend it must be the same const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; @@ -159,7 +159,7 @@ export class FactorialConnectionService implements IHrisConnectionService { const { connectionId, refreshToken, projectId } = opts; const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; const CREDENTIALS = (await this.cService.getCredentials( diff --git a/packages/api/src/@core/connections/hris/services/gusto/gusto.service.ts b/packages/api/src/@core/connections/hris/services/gusto/gusto.service.ts index 0173804c4..abfa6078f 100644 --- a/packages/api/src/@core/connections/hris/services/gusto/gusto.service.ts +++ b/packages/api/src/@core/connections/hris/services/gusto/gusto.service.ts @@ -152,7 +152,7 @@ export class GustoConnectionService implements IHrisConnectionService { const { connectionId, refreshToken, projectId } = opts; const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/hris/services/hris.connection.service.ts b/packages/api/src/@core/connections/hris/services/hris.connection.service.ts index 8c66a6405..017201e18 100644 --- a/packages/api/src/@core/connections/hris/services/hris.connection.service.ts +++ b/packages/api/src/@core/connections/hris/services/hris.connection.service.ts @@ -67,7 +67,7 @@ export class HrisConnectionsService implements IConnectionCategory { }, }); //directly send the webhook - await this.webhook.deliverWebhook( + await this.webhook.dispatchWebhook( data, 'connection.created', callbackOpts.projectId, diff --git a/packages/api/src/@core/connections/hris/services/payfit/payfit.service.ts b/packages/api/src/@core/connections/hris/services/payfit/payfit.service.ts index 7090590c3..2be3fa6c1 100644 --- a/packages/api/src/@core/connections/hris/services/payfit/payfit.service.ts +++ b/packages/api/src/@core/connections/hris/services/payfit/payfit.service.ts @@ -68,7 +68,7 @@ export class PayfitConnectionService implements IHrisConnectionService { //reconstruct the redirect URI that was passed in the githubend it must be the same const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/hris/services/rippling/rippling.service.ts b/packages/api/src/@core/connections/hris/services/rippling/rippling.service.ts index aae565ad4..3e4cf0c66 100644 --- a/packages/api/src/@core/connections/hris/services/rippling/rippling.service.ts +++ b/packages/api/src/@core/connections/hris/services/rippling/rippling.service.ts @@ -68,7 +68,7 @@ export class RipplingConnectionService implements IHrisConnectionService { //reconstruct the redirect URI that was passed in the githubend it must be the same const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/management/services/management.connection.service.ts b/packages/api/src/@core/connections/management/services/management.connection.service.ts index 0daef8bce..b4b98bf2b 100644 --- a/packages/api/src/@core/connections/management/services/management.connection.service.ts +++ b/packages/api/src/@core/connections/management/services/management.connection.service.ts @@ -66,7 +66,7 @@ export class ManagementConnectionsService implements IConnectionCategory { }, }); //directly send the webhook - await this.webhook.deliverWebhook( + await this.webhook.dispatchWebhook( data, 'connection.created', callbackOpts.projectId, diff --git a/packages/api/src/@core/connections/marketingautomation/services/marketingautomation.connection.service.ts b/packages/api/src/@core/connections/marketingautomation/services/marketingautomation.connection.service.ts index 92220414c..9ef1f1125 100644 --- a/packages/api/src/@core/connections/marketingautomation/services/marketingautomation.connection.service.ts +++ b/packages/api/src/@core/connections/marketingautomation/services/marketingautomation.connection.service.ts @@ -71,7 +71,7 @@ export class MarketingAutomationConnectionsService }, }); //directly send the webhook - await this.webhook.deliverWebhook( + await this.webhook.dispatchWebhook( data, 'connection.created', callbackOpts.projectId, diff --git a/packages/api/src/@core/connections/ticketing/services/aha/aha.service.ts b/packages/api/src/@core/connections/ticketing/services/aha/aha.service.ts index 4928a3f6f..457c77a87 100644 --- a/packages/api/src/@core/connections/ticketing/services/aha/aha.service.ts +++ b/packages/api/src/@core/connections/ticketing/services/aha/aha.service.ts @@ -61,7 +61,7 @@ export class AhaConnectionService implements ITicketingConnectionService { const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/ticketing/services/asana/asana.service.ts b/packages/api/src/@core/connections/ticketing/services/asana/asana.service.ts index 1788c2b3e..32ed9765e 100644 --- a/packages/api/src/@core/connections/ticketing/services/asana/asana.service.ts +++ b/packages/api/src/@core/connections/ticketing/services/asana/asana.service.ts @@ -63,7 +63,7 @@ export class AsanaConnectionService implements ITicketingConnectionService { //reconstruct the redirect URI that was passed in the githubend it must be the same const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/ticketing/services/front/front.service.ts b/packages/api/src/@core/connections/ticketing/services/front/front.service.ts index 5a3425ef3..c0bcd7474 100644 --- a/packages/api/src/@core/connections/ticketing/services/front/front.service.ts +++ b/packages/api/src/@core/connections/ticketing/services/front/front.service.ts @@ -60,7 +60,7 @@ export class FrontConnectionService implements ITicketingConnectionService { //reconstruct the redirect URI that was passed in the frontend it must be the same const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; const CREDENTIALS = (await this.cService.getCredentials( diff --git a/packages/api/src/@core/connections/ticketing/services/ironclad/ironclad.service.ts b/packages/api/src/@core/connections/ticketing/services/ironclad/ironclad.service.ts index 1c975105b..855b3282f 100644 --- a/packages/api/src/@core/connections/ticketing/services/ironclad/ironclad.service.ts +++ b/packages/api/src/@core/connections/ticketing/services/ironclad/ironclad.service.ts @@ -56,7 +56,7 @@ export class IroncladConnectionService implements ITicketingConnectionService { const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/connections/ticketing/services/ticketing.connection.service.ts b/packages/api/src/@core/connections/ticketing/services/ticketing.connection.service.ts index 8cea2ccdc..fc7aede8c 100644 --- a/packages/api/src/@core/connections/ticketing/services/ticketing.connection.service.ts +++ b/packages/api/src/@core/connections/ticketing/services/ticketing.connection.service.ts @@ -67,7 +67,7 @@ export class TicketingConnectionsService implements IConnectionCategory { }, }); //directly send the webhook - await this.webhook.deliverWebhook( + await this.webhook.dispatchWebhook( data, 'connection.created', callbackOpts.projectId, diff --git a/packages/api/src/@core/connections/ticketing/services/wrike/wrike.service.ts b/packages/api/src/@core/connections/ticketing/services/wrike/wrike.service.ts index b05778d97..7f7226a33 100644 --- a/packages/api/src/@core/connections/ticketing/services/wrike/wrike.service.ts +++ b/packages/api/src/@core/connections/ticketing/services/wrike/wrike.service.ts @@ -68,7 +68,7 @@ export class WrikeConnectionService implements ITicketingConnectionService { const REDIRECT_URI = `${ this.env.getDistributionMode() == 'selfhost' - ? this.env.getWebhookIngress() + ? this.env.getTunnelIngress() : this.env.getPanoraBaseUrl() }/connections/oauth/callback`; diff --git a/packages/api/src/@core/projects/projects.controller.ts b/packages/api/src/@core/projects/projects.controller.ts index 86b59181c..aeae29684 100644 --- a/packages/api/src/@core/projects/projects.controller.ts +++ b/packages/api/src/@core/projects/projects.controller.ts @@ -11,6 +11,7 @@ import { ApiBody, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; import { LoggerService } from '../@core-services/logger/logger.service'; import { CreateProjectDto } from './dto/create-project.dto'; import { ProjectsService } from './projects.service'; +import { ApiKeyAuthGuard } from '@@core/auth/guards/api-key.guard'; @ApiTags('projects') @Controller('projects') @@ -22,6 +23,15 @@ export class ProjectsController { this.logger.setContext(ProjectsController.name); } + @ApiOperation({ operationId: 'getProjects', summary: 'Retrieve projects' }) + @ApiResponse({ status: 200 }) + @UseGuards(ApiKeyAuthGuard) + @Get('current') + getCurrentProject(@Request() req: any) { + const projectId = req.user.projectId; + return projectId; + } + @ApiOperation({ operationId: 'getProjects', summary: 'Retrieve projects' }) @ApiResponse({ status: 200 }) @UseGuards(JwtAuthGuard) diff --git a/packages/shared/src/authUrl.ts b/packages/shared/src/authUrl.ts index eef41089f..bc98e4cec 100644 --- a/packages/shared/src/authUrl.ts +++ b/packages/shared/src/authUrl.ts @@ -17,7 +17,7 @@ interface AuthParams { // make sure to check if client has own credentials to connect or panora managed ones export const constructAuthUrl = async ({ projectId, linkedUserId, providerName, returnUrl, apiUrl, vertical }: AuthParams) => { const redirectUrlIngressWhenLocalDev = CONNECTORS_METADATA[vertical][providerName].options?.local_redirect_uri_in_https === true && 'https://prepared-wildcat-infinitely.ngrok-free.app'; - const localEnv = apiUrl.startsWith("http://localhost:3000") || apiUrl.includes("localhost"); + const localEnv = apiUrl.startsWith('http://localhost:3000') || apiUrl.includes('localhost'); const encodedRedirectUrl = encodeURIComponent(`${localEnv && redirectUrlIngressWhenLocalDev ? redirectUrlIngressWhenLocalDev : apiUrl}/connections/oauth/callback`); const state = encodeURIComponent(JSON.stringify({ projectId, linkedUserId, providerName, vertical, returnUrl })); // console.log('State : ', JSON.stringify({ projectId, linkedUserId, providerName, vertical, returnUrl })); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d9388635c..38f8f976c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,7 +34,214 @@ importers: specifier: ^15.0.2 version: 15.2.2 - apps/client-ts: + apps/embedded-catalog/react: + dependencies: + '@hookform/resolvers': + specifier: ^3.3.4 + version: 3.3.4(react-hook-form@7.51.2) + '@panora/shared': + specifier: workspace:^ + version: link:../../../packages/shared + '@radix-ui/react-dialog': + specifier: ^1.0.5 + version: 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-icons': + specifier: ^1.3.0 + version: 1.3.0(react@18.2.0) + '@radix-ui/react-label': + specifier: ^2.0.2 + version: 2.0.2(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': + specifier: ^1.0.2 + version: 1.0.2(@types/react@18.2.75)(react@18.2.0) + '@tanstack/react-query': + specifier: ^5.12.2 + version: 5.29.0(react@18.2.0) + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.0 + version: 2.1.0 + lucide-react: + specifier: ^0.344.0 + version: 0.344.0(react@18.2.0) + react-hook-form: + specifier: ^7.51.2 + version: 7.51.2(react@18.2.0) + react-loader-spinner: + specifier: ^5.4.5 + version: 5.5.0(@babel/core@7.24.9)(react-dom@18.2.0)(react@18.2.0) + tailwind-merge: + specifier: ^2.2.1 + version: 2.2.2 + zod: + specifier: ^3.22.4 + version: 3.23.8 + devDependencies: + '@types/react': + specifier: ^18.2.52 + version: 18.2.75 + '@types/react-dom': + specifier: ^18.2.18 + version: 18.2.24 + autoprefixer: + specifier: ^10.4.16 + version: 10.4.19(postcss@8.4.39) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + tailwindcss: + specifier: ^3.3.5 + version: 3.4.3 + tsup: + specifier: ^8.0.1 + version: 8.0.2(postcss@8.4.39)(typescript@5.4.4) + typescript: + specifier: ^5.3.3 + version: 5.4.4 + + apps/frontend-sdk: + dependencies: + '@panora/shared': + specifier: workspace:^ + version: link:../../packages/shared + axios: + specifier: ^1.5.1 + version: 1.6.8 + devDependencies: + '@types/node': + specifier: ^20.3.1 + version: 20.12.12 + typescript: + specifier: ^5.1.3 + version: 5.5.3 + + apps/magic-link: + dependencies: + '@hookform/resolvers': + specifier: ^3.3.4 + version: 3.3.4(react-hook-form@7.51.2) + '@panora/shared': + specifier: ^1.3.0 + version: link:../../packages/shared + '@panora/typescript-sdk': + specifier: ^1.0.3 + version: 1.0.5 + '@radix-ui/react-dialog': + specifier: ^1.0.5 + version: 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-icons': + specifier: ^1.3.0 + version: 1.3.0(react@18.2.0) + '@radix-ui/react-label': + specifier: ^2.0.2 + version: 2.0.2(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-radio-group': + specifier: ^1.1.3 + version: 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-select': + specifier: ^2.0.0 + version: 2.0.0(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-separator': + specifier: ^1.0.3 + version: 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': + specifier: ^1.0.2 + version: 1.0.2(@types/react@18.2.75)(react@18.2.0) + '@tanstack/react-query': + specifier: ^5.12.2 + version: 5.29.0(react@18.2.0) + api: + specifier: workspace:* + version: link:../../packages/api + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.0 + version: 2.1.0 + lucide-react: + specifier: ^0.344.0 + version: 0.344.0(react@18.2.0) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-hook-form: + specifier: ^7.51.2 + version: 7.51.2(react@18.2.0) + react-loader-spinner: + specifier: ^5.4.5 + version: 5.5.0(@babel/core@7.24.9)(react-dom@18.2.0)(react@18.2.0) + tailwind-merge: + specifier: ^2.2.1 + version: 2.2.2 + tailwind-scrollbar-hide: + specifier: ^1.1.7 + version: 1.1.7 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.3) + uuid: + specifier: ^9.0.1 + version: 9.0.1 + zod: + specifier: ^3.22.4 + version: 3.23.8 + devDependencies: + '@types/node': + specifier: ^20.12.12 + version: 20.12.12 + '@types/react': + specifier: ^18.2.15 + version: 18.2.75 + '@types/react-dom': + specifier: ^18.2.7 + version: 18.2.24 + '@types/uuid': + specifier: ^9.0.7 + version: 9.0.8 + '@typescript-eslint/eslint-plugin': + specifier: ^6.0.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.4) + '@typescript-eslint/parser': + specifier: ^6.0.0 + version: 6.21.0(eslint@8.57.0)(typescript@5.4.4) + '@vitejs/plugin-react': + specifier: ^4.0.3 + version: 4.2.1(vite@4.5.3) + autoprefixer: + specifier: ^10.4.16 + version: 10.4.19(postcss@8.4.38) + eslint: + specifier: ^8.45.0 + version: 8.57.0 + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.57.0) + eslint-plugin-react-refresh: + specifier: ^0.4.3 + version: 0.4.6(eslint@8.57.0) + postcss: + specifier: ^8.4.31 + version: 8.4.38 + tailwindcss: + specifier: ^3.3.5 + version: 3.4.3 + typescript: + specifier: ^5.0.2 + version: 5.4.4 + vite: + specifier: ^4.4.5 + version: 4.5.3(@types/node@20.12.12) + + apps/webapp: dependencies: '@faker-js/faker': specifier: ^8.3.1 @@ -198,222 +405,31 @@ importers: version: 3.0.6 '@types/node': specifier: ^20 - version: 20.12.7 - '@types/react': - specifier: ^18 - version: 18.2.75 - '@types/react-dom': - specifier: ^18 - version: 18.2.24 - autoprefixer: - specifier: ^10.0.1 - version: 10.4.19(postcss@8.4.38) - eslint: - specifier: ^8 - version: 8.57.0 - eslint-config-next: - specifier: 14.1.2 - version: 14.1.2(eslint@8.57.0)(typescript@5.4.4) - postcss: - specifier: ^8 - version: 8.4.38 - tailwindcss: - specifier: ^3.3.0 - version: 3.4.3 - typescript: - specifier: ^5 - version: 5.4.4 - - apps/embedded-catalog/react: - dependencies: - '@hookform/resolvers': - specifier: ^3.3.4 - version: 3.3.4(react-hook-form@7.51.2) - '@panora/shared': - specifier: workspace:^ - version: link:../../../packages/shared - '@radix-ui/react-dialog': - specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-icons': - specifier: ^1.3.0 - version: 1.3.0(react@18.2.0) - '@radix-ui/react-label': - specifier: ^2.0.2 - version: 2.0.2(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.0.2(@types/react@18.2.75)(react@18.2.0) - '@tanstack/react-query': - specifier: ^5.12.2 - version: 5.29.0(react@18.2.0) - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.1.0 - version: 2.1.0 - lucide-react: - specifier: ^0.344.0 - version: 0.344.0(react@18.2.0) - react-hook-form: - specifier: ^7.51.2 - version: 7.51.2(react@18.2.0) - react-loader-spinner: - specifier: ^5.4.5 - version: 5.5.0(@babel/core@7.24.4)(react-dom@18.2.0)(react@18.2.0) - tailwind-merge: - specifier: ^2.2.1 - version: 2.2.2 - zod: - specifier: ^3.22.4 - version: 3.23.8 - devDependencies: - '@types/react': - specifier: ^18.2.52 - version: 18.2.75 - '@types/react-dom': - specifier: ^18.2.18 - version: 18.2.24 - autoprefixer: - specifier: ^10.4.16 - version: 10.4.19(postcss@8.4.38) - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - tailwindcss: - specifier: ^3.3.5 - version: 3.4.3 - tsup: - specifier: ^8.0.1 - version: 8.0.2(postcss@8.4.38)(typescript@5.4.4) - typescript: - specifier: ^5.3.3 - version: 5.4.4 - - apps/magic-link: - dependencies: - '@hookform/resolvers': - specifier: ^3.3.4 - version: 3.3.4(react-hook-form@7.51.2) - '@panora/shared': - specifier: ^1.3.0 - version: link:../../packages/shared - '@panora/typescript-sdk': - specifier: ^1.0.3 - version: 1.0.5 - '@radix-ui/react-dialog': - specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-icons': - specifier: ^1.3.0 - version: 1.3.0(react@18.2.0) - '@radix-ui/react-label': - specifier: ^2.0.2 - version: 2.0.2(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-radio-group': - specifier: ^1.1.3 - version: 1.1.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-select': - specifier: ^2.0.0 - version: 2.0.0(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-separator': - specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.24)(@types/react@18.2.75)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': - specifier: ^1.0.2 - version: 1.0.2(@types/react@18.2.75)(react@18.2.0) - '@tanstack/react-query': - specifier: ^5.12.2 - version: 5.29.0(react@18.2.0) - api: - specifier: workspace:* - version: link:../../packages/api - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - clsx: - specifier: ^2.1.0 - version: 2.1.0 - lucide-react: - specifier: ^0.344.0 - version: 0.344.0(react@18.2.0) - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - react-hook-form: - specifier: ^7.51.2 - version: 7.51.2(react@18.2.0) - react-loader-spinner: - specifier: ^5.4.5 - version: 5.5.0(@babel/core@7.24.4)(react-dom@18.2.0)(react@18.2.0) - tailwind-merge: - specifier: ^2.2.1 - version: 2.2.2 - tailwind-scrollbar-hide: - specifier: ^1.1.7 - version: 1.1.7 - tailwindcss-animate: - specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.3) - uuid: - specifier: ^9.0.1 - version: 9.0.1 - zod: - specifier: ^3.22.4 - version: 3.23.8 - devDependencies: - '@types/node': - specifier: ^20.12.12 - version: 20.12.12 - '@types/react': - specifier: ^18.2.15 - version: 18.2.75 - '@types/react-dom': - specifier: ^18.2.7 - version: 18.2.24 - '@types/uuid': - specifier: ^9.0.7 - version: 9.0.8 - '@typescript-eslint/eslint-plugin': - specifier: ^6.0.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.4) - '@typescript-eslint/parser': - specifier: ^6.0.0 - version: 6.21.0(eslint@8.57.0)(typescript@5.4.4) - '@vitejs/plugin-react': - specifier: ^4.0.3 - version: 4.2.1(vite@4.5.3) + version: 20.12.7 + '@types/react': + specifier: ^18 + version: 18.2.75 + '@types/react-dom': + specifier: ^18 + version: 18.2.24 autoprefixer: - specifier: ^10.4.16 + specifier: ^10.0.1 version: 10.4.19(postcss@8.4.38) eslint: - specifier: ^8.45.0 + specifier: ^8 version: 8.57.0 - eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.0(eslint@8.57.0) - eslint-plugin-react-refresh: - specifier: ^0.4.3 - version: 0.4.6(eslint@8.57.0) + eslint-config-next: + specifier: 14.1.2 + version: 14.1.2(eslint@8.57.0)(typescript@5.4.4) postcss: - specifier: ^8.4.31 + specifier: ^8 version: 8.4.38 tailwindcss: - specifier: ^3.3.5 + specifier: ^3.3.0 version: 3.4.3 typescript: - specifier: ^5.0.2 + specifier: ^5 version: 5.4.4 - vite: - specifier: ^4.4.5 - version: 4.5.3(@types/node@20.12.12) packages/api: dependencies: @@ -455,7 +471,7 @@ importers: version: 5.1.2(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(reflect-metadata@0.1.14) '@ntegral/nestjs-sentry': specifier: ^4.0.0 - version: 4.0.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(@sentry/hub@7.109.0)(@sentry/node@8.9.2)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.8.1)(reflect-metadata@0.1.14)(rimraf@3.0.2)(rxjs@7.8.1) + version: 4.0.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(@sentry/hub@7.114.0)(@sentry/node@8.9.2)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.1.14)(rimraf@3.0.2)(rxjs@7.8.1) '@panora/shared': specifier: workspace:* version: link:../shared @@ -612,10 +628,10 @@ importers: version: 6.3.4 ts-jest: specifier: ^29.1.0 - version: 29.1.2(@babel/core@7.24.4)(jest@29.7.0)(typescript@5.4.4) + version: 29.1.2(@babel/core@7.24.9)(jest@29.7.0)(typescript@5.4.4) ts-loader: specifier: ^9.4.3 - version: 9.5.1(typescript@5.4.4)(webpack@5.91.0) + version: 9.5.1(typescript@5.4.4)(webpack@5.93.0) ts-node: specifier: ^10.9.1 version: 10.9.2(@types/node@20.12.7)(typescript@5.4.4) @@ -664,7 +680,7 @@ importers: version: 6.3.4 ts-jest: specifier: ^29.1.0 - version: 29.1.2(@babel/core@7.24.4)(jest@29.7.0)(typescript@5.4.4) + version: 29.1.2(@babel/core@7.24.9)(jest@29.7.0)(typescript@5.4.4) ts-node: specifier: ^10.9.1 version: 10.9.2(@types/node@20.12.7)(typescript@5.4.4) @@ -824,9 +840,21 @@ packages: '@babel/highlight': 7.24.2 picocolors: 1.0.0 + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + /@babel/compat-data@7.24.4: resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} + dev: true + + /@babel/compat-data@7.24.9: + resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==} + engines: {node: '>=6.9.0'} /@babel/core@7.24.4: resolution: {integrity: sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==} @@ -849,6 +877,38 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true + + /@babel/core@7.24.9: + resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.10 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helpers': 7.24.8 + '@babel/parser': 7.24.8 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + convert-source-map: 2.0.0 + debug: 4.3.5 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /@babel/generator@7.24.10: + resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 /@babel/generator@7.24.4: resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} @@ -875,11 +935,28 @@ packages: browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 + dev: true + + /@babel/helper-compilation-targets@7.24.8: + resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.9 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.2 + lru-cache: 5.1.1 + semver: 6.3.1 /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} + /@babel/helper-environment-visitor@7.24.7: + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + /@babel/helper-function-name@7.23.0: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} @@ -887,18 +964,40 @@ packages: '@babel/template': 7.24.0 '@babel/types': 7.24.0 + /@babel/helper-function-name@7.24.7: + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 + /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 + /@babel/helper-hoist-variables@7.24.7: + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + /@babel/helper-module-imports@7.24.3: resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.4): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} @@ -911,6 +1010,22 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9): + resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color /@babel/helper-plugin-utils@7.24.0: resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} @@ -921,6 +1036,16 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 + dev: true + + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} @@ -928,17 +1053,36 @@ packages: dependencies: '@babel/types': 7.24.0 + /@babel/helper-split-export-declaration@7.24.7: + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + /@babel/helper-string-parser@7.24.1: resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} /@babel/helpers@7.24.4: resolution: {integrity: sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==} @@ -949,6 +1093,14 @@ packages: '@babel/types': 7.24.0 transitivePeerDependencies: - supports-color + dev: true + + /@babel/helpers@7.24.8: + resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 /@babel/highlight@7.24.2: resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} @@ -959,6 +1111,15 @@ packages: js-tokens: 4.0.0 picocolors: 1.0.0 + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + /@babel/parser@7.24.4: resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} engines: {node: '>=6.0.0'} @@ -966,6 +1127,13 @@ packages: dependencies: '@babel/types': 7.24.0 + /@babel/parser@7.24.8: + resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.9 + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.4): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -1019,6 +1187,17 @@ packages: dependencies: '@babel/core': 7.24.4 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.9): + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: false /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.4): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -1128,6 +1307,14 @@ packages: '@babel/parser': 7.24.4 '@babel/types': 7.24.0 + /@babel/template@7.24.7: + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 + /@babel/traverse@7.24.1(supports-color@5.5.0): resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} engines: {node: '>=6.9.0'} @@ -1145,6 +1332,23 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.24.8: + resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.10 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 + debug: 4.3.5 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + /@babel/types@7.24.0: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} @@ -1153,6 +1357,14 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@babel/types@7.24.9: + resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true @@ -1359,11 +1571,11 @@ packages: engines: {node: '>=10'} dev: false - /@emnapi/runtime@1.1.1: - resolution: {integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==} + /@emnapi/runtime@1.2.0: + resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} requiresBuild: true dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false optional: true @@ -1869,56 +2081,56 @@ packages: resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} dev: false - /@graphql-tools/merge@9.0.0(graphql@16.8.1): + /@graphql-tools/merge@9.0.0(graphql@16.9.0): resolution: {integrity: sha512-J7/xqjkGTTwOJmaJQJ2C+VDBDOWJL3lKrHJN4yMaRLAJH3PosB7GiPRaSDZdErs0+F77sH2MKs2haMMkywzx7Q==} engines: {node: '>=16.0.0'} requiresBuild: true peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) - graphql: 16.8.1 + '@graphql-tools/utils': 10.0.8(graphql@16.9.0) + graphql: 16.9.0 tslib: 2.6.2 dev: false optional: true - /@graphql-tools/schema@10.0.0(graphql@16.8.1): + /@graphql-tools/schema@10.0.0(graphql@16.9.0): resolution: {integrity: sha512-kf3qOXMFcMs2f/S8Y3A8fm/2w+GaHAkfr3Gnhh2LOug/JgpY/ywgFVxO3jOeSpSEdoYcDKLcXVjMigNbY4AdQg==} engines: {node: '>=16.0.0'} requiresBuild: true peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/merge': 9.0.0(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) - graphql: 16.8.1 + '@graphql-tools/merge': 9.0.0(graphql@16.9.0) + '@graphql-tools/utils': 10.0.8(graphql@16.9.0) + graphql: 16.9.0 tslib: 2.6.2 value-or-promise: 1.0.12 dev: false optional: true - /@graphql-tools/utils@10.0.8(graphql@16.8.1): + /@graphql-tools/utils@10.0.8(graphql@16.9.0): resolution: {integrity: sha512-yjyA8ycSa1WRlJqyX/aLqXeE5DvF/H02+zXMUFnCzIDrj0UvLMUrxhmVFnMK0Q2n3bh4uuTeY3621m5za9ovXw==} engines: {node: '>=16.0.0'} requiresBuild: true peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0) cross-inspect: 1.0.0 dset: 3.1.3 - graphql: 16.8.1 + graphql: 16.9.0 tslib: 2.6.2 dev: false optional: true - /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1): + /@graphql-typed-document-node/core@3.2.0(graphql@16.9.0): resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} requiresBuild: true peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - graphql: 16.8.1 + graphql: 16.9.0 dev: false optional: true @@ -2116,7 +2328,7 @@ packages: cpu: [wasm32] requiresBuild: true dependencies: - '@emnapi/runtime': 1.1.1 + '@emnapi/runtime': 1.2.0 dev: false optional: true @@ -2474,48 +2686,48 @@ packages: resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} dev: false - /@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2: - resolution: {integrity: sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==} + /@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3: + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: false optional: true - /@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2: - resolution: {integrity: sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==} + /@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3: + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} cpu: [x64] os: [darwin] requiresBuild: true dev: false optional: true - /@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2: - resolution: {integrity: sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==} + /@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3: + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} cpu: [arm64] os: [linux] requiresBuild: true dev: false optional: true - /@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2: - resolution: {integrity: sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==} + /@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3: + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} cpu: [arm] os: [linux] requiresBuild: true dev: false optional: true - /@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2: - resolution: {integrity: sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==} + /@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3: + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} cpu: [x64] os: [linux] requiresBuild: true dev: false optional: true - /@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2: - resolution: {integrity: sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==} + /@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3: + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} cpu: [x64] os: [win32] requiresBuild: true @@ -2654,7 +2866,7 @@ packages: transitivePeerDependencies: - encoding - /@nestjs/graphql@12.0.11(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.8.1)(reflect-metadata@0.1.14): + /@nestjs/graphql@12.0.11(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.1.14): resolution: {integrity: sha512-iCyVs9+utCQt9ehMhUjQcEdjRN/MrcTBINd7P44O1fzGENuWMbt1Z8RCoZbeGi5iVPBY63HgYik+BnnICqmxZw==} requiresBuild: true peerDependencies: @@ -2676,9 +2888,9 @@ packages: ts-morph: optional: true dependencies: - '@graphql-tools/merge': 9.0.0(graphql@16.8.1) - '@graphql-tools/schema': 10.0.0(graphql@16.8.1) - '@graphql-tools/utils': 10.0.8(graphql@16.8.1) + '@graphql-tools/merge': 9.0.0(graphql@16.9.0) + '@graphql-tools/schema': 10.0.0(graphql@16.9.0) + '@graphql-tools/utils': 10.0.8(graphql@16.9.0) '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@nestjs/mapped-types': 2.0.2(@nestjs/common@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14) @@ -2686,13 +2898,13 @@ packages: class-transformer: 0.5.1 class-validator: 0.14.1 fast-glob: 3.3.2 - graphql: 16.8.1 - graphql-tag: 2.12.6(graphql@16.8.1) - graphql-ws: 5.14.2(graphql@16.8.1) + graphql: 16.9.0 + graphql-tag: 2.12.6(graphql@16.9.0) + graphql-ws: 5.14.2(graphql@16.9.0) lodash: 4.17.21 normalize-path: 3.0.0 reflect-metadata: 0.1.14 - subscriptions-transport-ws: 0.11.0(graphql@16.8.1) + subscriptions-transport-ws: 0.11.0(graphql@16.9.0) tslib: 2.6.2 uuid: 9.0.1 ws: 8.14.2 @@ -2990,7 +3202,7 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - /@ntegral/nestjs-sentry@4.0.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(@sentry/hub@7.109.0)(@sentry/node@8.9.2)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.8.1)(reflect-metadata@0.1.14)(rimraf@3.0.2)(rxjs@7.8.1): + /@ntegral/nestjs-sentry@4.0.1(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(@sentry/hub@7.114.0)(@sentry/node@8.9.2)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.1.14)(rimraf@3.0.2)(rxjs@7.8.1): resolution: {integrity: sha512-GQUL0Bm0T+FhTNJXUbnF5mZc2u5YuvUV2H6naXxrnw8tY0b9eE/DGj+GUyHNL7V2DuHHFzsYP2c30O5FoGoYfQ==} peerDependencies: '@nestjs/common': '>=10.0.0' @@ -3003,13 +3215,13 @@ packages: dependencies: '@nestjs/common': 10.3.7(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.1.14)(rxjs@7.8.1) '@nestjs/core': 10.3.7(@nestjs/common@10.3.7)(@nestjs/platform-express@10.3.7)(reflect-metadata@0.1.14)(rxjs@7.8.1) - '@sentry/hub': 7.109.0 + '@sentry/hub': 7.114.0 '@sentry/node': 8.9.2 reflect-metadata: 0.1.14 rimraf: 3.0.2 rxjs: 7.8.1 optionalDependencies: - '@nestjs/graphql': 12.0.11(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.8.1)(reflect-metadata@0.1.14) + '@nestjs/graphql': 12.0.11(@nestjs/common@10.3.7)(@nestjs/core@10.3.7)(class-transformer@0.5.1)(class-validator@0.14.1)(graphql@16.9.0)(reflect-metadata@0.1.14) transitivePeerDependencies: - '@apollo/subgraph' - bufferutil @@ -5095,6 +5307,14 @@ packages: '@sentry/utils': 7.109.0 dev: false + /@sentry/core@7.114.0: + resolution: {integrity: sha512-YnanVlmulkjgZiVZ9BfY9k6I082n+C+LbZo52MTvx3FY6RE5iyiPMpaOh67oXEZRWcYQEGm+bKruRxLVP6RlbA==} + engines: {node: '>=8'} + dependencies: + '@sentry/types': 7.114.0 + '@sentry/utils': 7.114.0 + dev: false + /@sentry/core@8.17.0: resolution: {integrity: sha512-s62O0Re6WcvaVbH1IEeAWmj/ca8UhaRoFaDnc5TR68reOycBrgnqCNq3qHxBsELOA6NJowoK+T29DDGs9QVXhQ==} engines: {node: '>=14.18'} @@ -5111,13 +5331,13 @@ packages: '@sentry/utils': 8.9.2 dev: false - /@sentry/hub@7.109.0: - resolution: {integrity: sha512-lu1cF0bPAC+B8vSDhhAIreLMxrdITExORWPO6gnNggwLtfFzFGU6uC1Qy6zl3TaWx7g6apmiJ4ENjVlBK6ftUQ==} + /@sentry/hub@7.114.0: + resolution: {integrity: sha512-1Q3S5O9fMZ4vB9GJJQB8gw//VZRt8LzlHvMhqMS+K7mm215Rj2qM2wY0js7QSTupHBlZ0+M9j8o7C8XUXAeXbQ==} engines: {node: '>=8'} dependencies: - '@sentry/core': 7.109.0 - '@sentry/types': 7.109.0 - '@sentry/utils': 7.109.0 + '@sentry/core': 7.114.0 + '@sentry/types': 7.114.0 + '@sentry/utils': 7.114.0 dev: false /@sentry/node@8.17.0: @@ -5262,6 +5482,11 @@ packages: engines: {node: '>=8'} dev: false + /@sentry/types@7.114.0: + resolution: {integrity: sha512-tsqkkyL3eJtptmPtT0m9W/bPLkU7ILY7nvwpi1hahA5jrM7ppoU0IMaQWAgTD+U3rzFH40IdXNBFb8Gnqcva4w==} + engines: {node: '>=8'} + dev: false + /@sentry/types@8.17.0: resolution: {integrity: sha512-v0nI0+ajiGTijhF1W/ryn2+zFVFr6VPn6lao3W4qKj9MlltIHa4/uuGzTaiCFwoPw7g5bZ1Q09SStpDXVMkz2A==} engines: {node: '>=14.18'} @@ -5279,6 +5504,13 @@ packages: '@sentry/types': 7.109.0 dev: false + /@sentry/utils@7.114.0: + resolution: {integrity: sha512-319N90McVpupQ6vws4+tfCy/03AdtsU0MurIE4+W5cubHME08HtiEWlfacvAxX+yuKFhvdsO4K4BB/dj54ideg==} + engines: {node: '>=8'} + dependencies: + '@sentry/types': 7.114.0 + dev: false + /@sentry/utils@8.17.0: resolution: {integrity: sha512-HHtAPLOlvzhwgfYzxtuPnLUoGRMtMrFvopkii74zmx/1ZD4VN4PYPB2E5KFf3c18pTovw+kxF0ux6VrGiyAHsw==} engines: {node: '>=14.18'} @@ -5317,7 +5549,7 @@ packages: /@swc/helpers@0.5.2: resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@szmarczak/http-timer@5.0.1: @@ -5476,7 +5708,7 @@ packages: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 20.12.7 + '@types/node': 20.12.12 /@types/d3-array@3.2.1: resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} @@ -5693,6 +5925,7 @@ packages: resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} dependencies: undici-types: 5.26.5 + dev: true /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -5790,7 +6023,7 @@ packages: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 20.12.7 + '@types/node': 20.12.12 dev: true /@types/supertest@2.0.16: @@ -6245,6 +6478,14 @@ packages: acorn: 8.11.3 dev: false + /acorn-import-attributes@1.9.5(acorn@8.12.1): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.12.1 + dev: true + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -6263,6 +6504,12 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /adler-32@1.3.1: resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} engines: {node: '>=0.8'} @@ -6623,7 +6870,7 @@ packages: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /async-validator@4.2.5: @@ -6666,6 +6913,22 @@ packages: postcss-value-parser: 4.2.0 dev: true + /autoprefixer@10.4.19(postcss@8.4.39): + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001607 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + dev: true + /available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -6734,17 +6997,17 @@ packages: '@types/babel__traverse': 7.20.5 dev: true - /babel-plugin-styled-components@2.1.4(@babel/core@7.24.4)(styled-components@5.3.11): + /babel-plugin-styled-components@2.1.4(@babel/core@7.24.9)(styled-components@5.3.11): resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} peerDependencies: styled-components: '>= 2' dependencies: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.24.3 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.4) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.9) lodash: 4.17.21 picomatch: 2.3.1 - styled-components: 5.3.11(@babel/core@7.24.4)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + styled-components: 5.3.11(@babel/core@7.24.9)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) transitivePeerDependencies: - '@babel/core' dev: false @@ -6892,6 +7155,17 @@ packages: electron-to-chromium: 1.4.731 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true + + /browserslist@4.23.2: + resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001643 + electron-to-chromium: 1.4.832 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.2) /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -7038,6 +7312,9 @@ packages: /caniuse-lite@1.0.30001607: resolution: {integrity: sha512-WcvhVRjXLKFB/kmOFVwELtMxyhq3iM/MvmXcyCe2PNf166c39mptscOc/45TTS96n2gpNV2z7+NakArTWZCQ3w==} + /caniuse-lite@1.0.30001643: + resolution: {integrity: sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==} + /cfb@1.2.2: resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==} engines: {node: '>=0.8'} @@ -7114,6 +7391,11 @@ packages: engines: {node: '>=6.0'} dev: true + /chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + dev: true + /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -7755,6 +8037,17 @@ packages: ms: 2.1.2 supports-color: 5.5.0 + /debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} @@ -7986,6 +8279,10 @@ packages: /electron-to-chromium@1.4.731: resolution: {integrity: sha512-+TqVfZjpRz2V/5SPpmJxq9qK620SC5SqCnxQIOi7i/U08ZDcTpKbT7Xjj9FU5CbXTMUb4fywbIr8C7cGv4hcjw==} + dev: true + + /electron-to-chromium@1.4.832: + resolution: {integrity: sha512-cTen3SB0H2SGU7x467NRe1eVcQgcuS6jckKfWJHia2eo0cHIGOqHoAxevIYZD4eRHcWjkvFzo93bi3vJ9W+1lA==} /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -8019,6 +8316,14 @@ packages: tapable: 2.2.1 dev: true + /enhanced-resolve@5.17.0: + resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + /enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -8122,6 +8427,10 @@ packages: resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==} dev: true + /es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + dev: true + /es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} @@ -8806,7 +9115,7 @@ packages: resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} engines: {node: '>= 12'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /fill-range@7.0.1: @@ -9286,31 +9595,31 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /graphql-tag@2.12.6(graphql@16.8.1): + /graphql-tag@2.12.6(graphql@16.9.0): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} requiresBuild: true peerDependencies: graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - graphql: 16.8.1 + graphql: 16.9.0 tslib: 2.6.2 dev: false optional: true - /graphql-ws@5.14.2(graphql@16.8.1): + /graphql-ws@5.14.2(graphql@16.9.0): resolution: {integrity: sha512-LycmCwhZ+Op2GlHz4BZDsUYHKRiiUz+3r9wbhBATMETNlORQJAaFlAgTFoeRh6xQoQegwYwIylVD1Qns9/DA3w==} engines: {node: '>=10'} requiresBuild: true peerDependencies: graphql: '>=0.11 <=16' dependencies: - graphql: 16.8.1 + graphql: 16.9.0 dev: false optional: true - /graphql@16.8.1: - resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} + /graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: false optional: true @@ -11198,26 +11507,26 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /msgpackr-extract@3.0.2: - resolution: {integrity: sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==} + /msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true requiresBuild: true dependencies: - node-gyp-build-optional-packages: 5.0.7 + node-gyp-build-optional-packages: 5.2.2 optionalDependencies: - '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.2 - '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2 + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 dev: false optional: true /msgpackr@1.10.1: resolution: {integrity: sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==} optionalDependencies: - msgpackr-extract: 3.0.2 + msgpackr-extract: 3.0.3 dev: false /multer@1.4.4-lts.1: @@ -11386,10 +11695,12 @@ packages: formdata-polyfill: 4.0.10 dev: false - /node-gyp-build-optional-packages@5.0.7: - resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==} + /node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true requiresBuild: true + dependencies: + detect-libc: 2.0.3 dev: false optional: true @@ -11399,6 +11710,10 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} /nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} @@ -11856,6 +12171,9 @@ packages: /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -11898,7 +12216,7 @@ packages: resolution: {integrity: sha512-J0hiJgUExtBXP2BjrK4VB305tHXS31sCmWJ9XJo2wPkLHa1NFPuW4V9wjG27PAc2fmBCigiNhQKpvrx+kntBPA==} dependencies: get-caller-file: 2.0.5 - pino: 8.20.0 + pino: 8.21.0 pino-std-serializers: 6.2.2 process-warning: 3.0.0 dev: false @@ -11927,8 +12245,8 @@ packages: resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} dev: false - /pino@8.20.0: - resolution: {integrity: sha512-uhIfMj5TVp+WynVASaVEJFTncTUe4dHBq6CWplu/vBgvGHhvBvQfxz+vcOrnnBQdORH3izaGEurLfNlq3YxdFQ==} + /pino@8.21.0: + resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} hasBin: true dependencies: atomic-sleep: 1.0.0 @@ -11941,7 +12259,7 @@ packages: real-require: 0.2.0 safe-stable-stringify: 2.4.3 sonic-boom: 3.8.1 - thread-stream: 2.4.1 + thread-stream: 2.7.0 dev: false /pirates@4.0.6: @@ -11999,6 +12317,23 @@ packages: postcss: 8.4.38 yaml: 2.4.1 + /postcss-load-config@4.0.2(postcss@8.4.39): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.1.1 + postcss: 8.4.39 + yaml: 2.4.1 + dev: true + /postcss-nested@6.0.1(postcss@8.4.38): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} @@ -12035,6 +12370,15 @@ packages: picocolors: 1.0.0 source-map-js: 1.2.0 + /postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + dev: true + /postgres-array@2.0.0: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} @@ -12839,7 +13183,7 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - /react-loader-spinner@5.5.0(@babel/core@7.24.4)(react-dom@18.2.0)(react@18.2.0): + /react-loader-spinner@5.5.0(@babel/core@7.24.9)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3y+l6RPbkfW8EMs/X7MtfiPlAPwYp+WbCtls3gZn+fDJCt0SW4TakRoj2/lExbCVxSxA6Y5M8Nly+WfhNxnFcw==} deprecated: Breaking changes was include so major version was use peerDependencies: @@ -12849,7 +13193,7 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-is: 18.2.0 - styled-components: 5.3.11(@babel/core@7.24.4)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + styled-components: 5.3.11(@babel/core@7.24.9)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) styled-tools: 1.7.2 transitivePeerDependencies: - '@babel/core' @@ -12890,7 +13234,7 @@ packages: react: 18.2.0 react-remove-scroll-bar: 2.3.6(@types/react@18.2.75)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.75)(react@18.2.0) - tslib: 2.6.2 + tslib: 2.6.3 use-callback-ref: 1.3.2(@types/react@18.2.75)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.75)(react@18.2.0) dev: false @@ -13902,7 +14246,7 @@ packages: resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} dev: false - /styled-components@5.3.11(@babel/core@7.24.4)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0): + /styled-components@5.3.11(@babel/core@7.24.9)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0): resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} engines: {node: '>=10'} peerDependencies: @@ -13915,7 +14259,7 @@ packages: '@emotion/is-prop-valid': 1.2.2 '@emotion/stylis': 0.8.5 '@emotion/unitless': 0.7.5 - babel-plugin-styled-components: 2.1.4(@babel/core@7.24.4)(styled-components@5.3.11) + babel-plugin-styled-components: 2.1.4(@babel/core@7.24.9)(styled-components@5.3.11) css-to-react-native: 3.2.0 hoist-non-react-statics: 3.3.2 react: 18.2.0 @@ -13960,7 +14304,7 @@ packages: undici: 5.28.4 dev: false - /subscriptions-transport-ws@0.11.0(graphql@16.8.1): + /subscriptions-transport-ws@0.11.0(graphql@16.9.0): resolution: {integrity: sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==} deprecated: The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md requiresBuild: true @@ -13969,7 +14313,7 @@ packages: dependencies: backo2: 1.0.2 eventemitter3: 3.1.2 - graphql: 16.8.1 + graphql: 16.9.0 iterall: 1.3.0 symbol-observable: 1.2.0 ws: 7.5.9 @@ -14153,7 +14497,7 @@ packages: webpack: 5.90.1 dev: true - /terser-webpack-plugin@5.3.10(webpack@5.91.0): + /terser-webpack-plugin@5.3.10(webpack@5.93.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -14174,7 +14518,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.30.3 - webpack: 5.91.0 + webpack: 5.93.0 dev: true /terser@5.30.3: @@ -14212,8 +14556,8 @@ packages: dependencies: any-promise: 1.3.0 - /thread-stream@2.4.1: - resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==} + /thread-stream@2.7.0: + resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} dependencies: real-require: 0.2.0 dev: false @@ -14290,7 +14634,7 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /ts-jest@29.1.2(@babel/core@7.24.4)(jest@29.7.0)(typescript@5.4.4): + /ts-jest@29.1.2(@babel/core@7.24.9)(jest@29.7.0)(typescript@5.4.4): resolution: {integrity: sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==} engines: {node: ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true @@ -14311,7 +14655,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.24.4 + '@babel/core': 7.24.9 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2) @@ -14324,7 +14668,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-loader@9.5.1(typescript@5.4.4)(webpack@5.91.0): + /ts-loader@9.5.1(typescript@5.4.4)(webpack@5.93.0): resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -14337,7 +14681,7 @@ packages: semver: 7.6.0 source-map: 0.7.4 typescript: 5.4.4 - webpack: 5.91.0 + webpack: 5.93.0 dev: true /ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.4): @@ -14420,6 +14764,10 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + dev: false + /tslint@5.16.0(typescript@5.4.4): resolution: {integrity: sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA==} engines: {node: '>=4.8.0'} @@ -14448,7 +14796,7 @@ packages: engines: {node: '>=0.6.x'} dev: false - /tsup@8.0.2(postcss@8.4.38)(typescript@5.4.4): + /tsup@8.0.2(postcss@8.4.39)(typescript@5.4.4): resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==} engines: {node: '>=18'} hasBin: true @@ -14475,8 +14823,8 @@ packages: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss: 8.4.38 - postcss-load-config: 4.0.2(postcss@8.4.38) + postcss: 8.4.39 + postcss-load-config: 4.0.2(postcss@8.4.39) resolve-from: 5.0.0 rollup: 4.14.1 source-map: 0.8.0-beta.0 @@ -14700,6 +15048,12 @@ packages: hasBin: true dev: true + /typescript@5.5.3: + resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /uid@2.0.2: resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} engines: {node: '>=8'} @@ -14758,6 +15112,17 @@ packages: browserslist: 4.23.0 escalade: 3.1.2 picocolors: 1.0.0 + dev: true + + /update-browserslist-db@1.1.0(browserslist@4.23.2): + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.2 + escalade: 3.1.2 + picocolors: 1.0.1 /update-notifier@7.0.0: resolution: {integrity: sha512-Hv25Bh+eAbOLlsjJreVPOs4vd51rrtCrmhyOJtbpAojro34jS4KQaEp4/EvlHJX7jSO42VvEFpkastVyXyIsdQ==} @@ -15014,8 +15379,8 @@ packages: - uglify-js dev: true - /webpack@5.91.0: - resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} + /webpack@5.93.0: + resolution: {integrity: sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -15029,12 +15394,12 @@ packages: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.16.0 - es-module-lexer: 1.5.0 + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) + browserslist: 4.23.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.0 + es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -15045,7 +15410,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.91.0) + terser-webpack-plugin: 5.3.10(webpack@5.93.0) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: