From c02e7afca1fe1b00ab7ed317c6eb1f951c4d9ac4 Mon Sep 17 00:00:00 2001 From: ahasani194 Date: Tue, 31 Mar 2026 21:26:01 +0330 Subject: [PATCH] update docker --- .env.example | 35 +++--- Dockerfile | 94 +++++++++------- docker-compose.yml | 97 ++++++++++------- package.json | 4 +- pnpm-lock.yaml | 212 ++++++++++-------------------------- prisma/schema/schema.prisma | 6 +- 6 files changed, 193 insertions(+), 255 deletions(-) diff --git a/.env.example b/.env.example index ea31974..35e6587 100644 --- a/.env.example +++ b/.env.example @@ -1,24 +1,19 @@ -# Server Configuration -NODE_ENV=development -PORT=5002 -# Database Configuration -DB_HOST=localhost -DB_PORT=3306 -DB_NAME=consumer_db -DB_USER=consumer_user -DB_PASSWORD=consumer_password -DB_ROOT_PASSWORD=root_password -DATABASE_URL=mysql://consumer_user:consumer_password@localhost:3306/consumer_db -SHADOW_DATABASE_URL=mysql://consumer_user:consumer_password@localhost:3306/consumer_db_shadow +DATABASE_NAME="psp" +DATABASE_PASSWORD="psp" +DATABASE_USER="psp" +DATABASE_PORT="3306" +DATABASE_HOST="database" -# JWT Configuration -JWT_SECRET=your_super_secret_jwt_key_change_this_in_production -JWT_EXPIRATION=604800 +DATABASE_URL="mysql://psp:psp@database:3306/psp" +SHADOW_DATABASE_URL="mysql://psp:psp@database:3306/psp_sh" + +JWT_SECRET="Pos_Sec_J" +JWT_EXPIRES_IN="604800" +OTP_STATIC_CODE="12345" + +PORT="5002" +DB_ROOT_PASSWORD="root_password" +NODE_ENV="production" -# CORS Configuration -CORS_ORIGINS=http://localhost:5000,http://127.0.0.1:5000 -# File Upload Configuration -UPLOAD_PATH=./uploads -MAX_FILE_SIZE=10485760 diff --git a/Dockerfile b/Dockerfile index 8445115..274ce9e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,61 +1,79 @@ -# Build stage -FROM node:20-alpine AS builder +FROM node:23-slim AS builder WORKDIR /app +# Set DEBIAN_FRONTEND to noninteractive to avoid prompts during apt-get operations +# ENV DEBIAN_FRONTEND=noninteractive -# Install pnpm +# Copy your custom sources.list file into the container +# COPY custom-sources.list /etc/apt/sources.list + +# RUN release=$(grep VERSION_CODENAME= /etc/os-release | cut -d= -f2) && \ +# echo "deb http://mirror.arvancloud.ir/debian Bookworm main contrib non-free non-free-firmware" > /etc/apt/sources.list && \ +# echo "deb http://mirror.arvancloud.ir/debian-security Bookworm-security main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \ +# echo "deb http://mirror.arvancloud.ir/debian Bookworm-updates main contrib non-free non-free-firmware" >> /etc/apt/sources.list + + +# RUN apt-get update --allow-unauthenticated && apt-get install -y --no-install-recommends ca-certificates && update-ca-certificates + +# RUN apt-get update -y && apt-get install -y openssl + +RUN npm config set registry https://hub.megan.ir/npm RUN npm install -g pnpm -# Copy dependency files + +# ARG NODE_ENV +# ARG PORT +# ARG DATABASE_NAME +# ARG DATABASE_USER +# ARG DATABASE_PASSWORD +# ARG DATABASE_PORT +# ARG DATABASE_HOST +# ARG DATABASE_URL +# ARG SHADOW_DATABASE_URL +# ARG JWT_SECRET +# ARG JWT_EXPIRES_IN +# ARG OTP_STATIC_CODE + + +# ENV NODE_ENV=${NODE_ENV} +# ENV PORT=${PORT} +# ENV DATABASE_NAME=${DATABASE_NAME} +# ENV DATABASE_USER=${DATABASE_USER} +# ENV DATABASE_PASSWORD=${DATABASE_PASSWORD} +# ENV DATABASE_PORT=${DATABASE_PORT} +# ENV DATABASE_HOST=${DATABASE_HOST} +# ENV DATABASE_URL=${DATABASE_URL} +# ENV SHADOW_DATABASE_URL=${SHADOW_DATABASE_URL} +# ENV JWT_SECRET=${JWT_SECRET} +# ENV JWT_EXPIRES_IN=${JWT_EXPIRES_IN} +# ENV OTP_STATIC_CODE=${OTP_STATIC_CODE} + COPY pnpm-lock.yaml package.json ./ -# Install dependencies RUN pnpm install --frozen-lockfile -# Copy source code COPY . . -# Generate Prisma client and build the application -RUN pnpm exec prisma generate +ENV PRISMA_CLIENT_ENGINE_TYPE=binary + +# RUN pnpm prisma generate RUN pnpm run build -# Production stage -FROM node:20-alpine + +FROM node:23-slim WORKDIR /app -# Install pnpm +RUN npm config set registry https://hub.megan.ir/npm RUN npm install -g pnpm -# Install dumb-init for proper signal handling -RUN apk add --no-cache dumb-init +COPY --from=builder /app/node_modules ./node_modules +# RUN pnpm prune --prod -# Copy package files -COPY package.json pnpm-lock.yaml ./ - -# Install only production dependencies -RUN pnpm install --frozen-lockfile --prod - -# Copy built application from builder COPY --from=builder /app/dist ./dist -COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma +# COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma +# COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma COPY prisma ./prisma -# Create non-root user -RUN addgroup -g 1001 -S nodejs && \ - adduser -S nodejs -u 1001 +CMD ["node", "dist/src/main.js"] -USER nodejs - -# Expose port -EXPOSE 5002 - -# Health check -HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ - CMD node -e "require('http').get('http://localhost:5002/api/v1/health', (r) => {if (r.statusCode !== 200) throw new Error(r.statusCode)})" - -# Use dumb-init to handle signals properly -ENTRYPOINT ["dumb-init", "--"] - -# Start application -CMD ["node", "dist/main.js"] diff --git a/docker-compose.yml b/docker-compose.yml index a1a9125..0ac30c3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,45 +2,68 @@ version: "3.9" services: database: - image: mariadb:11.4-jammy - container_name: consumer_api_db + image: mysql:8.0 + container_name: psp_consumer_api_db restart: unless-stopped environment: - MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-root_password} - MARIADB_DATABASE: ${DB_NAME:-consumer_db} - MARIADB_USER: ${DB_USER:-consumer_user} - MARIADB_PASSWORD: ${DB_PASSWORD:-consumer_password} - MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: "false" + MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} + MYSQL_DATABASE: ${DATABASE_NAME} + MYSQL_USER: ${DATABASE_USER} + MYSQL_PASSWORD: ${DATABASE_PASSWORD} ports: - - "${DB_PORT:-3306}:3306" + - "${DATABASE_PORT}:3306" volumes: - - mariadb_data:/var/lib/mysql + - db_data:/var/lib/mysql - ./prisma/migrations:/docker-entrypoint-initdb.d healthcheck: - test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] - interval: 10s - timeout: 5s - retries: 5 + test: "mysqladmin ping -h 127.0.0.1 -u ${DATABASE_USER} -p'${DB_ROOT_PASSWORD}'" + interval: 15s # Shortened interval, as MySQL is starting fast now + timeout: 5s # Shorter timeout + retries: 5 # Keep retries + start_period: 30s # Reduced start_period since MySQL is fast + networks: - - consumer_network + - psp_consumer_network api: build: context: . dockerfile: Dockerfile - container_name: consumer_api + args: + # Pass individual components that prisma generate needs during build + NODE_ENV: ${NODE_ENV:-production} + PORT: ${PORT} + DATABASE_NAME: ${DATABASE_NAME} # From .env + DATABASE_USER: ${DATABASE_USER} # From .env + DATABASE_PASSWORD: ${DATABASE_PASSWORD} # From .env + DATABASE_PORT: ${DATABASE_PORT} # From .env + DATABASE_HOST: ${DATABASE_HOST} # From .env + # Construct the DATABASE_URL and SHADOW_DATABASE_URL for the build context + # Use 'database' as the host, as per docker-compose networking + DATABASE_URL: mysql://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME} + SHADOW_DATABASE_URL: mysql://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}_shadow + JWT_SECRET: ${JWT_SECRET} # From .env + JWT_EXPIRES_IN: ${JWT_EXPIRES_IN} # From .env (ensure consistency with Dockerfile ARG) + OTP_STATIC_CODE: ${OTP_STATIC_CODE} # From .env + container_name: psp_consumer_api restart: unless-stopped depends_on: database: condition: service_healthy environment: NODE_ENV: ${NODE_ENV:-production} - PORT: ${PORT:-5002} - DATABASE_URL: mysql://${DB_USER:-consumer_user}:${DB_PASSWORD:-consumer_password}@database:3306/${DB_NAME:-consumer_db} - SHADOW_DATABASE_URL: mysql://${DB_USER:-consumer_user}:${DB_PASSWORD:-consumer_password}@database:3306/${DB_NAME:-consumer_db}_shadow - JWT_SECRET: ${JWT_SECRET:-your_jwt_secret_key_change_in_production} - JWT_EXPIRATION: ${JWT_EXPIRATION:-604800} + PORT: ${PORT} + DATABASE_NAME: ${DATABASE_NAME} # From .env + DATABASE_USER: ${DATABASE_USER} # From .env + DATABASE_PASSWORD: ${DATABASE_PASSWORD} # From .env + DATABASE_PORT: ${DATABASE_PORT} # From .env + DATABASE_HOST: ${DATABASE_HOST} # From .env + DATABASE_URL: mysql://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME} + SHADOW_DATABASE_URL: mysql://${DATABASE_USER}:${DATABASE_PASSWORD}@${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}_shadow + JWT_SECRET: ${JWT_SECRET} + JWT_EXPIRES_IN: ${JWT_EXPIRES_IN} CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost:5000,http://127.0.0.1:5000} + OTP_STATIC_CODE: ${OTP_STATIC_CODE} # From .env ports: - "${PORT:-5002}:5002" volumes: @@ -48,26 +71,26 @@ services: - /app/dist - /app/node_modules networks: - - consumer_network - healthcheck: - test: - [ - "CMD", - "wget", - "--quiet", - "--tries=1", - "--spider", - "http://localhost:5002/api/v1/health", - ] - interval: 30s - timeout: 10s - retries: 3 - start_period: 10s + - psp_consumer_network + # healthcheck: + # test: + # [ + # "CMD", + # "wget", + # "--quiet", + # "--tries=1", + # "--spider", + # "http://localhost:5002/api/v1/health", + # ] + # interval: 30s + # timeout: 10s + # retries: 3 + # start_period: 10s volumes: - mariadb_data: + db_data: driver: local networks: - consumer_network: + psp_consumer_network: driver: bridge diff --git a/package.json b/package.json index 4d6c939..16b2983 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "jsonwebtoken": "^9.0.3", "multer": "^2.0.2", "mysql2": "^3.15.3", + "prisma": "^7.2.0", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1", "uuid": "^13.0.0" @@ -43,7 +44,6 @@ "jest": "^30.0.0", "prettier": "^3.4.2", "prettier-plugin-prisma": "^5.0.0", - "prisma": "^7.2.0", "source-map-support": "^0.5.21", "supertest": "^7.0.0", "ts-jest": "^29.2.5", @@ -84,7 +84,7 @@ "start": "nest start", "start:debug": "nest start --debug --watch", "start:dev": "nest start --watch", - "start:prod": "node dist/main", + "start:prod": "node dist/src/main", "test": "jest", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a4ca4f6..bc4a649 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,6 +62,9 @@ importers: mysql2: specifier: ^3.15.3 version: 3.15.3 + prisma: + specifier: ^7.2.0 + version: 7.2.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3) reflect-metadata: specifier: ^0.2.2 version: 0.2.2 @@ -126,9 +129,6 @@ importers: prettier-plugin-prisma: specifier: ^5.0.0 version: 5.0.0(prettier@3.7.4) - prisma: - specifier: ^7.2.0 - version: 7.2.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3) source-map-support: specifier: ^0.5.21 version: 0.5.21 @@ -371,7 +371,7 @@ packages: resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==} '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==, tarball: https://hub.megan.ir/repository/npm/@colors/colors/-/colors-1.5.0.tgz} + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@colors/colors/-/colors-1.5.0.tgz} engines: {node: '>=0.1.90'} '@cspotcode/source-map-support@0.8.1': @@ -402,160 +402,108 @@ packages: resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==, tarball: https://hub.megan.ir/repository/npm/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz} '@esbuild/aix-ppc64@0.27.1': - resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==, tarball: https://hub.megan.ir/repository/npm/@esbuild/aix-ppc64/-/aix-ppc64-0.27.1.tgz} + resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/aix-ppc64/-/aix-ppc64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] '@esbuild/android-arm64@0.27.1': - resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==, tarball: https://hub.megan.ir/repository/npm/@esbuild/android-arm64/-/android-arm64-0.27.1.tgz} + resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/android-arm64/-/android-arm64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [arm64] - os: [android] '@esbuild/android-arm@0.27.1': - resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==, tarball: https://hub.megan.ir/repository/npm/@esbuild/android-arm/-/android-arm-0.27.1.tgz} + resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/android-arm/-/android-arm-0.27.1.tgz} engines: {node: '>=18'} - cpu: [arm] - os: [android] '@esbuild/android-x64@0.27.1': - resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==, tarball: https://hub.megan.ir/repository/npm/@esbuild/android-x64/-/android-x64-0.27.1.tgz} + resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/android-x64/-/android-x64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [x64] - os: [android] '@esbuild/darwin-arm64@0.27.1': - resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==, tarball: https://hub.megan.ir/repository/npm/@esbuild/darwin-arm64/-/darwin-arm64-0.27.1.tgz} + resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/darwin-arm64/-/darwin-arm64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] '@esbuild/darwin-x64@0.27.1': - resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==, tarball: https://hub.megan.ir/repository/npm/@esbuild/darwin-x64/-/darwin-x64-0.27.1.tgz} + resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/darwin-x64/-/darwin-x64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [x64] - os: [darwin] '@esbuild/freebsd-arm64@0.27.1': - resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==, tarball: https://hub.megan.ir/repository/npm/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.1.tgz} + resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] '@esbuild/freebsd-x64@0.27.1': - resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==, tarball: https://hub.megan.ir/repository/npm/@esbuild/freebsd-x64/-/freebsd-x64-0.27.1.tgz} + resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/freebsd-x64/-/freebsd-x64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] '@esbuild/linux-arm64@0.27.1': - resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==, tarball: https://hub.megan.ir/repository/npm/@esbuild/linux-arm64/-/linux-arm64-0.27.1.tgz} + resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/linux-arm64/-/linux-arm64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [arm64] - os: [linux] '@esbuild/linux-arm@0.27.1': - resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==, tarball: https://hub.megan.ir/repository/npm/@esbuild/linux-arm/-/linux-arm-0.27.1.tgz} + resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/linux-arm/-/linux-arm-0.27.1.tgz} engines: {node: '>=18'} - cpu: [arm] - os: [linux] '@esbuild/linux-ia32@0.27.1': - resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==, tarball: https://hub.megan.ir/repository/npm/@esbuild/linux-ia32/-/linux-ia32-0.27.1.tgz} + resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/linux-ia32/-/linux-ia32-0.27.1.tgz} engines: {node: '>=18'} - cpu: [ia32] - os: [linux] '@esbuild/linux-loong64@0.27.1': - resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==, tarball: https://hub.megan.ir/repository/npm/@esbuild/linux-loong64/-/linux-loong64-0.27.1.tgz} + resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/linux-loong64/-/linux-loong64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [loong64] - os: [linux] '@esbuild/linux-mips64el@0.27.1': - resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==, tarball: https://hub.megan.ir/repository/npm/@esbuild/linux-mips64el/-/linux-mips64el-0.27.1.tgz} + resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/linux-mips64el/-/linux-mips64el-0.27.1.tgz} engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] '@esbuild/linux-ppc64@0.27.1': - resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==, tarball: https://hub.megan.ir/repository/npm/@esbuild/linux-ppc64/-/linux-ppc64-0.27.1.tgz} + resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/linux-ppc64/-/linux-ppc64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] '@esbuild/linux-riscv64@0.27.1': - resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==, tarball: https://hub.megan.ir/repository/npm/@esbuild/linux-riscv64/-/linux-riscv64-0.27.1.tgz} + resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/linux-riscv64/-/linux-riscv64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] '@esbuild/linux-s390x@0.27.1': - resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==, tarball: https://hub.megan.ir/repository/npm/@esbuild/linux-s390x/-/linux-s390x-0.27.1.tgz} + resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/linux-s390x/-/linux-s390x-0.27.1.tgz} engines: {node: '>=18'} - cpu: [s390x] - os: [linux] '@esbuild/linux-x64@0.27.1': - resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==, tarball: https://hub.megan.ir/repository/npm/@esbuild/linux-x64/-/linux-x64-0.27.1.tgz} + resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/linux-x64/-/linux-x64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [x64] - os: [linux] '@esbuild/netbsd-arm64@0.27.1': - resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==, tarball: https://hub.megan.ir/repository/npm/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.1.tgz} + resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] '@esbuild/netbsd-x64@0.27.1': - resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==, tarball: https://hub.megan.ir/repository/npm/@esbuild/netbsd-x64/-/netbsd-x64-0.27.1.tgz} + resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/netbsd-x64/-/netbsd-x64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] '@esbuild/openbsd-arm64@0.27.1': - resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==, tarball: https://hub.megan.ir/repository/npm/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.1.tgz} + resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] '@esbuild/openbsd-x64@0.27.1': - resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==, tarball: https://hub.megan.ir/repository/npm/@esbuild/openbsd-x64/-/openbsd-x64-0.27.1.tgz} + resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/openbsd-x64/-/openbsd-x64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] '@esbuild/openharmony-arm64@0.27.1': - resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==, tarball: https://hub.megan.ir/repository/npm/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.1.tgz} + resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] '@esbuild/sunos-x64@0.27.1': - resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==, tarball: https://hub.megan.ir/repository/npm/@esbuild/sunos-x64/-/sunos-x64-0.27.1.tgz} + resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/sunos-x64/-/sunos-x64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [x64] - os: [sunos] '@esbuild/win32-arm64@0.27.1': - resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==, tarball: https://hub.megan.ir/repository/npm/@esbuild/win32-arm64/-/win32-arm64-0.27.1.tgz} + resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/win32-arm64/-/win32-arm64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [arm64] - os: [win32] '@esbuild/win32-ia32@0.27.1': - resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==, tarball: https://hub.megan.ir/repository/npm/@esbuild/win32-ia32/-/win32-ia32-0.27.1.tgz} + resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/win32-ia32/-/win32-ia32-0.27.1.tgz} engines: {node: '>=18'} - cpu: [ia32] - os: [win32] '@esbuild/win32-x64@0.27.1': - resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==, tarball: https://hub.megan.ir/repository/npm/@esbuild/win32-x64/-/win32-x64-0.27.1.tgz} + resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@esbuild/win32-x64/-/win32-x64-0.27.1.tgz} engines: {node: '>=18'} - cpu: [x64] - os: [win32] '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} @@ -1014,7 +962,7 @@ packages: resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==} '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, tarball: https://hub.megan.ir/repository/npm/@pkgjs/parseargs/-/parseargs-0.11.0.tgz} + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@pkgjs/parseargs/-/parseargs-0.11.0.tgz} engines: {node: '>=14'} '@pkgr/core@0.2.9': @@ -1212,7 +1160,7 @@ packages: resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} '@types/react@19.2.7': - resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==, tarball: https://hub.megan.ir/repository/npm/@types/react/-/react-19.2.7.tgz} + resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@types/react/-/react-19.2.7.tgz} '@types/send@1.2.1': resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==} @@ -1301,107 +1249,62 @@ packages: resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} '@unrs/resolver-binding-android-arm-eabi@1.11.1': - resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz} - cpu: [arm] - os: [android] + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz} '@unrs/resolver-binding-android-arm64@1.11.1': - resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz} - cpu: [arm64] - os: [android] + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz} '@unrs/resolver-binding-darwin-arm64@1.11.1': - resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz} - cpu: [arm64] - os: [darwin] + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz} '@unrs/resolver-binding-darwin-x64@1.11.1': - resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz} - cpu: [x64] - os: [darwin] + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz} '@unrs/resolver-binding-freebsd-x64@1.11.1': - resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz} - cpu: [x64] - os: [freebsd] + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz} '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz} - cpu: [arm] - os: [linux] + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz} '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz} - cpu: [arm] - os: [linux] + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz} '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz} - cpu: [arm64] - os: [linux] - libc: [glibc] + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz} '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz} - cpu: [arm64] - os: [linux] - libc: [musl] + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz} '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz} - cpu: [ppc64] - os: [linux] - libc: [glibc] + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz} '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz} - cpu: [riscv64] - os: [linux] - libc: [glibc] + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz} '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz} - cpu: [riscv64] - os: [linux] - libc: [musl] + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz} '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz} - cpu: [s390x] - os: [linux] - libc: [glibc] + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz} '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz} - cpu: [x64] - os: [linux] - libc: [glibc] + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz} '@unrs/resolver-binding-linux-x64-musl@1.11.1': - resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz} - cpu: [x64] - os: [linux] - libc: [musl] + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz} '@unrs/resolver-binding-wasm32-wasi@1.11.1': - resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz} + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz} engines: {node: '>=14.0.0'} - cpu: [wasm32] '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz} - cpu: [arm64] - os: [win32] + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz} '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz} - cpu: [ia32] - os: [win32] + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz} '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==, tarball: https://hub.megan.ir/repository/npm/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz} - cpu: [x64] - os: [win32] + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -1848,7 +1751,7 @@ packages: engines: {node: '>= 8'} csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==, tarball: https://hub.megan.ir/repository/npm/csstype/-/csstype-3.2.3.tgz} + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/csstype/-/csstype-3.2.3.tgz} dayjs@1.11.19: resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} @@ -2212,9 +2115,8 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://hub.megan.ir/repository/npm/fsevents/-/fsevents-2.3.3.tgz} + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/fsevents/-/fsevents-2.3.3.tgz} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -3103,7 +3005,7 @@ packages: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} react-dom@19.2.1: - resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==, tarball: https://hub.megan.ir/repository/npm/react-dom/-/react-dom-19.2.1.tgz} + resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/react-dom/-/react-dom-19.2.1.tgz} peerDependencies: react: ^19.2.1 @@ -3111,7 +3013,7 @@ packages: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} react@19.2.1: - resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==, tarball: https://hub.megan.ir/repository/npm/react/-/react-19.2.1.tgz} + resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/react/-/react-19.2.1.tgz} engines: {node: '>=0.10.0'} readable-stream@3.6.2: @@ -3179,7 +3081,7 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==, tarball: https://hub.megan.ir/repository/npm/scheduler/-/scheduler-0.27.0.tgz} + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/scheduler/-/scheduler-0.27.0.tgz} schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} @@ -3522,7 +3424,7 @@ packages: hasBin: true uglify-js@3.19.3: - resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==, tarball: https://hub.megan.ir/repository/npm/uglify-js/-/uglify-js-3.19.3.tgz} + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==, tarball: https://repo.hmirror.ir/artifactory/api/npm/mirror-npm/uglify-js/-/uglify-js-3.19.3.tgz} engines: {node: '>=0.8.0'} hasBin: true diff --git a/prisma/schema/schema.prisma b/prisma/schema/schema.prisma index ba604c2..e5b0faa 100644 --- a/prisma/schema/schema.prisma +++ b/prisma/schema/schema.prisma @@ -1,7 +1,7 @@ generator client { - provider = "prisma-client" - output = "../../src/generated/prisma" - moduleFormat = "cjs" + provider = "prisma-client-js" + // output = "../../src/generated/prisma" + // moduleFormat = "cjs" previewFeatures = ["views"] }