From b598d176da101689ea7490e8c68fc16d007bf784 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Pyykk=C3=B6?= Date: Thu, 25 May 2023 12:08:20 +0300 Subject: [PATCH] Revert "Chore: upgrade prisma" (#1191) Revert "Chore: upgrade prisma (#1190)" This reverts commit b840fe3168afcb7a5f5591a1b1057eeec5232ccd. --- backend/api/routes/completions.ts | 30 +- backend/api/routes/progress.ts | 151 +- backend/api/routes/storedData.ts | 39 +- backend/bin/fetchUserAppDatum.ts | 4 +- backend/bin/importOrganizations.ts | 11 +- .../EmailTemplater/templates/CourseStats.ts | 10 +- .../common/__test__/userFunctions.test.ts | 58 +- .../userCourseProgress/BAI/completion.ts | 21 +- .../common/userCourseProgress/BAI/progress.ts | 11 +- .../generateUserCourseProgress.ts | 4 +- .../common/userCourseProgress/interfaces.ts | 24 +- .../common/userCourseProgress/saveToDB.ts | 7 +- .../bin/kafkaConsumer/common/userFunctions.ts | 61 +- .../userPoints/exerciseCompletionFunctions.ts | 64 +- backend/bin/linkopingStatsEmailer.ts | 2 +- backend/bin/pragueStatsEmailer.ts | 2 +- backend/bin/seedPoints.ts | 2 +- backend/bin/sendAiStatistics.ts | 65 +- backend/graphql/Completion/model.ts | 11 +- backend/graphql/Completion/mutations.ts | 27 +- backend/graphql/Completion/queries.ts | 12 +- backend/graphql/Course/model.ts | 3 +- backend/graphql/Course/mutations.ts | 13 +- backend/graphql/StudyModule/model.ts | 33 +- backend/graphql/Tag.ts | 6 +- backend/graphql/User/model.ts | 92 +- backend/graphql/UserCourseProgress.ts | 15 +- backend/graphql/UserCourseServiceProgress.ts | 4 +- backend/graphql/UserCourseSetting.ts | 72 +- backend/graphql/UserCourseSummary.ts | 84 +- .../20230522102035_rename-foreign-keys.ts | 337 -- .../20230522111132_rename-indexes.ts | 266 -- ...0230522121925_rename-unique-constraints.ts | 103 - ...e-email-template-remove-duplicate-index.ts | 11 - .../20230522123809_rename-primary-keys.ts | 23 - ...er-table-email-delivery-add-primary-key.ts | 15 - ...4_alter-table-course-to-tag-add-b-index.ts | 12 - backend/package-lock.json | 3499 ++--------------- backend/package.json | 8 +- backend/patches/@prisma+client+2.23.0.patch | 40 + ...e8cba3daf12d456d911d72b6e9418681b28b.patch | 12 + backend/patches/prisma+2.23.0.patch | 60 + backend/prisma/schema.prisma | 833 ++-- backend/schema.ts | 42 +- backend/tests/data/fixtures.ts | 4 +- backend/types/GraphQLScalars.d.ts | 11 - 46 files changed, 1302 insertions(+), 4912 deletions(-) delete mode 100644 backend/migrations/20230522102035_rename-foreign-keys.ts delete mode 100644 backend/migrations/20230522111132_rename-indexes.ts delete mode 100644 backend/migrations/20230522121925_rename-unique-constraints.ts delete mode 100644 backend/migrations/20230522122836_alter-table-email-template-remove-duplicate-index.ts delete mode 100644 backend/migrations/20230522123809_rename-primary-keys.ts delete mode 100644 backend/migrations/20230522124532_alter-table-email-delivery-add-primary-key.ts delete mode 100644 backend/migrations/20230522133214_alter-table-course-to-tag-add-b-index.ts create mode 100644 backend/patches/@prisma+client+2.23.0.patch create mode 100644 backend/patches/@prisma+engines+2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b.patch create mode 100644 backend/patches/prisma+2.23.0.patch delete mode 100644 backend/types/GraphQLScalars.d.ts diff --git a/backend/api/routes/completions.ts b/backend/api/routes/completions.ts index 08ab332fc..b83b5ae83 100644 --- a/backend/api/routes/completions.ts +++ b/backend/api/routes/completions.ts @@ -254,22 +254,20 @@ export class CompletionController extends Controller { user: User, ): Promise => { return ( - ( - await this.ctx.prisma.user - .findUnique({ - where: { - id: user.id, - }, - }) - .completions({ - where: { - course_id: course.completions_handled_by_id ?? course.id, - }, - orderBy: { created_at: "asc" }, - take: 1, - }) - )?.[0] ?? null - ) + await this.ctx.prisma.user + .findUnique({ + where: { + id: user.id, + }, + }) + .completions({ + where: { + course_id: course.completions_handled_by_id ?? course.id, + }, + orderBy: { created_at: "asc" }, + take: 1, + }) + )?.[0] } recheckCompletion = async ( diff --git a/backend/api/routes/progress.ts b/backend/api/routes/progress.ts index d4f56933d..7cd8735e8 100644 --- a/backend/api/routes/progress.ts +++ b/backend/api/routes/progress.ts @@ -311,39 +311,37 @@ export class ProgressController extends Controller { } logger.info("Querying existing progresses and completions") - const beforeParentProgresses = - (await prisma.course - .findUnique({ - where: { - id: BAIParentCourse, - }, - }) - .user_course_progresses({ - distinct: ["user_id"], - orderBy: { - created_at: "asc", - }, - include: { - user: true, - }, - })) ?? [] + const beforeParentProgresses = await prisma.course + .findUnique({ + where: { + id: BAIParentCourse, + }, + }) + .user_course_progresses({ + distinct: ["user_id"], + orderBy: { + created_at: "asc", + }, + include: { + user: true, + }, + }) - const beforeCompletions = - (await prisma.course - .findUnique({ - where: { - id: BAIParentCourse, - }, - }) - .completions({ - distinct: ["user_id"], - orderBy: { - created_at: "asc", - }, - include: { - user: true, - }, - })) ?? [] + const beforeCompletions = await prisma.course + .findUnique({ + where: { + id: BAIParentCourse, + }, + }) + .completions({ + distinct: ["user_id"], + orderBy: { + created_at: "asc", + }, + include: { + user: true, + }, + }) const getUsers = (arr: Array) => arr?.map((e) => e.user).filter(notEmpty) ?? [] @@ -420,20 +418,19 @@ export class ProgressController extends Controller { advancedBAICourse, ]) { logger.info(`Handling ${course.slug}`) - const userCourseProgresses = - (await prisma.course - .findUnique({ - where: { - id: course.id, - }, - }) - .user_course_progresses({ - distinct: ["user_id"], - orderBy: { created_at: "asc" }, - include: { - user: true, - }, - })) ?? [] + const userCourseProgresses = await prisma.course + .findUnique({ + where: { + id: course.id, + }, + }) + .user_course_progresses({ + distinct: ["user_id"], + orderBy: { created_at: "asc" }, + include: { + user: true, + }, + }) if (userCourseProgresses.length) { logger.info( @@ -482,39 +479,37 @@ export class ProgressController extends Controller { } logger.info("Querying updated progresses and completions") - const afterParentProgresses = - (await prisma.course - .findUnique({ - where: { - id: BAIParentCourse, - }, - }) - .user_course_progresses({ - distinct: ["user_id"], - orderBy: { - created_at: "asc", - }, - include: { - user: true, - }, - })) ?? [] + const afterParentProgresses = await prisma.course + .findUnique({ + where: { + id: BAIParentCourse, + }, + }) + .user_course_progresses({ + distinct: ["user_id"], + orderBy: { + created_at: "asc", + }, + include: { + user: true, + }, + }) - const afterCompletions = - (await prisma.course - .findUnique({ - where: { - id: BAIParentCourse, - }, - }) - .completions({ - distinct: ["user_id"], - orderBy: { - created_at: "asc", - }, - include: { - user: true, - }, - })) ?? [] + const afterCompletions = await prisma.course + .findUnique({ + where: { + id: BAIParentCourse, + }, + }) + .completions({ + distinct: ["user_id"], + orderBy: { + created_at: "asc", + }, + include: { + user: true, + }, + }) const result = { progresses: { diff --git a/backend/api/routes/storedData.ts b/backend/api/routes/storedData.ts index cbc45179f..54dd4605d 100644 --- a/backend/api/routes/storedData.ts +++ b/backend/api/routes/storedData.ts @@ -38,9 +38,9 @@ export class StoredDataController extends Controller { try { const existingStoredData = await prisma.storedData.findUnique({ where: { - course_id_user_id: { - course_id: course.id, + user_id_course_id: { user_id: user.id, + course_id: course.id, }, }, }) @@ -59,9 +59,9 @@ export class StoredDataController extends Controller { await prisma.storedData.update({ where: { - course_id_user_id: { - course_id: course.id, + user_id_course_id: { user_id: user.id, + course_id: course.id, }, }, data: { @@ -98,26 +98,25 @@ export class StoredDataController extends Controller { return ownershipResult.error } - const storedData = - (await prisma.course - .findUnique({ - where: { id: course.id }, - }) - .stored_data({ - include: { - user: { - include: { - completions: { - where: { - course_id: course.completions_handled_by_id ?? course.id, - }, - orderBy: { created_at: "asc" }, - take: 1, + const storedData = await prisma.course + .findUnique({ + where: { id: course.id }, + }) + .stored_data({ + include: { + user: { + include: { + completions: { + where: { + course_id: course.completions_handled_by_id ?? course.id, }, + orderBy: { created_at: "asc" }, + take: 1, }, }, }, - })) ?? [] + }, + }) const mappedStoredData = storedData.map((data) => ({ user: omit(data.user, "completions"), diff --git a/backend/bin/fetchUserAppDatum.ts b/backend/bin/fetchUserAppDatum.ts index 197e7c6c2..30ebe8d0a 100644 --- a/backend/bin/fetchUserAppDatum.ts +++ b/backend/bin/fetchUserAppDatum.ts @@ -1,6 +1,6 @@ import { DateTime } from "luxon" -import { Course, Prisma, PrismaClient, UserCourseSetting } from "@prisma/client" +import { Course, PrismaClient, UserCourseSetting } from "@prisma/client" import { CONFIG_NAME } from "../config" import { UserInfo } from "../domain/UserInfo" @@ -212,7 +212,7 @@ const saveCourseVariant = async (p: any) => { } const saveOther = async (p: any) => { - const other = (old.other as Prisma.JsonObject) ?? {} + const other: any = old.other ?? {} if (p.value == "t") { p.value = true } else if (p.value == "f") { diff --git a/backend/bin/importOrganizations.ts b/backend/bin/importOrganizations.ts index 1f0c5ca4e..36bfdc67f 100644 --- a/backend/bin/importOrganizations.ts +++ b/backend/bin/importOrganizations.ts @@ -71,12 +71,11 @@ const upsertOrganization = async (org: OrganizationInfo) => { information: org.information, organization: { connect: { id: organization.id } }, } - const organizationTranslations = - (await prisma.organization - .findUnique({ where: { id: organization.id } }) - .organization_translations({ - where: { language: translationDetails.language }, - })) ?? [] + const organizationTranslations = await prisma.organization + .findUnique({ where: { id: organization.id } }) + .organization_translations({ + where: { language: translationDetails.language }, + }) const organizationTranslationId = organizationTranslations.length ? organizationTranslations[0].id : null diff --git a/backend/bin/kafkaConsumer/common/EmailTemplater/templates/CourseStats.ts b/backend/bin/kafkaConsumer/common/EmailTemplater/templates/CourseStats.ts index 7508f97cd..864dad377 100644 --- a/backend/bin/kafkaConsumer/common/EmailTemplater/templates/CourseStats.ts +++ b/backend/bin/kafkaConsumer/common/EmailTemplater/templates/CourseStats.ts @@ -24,7 +24,7 @@ export class StartedCourseCount extends Template { const conditions = [ Prisma.sql`course_id = ${ course.inherit_settings_from_id ?? course.id - }::uuid`, + }`, ] if (courseInstanceLanguage) { conditions.push(Prisma.sql`language = ${courseInstanceLanguage}`) @@ -74,7 +74,7 @@ export class CompletedCourseCount extends Template { const conditions = [ Prisma.sql`course_id = ${ course.completions_handled_by_id ?? course.id - }::uuid`, + }`, ] if (completionLanguage) { conditions.push( @@ -124,7 +124,7 @@ export class AtLeastOneExerciseCount extends Template { COUNT(DISTINCT user_id) FROM exercise_completion ec JOIN exercise e ON ec.exercise_id = e.id - WHERE course_id = ${course.id}::uuid + WHERE course_id = ${course.id} AND attempted = true; ` )?.[0]?.count @@ -173,7 +173,7 @@ export class AtLeastOneExerciseButNotCompletedEmails extends Template { const conditions = [ Prisma.sql`course_id = ${ course.completions_handled_by_id ?? course.id - }::uuid`, + }`, Prisma.sql`user_id IS NOT NULL`, ] if (completionLanguage) { @@ -191,7 +191,7 @@ export class AtLeastOneExerciseButNotCompletedEmails extends Template { JOIN exercise e ON ec.exercise_id = e.id JOIN "user" u ON ec.user_id = u.id WHERE - e.course_id = ${course.id}::uuid + e.course_id = ${course.id} AND ec.attempted = true AND diff --git a/backend/bin/kafkaConsumer/common/__test__/userFunctions.test.ts b/backend/bin/kafkaConsumer/common/__test__/userFunctions.test.ts index 06b002325..8e0ad5d9b 100644 --- a/backend/bin/kafkaConsumer/common/__test__/userFunctions.test.ts +++ b/backend/bin/kafkaConsumer/common/__test__/userFunctions.test.ts @@ -625,21 +625,20 @@ describe("exercise completion utilities", () => { describe("pruneDuplicateExerciseCompletions", () => { it("should prune duplicates", async () => { - const before = - (await ctx.prisma.user - .findUnique({ - where: { - id: USER_ID_1, - }, - }) - .exercise_completions({ - where: { - exercise: { course_id: "00000000-0000-0000-0000-000000000667" }, - }, - orderBy: { - exercise_id: "asc", - }, - })) ?? [] + const before = await ctx.prisma.user + .findUnique({ + where: { + id: USER_ID_1, + }, + }) + .exercise_completions({ + where: { + exercise: { course_id: "00000000-0000-0000-0000-000000000667" }, + }, + orderBy: { + exercise_id: "asc", + }, + }) const result = ( await pruneDuplicateExerciseCompletions({ @@ -658,21 +657,20 @@ describe("exercise completion utilities", () => { expect(result).toEqual(expect.arrayContaining(expectedPruned)) - const after = - (await ctx.prisma.user - .findUnique({ - where: { - id: USER_ID_1, - }, - }) - .exercise_completions({ - where: { - exercise: { course_id: "00000000-0000-0000-0000-000000000667" }, - }, - orderBy: { - exercise_id: "asc", - }, - })) ?? [] + const after = await ctx.prisma.user + .findUnique({ + where: { + id: USER_ID_1, + }, + }) + .exercise_completions({ + where: { + exercise: { course_id: "00000000-0000-0000-0000-000000000667" }, + }, + orderBy: { + exercise_id: "asc", + }, + }) expect(before.length - after.length).toEqual(result.length) diff --git a/backend/bin/kafkaConsumer/common/userCourseProgress/BAI/completion.ts b/backend/bin/kafkaConsumer/common/userCourseProgress/BAI/completion.ts index ff7622c1f..66fa0373f 100644 --- a/backend/bin/kafkaConsumer/common/userCourseProgress/BAI/completion.ts +++ b/backend/bin/kafkaConsumer/common/userCourseProgress/BAI/completion.ts @@ -58,17 +58,16 @@ export const checkBAICompletion = async ({ // even though the handler is in this case the completion handler course. // Add a separate progress_handled_by, even though that would only apply here // as the tiers have their own progress? - const existingProgresses = - (await prisma.course - .findUnique({ - where: { id: handler?.id ?? course.id }, - }) - .user_course_progresses({ - where: { - user_id: user.id, - }, - orderBy: { created_at: "asc" }, - })) ?? [] + const existingProgresses = await prisma.course + .findUnique({ + where: { id: handler?.id ?? course.id }, + }) + .user_course_progresses({ + where: { + user_id: user.id, + }, + orderBy: { created_at: "asc" }, + }) if (existingProgresses.length < 1) { logger.info("No existing progress found, creating new...") diff --git a/backend/bin/kafkaConsumer/common/userCourseProgress/BAI/progress.ts b/backend/bin/kafkaConsumer/common/userCourseProgress/BAI/progress.ts index 606ad74c6..804d3d9f2 100644 --- a/backend/bin/kafkaConsumer/common/userCourseProgress/BAI/progress.ts +++ b/backend/bin/kafkaConsumer/common/userCourseProgress/BAI/progress.ts @@ -10,8 +10,6 @@ import { } from "../../../../../config/courseConfig" import { ExerciseCompletionPart, - ProgressExtra, - ServiceProgressPartType, TierInfo, TierProgressGroup, TierProgressMap, @@ -182,18 +180,15 @@ export const getProgress = ({ projectCompletion, highestTier, totalExerciseCompletions, -}: GetProgressArgs): { - progress: Array - extra: ProgressExtra -} => { +}: GetProgressArgs) => { // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const pointsProgress = (n_points || 0) / (max_points || 1) const newProgress = { progress: [ { group: "total", - max_points: max_points || 0, - n_points: n_points || 0, + max_points, + n_points, progress: isNaN(pointsProgress) ? 0 : pointsProgress, }, ], diff --git a/backend/bin/kafkaConsumer/common/userCourseProgress/generateUserCourseProgress.ts b/backend/bin/kafkaConsumer/common/userCourseProgress/generateUserCourseProgress.ts index 5a6472f8c..3533da003 100644 --- a/backend/bin/kafkaConsumer/common/userCourseProgress/generateUserCourseProgress.ts +++ b/backend/bin/kafkaConsumer/common/userCourseProgress/generateUserCourseProgress.ts @@ -1,4 +1,4 @@ -import { Course, Prisma, User, UserCourseProgress } from "@prisma/client" +import { Course, User, UserCourseProgress } from "@prisma/client" import { BAItiers } from "../../../../config/courseConfig" import { BaseContext } from "../../../../context" @@ -58,7 +58,7 @@ export const generateUserCourseProgress = async ({ return context.prisma.userCourseProgress.update({ where: { id: userCourseProgress.id }, data: { - progress: combined.progress ?? Prisma.JsonNull, // errors unless typed as any + progress: combined.progress as any, // errors unless typed as any max_points: { set: combined.total_max_points }, n_points: { set: combined.total_n_points }, }, diff --git a/backend/bin/kafkaConsumer/common/userCourseProgress/interfaces.ts b/backend/bin/kafkaConsumer/common/userCourseProgress/interfaces.ts index b0f2a3d93..f5202a2b0 100644 --- a/backend/bin/kafkaConsumer/common/userCourseProgress/interfaces.ts +++ b/backend/bin/kafkaConsumer/common/userCourseProgress/interfaces.ts @@ -1,6 +1,4 @@ -import { Prisma } from "@prisma/client" - -export interface Message extends Prisma.JsonObject { +export interface Message { timestamp: string user_id: number course_id: string @@ -9,14 +7,14 @@ export interface Message extends Prisma.JsonObject { message_format_version: number } -export interface PointsByGroup extends Prisma.JsonObject { +export interface PointsByGroup { group: string max_points: number n_points: number progress: number } -export interface ServiceProgressPartType extends Prisma.JsonObject { +export interface ServiceProgressPartType { max_points: number n_points: number group: string @@ -25,7 +23,7 @@ export interface ServiceProgressPartType extends Prisma.JsonObject { export type ServiceProgressType = Array -export interface TierProgress extends Prisma.JsonObject { +export interface TierProgress { tier: number n_points: number max_points: number @@ -42,8 +40,8 @@ export interface TotalProgress { total_max_points: number } -export interface TierProgressMap extends Prisma.JsonObject { - [Tier: string]: TierProgress +export type TierProgressMap = { + [Tier in string]: TierProgress } export interface ExerciseCompletionPart { @@ -54,14 +52,16 @@ export interface ExerciseCompletionPart { custom_id?: string } -export interface TierInfo extends Prisma.JsonObject { - [Tier: string]: { +export type TierInfo = Record< + string, + { hasTier: boolean missingFromTier: number exerciseCompletions: number } -} -export interface ProgressExtra extends Prisma.JsonObject { +> + +export type ProgressExtra = { tiers: TierInfo exercises: TierProgressMap projectCompletion: boolean diff --git a/backend/bin/kafkaConsumer/common/userCourseProgress/saveToDB.ts b/backend/bin/kafkaConsumer/common/userCourseProgress/saveToDB.ts index f6b241777..fca84ee00 100644 --- a/backend/bin/kafkaConsumer/common/userCourseProgress/saveToDB.ts +++ b/backend/bin/kafkaConsumer/common/userCourseProgress/saveToDB.ts @@ -1,7 +1,6 @@ import { DateTime } from "luxon" import { - Prisma, User, UserCourseProgress, UserCourseServiceProgress, @@ -78,7 +77,7 @@ export const saveToDatabase = async ( connect: { id: message.course_id }, }, user: { connect: { id: user.id } }, - progress: message.progress ?? Prisma.JsonNull, // type error without any + progress: message.progress as any, // type error without any }, }) } else if (userCourseProgresses.length > 1) { @@ -123,7 +122,7 @@ export const saveToDatabase = async ( id: userCourseServiceProgress.id, }, data: { - progress: message.progress ?? Prisma.JsonNull, // type error without any + progress: message.progress as any, // type error without any timestamp: { set: timestamp.toJSDate() }, }, }) @@ -137,7 +136,7 @@ export const saveToDatabase = async ( service: { connect: { id: message.service_id }, }, - progress: message.progress ?? Prisma.JsonNull, // type error without any + progress: message.progress as any, // type error without any user_course_progress: { connect: { id: userCourseProgress.id }, }, diff --git a/backend/bin/kafkaConsumer/common/userFunctions.ts b/backend/bin/kafkaConsumer/common/userFunctions.ts index 8b33349a6..be52b47bf 100644 --- a/backend/bin/kafkaConsumer/common/userFunctions.ts +++ b/backend/bin/kafkaConsumer/common/userFunctions.ts @@ -35,16 +35,15 @@ export const getCombinedUserCourseProgress = async ({ course, context: { prisma }, }: GetCombinedUserCourseProgressArgs): Promise => { - const userCourseServiceProgresses = - (await prisma.user - .findUnique({ where: { id: user.id } }) - .user_course_service_progresses({ - where: { - course_id: course.id, - }, - distinct: ["course_id", "service_id"], - orderBy: { created_at: "asc" }, - })) ?? [] + const userCourseServiceProgresses = await prisma.user + .findUnique({ where: { id: user.id } }) + .user_course_service_progresses({ + where: { + course_id: course.id, + }, + distinct: ["course_id", "service_id"], + orderBy: { created_at: "asc" }, + }) /* * Get rid of everything we dont neeed. After this the array looks like this: @@ -335,21 +334,20 @@ export const createCompletion = async ({ const handlerCourse = handler ?? course - const completions = - (await prisma.user - .findUnique({ - where: { - id: user.id, - }, - }) - .completions({ - where: { - course_id: handlerCourse.id, - }, - orderBy: { - created_at: "asc", - }, - })) ?? [] + const completions = await prisma.user + .findUnique({ + where: { + id: user.id, + }, + }) + .completions({ + where: { + course_id: handlerCourse.id, + }, + orderBy: { + created_at: "asc", + }, + }) if (completions.length < 1) { logger.info("No existing completion found, creating new...") @@ -408,12 +406,17 @@ export const createCompletion = async ({ const eligible_for_ects = tier === 1 ? false : handlerCourse.automatic_completions_eligible_for_ects try { - const updated = await prisma.$queryRaw>` + const updated = await prisma.$queryRaw( + ` UPDATE completion - SET tier=${tier}, eligible_for_ects=${eligible_for_ects}, updated_at=now() - WHERE id=${completions[0].id}::uuid AND COALESCE(tier, 0) < ${tier} - RETURNING tier;` + SET tier=$1, eligible_for_ects=$2, updated_at=now() + WHERE id=$3 AND COALESCE(tier, 0) < $1 + RETURNING tier;`, + tier, + eligible_for_ects, + completions[0].id, + ) if (updated.length > 0) { logger.info("Existing completion found, updated tier") } diff --git a/backend/bin/kafkaConsumer/common/userPoints/exerciseCompletionFunctions.ts b/backend/bin/kafkaConsumer/common/userPoints/exerciseCompletionFunctions.ts index aa2e86831..25cfd004e 100644 --- a/backend/bin/kafkaConsumer/common/userPoints/exerciseCompletionFunctions.ts +++ b/backend/bin/kafkaConsumer/common/userPoints/exerciseCompletionFunctions.ts @@ -55,22 +55,21 @@ export const getExerciseAndCompletions = async < } logger.info("Getting the exercise completion") - const exerciseCompletions = - (await prisma.user - .findUnique({ - where: { - upstream_id: Number(message.user_id), - }, - }) - .exercise_completions({ - where: { - exercise_id: exercise.id, - }, - orderBy: [{ timestamp: "desc" }, { updated_at: "desc" }], - include: { - exercise_completion_required_actions: true, - }, - })) ?? [] + const exerciseCompletions = await prisma.user + .findUnique({ + where: { + upstream_id: Number(message.user_id), + }, + }) + .exercise_completions({ + where: { + exercise_id: exercise.id, + }, + orderBy: [{ timestamp: "desc" }, { updated_at: "desc" }], + include: { + exercise_completion_required_actions: true, + }, + }) return ok([exercise, exerciseCompletions] as const) } @@ -135,23 +134,22 @@ export const getCreatedAndUpdatedExerciseCompletions = async < const exerciseIds = existingExercises.map((e) => e.id) logger.info("Getting the exercise completions") - const exerciseCompletions = - (await prisma.user - .findUnique({ - where: { - upstream_id: Number(message.user_id), - }, - }) - .exercise_completions({ - where: { - exercise_id: { in: exerciseIds }, - }, - distinct: ["exercise_id"], - orderBy: [{ timestamp: "desc" }, { updated_at: "desc" }], - include: { - exercise_completion_required_actions: true, - }, - })) ?? [] + const exerciseCompletions = await prisma.user + .findUnique({ + where: { + upstream_id: Number(message.user_id), + }, + }) + .exercise_completions({ + where: { + exercise_id: { in: exerciseIds }, + }, + distinct: ["exercise_id"], + orderBy: [{ timestamp: "desc" }, { updated_at: "desc" }], + include: { + exercise_completion_required_actions: true, + }, + }) const existingCompletedExercises = exerciseCompletions.map( (ec) => ec.exercise_id, diff --git a/backend/bin/linkopingStatsEmailer.ts b/backend/bin/linkopingStatsEmailer.ts index 183c980de..25a279231 100644 --- a/backend/bin/linkopingStatsEmailer.ts +++ b/backend/bin/linkopingStatsEmailer.ts @@ -23,7 +23,7 @@ const linkopingStatsEmailer = async () => { WHERE u.email ILIKE '%liu.se' AND ucs.other ->> 'ects_consent_sweden' = 'true' AND ucs.other ->> 'bai_completion' = 'true' - AND c.course_id = '49cbadd8-be32-454f-9b7d-e84d52100b74'::uuid + AND c.course_id = '49cbadd8-be32-454f-9b7d-e84d52100b74' AND ucs.country = 'Sweden' ORDER BY c.completion_date; ` diff --git a/backend/bin/pragueStatsEmailer.ts b/backend/bin/pragueStatsEmailer.ts index a16402574..5b7bc8ec7 100644 --- a/backend/bin/pragueStatsEmailer.ts +++ b/backend/bin/pragueStatsEmailer.ts @@ -20,7 +20,7 @@ const pragueStatsEmailer = async () => { FROM "user" u JOIN completion co on u.id = co.user_id JOIN user_course_setting ucs on u.id = ucs.user_id and co.course_id = ucs.course_id - WHERE co.course_id = '49cbadd8-be32-454f-9b7d-e84d52100b74'::uuid + WHERE co.course_id = '49cbadd8-be32-454f-9b7d-e84d52100b74' AND ucs.other->>'bai_completion' = 'true' AND u.email ILIKE '%@vse.cz' GROUP BY co.tier, u.email, co.completion_date diff --git a/backend/bin/seedPoints.ts b/backend/bin/seedPoints.ts index 456d78ade..3e7d87722 100644 --- a/backend/bin/seedPoints.ts +++ b/backend/bin/seedPoints.ts @@ -152,7 +152,7 @@ const addUserCourseSettingses = async (courseId: string) => { research: true, marketing: false, course_variant: null, - other: Prisma.JsonNull, + other: null, } return prisma.userCourseSetting.create({ data: ucs }) }), diff --git a/backend/bin/sendAiStatistics.ts b/backend/bin/sendAiStatistics.ts index 64a0d9170..810220e08 100644 --- a/backend/bin/sendAiStatistics.ts +++ b/backend/bin/sendAiStatistics.ts @@ -21,40 +21,37 @@ const data = { text: "" } const getDataByLanguage = async (langInfo: LanguageInfo) => { const { language, completion_language, country, langName } = langInfo - const totalByLang = - (await prisma.course - .findUnique({ - where: { slug: "elements-of-ai" }, - }) - .user_course_settings({ - where: { - language: language, - }, - distinct: ["user_id"], - })) ?? [] - const completionsByLang = - (await prisma.course - .findUnique({ - where: { slug: "elements-of-ai" }, - }) - .completions({ - where: { - completion_language, - }, - distinct: ["user_id"], - })) ?? [] - const englishInLang = - (await prisma.course - .findUnique({ - where: { slug: "elements-of-ai" }, - }) - .user_course_settings({ - where: { - country, - language: "en", - }, - distinct: ["user_id"], - })) ?? [] + const totalByLang = await prisma.course + .findUnique({ + where: { slug: "elements-of-ai" }, + }) + .user_course_settings({ + where: { + language: language, + }, + distinct: ["user_id"], + }) + const completionsByLang = await prisma.course + .findUnique({ + where: { slug: "elements-of-ai" }, + }) + .completions({ + where: { + completion_language, + }, + distinct: ["user_id"], + }) + const englishInLang = await prisma.course + .findUnique({ + where: { slug: "elements-of-ai" }, + }) + .user_course_settings({ + where: { + country, + language: "en", + }, + distinct: ["user_id"], + }) const now = new Date() return `\`\`\`Stats ${now.getDate()}.${ diff --git a/backend/graphql/Completion/model.ts b/backend/graphql/Completion/model.ts index 7bde78d69..742e3c229 100644 --- a/backend/graphql/Completion/model.ts +++ b/backend/graphql/Completion/model.ts @@ -77,12 +77,11 @@ export const Completion = objectType({ t.nonNull.field("registered", { type: "Boolean", resolve: async (parent, _, ctx) => { - const registered = - (await ctx.prisma.completion - .findUnique({ - where: { id: parent.id }, - }) - .completions_registered()) ?? [] + const registered = await ctx.prisma.completion + .findUnique({ + where: { id: parent.id }, + }) + .completions_registered() return registered.length > 0 }, diff --git a/backend/graphql/Completion/mutations.ts b/backend/graphql/Completion/mutations.ts index 20cfe1d6a..ba8151bba 100644 --- a/backend/graphql/Completion/mutations.ts +++ b/backend/graphql/Completion/mutations.ts @@ -193,20 +193,19 @@ export const CompletionMutations = extendType({ .filter((key) => key !== "null") // find users with completions - const completions = - (await ctx.prisma.course - .findUnique({ - where: { - id: course.completions_handled_by_id ?? course.id, - }, - }) - .completions({ - where: { - user_id: { in: userIds }, - }, - distinct: ["user_id", "course_id"], - orderBy: { created_at: "asc" }, - })) ?? [] + const completions = await ctx.prisma.course + .findUnique({ + where: { + id: course.completions_handled_by_id ?? course.id, + }, + }) + .completions({ + where: { + user_id: { in: userIds }, + }, + distinct: ["user_id", "course_id"], + orderBy: { created_at: "asc" }, + }) // filter users without completions const userIdsWithoutCompletions = difference( diff --git a/backend/graphql/Completion/queries.ts b/backend/graphql/Completion/queries.ts index 427d3f0da..e5c9d9c8f 100644 --- a/backend/graphql/Completion/queries.ts +++ b/backend/graphql/Completion/queries.ts @@ -101,14 +101,12 @@ export const CompletionQueries = extendType({ } return findManyCursorConnection( - async (args) => { - const res = await ctx.prisma.course + (args) => + ctx.prisma.course .findUnique({ where: { id: course.completions_handled_by_id ?? course.id }, }) - .completions(merge(baseArgs, args)) - return res ?? [] - }, + .completions(merge(baseArgs, args)), async () => { // TODO/FIXME: kludge as there is no distinct in prisma "count" or other aggregates // ctx.prisma.completion.count(baseArgs as any), // not really same type, so force it @@ -140,14 +138,14 @@ export const CompletionQueries = extendType({ )*/ return ( - (await ctx.prisma.course + await ctx.prisma.course .findUnique({ where: { id: course.completions_handled_by_id ?? course.id }, }) .completions({ ...baseArgs, select: { id: true }, - })) ?? [] + }) ).length }, { first, last, before, after }, diff --git a/backend/graphql/Course/model.ts b/backend/graphql/Course/model.ts index b1af45d0f..52fc613b3 100644 --- a/backend/graphql/Course/model.ts +++ b/backend/graphql/Course/model.ts @@ -59,7 +59,6 @@ export const Course = objectType({ t.model.upcoming_active_link() t.model.tier() t.model.handles_completions_for() - t.model.handles_settings_for() t.model.course_stats_email_id() t.model.course_stats_email() t.model.language() @@ -180,7 +179,7 @@ export const Course = objectType({ } } if (!includeHidden) { - tagsWhere.OR = [{ hidden: false }, { hidden: { not: true } }] + tagsWhere.OR = [{ hidden: false }, { hidden: null }] } const res = await ctx.prisma.course.findUnique({ diff --git a/backend/graphql/Course/mutations.ts b/backend/graphql/Course/mutations.ts index c77b0abba..02ae9b5b9 100644 --- a/backend/graphql/Course/mutations.ts +++ b/backend/graphql/Course/mutations.ts @@ -41,6 +41,7 @@ export const CourseMutations = extendType({ const { // slug, course_translations, + open_university_registration_links, course_variants, course_aliases, study_modules, @@ -63,12 +64,6 @@ export const CourseMutations = extendType({ tags = uniqBy((tags ?? []).concat({ id: language }), "id") } - const open_university_registration_links = - course.open_university_registration_links?.map((link) => ({ - ...link, - tiers: link.tiers ?? Prisma.JsonNull, - })) ?? undefined - const newCourse = await ctx.prisma.course.create({ data: { ...omit(course, [ @@ -208,7 +203,7 @@ export const CourseMutations = extendType({ } const studyModuleMutation: - | Prisma.StudyModuleUpdateManyWithoutCoursesNestedInput + | Prisma.StudyModuleUpdateManyWithoutCoursesInput | undefined = getStudyModuleMutation(existingCourse, study_modules) const inheritMutation = connectOrDisconnect( inherit_settings_from, @@ -331,7 +326,7 @@ function getTagMutation( | NexusGenInputs["CourseUpsertArg"] )["tags"] | null, -): Prisma.TagUpdateManyWithoutCoursesNestedInput | undefined { +): Prisma.TagUpdateManyWithoutCoursesInput | undefined { const languageTags = (tags ?? []).filter((tag) => tag.types?.includes("language"), ) @@ -378,7 +373,7 @@ function getStudyModuleMutation< | NexusGenInputs["CourseUpsertArg"] )["study_modules"] | null, -): Prisma.StudyModuleUpdateManyWithoutCoursesNestedInput | undefined { +): Prisma.StudyModuleUpdateManyWithoutCoursesInput | undefined { if (!study_modules) { return } diff --git a/backend/graphql/StudyModule/model.ts b/backend/graphql/StudyModule/model.ts index 895664e18..9690f4879 100644 --- a/backend/graphql/StudyModule/model.ts +++ b/backend/graphql/StudyModule/model.ts @@ -30,25 +30,24 @@ export const StudyModule = objectType({ const courses: (Course & { course_translations?: CourseTranslation[] - })[] = - (await ctx.prisma.studyModule - .findUnique({ - where: { id: parent.id }, - }) - .courses({ - orderBy: filterNull(orderBy) ?? undefined, - ...(language - ? { - include: { - course_translations: { - where: { - language, - }, + })[] = await ctx.prisma.studyModule + .findUnique({ + where: { id: parent.id }, + }) + .courses({ + orderBy: filterNull(orderBy) ?? undefined, + ...(language + ? { + include: { + course_translations: { + where: { + language, }, }, - } - : {}), - })) ?? [] + }, + } + : {}), + }) const values = courses.map((course) => ({ ...omit(course, "course_translations"), diff --git a/backend/graphql/Tag.ts b/backend/graphql/Tag.ts index 72be65af5..1e0de8245 100644 --- a/backend/graphql/Tag.ts +++ b/backend/graphql/Tag.ts @@ -183,7 +183,7 @@ export const TagQueries = extendType({ const res = await ctx.prisma.tag.findMany({ where: { ...(!includeHidden && { - OR: [{ hidden: false }, { hidden: { not: true } }], + OR: [{ hidden: false }, { hidden: null }], }), ...(!includeWithNoCourses && { courses: { @@ -249,7 +249,7 @@ export const TagMutations = extendType({ return ctx.prisma.tag.create({ data: { id: _id, - hidden: hidden ?? false, + hidden, ...(translations && { tag_translations: { create: translations, @@ -340,7 +340,7 @@ export const TagMutations = extendType({ } } if (!isNotNullOrUndefined(hidden)) { - data.hidden = { set: hidden ?? undefined } + data.hidden = { set: hidden } } if (Object.keys(data).length === 0) { diff --git a/backend/graphql/User/model.ts b/backend/graphql/User/model.ts index 50ab30ada..9329f94c9 100644 --- a/backend/graphql/User/model.ts +++ b/backend/graphql/User/model.ts @@ -206,17 +206,16 @@ export const User = objectType({ t.list.nonNull.field("progresses", { type: "Progress", resolve: async (parent, _, ctx) => { - const progressCourses = - (await ctx.prisma.user - .findUnique({ - where: { id: parent.id }, - }) - .user_course_progresses({ - distinct: ["course_id"], - select: { - course: true, - }, - })) ?? [] + const progressCourses = await ctx.prisma.user + .findUnique({ + where: { id: parent.id }, + }) + .user_course_progresses({ + distinct: ["course_id"], + select: { + course: true, + }, + }) return progressCourses .map((pr) => pr.course) @@ -274,7 +273,7 @@ export const User = objectType({ take: 1, }) - return progresses?.[0] ?? null + return progresses?.[0] }, }) @@ -313,44 +312,41 @@ export const User = objectType({ } if (course_id) { - const data = - (await ctx.prisma.course - .findUnique({ - where: { id: course_id }, - }) - .exercises({ - where: exerciseWhere, - select: { - exercise_completions: { - where: { - user_id: parent.id, - ...exerciseCompletionWhere, - }, - orderBy: [{ timestamp: "desc" }, { updated_at: "desc" }], - take: 1, + const data = await ctx.prisma.course + .findUnique({ + where: { id: course_id }, + }) + .exercises({ + where: exerciseWhere, + select: { + exercise_completions: { + where: { + user_id: parent.id, + ...exerciseCompletionWhere, }, + orderBy: [{ timestamp: "desc" }, { updated_at: "desc" }], + take: 1, }, - })) ?? [] + }, + }) return data?.flatMap((d) => d.exercise_completions).filter(notEmpty) } // TODO/FIXME: testing if ^ removes some joins; need to update queries that use it - return ( - ctx.prisma.user - .findUnique({ - where: { id: parent.id }, - }) - .exercise_completions({ - where: { - ...(exerciseWhere && { - exercise: exerciseWhere, - }), - ...exerciseCompletionWhere, - }, - distinct: "exercise_id", - orderBy: [{ timestamp: "desc" }, { updated_at: "desc" }], - }) ?? [] - ) + return ctx.prisma.user + .findUnique({ + where: { id: parent.id }, + }) + .exercise_completions({ + where: { + ...(exerciseWhere && { + exercise: exerciseWhere, + }), + ...exerciseCompletionWhere, + }, + distinct: "exercise_id", + orderBy: [{ timestamp: "desc" }, { updated_at: "desc" }], + }) }, }) @@ -423,7 +419,7 @@ export const User = objectType({ select distinct(e.course_id) as course_id from exercise_completion ec join exercise e on ec.exercise_id = e.id - where ec.user_id = ${id}::uuid + where ec.user_id = ${id} and ec.attempted = true ` @@ -437,7 +433,7 @@ export const User = objectType({ select distinct(e.course_id) as course_id, ec.timestamp from exercise_completion ec join exercise e on ec.exercise_id = e.id - where ec.user_id = ${id}::uuid + where ec.user_id = ${id} and ec.attempted = true ${activityDateClause} ) as sub @@ -448,7 +444,7 @@ export const User = objectType({ // not very optimal, as the exercise completions will be queried twice if that field is selected const startedCourses = await ctx.prisma.$queryRaw< Array - >` + >(Prisma.sql` select c.id as course_id, inherit_settings_from_id, @@ -464,7 +460,7 @@ export const User = objectType({ where c.id in ( ${subquery} ) - ` + `) // divide courses into three groups: // - not handled diff --git a/backend/graphql/UserCourseProgress.ts b/backend/graphql/UserCourseProgress.ts index 746b2037a..65956f46a 100644 --- a/backend/graphql/UserCourseProgress.ts +++ b/backend/graphql/UserCourseProgress.ts @@ -113,7 +113,7 @@ export const UserCourseProgress = objectType({ }, }) - return settings?.[0] ?? null + return settings?.[0] }, }) @@ -131,7 +131,7 @@ export const UserCourseProgress = objectType({ completed: boolean | null attempted: boolean | null }> - >` + >(Prisma.sql` select e.id as exercise_id, ecs.id as exercise_completion_id, completed, @@ -146,13 +146,13 @@ export const UserCourseProgress = objectType({ ) as row from exercise_completion ec join exercise e on ec.exercise_id = e.id - where ec.user_id = ${user_id}::uuid - and e.course_id = ${course_id}::uuid + where ec.user_id = ${user_id} + and e.course_id = ${course_id} ) ecs on ecs.exercise_id = e.id and row = 1 - where e.course_id = ${course_id}::uuid + where e.course_id = ${course_id} and e.deleted <> true and e.max_points > 0 - ` + `) const completedExerciseCount = exercises.filter( (e) => e.exercise_completion_id && e.completed, @@ -160,7 +160,6 @@ export const UserCourseProgress = objectType({ const attemptedExerciseCount = exercises.filter( (e) => e.exercise_completion_id && e.attempted, ).length - // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const totalProgress = (n_points || 0) / (max_points || 1) const exerciseProgress = @@ -378,7 +377,7 @@ export const UserCourseProgressMutations = extendType({ data: { user: { connect: { id: user_id } }, course: { connect: { id: course_id } }, - progress: progress ?? Prisma.JsonNull, + progress, extra, max_points, n_points, diff --git a/backend/graphql/UserCourseServiceProgress.ts b/backend/graphql/UserCourseServiceProgress.ts index 89147cb9c..92722d83e 100644 --- a/backend/graphql/UserCourseServiceProgress.ts +++ b/backend/graphql/UserCourseServiceProgress.ts @@ -93,7 +93,7 @@ export const UserCourseServiceProgressQueries = extendType({ orderBy: { created_at: "asc" }, }) - return progresses?.[0] ?? null + return progresses?.[0] }, }) @@ -159,7 +159,7 @@ export const UserCourseServiceProgressMutations = extendType({ course: { connect: { id: course_id }, }, - progress, + progress: progress, service: { connect: { id: service_id }, }, diff --git a/backend/graphql/UserCourseSetting.ts b/backend/graphql/UserCourseSetting.ts index b54c2c5fb..a4e8efd6f 100644 --- a/backend/graphql/UserCourseSetting.ts +++ b/backend/graphql/UserCourseSetting.ts @@ -122,7 +122,7 @@ export const UserCourseSettingQueries = extendType({ return (await ctx.prisma.$queryRaw(countQueryString))?.[0].count ?? 0*/ return ( - (await ctx.prisma.course + await ctx.prisma.course .findUnique({ where: { id: course?.inherit_settings_from_id ?? course_id }, }) @@ -134,7 +134,7 @@ export const UserCourseSettingQueries = extendType({ select: { id: true, }, - })) ?? [] + }) ).length } @@ -156,7 +156,7 @@ export const UserCourseSettingQueries = extendType({ return (await ctx.prisma.$queryRaw(countQueryString))?.[0].count ?? 0*/ if (user_id) { return ( - (await ctx.prisma.user + await ctx.prisma.user .findUnique({ where: { id: user_id }, }) @@ -165,7 +165,7 @@ export const UserCourseSettingQueries = extendType({ select: { id: true, }, - })) ?? [] + }) ).length } @@ -232,45 +232,41 @@ export const UserCourseSettingQueries = extendType({ }) return findManyCursorConnection( - async (connectionArgs) => { + (connectionArgs) => { if (course_id) { - return ( - (await ctx.prisma.course - .findUnique({ - where: { - id: course_id, - }, - }) - .user_course_settings({ - where: { - user: { - AND: userConditions, - }, - }, - distinct: ["user_id", "course_id"], - ...connectionArgs, - })) ?? [] - ) - } - - return ( - (await ctx.prisma.user - .findFirst({ - // could be findUnique if userSearch not specified + return ctx.prisma.course + .findUnique({ where: { - id: user_id ?? undefined, - upstream_id: user_upstream_id ?? undefined, - ...(userSearch ? { user: userSearch } : {}), + id: course_id, }, }) .user_course_settings({ where: { - course_id, + user: { + AND: userConditions, + }, }, distinct: ["user_id", "course_id"], ...connectionArgs, - })) ?? [] - ) + }) + } + + return ctx.prisma.user + .findFirst({ + // could be findUnique if userSearch not specified + where: { + id: user_id ?? undefined, + upstream_id: user_upstream_id ?? undefined, + ...(userSearch ? { user: userSearch } : {}), + }, + }) + .user_course_settings({ + where: { + course_id, + }, + distinct: ["user_id", "course_id"], + ...connectionArgs, + }) }, async () => { // TODO/FIXME: kludge because prisma "count" doesn't have distinct @@ -327,7 +323,7 @@ export const UserCourseSettingQueries = extendType({ })*/ if (course_id) { return ( - (await ctx.prisma.course + await ctx.prisma.course .findUnique({ where: { id: course_id, @@ -341,12 +337,12 @@ export const UserCourseSettingQueries = extendType({ }, distinct: ["user_id", "course_id"], select: { id: true }, - })) ?? [] + }) ).length } return ( - (await ctx.prisma.user + await ctx.prisma.user .findFirst({ // could be findUnique if userSearch not specified where: { @@ -360,7 +356,7 @@ export const UserCourseSettingQueries = extendType({ course_id, }, distinct: ["user_id", "course_id"], - })) ?? [] + }) ).length }, pick(args, ["first", "last", "before", "after"]), diff --git a/backend/graphql/UserCourseSummary.ts b/backend/graphql/UserCourseSummary.ts index 63826c9a6..4d16605df 100644 --- a/backend/graphql/UserCourseSummary.ts +++ b/backend/graphql/UserCourseSummary.ts @@ -21,8 +21,9 @@ export const UserCourseSummary = objectType({ t.nonNull.field("course", { type: "Course", resolve: async ({ course_id }, _, ctx) => { - return ctx.prisma.course.findUniqueOrThrow({ + return ctx.prisma.course.findUnique({ where: { id: course_id }, + rejectOnNotFound: true, }) }, }) @@ -55,23 +56,21 @@ export const UserCourseSummary = objectType({ ? includeNoPointsAwarded : include_no_points_awarded_exercises - return ( - (await ctx.prisma.course - .findUnique({ - where: { id: course_id }, - }) - .exercises({ - where: { - ...(!noPoints && { - max_points: { gt: 0 }, - }), - ...(!deleted && { - // same here: { deleted: { not: true } } will skip null - OR: [{ deleted: false }, { deleted: null }], - }), - }, - })) ?? [] - ) + return ctx.prisma.course + .findUnique({ + where: { id: course_id }, + }) + .exercises({ + where: { + ...(!noPoints && { + max_points: { gt: 0 }, + }), + ...(!deleted && { + // same here: { deleted: { not: true } } will skip null + OR: [{ deleted: false }, { deleted: null }], + }), + }, + }) }, }) @@ -98,7 +97,7 @@ export const UserCourseSummary = objectType({ take: 1, }) - return completions?.[0] ?? null + return completions?.[0] }, }) @@ -117,7 +116,7 @@ export const UserCourseSummary = objectType({ take: 1, }) - return progresses?.[0] ?? null + return progresses?.[0] }, }) @@ -168,31 +167,30 @@ export const UserCourseSummary = objectType({ const noPoints = notEmpty(includeNoPointsAwarded) ? includeNoPointsAwarded : include_no_points_awarded_exercises - const data = - (await ctx.prisma.course - .findUnique({ - where: { id: course_id }, - }) - .exercises({ - where: { - ...(!noPoints && { - max_points: { gt: 0 }, - }), - ...(!deleted && { - // same here: { deleted: { not: true } } will skip null - OR: [{ deleted: false }, { deleted: null }], - }), - }, - select: { - exercise_completions: { - where: { - user_id, - }, - orderBy: [{ timestamp: "desc" }, { updated_at: "desc" }], - take: 1, + const data = await ctx.prisma.course + .findUnique({ + where: { id: course_id }, + }) + .exercises({ + where: { + ...(!noPoints && { + max_points: { gt: 0 }, + }), + ...(!deleted && { + // same here: { deleted: { not: true } } will skip null + OR: [{ deleted: false }, { deleted: null }], + }), + }, + select: { + exercise_completions: { + where: { + user_id, }, + orderBy: [{ timestamp: "desc" }, { updated_at: "desc" }], + take: 1, }, - })) ?? [] + }, + }) return data?.flatMap((d) => d.exercise_completions).filter(notEmpty) // TODO/FIXME: testing if this actually removes any extra joins diff --git a/backend/migrations/20230522102035_rename-foreign-keys.ts b/backend/migrations/20230522102035_rename-foreign-keys.ts deleted file mode 100644 index 34597e7d6..000000000 --- a/backend/migrations/20230522102035_rename-foreign-keys.ts +++ /dev/null @@ -1,337 +0,0 @@ -import { Knex } from "knex" - -export async function up(knex: Knex): Promise { - await knex.raw(` - ALTER TABLE "ab_enrollment" - RENAME CONSTRAINT "ab_enrollment_ab_study" TO "ab_enrollment_ab_study_id_fkey"; - ALTER TABLE "ab_enrollment" - RENAME CONSTRAINT "ab_enrollment_user" TO "ab_enrollment_user_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "completion" - RENAME CONSTRAINT "completion_course_fkey" TO "completion_course_id_fkey"; - ALTER TABLE "completion" - RENAME CONSTRAINT "completion_user_fkey" TO "completion_user_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "completion_registered" - RENAME CONSTRAINT "completion_registered_completion_fkey" TO "completion_registered_completion_id_fkey"; - ALTER TABLE "completion_registered" - RENAME CONSTRAINT "completion_registered_user_fkey" TO "completion_registered_user_id_fkey"; - ALTER TABLE "completion_registered" - RENAME CONSTRAINT "completion_registered_course_fkey" TO "completion_registered_course_id_fkey"; - ALTER TABLE "completion_registered" - RENAME CONSTRAINT "completion_registered_organization_fkey" TO "completion_registered_organization_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "course" - RENAME CONSTRAINT "course_completion_email_fkey" TO "course_completion_email_id_fkey"; - ALTER TABLE "course" - RENAME CONSTRAINT "course_completions_handled_by_fkey" TO "course_completions_handled_by_id_fkey"; - ALTER TABLE "course" - RENAME CONSTRAINT "course_inherit_settings_from_fkey" TO "course_inherit_settings_from_id_fkey"; - ALTER TABLE "course" - RENAME CONSTRAINT "course_owner_organization_fkey" TO "course_owner_organization_id_fkey"; - ALTER TABLE "course" - RENAME CONSTRAINT "course_photo_fkey" TO "course_photo_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "course_alias" - RENAME CONSTRAINT "course_alias_course_fkey" TO "course_alias_course_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "course_organization" - RENAME CONSTRAINT "course_organization_course_fkey" TO "course_organization_course_id_fkey"; - ALTER TABLE "course_organization" - RENAME CONSTRAINT "course_organization_organization_fkey" TO "course_organization_organization_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "course_translation" - RENAME CONSTRAINT "course_translation_course_fkey" TO "course_translation_course_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "course_variant" - RENAME CONSTRAINT "course_variant_course_fkey" TO "course_variant_course_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "email_delivery" - RENAME CONSTRAINT "email_delivery_email_template_fkey" TO "email_delivery_email_template_id_fkey"; - ALTER TABLE "email_delivery" - RENAME CONSTRAINT "email_delivery_user_fkey" TO "email_delivery_user_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "email_template" - RENAME CONSTRAINT "course_threshold_email_fkey" TO "email_template_triggered_automatically_by_course_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "exercise" - RENAME CONSTRAINT "exercise_course_fkey" TO "exercise_course_id_fkey"; - ALTER TABLE "exercise" - RENAME CONSTRAINT "exercise_service_fkey" TO "exercise_service_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "exercise_completion" - RENAME CONSTRAINT "exercise_completion_exercise_fkey" TO "exercise_completion_exercise_id_fkey"; - ALTER TABLE "exercise_completion" - RENAME CONSTRAINT "exercise_completion_user_fkey" TO "exercise_completion_user_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "exercise_completion_required_actions" - RENAME CONSTRAINT "exercise_completion_required_actions_exercise_completion_fkey" TO "exercise_completion_required_actions_exercise_completion_i_fkey"; - `) - await knex.raw(` - ALTER TABLE "open_university_registration_link" - RENAME CONSTRAINT "open_university_registration_link_course_fkey" TO "open_university_registration_link_course_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "organization" - RENAME CONSTRAINT "organization_creator_fkey" TO "organization_creator_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "organization_translation" - RENAME CONSTRAINT "organization_translation_organization_fkey" TO "organization_translation_organization_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "stored_data" - RENAME CONSTRAINT "stored_data" TO "stored_data_user_id_fkey"; - ALTER TABLE "stored_data" - RENAME CONSTRAINT "stored_data_course" TO "stored_data_course_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "study_module_translation" - RENAME CONSTRAINT "study_module_translation_study_module_fkey" TO "study_module_translation_study_module_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "user_course_progress" - RENAME CONSTRAINT "user_course_progress_course_fkey" TO "user_course_progress_course_id_fkey"; - ALTER TABLE "user_course_progress" - RENAME CONSTRAINT "user_course_progress_user_fkey" TO "user_course_progress_user_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "user_course_service_progress" - RENAME CONSTRAINT "user_course_service_progress_course_fkey" TO "user_course_service_progress_course_id_fkey"; - ALTER TABLE "user_course_service_progress" - RENAME CONSTRAINT "user_course_service_progress_user_fkey" TO "user_course_service_progress_user_id_fkey"; - ALTER TABLE "user_course_service_progress" - RENAME CONSTRAINT "user_course_service_progress_service_fkey" TO "user_course_service_progress_service_id_fkey"; - ALTER TABLE "user_course_service_progress" - RENAME CONSTRAINT "user_course_service_progress_user_course_progress_fkey" TO "user_course_service_progress_user_course_progress_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "user_course_setting" - RENAME CONSTRAINT "UserCourseSettings_course_fkey" TO "user_course_setting_course_id_fkey"; - ALTER TABLE "user_course_setting" - RENAME CONSTRAINT "UserCourseSettings_user_fkey" TO "user_course_setting_user_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "user_course_settings_visibility" - RENAME CONSTRAINT "user_course_settings_visibility_course_fkey" TO "user_course_settings_visibility_course_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "user_organization" - RENAME CONSTRAINT "user_organization_organization_fkey" TO "user_organization_organization_id_fkey"; - ALTER TABLE "user_organization" - RENAME CONSTRAINT "user_organization_user_fkey" TO "user_organization_user_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "verified_user" - RENAME CONSTRAINT "verified_user_user_fkey" TO "verified_user_user_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "course_ownership" - RENAME CONSTRAINT "course_ownership_course" TO "course_ownership_course_id_fkey"; - ALTER TABLE "course_ownership" - RENAME CONSTRAINT "course_ownership_user" TO "course_ownership_user_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "course_stats_subscription" - RENAME CONSTRAINT "course_stats_subscription_user" TO "course_stats_subscription_user_id_fkey"; - ALTER TABLE "course_stats_subscription" - RENAME CONSTRAINT "course_stats_subscription_email_template" TO "course_stats_subscription_email_template_id_fkey"; - `) - await knex.raw(` - ALTER TABLE "tag_translation" - RENAME CONSTRAINT "tag_translation_tag_fkey" TO "tag_translation_tag_id_fkey"; - `) -} - -export async function down(knex: Knex): Promise { - await knex.raw(` - ALTER TABLE "ab_enrollment" - RENAME CONSTRAINT "ab_enrollment_ab_study_id_fkey" TO "ab_enrollment_ab_study"; - ALTER TABLE "ab_enrollment" - RENAME CONSTRAINT "ab_enrollment_user_id_fkey" TO "ab_enrollment_user"; -`) - - await knex.raw(` - ALTER TABLE "completion" - RENAME CONSTRAINT "completion_course_id_fkey" TO "completion_course_fkey"; - ALTER TABLE "completion" - RENAME CONSTRAINT "completion_user_id_fkey" TO "completion_user_fkey"; -`) - - await knex.raw(` - ALTER TABLE "completion_registered" - RENAME CONSTRAINT "completion_registered_completion_id_fkey" TO "completion_registered_completion_fkey"; - ALTER TABLE "completion_registered" - RENAME CONSTRAINT "completion_registered_user_id_fkey" TO "completion_registered_user_fkey"; - ALTER TABLE "completion_registered" - RENAME CONSTRAINT "completion_registered_course_id_fkey" TO "completion_registered_course_fkey"; - ALTER TABLE "completion_registered" - RENAME CONSTRAINT "completion_registered_organization_id_fkey" TO "completion_registered_organization_fkey"; -`) - - await knex.raw(` - ALTER TABLE "course" - RENAME CONSTRAINT "course_completion_email_id_fkey" TO "course_completion_email_fkey"; - ALTER TABLE "course" - RENAME CONSTRAINT "course_completions_handled_by_id_fkey" TO "course_completions_handled_by_fkey"; - ALTER TABLE "course" - RENAME CONSTRAINT "course_inherit_settings_from_id_fkey" TO "course_inherit_settings_from_fkey"; - ALTER TABLE "course" - RENAME CONSTRAINT "course_owner_organization_id_fkey" TO "course_owner_organization_fkey"; - ALTER TABLE "course" - RENAME CONSTRAINT "course_photo_id_fkey" TO "course_photo_fkey"; -`) - - await knex.raw(` - ALTER TABLE "course_alias" - RENAME CONSTRAINT "course_alias_course_id_fkey" TO "course_alias_course_fkey"; -`) - - await knex.raw(` - ALTER TABLE "course_organization" - RENAME CONSTRAINT "course_organization_course_id_fkey" TO "course_organization_course_fkey"; - ALTER TABLE "course_organization" - RENAME CONSTRAINT "course_organization_organization_id_fkey" TO "course_organization_organization_fkey"; -`) - - await knex.raw(` - ALTER TABLE "course_translation" - RENAME CONSTRAINT "course_translation_course_id_fkey" TO "course_translation_course_fkey"; -`) - - await knex.raw(` - ALTER TABLE "course_variant" - RENAME CONSTRAINT "course_variant_course_id_fkey" TO "course_variant_course_fkey"; -`) - - await knex.raw(` - ALTER TABLE "email_delivery" - RENAME CONSTRAINT "email_delivery_email_template_id_fkey" TO "email_delivery_email_template_fkey"; - ALTER TABLE "email_delivery" - RENAME CONSTRAINT "email_delivery_user_id_fkey" TO "email_delivery_user_fkey"; -`) - - await knex.raw(` - ALTER TABLE "email_template" - RENAME CONSTRAINT "email_template_triggered_automatically_by_course_id_fkey" TO "course_threshold_email_fkey"; -`) - - await knex.raw(` - ALTER TABLE "exercise" - RENAME CONSTRAINT "exercise_course_id_fkey" TO "exercise_course_fkey"; - ALTER TABLE "exercise" - RENAME CONSTRAINT "exercise_service_id_fkey" TO "exercise_service_fkey"; -`) - - await knex.raw(` - ALTER TABLE "exercise_completion" - RENAME CONSTRAINT "exercise_completion_exercise_id_fkey" TO "exercise_completion_exercise_fkey"; - ALTER TABLE "exercise_completion" - RENAME CONSTRAINT "exercise_completion_user_id_fkey" TO "exercise_completion_user_fkey"; -`) - - await knex.raw(` - ALTER TABLE "exercise_completion_required_actions" - RENAME CONSTRAINT "exercise_completion_required_actions_exercise_completion_i_fkey" TO "exercise_completion_required_actions_exercise_completion_fkey"; -`) - - await knex.raw(` - ALTER TABLE "open_university_registration_link" - RENAME CONSTRAINT "open_university_registration_link_course_id_fkey" TO "open_university_registration_link_course_fkey"; -`) - - await knex.raw(` - ALTER TABLE "organization" - RENAME CONSTRAINT "organization_creator_id_fkey" TO "organization_creator_fkey"; -`) - - await knex.raw(` - ALTER TABLE "organization_translation" - RENAME CONSTRAINT "organization_translation_organization_id_fkey" TO "organization_translation_organization_fkey"; -`) - - await knex.raw(` - ALTER TABLE "stored_data" - RENAME CONSTRAINT "stored_data_user_id_fkey" TO "stored_data"; - ALTER TABLE "stored_data" - RENAME CONSTRAINT "stored_data_course_id_fkey" TO "stored_data_course"; -`) - - await knex.raw(` - ALTER TABLE "study_module_translation" - RENAME CONSTRAINT "study_module_translation_study_module_id_fkey" TO "study_module_translation_study_module_fkey"; -`) - - await knex.raw(` - ALTER TABLE "user_course_progress" - RENAME CONSTRAINT "user_course_progress_course_id_fkey" TO "user_course_progress_course_fkey"; - ALTER TABLE "user_course_progress" - RENAME CONSTRAINT "user_course_progress_user_id_fkey" TO "user_course_progress_user_fkey"; -`) - - await knex.raw(` - ALTER TABLE "user_course_service_progress" - RENAME CONSTRAINT "user_course_service_progress_course_id_fkey" TO "user_course_service_progress_course_fkey"; - ALTER TABLE "user_course_service_progress" - RENAME CONSTRAINT "user_course_service_progress_user_id_fkey" TO "user_course_service_progress_user_fkey"; - ALTER TABLE "user_course_service_progress" - RENAME CONSTRAINT "user_course_service_progress_service_id_fkey" TO "user_course_service_progress_service_fkey"; - ALTER TABLE "user_course_service_progress" - RENAME CONSTRAINT "user_course_service_progress_user_course_progress_id_fkey" TO "user_course_service_progress_user_course_progress_fkey"; -`) - - await knex.raw(` - ALTER TABLE "user_course_setting" - RENAME CONSTRAINT "user_course_setting_course_id_fkey" TO "UserCourseSettings_course_fkey"; - ALTER TABLE "user_course_setting" - RENAME CONSTRAINT "user_course_setting_user_id_fkey" TO "UserCourseSettings_user_fkey"; -`) - - await knex.raw(` - ALTER TABLE "user_course_settings_visibility" - RENAME CONSTRAINT "user_course_settings_visibility_course_id_fkey" TO "user_course_settings_visibility_course_fkey"; -`) - - await knex.raw(` - ALTER TABLE "user_organization" - RENAME CONSTRAINT "user_organization_organization_id_fkey" TO "user_organization_organization_fkey"; - ALTER TABLE "user_organization" - RENAME CONSTRAINT "user_organization_user_id_fkey" TO "user_organization_user_fkey"; -`) - - await knex.raw(` - ALTER TABLE "verified_user" - RENAME CONSTRAINT "verified_user_user_id_fkey" TO "verified_user_user_fkey"; -`) - - await knex.raw(` - ALTER TABLE "course_ownership" - RENAME CONSTRAINT "course_ownership_course_id_fkey" TO "course_ownership_course"; - ALTER TABLE "course_ownership" - RENAME CONSTRAINT "course_ownership_user_id_fkey" TO "course_ownership_user"; -`) - - await knex.raw(` - ALTER TABLE "course_stats_subscription" - RENAME CONSTRAINT "course_stats_subscription_user_id_fkey" TO "course_stats_subscription_user"; - ALTER TABLE "course_stats_subscription" - RENAME CONSTRAINT "course_stats_subscription_email_template_id_fkey" TO "course_stats_subscription_email_template"; -`) - - await knex.raw(` - ALTER TABLE "tag_translation" - RENAME CONSTRAINT "tag_translation_tag_id_fkey" TO "tag_translation_tag_fkey"; -`) -} diff --git a/backend/migrations/20230522111132_rename-indexes.ts b/backend/migrations/20230522111132_rename-indexes.ts deleted file mode 100644 index 25dcae335..000000000 --- a/backend/migrations/20230522111132_rename-indexes.ts +++ /dev/null @@ -1,266 +0,0 @@ -import { Knex } from "knex" - -export async function up(knex: Knex): Promise { - await knex.raw(` - ALTER INDEX "ab_enrollment.ab_study_id_index" - RENAME TO "ab_enrollment_ab_study_id_idx"; - `) - await knex.raw(` - ALTER INDEX "completion.completion_language_index" - RENAME TO "completion_completion_language_idx"; - ALTER INDEX "completion.course_id_user_id_ordered_index" - RENAME TO "completion_course_id_user_id_created_at_idx"; - ALTER INDEX "completion.user_id_course_id_ordered_index" - RENAME TO "completion_user_id_course_id_created_at_idx"; - `) - await knex.raw(` - ALTER INDEX "completion_registered.completion_id_index" - RENAME TO "completion_registered_completion_id_idx"; - ALTER INDEX "completion_registered.course_id_index" - RENAME TO "completion_registered_course_id_idx"; - ALTER INDEX "completion_registered.organization_id_index" - RENAME TO "completion_registered_organization_id_idx"; - ALTER INDEX "completion_registered.user_id_course_id_index" - RENAME TO "completion_registered_user_id_course_id_idx"; - `) - await knex.raw(` - ALTER INDEX "course.completion_email_id_index" - RENAME TO "course_completion_email_id_idx"; - ALTER INDEX "course.completions_handled_by_index" - RENAME TO "course_completions_handled_by_id_idx"; - ALTER INDEX "course.status_index" - RENAME TO "course_status_idx"; - `) - await knex.raw(` - ALTER INDEX "course_alias.course_id" - RENAME TO "course_alias_course_id_idx"; - `) - await knex.raw(` - ALTER INDEX "course_translation.course_id_language_index" - RENAME TO "course_translation_course_id_language_idx"; - ALTER INDEX "course_translation.name_index" - RENAME TO "course_translation_name_idx"; - `) - await knex.raw(` - ALTER INDEX "course_variant.course_id" - RENAME TO "course_variant_course_id_idx"; - ALTER INDEX "course_variant.slug" - RENAME TO "course_variant_slug_idx"; - `) - await knex.raw(` - ALTER INDEX "email_delivery.email_template_id_index" - RENAME TO "email_delivery_email_template_id_idx"; - ALTER INDEX "email_delivery.user_id_email_template_id" - RENAME TO "email_delivery_user_id_email_template_id_idx"; - `) - await knex.raw(` - ALTER INDEX "email_template.triggered_automatically_template_type_index" - RENAME TO "email_template_triggered_automatically_by_course_id_templat_idx"; - `) - await knex.raw(` - ALTER INDEX "exercise.course_id_service_id_custom_id_index" - RENAME TO "exercise_course_id_service_id_custom_id_idx"; - ALTER INDEX "exercise.custom_id_index" - RENAME TO "exercise_custom_id_idx"; - ALTER INDEX "exercise.service_id_index" - RENAME TO "exercise_service_id_idx"; - `) - await knex.raw(` - ALTER INDEX "exercise_completion.user_id_exercise_id_ordered_index" - RENAME TO "exercise_completion_user_id_exercise_id_timestamp_updated_a_idx"; - `) - await knex.raw(` - ALTER INDEX "open_university_registration_link.course_id_index" - RENAME TO "open_university_registration_link_course_id_idx"; - `) - await knex.raw(` - ALTER INDEX "organization.creator_id_index" - RENAME TO "organization_creator_id_idx"; - `) - await knex.raw(` - ALTER INDEX "organization_translation.organization_id_index" - RENAME TO "organization_translation_organization_id_idx"; - `) - await knex.raw(` - ALTER INDEX "stored_data.user_id_index" - RENAME TO "stored_data_user_id_idx"; - `) - await knex.raw(` - ALTER INDEX "study_module_translation.study_module_id_language_index" - RENAME TO "study_module_translation_study_module_id_language_idx"; - `) - await knex.raw(` - ALTER INDEX "user.trgm_email_index" - RENAME TO "user_email_idx"; - ALTER INDEX "user.trgm_first_name_last_name_index" - RENAME TO "user_first_name_last_name_idx"; - ALTER INDEX "user.trgm_last_name_index" - RENAME TO "user_last_name_idx"; - `) - await knex.raw(` - ALTER INDEX "user_course_progress.course_id_user_id" - RENAME TO "user_course_progress_course_id_user_id_idx"; - ALTER INDEX "user_course_progress.user_id_index" - RENAME TO "user_course_progress_user_id_idx"; - `) - await knex.raw(` - ALTER INDEX "user_course_service_progress.course_id_index" - RENAME TO "user_course_service_progress_course_id_idx"; - ALTER INDEX "user_course_service_progress.service_id_course_id_user_id" - RENAME TO "user_course_service_progress_service_id_course_id_user_id_idx"; - ALTER INDEX "user_course_service_progress.user_id_index" - RENAME TO "user_course_service_progress_user_id_idx"; - `) - await knex.raw(` - ALTER INDEX "user_course_setting.country_index" - RENAME TO "user_course_setting_country_idx"; - ALTER INDEX "user_course_setting.course_user_ordered_index" - RENAME TO "user_course_setting_course_id_user_id_created_at_idx"; - ALTER INDEX "user_course_setting.language_index" - RENAME TO "user_course_setting_language_idx"; - ALTER INDEX "user_course_setting.user_id" - RENAME TO "user_course_setting_user_id_idx"; - `) -} - -export async function down(knex: Knex): Promise { - await knex.raw(` - ALTER INDEX "ab_enrollment_ab_study_id_idx" - RENAME TO "ab_enrollment.ab_study_id_index"; -`) - - await knex.raw(` - ALTER INDEX "completion_completion_language_idx" - RENAME TO "completion.completion_language_index"; - ALTER INDEX "completion_course_id_user_id_created_at_idx" - RENAME TO "completion.course_id_user_id_ordered_index"; - ALTER INDEX "completion_user_id_course_id_created_at_idx" - RENAME TO "completion.user_id_course_id_ordered_index"; -`) - - await knex.raw(` - ALTER INDEX "completion_registered_completion_id_idx" - RENAME TO "completion_registered.completion_id_index"; - ALTER INDEX "completion_registered_course_id_idx" - RENAME TO "completion_registered.course_id_index"; - ALTER INDEX "completion_registered_organization_id_idx" - RENAME TO "completion_registered.organization_id_index"; - ALTER INDEX "completion_registered_user_id_course_id_idx" - RENAME TO "completion_registered.user_id_course_id_index"; -`) - - await knex.raw(` - ALTER INDEX "course_completion_email_id_idx" - RENAME TO "course.completion_email_id_index"; - ALTER INDEX "course_completions_handled_by_id_idx" - RENAME TO "course.completions_handled_by_index"; - ALTER INDEX "course_status_idx" - RENAME TO "course.status_index"; -`) - - await knex.raw(` - ALTER INDEX "course_alias_course_id_idx" - RENAME TO "course_alias.course_id"; -`) - - await knex.raw(` - ALTER INDEX "course_translation_course_id_language_idx" - RENAME TO "course_translation.course_id_language_index"; - ALTER INDEX "course_translation_name_idx" - RENAME TO "course_translation.name_index"; -`) - - await knex.raw(` - ALTER INDEX "course_variant_course_id_idx" - RENAME TO "course_variant.course_id"; - ALTER INDEX "course_variant_slug_idx" - RENAME TO "course_variant.slug"; -`) - - await knex.raw(` - ALTER INDEX "email_delivery_email_template_id_idx" - RENAME TO "email_delivery.email_template_id_index"; - ALTER INDEX "email_delivery_user_id_email_template_id_idx" - RENAME TO "email_delivery.user_id_email_template_id"; -`) - - await knex.raw(` - ALTER INDEX "email_template_triggered_automatically_by_course_id_templat_idx" - RENAME TO "email_template.triggered_automatically_template_type_index"; -`) - - await knex.raw(` - ALTER INDEX "exercise_course_id_service_id_custom_id_idx" - RENAME TO "exercise.course_id_service_id_custom_id_index"; - ALTER INDEX "exercise_custom_id_idx" - RENAME TO "exercise.custom_id_index"; - ALTER INDEX "exercise_service_id_idx" - RENAME TO "exercise.service_id_index"; -`) - - await knex.raw(` - ALTER INDEX "exercise_completion_user_id_exercise_id_timestamp_updated_a_idx" - RENAME TO "exercise_completion.user_id_exercise_id_ordered_index"; -`) - - await knex.raw(` - ALTER INDEX "open_university_registration_link_course_id_idx" - RENAME TO "open_university_registration_link.course_id_index"; -`) - - await knex.raw(` - ALTER INDEX "organization_creator_id_idx" - RENAME TO "organization.creator_id_index"; -`) - - await knex.raw(` - ALTER INDEX "organization_translation_organization_id_idx" - RENAME TO "organization_translation.organization_id_index"; -`) - - await knex.raw(` - ALTER INDEX "stored_data_user_id_idx" - RENAME TO "stored_data.user_id_index"; -`) - - await knex.raw(` - ALTER INDEX "study_module_translation_study_module_id_language_idx" - RENAME TO "study_module_translation.study_module_id_language_index"; -`) - - await knex.raw(` - ALTER INDEX "user_email_idx" - RENAME TO "user.trgm_email_index"; - ALTER INDEX "user_first_name_last_name_idx" - RENAME TO "user.trgm_first_name_last_name_index"; - ALTER INDEX "user_last_name_idx" - RENAME TO "user.trgm_last_name_index"; -`) - - await knex.raw(` - ALTER INDEX "user_course_progress_course_id_user_id_idx" - RENAME TO "user_course_progress.course_id_user_id"; - ALTER INDEX "user_course_progress_user_id_idx" - RENAME TO "user_course_progress.user_id_index"; -`) - - await knex.raw(` - ALTER INDEX "user_course_service_progress_course_id_idx" - RENAME TO "user_course_service_progress.course_id_index"; - ALTER INDEX "user_course_service_progress_service_id_course_id_user_id_idx" - RENAME TO "user_course_service_progress.service_id_course_id_user_id"; - ALTER INDEX "user_course_service_progress_user_id_idx" - RENAME TO "user_course_service_progress.user_id_index"; -`) - - await knex.raw(` - ALTER INDEX "user_course_setting_country_idx" - RENAME TO "user_course_setting.country_index"; - ALTER INDEX "user_course_setting_course_id_user_id_created_at_idx" - RENAME TO "user_course_setting.course_user_ordered_index"; - ALTER INDEX "user_course_setting_language_idx" - RENAME TO "user_course_setting.language_index"; - ALTER INDEX "user_course_setting_user_id_idx" - RENAME TO "user_course_setting.user_id"; -`) -} diff --git a/backend/migrations/20230522121925_rename-unique-constraints.ts b/backend/migrations/20230522121925_rename-unique-constraints.ts deleted file mode 100644 index c25e508c1..000000000 --- a/backend/migrations/20230522121925_rename-unique-constraints.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { Knex } from "knex" - -export async function up(knex: Knex): Promise { - await knex.raw(` - ALTER INDEX "ab_enrollment.user_id_ab_study_id._UNIQUE" - RENAME TO "ab_enrollment_user_id_ab_study_id_key"; - `) - await knex.raw(` - ALTER INDEX "ab_studies.name._UNIQUE" - RENAME TO "ab_study_name_key"; - `) - await knex.raw(` - ALTER INDEX "course.slug._UNIQUE" - RENAME TO "course_slug_key"; - `) - await knex.raw(` - ALTER INDEX "course_alias.course_code._UNIQUE" - RENAME TO "course_alias_course_code_key"; - `) - await knex.raw(` - ALTER INDEX "organization.slug._UNIQUE" - RENAME TO "organization_slug_key"; - ALTER INDEX "organization.secret_key._UNIQUE" - RENAME TO "organization_secret_key_key"; - `) - await knex.raw(` - ALTER INDEX "study_module.slug._UNIQUE" - RENAME TO "study_module_slug_key"; - `) - await knex.raw(` - ALTER INDEX "user.upstream_id._UNIQUE" - RENAME TO "user_upstream_id_key"; - ALTER INDEX "user.username._UNIQUE" - RENAME TO "user_username_key"; - `) - await knex.raw(` - ALTER INDEX "course_ownership.user_id_course_id._UNIQUE" - RENAME TO "course_ownership_user_id_course_id_key"; - `) - await knex.raw(` - ALTER INDEX "course_stats_subscription.user_id_email_template_id._UNIQUE" - RENAME TO "course_stats_subscription_user_id_email_template_id_key"; - `) - await knex.raw(` - ALTER INDEX "tag_translation.name_language._UNIQUE" - RENAME TO "tag_translation_name_language_key"; - `) - await knex.raw(` - ALTER INDEX "UserAppDatumConfig.name._UNIQUE" - RENAME TO "user_app_datum_config_name_key"; - `) -} - -export async function down(knex: Knex): Promise { - await knex.raw(` - ALTER INDEX "ab_enrollment_user_id_ab_study_id_key" - RENAME TO "ab_enrollment.user_id_ab_study_id._UNIQUE"; - `) - await knex.raw(` - ALTER INDEX "ab_study_name_key" - RENAME TO "ab_studies.name._UNIQUE"; - `) - await knex.raw(` - ALTER INDEX "course_slug_key" - RENAME TO "course.slug._UNIQUE"; - `) - await knex.raw(` - ALTER INDEX "course_alias_course_code_key" - RENAME TO "course_alias.course_code._UNIQUE"; - `) - await knex.raw(` - ALTER INDEX "organization_slug_key" - RENAME TO "organization.slug._UNIQUE"; - ALTER INDEX "organization_secret_key_key" - RENAME TO "organization.secret_key._UNIQUE"; - `) - await knex.raw(` - ALTER INDEX "study_module_slug_key" - RENAME TO "study_module.slug._UNIQUE"; - `) - await knex.raw(` - ALTER INDEX "user_upstream_id_key" - RENAME TO "user.upstream_id._UNIQUE"; - ALTER INDEX "user_username_key" - RENAME TO "user.username._UNIQUE"; - `) - await knex.raw(` - ALTER INDEX "course_ownership_user_id_course_id_key" - RENAME TO "course_ownership.user_id_course_id._UNIQUE"; - `) - await knex.raw(` - ALTER INDEX "course_stats_subscription_user_id_email_template_id_key" - RENAME TO "course_stats_subscription.user_id_email_template_id._UNIQUE"; - `) - await knex.raw(` - ALTER INDEX "tag_translation_name_language_key" - RENAME TO "tag_translation.name_language._UNIQUE"; - `) - await knex.raw(` - ALTER INDEX "user_app_datum_config_name_key" - RENAME TO "UserAppDatumConfig.name._UNIQUE"; - `) -} diff --git a/backend/migrations/20230522122836_alter-table-email-template-remove-duplicate-index.ts b/backend/migrations/20230522122836_alter-table-email-template-remove-duplicate-index.ts deleted file mode 100644 index b30af120c..000000000 --- a/backend/migrations/20230522122836_alter-table-email-template-remove-duplicate-index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Knex } from "knex" - -export async function up(knex: Knex): Promise { - await knex.raw(` - DROP INDEX IF EXISTS "email_template.triggered_automatically_template_type_index"; - `) -} - -export async function down(_knex: Knex): Promise { - // do nothing -} diff --git a/backend/migrations/20230522123809_rename-primary-keys.ts b/backend/migrations/20230522123809_rename-primary-keys.ts deleted file mode 100644 index 295cd694e..000000000 --- a/backend/migrations/20230522123809_rename-primary-keys.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Knex } from "knex" - -export async function up(knex: Knex): Promise { - await knex.raw(` - ALTER INDEX "UserAppDatumConfig_pkey" - RENAME TO "user_app_datum_config_pkey"; - `) - await knex.raw(` - ALTER INDEX "UserCourseSettings_pkey" - RENAME TO "user_course_setting_pkey"; - `) -} - -export async function down(knex: Knex): Promise { - await knex.raw(` - ALTER INDEX "user_app_datum_config_pkey" - RENAME TO "UserAppDatumConfig_pkey"; - `) - await knex.raw(` - ALTER INDEX "user_course_setting_pkey" - RENAME TO "UserCourseSettings_pkey"; - `) -} diff --git a/backend/migrations/20230522124532_alter-table-email-delivery-add-primary-key.ts b/backend/migrations/20230522124532_alter-table-email-delivery-add-primary-key.ts deleted file mode 100644 index 0d85d5c6b..000000000 --- a/backend/migrations/20230522124532_alter-table-email-delivery-add-primary-key.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Knex } from "knex" - -export async function up(knex: Knex): Promise { - await knex.raw(` - ALTER TABLE "email_delivery" - ADD CONSTRAINT "email_delivery_pkey" PRIMARY KEY (id); - `) -} - -export async function down(knex: Knex): Promise { - await knex.raw(` - ALTER TABLE "email_delivery" - DROP CONSTRAINT "email_delivery_pkey"; - `) -} diff --git a/backend/migrations/20230522133214_alter-table-course-to-tag-add-b-index.ts b/backend/migrations/20230522133214_alter-table-course-to-tag-add-b-index.ts deleted file mode 100644 index e53d97f1b..000000000 --- a/backend/migrations/20230522133214_alter-table-course-to-tag-add-b-index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Knex } from "knex" - -export async function up(knex: Knex): Promise { - await knex.raw(` - CREATE INDEX "_CourseToTag_B_index" - ON "_CourseToTag" ("B"); - `) -} - -export async function down(_knex: Knex): Promise { - // do nothing -} diff --git a/backend/package-lock.json b/backend/package-lock.json index f1246525e..94487cb90 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -14,8 +14,7 @@ "@devoxa/prisma-relay-cursor-connection": "^2.2.2", "@google-cloud/storage": "^6.10.0", "@graphql-tools/schema": "^9.0.19", - "@morgothulhu/nexus-plugin-prisma": "^0.43.13", - "@prisma/client": "^4.13.0", + "@prisma/client": "2.23.0", "@sentry/integrations": "^6.19.7", "@sentry/node": "^6.19.7", "axios": "^1.4.0", @@ -40,13 +39,13 @@ "morgan": "^1.10.0", "newrelic": "^9.15.0", "nexus": "^1.3.0", + "nexus-plugin-prisma": "^0.35.0", "node-rdkafka": "^2.16.0", "nodemailer": "^6.9.1", "patch-package": "^7.0.0", "pg": "^8.10.0", "pg-query-stream": "^4.4.0", - "prisma": "^4.13.0", - "prisma-graphql-type-decimal": "^3.0.0", + "prisma": "^2.23.0", "redis": "^4.6.6", "sharp": "^0.32.1", "shortid": "^2.2.16", @@ -94,6 +93,7 @@ "nanoid": "^3.3.2", "nock": "^13.3.1", "prettier": "^2.8.8", + "prisma": "2.23.0", "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "ts-node-dev": "^2.0.0", @@ -372,6 +372,7 @@ "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dev": true, "dependencies": { "@babel/highlight": "^7.18.6" }, @@ -768,6 +769,7 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -814,6 +816,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -827,6 +830,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -838,6 +842,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -851,6 +856,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -859,6 +865,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "engines": { "node": ">=4" } @@ -867,6 +874,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -2729,63 +2737,6 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, - "node_modules/@morgothulhu/nexus-plugin-prisma": { - "version": "0.43.13", - "resolved": "https://registry.npmjs.org/@morgothulhu/nexus-plugin-prisma/-/nexus-plugin-prisma-0.43.13.tgz", - "integrity": "sha512-m/HXlAzvg/+886ijAykm3cWcuAa63lvtWLJU8PW/umecgvMcpRTpMXsfYFCRF3THVSIvvwpDBmi8bSXfrmuRTA==", - "hasInstallScript": true, - "dependencies": { - "@prisma/internals": "4.13.0", - "camelcase": "^6.3.0", - "endent": "2.1.0", - "escape-string-regexp": "^4.0.0", - "fs-jetpack": "5.1.0", - "lodash": "4.17.21", - "pluralize": "8.0.0", - "semver": "7.3.8" - }, - "peerDependencies": { - "@prisma/client": "4.13.0", - "graphql": "16.6.0", - "nexus": "1.3.0" - } - }, - "node_modules/@morgothulhu/nexus-plugin-prisma/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@morgothulhu/nexus-plugin-prisma/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@morgothulhu/nexus-plugin-prisma/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@newrelic/aws-sdk": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@newrelic/aws-sdk/-/aws-sdk-5.0.2.tgz", @@ -2835,109 +2786,16 @@ "newrelic": ">=6.11.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz", - "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.13.0.tgz", - "integrity": "sha512-2dBX3Sj99H96uwJKvc2w9NOiNgbvAO6mOFJFramNkKfS9O4Um+VWgpnlAazoYjT6kUJ1MP70KQ5ngD4ed+4NUw==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.13.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.13.0.tgz", - "integrity": "sha512-euqjOkiN6xhjE//0vQYGvbStxoD/WWQRhDiO0OTLlnLBO9Yw2Gd/VoSx2H+svsebjzYk5OxLuREBmcdw6rbUNg==", - "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.13.0.tgz", - "integrity": "sha512-moTiQtc0uPR1hQLt6gLDJH9IIkeBhgRb71OKjNHZPE1VF45fHtD6nBDi5J/DkTHTwYP5X3kBJLa3xN7ub6J4eg==", - "dependencies": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.5.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.13.0.tgz", - "integrity": "sha512-LMGqfSZkaMQXqewO0o1wvWr/2fQdCh4a3Sqlxka/UsJCe0cfLulh6x2aqnKLnsrSGiCq5rSCwvINd152i0nCqw==", - "engines": { - "node": ">=14" - } - }, "node_modules/@prisma/client": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.13.0.tgz", - "integrity": "sha512-YaiiICcRB2hatxsbnfB66uWXjcRw3jsZdlAVxmx0cFcTc/Ad/sKdHCcWSnqyDX47vAewkjRFwiLwrOUjswVvmA==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-2.23.0.tgz", + "integrity": "sha512-xsHdo3+wIH0hJVGfKHYTEKtifStjKH0b5t8t7hV32Fypq6+3uxhAi3F25yxuI4XSHXg21nb7Ha82lNwU/0TERA==", "hasInstallScript": true, "dependencies": { - "@prisma/engines-version": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a" + "@prisma/engines-version": "2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b" }, "engines": { - "node": ">=14.17" + "node": ">=10.16" }, "peerDependencies": { "prisma": "*" @@ -2948,352 +2806,17 @@ } } }, - "node_modules/@prisma/debug": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-4.13.0.tgz", - "integrity": "sha512-JrltTewF/paRb5mcM5OvcEi9DtdX0sINOAswruxKQrwOLA7Phqb52OfY38MIzGrsrJ8iUGVqQ5bpYZYpxOGCsQ==", - "dependencies": { - "@types/debug": "4.1.7", - "debug": "4.3.4", - "strip-ansi": "6.0.1" - } - }, - "node_modules/@prisma/engine-core": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/engine-core/-/engine-core-4.13.0.tgz", - "integrity": "sha512-D+jooGRXKAZcsBanhvFhqXMvNEiNaP+OaOvFOM/eKQQXM0FwtKc27l7mQFv4dd/zOufr5T+fJyrTTQhWyV8oFg==", - "dependencies": { - "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@prisma/debug": "4.13.0", - "@prisma/engines": "4.13.0", - "@prisma/generator-helper": "4.13.0", - "@prisma/get-platform": "4.13.0", - "chalk": "4.1.2", - "execa": "5.1.1", - "get-stream": "6.0.1", - "indent-string": "4.0.0", - "new-github-issue-url": "0.2.1", - "p-retry": "4.6.2", - "strip-ansi": "6.0.1", - "ts-pattern": "4.2.2", - "undici": "5.21.0" - } - }, - "node_modules/@prisma/engine-core/node_modules/ts-pattern": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.2.2.tgz", - "integrity": "sha512-qzJMo2pbkUJWusRH5o8xR+xogn6RmvViyUgwBFTtRENLse470clCGjHDf6haWGZ1AOmk8XkEohUoBW8Uut6Scg==" - }, "node_modules/@prisma/engines": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.13.0.tgz", - "integrity": "sha512-HrniowHRZXHuGT9XRgoXEaP2gJLXM5RMoItaY2PkjvuZ+iHc0Zjbm/302MB8YsPdWozAPHHn+jpFEcEn71OgPw==", + "version": "2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b.tgz", + "integrity": "sha512-Tgk3kggO5B9IT6mimJAw6HSxbFoDAuDKL3sHHSS41EnQm76j/nf4uhGZFPzOQwZWOLeT5ZLO2khr4/FCA9Nkhw==", + "devOptional": true, "hasInstallScript": true }, "node_modules/@prisma/engines-version": { - "version": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a.tgz", - "integrity": "sha512-fsQlbkhPJf08JOzKoyoD9atdUijuGBekwoOPZC3YOygXEml1MTtgXVpnUNchQlRSY82OQ6pSGQ9PxUe4arcSLQ==" - }, - "node_modules/@prisma/fetch-engine": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-4.13.0.tgz", - "integrity": "sha512-khMMm3I8nMUgwd7DoM1wBFjMKn/Z5PZF27EMQGPtquM1nRt601blJbep0qodXR7oHioQolCK8gfbw5Hfdml1mg==", - "dependencies": { - "@prisma/debug": "4.13.0", - "@prisma/get-platform": "4.13.0", - "chalk": "4.1.2", - "execa": "5.1.1", - "find-cache-dir": "3.3.2", - "fs-extra": "11.1.1", - "hasha": "5.2.2", - "http-proxy-agent": "5.0.0", - "https-proxy-agent": "5.0.1", - "node-fetch": "2.6.9", - "p-filter": "2.1.0", - "p-map": "4.0.0", - "p-retry": "4.6.2", - "progress": "2.0.3", - "rimraf": "3.0.2", - "temp-dir": "2.0.0", - "tempy": "1.0.1" - } - }, - "node_modules/@prisma/fetch-engine/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/@prisma/fetch-engine/node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@prisma/fetch-engine/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@prisma/generator-helper": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/generator-helper/-/generator-helper-4.13.0.tgz", - "integrity": "sha512-Zx9rtbsEIU/9DKnGRvmjLdyeyhzeeXNFp1alkRh1w//rQ5jTcobiay/jU4Qo+EQOs2bnWEfUeiBoOjfaysdLNg==", - "dependencies": { - "@prisma/debug": "4.13.0", - "@types/cross-spawn": "6.0.2", - "chalk": "4.1.2", - "cross-spawn": "7.0.3" - } - }, - "node_modules/@prisma/get-platform": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-4.13.0.tgz", - "integrity": "sha512-HWBgQNpRi1qEXj24w/qsWCpTW4vKP2/pdiYTyl2SSEVoK4o5izHUt0PQzNl5St5CGr4SDcSyi0C3fXINd46c6A==", - "dependencies": { - "@prisma/debug": "4.13.0", - "chalk": "4.1.2", - "escape-string-regexp": "4.0.0", - "execa": "5.1.1", - "fs-jetpack": "5.1.0", - "replace-string": "3.1.0", - "strip-ansi": "6.0.1", - "tempy": "1.0.1", - "terminal-link": "2.1.1", - "ts-pattern": "4.2.2" - } - }, - "node_modules/@prisma/get-platform/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@prisma/get-platform/node_modules/ts-pattern": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.2.2.tgz", - "integrity": "sha512-qzJMo2pbkUJWusRH5o8xR+xogn6RmvViyUgwBFTtRENLse470clCGjHDf6haWGZ1AOmk8XkEohUoBW8Uut6Scg==" - }, - "node_modules/@prisma/internals": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/internals/-/internals-4.13.0.tgz", - "integrity": "sha512-TxdTQFJO0zMCx0Tgb6UZt3WsVt+etvtWx+LaSWf4Pk1ECGte5w+9iiuypwjiLortSn7qm6n5KVWTXFOnnZr4Ww==", - "dependencies": { - "@prisma/debug": "4.13.0", - "@prisma/engine-core": "4.13.0", - "@prisma/engines": "4.13.0", - "@prisma/fetch-engine": "4.13.0", - "@prisma/generator-helper": "4.13.0", - "@prisma/get-platform": "4.13.0", - "@prisma/ni": "4.13.0", - "@prisma/prisma-fmt-wasm": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a", - "archiver": "5.3.1", - "arg": "5.0.2", - "chalk": "4.1.2", - "checkpoint-client": "1.1.23", - "cli-truncate": "2.1.0", - "dotenv": "16.0.3", - "escape-string-regexp": "4.0.0", - "execa": "5.1.1", - "find-up": "5.0.0", - "fp-ts": "2.13.1", - "fs-extra": "11.1.1", - "fs-jetpack": "5.1.0", - "global-dirs": "3.0.1", - "globby": "11.1.0", - "has-yarn": "2.1.0", - "is-windows": "^1.0.2", - "is-wsl": "^2.2.0", - "new-github-issue-url": "0.2.1", - "node-fetch": "2.6.9", - "npm-packlist": "5.1.3", - "open": "7", - "ora": "5.4.1", - "p-map": "4.0.0", - "prompts": "2.4.2", - "read-pkg-up": "7.0.1", - "replace-string": "3.1.0", - "resolve": "1.22.1", - "string-width": "4.2.3", - "strip-ansi": "6.0.1", - "strip-indent": "3.0.0", - "temp-dir": "2.0.0", - "temp-write": "4.0.0", - "tempy": "1.0.1", - "terminal-link": "2.1.1", - "tmp": "0.2.1", - "ts-pattern": "^4.0.1" - } - }, - "node_modules/@prisma/internals/node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "node_modules/@prisma/internals/node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/@prisma/internals/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@prisma/internals/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@prisma/internals/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/@prisma/internals/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@prisma/internals/node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@prisma/internals/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@prisma/internals/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@prisma/internals/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/@prisma/ni": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/ni/-/ni-4.13.0.tgz", - "integrity": "sha512-FN1wV1I61P6WndheLpja5oQuzIW2WkYqFViPL5GS5dhrpsO69SlyOnAsxpfCKUa5HhXINi7fowgdcngK1QDW9w==" - }, - "node_modules/@prisma/prisma-fmt-wasm": { - "version": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a", - "resolved": "https://registry.npmjs.org/@prisma/prisma-fmt-wasm/-/prisma-fmt-wasm-4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a.tgz", - "integrity": "sha512-kEYSUa3XT1Oiu/MbdUkyjfVtAOQmZz69KGKFH/GWoQNLvkscrqy4J4XewEY80BrVuyC3vbV7un4kea0xklWhpA==" + "version": "2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b.tgz", + "integrity": "sha512-VNgnOe+oPQKmy3HOtWi/Q1fvcKZUQkf1OfTD1pzrLBx9tJPejyxt1Mq54L+OOAuYvfrua6bmfojFVLh7uXuWVw==" }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", @@ -3684,22 +3207,6 @@ "@types/node": "*" } }, - "node_modules/@types/cross-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.2.tgz", - "integrity": "sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dependencies": { - "@types/ms": "*" - } - }, "node_modules/@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -3880,11 +3387,6 @@ "@types/node": "*" } }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, "node_modules/@types/node": { "version": "18.16.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", @@ -3908,11 +3410,6 @@ "@types/node": "*" } }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, "node_modules/@types/prettier": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", @@ -3929,11 +3426,6 @@ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - }, "node_modules/@types/serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", @@ -4072,22 +3564,11 @@ "node": ">= 6.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -4133,57 +3614,6 @@ "node": ">= 8" } }, - "node_modules/archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", - "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.3", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -4204,14 +3634,6 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, "node_modules/arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -4220,14 +3642,6 @@ "node": ">=8" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/async": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", @@ -4625,14 +4039,6 @@ "ieee754": "^1.1.13" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -4760,33 +4166,6 @@ "node": ">=10" } }, - "node_modules/checkpoint-client": { - "version": "1.1.23", - "resolved": "https://registry.npmjs.org/checkpoint-client/-/checkpoint-client-1.1.23.tgz", - "integrity": "sha512-NrGvMiH1fUcZwrYc0Z+YTn7q9ysV0kPgVyDKZ5jrfIerFJuSllvyGsY7bHeQSEiljaIaUP1Q/xutZ8q1s7PGzg==", - "dependencies": { - "ci-info": "3.3.0", - "env-paths": "2.2.1", - "fast-write-atomic": "0.2.1", - "make-dir": "3.1.0", - "ms": "2.1.3", - "node-fetch": "2.6.7", - "uuid": "8.3.2" - } - }, - "node_modules/checkpoint-client/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==" - }, - "node_modules/checkpoint-client/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/chokidar": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", @@ -4827,51 +4206,6 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", - "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -4882,14 +4216,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "engines": { - "node": ">=0.8" - } - }, "node_modules/cluster-key-slot": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", @@ -4994,25 +4320,6 @@ "node": "^12.20.0 || >=14" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - }, - "node_modules/compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", - "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/compressible": { "version": "2.0.17", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", @@ -5210,11 +4517,6 @@ "url": "https://opencollective.com/core-js" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -5227,29 +4529,6 @@ "node": ">= 0.10" } }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -5295,14 +4574,6 @@ "node": ">= 8" } }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "engines": { - "node": ">=8" - } - }, "node_modules/d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -5381,52 +4652,6 @@ "node": ">=0.10.0" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/del/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -5498,17 +4723,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/dotenv": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", @@ -5640,18 +4854,11 @@ "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "engines": { - "node": ">=6" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -5702,6 +4909,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, "engines": { "node": ">=0.8.0" } @@ -5756,6 +4964,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -5980,21 +5189,6 @@ "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==", "dev": true }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, "node_modules/fast-json-parse": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", @@ -6011,19 +5205,6 @@ "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" }, - "node_modules/fast-write-atomic": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fast-write-atomic/-/fast-write-atomic-0.2.1.tgz", - "integrity": "sha512-WvJe06IfNYlr+6cO3uQkdKdy3Cb1LlCJSF8zRs2eT8yuhdbSlR9nIt+TgQ92RUxiRrQm+/S7RARnMfCs5iuAjw==" - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -6095,26 +5276,11 @@ "node": ">= 0.8" } }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -6127,6 +5293,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -6187,11 +5354,6 @@ "node": ">= 0.6" } }, - "node_modules/fp-ts": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.13.1.tgz", - "integrity": "sha512-0eu5ULPS2c/jsa1lGFneEFFEdTbembJv8e4QKXeVJ3lm/5hyve06dlKZrpxmMwJt6rYen7sxmHHK2CLaXvWuWQ==" - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -6228,30 +5390,12 @@ } }, "node_modules/fs-jetpack": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-5.1.0.tgz", - "integrity": "sha512-Xn4fDhLydXkuzepZVsr02jakLlmoARPy+YWIclo4kh0GyNGUHnTqeH/w/qIsVn50dFxtp8otPL2t/HcPJBbxUA==", - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/fs-jetpack/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/fs-jetpack/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-4.3.1.tgz", + "integrity": "sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ==", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "minimatch": "^3.0.2", + "rimraf": "^2.6.3" } }, "node_modules/fs.realpath": { @@ -6366,6 +5510,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "engines": { "node": ">=10" }, @@ -6406,6 +5551,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -6413,28 +5559,6 @@ "node": ">= 6" } }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "engines": { - "node": ">=10" - } - }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -6444,25 +5568,6 @@ "node": ">=4" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/google-auth-library": { "version": "8.6.0", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.6.0.tgz", @@ -6648,37 +5753,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" - } - }, "node_modules/helmet": { "version": "6.1.5", "resolved": "https://registry.npmjs.org/helmet/-/helmet-6.1.5.tgz", @@ -6687,11 +5761,6 @@ "node": ">=14.0.0" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -6727,9 +5796,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dependencies": { "agent-base": "6", "debug": "4" @@ -6742,6 +5811,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "engines": { "node": ">=10.17.0" } @@ -6776,57 +5846,19 @@ } ] }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "engines": { - "node": ">= 4" - } + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, - "node_modules/ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, "dependencies": { - "minimatch": "^5.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, "bin": { "import-local-fixture": "fixtures/cli.js" @@ -6847,14 +5879,6 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -6893,7 +5917,8 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -6908,9 +5933,9 @@ } }, "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "dependencies": { "has": "^1.0.3" }, @@ -6936,6 +5961,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -6961,6 +5987,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -6968,14 +5995,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "engines": { - "node": ">=8" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -6984,22 +6003,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", @@ -7013,25 +6016,6 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -7043,11 +6027,6 @@ "node": ">=8" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -7778,7 +6757,8 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/js-yaml": { "version": "3.14.1", @@ -7816,7 +6796,8 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", @@ -7900,6 +6881,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, "engines": { "node": ">=6" } @@ -7959,31 +6941,6 @@ "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -8004,7 +6961,8 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "node_modules/localforage": { "version": "1.10.0", @@ -8087,26 +7045,6 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -8118,26 +7056,6 @@ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/logform": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", @@ -8195,6 +7113,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, "dependencies": { "semver": "^6.0.0" }, @@ -8209,6 +7128,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -8244,15 +7164,8 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/methods": { "version": "1.1.2", @@ -8319,6 +7232,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "engines": { "node": ">=6" } @@ -8334,14 +7248,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "engines": { - "node": ">=4" - } - }, "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -8444,14 +7350,6 @@ "node": ">= 0.6" } }, - "node_modules/new-github-issue-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/new-github-issue-url/-/new-github-issue-url-0.2.1.tgz", - "integrity": "sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA==", - "engines": { - "node": ">=10" - } - }, "node_modules/newrelic": { "version": "9.15.0", "resolved": "https://registry.npmjs.org/newrelic/-/newrelic-9.15.0.tgz", @@ -8500,6 +7398,50 @@ "graphql": "15.x || 16.x" } }, + "node_modules/nexus-plugin-prisma": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/nexus-plugin-prisma/-/nexus-plugin-prisma-0.35.0.tgz", + "integrity": "sha512-zZh96Ol6eqDGGd2caZLayjDW5ruUxNdoglyAMa/bOTBfnxu1Keb9kOyD+n7zVV+Mot8t0GRvWS4XilXoKZF/Tg==", + "hasInstallScript": true, + "dependencies": { + "camelcase": "^6.2.0", + "endent": "^2.0.1", + "fs-jetpack": "^4.1.0", + "lodash": "^4.17.20", + "pluralize": "^8.0.0", + "semver": "^7.3.4" + }, + "peerDependencies": { + "@prisma/client": "2.23.x", + "graphql": "^15.3.0", + "nexus": "^1.0.0" + } + }, + "node_modules/nexus-plugin-prisma/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nexus-plugin-prisma/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/nexus/node_modules/iterall": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", @@ -8574,6 +7516,25 @@ } } }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -8638,102 +7599,20 @@ "node": ">=6.0.0" } }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/npm-bundled": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", - "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", - "dependencies": { - "npm-normalize-package-bin": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-packlist": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", - "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-packlist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm-packlist/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm-packlist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "dependencies": { "path-key": "^3.0.0" }, @@ -8809,6 +7688,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -8834,28 +7714,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -8864,25 +7722,6 @@ "node": ">=0.10.0" } }, - "node_modules/p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", - "dependencies": { - "p-map": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-filter/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "engines": { - "node": ">=6" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -8901,6 +7740,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -8912,6 +7752,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "dependencies": { "p-try": "^2.0.0" }, @@ -8922,36 +7763,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, "engines": { "node": ">=6" } @@ -8965,6 +7781,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -9026,6 +7843,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "engines": { "node": ">=8" } @@ -9056,14 +7874,6 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, "node_modules/pg": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", @@ -9187,6 +7997,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, "dependencies": { "find-up": "^4.0.0" }, @@ -9304,47 +8115,27 @@ } }, "node_modules/prisma": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.13.0.tgz", - "integrity": "sha512-L9mqjnSmvWIRCYJ9mQkwCtj4+JDYYTdhoyo8hlsHNDXaZLh/b4hR0IoKIBbTKxZuyHQzLopb/+0Rvb69uGV7uA==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-2.23.0.tgz", + "integrity": "sha512-3c/lmDy8nsPcEsfCufvCTJUEuwmAcTPbeGg9fL1qjlvS314duLUA/k2nm3n1rq4ImKqzeC5uaKfvI2IoAfwrJA==", + "devOptional": true, "hasInstallScript": true, "dependencies": { - "@prisma/engines": "4.13.0" + "@prisma/engines": "2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b" }, "bin": { "prisma": "build/index.js", "prisma2": "build/index.js" }, "engines": { - "node": ">=14.17" - } - }, - "node_modules/prisma-graphql-type-decimal": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prisma-graphql-type-decimal/-/prisma-graphql-type-decimal-3.0.0.tgz", - "integrity": "sha512-jrALv8ShVZoBBNyIOBCxwRoLM/DAOSD/OBKTWeJa9UigQXUTZniNXvLd4fLXwm+3v00A7cOZ1fFh3b74Ndgxhw==", - "peerDependencies": { - "@prisma/client": ">=4.12 <=5", - "graphql": "16" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" + "node": ">=10.4" } }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -9451,25 +8242,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -9520,52 +8292,6 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "engines": { - "node": ">=8" - } - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -9579,33 +8305,6 @@ "node": ">= 6" } }, - "node_modules/readdir-glob": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", - "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/readdirp": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", @@ -9712,17 +8411,6 @@ "jsesc": "bin/jsesc" } }, - "node_modules/replace-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/replace-string/-/replace-string-3.1.0.tgz", - "integrity": "sha512-yPpxc4ZR2makceA9hy/jHNqc7QVkd4Je/N0WRHm6bs3PtivPuPynxE5ejU/mp5EhnCv8+uZL7vhz8rkluSlx+Q==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -9732,16 +8420,12 @@ } }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9776,18 +8460,6 @@ "node": ">=10" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -9808,15 +8480,6 @@ "node": ">=12" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, "node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -9828,28 +8491,6 @@ "rimraf": "bin.js" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "node_modules/rxjs": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", @@ -10066,7 +8707,8 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/simple-concat": { "version": "1.0.1", @@ -10127,25 +8769,14 @@ "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, + "dev": true, "engines": { "node": ">=8" } @@ -10174,34 +8805,6 @@ "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==" }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==" - }, "node_modules/split2": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", @@ -10340,21 +8943,11 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, "engines": { "node": ">=6" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -10382,40 +8975,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -10465,90 +9024,6 @@ "node": ">=12" } }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/temp-write": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-4.0.0.tgz", - "integrity": "sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==", - "dependencies": { - "graceful-fs": "^4.1.15", - "is-stream": "^2.0.0", - "make-dir": "^3.0.0", - "temp-dir": "^1.0.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/temp-write/node_modules/temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/temp-write/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", - "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -10647,11 +9122,6 @@ "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=" }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -10818,11 +9288,6 @@ "node": ">=0.4.0" } }, - "node_modules/ts-pattern": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.3.0.tgz", - "integrity": "sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==" - }, "node_modules/tsconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", @@ -10878,6 +9343,7 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, "engines": { "node": ">=10" }, @@ -10923,36 +9389,6 @@ "node": ">=12.20" } }, - "node_modules/undici": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.21.0.tgz", - "integrity": "sha512-HOjK8l6a57b2ZGXOcUsI5NLfoTrfmbOl90ixJDl0AEFG4wgHNDQxtZy15/ZQp7HhjkpaGlp/eneMgtsu1dIlUA==", - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=12.18" - } - }, - "node_modules/undici/node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/undici/node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/unfetch": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-5.0.0.tgz", @@ -10998,17 +9434,6 @@ "node": ">=4" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -11101,15 +9526,6 @@ "node": ">=10.12.0" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -11127,19 +9543,6 @@ "makeerror": "1.0.12" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, "node_modules/websocket": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", @@ -11177,15 +9580,6 @@ "node": ">=12" } }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -11410,19 +9804,6 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } - }, - "node_modules/zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", - "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } } }, "dependencies": { @@ -11626,6 +10007,7 @@ "version": "7.21.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dev": true, "requires": { "@babel/highlight": "^7.18.6" } @@ -11927,7 +10309,8 @@ "@babel/helper-validator-identifier": { "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true }, "@babel/helper-validator-option": { "version": "7.21.0", @@ -11962,6 +10345,7 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -11972,6 +10356,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -11980,6 +10365,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -11990,6 +10376,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -11997,12 +10384,14 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -13333,415 +11722,53 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, - "@morgothulhu/nexus-plugin-prisma": { - "version": "0.43.13", - "resolved": "https://registry.npmjs.org/@morgothulhu/nexus-plugin-prisma/-/nexus-plugin-prisma-0.43.13.tgz", - "integrity": "sha512-m/HXlAzvg/+886ijAykm3cWcuAa63lvtWLJU8PW/umecgvMcpRTpMXsfYFCRF3THVSIvvwpDBmi8bSXfrmuRTA==", - "requires": { - "@prisma/internals": "4.13.0", - "camelcase": "^6.3.0", - "endent": "2.1.0", - "escape-string-regexp": "^4.0.0", - "fs-jetpack": "5.1.0", - "lodash": "4.17.21", - "pluralize": "8.0.0", - "semver": "7.3.8" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, "@newrelic/aws-sdk": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@newrelic/aws-sdk/-/aws-sdk-5.0.2.tgz", - "integrity": "sha512-vn5Aj0ZznjzqqxR69mHIWi7QUjBeab9f0Dfra/UOPZlyLy3Q/HbK4/sYV9/q/Ifmx85B3kJI4ca7mytCx073VQ==", - "requires": {} - }, - "@newrelic/koa": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@newrelic/koa/-/koa-7.1.1.tgz", - "integrity": "sha512-QvO6Wmz+wws0vtrpqsZz3KVMbDySY7VbdIu99f9fuWd775yNCTz2n2VfQhdkBxWlSQSlR4gO0Uh8RWa4HUzb3g==", - "requires": {} - }, - "@newrelic/native-metrics": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@newrelic/native-metrics/-/native-metrics-9.0.0.tgz", - "integrity": "sha512-WYDRs4hlFerUyism2TjF1PIJfP8w50Nc9Kt61zWNrGM3QYOrKXZ5ibA3R0fQgU0+LM7UWtQ9g7onFpVUGsj8QQ==", - "optional": true, - "requires": { - "https-proxy-agent": "^5.0.0", - "nan": "^2.16.0", - "semver": "^5.5.1" - } - }, - "@newrelic/superagent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@newrelic/superagent/-/superagent-6.0.0.tgz", - "integrity": "sha512-5nClQp9ACd4BvLusAgFHjjKLDgAaC+dKmIsRNOPC82LOLFaoOgxxtbecnDIJ0NWCKQS+WOdmXdgYutwH+e5dsA==", - "requires": {} - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@opentelemetry/api": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz", - "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==" - }, - "@opentelemetry/core": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.13.0.tgz", - "integrity": "sha512-2dBX3Sj99H96uwJKvc2w9NOiNgbvAO6mOFJFramNkKfS9O4Um+VWgpnlAazoYjT6kUJ1MP70KQ5ngD4ed+4NUw==", - "requires": { - "@opentelemetry/semantic-conventions": "1.13.0" - } - }, - "@opentelemetry/resources": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.13.0.tgz", - "integrity": "sha512-euqjOkiN6xhjE//0vQYGvbStxoD/WWQRhDiO0OTLlnLBO9Yw2Gd/VoSx2H+svsebjzYk5OxLuREBmcdw6rbUNg==", - "requires": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" - } - }, - "@opentelemetry/sdk-trace-base": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.13.0.tgz", - "integrity": "sha512-moTiQtc0uPR1hQLt6gLDJH9IIkeBhgRb71OKjNHZPE1VF45fHtD6nBDi5J/DkTHTwYP5X3kBJLa3xN7ub6J4eg==", - "requires": { - "@opentelemetry/core": "1.13.0", - "@opentelemetry/resources": "1.13.0", - "@opentelemetry/semantic-conventions": "1.13.0" - } - }, - "@opentelemetry/semantic-conventions": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.13.0.tgz", - "integrity": "sha512-LMGqfSZkaMQXqewO0o1wvWr/2fQdCh4a3Sqlxka/UsJCe0cfLulh6x2aqnKLnsrSGiCq5rSCwvINd152i0nCqw==" - }, - "@prisma/client": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.13.0.tgz", - "integrity": "sha512-YaiiICcRB2hatxsbnfB66uWXjcRw3jsZdlAVxmx0cFcTc/Ad/sKdHCcWSnqyDX47vAewkjRFwiLwrOUjswVvmA==", - "requires": { - "@prisma/engines-version": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a" - } - }, - "@prisma/debug": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-4.13.0.tgz", - "integrity": "sha512-JrltTewF/paRb5mcM5OvcEi9DtdX0sINOAswruxKQrwOLA7Phqb52OfY38MIzGrsrJ8iUGVqQ5bpYZYpxOGCsQ==", - "requires": { - "@types/debug": "4.1.7", - "debug": "4.3.4", - "strip-ansi": "6.0.1" - } - }, - "@prisma/engine-core": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/engine-core/-/engine-core-4.13.0.tgz", - "integrity": "sha512-D+jooGRXKAZcsBanhvFhqXMvNEiNaP+OaOvFOM/eKQQXM0FwtKc27l7mQFv4dd/zOufr5T+fJyrTTQhWyV8oFg==", - "requires": { - "@opentelemetry/api": "^1.3.0", - "@opentelemetry/sdk-trace-base": "^1.8.0", - "@prisma/debug": "4.13.0", - "@prisma/engines": "4.13.0", - "@prisma/generator-helper": "4.13.0", - "@prisma/get-platform": "4.13.0", - "chalk": "4.1.2", - "execa": "5.1.1", - "get-stream": "6.0.1", - "indent-string": "4.0.0", - "new-github-issue-url": "0.2.1", - "p-retry": "4.6.2", - "strip-ansi": "6.0.1", - "ts-pattern": "4.2.2", - "undici": "5.21.0" - }, - "dependencies": { - "ts-pattern": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.2.2.tgz", - "integrity": "sha512-qzJMo2pbkUJWusRH5o8xR+xogn6RmvViyUgwBFTtRENLse470clCGjHDf6haWGZ1AOmk8XkEohUoBW8Uut6Scg==" - } - } - }, - "@prisma/engines": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.13.0.tgz", - "integrity": "sha512-HrniowHRZXHuGT9XRgoXEaP2gJLXM5RMoItaY2PkjvuZ+iHc0Zjbm/302MB8YsPdWozAPHHn+jpFEcEn71OgPw==" - }, - "@prisma/engines-version": { - "version": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a.tgz", - "integrity": "sha512-fsQlbkhPJf08JOzKoyoD9atdUijuGBekwoOPZC3YOygXEml1MTtgXVpnUNchQlRSY82OQ6pSGQ9PxUe4arcSLQ==" - }, - "@prisma/fetch-engine": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-4.13.0.tgz", - "integrity": "sha512-khMMm3I8nMUgwd7DoM1wBFjMKn/Z5PZF27EMQGPtquM1nRt601blJbep0qodXR7oHioQolCK8gfbw5Hfdml1mg==", - "requires": { - "@prisma/debug": "4.13.0", - "@prisma/get-platform": "4.13.0", - "chalk": "4.1.2", - "execa": "5.1.1", - "find-cache-dir": "3.3.2", - "fs-extra": "11.1.1", - "hasha": "5.2.2", - "http-proxy-agent": "5.0.0", - "https-proxy-agent": "5.0.1", - "node-fetch": "2.6.9", - "p-filter": "2.1.0", - "p-map": "4.0.0", - "p-retry": "4.6.2", - "progress": "2.0.3", - "rimraf": "3.0.2", - "temp-dir": "2.0.0", - "tempy": "1.0.1" - }, - "dependencies": { - "fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "@prisma/generator-helper": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/generator-helper/-/generator-helper-4.13.0.tgz", - "integrity": "sha512-Zx9rtbsEIU/9DKnGRvmjLdyeyhzeeXNFp1alkRh1w//rQ5jTcobiay/jU4Qo+EQOs2bnWEfUeiBoOjfaysdLNg==", - "requires": { - "@prisma/debug": "4.13.0", - "@types/cross-spawn": "6.0.2", - "chalk": "4.1.2", - "cross-spawn": "7.0.3" - } - }, - "@prisma/get-platform": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-4.13.0.tgz", - "integrity": "sha512-HWBgQNpRi1qEXj24w/qsWCpTW4vKP2/pdiYTyl2SSEVoK4o5izHUt0PQzNl5St5CGr4SDcSyi0C3fXINd46c6A==", - "requires": { - "@prisma/debug": "4.13.0", - "chalk": "4.1.2", - "escape-string-regexp": "4.0.0", - "execa": "5.1.1", - "fs-jetpack": "5.1.0", - "replace-string": "3.1.0", - "strip-ansi": "6.0.1", - "tempy": "1.0.1", - "terminal-link": "2.1.1", - "ts-pattern": "4.2.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "ts-pattern": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.2.2.tgz", - "integrity": "sha512-qzJMo2pbkUJWusRH5o8xR+xogn6RmvViyUgwBFTtRENLse470clCGjHDf6haWGZ1AOmk8XkEohUoBW8Uut6Scg==" - } - } - }, - "@prisma/internals": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/internals/-/internals-4.13.0.tgz", - "integrity": "sha512-TxdTQFJO0zMCx0Tgb6UZt3WsVt+etvtWx+LaSWf4Pk1ECGte5w+9iiuypwjiLortSn7qm6n5KVWTXFOnnZr4Ww==", - "requires": { - "@prisma/debug": "4.13.0", - "@prisma/engine-core": "4.13.0", - "@prisma/engines": "4.13.0", - "@prisma/fetch-engine": "4.13.0", - "@prisma/generator-helper": "4.13.0", - "@prisma/get-platform": "4.13.0", - "@prisma/ni": "4.13.0", - "@prisma/prisma-fmt-wasm": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a", - "archiver": "5.3.1", - "arg": "5.0.2", - "chalk": "4.1.2", - "checkpoint-client": "1.1.23", - "cli-truncate": "2.1.0", - "dotenv": "16.0.3", - "escape-string-regexp": "4.0.0", - "execa": "5.1.1", - "find-up": "5.0.0", - "fp-ts": "2.13.1", - "fs-extra": "11.1.1", - "fs-jetpack": "5.1.0", - "global-dirs": "3.0.1", - "globby": "11.1.0", - "has-yarn": "2.1.0", - "is-windows": "^1.0.2", - "is-wsl": "^2.2.0", - "new-github-issue-url": "0.2.1", - "node-fetch": "2.6.9", - "npm-packlist": "5.1.3", - "open": "7", - "ora": "5.4.1", - "p-map": "4.0.0", - "prompts": "2.4.2", - "read-pkg-up": "7.0.1", - "replace-string": "3.1.0", - "resolve": "1.22.1", - "string-width": "4.2.3", - "strip-ansi": "6.0.1", - "strip-indent": "3.0.0", - "temp-dir": "2.0.0", - "temp-write": "4.0.0", - "tempy": "1.0.1", - "terminal-link": "2.1.1", - "tmp": "0.2.1", - "ts-pattern": "^4.0.1" - }, - "dependencies": { - "arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "requires": { - "p-locate": "^5.0.0" - } - }, - "node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "requires": { - "p-limit": "^3.0.2" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "requires": { - "rimraf": "^3.0.0" - } - } + "resolved": "https://registry.npmjs.org/@newrelic/aws-sdk/-/aws-sdk-5.0.2.tgz", + "integrity": "sha512-vn5Aj0ZznjzqqxR69mHIWi7QUjBeab9f0Dfra/UOPZlyLy3Q/HbK4/sYV9/q/Ifmx85B3kJI4ca7mytCx073VQ==", + "requires": {} + }, + "@newrelic/koa": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@newrelic/koa/-/koa-7.1.1.tgz", + "integrity": "sha512-QvO6Wmz+wws0vtrpqsZz3KVMbDySY7VbdIu99f9fuWd775yNCTz2n2VfQhdkBxWlSQSlR4gO0Uh8RWa4HUzb3g==", + "requires": {} + }, + "@newrelic/native-metrics": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@newrelic/native-metrics/-/native-metrics-9.0.0.tgz", + "integrity": "sha512-WYDRs4hlFerUyism2TjF1PIJfP8w50Nc9Kt61zWNrGM3QYOrKXZ5ibA3R0fQgU0+LM7UWtQ9g7onFpVUGsj8QQ==", + "optional": true, + "requires": { + "https-proxy-agent": "^5.0.0", + "nan": "^2.16.0", + "semver": "^5.5.1" + } + }, + "@newrelic/superagent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@newrelic/superagent/-/superagent-6.0.0.tgz", + "integrity": "sha512-5nClQp9ACd4BvLusAgFHjjKLDgAaC+dKmIsRNOPC82LOLFaoOgxxtbecnDIJ0NWCKQS+WOdmXdgYutwH+e5dsA==", + "requires": {} + }, + "@prisma/client": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-2.23.0.tgz", + "integrity": "sha512-xsHdo3+wIH0hJVGfKHYTEKtifStjKH0b5t8t7hV32Fypq6+3uxhAi3F25yxuI4XSHXg21nb7Ha82lNwU/0TERA==", + "requires": { + "@prisma/engines-version": "2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b" } }, - "@prisma/ni": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@prisma/ni/-/ni-4.13.0.tgz", - "integrity": "sha512-FN1wV1I61P6WndheLpja5oQuzIW2WkYqFViPL5GS5dhrpsO69SlyOnAsxpfCKUa5HhXINi7fowgdcngK1QDW9w==" + "@prisma/engines": { + "version": "2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b.tgz", + "integrity": "sha512-Tgk3kggO5B9IT6mimJAw6HSxbFoDAuDKL3sHHSS41EnQm76j/nf4uhGZFPzOQwZWOLeT5ZLO2khr4/FCA9Nkhw==", + "devOptional": true }, - "@prisma/prisma-fmt-wasm": { - "version": "4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a", - "resolved": "https://registry.npmjs.org/@prisma/prisma-fmt-wasm/-/prisma-fmt-wasm-4.13.0-50.1e7af066ee9cb95cf3a403c78d9aab3e6b04f37a.tgz", - "integrity": "sha512-kEYSUa3XT1Oiu/MbdUkyjfVtAOQmZz69KGKFH/GWoQNLvkscrqy4J4XewEY80BrVuyC3vbV7un4kea0xklWhpA==" + "@prisma/engines-version": { + "version": "2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b.tgz", + "integrity": "sha512-VNgnOe+oPQKmy3HOtWi/Q1fvcKZUQkf1OfTD1pzrLBx9tJPejyxt1Mq54L+OOAuYvfrua6bmfojFVLh7uXuWVw==" }, "@protobufjs/aspromise": { "version": "1.1.2", @@ -14107,22 +12134,6 @@ "@types/node": "*" } }, - "@types/cross-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.2.tgz", - "integrity": "sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==", - "requires": { - "@types/node": "*" - } - }, - "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "requires": { - "@types/ms": "*" - } - }, "@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -14302,11 +12313,6 @@ "@types/node": "*" } }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, "@types/node": { "version": "18.16.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", @@ -14330,11 +12336,6 @@ "@types/node": "*" } }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, "@types/prettier": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", @@ -14351,11 +12352,6 @@ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, - "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - }, "@types/serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", @@ -14478,19 +12474,11 @@ "debug": "4" } }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "requires": { "type-fest": "^0.21.3" } @@ -14518,53 +12506,6 @@ "picomatch": "^2.0.4" } }, - "archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", - "requires": { - "archiver-utils": "^2.1.0", - "async": "^3.2.3", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - } - }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -14585,21 +12526,11 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, "arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - }, "async": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", @@ -14895,11 +12826,6 @@ "ieee754": "^1.1.13" } }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" - }, "buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -14988,32 +12914,6 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, - "checkpoint-client": { - "version": "1.1.23", - "resolved": "https://registry.npmjs.org/checkpoint-client/-/checkpoint-client-1.1.23.tgz", - "integrity": "sha512-NrGvMiH1fUcZwrYc0Z+YTn7q9ysV0kPgVyDKZ5jrfIerFJuSllvyGsY7bHeQSEiljaIaUP1Q/xutZ8q1s7PGzg==", - "requires": { - "ci-info": "3.3.0", - "env-paths": "2.2.1", - "fast-write-atomic": "0.2.1", - "make-dir": "3.1.0", - "ms": "2.1.3", - "node-fetch": "2.6.7", - "uuid": "8.3.2" - }, - "dependencies": { - "ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - } - } - }, "chokidar": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", @@ -15046,33 +12946,6 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", - "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==" - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -15083,11 +12956,6 @@ "wrap-ansi": "^7.0.0" } }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" - }, "cluster-key-slot": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", @@ -15180,22 +13048,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-9.1.0.tgz", "integrity": "sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==" }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - }, - "compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", - "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - } - }, "compressible": { "version": "2.0.17", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", @@ -15344,11 +13196,6 @@ "browserslist": "^4.21.4" } }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, "cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -15358,20 +13205,6 @@ "vary": "^1" } }, - "crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" - }, - "crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "requires": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - } - }, "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -15405,11 +13238,6 @@ "which": "^2.0.1" } }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - }, "d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -15463,39 +13291,6 @@ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, - "defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "requires": { - "clone": "^1.0.2" - } - }, - "del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - } - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -15542,14 +13337,6 @@ "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", "dev": true }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - } - }, "dotenv": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", @@ -15668,15 +13455,11 @@ "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -15723,7 +13506,8 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true }, "esm": { "version": "3.2.25", @@ -15756,6 +13540,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "requires": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -15930,18 +13715,6 @@ "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==", "dev": true }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, "fast-json-parse": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", @@ -15958,19 +13731,6 @@ "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" }, - "fast-write-atomic": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fast-write-atomic/-/fast-write-atomic-0.2.1.tgz", - "integrity": "sha512-WvJe06IfNYlr+6cO3uQkdKdy3Cb1LlCJSF8zRs2eT8yuhdbSlR9nIt+TgQ92RUxiRrQm+/S7RARnMfCs5iuAjw==" - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "requires": { - "reusify": "^1.0.4" - } - }, "fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -16035,20 +13795,11 @@ } } }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -16058,6 +13809,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -16097,11 +13849,6 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, - "fp-ts": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.13.1.tgz", - "integrity": "sha512-0eu5ULPS2c/jsa1lGFneEFFEdTbembJv8e4QKXeVJ3lm/5hyve06dlKZrpxmMwJt6rYen7sxmHHK2CLaXvWuWQ==" - }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -16129,29 +13876,12 @@ } }, "fs-jetpack": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-5.1.0.tgz", - "integrity": "sha512-Xn4fDhLydXkuzepZVsr02jakLlmoARPy+YWIclo4kh0GyNGUHnTqeH/w/qIsVn50dFxtp8otPL2t/HcPJBbxUA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-4.3.1.tgz", + "integrity": "sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ==", "requires": { - "minimatch": "^5.1.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "requires": { - "brace-expansion": "^2.0.1" - } - } + "minimatch": "^3.0.2", + "rimraf": "^2.6.3" } }, "fs.realpath": { @@ -16231,7 +13961,8 @@ "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true }, "getopts": { "version": "2.3.0", @@ -16260,44 +13991,17 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "requires": { "is-glob": "^4.0.1" } }, - "global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "requires": { - "ini": "2.0.0" - }, - "dependencies": { - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" - } - } - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, "google-auth-library": { "version": "8.6.0", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.6.0.tgz", @@ -16426,37 +14130,11 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" - }, - "hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "requires": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } - } - }, "helmet": { "version": "6.1.5", "resolved": "https://registry.npmjs.org/helmet/-/helmet-6.1.5.tgz", "integrity": "sha512-UgAvdoG0BhF9vcCh/j0bWtElo2ZHHk6OzC98NLCM6zK03DEVSM0vUAtT7iR+oTo2Mi6sGelAH3tL6B/uUWxV4g==" }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, "html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -16486,9 +14164,9 @@ } }, "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "requires": { "agent-base": "6", "debug": "4" @@ -16497,7 +14175,8 @@ "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true }, "iconv-lite": { "version": "0.4.24", @@ -16512,37 +14191,6 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" - }, - "ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", - "requires": { - "minimatch": "^5.0.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -16564,11 +14212,6 @@ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -16601,7 +14244,8 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true }, "is-binary-path": { "version": "2.1.0", @@ -16613,9 +14257,9 @@ } }, "is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "requires": { "has": "^1.0.3" } @@ -16628,7 +14272,8 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -16645,30 +14290,16 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, "requires": { "is-extglob": "^2.1.1" } }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", @@ -16679,16 +14310,6 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -16697,11 +14318,6 @@ "is-docker": "^2.0.0" } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -17271,7 +14887,8 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "js-yaml": { "version": "3.14.1", @@ -17300,7 +14917,8 @@ "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", @@ -17366,7 +14984,8 @@ "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true }, "knex": { "version": "2.4.2", @@ -17394,30 +15013,6 @@ "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, - "lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "requires": { - "readable-stream": "^2.0.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -17435,7 +15030,8 @@ "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true }, "localforage": { "version": "1.10.0", @@ -17496,26 +15092,6 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -17527,20 +15103,6 @@ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, "logform": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", @@ -17585,6 +15147,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, "requires": { "semver": "^6.0.0" }, @@ -17592,7 +15155,8 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -17624,12 +15188,8 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "methods": { "version": "1.1.2", @@ -17671,18 +15231,14 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true }, "mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -17766,11 +15322,6 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, - "new-github-issue-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/new-github-issue-url/-/new-github-issue-url-0.2.1.tgz", - "integrity": "sha512-md4cGoxuT4T4d/HDOXbrUHkTKrp/vp+m3aOA7XXVYwNsUNMK49g3SQicTSeV5GIz/5QVGAeYRAOlyp9OvlgsYA==" - }, "newrelic": { "version": "9.15.0", "resolved": "https://registry.npmjs.org/newrelic/-/newrelic-9.15.0.tgz", @@ -17814,6 +15365,34 @@ } } }, + "nexus-plugin-prisma": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/nexus-plugin-prisma/-/nexus-plugin-prisma-0.35.0.tgz", + "integrity": "sha512-zZh96Ol6eqDGGd2caZLayjDW5ruUxNdoglyAMa/bOTBfnxu1Keb9kOyD+n7zVV+Mot8t0GRvWS4XilXoKZF/Tg==", + "requires": { + "camelcase": "^6.2.0", + "endent": "^2.0.1", + "fs-jetpack": "^4.1.0", + "lodash": "^4.17.20", + "pluralize": "^8.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "nock": { "version": "13.3.1", "resolved": "https://registry.npmjs.org/nock/-/nock-13.3.1.tgz", @@ -17860,6 +15439,27 @@ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "requires": { "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } } }, "node-forge": { @@ -17913,80 +15513,17 @@ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.1.tgz", "integrity": "sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA==" }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "npm-bundled": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", - "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", - "requires": { - "npm-normalize-package-bin": "^2.0.0" - } - }, - "npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==" - }, - "npm-packlist": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", - "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", - "requires": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "requires": { "path-key": "^3.0.0" } @@ -18044,6 +15581,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "requires": { "mimic-fn": "^2.1.0" } @@ -18057,42 +15595,11 @@ "is-wsl": "^2.1.1" } }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" }, - "p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", - "requires": { - "p-map": "^2.0.0" - }, - "dependencies": { - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - } - } - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -18105,6 +15612,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "requires": { "p-limit": "^2.2.0" }, @@ -18113,33 +15621,18 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "requires": { "p-try": "^2.0.0" } } } }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "requires": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - } - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, "packet-reader": { "version": "1.0.0", @@ -18150,6 +15643,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -18193,7 +15687,8 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -18215,11 +15710,6 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, "pg": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", @@ -18310,6 +15800,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, "requires": { "find-up": "^4.0.0" } @@ -18387,33 +15878,19 @@ } }, "prisma": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.13.0.tgz", - "integrity": "sha512-L9mqjnSmvWIRCYJ9mQkwCtj4+JDYYTdhoyo8hlsHNDXaZLh/b4hR0IoKIBbTKxZuyHQzLopb/+0Rvb69uGV7uA==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-2.23.0.tgz", + "integrity": "sha512-3c/lmDy8nsPcEsfCufvCTJUEuwmAcTPbeGg9fL1qjlvS314duLUA/k2nm3n1rq4ImKqzeC5uaKfvI2IoAfwrJA==", + "devOptional": true, "requires": { - "@prisma/engines": "4.13.0" + "@prisma/engines": "2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b" } }, - "prisma-graphql-type-decimal": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prisma-graphql-type-decimal/-/prisma-graphql-type-decimal-3.0.0.tgz", - "integrity": "sha512-jrALv8ShVZoBBNyIOBCxwRoLM/DAOSD/OBKTWeJa9UigQXUTZniNXvLd4fLXwm+3v00A7cOZ1fFh3b74Ndgxhw==", - "requires": {} - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, "requires": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -18493,11 +15970,6 @@ "side-channel": "^1.0.4" } }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -18538,41 +16010,6 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } - } - }, "readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -18583,32 +16020,6 @@ "util-deprecate": "^1.0.1" } }, - "readdir-glob": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", - "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", - "requires": { - "minimatch": "^5.1.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, "readdirp": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", @@ -18699,24 +16110,18 @@ } } }, - "replace-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/replace-string/-/replace-string-3.1.0.tgz", - "integrity": "sha512-yPpxc4ZR2makceA9hy/jHNqc7QVkd4Je/N0WRHm6bs3PtivPuPynxE5ejU/mp5EhnCv8+uZL7vhz8rkluSlx+Q==" - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" } }, "resolve-cwd": { @@ -18739,15 +16144,6 @@ "integrity": "sha512-OEJWVeimw8mgQuj3HfkNl4KqRevH7lzeQNaWRPfx0PPse7Jk6ozcsG4FKVgtzDsC1KUF+YlTHh17NcgHOPykLw==", "dev": true }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, "retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -18762,11 +16158,6 @@ "extend": "^3.0.2" } }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -18775,14 +16166,6 @@ "glob": "^7.1.3" } }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, "rxjs": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", @@ -18961,7 +16344,8 @@ "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "simple-concat": { "version": "1.0.1", @@ -18996,22 +16380,14 @@ "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true }, "source-map": { "version": "0.6.1", @@ -19034,34 +16410,6 @@ "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==" }, - "spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==" - }, "split2": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", @@ -19168,15 +16516,8 @@ "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "requires": { - "min-indent": "^1.0.0" - } + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true }, "strip-json-comments": { "version": "2.0.1", @@ -19196,30 +16537,6 @@ "has-flag": "^4.0.0" } }, - "supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, "tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -19260,63 +16577,6 @@ "uuid": "^9.0.0" } }, - "temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" - }, - "temp-write": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-4.0.0.tgz", - "integrity": "sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==", - "requires": { - "graceful-fs": "^4.1.15", - "is-stream": "^2.0.0", - "make-dir": "^3.0.0", - "temp-dir": "^1.0.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } - } - }, - "tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", - "requires": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "dependencies": { - "type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" - } - } - }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -19397,11 +16657,6 @@ "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=" }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -19492,11 +16747,6 @@ "tsconfig": "^7.0.0" } }, - "ts-pattern": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.3.0.tgz", - "integrity": "sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==" - }, "tsconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", @@ -19544,7 +16794,8 @@ "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true }, "type-is": { "version": "1.6.18", @@ -19574,29 +16825,6 @@ "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "dev": true }, - "undici": { - "version": "5.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.21.0.tgz", - "integrity": "sha512-HOjK8l6a57b2ZGXOcUsI5NLfoTrfmbOl90ixJDl0AEFG4wgHNDQxtZy15/ZQp7HhjkpaGlp/eneMgtsu1dIlUA==", - "requires": { - "busboy": "^1.6.0" - }, - "dependencies": { - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "requires": { - "streamsearch": "^1.1.0" - } - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" - } - } - }, "unfetch": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-5.0.0.tgz", @@ -19630,14 +16858,6 @@ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "requires": { - "crypto-random-string": "^2.0.0" - } - }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -19698,15 +16918,6 @@ "convert-source-map": "^1.6.0" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -19721,19 +16932,6 @@ "makeerror": "1.0.12" } }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, "websocket": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", @@ -19767,15 +16965,6 @@ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -19931,16 +17120,6 @@ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" } } - }, - "zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", - "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" - } } } } diff --git a/backend/package.json b/backend/package.json index 80049c88f..84e4d03a6 100644 --- a/backend/package.json +++ b/backend/package.json @@ -63,8 +63,7 @@ "@devoxa/prisma-relay-cursor-connection": "^2.2.2", "@google-cloud/storage": "^6.10.0", "@graphql-tools/schema": "^9.0.19", - "@morgothulhu/nexus-plugin-prisma": "^0.43.13", - "@prisma/client": "^4.13.0", + "@prisma/client": "2.23.0", "@sentry/integrations": "^6.19.7", "@sentry/node": "^6.19.7", "axios": "^1.4.0", @@ -89,13 +88,13 @@ "morgan": "^1.10.0", "newrelic": "^9.15.0", "nexus": "^1.3.0", + "nexus-plugin-prisma": "^0.35.0", "node-rdkafka": "^2.16.0", "nodemailer": "^6.9.1", "patch-package": "^7.0.0", "pg": "^8.10.0", "pg-query-stream": "^4.4.0", - "prisma": "^4.13.0", - "prisma-graphql-type-decimal": "^3.0.0", + "prisma": "^2.23.0", "redis": "^4.6.6", "sharp": "^0.32.1", "shortid": "^2.2.16", @@ -143,6 +142,7 @@ "nanoid": "^3.3.2", "nock": "^13.3.1", "prettier": "^2.8.8", + "prisma": "2.23.0", "ts-jest": "^29.1.0", "ts-node": "^10.9.1", "ts-node-dev": "^2.0.0", diff --git a/backend/patches/@prisma+client+2.23.0.patch b/backend/patches/@prisma+client+2.23.0.patch new file mode 100644 index 000000000..6d350c098 --- /dev/null +++ b/backend/patches/@prisma+client+2.23.0.patch @@ -0,0 +1,40 @@ +diff --git a/node_modules/@prisma/client/generator-build/index.js b/node_modules/@prisma/client/generator-build/index.js +index 1a3c8a3..c11d757 100644 +--- a/node_modules/@prisma/client/generator-build/index.js ++++ b/node_modules/@prisma/client/generator-build/index.js +@@ -13779,6 +13779,7 @@ var require_getPlatform2 = __commonJS2((exports2) => { + } + exports2.parseOpenSSLVersion = parseOpenSSLVersion; + async function getOpenSSLVersion() { ++ return '1.1.x'; // hack to force version + const [version, ls] = await Promise.all([ + gracefulExec(`openssl version -v`), + gracefulExec(` +@@ -15307,6 +15308,7 @@ var require_dist10 = __commonJS2((exports, module) => { + } + exports2.parseOpenSSLVersion = parseOpenSSLVersion; + async function getOpenSSLVersion() { ++ return '1.1.x'; // hack to force version + const [version, ls] = await Promise.all([ + gracefulExec(`openssl version -v`), + gracefulExec(` +diff --git a/node_modules/@prisma/client/runtime/index.js b/node_modules/@prisma/client/runtime/index.js +index 77ca68b..4d509b8 100644 +--- a/node_modules/@prisma/client/runtime/index.js ++++ b/node_modules/@prisma/client/runtime/index.js +@@ -4835,6 +4835,7 @@ var require_dist9 = __commonJS2((exports, module) => { + } + exports2.parseOpenSSLVersion = parseOpenSSLVersion; + async function getOpenSSLVersion() { ++ return '1.1.x'; // hack to force version + const [version, ls] = await Promise.all([ + gracefulExec(`openssl version -v`), + gracefulExec(` +@@ -22556,6 +22557,7 @@ var require_getPlatform2 = __commonJS2((exports2) => { + } + exports2.parseOpenSSLVersion = parseOpenSSLVersion; + async function getOpenSSLVersion() { ++ return '1.1.x'; // hack to force version + const [version, ls] = await Promise.all([ + gracefulExec(`openssl version -v`), + gracefulExec(` diff --git a/backend/patches/@prisma+engines+2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b.patch b/backend/patches/@prisma+engines+2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b.patch new file mode 100644 index 000000000..d38bc0864 --- /dev/null +++ b/backend/patches/@prisma+engines+2.23.0-36.adf5e8cba3daf12d456d911d72b6e9418681b28b.patch @@ -0,0 +1,12 @@ +diff --git a/node_modules/@prisma/engines/dist/index.js b/node_modules/@prisma/engines/dist/index.js +index f16f38a..a8fa590 100644 +--- a/node_modules/@prisma/engines/dist/index.js ++++ b/node_modules/@prisma/engines/dist/index.js +@@ -777,6 +777,7 @@ var require_getPlatform = __commonJS((exports2) => { + } + exports2.parseOpenSSLVersion = parseOpenSSLVersion; + async function getOpenSSLVersion() { ++ return '1.1.x'; // hack to force version + const [version, ls] = await Promise.all([ + gracefulExec(`openssl version -v`), + gracefulExec(` diff --git a/backend/patches/prisma+2.23.0.patch b/backend/patches/prisma+2.23.0.patch new file mode 100644 index 000000000..cb4e90bc2 --- /dev/null +++ b/backend/patches/prisma+2.23.0.patch @@ -0,0 +1,60 @@ +diff --git a/node_modules/prisma/build/index.js b/node_modules/prisma/build/index.js +index f2a76f2..95a9ccb 100755 +--- a/node_modules/prisma/build/index.js ++++ b/node_modules/prisma/build/index.js +@@ -13780,6 +13780,7 @@ var require_getPlatform = __commonJS((exports2) => { + } + exports2.parseOpenSSLVersion = parseOpenSSLVersion; + async function getOpenSSLVersion() { ++ return '1.1.x'; // hack to force version + const [version, ls] = await Promise.all([ + gracefulExec(`openssl version -v`), + gracefulExec(` +@@ -99635,6 +99636,7 @@ var require_getPlatform2 = __commonJS((exports2) => { + } + exports2.parseOpenSSLVersion = parseOpenSSLVersion; + async function getOpenSSLVersion() { ++ return '1.1.x'; // hack to force version + const [version, ls] = await Promise.all([ + gracefulExec(`openssl version -v`), + gracefulExec(` +diff --git a/node_modules/prisma/prisma-client/generator-build/index.js b/node_modules/prisma/prisma-client/generator-build/index.js +index 1a3c8a3..c11d757 100644 +--- a/node_modules/prisma/prisma-client/generator-build/index.js ++++ b/node_modules/prisma/prisma-client/generator-build/index.js +@@ -13779,6 +13779,7 @@ var require_getPlatform2 = __commonJS2((exports2) => { + } + exports2.parseOpenSSLVersion = parseOpenSSLVersion; + async function getOpenSSLVersion() { ++ return '1.1.x'; // hack to force version + const [version, ls] = await Promise.all([ + gracefulExec(`openssl version -v`), + gracefulExec(` +@@ -15307,6 +15308,7 @@ var require_dist10 = __commonJS2((exports, module) => { + } + exports2.parseOpenSSLVersion = parseOpenSSLVersion; + async function getOpenSSLVersion() { ++ return '1.1.x'; // hack to force version + const [version, ls] = await Promise.all([ + gracefulExec(`openssl version -v`), + gracefulExec(` +diff --git a/node_modules/prisma/prisma-client/runtime/index.js b/node_modules/prisma/prisma-client/runtime/index.js +index 77ca68b..4d509b8 100644 +--- a/node_modules/prisma/prisma-client/runtime/index.js ++++ b/node_modules/prisma/prisma-client/runtime/index.js +@@ -4835,6 +4835,7 @@ var require_dist9 = __commonJS2((exports, module) => { + } + exports2.parseOpenSSLVersion = parseOpenSSLVersion; + async function getOpenSSLVersion() { ++ return '1.1.x'; // hack to force version + const [version, ls] = await Promise.all([ + gracefulExec(`openssl version -v`), + gracefulExec(` +@@ -22556,6 +22557,7 @@ var require_getPlatform2 = __commonJS2((exports2) => { + } + exports2.parseOpenSSLVersion = parseOpenSSLVersion; + async function getOpenSSLVersion() { ++ return '1.1.x'; // hack to force version + const [version, ls] = await Promise.all([ + gracefulExec(`openssl version -v`), + gracefulExec(` diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma index fabb275ab..a63363dca 100644 --- a/backend/prisma/schema.prisma +++ b/backend/prisma/schema.prisma @@ -1,5 +1,6 @@ generator client { provider = "prisma-client-js" + previewFeatures = ["orderByRelation", "selectRelationCount", "orderByAggregateGroup", "filterJson"] } datasource db { @@ -8,639 +9,591 @@ datasource db { } model AbEnrollment { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - user_id String? @db.Uuid - ab_study_id String @db.Uuid - group Int? - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction) - ab_study AbStudy @relation(fields: [ab_study_id], references: [id], onDelete: Cascade, onUpdate: NoAction) + id String @id @default(uuid()) + user_id String? + ab_study_id String + group Int? + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt + user User? @relation(fields: [user_id], references: [id]) + ab_study AbStudy @relation(fields: [ab_study_id], references: [id]) @@unique([user_id, ab_study_id]) - @@index([ab_study_id]) @@map("ab_enrollment") } model AbStudy { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - group_count Int - name String? @unique - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - ab_enrollments AbEnrollment[] + id String @id @default(uuid()) + group_count Int + name String + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt + ab_enrollments AbEnrollment[] @@map("ab_study") } model Completion { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - course_id String? @db.Uuid - user_id String? @db.Uuid - certificate_id String? - completion_date DateTime? @default(now()) @db.Timestamptz(6) - completion_language String? - completion_registration_attempt_date DateTime? - eligible_for_ects Boolean? @default(true) - email String - grade String? - student_number String? - tier Int? - user_upstream_id Int? - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course? @relation(fields: [course_id], references: [id], onUpdate: NoAction) - user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction) - completions_registered CompletionRegistered[] - - @@index([completion_language]) - @@index([course_id, user_id, created_at]) - @@index([user_id, course_id, created_at]) + certificate_id String? + completion_language String? + course_id String? + created_at DateTime? @default(now()) + eligible_for_ects Boolean? @default(true) + email String + grade String? + id String @id @default(uuid()) + student_number String? + updated_at DateTime? @updatedAt + user_id String? + user_upstream_id Int? + course Course? @relation(fields: [course_id], references: [id]) + user User? @relation(fields: [user_id], references: [id]) + completions_registered CompletionRegistered[] + completion_date DateTime? + tier Int? + completion_registration_attempt_date DateTime? + @@map("completion") } model CompletionRegistered { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - real_student_number String - registration_date DateTime? - user_id String? @db.Uuid - completion_id String? @db.Uuid - course_id String? @db.Uuid - organization_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - completion Completion? @relation(fields: [completion_id], references: [id], onUpdate: NoAction) - course Course? @relation(fields: [course_id], references: [id], onUpdate: NoAction) - organization Organization? @relation(fields: [organization_id], references: [id], onUpdate: NoAction) - user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction) - - @@index([completion_id]) - @@index([course_id]) - @@index([organization_id]) - @@index([user_id, course_id]) + completion_id String? + course_id String? + created_at DateTime? @default(now()) + id String @id @default(uuid()) + organization_id String? + real_student_number String + updated_at DateTime? @updatedAt + user_id String? + completion Completion? @relation(fields: [completion_id], references: [id]) + course Course? @relation(fields: [course_id], references: [id]) + organization Organization? @relation(fields: [organization_id], references: [id]) + user User? @relation(fields: [user_id], references: [id]) + registration_date DateTime? + @@map("completion_registered") } model Course { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - name String - slug String @unique - teacher_in_charge_name String - teacher_in_charge_email String - support_email String? - start_date String - end_date String? - ects String? - promote Boolean? - status CourseStatus? @default(Upcoming) - start_point Boolean? - hidden Boolean? - study_module_start_point Boolean? - order Int? - study_module_order Int? - automatic_completions Boolean? @default(false) - automatic_completions_eligible_for_ects Boolean? @default(true) - points_needed Int? - exercise_completions_needed Int? - has_certificate Boolean? @default(false) - upcoming_active_link Boolean? @default(false) - tier Int? - language String? - owner_organization_id String? @db.Uuid - completion_email_id String? @db.Uuid - inherit_settings_from_id String? @db.Uuid - completions_handled_by_id String? @db.Uuid - course_stats_email_id String? @db.Uuid - photo_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - completions Completion[] - completions_registered CompletionRegistered[] - completion_email EmailTemplate? @relation("EmailTemplate_Course_completion_email", fields: [completion_email_id], references: [id], onUpdate: NoAction) - triggered_automatically_email EmailTemplate[] @relation("EmailTemplate_Course_triggered_automatically_by") - course_stats_email EmailTemplate? @relation("EmailTemplate_Course_stats_email", fields: [course_stats_email_id], references: [id], onUpdate: NoAction) - completions_handled_by Course? @relation("Course_completions_handled_by", fields: [completions_handled_by_id], references: [id], onUpdate: NoAction) - handles_completions_for Course[] @relation("Course_completions_handled_by") - inherit_settings_from Course? @relation("Course_inherit_settings_from", fields: [inherit_settings_from_id], references: [id], onUpdate: NoAction) - handles_settings_for Course[] @relation("Course_inherit_settings_from") - owner_organization Organization? @relation(fields: [owner_organization_id], references: [id], onUpdate: NoAction) - photo Image? @relation(fields: [photo_id], references: [id], onUpdate: NoAction) - course_aliases CourseAlias[] - course_organizations CourseOrganization[] - ownerships CourseOwnership[] - course_translations CourseTranslation[] - course_variants CourseVariant[] - exercises Exercise[] - open_university_registration_links OpenUniversityRegistrationLink[] - stored_data StoredData[] - user_course_progresses UserCourseProgress[] - user_course_service_progresses UserCourseServiceProgress[] - user_course_settings UserCourseSetting[] - user_course_settings_visibilities UserCourseSettingsVisibility[] - tags Tag[] @relation("CourseToTag") - services Service[] @relation("course_to_service") - study_modules StudyModule[] @relation("study_module_to_course") - - @@index([completion_email_id]) - @@index([completions_handled_by_id]) - @@index([status]) + automatic_completions Boolean? @default(false) + automatic_completions_eligible_for_ects Boolean? @default(true) + completion_email_id String? + completions_handled_by_id String? + created_at DateTime? @default(now()) + ects String? + end_date String? + exercise_completions_needed Int? + has_certificate Boolean? @default(false) + hidden Boolean? + id String @id @default(uuid()) + inherit_settings_from_id String? + name String + order Int? + owner_organization_id String? + photo_id String? + points_needed Int? + promote Boolean? + slug String @unique + start_date String + start_point Boolean? + status CourseStatus? @default(Upcoming) + study_module_order Int? + study_module_start_point Boolean? + support_email String? + teacher_in_charge_email String + teacher_in_charge_name String + language String? + updated_at DateTime? @updatedAt + completion_email EmailTemplate? @relation("courseTocourse_completion_email", fields: [completion_email_id], references: [id]) + completions_handled_by Course? @relation("courseTocourse_completions_handled_by", fields: [completions_handled_by_id], references: [id]) + inherit_settings_from Course? @relation("courseTocourse_inherit_settings_from", fields: [inherit_settings_from_id], references: [id]) + owner_organization Organization? @relation(fields: [owner_organization_id], references: [id]) + photo Image? @relation(fields: [photo_id], references: [id]) + completions Completion[] + completions_registered CompletionRegistered[] + handles_completions_for Course[] @relation("courseTocourse_completions_handled_by") + other_course_courseTocourse_inherit_settings_from Course[] @relation("courseTocourse_inherit_settings_from") + triggered_automatically_email EmailTemplate[] @relation("emailTemplateToCourse_triggered") + course_aliases CourseAlias[] + course_organizations CourseOrganization[] + course_translations CourseTranslation[] + course_variants CourseVariant[] + exercises Exercise[] + open_university_registration_links OpenUniversityRegistrationLink[] + user_course_progresses UserCourseProgress[] + user_course_service_progresses UserCourseServiceProgress[] + user_course_settings UserCourseSetting[] + user_course_settings_visibilities UserCourseSettingsVisibility[] + services Service[] @relation("course_to_service") + study_modules StudyModule[] @relation("study_module_to_course") + upcoming_active_link Boolean? + tier Int? + stored_data StoredData[] + ownerships CourseOwnership[] + course_stats_email_id String? + course_stats_email EmailTemplate? @relation("courseTocourse_course_stats_email", fields: [course_stats_email_id], references: [id]) + tags Tag[] + @@map("course") } model CourseAlias { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - course_code String @unique - course_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course? @relation(fields: [course_id], references: [id], onUpdate: NoAction) - - @@index([course_id]) + course_id String? + course_code String @unique + created_at DateTime? @default(now()) + id String @id @default(uuid()) + updated_at DateTime? @updatedAt + course Course? @relation(fields: [course_id], references: [id]) + @@map("course_alias") } model CourseOrganization { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - creator Boolean? - course_id String? @db.Uuid - organization_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course? @relation(fields: [course_id], references: [id], onUpdate: NoAction) - organization Organization? @relation(fields: [organization_id], references: [id], onUpdate: NoAction) + course_id String? + created_at DateTime? @default(now()) + creator Boolean? + id String @id @default(uuid()) + organization_id String? + updated_at DateTime? @updatedAt + course Course? @relation(fields: [course_id], references: [id]) + organization Organization? @relation(fields: [organization_id], references: [id]) @@map("course_organization") } model CourseTranslation { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - name String - language String - description String - link String? - instructions String? - course_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course? @relation(fields: [course_id], references: [id], onUpdate: NoAction) - - @@index([course_id, language]) - @@index([name]) + course_id String? + created_at DateTime? @default(now()) + description String + instructions String? + id String @id @default(uuid()) + language String + link String? + name String + updated_at DateTime? @updatedAt + course Course? @relation(fields: [course_id], references: [id]) + @@map("course_translation") } model CourseVariant { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - slug String - description String? - instructions String? - course_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course? @relation(fields: [course_id], references: [id], onUpdate: NoAction) - - @@index([course_id]) - @@index([slug]) + course_id String? + created_at DateTime? @default(now()) + description String? + instructions String? + id String @id @default(uuid()) + slug String + updated_at DateTime? @updatedAt + course Course? @relation(fields: [course_id], references: [id]) + @@map("course_variant") } model EmailDelivery { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - sent Boolean @default(false) - error Boolean @default(false) - error_message String? - user_id String? @db.Uuid - email_template_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - email_template EmailTemplate? @relation(fields: [email_template_id], references: [id], onUpdate: NoAction) - user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction) - - @@index([email_template_id]) - @@index([user_id, email_template_id]) + created_at DateTime? @default(now()) + email_template_id String? + error Boolean @default(false) + error_message String? + id String @id @default(uuid()) + sent Boolean @default(false) + updated_at DateTime? @updatedAt + user_id String? + email_template EmailTemplate? @relation(fields: [email_template_id], references: [id]) + user User? @relation(fields: [user_id], references: [id]) + @@map("email_delivery") } model EmailTemplate { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - name String? - txt_body String? - html_body String? - title String? - points_threshold Int? - exercise_completions_threshold Int? - template_type String? - course_instance_language String? - triggered_automatically_by_course_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - courses Course[] @relation("EmailTemplate_Course_completion_email") - stats_courses Course[] @relation("EmailTemplate_Course_stats_email") - course_stats_subscriptions CourseStatsSubscription[] - email_deliveries EmailDelivery[] - triggered_automatically_by_course Course? @relation("EmailTemplate_Course_triggered_automatically_by", fields: [triggered_automatically_by_course_id], references: [id], onUpdate: NoAction) - - @@index([triggered_automatically_by_course_id, template_type]) + created_at DateTime? @default(now()) + html_body String? + id String @id @default(uuid()) + name String? + title String? + txt_body String? + template_type String? + exercise_completions_threshold Int? + points_threshold Int? + updated_at DateTime? @updatedAt + course_instance_language String? + triggered_automatically_by_course_id String? + triggered_automatically_by_course Course? @relation("emailTemplateToCourse_triggered", fields: [triggered_automatically_by_course_id], references: [id]) + courses Course[] @relation("courseTocourse_completion_email") + stats_courses Course[] @relation("courseTocourse_course_stats_email") + email_deliveries EmailDelivery[] + course_stats_subscriptions CourseStatsSubscription[] + @@map("email_template") } model Exercise { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - custom_id String - name String? - part Int? - section Int? - max_points Int? - timestamp DateTime? - deleted Boolean? @default(false) - service_id String? @db.Uuid - course_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course? @relation(fields: [course_id], references: [id], onUpdate: NoAction) - service Service? @relation(fields: [service_id], references: [id], onUpdate: NoAction) - exercise_completions ExerciseCompletion[] - - @@index([course_id, service_id, custom_id]) - @@index([custom_id]) - @@index([service_id]) + course_id String? + created_at DateTime? @default(now()) + custom_id String + deleted Boolean? @default(false) + id String @id @default(uuid()) + max_points Int? + name String? + part Int? + section Int? + service_id String? + timestamp DateTime? + updated_at DateTime? @updatedAt + course Course? @relation(fields: [course_id], references: [id]) + service Service? @relation(fields: [service_id], references: [id]) + exercise_completions ExerciseCompletion[] + @@map("exercise") } model ExerciseCompletion { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - n_points Float? - timestamp DateTime - completed Boolean? @default(false) - attempted Boolean? - original_submission_date DateTime? - user_id String? @db.Uuid - exercise_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - exercise Exercise? @relation(fields: [exercise_id], references: [id], onUpdate: NoAction) - user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction) - exercise_completion_required_actions ExerciseCompletionRequiredAction[] - - @@index([user_id, exercise_id, timestamp(sort: Desc), updated_at(sort: Desc)]) + completed Boolean? @default(false) + created_at DateTime? @default(now()) + exercise_id String? + id String @id @default(uuid()) + n_points Float? + timestamp DateTime + updated_at DateTime? @updatedAt + user_id String? + exercise Exercise? @relation(fields: [exercise_id], references: [id]) + user User? @relation(fields: [user_id], references: [id]) + exercise_completion_required_actions ExerciseCompletionRequiredAction[] + attempted Boolean? + original_submission_date DateTime? + @@map("exercise_completion") } model ExerciseCompletionRequiredAction { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - value String - exercise_completion_id String? @db.Uuid - exercise_completion ExerciseCompletion? @relation(fields: [exercise_completion_id], references: [id], onUpdate: NoAction) + exercise_completion_id String? + id String @id @default(uuid()) + value String + exercise_completion ExerciseCompletion? @relation(fields: [exercise_completion_id], references: [id]) @@map("exercise_completion_required_actions") } model Image { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid + compressed String? + compressed_mimetype String? + created_at DateTime? @default(now()) + default Boolean? + encoding String? + id String @id @default(uuid()) name String? original String original_mimetype String uncompressed String uncompressed_mimetype String - compressed String? - compressed_mimetype String? - encoding String? - default Boolean? - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt + updated_at DateTime? @updatedAt courses Course[] @@map("image") } model OpenUniversityRegistrationLink { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - course_code String - language String - link String? - start_date DateTime? - stop_date DateTime? - course_id String? @db.Uuid - tiers Json? @db.Json - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course? @relation(fields: [course_id], references: [id], onUpdate: NoAction) - - @@index([course_id]) + course_id String? + course_code String + created_at DateTime? @default(now()) + id String @id @default(uuid()) + language String + link String? + start_date DateTime? + stop_date DateTime? + updated_at DateTime? @updatedAt + course Course? @relation(fields: [course_id], references: [id]) + tiers Json? + @@map("open_university_registration_link") } model Organization { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - slug String @unique - secret_key String @unique - verified_at DateTime? - verified Boolean? + contact_information String? + created_at DateTime? @default(now()) + creator_id String? disabled Boolean? + email String? hidden Boolean? - tmc_created_at DateTime? - tmc_updated_at DateTime? - logo_file_name String? + id String @id @default(uuid()) logo_content_type String? + logo_file_name String? logo_file_size Int? logo_updated_at DateTime? phone String? - contact_information String? - email String? - website String? pinned Boolean? - creator_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt + secret_key String @unique + slug String @unique + tmc_created_at DateTime? + tmc_updated_at DateTime? + updated_at DateTime? @updatedAt + verified Boolean? + verified_at DateTime? + website String? + creator User? @relation(fields: [creator_id], references: [id]) completions_registered CompletionRegistered[] courses Course[] course_organizations CourseOrganization[] - creator User? @relation(fields: [creator_id], references: [id], onUpdate: NoAction) organization_translations OrganizationTranslation[] user_organizations UserOrganization[] verified_users VerifiedUser[] - @@index([creator_id]) @@map("organization") } model OrganizationTranslation { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - language String - name String - disabled_reason String? - information String? - organization_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - organization Organization? @relation(fields: [organization_id], references: [id], onUpdate: NoAction) - - @@index([organization_id]) + created_at DateTime? @default(now()) + disabled_reason String? + id String @id @default(uuid()) + information String? + language String + name String + organization_id String? + updated_at DateTime? @updatedAt + organization Organization? @relation(fields: [organization_id], references: [id]) + @@map("organization_translation") } model Service { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - url String + created_at DateTime? @default(now()) + id String @id @default(uuid()) name String - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt + updated_at DateTime? @updatedAt + url String exercises Exercise[] user_course_service_progresses UserCourseServiceProgress[] - courses Course[] @relation("course_to_service") + courses Course[] @relation("course_to_service") @@map("service") } model StoredData { - data String? - course_id String @db.Uuid - user_id String @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course @relation(fields: [course_id], references: [id], onDelete: Cascade, onUpdate: NoAction) - user User @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: NoAction) - - @@id([course_id, user_id]) - @@unique([course_id, user_id]) - @@index([user_id]) + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt + data String + course_id String + user_id String + course Course? @relation(fields: [course_id], references: [id]) + user User? @relation(fields: [user_id], references: [id]) + + @@id([user_id, course_id]) @@map("stored_data") } model StudyModule { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - slug String @unique - name String + created_at DateTime? @default(now()) + id String @id @default(uuid()) image String? + name String order Int? - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt + slug String @unique + updated_at DateTime? @updatedAt study_module_translations StudyModuleTranslation[] - courses Course[] @relation("study_module_to_course") + courses Course[] @relation("study_module_to_course") @@map("study_module") } model StudyModuleTranslation { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - name String - language String - description String - study_module_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - study_module StudyModule? @relation(fields: [study_module_id], references: [id], onUpdate: NoAction) - - @@index([study_module_id, language]) + created_at DateTime? @default(now()) + description String + id String @id @default(uuid()) + language String + name String + study_module_id String? + updated_at DateTime? @updatedAt + study_module StudyModule? @relation(fields: [study_module_id], references: [id]) + @@map("study_module_translation") } model User { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - upstream_id Int @unique - username String @unique + administrator Boolean + created_at DateTime? @default(now()) + email String first_name String? + id String @id @default(uuid()) last_name String? - email String - administrator Boolean - student_number String? real_student_number String? research_consent Boolean? - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - ab_enrollments AbEnrollment[] + student_number String? + updated_at DateTime? @updatedAt + upstream_id Int @unique + username String @unique completions Completion[] completions_registered CompletionRegistered[] - course_ownerships CourseOwnership[] - course_stats_subscriptions CourseStatsSubscription[] email_deliveries EmailDelivery[] exercise_completions ExerciseCompletion[] organizations Organization[] - stored_data StoredData[] user_course_progresses UserCourseProgress[] user_course_service_progresses UserCourseServiceProgress[] user_course_settings UserCourseSetting[] user_organizations UserOrganization[] verified_users VerifiedUser[] + ab_enrollments AbEnrollment[] + stored_data StoredData[] + course_ownerships CourseOwnership[] + course_stats_subscriptions CourseStatsSubscription[] - @@index([email(ops: raw("gin_trgm_ops"))], type: Gin) - @@index([first_name(ops: raw("gin_trgm_ops")), last_name(ops: raw("gin_trgm_ops"))], type: Gin) - @@index([last_name(ops: raw("gin_trgm_ops"))], type: Gin) @@map("user") } model UserAppDatumConfig { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid + created_at DateTime? @default(now()) + id String @default(uuid()) @id name String? @unique timestamp DateTime? - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt + updated_at DateTime? @updatedAt @@map("user_app_datum_config") } model UserCourseProgress { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - progress Json @db.Json - extra Json? @db.Json - max_points Float? - n_points Float? - user_id String? @db.Uuid - course_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course? @relation(fields: [course_id], references: [id], onUpdate: NoAction) - user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction) - user_course_service_progresses UserCourseServiceProgress[] + course_id String? + created_at DateTime? @default(now()) + id String @id @default(uuid()) + max_points Float? + n_points Float? + progress Json + extra Json? + updated_at DateTime? @updatedAt + user_id String? + course Course? @relation(fields: [course_id], references: [id]) + user User? @relation(fields: [user_id], references: [id]) + user_course_service_progresses UserCourseServiceProgress[] - @@index([course_id, user_id]) - @@index([user_id]) @@map("user_course_progress") } model UserCourseServiceProgress { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - progress Json @db.Json - timestamp DateTime? - service_id String? @db.Uuid - user_id String? @db.Uuid - course_id String? @db.Uuid - user_course_progress_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course? @relation(fields: [course_id], references: [id], onUpdate: NoAction) - service Service? @relation(fields: [service_id], references: [id], onUpdate: NoAction) - user_course_progress UserCourseProgress? @relation(fields: [user_course_progress_id], references: [id], onUpdate: NoAction) - user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction) - - @@index([course_id]) - @@index([service_id, course_id, user_id]) - @@index([user_id]) - @@map("user_course_service_progress") + course_id String? + created_at DateTime? @default(now()) + id String @id @default(uuid()) + progress Json + service_id String? + timestamp DateTime? + updated_at DateTime? @updatedAt + user_id String? + user_course_progress_id String? + course Course? @relation(fields: [course_id], references: [id]) + service Service? @relation(fields: [service_id], references: [id]) + user User? @relation(fields: [user_id], references: [id]) + user_course_progress UserCourseProgress? @relation(fields: [user_course_progress_id], references: [id]) + + @@map("user_course_service_progress") } model UserCourseSetting { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - language String? - country String? - research Boolean? - marketing Boolean? - course_variant String? - other Json? @db.Json - user_id String? @db.Uuid - course_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course? @relation(fields: [course_id], references: [id], onUpdate: NoAction) - user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction) - - @@index([country]) - @@index([course_id, user_id, created_at]) - @@index([language]) - @@index([user_id]) + country String? + course_id String? + course_variant String? + created_at DateTime? @default(now()) + id String @default(uuid()) @id + language String? + marketing Boolean? + other Json? + research Boolean? + updated_at DateTime? @updatedAt + user_id String? + course Course? @relation(fields: [course_id], references: [id]) + user User? @relation(fields: [user_id], references: [id]) + @@map("user_course_setting") } model UserCourseSettingsVisibility { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - language String - course_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course? @relation(fields: [course_id], references: [id], onUpdate: NoAction) + course_id String? + created_at DateTime? @default(now()) + id String @id @default(uuid()) + language String + updated_at DateTime? @updatedAt + course Course? @relation(fields: [course_id], references: [id]) @@map("user_course_settings_visibility") } model UserOrganization { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - role OrganizationRole? @default(Student) - organization_id String? @db.Uuid - user_id String? @db.Uuid - consented Boolean? @default(false) - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - organization Organization? @relation(fields: [organization_id], references: [id], onUpdate: NoAction) - user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction) + created_at DateTime? @default(now()) + id String @id @default(uuid()) + organization_id String? + role OrganizationRole? @default(Student) + updated_at DateTime? @updatedAt + user_id String? + organization Organization? @relation(fields: [organization_id], references: [id]) + user User? @relation(fields: [user_id], references: [id]) @@map("user_organization") } model VerifiedUser { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - display_name String? - personal_unique_code String - home_organization String? - person_affiliation String? - person_affiliation_updated_at DateTime? - mail String? - organizational_unit String? - user_id String? @db.Uuid - organization_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction) - organization Organization? @relation(fields: [organization_id], references: [id], onUpdate: NoAction) - - @@unique([user_id, personal_unique_code, home_organization]) + created_at DateTime? @default(now()) + display_name String? + id String @id @default(uuid()) + organization_id String? + personal_unique_code String + updated_at DateTime? @updatedAt + user_id String? + organization Organization? @relation(fields: [organization_id], references: [id]) + user User? @relation(fields: [user_id], references: [id]) + @@map("verified_user") } model CourseOwnership { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - course_id String? @db.Uuid - user_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - course Course? @relation(fields: [course_id], references: [id], onDelete: Cascade, onUpdate: NoAction) - user User? @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: NoAction) + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt + id String @id @default(uuid()) + user_id String? + course_id String? + course Course? @relation(fields: [course_id], references: [id]) + user User? @relation(fields: [user_id], references: [id]) @@unique([user_id, course_id]) @@map("course_ownership") } model CourseStatsSubscription { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid - email_template_id String? @db.Uuid - user_id String? @db.Uuid - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - email_template EmailTemplate? @relation(fields: [email_template_id], references: [id], onDelete: Cascade, onUpdate: NoAction) - user User? @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: NoAction) + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt + id String @id @default(uuid()) + user_id String? + email_template_id String? + user User? @relation(fields: [user_id], references: [id]) + email_template EmailTemplate? @relation(fields: [email_template_id], references: [id]) @@unique([user_id, email_template_id]) @@map("course_stats_subscription") } model Tag { - id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) - hidden Boolean @default(false) - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - courses Course[] @relation("CourseToTag") - tag_types TagType[] @relation("TagToTagType") - tag_translations TagTranslation[] + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt + id String @id + hidden Boolean? @default(false) + tag_types TagType[] + tag_translations TagTranslation[] + courses Course[] @@map("tag") } model TagType { - name String @id - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - tags Tag[] @relation("TagToTagType") + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt + name String @id + tags Tag[] @@map("tag_type") } model TagTranslation { - language String - name String - description String? - tag_id String - created_at DateTime @default(now()) - updated_at DateTime @default(now()) @updatedAt - tag Tag @relation(fields: [tag_id], references: [id], onDelete: Cascade, onUpdate: NoAction) + created_at DateTime? @default(now()) + updated_at DateTime? @updatedAt + tag_id String + language String + name String + description String? + tag Tag @relation(fields: [tag_id], references: [id]) @@id([tag_id, language]) @@unique([name, language]) @@ -656,9 +609,9 @@ enum CourseStatus { } enum OrganizationRole { - Teacher - Student OrganizationAdmin + Student + Teacher @@map("organization_role") -} +} \ No newline at end of file diff --git a/backend/schema.ts b/backend/schema.ts index 4fc83522e..d5d736853 100644 --- a/backend/schema.ts +++ b/backend/schema.ts @@ -1,22 +1,10 @@ import * as path from "path" import { join } from "path" -import { - DateTimeResolver, - JSONObjectResolver, - JSONResolver, -} from "graphql-scalars" +import { DateTimeResolver, JSONObjectResolver } from "graphql-scalars" import { GraphQLScalarType } from "graphql/type" -import { - asNexusMethod, - connectionPlugin, - decorateType, - fieldAuthorizePlugin, - makeSchema, -} from "nexus" -import { GraphQLDecimal } from "prisma-graphql-type-decimal" - -import { nexusPrisma } from "@morgothulhu/nexus-plugin-prisma" +import { connectionPlugin, fieldAuthorizePlugin, makeSchema } from "nexus" +import { nexusPrisma } from "nexus-plugin-prisma" import { isProduction, NEW_RELIC_LICENSE_KEY, NEXUS_REFLECTION } from "./config" import * as types from "./graphql" @@ -30,14 +18,6 @@ if (NEXUS_REFLECTION) { require("sharp") // image library sharp seems to crash without this require } -const DateTime = asNexusMethod(DateTimeResolver, "datetime") -const Decimal = asNexusMethod(GraphQLDecimal, "decimal") -const JSONObject = asNexusMethod(JSONObjectResolver, "json") -const Json = decorateType(JSONResolver, { - sourceType: "JSON", - asNexusMethod: "json", -}) - const createPlugins = () => { const plugins = [ nexusPrisma({ @@ -86,13 +66,7 @@ const createPlugins = () => { const createSchema = () => makeSchema({ - types: { - ...types, - DateTime, - Decimal, - Json, - JSONObject, - }, + types, contextType: { module: join(process.cwd(), "context.ts"), export: "Context", @@ -104,17 +78,9 @@ const createSchema = () => alias: "prisma", }, { module: "@types/graphql-upload/index.d.ts", alias: "upload" }, - { - module: path.join(__dirname, "types/GraphQLScalars.d.ts"), - alias: "scalars", - }, ], mapping: { Upload: "upload.Upload['promise']", - Decimal: "scalars.GraphQLDecimal", - DateTime: "scalars.GraphQLDateTime", - Json: "scalars.GraphQLJSON", - JSONObject: "scalars.GraphQLJSONObject", }, }, plugins: createPlugins(), diff --git a/backend/tests/data/fixtures.ts b/backend/tests/data/fixtures.ts index 1949d6fa9..6ab9cabf1 100644 --- a/backend/tests/data/fixtures.ts +++ b/backend/tests/data/fixtures.ts @@ -865,7 +865,7 @@ export const openUniversityRegistrationLink: Prisma.OpenUniversityRegistrationLi language: "en_US", course: { connect: { id: "00000000000000000000000000000001" } }, link: "avoin-link-alias2", - tiers: Prisma.JsonNull, + tiers: null, created_at: "1900-01-01T10:00:00.00+02:00", updated_at: "1900-01-01T10:00:00.00+02:00", }, @@ -875,7 +875,7 @@ export const openUniversityRegistrationLink: Prisma.OpenUniversityRegistrationLi language: "en_US", course: { connect: { id: "00000000000000000000000000000666" } }, link: "avoin-link-alias3", - tiers: Prisma.JsonNull, + tiers: null, created_at: "1900-01-01T10:00:00.00+02:00", updated_at: "1900-01-01T10:00:00.00+02:00", }, diff --git a/backend/types/GraphQLScalars.d.ts b/backend/types/GraphQLScalars.d.ts deleted file mode 100644 index f943a9dbd..000000000 --- a/backend/types/GraphQLScalars.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - DateTimeResolver, - JSONObjectResolver, - JSONResolver, -} from "graphql-scalars" -import { GraphQLDecimal } from "prisma-graphql-type-decimal" - -export type GraphQLDecimal = typeof GraphQLDecimal -export type GraphQLDAteTime = typeof DateTimeResolver -export type GraphQLJSON = typeof JSONResolver -export type GraphQLJSONObject = typeof JSONObjectResolver