From 5151202e409531064067caa217a1a934915a9414 Mon Sep 17 00:00:00 2001 From: Kumaran Rajendhiran Date: Wed, 14 Aug 2024 11:59:57 +0000 Subject: [PATCH] Remove auth callout --- .github/workflows/docker-cleanup.yml | 41 - auth_callout/.gitignore | 14 - auth_callout/.prettierrc.json | 5 - auth_callout/Dockerfile | 18 - auth_callout/package.json | 20 - auth_callout/packages/auth-service/.gitignore | 3 - .../packages/auth-service/package.json | 23 - .../packages/auth-service/schema.prisma | 21 - .../packages/auth-service/src/data.ts | 68 -- .../packages/auth-service/src/index.ts | 2 - .../auth-service/src/my-auth-token.ts | 4 - .../packages/auth-service/src/service.ts | 124 -- .../packages/auth-service/src/types.ts | 56 - .../packages/auth-service/tsconfig.json | 8 - auth_callout/pnpm-lock.yaml | 1059 ----------------- auth_callout/pnpm-workspace.yaml | 2 - auth_callout/run-auth-callout.sh | 5 - auth_callout/tsconfig.json | 8 - auth_callout/tsconfig.settings.json | 31 - scripts/deploy-auth-callout.sh | 61 - scripts/deploy-nats.sh | 47 - scripts/deploy-node.sh | 67 -- scripts/deploy.sh | 67 -- 23 files changed, 1754 deletions(-) delete mode 100644 .github/workflows/docker-cleanup.yml delete mode 100644 auth_callout/.gitignore delete mode 100644 auth_callout/.prettierrc.json delete mode 100644 auth_callout/Dockerfile delete mode 100644 auth_callout/package.json delete mode 100644 auth_callout/packages/auth-service/.gitignore delete mode 100644 auth_callout/packages/auth-service/package.json delete mode 100644 auth_callout/packages/auth-service/schema.prisma delete mode 100644 auth_callout/packages/auth-service/src/data.ts delete mode 100644 auth_callout/packages/auth-service/src/index.ts delete mode 100644 auth_callout/packages/auth-service/src/my-auth-token.ts delete mode 100644 auth_callout/packages/auth-service/src/service.ts delete mode 100644 auth_callout/packages/auth-service/src/types.ts delete mode 100644 auth_callout/packages/auth-service/tsconfig.json delete mode 100644 auth_callout/pnpm-lock.yaml delete mode 100644 auth_callout/pnpm-workspace.yaml delete mode 100755 auth_callout/run-auth-callout.sh delete mode 100644 auth_callout/tsconfig.json delete mode 100644 auth_callout/tsconfig.settings.json delete mode 100755 scripts/deploy-auth-callout.sh delete mode 100755 scripts/deploy-nats.sh delete mode 100755 scripts/deploy-node.sh delete mode 100755 scripts/deploy.sh diff --git a/.github/workflows/docker-cleanup.yml b/.github/workflows/docker-cleanup.yml deleted file mode 100644 index 38f56648..00000000 --- a/.github/workflows/docker-cleanup.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Cleanup Untagged Images - -on: - # every sunday at 00:00 - schedule: - - cron: "0 0 * * SUN" - # or manually - workflow_dispatch: - -jobs: - delete-untagged-images: - name: Delete Untagged Images - runs-on: ubuntu-latest - steps: - - uses: bots-house/ghcr-delete-image-action@v1.1.0 # nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha - with: - # NOTE: at now only orgs is supported - owner: airtai - name: fastagency-studio - - token: ${{ secrets.GITHUB_TOKEN }} - # Keep latest N untagged images - untagged-keep-latest: 1 - - uses: bots-house/ghcr-delete-image-action@v1.1.0 # nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha - with: - # NOTE: at now only orgs is supported - owner: airtai - name: fastagency-studio-node - - token: ${{ secrets.GITHUB_TOKEN }} - # Keep latest N untagged images - untagged-keep-latest: 1 - - uses: bots-house/ghcr-delete-image-action@v1.1.0 # nosemgrep: yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha.third-party-action-not-pinned-to-commit-sha - with: - # NOTE: at now only orgs is supported - owner: airtai - name: fastagency-studio-auth-callout - - token: ${{ secrets.GITHUB_TOKEN }} - # Keep latest N untagged images - untagged-keep-latest: 1 diff --git a/auth_callout/.gitignore b/auth_callout/.gitignore deleted file mode 100644 index 2a9f808e..00000000 --- a/auth_callout/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -node_modules -.DS_Store -.env -lib/ -dist/ -*.log -*.tsbuildinfo -.eslintcache -.antlr -.tmp/ -.pnpm-store - -# User settings -.vscode/settings.json diff --git a/auth_callout/.prettierrc.json b/auth_callout/.prettierrc.json deleted file mode 100644 index 8046073e..00000000 --- a/auth_callout/.prettierrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "printWidth": 150, - "trailingComma": "es5", - "arrowParens": "always" -} diff --git a/auth_callout/Dockerfile b/auth_callout/Dockerfile deleted file mode 100644 index b6d5ded1..00000000 --- a/auth_callout/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -# Use the official Node.js 20 image as a parent image -FROM node:20-alpine - -# Set the working directory inside the container -WORKDIR /usr/src/app - -# Copy the auth_callout directory contents into the container at /usr/src/app -COPY ./ . - -# Install pnpm -RUN npm install -g pnpm && ls -lah - -# Install any dependencies -RUN pnpm install --force - -# Define the command to run your app using pnpm serve -ENTRYPOINT [] -CMD ["/bin/sh", "-c", "./run-auth-callout.sh"] diff --git a/auth_callout/package.json b/auth_callout/package.json deleted file mode 100644 index 94a64b5f..00000000 --- a/auth_callout/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "0.0.0", - "name": "root", - "private": true, - "workspaces": [ - "packages/*" - ], - "devDependencies": { - "tsx": "^4.1.2", - "typescript": "^4.9.5", - "vite": "^4.5.0", - "vite-plugin-checker": "^0.6.2" - }, - "scripts": { - "au": "pnpm --filter @nats-chat/auth-service run", - "serve": "pnpm run build && pnpm run -r --parallel --stream serve", - "build": "tsc -b", - "up": "docker compose up -d" - } -} diff --git a/auth_callout/packages/auth-service/.gitignore b/auth_callout/packages/auth-service/.gitignore deleted file mode 100644 index 11ddd8db..00000000 --- a/auth_callout/packages/auth-service/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -# Keep environment variables out of version control -.env diff --git a/auth_callout/packages/auth-service/package.json b/auth_callout/packages/auth-service/package.json deleted file mode 100644 index d942582b..00000000 --- a/auth_callout/packages/auth-service/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "private": true, - "name": "@nats-chat/auth-service", - "version": "0.0.0-main", - "description": "Server", - "author": "Jonas Kello ", - "license": "MIT", - "type": "module", - "main": "./lib/index.js", - "devDependencies": { - "@types/node": "^20.9.0" - }, - "dependencies": { - "@prisma/client": "^5.16.1", - "nats": "^2.6.1", - "nats-jwt": "^0.0.7", - "nkeys.js": "^1.0.5", - "prisma": "^5.16.1" - }, - "scripts": { - "serve": "tsx src/service.ts" - } -} diff --git a/auth_callout/packages/auth-service/schema.prisma b/auth_callout/packages/auth-service/schema.prisma deleted file mode 100644 index e8eb3dcd..00000000 --- a/auth_callout/packages/auth-service/schema.prisma +++ /dev/null @@ -1,21 +0,0 @@ -datasource db { - // could be postgresql or mysql - provider = "postgresql" - url = env("PY_DATABASE_URL") -} - -generator authclient { - provider = "prisma-client-js" -} - -model AuthToken { - uuid String @id - name String - user_uuid String @db.Uuid - deployment_uuid String @db.Uuid - auth_token String - expiry String - expires_at DateTime - created_at DateTime @default(now()) - updated_at DateTime @updatedAt -} diff --git a/auth_callout/packages/auth-service/src/data.ts b/auth_callout/packages/auth-service/src/data.ts deleted file mode 100644 index 8b799f3e..00000000 --- a/auth_callout/packages/auth-service/src/data.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { AuthToken, PrismaClient } from "@prisma/client"; - - -export type Auth = { - user: string; - password: string; - chat_uuid: string; -} - -const prisma = new PrismaClient(); - -// const wasp_prisma = new PrismaClient({ datasources: { db: { url: process.env.DATABASE_URL } } }) - - -export async function fetchAuthToken(deployment_uuid: string) { - try { - const authTokens: AuthToken[] = await prisma.$queryRaw`SELECT * FROM "AuthToken" WHERE "deployment_uuid" = ${deployment_uuid}::uuid and expires_at > NOW()`; - return authTokens.length > 0 ? authTokens : null; // Return the authTokens if found, else return null - } catch (error) { - console.error('Error fetching AuthToken by deployment_uuid:', error); - return null; // Return null on error - } -} - -export async function verifyAuthTokens(auth_pass: string, authTokens: AuthToken[]) { - for (const authToken of authTokens) { - // check if password is correct - if (await verifyAuthToken(auth_pass, authToken.auth_token)) { - return authToken; - } - - } - return false; -} - -export async function verifyAuthToken(token: string, storedHash: string): Promise { - const parts: Array = storedHash.split(':'); - if (parts.length !== 2) { - return false; - } - - // Split the stored hash into salt and hash - const [salt, hashValue] = parts; - // Check if salt and hashValue are defined - if (!salt || !hashValue) { - return false; - } - - // Convert salt back to Uint8Array - const saltBytes = new Uint8Array(salt.match(/.{1,2}/g)!.map(byte => parseInt(byte, 16))); - - // Combine salt and token - const encoder = new TextEncoder(); - const tokenBytes = encoder.encode(token); - const saltedToken = new Uint8Array(saltBytes.length + tokenBytes.length); - saltedToken.set(saltBytes); - saltedToken.set(tokenBytes, saltBytes.length); - - // Hash the salted token - const computedHash = crypto.subtle.digest('SHA-256', saltedToken) - .then(hash => Array.from(new Uint8Array(hash)) - .map(b => b.toString(16).padStart(2, '0')) - .join('') - ); - - // Compare the computed hash with the stored hash - return computedHash.then(hash => hash === hashValue); -} diff --git a/auth_callout/packages/auth-service/src/index.ts b/auth_callout/packages/auth-service/src/index.ts deleted file mode 100644 index 81504014..00000000 --- a/auth_callout/packages/auth-service/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./my-auth-token"; -export * from "./data"; diff --git a/auth_callout/packages/auth-service/src/my-auth-token.ts b/auth_callout/packages/auth-service/src/my-auth-token.ts deleted file mode 100644 index 27d1e15f..00000000 --- a/auth_callout/packages/auth-service/src/my-auth-token.ts +++ /dev/null @@ -1,4 +0,0 @@ -export type MyAuthToken = { - signature: string; - user: string; -}; diff --git a/auth_callout/packages/auth-service/src/service.ts b/auth_callout/packages/auth-service/src/service.ts deleted file mode 100644 index 7fe8dda8..00000000 --- a/auth_callout/packages/auth-service/src/service.ts +++ /dev/null @@ -1,124 +0,0 @@ -import * as Nats from "nats"; -import * as Jwt from "nats-jwt"; -import * as Nkeys from "nkeys.js"; -import { Auth, fetchAuthToken, verifyAuthTokens } from "./data"; -import { AuthorizationRequestClaims } from "./types"; - -run(); - -async function run() { - let natsUrl: string | undefined; - natsUrl = process.env.NATS_URL; - if (!natsUrl) { - const domain = process.env.DOMAIN; - natsUrl = `tls://${domain}:4222`; - } - const natsUser = "auth"; - const natsPass = process.env.AUTH_NATS_PASSWORD; - const issuerSeed = process.env.NATS_PRIV_NKEY; - console.log(`NATS URL: ${natsUrl}`); - - var enc = new TextEncoder(); - var dec = new TextDecoder(); - - // Parse the issuer account signing key. - const issuerKeyPair = Nkeys.fromSeed(enc.encode(issuerSeed)); - - // Open the NATS connection passing the auth account creds file. - const nc = await Nats.connect({ servers: natsUrl, user: natsUser, pass: natsPass }); - - // Start subscription - const sub = nc.subscribe("$SYS.REQ.USER.AUTH"); - console.log(`listening for ${sub.getSubject()} requests...`); - for await (const msg of sub) { - console.log("Auth service got message"); - // console.log(msg) - await msgHandler(msg, enc, dec, issuerKeyPair); - } -} - -async function msgHandler(req: Nats.Msg, enc: TextEncoder, dec: TextDecoder, issuerKeyPair: Nkeys.KeyPair) { - // Helper function to construct an authorization response. - const respondMsg = async (req: Nats.Msg, userNkey: string, serverId: string, userJwt: string, errMsg: string) => { - let token: string; - try { - token = await Jwt.encodeAuthorizationResponse(userNkey, serverId, issuerKeyPair, { jwt: userJwt, error: errMsg }, {}); - } catch (err) { - console.log("error encoding response JWT: %s", err); - req.respond(undefined); - return; - } - let data = enc.encode(token); - req.respond(data); - }; - - // Check for Xkey header and decrypt - let token: Uint8Array = req.data; - - // Decode the authorization request claims. - let rc: AuthorizationRequestClaims; - try { - Jwt.encodeAuthorizationResponse; - rc = Jwt.decode(dec.decode(token)) as AuthorizationRequestClaims; - } catch (e) { - return respondMsg(req, "", "", "", (e as Error).message); - } - - // Used for creating the auth response. - const userNkey = rc.nats.user_nkey; - const serverId = rc.nats.server_id.id; - - const auth = rc.nats.connect_opts.auth_token; - if (!auth) { - return respondMsg(req, userNkey, serverId, "", "auth token not provided"); - } - let parsedAuth: Auth; - try { - parsedAuth = JSON.parse(auth); - } catch (e) { - return respondMsg(req, "", "", "", (e as Error).message); - } - - const auth_user = parsedAuth.user; - const auth_pass = parsedAuth.password; - const chat_uuid = parsedAuth.chat_uuid; - - // auth_user value is deployment_uuid, check authToken is not null - const authTokens = await fetchAuthToken(auth_user); - if (!authTokens) { - return respondMsg(req, userNkey, serverId, "", "user " + auth_user + " not found"); - } - - const authToken = await verifyAuthTokens(auth_pass, authTokens); - if (!authToken) { - return respondMsg(req, userNkey, serverId, "", "invalid credentials"); - } - - const grantedRooms = [ - "chat.server.initiate_chat", - `chat.client.messages.${authToken.user_uuid}.${authToken.deployment_uuid}.${chat_uuid}`, - `chat.server.messages.${authToken.user_uuid}.${authToken.deployment_uuid}.${chat_uuid}`, - "_INBOX.>", - "$JS.API.STREAM.NAMES", - // `$JS.API.STREAM.NAMES.FastAgency`, - "$JS.API.CONSUMER.INFO.FastAgency.*", - "$JS.API.CONSUMER.CREATE.FastAgency", - "$JS.API.CONSUMER.DURABLE.CREATE.FastAgency.*", - ]; - console.log(`Auth service user ${auth_user} granted permission to subjects: ${JSON.stringify(grantedRooms)}`); - - // User part of the JWT token to issue - // Add "public" because if the allowed array is empty then all is allowed - const user: Partial = { pub: { allow: [...grantedRooms], deny: [] }, sub: { allow: [...grantedRooms], deny: [] } }; - console.log(`Auth service permission: ${JSON.stringify(user)}`); - // Prepare a user JWT. - let ejwt: string; - try { - ejwt = await Jwt.encodeUser(rc.nats.connect_opts.user!, rc.nats.user_nkey, issuerKeyPair, user, { aud: "AUTH" }); - } catch (e) { - console.log("error signing user JWT: %s", e); - return respondMsg(req, userNkey, serverId, "", "error signing user JWT"); - } - - return respondMsg(req, userNkey, serverId, ejwt, ""); -} diff --git a/auth_callout/packages/auth-service/src/types.ts b/auth_callout/packages/auth-service/src/types.ts deleted file mode 100644 index cddfe6e8..00000000 --- a/auth_callout/packages/auth-service/src/types.ts +++ /dev/null @@ -1,56 +0,0 @@ -export type AuthorizationRequestClaims = { - aud?: string; - exp?: number; - jti?: string; - iat?: number; - iss?: string; - name?: string; - nbf?: number; - sub?: string; - nats: { - server_id: { - name: string; - host: string; - id: string; - version?: string; - cluster?: string; - tags?: string[]; - xkey?: string; - }; - user_nkey: string; - client_info: { - host?: string; - id?: number; - user?: string; - name?: string; - tags?: string[]; - name_tag?: string; - kind?: string; - type?: string; - mqtt_id?: string; - nonce?: string; - }; - connect_opts: { - jwt?: string; - nkey?: string; - sig?: string; - auth_token?: string; - user: string; - pass: string; - name?: string; - lang?: string; - version?: string; - protocol: number; - }; - client_tls?: { - version?: string; - cipher?: string; - certs?: string[]; - verified_chains?: string[][]; - }; - request_nonce?: string; - tags?: string[]; - type?: string; - version?: number; - }; -}; diff --git a/auth_callout/packages/auth-service/tsconfig.json b/auth_callout/packages/auth-service/tsconfig.json deleted file mode 100644 index e13b2cc3..00000000 --- a/auth_callout/packages/auth-service/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.settings.json", - "compilerOptions": { - "outDir": "lib", - "rootDir": "src" - }, - "references": [] -} diff --git a/auth_callout/pnpm-lock.yaml b/auth_callout/pnpm-lock.yaml deleted file mode 100644 index 00bf1fa4..00000000 --- a/auth_callout/pnpm-lock.yaml +++ /dev/null @@ -1,1059 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - devDependencies: - tsx: - specifier: ^4.1.2 - version: 4.1.2 - typescript: - specifier: ^4.9.5 - version: 4.9.5 - vite: - specifier: ^4.5.0 - version: 4.5.0(@types/node@20.9.0) - vite-plugin-checker: - specifier: ^0.6.2 - version: 0.6.2(typescript@4.9.5)(vite@4.5.0(@types/node@20.9.0)) - - packages/auth-service: - dependencies: - '@prisma/client': - specifier: ^5.16.1 - version: 5.16.1(prisma@5.16.1) - nats: - specifier: ^2.6.1 - version: 2.18.0 - nats-jwt: - specifier: ^0.0.7 - version: 0.0.7 - nkeys.js: - specifier: ^1.0.5 - version: 1.0.5 - prisma: - specifier: ^5.16.1 - version: 5.16.1 - devDependencies: - '@types/node': - specifier: ^20.9.0 - version: 20.9.0 - -packages: - - '@babel/code-frame@7.22.13': - resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} - 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/highlight@7.22.20': - resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} - engines: {node: '>=6.9.0'} - - '@esbuild/android-arm64@0.18.20': - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.18.20': - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.18.20': - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.18.20': - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.18.20': - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.18.20': - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.18.20': - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.18.20': - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.18.20': - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.18.20': - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.18.20': - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.18.20': - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.18.20': - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.18.20': - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.18.20': - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.18.20': - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.18.20': - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.18.20': - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.18.20': - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.18.20': - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.18.20': - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.18.20': - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@prisma/client@5.16.1': - resolution: {integrity: sha512-wM9SKQjF0qLxdnOZIVAIMKiz6Hu7vDt4FFAih85K1dk/Rr2mdahy6d3QP41K62N9O0DJJA//gUDA3Mp49xsKIg==} - engines: {node: '>=16.13'} - peerDependencies: - prisma: '*' - peerDependenciesMeta: - prisma: - optional: true - - '@prisma/debug@5.16.1': - resolution: {integrity: sha512-JsNgZAg6BD9RInLSrg7ZYzo11N7cVvYArq3fHGSD89HSgtN0VDdjV6bib7YddbcO6snzjchTiLfjeTqBjtArVQ==} - - '@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303': - resolution: {integrity: sha512-HkT2WbfmFZ9WUPyuJHhkiADxazHg8Y4gByrTSVeb3OikP6tjQ7txtSUGu9OBOBH0C13dPKN2qqH12xKtHu/Hiw==} - - '@prisma/engines@5.16.1': - resolution: {integrity: sha512-KkyF3eIUtBIyp5A/rJHCtwQO18OjpGgx18PzjyGcJDY/+vNgaVyuVd+TgwBgeq6NLdd1XMwRCI+58vinHsAdfA==} - - '@prisma/fetch-engine@5.16.1': - resolution: {integrity: sha512-oOkjaPU1lhcA/Rvr4GVfd1NLJBwExgNBE36Ueq7dr71kTMwy++a3U3oLd2ZwrV9dj9xoP6LjCcky799D9nEt4w==} - - '@prisma/get-platform@5.16.1': - resolution: {integrity: sha512-R4IKnWnMkR2nUAbU5gjrPehdQYUUd7RENFD2/D+xXTNhcqczp0N+WEGQ3ViyI3+6mtVcjjNIMdnUTNyu3GxIgA==} - - '@types/node@20.9.0': - resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.pick@4.4.0: - resolution: {integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - nats-jwt@0.0.7: - resolution: {integrity: sha512-4TsK+EvmSufteQJwVnBw3mH0+R8RA/HwOUGZnox6mKh2y0xY9XaUKkoK42A5i/lugTM8jtPTELevr9GZZu6sKw==} - - nats@2.18.0: - resolution: {integrity: sha512-zZF004ejzf67Za0Tva+xphxoxBMNc5IMLqbZ7Ho0j9TMuisjpo+qCd1EktXRCLNxmrZ8O6Tbm1dBsZYNF6yR1A==} - engines: {node: '>= 14.0.0'} - - nkeys.js@1.0.5: - resolution: {integrity: sha512-u25YnRPHiGVsNzwyHnn+PT90sgAhnS8jUJ1nxmkHMFYCJ6+Ic0lv291w7uhRBpJVJ3PH2GWbYqA151lGCRrB5g==} - engines: {node: '>=10.0.0'} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - - prisma@5.16.1: - resolution: {integrity: sha512-Z1Uqodk44diztImxALgJJfNl2Uisl9xDRvqybMKEBYJLNKNhDfAHf+ZIJbZyYiBhLMbKU9cYGdDVG5IIXEnL2Q==} - engines: {node: '>=16.13'} - hasBin: true - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - tiny-invariant@1.3.1: - resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tsx@4.1.2: - resolution: {integrity: sha512-1spM1bFV6MP2s4tO4tDC7g52fsaFdtEWdO4GfGdqi20qUgPbnAJqixOyIAvCSx1DDj3YIUB4CD06owTWUsOAuQ==} - engines: {node: '>=18.0.0'} - hasBin: true - - tweetnacl@1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - vite-plugin-checker@0.6.2: - resolution: {integrity: sha512-YvvvQ+IjY09BX7Ab+1pjxkELQsBd4rPhWNw8WLBeFVxu/E7O+n6VYAqNsKdK/a2luFlX/sMpoWdGFfg4HvwdJQ==} - engines: {node: '>=14.16'} - peerDependencies: - eslint: '>=7' - meow: ^9.0.0 - optionator: ^0.9.1 - stylelint: '>=13' - typescript: '*' - vite: '>=2.0.0' - vls: '*' - vti: '*' - vue-tsc: '>=1.3.9' - peerDependenciesMeta: - eslint: - optional: true - meow: - optional: true - optionator: - optional: true - stylelint: - optional: true - typescript: - optional: true - vls: - optional: true - vti: - optional: true - vue-tsc: - optional: true - - vite@4.5.0: - resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vscode-jsonrpc@6.0.0: - resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} - engines: {node: '>=8.0.0 || >=10.0.0'} - - vscode-languageclient@7.0.0: - resolution: {integrity: sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==} - engines: {vscode: ^1.52.0} - - vscode-languageserver-protocol@3.16.0: - resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==} - - vscode-languageserver-textdocument@1.0.11: - resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} - - vscode-languageserver-types@3.16.0: - resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} - - vscode-languageserver@7.0.0: - resolution: {integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==} - hasBin: true - - vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - -snapshots: - - '@babel/code-frame@7.22.13': - dependencies: - '@babel/highlight': 7.22.20 - chalk: 2.4.2 - - '@babel/helper-validator-identifier@7.22.20': {} - - '@babel/highlight@7.22.20': - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - - '@esbuild/android-arm64@0.18.20': - optional: true - - '@esbuild/android-arm@0.18.20': - optional: true - - '@esbuild/android-x64@0.18.20': - optional: true - - '@esbuild/darwin-arm64@0.18.20': - optional: true - - '@esbuild/darwin-x64@0.18.20': - optional: true - - '@esbuild/freebsd-arm64@0.18.20': - optional: true - - '@esbuild/freebsd-x64@0.18.20': - optional: true - - '@esbuild/linux-arm64@0.18.20': - optional: true - - '@esbuild/linux-arm@0.18.20': - optional: true - - '@esbuild/linux-ia32@0.18.20': - optional: true - - '@esbuild/linux-loong64@0.18.20': - optional: true - - '@esbuild/linux-mips64el@0.18.20': - optional: true - - '@esbuild/linux-ppc64@0.18.20': - optional: true - - '@esbuild/linux-riscv64@0.18.20': - optional: true - - '@esbuild/linux-s390x@0.18.20': - optional: true - - '@esbuild/linux-x64@0.18.20': - optional: true - - '@esbuild/netbsd-x64@0.18.20': - optional: true - - '@esbuild/openbsd-x64@0.18.20': - optional: true - - '@esbuild/sunos-x64@0.18.20': - optional: true - - '@esbuild/win32-arm64@0.18.20': - optional: true - - '@esbuild/win32-ia32@0.18.20': - optional: true - - '@esbuild/win32-x64@0.18.20': - optional: true - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - - '@prisma/client@5.16.1(prisma@5.16.1)': - optionalDependencies: - prisma: 5.16.1 - - '@prisma/debug@5.16.1': {} - - '@prisma/engines-version@5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303': {} - - '@prisma/engines@5.16.1': - dependencies: - '@prisma/debug': 5.16.1 - '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 - '@prisma/fetch-engine': 5.16.1 - '@prisma/get-platform': 5.16.1 - - '@prisma/fetch-engine@5.16.1': - dependencies: - '@prisma/debug': 5.16.1 - '@prisma/engines-version': 5.16.0-24.34ace0eb2704183d2c05b60b52fba5c43c13f303 - '@prisma/get-platform': 5.16.1 - - '@prisma/get-platform@5.16.1': - dependencies: - '@prisma/debug': 5.16.1 - - '@types/node@20.9.0': - dependencies: - undici-types: 5.26.5 - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-regex@5.0.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - balanced-match@1.0.2: {} - - binary-extensions@2.2.0: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - buffer-from@1.1.2: {} - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chokidar@3.5.3: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - commander@8.3.0: {} - - concat-map@0.0.1: {} - - esbuild@0.18.20: - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - - escape-string-regexp@1.0.5: {} - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - fastq@1.15.0: - dependencies: - reusify: 1.0.4 - - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - - fs-extra@11.1.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fsevents@2.3.3: - optional: true - - get-tsconfig@4.7.2: - dependencies: - resolve-pkg-maps: 1.0.0 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - graceful-fs@4.2.11: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.2.0 - - is-extglob@2.1.1: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - js-tokens@4.0.0: {} - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - lodash.debounce@4.0.8: {} - - lodash.pick@4.4.0: {} - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - merge2@1.4.1: {} - - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - nanoid@3.3.7: {} - - nats-jwt@0.0.7: - dependencies: - nkeys.js: 1.0.5 - - nats@2.18.0: - dependencies: - nkeys.js: 1.0.5 - - nkeys.js@1.0.5: - dependencies: - tweetnacl: 1.0.3 - - normalize-path@3.0.0: {} - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - - path-key@3.1.1: {} - - picocolors@1.0.0: {} - - picomatch@2.3.1: {} - - postcss@8.4.31: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - prisma@5.16.1: - dependencies: - '@prisma/engines': 5.16.1 - - queue-microtask@1.2.3: {} - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - resolve-pkg-maps@1.0.0: {} - - reusify@1.0.4: {} - - rollup@3.29.4: - optionalDependencies: - fsevents: 2.3.3 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 - - source-map-js@1.0.2: {} - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.6.1: {} - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - tiny-invariant@1.3.1: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tsx@4.1.2: - dependencies: - esbuild: 0.18.20 - get-tsconfig: 4.7.2 - source-map-support: 0.5.21 - optionalDependencies: - fsevents: 2.3.3 - - tweetnacl@1.0.3: {} - - type-fest@0.21.3: {} - - typescript@4.9.5: {} - - undici-types@5.26.5: {} - - universalify@2.0.1: {} - - vite-plugin-checker@0.6.2(typescript@4.9.5)(vite@4.5.0(@types/node@20.9.0)): - dependencies: - '@babel/code-frame': 7.22.13 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - chokidar: 3.5.3 - commander: 8.3.0 - fast-glob: 3.3.2 - fs-extra: 11.1.1 - lodash.debounce: 4.0.8 - lodash.pick: 4.4.0 - npm-run-path: 4.0.1 - semver: 7.5.4 - strip-ansi: 6.0.1 - tiny-invariant: 1.3.1 - vite: 4.5.0(@types/node@20.9.0) - vscode-languageclient: 7.0.0 - vscode-languageserver: 7.0.0 - vscode-languageserver-textdocument: 1.0.11 - vscode-uri: 3.0.8 - optionalDependencies: - typescript: 4.9.5 - - vite@4.5.0(@types/node@20.9.0): - dependencies: - esbuild: 0.18.20 - postcss: 8.4.31 - rollup: 3.29.4 - optionalDependencies: - '@types/node': 20.9.0 - fsevents: 2.3.3 - - vscode-jsonrpc@6.0.0: {} - - vscode-languageclient@7.0.0: - dependencies: - minimatch: 3.1.2 - semver: 7.5.4 - vscode-languageserver-protocol: 3.16.0 - - vscode-languageserver-protocol@3.16.0: - dependencies: - vscode-jsonrpc: 6.0.0 - vscode-languageserver-types: 3.16.0 - - vscode-languageserver-textdocument@1.0.11: {} - - vscode-languageserver-types@3.16.0: {} - - vscode-languageserver@7.0.0: - dependencies: - vscode-languageserver-protocol: 3.16.0 - - vscode-uri@3.0.8: {} - - yallist@4.0.0: {} diff --git a/auth_callout/pnpm-workspace.yaml b/auth_callout/pnpm-workspace.yaml deleted file mode 100644 index dee51e92..00000000 --- a/auth_callout/pnpm-workspace.yaml +++ /dev/null @@ -1,2 +0,0 @@ -packages: - - "packages/*" diff --git a/auth_callout/run-auth-callout.sh b/auth_callout/run-auth-callout.sh deleted file mode 100755 index 17dcb9be..00000000 --- a/auth_callout/run-auth-callout.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -pnpx prisma generate --schema=packages/auth-service/schema.prisma - -pnpm serve diff --git a/auth_callout/tsconfig.json b/auth_callout/tsconfig.json deleted file mode 100644 index 9243de6b..00000000 --- a/auth_callout/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "files": [], - "references": [ - { - "path": "packages/auth-service" - } - ] -} diff --git a/auth_callout/tsconfig.settings.json b/auth_callout/tsconfig.settings.json deleted file mode 100644 index adefff00..00000000 --- a/auth_callout/tsconfig.settings.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2020", - "module": "ESNext", - "moduleResolution": "Node", - "moduleDetection": "force", - "isolatedModules": true, - "resolveJsonModule": true, - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "composite": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - // - "jsx": "react", - "newLine": "LF", - "noEmitOnError": false, - "noFallthroughCasesInSwitch": true, - "noImplicitAny": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "noUncheckedIndexedAccess": true, - // We use eslint @typescript-eslint/no-unused-vars instead - //"noUnusedLocals": true, - //"noUnusedParameters": true, - "strictNullChecks": true, - "skipLibCheck": true, - "lib": ["dom", "es2021", "esnext.asynciterable"] - } -} diff --git a/scripts/deploy-auth-callout.sh b/scripts/deploy-auth-callout.sh deleted file mode 100755 index 8f1be1b5..00000000 --- a/scripts/deploy-auth-callout.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash - - -# Check if variables are defined -check_variable() { - if [ -z "${!1}" ]; then - echo "ERROR: $1 variable must be defined, exiting" - exit -1 - fi -} - -# Check for required variables -check_variable "TAG" -check_variable "DOMAIN" -check_variable "DATABASE_URL" -check_variable "PY_DATABASE_URL" -check_variable "AUTH_NATS_PASSWORD" -check_variable "NATS_PRIV_NKEY" - -if [[ "$TAG" != "latest" && "$TAG" != "dev" ]]; then - echo "Error: TAG value is not 'dev' or 'latest'. It is '$TAG'. Exiting." - exit -1 -fi - - -if [ ! -f key.pem ]; then - echo "ERROR: key.pem file not found" - exit -1 -fi - - -ssh_command="ssh -o StrictHostKeyChecking=no -i key.pem azureuser@$DOMAIN" - -container_name="auth-callout" -log_file="${container_name}.log" - -echo "INFO: Capturing docker container logs" -$ssh_command "docker logs $container_name >> $log_file 2>&1 || echo 'No container logs to capture'" - -# Check if log file size exceeds 1GB (1073741824 bytes) and trim if necessary -$ssh_command "if [ \$(stat -c%s \"$log_file\") -ge 1073741824 ]; then echo 'Log file size exceeds 1GB, trimming...'; tail -c 1073741824 \"$log_file\" > \"$log_file.tmp\" && mv \"$log_file.tmp\" \"$log_file\"; fi" - -echo "INFO: stopping already running docker container" -$ssh_command "docker stop $container_name || echo 'No containers available to stop'" -$ssh_command "docker container prune -f || echo 'No stopped containers to delete'" - -echo "INFO: pulling docker image" -$ssh_command "echo $GITHUB_PASSWORD | docker login -u '$GITHUB_USERNAME' --password-stdin '$REGISTRY'" -$ssh_command "docker pull ghcr.io/airtai/fastagency-studio-auth-callout:'$TAG'" -sleep 10 - -echo "Deleting old image" -$ssh_command "docker system prune -f || echo 'No images to delete'" - -echo "INFO: starting docker container" -$ssh_command "docker run --name $container_name \ - -e DATABASE_URL='$DATABASE_URL' -e PY_DATABASE_URL='$PY_DATABASE_URL' \ - -e AUTH_NATS_PASSWORD='$AUTH_NATS_PASSWORD' -e NATS_PRIV_NKEY='$NATS_PRIV_NKEY' \ - -e DOMAIN='$DOMAIN' \ - --restart always \ - -d ghcr.io/airtai/fastagency-studio-auth-callout:$TAG" diff --git a/scripts/deploy-nats.sh b/scripts/deploy-nats.sh deleted file mode 100755 index 4be734b3..00000000 --- a/scripts/deploy-nats.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - - -check_variable() { - if [[ -z "${!1}" ]]; then - echo "ERROR: $1 variable must be defined, exiting" - exit -1 - fi -} - - -check_variable "DOMAIN" -check_variable "FASTSTREAM_NATS_PASSWORD" -check_variable "WASP_NATS_PASSWORD" -check_variable "AUTH_NATS_PASSWORD" -check_variable "NATS_PUB_NKEY" - - -if [ ! -f key.pem ]; then - echo "ERROR: key.pem file not found" - exit -1 -fi - - -ssh_command="ssh -o StrictHostKeyChecking=no -i key.pem azureuser@$DOMAIN" - - -echo "INFO: stopping already running NATS container" -$ssh_command "export PORT='$PORT' && docker compose -f nats-docker-compose.yaml down || echo 'No NATS container available to stop'" -$ssh_command "docker container prune -f || echo 'No stopped containers to delete'" -if [ "$CLEAR_JETSTREAM" = true ] ; then - echo "INFO: clearing JetStream data" - $ssh_command "sudo rm -rf ./jetstream" -fi - -echo "INFO: SCPing nats-docker-compose.yaml and config files" -scp -i key.pem ./docker-compose/nats/nats-docker-compose.yaml azureuser@$DOMAIN:/home/azureuser/nats-docker-compose.yaml -envsubst '${DOMAIN}' < ./docker-compose/nats/nats_server.conf > ./nats_server.conf.tmp && mv ./nats_server.conf.tmp ./nats_server.conf -scp -i key.pem ./nats_server.conf azureuser@$DOMAIN:/home/azureuser/nats_server.conf - -echo "INFO: starting NATS container" - -$ssh_command "export DOMAIN='$DOMAIN' FASTSTREAM_NATS_PASSWORD='$FASTSTREAM_NATS_PASSWORD' \ - WASP_NATS_PASSWORD='$WASP_NATS_PASSWORD' \ - AUTH_NATS_PASSWORD='$AUTH_NATS_PASSWORD' \ - NATS_PUB_NKEY='$NATS_PUB_NKEY' \ - && docker compose -f nats-docker-compose.yaml up -d" diff --git a/scripts/deploy-node.sh b/scripts/deploy-node.sh deleted file mode 100755 index 413b1157..00000000 --- a/scripts/deploy-node.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash - - -# Check if variables are defined -check_variable() { - if [ -z "${!1}" ]; then - echo "ERROR: $1 variable must be defined, exiting" - exit -1 - fi -} - -# Check for required variables -check_variable "TAG" -check_variable "GITHUB_USERNAME" -check_variable "GITHUB_PASSWORD" -check_variable "NODE_DOMAIN" -check_variable "PORT" -check_variable "DATABASE_URL" -check_variable "WASP_WEB_CLIENT_URL" -check_variable "JWT_SECRET" -check_variable "GOOGLE_CLIENT_ID" -check_variable "GOOGLE_CLIENT_SECRET" -check_variable "WASP_SERVER_URL" -check_variable "FASTAGENCY_SERVER_URL" -check_variable "WASP_NATS_PASSWORD" - - - -if [ ! -f key.pem ]; then - echo "ERROR: key.pem file not found" - exit -1 -fi - - -ssh_command="ssh -o StrictHostKeyChecking=no -i key.pem azureuser@$NODE_DOMAIN" - -container_name="wasp-backend" -log_file="${container_name}.log" - -echo "INFO: Capturing docker container logs" -$ssh_command "docker logs $container_name >> $log_file 2>&1 || echo 'No container logs to capture'" - -# Check if log file size exceeds 1GB (1073741824 bytes) and trim if necessary -$ssh_command "if [ \$(stat -c%s \"$log_file\") -ge 1073741824 ]; then echo 'Log file size exceeds 1GB, trimming...'; tail -c 1073741824 \"$log_file\" > \"$log_file.tmp\" && mv \"$log_file.tmp\" \"$log_file\"; fi" - -echo "INFO: stopping already running docker container" -$ssh_command "docker stop $container_name || echo 'No containers available to stop'" -$ssh_command "docker container prune -f || echo 'No stopped containers to delete'" - -echo "INFO: pulling docker image" -$ssh_command "echo $GITHUB_PASSWORD | docker login -u '$GITHUB_USERNAME' --password-stdin '$REGISTRY'" -$ssh_command "docker pull ghcr.io/airtai/fastagency-studio-node:'$TAG'" -sleep 10 - -echo "Deleting old image" -$ssh_command "docker system prune -f || echo 'No images to delete'" - -echo "INFO: starting docker container" -$ssh_command "docker run --name $container_name -p $PORT:$PORT -e PORT='$PORT' \ - -e DATABASE_URL='$DATABASE_URL' -e WASP_WEB_CLIENT_URL='$WASP_WEB_CLIENT_URL' \ - -e JWT_SECRET='$JWT_SECRET' -e GOOGLE_CLIENT_ID='$GOOGLE_CLIENT_ID' \ - -e GOOGLE_CLIENT_SECRET='$GOOGLE_CLIENT_SECRET' \ - -e WASP_SERVER_URL='$WASP_SERVER_URL' \ - -e FASTAGENCY_SERVER_URL='$FASTAGENCY_SERVER_URL' \ - -e ADMIN_EMAILS='$ADMIN_EMAILS' -e WASP_NATS_PASSWORD='$WASP_NATS_PASSWORD' \ - --restart always \ - -d ghcr.io/airtai/fastagency-studio-node:$TAG" diff --git a/scripts/deploy.sh b/scripts/deploy.sh deleted file mode 100755 index 6033f037..00000000 --- a/scripts/deploy.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash - - -check_variable() { - if [[ -z "${!1}" ]]; then - echo "ERROR: $1 variable must be defined, exiting" - exit -1 - fi -} - -check_variable "TAG" -check_variable "GITHUB_USERNAME" -check_variable "GITHUB_PASSWORD" -check_variable "DOMAIN" -check_variable "DATABASE_URL" -check_variable "PY_DATABASE_URL" -check_variable "AZURE_API_VERSION" -check_variable "AZURE_API_ENDPOINT" -check_variable "AZURE_GPT35_MODEL" -check_variable "AZURE_OPENAI_API_KEY" -check_variable "BING_API_KEY" -check_variable "FASTAGENCY_SERVER_URL" -check_variable "FASTSTREAM_NATS_PASSWORD" - - -if [ ! -f key.pem ]; then - echo "ERROR: key.pem file not found" - exit -1 -fi - - -ssh_command="ssh -o StrictHostKeyChecking=no -i key.pem azureuser@$DOMAIN" - -container_name="fastagency" -log_file="${container_name}.log" - -echo "INFO: Capturing docker container logs" -$ssh_command "docker logs $container_name >> $log_file 2>&1 || echo 'No container logs to capture'" - -# Check if log file size exceeds 1GB (1073741824 bytes) and trim if necessary -$ssh_command "if [ \$(stat -c%s \"$log_file\") -ge 1073741824 ]; then echo 'Log file size exceeds 1GB, trimming...'; tail -c 1073741824 \"$log_file\" > \"$log_file.tmp\" && mv \"$log_file.tmp\" \"$log_file\"; fi" - -echo "INFO: stopping already running docker containers" -$ssh_command "export PORT='$PORT' && docker compose down || echo 'No containers available to stop'" -$ssh_command "docker container prune -f || echo 'No stopped containers to delete'" - -echo "INFO: SCPing docker-compose.yaml" -scp -i key.pem ./docker-compose/fastapi/docker-compose.yaml azureuser@$DOMAIN:/home/azureuser/docker-compose.yaml -scp -i key.pem -r ./etc azureuser@$DOMAIN:/home/azureuser - -echo "INFO: pulling docker image" -$ssh_command "echo $GITHUB_PASSWORD | docker login -u '$GITHUB_USERNAME' --password-stdin '$REGISTRY'" -$ssh_command "docker pull ghcr.io/airtai/fastagency-studio:'$TAG'" -sleep 10 - -echo "Deleting old image" -$ssh_command "docker system prune -f || echo 'No images to delete'" - -echo "INFO: starting docker containers" - -$ssh_command "export TAG='$TAG' container_name='$container_name' \ - DOMAIN='$DOMAIN' PY_DATABASE_URL='$PY_DATABASE_URL' DATABASE_URL='$DATABASE_URL' \ - AZURE_API_VERSION='$AZURE_API_VERSION' AZURE_API_ENDPOINT='$AZURE_API_ENDPOINT' \ - AZURE_GPT35_MODEL='$AZURE_GPT35_MODEL' AZURE_OPENAI_API_KEY='$AZURE_OPENAI_API_KEY' \ - FASTAGENCY_SERVER_URL='$FASTAGENCY_SERVER_URL' BING_API_KEY='$BING_API_KEY' \ - FASTSTREAM_NATS_PASSWORD='$FASTSTREAM_NATS_PASSWORD' \ - && docker compose up -d"