diff --git a/Dockerfile b/Dockerfile index b4268ec..d8eb365 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,10 +2,9 @@ FROM node:20-alpine WORKDIR /app COPY package*.json ./ -RUN npm install +RUN npm install --legacy-peer-deps COPY . . -# RUN npm run dev EXPOSE 3000 CMD ["npm", "run", "dev"] diff --git a/app/api/graphql/route.ts b/app/api/graphql/route.ts index 019b725..baf615e 100644 --- a/app/api/graphql/route.ts +++ b/app/api/graphql/route.ts @@ -1,9 +1,8 @@ import { ApolloServer } from '@apollo/server'; import { startServerAndCreateNextHandler } from '@as-integrations/next'; -import { NextRequest } from 'next/server'; import { typeDefs, resolvers } from '@/graphql'; const server = new ApolloServer({ typeDefs, resolvers, introspection: process.env.NODE_ENV === 'development' }); -const handler = startServerAndCreateNextHandler(server, { context: async (req: NextRequest) => ({ req }) }); +const handler = startServerAndCreateNextHandler(server as any, { context: async (req) => ({ req }) }); export { handler as GET, handler as POST }; diff --git a/app/api/users/route.ts b/app/api/users/route.ts new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yaml b/docker-compose.yaml index 80a28f2..b8c6b20 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -6,12 +6,12 @@ services: dockerfile: Dockerfile ports: - "3000:3000" + networks: + - dbConnect env_file: - .env depends_on: - storage - environment: - - name=value volumes: - .:/app - /app/node_modules @@ -20,10 +20,20 @@ services: image: mongo:6 container_name: storage restart: always + networks: + - dbConnect + environment: + MONGO_INITDB_ROOT_USERNAME: admin + MONGO_INITDB_ROOT_PASSWORD: secret123 + MONGO_INITDB_DATABASE: evyosdb ports: - "27017:27017" volumes: - storage_data:/data/db +networks: + dbConnect: + driver: bridge + volumes: storage_data: diff --git a/graphql/index.ts b/graphql/index.ts index abf02bd..42e1439 100644 --- a/graphql/index.ts +++ b/graphql/index.ts @@ -1,6 +1,8 @@ import { mergeTypeDefs, mergeResolvers } from "@graphql-tools/merge"; -import { userTypeDefs } from "./schema/userSchema"; +import { userTypeDefs } from "./schema/userTypeDefs"; import { userResolvers } from "./resolvers/userResolvers"; +import { personTypeDefs } from "./schema/personTypeDefs"; +import { personResolvers } from "./resolvers/personResolvers"; -export const typeDefs = mergeTypeDefs([userTypeDefs]); -export const resolvers = mergeResolvers([userResolvers]); +export const typeDefs = mergeTypeDefs([userTypeDefs, personTypeDefs]); +export const resolvers = mergeResolvers([userResolvers, personResolvers]); diff --git a/graphql/resolvers.ts b/graphql/resolvers.ts deleted file mode 100644 index b1b4cf5..0000000 --- a/graphql/resolvers.ts +++ /dev/null @@ -1,11 +0,0 @@ -import clientPromise from '@/lib/mongodb'; - -export const resolvers = { - Query: { - users: async () => { - const client = await clientPromise; - const db = client.db('test'); - return db.collection('users').find().toArray(); - }, - }, -}; diff --git a/graphql/resolvers/personResolvers.ts b/graphql/resolvers/personResolvers.ts new file mode 100644 index 0000000..a798236 --- /dev/null +++ b/graphql/resolvers/personResolvers.ts @@ -0,0 +1,37 @@ +import { Person } from "@/models/People"; +import { GraphQLError } from "graphql"; + +export const personResolvers = { + Query: { + persons: async () => { + try { + return await Person.find(); + } catch (err: any) { + throw new GraphQLError(err.message); + } + }, + person: async (_: any, { id }: { id: string }) => { + try { + const person = await Person.findById(id); + if (!person) throw new GraphQLError("Person not found"); + return person; + } catch (err: any) { + throw new GraphQLError(err.message); + } + }, + }, + + Mutation: { + createPerson: async (_: any, { input }: any) => { + try { + const person = await Person.create({ + ...input, + birthDate: new Date(input.birthDate), + }); + return person; + } catch (err: any) { + throw new GraphQLError(err.message); + } + }, + }, +}; diff --git a/graphql/resolvers/userResolvers.ts b/graphql/resolvers/userResolvers.ts index 12c6e02..35fa2db 100644 --- a/graphql/resolvers/userResolvers.ts +++ b/graphql/resolvers/userResolvers.ts @@ -1,19 +1,22 @@ -// graphql/resolvers/userResolvers.ts import { connectDB } from '@/lib/mongodb'; -import User from '@/models/User'; +import { Users, IUser } from '@/models/Users'; +import { Types } from 'mongoose'; export const userResolvers = { Query: { users: async () => { await connectDB(); - const users = await User.find().lean(); + const users = await Users.find().populate("person").lean(); return users; }, }, Mutation: { - addUser: async (_: any, { name, email }: { name: string; email: string }) => { + createUser: async (parent: any, args: { input: IUser }) => { await connectDB(); - const user = new User({ name, email }); + const user = new Users({ + ...args.input, + person: new Types.ObjectId(args.input.person), + }); await user.save(); return user; }, diff --git a/graphql/schema.ts b/graphql/schema.ts deleted file mode 100644 index 7446529..0000000 --- a/graphql/schema.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { gql } from 'graphql-tag'; - -export const typeDefs = gql` - type User { - _id: ID! - name: String! - } - - type Query { - users: [User!]! - } -`; diff --git a/graphql/schema/personTypeDefs.ts b/graphql/schema/personTypeDefs.ts new file mode 100644 index 0000000..8734450 --- /dev/null +++ b/graphql/schema/personTypeDefs.ts @@ -0,0 +1,49 @@ +import { gql } from "graphql-tag"; + +export const personTypeDefs = gql` + scalar Date + + type Person { + id: ID! + firstName: String! + surname: String! + middleName: String! + sexCode: String! + personRef: String! + personTag: String! + fatherName: String! + motherName: String! + countryCode: String! + nationalIdentityId: String! + birthPlace: String! + birthDate: Date! + taxNo: String! + birthname: String! + } + + input CreatePersonInput { + firstName: String! + surname: String! + middleName: String! + sexCode: String! + personRef: String! + personTag: String! + fatherName: String! + motherName: String! + countryCode: String! + nationalIdentityId: String! + birthPlace: String! + birthDate: Date! + taxNo: String! + birthname: String! + } + + type Query { + persons: [Person!]! + person(id: ID!): Person + } + + type Mutation { + createPerson(input: CreatePersonInput!): Person! + } +`; diff --git a/graphql/schema/userSchema.ts b/graphql/schema/userSchema.ts deleted file mode 100644 index 274a7dc..0000000 --- a/graphql/schema/userSchema.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { gql } from "graphql-tag"; - -export const userTypeDefs = gql` - type User { - _id: ID! - name: String! - email: String! - } - - type Query { - users: [User!]! - } -`; \ No newline at end of file diff --git a/graphql/schema/userTypeDefs.ts b/graphql/schema/userTypeDefs.ts new file mode 100644 index 0000000..4a03429 --- /dev/null +++ b/graphql/schema/userTypeDefs.ts @@ -0,0 +1,75 @@ +import { gql } from "graphql-tag"; + +export const userTypeDefs = gql` + """Represents a single token entry with a prefix and value""" + type CollectionTokenItem { + prefix: String! + token: String! + } + + """Represents the collection of tokens assigned to a user""" + type CollectionToken { + tokens: [CollectionTokenItem!]! + default: String! + } + + type Person { + id: ID! + firstName: String! + surname: String! + middleName: String! + } + + """User model with references and metadata""" + type User { + id: ID! + uuid: String! + expiresAt: String + resetToken: String + password: String! + history: [String!] + tag: String! + email: String! + phone: String! + collectionTokens: CollectionToken! + person: Person! + type: ID + createdAt: String + updatedAt: String + } + + """Input type for a single token entry""" + input CollectionTokenItemInput { + prefix: String! + token: String! + } + + """Input type for a user's token collection""" + input CollectionTokenInput { + tokens: [CollectionTokenItemInput!]! + default: String! + } + + """Input for creating a new user""" + input CreateUserInput { + password: String! + history: [String!] + tag: String! + email: String! + phone: String! + collectionTokens: CollectionTokenInput! + person: ID! + type: ID + } + + """Queries""" + type Query { + users: [User!]! + user(id: ID!): User + } + + """Mutations""" + type Mutation { + createUser(input: CreateUserInput!): User! + } +`; diff --git a/lib/mongodb.ts b/lib/mongodb.ts index 79098a2..1b94ae7 100644 --- a/lib/mongodb.ts +++ b/lib/mongodb.ts @@ -1,7 +1,14 @@ -// lib/mongodb.ts -import mongoose from 'mongoose'; +import mongoose from "mongoose"; -export const connectDB = async () => { - if (mongoose.connection.readyState >= 1) return; - await mongoose.connect(process.env.MONGO_URI!); -}; +declare global { var mongoose: { conn: mongoose.Mongoose | null; promise: Promise | null } } +let cached = global.mongoose; + +if (!cached) { cached = global.mongoose = { conn: null, promise: null } } + +export async function connectDB() { + if (cached.conn) return cached.conn; + if (!process.env.MONGODB_URI) { throw new Error("Please define MONGODB_URI in your environment variables") } + if (!cached.promise) { cached.promise = mongoose.connect(process.env.MONGODB_URI).then((mongoose) => mongoose) } + cached.conn = await cached.promise; + return cached.conn; +} diff --git a/models/Build.ts b/models/Build.ts new file mode 100644 index 0000000..1b75b62 --- /dev/null +++ b/models/Build.ts @@ -0,0 +1,61 @@ +import mongoose, { Schema, Document, models } from "mongoose"; +import { Base } from "./base"; + +const BuildIbanSchema = new Schema({ + iban: { type: String, required: true }, + startDate: { type: Date, required: true }, + stopDate: { type: Date, required: true, default: new Date("2900-01-01T03:00:00+03:00") }, + bankCode: { type: String, required: true, default: "TR0000000000000" }, + xcomment: { type: String, required: true, default: "????" }, +}); + +const BuildResponsibleSchema = new Schema({ + company: { type: Schema.Types.ObjectId, ref: "Company", required: true }, + person: { type: Schema.Types.ObjectId, ref: "Person", required: true }, +}); + +const BuildInfoSchema = new Schema({ + govAddressCode: { type: String, required: true }, + buildName: { type: String, required: true }, + buildNo: { type: String, required: true }, + maxFloor: { type: Number, required: true }, + undergroundFloor: { type: Number, required: true }, + buildDate: { type: Date, required: true }, + decisionPeriodDate: { type: Date, required: true }, + taxNo: { type: String, required: true }, + liftCount: { type: Number, required: true }, + heatingSystem: { type: Boolean, required: true }, + coolingSystem: { type: Boolean, required: true }, + hotWaterSystem: { type: Boolean, required: true }, + blockServiceManCount: { type: Number, required: true }, + securityServiceManCount: { type: Number, required: true }, + garageCount: { type: Number, required: true }, + managementRoomId: { type: Number, required: true }, +}); + +interface IBuildInterface extends Base, Document { + buildType: Schema.Types.ObjectId; + collectionToken: string; + info: typeof BuildInfoSchema; + site?: Schema.Types.ObjectId; + address?: Schema.Types.ObjectId; + ibans?: typeof BuildIbanSchema[]; + areas?: Schema.Types.ObjectId[]; + responsibles?: typeof BuildResponsibleSchema[]; +} + +const BuildSchema = new Schema({ + buildType: { type: Schema.Types.ObjectId, ref: "BuildType", required: true }, + collectionToken: { type: String, required: true, unique: true }, + info: { type: BuildInfoSchema, required: true }, + site: { type: Schema.Types.ObjectId, ref: "Site", required: false }, + address: { type: Schema.Types.ObjectId, ref: "BuildAddress", required: false }, + areas: [{ type: Schema.Types.ObjectId, ref: "BuildArea", required: false }], + ibans: [{ type: BuildIbanSchema, required: false }], + responsibles: [{ type: BuildResponsibleSchema, required: false }], +}, { timestamps: true }); + +const Build = models.Build || mongoose.model("Build", BuildSchema); + +export { Build }; +export type { IBuildInterface }; diff --git a/models/BuildAddress.ts b/models/BuildAddress.ts new file mode 100644 index 0000000..392a6f5 --- /dev/null +++ b/models/BuildAddress.ts @@ -0,0 +1,31 @@ +import mongoose, { Schema, Document, models } from "mongoose"; +import { Base } from "./base"; + +interface IBuildAddressInterface extends Base, Document { + buildNumber: string; + doorNumber: string; + floorNumber: string; + commentAddress: string; + letterAddress: string; + shortLetterAddress: string; + latitude: number; + longitude: number; + street: mongoose.Types.ObjectId; +} + +const BuildAddressSchema = new Schema({ + buildNumber: { type: String, required: true }, + doorNumber: { type: String, required: true }, + floorNumber: { type: String, required: true }, + commentAddress: { type: String, required: true }, + letterAddress: { type: String, required: true }, + shortLetterAddress: { type: String, required: true }, + latitude: { type: Number, required: true }, + longitude: { type: Number, required: true }, + street: { type: Schema.Types.ObjectId, ref: "Street", required: true }, +}, { timestamps: true }); + +const BuildAddress = models.BuildAddress || mongoose.model("BuildAddress", BuildAddressSchema); + +export { BuildAddress }; +export type { IBuildAddressInterface }; diff --git a/models/BuildArea.ts b/models/BuildArea.ts new file mode 100644 index 0000000..66b7859 --- /dev/null +++ b/models/BuildArea.ts @@ -0,0 +1,25 @@ +import mongoose, { Schema, Document, models } from "mongoose"; +import { Base } from "./base"; + +interface IBuildArea extends Base, Document { + build: mongoose.Types.ObjectId; + area: number; + size: number; + type: string; + typeToken: string; + description: string; +} + +const BuildAreaSchema = new Schema({ + build: { type: Schema.Types.ObjectId, ref: "Build", required: true }, + area: { type: Number, required: true }, + size: { type: Number, required: true }, + type: { type: String, required: true }, + typeToken: { type: String, required: true }, + description: { type: String, required: true }, +}, { timestamps: true }); + +const BuildArea = models.BuildArea || mongoose.model("BuildArea", BuildAreaSchema); + +export { BuildArea, BuildAreaSchema }; +export type { IBuildArea }; diff --git a/models/BuildParts.ts b/models/BuildParts.ts new file mode 100644 index 0000000..1177ad2 --- /dev/null +++ b/models/BuildParts.ts @@ -0,0 +1,37 @@ + +import mongoose, { Schema, Document, models } from "mongoose"; +import { Base } from "./base"; + +interface IBuildPartsInterface extends Base, Document { + addressGovCode: string; + no: number; + level: number; + code: string; + grossSize: number; + netSize: number; + defaultAccessory: string; + humanLivability: boolean; + key: string; + directionId: Schema.Types.ObjectId; + typeId: Schema.Types.ObjectId; +} + +const BuildPartsSchema = new Schema({ + buildId: { type: Schema.Types.ObjectId, ref: "Build", required: true }, + addressGovCode: { type: String, required: true }, + no: { type: Number, required: true }, + level: { type: Number, required: true }, + code: { type: String, required: true }, + grossSize: { type: Number, required: true }, + netSize: { type: Number, required: true }, + defaultAccessory: { type: String, required: true }, + humanLivability: { type: Boolean, required: true }, + key: { type: String, required: true }, + directionId: { type: Schema.Types.ObjectId, ref: "ApiEnumDropdown", required: true }, + typeId: { type: Schema.Types.ObjectId, ref: "ApiEnumDropdown", required: true }, +}); + +const BuildParts = models.BuildParts || mongoose.model("BuildParts", BuildPartsSchema); + +export { BuildParts }; +export type { IBuildPartsInterface }; diff --git a/models/Company.ts b/models/Company.ts new file mode 100644 index 0000000..a01087b --- /dev/null +++ b/models/Company.ts @@ -0,0 +1,7 @@ + + +interface ICompanyInterface { + +} + +export type { ICompanyInterface }; \ No newline at end of file diff --git a/models/LivingSpaces.ts b/models/LivingSpaces.ts new file mode 100644 index 0000000..2275b98 --- /dev/null +++ b/models/LivingSpaces.ts @@ -0,0 +1,44 @@ +import mongoose, { Schema, Model, Document } from 'mongoose'; +import { IPerson } from './People'; +import { IBuildPartsInterface } from './BuildParts'; +import { ICompanyInterface } from './Company'; +import { Base } from './base'; +import { IUserType } from './UserTypes'; +import { randomUUID } from 'crypto'; + +interface ILivingSpaces extends Base, Document { + part: mongoose.Types.ObjectId | IBuildPartsInterface; + company: mongoose.Types.ObjectId | ICompanyInterface; + person: mongoose.Types.ObjectId | IPerson; + userType: mongoose.Types.ObjectId | IUserType; +} + +function getDynamicLivingSpaceModel(collectionToken: string): Model { + const collectionName = `LivingSpaces${collectionToken}`; + if (mongoose.models[collectionName]) { return mongoose.models[collectionName] as Model } + const LivingSpacesSchema = new Schema({ + uuid: { type: String, required: false, unique: true, default: () => randomUUID() }, + part: { type: Schema.Types.ObjectId, ref: "BuildParts", required: true }, + company: { type: Schema.Types.ObjectId, ref: "Company", required: true }, + person: { type: Schema.Types.ObjectId, ref: "Person", required: true }, + userType: { type: Schema.Types.ObjectId, ref: "UserType", required: true }, + expiryStarts: { type: Date, required: false, default: new Date() }, + expiryEnds: { type: Date, required: false, default: new Date("2900-01-01T03:00:00+03:00") }, + isConfirmed: { type: Boolean, required: false, default: false }, + deleted: { type: Boolean, required: false, default: false }, + active: { type: Boolean, required: false, default: true }, + crypUuId: { type: String, required: false }, + createdCredentialsToken: { type: String, required: false }, + updatedCredentialsToken: { type: String, required: false }, + confirmedCredentialsToken: { type: String, required: false }, + isNotificationSend: { type: Boolean, required: false, default: false }, + isEmailSend: { type: Boolean, required: false, default: false }, + refInt: { type: Number, required: false, default: 0 }, + refId: { type: String, required: false }, + replicationId: { type: Number, required: false, default: 0 }, + }, { timestamps: true }); + return mongoose.model(collectionName, LivingSpacesSchema, collectionName); +} + +export { getDynamicLivingSpaceModel }; +export type { ILivingSpaces }; diff --git a/models/People.ts b/models/People.ts new file mode 100644 index 0000000..2333512 --- /dev/null +++ b/models/People.ts @@ -0,0 +1,41 @@ +import mongoose, { Schema, models, Document, Model } from "mongoose"; +import { Base } from "./base"; + +interface IPerson extends Base, Document { + firstName: string; + surname: string; + middleName: string; + sexCode: string; + personRef: string; + personTag: string; + fatherName: string; + motherName: string; + countryCode: string; + nationalIdentityId: string; + birthPlace: string; + birthDate: Date; + taxNo: string; + birthname: string; +} + +const PersonSchema = new Schema({ + firstName: { type: String, required: true }, + surname: { type: String, required: true }, + middleName: { type: String, required: true }, + sexCode: { type: String, required: true }, + personRef: { type: String, required: true }, + personTag: { type: String, required: true }, + fatherName: { type: String, required: true }, + motherName: { type: String, required: true }, + countryCode: { type: String, required: true }, + nationalIdentityId: { type: String, required: true }, + birthPlace: { type: String, required: true }, + birthDate: { type: Date, required: true }, + taxNo: { type: String, required: true }, + birthname: { type: String, required: true }, +}); + +const Person: Model = models.Person || mongoose.model("Person", PersonSchema); + +export { Person }; +export type { IPerson } \ No newline at end of file diff --git a/models/User.ts b/models/User.ts deleted file mode 100644 index 552b9a2..0000000 --- a/models/User.ts +++ /dev/null @@ -1,10 +0,0 @@ -import mongoose, { Schema, models } from 'mongoose'; - -const UserSchema = new Schema({ - name: { type: String, required: true }, - email: { type: String, required: true, unique: true }, -}); - -const User = models.User || mongoose.model('User', UserSchema); - -export default User; diff --git a/models/UserTypes.ts b/models/UserTypes.ts new file mode 100644 index 0000000..fdd11ed --- /dev/null +++ b/models/UserTypes.ts @@ -0,0 +1,20 @@ +import mongoose, { Schema, models } from "mongoose"; + +interface IUserType { + type: string; + token: string; + typeToken: string; + description: string; +} + +const UserTypesSchema = new Schema({ + type: { type: String, required: true }, + token: { type: String, required: true }, + typeToken: { type: String, required: true }, + description: { type: String, required: true }, +}); + +const UserTypes = models.UserTypes || mongoose.model("UserTypes", UserTypesSchema); + +export { UserTypes }; +export type { IUserType }; diff --git a/models/Users.ts b/models/Users.ts new file mode 100644 index 0000000..a5fb904 --- /dev/null +++ b/models/Users.ts @@ -0,0 +1,62 @@ +import mongoose, { Schema, models, Document } from "mongoose"; +import { BaseSchema, Base } from "./base"; + +const expiresDate = () => new Date(Date.now() + 30 * 24 * 60 * 60 * 1000); + +interface ICollectionToken { + tokens: { prefix: string; token: string }[]; + default: string; +} + +interface IUser extends Base, Document { + expiresAt?: Date; + resetToken?: string; + password: string; + history?: string[]; + tag: string; + email: string; + phone: string; + collectionTokens: ICollectionToken; + person: mongoose.Types.ObjectId; + type?: mongoose.Types.ObjectId; +} + +const CollectionTokenSchema = new Schema( + { + tokens: { type: [{ prefix: { type: String, required: true }, token: { type: String, required: true } }], default: [], required: false }, + default: { type: String, required: true, default: "" }, + }, + { _id: false } +); + + +const UsersSchema = new Schema( + { + ...BaseSchema, + expiresAt: { type: Date, default: expiresDate, required: false }, + resetToken: { type: String, required: false }, + password: { type: String, required: true }, + history: { + type: [String], + validate: [(val: string[]) => val.length <= 3, "History can have max 3 items"], + default: [], + required: false, + }, + tag: { type: String, required: true }, + email: { type: String, required: true, unique: true }, + phone: { type: String, required: true, unique: true }, + collectionTokens: { + type: CollectionTokenSchema, + default: () => ({ tokens: [], default: "" }), + required: true, + }, + person: { type: Schema.Types.ObjectId, ref: "Person", required: true }, + type: { type: Schema.Types.ObjectId, ref: "UserType", required: false }, + }, + { timestamps: true } +); + +const Users = models.Users || mongoose.model("Users", UsersSchema); + +export { Users }; +export type { IUser, ICollectionToken }; diff --git a/models/base.ts b/models/base.ts new file mode 100644 index 0000000..7aacb7d --- /dev/null +++ b/models/base.ts @@ -0,0 +1,47 @@ +import { randomUUID } from "crypto"; + +interface Base { + uuid: string; + + expiryStarts: Date; + expiryEnds: Date; + + createdAt: Date; + updatedAt: Date; + + isConfirmed: boolean; + deleted: boolean; + active: boolean; + + crypUuId: string; + createdCredentialsToken: string; + updatedCredentialsToken: string; + confirmedCredentialsToken: string; + isNotificationSend: boolean; + isEmailSend: boolean; + + refInt: number; + refId: string; + replicationId: number; +} + +const BaseSchema = { + uuid: { type: String, required: false, unique: true, default: randomUUID }, + expiryStarts: { type: Date, required: false, default: () => new Date(Date.now()) }, + expiryEnds: { type: Date, required: false, default: () => new Date('2099-12-31') }, + isConfirmed: { type: Boolean, required: false, default: false }, + deleted: { type: Boolean, required: false, default: false }, + active: { type: Boolean, required: false, default: true }, + crypUuId: { type: String, required: false, default: randomUUID }, + createdCredentialsToken: { type: String, required: false, default: randomUUID }, + updatedCredentialsToken: { type: String, required: false, default: randomUUID }, + confirmedCredentialsToken: { type: String, required: false, default: randomUUID }, + isNotificationSend: { type: Boolean, required: false, default: false }, + isEmailSend: { type: Boolean, required: false, default: false }, + refInt: { type: Number, required: false, default: 0 }, + refId: { type: String, required: false, default: randomUUID }, + replicationId: { type: Number, required: false, default: 0 }, +}; + +export { BaseSchema }; +export type { Base }; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6d8705b..e2e8543 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,15 +8,15 @@ "name": "evyos-frontend-development", "version": "0.1.0", "dependencies": { - "@apollo/server": "^5.1.0", - "@as-integrations/next": "^4.1.0", + "@apollo/server": "^4.10.0", + "@as-integrations/next": "^3.0.0", "@auth/mongodb-adapter": "^3.11.1", "@graphql-tools/merge": "^9.1.5", "@tanstack/react-query": "^5.90.8", "apollo-server-micro": "^3.13.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "graphql": "^16.12.0", + "graphql": "^16.8.1", "lucide-react": "^0.553.0", "mongoose": "^8.19.3", "next": "16.0.2", @@ -85,83 +85,90 @@ } }, "node_modules/@apollo/server": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@apollo/server/-/server-5.1.0.tgz", - "integrity": "sha512-azqwwmKp23TMFQkjE66622sdY2Ao9d+LrebW++b3rFCNxU6XAl/vRwInOh9ejNgShDQzVS+bdCIFQnH9+r+N1A==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.10.0.tgz", + "integrity": "sha512-pLx//lZ/pvUfWL9G8Np8+y3ujc0pYc8U7dwD6ztt9FAw8NmCPzPaDzlXLBAjGU6WnkqVBOnz8b3dOwRNjLYSUA==", + "deprecated": "Apollo Server v4 is deprecated and will transition to end-of-life on January 26, 2026. As long as you are already using a non-EOL version of Node.js, upgrading to v5 should take only a few minutes. See https://www.apollographql.com/docs/apollo-server/previous-versions for details.", "license": "MIT", "dependencies": { "@apollo/cache-control-types": "^1.0.3", - "@apollo/server-gateway-interface": "^2.0.0", + "@apollo/server-gateway-interface": "^1.1.1", "@apollo/usage-reporting-protobuf": "^4.1.1", - "@apollo/utils.createhash": "^3.0.0", - "@apollo/utils.fetcher": "^3.0.0", - "@apollo/utils.isnodelike": "^3.0.0", - "@apollo/utils.keyvaluecache": "^4.0.0", - "@apollo/utils.logger": "^3.0.0", + "@apollo/utils.createhash": "^2.0.0", + "@apollo/utils.fetcher": "^2.0.0", + "@apollo/utils.isnodelike": "^2.0.0", + "@apollo/utils.keyvaluecache": "^2.1.0", + "@apollo/utils.logger": "^2.0.0", "@apollo/utils.usagereporting": "^2.1.0", - "@apollo/utils.withrequired": "^3.0.0", - "@graphql-tools/schema": "^10.0.0", + "@apollo/utils.withrequired": "^2.0.0", + "@graphql-tools/schema": "^9.0.0", + "@josephg/resolvable": "^1.0.0", + "@types/express": "^4.17.13", + "@types/express-serve-static-core": "^4.17.30", + "@types/node-fetch": "^2.6.1", "async-retry": "^1.2.1", - "body-parser": "^2.2.0", "cors": "^2.8.5", - "finalhandler": "^2.1.0", + "express": "^4.17.1", "loglevel": "^1.6.8", - "lru-cache": "^11.1.0", - "negotiator": "^1.0.0", - "uuid": "^11.1.0", - "whatwg-mimetype": "^4.0.0" + "lru-cache": "^7.10.1", + "negotiator": "^0.6.3", + "node-abort-controller": "^3.1.1", + "node-fetch": "^2.6.7", + "uuid": "^9.0.0", + "whatwg-mimetype": "^3.0.0" }, "engines": { - "node": ">=20" + "node": ">=14.16.0" }, "peerDependencies": { - "graphql": "^16.11.0" + "graphql": "^16.6.0" } }, "node_modules/@apollo/server-gateway-interface": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@apollo/server-gateway-interface/-/server-gateway-interface-2.0.0.tgz", - "integrity": "sha512-3HEMD6fSantG2My3jWkb9dvfkF9vJ4BDLRjMgsnD790VINtuPaEp+h3Hg9HOHiWkML6QsOhnaRqZ+gvhp3y8Nw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@apollo/server-gateway-interface/-/server-gateway-interface-1.1.1.tgz", + "integrity": "sha512-pGwCl/po6+rxRmDMFgozKQo2pbsSwE91TpsDBAOgf74CRDPXHHtM88wbwjab0wMMZh95QfR45GGyDIdhY24bkQ==", + "deprecated": "@apollo/server-gateway-interface v1 is part of Apollo Server v4, which is deprecated and will transition to end-of-life on January 26, 2026. As long as you are already using a non-EOL version of Node.js, upgrading to v2 should take only a few minutes. See https://www.apollographql.com/docs/apollo-server/previous-versions for details.", "license": "MIT", "dependencies": { "@apollo/usage-reporting-protobuf": "^4.1.1", - "@apollo/utils.fetcher": "^3.0.0", - "@apollo/utils.keyvaluecache": "^4.0.0", - "@apollo/utils.logger": "^3.0.0" + "@apollo/utils.fetcher": "^2.0.0", + "@apollo/utils.keyvaluecache": "^2.1.0", + "@apollo/utils.logger": "^2.0.0" }, "peerDependencies": { "graphql": "14.x || 15.x || 16.x" } }, "node_modules/@apollo/server-gateway-interface/node_modules/@apollo/utils.keyvaluecache": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-4.0.0.tgz", - "integrity": "sha512-mKw1myRUkQsGPNB+9bglAuhviodJ2L2MRYLTafCMw5BIo7nbvCPNCkLnIHjZ1NOzH7SnMAr5c9LmXiqsgYqLZw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-2.1.1.tgz", + "integrity": "sha512-qVo5PvUUMD8oB9oYvq4ViCjYAMWnZ5zZwEjNF37L2m1u528x5mueMlU+Cr1UinupCgdB78g+egA1G98rbJ03Vw==", "license": "MIT", "dependencies": { - "@apollo/utils.logger": "^3.0.0", - "lru-cache": "^11.0.0" + "@apollo/utils.logger": "^2.0.1", + "lru-cache": "^7.14.1" }, "engines": { - "node": ">=20" + "node": ">=14" } }, "node_modules/@apollo/server-gateway-interface/node_modules/@apollo/utils.logger": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-3.0.0.tgz", - "integrity": "sha512-M8V8JOTH0F2qEi+ktPfw4RL7MvUycDfKp7aEap2eWXfL5SqWHN6jTLbj5f5fj1cceHpyaUSOZlvlaaryaxZAmg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-2.0.1.tgz", + "integrity": "sha512-YuplwLHaHf1oviidB7MxnCXAdHp3IqYV8n0momZ3JfLniae92eYqMIx+j5qJFX6WKJPs6q7bczmV4lXIsTu5Pg==", "license": "MIT", "engines": { - "node": ">=16" + "node": ">=14" } }, "node_modules/@apollo/server-gateway-interface/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "license": "ISC", "engines": { - "node": "20 || >=22" + "node": ">=12" } }, "node_modules/@apollo/server/node_modules/@apollo/utils.dropunuseddefinitions": { @@ -177,25 +184,25 @@ } }, "node_modules/@apollo/server/node_modules/@apollo/utils.keyvaluecache": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-4.0.0.tgz", - "integrity": "sha512-mKw1myRUkQsGPNB+9bglAuhviodJ2L2MRYLTafCMw5BIo7nbvCPNCkLnIHjZ1NOzH7SnMAr5c9LmXiqsgYqLZw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-2.1.1.tgz", + "integrity": "sha512-qVo5PvUUMD8oB9oYvq4ViCjYAMWnZ5zZwEjNF37L2m1u528x5mueMlU+Cr1UinupCgdB78g+egA1G98rbJ03Vw==", "license": "MIT", "dependencies": { - "@apollo/utils.logger": "^3.0.0", - "lru-cache": "^11.0.0" + "@apollo/utils.logger": "^2.0.1", + "lru-cache": "^7.14.1" }, "engines": { - "node": ">=20" + "node": ">=14" } }, "node_modules/@apollo/server/node_modules/@apollo/utils.logger": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-3.0.0.tgz", - "integrity": "sha512-M8V8JOTH0F2qEi+ktPfw4RL7MvUycDfKp7aEap2eWXfL5SqWHN6jTLbj5f5fj1cceHpyaUSOZlvlaaryaxZAmg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-2.0.1.tgz", + "integrity": "sha512-YuplwLHaHf1oviidB7MxnCXAdHp3IqYV8n0momZ3JfLniae92eYqMIx+j5qJFX6WKJPs6q7bczmV4lXIsTu5Pg==", "license": "MIT", "engines": { - "node": ">=16" + "node": ">=14" } }, "node_modules/@apollo/server/node_modules/@apollo/utils.printwithreducedwhitespace": { @@ -269,70 +276,50 @@ "graphql": "14.x || 15.x || 16.x" } }, - "node_modules/@apollo/server/node_modules/@graphql-tools/schema": { - "version": "10.0.29", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.29.tgz", - "integrity": "sha512-+Htiupnq6U/AWOEAJerIOGT1pAf4u43Q3n2JmFpqFfYJchz6sKWZ7L9Lpe/NusaaUQty/IOF+eQlNFypEaWxhg==", + "node_modules/@apollo/server/node_modules/@graphql-tools/merge": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.4.2.tgz", + "integrity": "sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==", "license": "MIT", "dependencies": { - "@graphql-tools/merge": "^9.1.5", - "@graphql-tools/utils": "^10.10.3", + "@graphql-tools/utils": "^9.2.1", "tslib": "^2.4.0" }, - "engines": { - "node": ">=16.0.0" - }, "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@apollo/server/node_modules/@graphql-tools/utils": { - "version": "10.10.3", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.10.3.tgz", - "integrity": "sha512-2EdYiefeLLxsoeZTukSNZJ0E/Z5NnWBUGK2VJa0DQj1scDhVd93HeT1eW9TszJOYmIh3eWAKLv58ri/1XUmdsQ==", + "node_modules/@apollo/server/node_modules/@graphql-tools/schema": { + "version": "9.0.19", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.19.tgz", + "integrity": "sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==", "license": "MIT", "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" + "@graphql-tools/merge": "^8.4.1", + "@graphql-tools/utils": "^9.2.1", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" }, "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/@apollo/server/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "license": "ISC", "engines": { - "node": "20 || >=22" + "node": ">=12" } }, - "node_modules/@apollo/server/node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, - "node_modules/@apollo/server/node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "node_modules/@apollo/server/node_modules/value-or-promise": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz", + "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@apollo/usage-reporting-protobuf": { @@ -345,16 +332,16 @@ } }, "node_modules/@apollo/utils.createhash": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-3.0.1.tgz", - "integrity": "sha512-CKrlySj4eQYftBE5MJ8IzKwIibQnftDT7yGfsJy5KSEEnLlPASX0UTpbKqkjlVEwPPd4mEwI7WOM7XNxEuO05A==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-2.0.2.tgz", + "integrity": "sha512-UkS3xqnVFLZ3JFpEmU/2cM2iKJotQXMoSTgxXsfQgXLC5gR1WaepoXagmYnPSA7Q/2cmnyTYK5OgAgoC4RULPg==", "license": "MIT", "dependencies": { - "@apollo/utils.isnodelike": "^3.0.0", + "@apollo/utils.isnodelike": "^2.0.1", "sha.js": "^2.4.11" }, "engines": { - "node": ">=16" + "node": ">=14" } }, "node_modules/@apollo/utils.dropunuseddefinitions": { @@ -370,21 +357,21 @@ } }, "node_modules/@apollo/utils.fetcher": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.fetcher/-/utils.fetcher-3.1.0.tgz", - "integrity": "sha512-Z3QAyrsQkvrdTuHAFwWDNd+0l50guwoQUoaDQssLOjkmnmVuvXlJykqlEJolio+4rFwBnWdoY1ByFdKaQEcm7A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.fetcher/-/utils.fetcher-2.0.1.tgz", + "integrity": "sha512-jvvon885hEyWXd4H6zpWeN3tl88QcWnHp5gWF5OPF34uhvoR+DFqcNxs9vrRaBBSY3qda3Qe0bdud7tz2zGx1A==", "license": "MIT", "engines": { - "node": ">=16" + "node": ">=14" } }, "node_modules/@apollo/utils.isnodelike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-3.0.0.tgz", - "integrity": "sha512-xrjyjfkzunZ0DeF6xkHaK5IKR8F1FBq6qV+uZ+h9worIF/2YSzA0uoBxGv6tbTeo9QoIQnRW4PVFzGix5E7n/g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-2.0.1.tgz", + "integrity": "sha512-w41XyepR+jBEuVpoRM715N2ZD0xMD413UiJx8w5xnAZD2ZkSJnMJBoIzauK83kJpSgNuR6ywbV29jG9NmxjK0Q==", "license": "MIT", "engines": { - "node": ">=16" + "node": ">=14" } }, "node_modules/@apollo/utils.keyvaluecache": { @@ -484,12 +471,12 @@ } }, "node_modules/@apollo/utils.withrequired": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.withrequired/-/utils.withrequired-3.0.0.tgz", - "integrity": "sha512-aaxeavfJ+RHboh7c2ofO5HHtQobGX4AgUujXP4CXpREHp9fQ9jPi6K9T1jrAKe7HIipoP0OJ1gd6JamSkFIpvA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.withrequired/-/utils.withrequired-2.0.1.tgz", + "integrity": "sha512-YBDiuAX9i1lLc6GeTy1m7DGLFn/gMnvXqlalOIMjM7DeOgIacEjjfwPqb0M1CQ2v11HhR15d1NmxJoRCfrNqcA==", "license": "MIT", "engines": { - "node": ">=16" + "node": ">=14" } }, "node_modules/@apollographql/apollo-tools": { @@ -515,16 +502,16 @@ } }, "node_modules/@as-integrations/next": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@as-integrations/next/-/next-4.1.0.tgz", - "integrity": "sha512-QZ+bGlLn1ahYpVt60CofkgJUB0XhG6JghkoCywCnzueQM9qoQct0WPGMNZuWXyfBxXJGCbeF/tsIlATlHT1HoQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@as-integrations/next/-/next-3.0.0.tgz", + "integrity": "sha512-FmqJjoH5XamyBZQVTnnG9ssE3ywf/TPIanFGwYjp3YFsX92F1lY7FDcrQJa/gCJQnb8gSZAdqAIgrWo4K325sA==", "license": "MIT", "engines": { - "node": ">=20" + "node": ">=18" }, "peerDependencies": { - "@apollo/server": "^5.0.0", - "next": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + "@apollo/server": "^4.0.0", + "next": "^12.0.0 || ^13.0.0 || ^14.0.0" } }, "node_modules/@auth/mongodb-adapter": { @@ -626,7 +613,6 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -2380,6 +2366,25 @@ "tslib": "^2.4.0" } }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -2387,6 +2392,36 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", + "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -2407,23 +2442,49 @@ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", "license": "MIT" }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, "node_modules/@types/node": { "version": "20.19.25", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", - "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, + "node_modules/@types/node-fetch": { + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", + "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.4" + } + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, "node_modules/@types/react": { "version": "19.2.4", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.4.tgz", "integrity": "sha512-tBFxBp9Nfyy5rsmefN+WXc1JeW/j2BpBHFdLZbEVfs9wn3E3NRFxwV0pJg8M1qQAexFpvz73hJXFofV0ZAu92A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -2438,6 +2499,36 @@ "@types/react": "^19.2.0" } }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, "node_modules/@types/webidl-conversions": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", @@ -2499,7 +2590,6 @@ "integrity": "sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.46.4", "@typescript-eslint/types": "8.46.4", @@ -3036,13 +3126,34 @@ "node": ">=16.0.0" } }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3282,12 +3393,6 @@ "graphql": "^15.3.0 || ^16.0.0" } }, - "node_modules/arg": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", - "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==", - "license": "MIT" - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -3322,6 +3427,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, "node_modules/array-includes": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", @@ -3491,6 +3602,12 @@ "retry": "0.13.1" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -3544,178 +3661,43 @@ } }, "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser/node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser/node_modules/raw-body": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz", - "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "license": "MIT", "dependencies": { "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", "http-errors": "2.0.0", - "iconv-lite": "0.7.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/body-parser/node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", - "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "ms": "2.0.0" } }, - "node_modules/body-parser/node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/body-parser/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/body-parser/node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.12", @@ -3761,7 +3743,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", @@ -3786,9 +3767,9 @@ } }, "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -3935,6 +3916,18 @@ "dev": true, "license": "MIT" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -3948,10 +3941,22 @@ "dev": true, "license": "MIT" }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -3973,6 +3978,12 @@ "node": ">= 0.6" } }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -4146,13 +4157,32 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/detect-libc": { @@ -4366,7 +4396,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -4444,7 +4473,6 @@ "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -4630,7 +4658,6 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -4864,6 +4891,85 @@ "node": ">=0.10.0" } }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4951,31 +5057,38 @@ } }, "node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", - "engines": { - "node": ">= 0.8" + "dependencies": { + "ms": "2.0.0" } }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -5029,6 +5142,40 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -5227,11 +5374,10 @@ "license": "MIT" }, "node_modules/graphql": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", - "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", + "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", "license": "MIT", - "peer": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -5359,19 +5505,19 @@ } }, "node_modules/http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "license": "MIT", "dependencies": { - "depd": "~1.1.2", + "depd": "2.0.0", "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/iconv-lite": { @@ -5444,6 +5590,15 @@ "node": ">= 0.4" } }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", @@ -6409,6 +6564,15 @@ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", "license": "MIT" }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -6419,22 +6583,13 @@ "node": ">= 8" } }, - "node_modules/micro": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/micro/-/micro-9.4.1.tgz", - "integrity": "sha512-Lpjcbp6Y9GJIfewxDfTmu9eW0rt0MGo+Gs1d3yJLFa7mhErtKkCngGhDbA/O1gqUjEwsHh+jWPg8BJ0Bx4AgFA==", + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "license": "MIT", - "peer": true, - "dependencies": { - "arg": "4.1.0", - "content-type": "1.0.4", - "raw-body": "2.4.1" - }, - "bin": { - "micro": "bin/micro.js" - }, "engines": { - "node": ">= 8.0.0" + "node": ">= 0.6" } }, "node_modules/micromatch": { @@ -6451,6 +6606,18 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -6495,53 +6662,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mongodb": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.21.0.tgz", - "integrity": "sha512-URyb/VXMjJ4da46OeSXg+puO39XH9DeQpWCslifrRn9JWugy0D+DvvBvkm2WxmHe61O/H19JM66p1z7RHVkZ6A==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@mongodb-js/saslprep": "^1.3.0", - "bson": "^6.10.4", - "mongodb-connection-string-url": "^3.0.2" - }, - "engines": { - "node": ">=16.20.1" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", - "gcp-metadata": "^5.2.0", - "kerberos": "^2.0.1", - "mongodb-client-encryption": ">=6.0.0 <7", - "snappy": "^7.3.2", - "socks": "^2.7.1" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "@mongodb-js/zstd": { - "optional": true - }, - "gcp-metadata": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - }, - "socks": { - "optional": true - } - } - }, "node_modules/mongodb-connection-string-url": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", @@ -6689,9 +6809,9 @@ "license": "MIT" }, "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -6702,7 +6822,6 @@ "resolved": "https://registry.npmjs.org/next/-/next-16.0.2.tgz", "integrity": "sha512-zL8+UBf+xUIm8zF0vYGJYJMYDqwaBrRRe7S0Kob6zo9Kf+BdqFLEECMI+B6cNIcoQ+el9XM2fvUExwhdDnXjtw==", "license": "MIT", - "peer": true, "dependencies": { "@next/env": "16.0.2", "@swc/helpers": "0.5.15", @@ -7211,6 +7330,12 @@ "dev": true, "license": "MIT" }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -7273,7 +7398,6 @@ "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.3.tgz", "integrity": "sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==", "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -7307,6 +7431,19 @@ "react-is": "^16.13.1" } }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -7317,12 +7454,12 @@ } }, "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.1.0" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -7352,14 +7489,23 @@ ], "license": "MIT" }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/raw-body": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "license": "MIT", "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.3", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -7372,7 +7518,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -7382,7 +7527,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -7623,6 +7767,69 @@ "semver": "bin/semver.js" } }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -7672,9 +7879,9 @@ } }, "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, "node_modules/sha.js": { @@ -7882,12 +8089,12 @@ "license": "MIT" }, "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/stop-iteration-iterator": { @@ -8161,7 +8368,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -8197,9 +8403,9 @@ } }, "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "license": "MIT", "engines": { "node": ">=0.6" @@ -8381,7 +8587,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -8437,7 +8642,6 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, "license": "MIT" }, "node_modules/unpipe": { @@ -8525,6 +8729,15 @@ "punycode": "^2.1.0" } }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -8743,7 +8956,6 @@ "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index f396440..8161d79 100644 --- a/package.json +++ b/package.json @@ -9,15 +9,15 @@ "lint": "eslint" }, "dependencies": { - "@apollo/server": "^5.1.0", - "@as-integrations/next": "^4.1.0", + "@apollo/server": "^4.10.0", + "@as-integrations/next": "^3.0.0", "@auth/mongodb-adapter": "^3.11.1", "@graphql-tools/merge": "^9.1.5", "@tanstack/react-query": "^5.90.8", "apollo-server-micro": "^3.13.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", - "graphql": "^16.12.0", + "graphql": "^16.8.1", "lucide-react": "^0.553.0", "mongoose": "^8.19.3", "next": "16.0.2",