From 12780e8a65b5d338ceb721b71c058a5b3888e584 Mon Sep 17 00:00:00 2001 From: Tim Suchanek Date: Tue, 29 Dec 2020 11:41:49 +0100 Subject: [PATCH] fix(client): Fix #4442 (#4811) --- .../uncheckedScalarValidation/.gitignore | 1 + .../errors/uncheckedScalarValidation/dev.db | Bin 0 -> 49152 bytes .../uncheckedScalarValidation/schema.prisma | 92 ++++++ .../errors/uncheckedScalarValidation/test.ts | 96 ++++++ .../__snapshots__/test.ts.snap | 24 +- src/packages/client/src/runtime/dmmf.ts | 81 ++---- src/packages/client/src/runtime/query.ts | 9 +- src/pnpm-lock.yaml | 275 ++---------------- 8 files changed, 264 insertions(+), 314 deletions(-) create mode 100644 src/packages/client/src/__tests__/integration/errors/uncheckedScalarValidation/.gitignore create mode 100644 src/packages/client/src/__tests__/integration/errors/uncheckedScalarValidation/dev.db create mode 100644 src/packages/client/src/__tests__/integration/errors/uncheckedScalarValidation/schema.prisma create mode 100644 src/packages/client/src/__tests__/integration/errors/uncheckedScalarValidation/test.ts diff --git a/src/packages/client/src/__tests__/integration/errors/uncheckedScalarValidation/.gitignore b/src/packages/client/src/__tests__/integration/errors/uncheckedScalarValidation/.gitignore new file mode 100644 index 000000000000..1c740c9afc8f --- /dev/null +++ b/src/packages/client/src/__tests__/integration/errors/uncheckedScalarValidation/.gitignore @@ -0,0 +1 @@ +dev-tmp.db diff --git a/src/packages/client/src/__tests__/integration/errors/uncheckedScalarValidation/dev.db b/src/packages/client/src/__tests__/integration/errors/uncheckedScalarValidation/dev.db new file mode 100644 index 0000000000000000000000000000000000000000..d13e4d3a6d84c5c792bb4ce959112d0a2c7f1083 GIT binary patch literal 49152 zcmeI)U2mIK7zc1@oRB!p)|-f{NJmK7V%2gw^`aNm)DoLi)*Rb)Kx(8(7BOT)!N%of zYqqN_-KKS4XZO3@H<+|8}4K{JQ!< zc)8lF{a!nuyYYhn1pb@A#ik&BzRO?kSTn;r+>!5%z7J`>HQDe zBSlsfqV>D4HHCEh9pw#?(nqAvl*pi;ZI$*U*0a?3zAlI_cKFLrGof3)Yt6gH*fMgl zH*bu)bXqnr3mWz-HHl;yQsaC>5T9-Hmtq)PrERUiGu?DxwzFOswD9mKAZwz*qP~(~ zU#<({J`Ki)!897DWlnX=j_;7|*eDFNbZ8WW?WRG(KBUIg(>2=tKL69UubouchJ+79nA(b66aZTMf z4cV7ShZc?6JyNcFAsyvV)_N*wYon3USI4aNSe1{4&3YK%a4=H3ulnQ*<%C?5Hpoah zROs<-~%M#bf9`e7S=>TwzO-Vj(oOoKYX$(h`YP|`;Wr{ zNUoa=;`I7jHtp%A>x@&#rBssi{m7a+==Nz(M>Jz`9RvY8O;z5|>d02eOrM&?E#VYU zc+S5qnW$ptMrpm(8$Uj;3F6KU|Dl_KN+ec`f$j^(k0zug@7(BOX}n>Cl@lALH=!YX z%b7(vhOiN4sGPZ{$o7_9NRzBM(!b7mz;od>73HIc}{V9- z%qYne@Fed4-jZK9rNkM?4*Pfpzl$j)PF=SDq}o{HEvA-w3^ zEnBtW9ceX`HDT&C+Az{}fB*y_009U<00Izz z00b5S`2Js5U=0EgfB*y_009U<00Izz00baVRRMheS2eS^F9<*Y0uX=z1Rwwb2tWV= z5P-l!0N?)$3#>r^0uX=z1Rwwb2tWV=5P$##sw#l*|Egvd_XPn6KmY;|fB*y_009U< z00IzL2-Mjs{{R042-Y9~0SG_<0uX=z1Rwwb2tWV=6%@ete+83@TY>-tAOHafKmY;| zfB*y_009W(1n~Wz1HmQ)AOHafKmY;|fB*y_009U { + expect.assertions(1) + const PrismaClient = await getTestClient() + const prisma = new PrismaClient() + + try { + await prisma.trip.create({ + data: { + name: 'Trip 1', + description: 'This is a description', + public: false, + dateFrom: new Date('2020-12-29T10:15:16.495Z'), + dateTo: new Date('2020-12-29T10:15:16.495Z'), + adults: 12, + backgroundUrl: 'https://duckduckgo.com', + userId: 1, + activities: { + create: [ + { + name: 'Activity1', + description: 'This is activity 1', + location: 'Some location', + date: new Date('2020-12-29T10:15:16.495Z'), + public: false, + timezone: 'Europe/Berlin', + maxPeople: 1, + activityTypeId: 1, + tripId: 1, + }, + ], + }, + }, + }) + } catch (e) { + expect(e).toMatchInlineSnapshot(` + + Invalid \`prisma.trip.create()\` invocation in + /client/src/__tests__/integration/errors/uncheckedScalarValidation/test.ts:9:23 + + 6 const prisma = new PrismaClient() + 7 + 8 try { + → 9 await prisma.trip.create({ + data: { + name: 'Trip 1', + description: 'This is a description', + public: false, + dateFrom: new Date('2020-12-29T10:15:16.495Z'), + dateTo: new Date('2020-12-29T10:15:16.495Z'), + adults: 12, + backgroundUrl: 'https://duckduckgo.com', + userId: 1, + activities: { + create: [ + { + name: 'Activity1', + description: 'This is activity 1', + location: 'Some location', + date: new Date('2020-12-29T10:15:16.495Z'), + public: false, + timezone: 'Europe/Berlin', + maxPeople: 1, + activityTypeId: 1, + tripId: 1 + ~~~~~~ + } + ] + } + } + }) + + Unknown arg \`tripId\` in data.activities.create.0.tripId for type ActivityUncheckedCreateWithoutTripInput. Did you mean \`id\`? Available args: + type ActivityUncheckedCreateWithoutTripInput { + id?: Int + uuid?: String + activityTypeId: Int + name: String + description?: String | Null + location: String + date: DateTime + timezone: String + public: Boolean + maxPeople?: Int | Null + createdAt?: DateTime + updatedAt?: DateTime + users?: UsersToActivitiesUncheckedCreateManyWithoutActivityInput + } + + + `) + } + + prisma.$disconnect() +}) diff --git a/src/packages/client/src/__tests__/integration/happy/exhaustive-schema/__snapshots__/test.ts.snap b/src/packages/client/src/__tests__/integration/happy/exhaustive-schema/__snapshots__/test.ts.snap index 2ebb3a4e5990..a7d73ab8bf92 100644 --- a/src/packages/client/src/__tests__/integration/happy/exhaustive-schema/__snapshots__/test.ts.snap +++ b/src/packages/client/src/__tests__/integration/happy/exhaustive-schema/__snapshots__/test.ts.snap @@ -13858,13 +13858,13 @@ export namespace Prisma { } export type PostCreateManyWithoutAuthorInput = { - create?: XOR, XOR>> + create?: XOR, Enumerable> connect?: Enumerable connectOrCreate?: Enumerable } export type PostUncheckedCreateManyWithoutAuthorInput = { - create?: XOR, XOR>> + create?: XOR, Enumerable> connect?: Enumerable connectOrCreate?: Enumerable } @@ -13906,7 +13906,7 @@ export namespace Prisma { } export type PostUpdateManyWithoutAuthorInput = { - create?: XOR, XOR>> + create?: XOR, Enumerable> connect?: Enumerable set?: Enumerable disconnect?: Enumerable @@ -13919,7 +13919,7 @@ export namespace Prisma { } export type PostUncheckedUpdateManyWithoutAuthorInput = { - create?: XOR, XOR>> + create?: XOR, Enumerable> connect?: Enumerable set?: Enumerable disconnect?: Enumerable @@ -13932,13 +13932,13 @@ export namespace Prisma { } export type NCreateManyWithoutMInput = { - create?: XOR, XOR>> + create?: XOR, Enumerable> connect?: Enumerable connectOrCreate?: Enumerable } export type NUpdateManyWithoutMInput = { - create?: XOR, XOR>> + create?: XOR, Enumerable> connect?: Enumerable set?: Enumerable disconnect?: Enumerable @@ -13951,13 +13951,13 @@ export namespace Prisma { } export type MCreateManyWithoutNInput = { - create?: XOR, XOR>> + create?: XOR, Enumerable> connect?: Enumerable connectOrCreate?: Enumerable } export type MUpdateManyWithoutNInput = { - create?: XOR, XOR>> + create?: XOR, Enumerable> connect?: Enumerable set?: Enumerable disconnect?: Enumerable @@ -13970,19 +13970,19 @@ export namespace Prisma { } export type ManyRequiredCreateManyWithoutOneInput = { - create?: XOR, XOR>> + create?: XOR, Enumerable> connect?: Enumerable connectOrCreate?: Enumerable } export type ManyRequiredUncheckedCreateManyWithoutOneInput = { - create?: XOR, XOR>> + create?: XOR, Enumerable> connect?: Enumerable connectOrCreate?: Enumerable } export type ManyRequiredUpdateManyWithoutOneInput = { - create?: XOR, XOR>> + create?: XOR, Enumerable> connect?: Enumerable set?: Enumerable disconnect?: Enumerable @@ -13995,7 +13995,7 @@ export namespace Prisma { } export type ManyRequiredUncheckedUpdateManyWithoutOneInput = { - create?: XOR, XOR>> + create?: XOR, Enumerable> connect?: Enumerable set?: Enumerable disconnect?: Enumerable diff --git a/src/packages/client/src/runtime/dmmf.ts b/src/packages/client/src/runtime/dmmf.ts index a1b1e8472b47..770f955f2ccc 100644 --- a/src/packages/client/src/runtime/dmmf.ts +++ b/src/packages/client/src/runtime/dmmf.ts @@ -102,27 +102,18 @@ export class DMMFClass implements DMMF.Document { } for (const type of inputTypes) { for (const field of type.fields) { - const first = field.inputTypes[0].type - if ( - typeof first === 'string' && - !ScalarTypeTable[first] && - (this.inputTypeMap[first] || this.enumMap[first]) - ) { - field.inputTypes[0].type = - this.inputTypeMap[first] || - this.enumMap[first] || - field.inputTypes[0].type - } - const second = field.inputTypes[1] && field.inputTypes[1].type - if ( - typeof second === 'string' && - !ScalarTypeTable[second] && - (this.inputTypeMap[second] || this.enumMap[second]) - ) { - field.inputTypes[1].type = - this.inputTypeMap[second] || - this.enumMap[second] || - field.inputTypes[1].type + for (const fieldInputType of field.inputTypes) { + const fieldType = fieldInputType.type + if ( + typeof fieldType === 'string' && + !ScalarTypeTable[fieldType] && + (this.inputTypeMap[fieldType] || this.enumMap[fieldType]) + ) { + fieldInputType.type = + this.inputTypeMap[fieldType] || + this.enumMap[fieldType] || + fieldType + } } } type.fieldMap = keyBy(type.fields, 'name') @@ -132,23 +123,12 @@ export class DMMFClass implements DMMF.Document { for (const type of this.outputTypes.prisma) { for (const field of type.fields) { for (const arg of field.args) { - const first = arg.inputTypes[0].type - if (typeof first === 'string' && !ScalarTypeTable[first]) { - arg.inputTypes[0].type = - this.inputTypeMap[first] || - this.enumMap[first] || - arg.inputTypes[0].type - } - const second = arg.inputTypes[1] && arg.inputTypes[1].type - if ( - second && - typeof second === 'string' && - !ScalarTypeTable[second] - ) { - arg.inputTypes[1].type = - this.inputTypeMap[second] || - this.enumMap[second] || - arg.inputTypes[1].type + for (const argInputType of arg.inputTypes) { + const argType = argInputType.type + if (typeof argType === 'string' && !ScalarTypeTable[argType]) { + argInputType.type = + this.inputTypeMap[argType] || this.enumMap[argType] || argType + } } } } @@ -156,23 +136,14 @@ export class DMMFClass implements DMMF.Document { for (const type of this.outputTypes.model) { for (const field of type.fields) { for (const arg of field.args) { - const first = arg.inputTypes[0].type - if (typeof first === 'string' && !ScalarTypeTable[first]) { - arg.inputTypes[0].type = - this.inputTypeMap[first] || - this.enumMap[first] || - arg.inputTypes[0].type - } - const second = arg.inputTypes[1] && arg.inputTypes[1].type - if ( - second && - typeof second === 'string' && - !ScalarTypeTable[second] - ) { - arg.inputTypes[1].type = - this.inputTypeMap[second] || - this.enumMap[second] || - arg.inputTypes[1].type + for (const argInputType of arg.inputTypes) { + const argType = argInputType.type + if (typeof argType === 'string' && !ScalarTypeTable[argType]) { + argInputType.type = + this.inputTypeMap[argType] || + this.enumMap[argType] || + argInputType.type + } } } } diff --git a/src/packages/client/src/runtime/query.ts b/src/packages/client/src/runtime/query.ts index 5f81f4e7071b..c651e8822306 100644 --- a/src/packages/client/src/runtime/query.ts +++ b/src/packages/client/src/runtime/query.ts @@ -1390,6 +1390,7 @@ function valueToArg(key: string, value: any, arg: DMMF.SchemaArg): Arg | null { * Stop on the first successful one */ let maybeArg: Arg | null = null + for (const inputType of arg.inputTypes) { maybeArg = tryInferArgs(key, value, arg, inputType) if (maybeArg?.collectErrors().length === 0) { @@ -1534,8 +1535,8 @@ function tryInferArgs( const argInputType = inputType.type as DMMF.InputType const hasAtLeastOneError = - typeof argInputType.constraints.minNumFields === 'number' && - argInputType.constraints.minNumFields > 0 + typeof argInputType.constraints?.minNumFields === 'number' && + argInputType.constraints?.minNumFields > 0 ? Array.isArray(value) && value.some((v) => !v || Object.keys(cleanObject(v)).length === 0) : false @@ -1548,8 +1549,8 @@ function tryInferArgs( : undefined if (!err) { const hasOneOfError = - typeof argInputType.constraints.maxNumFields === 'number' && - argInputType.constraints.maxNumFields < 2 + typeof argInputType.constraints?.maxNumFields === 'number' && + argInputType.constraints?.maxNumFields < 2 ? Array.isArray(value) && value.find((v) => !v || Object.keys(cleanObject(v)).length !== 1) : false diff --git a/src/pnpm-lock.yaml b/src/pnpm-lock.yaml index 847f6153c894..89f69961abfb 100644 --- a/src/pnpm-lock.yaml +++ b/src/pnpm-lock.yaml @@ -184,7 +184,7 @@ importers: indent-string: 4.0.0 is-obj: 2.0.0 is-regexp: 2.1.0 - jest: 26.6.3_ts-node@9.1.1 + jest: 26.6.3 js-levenshtein: 1.1.6 klona: 2.0.4 lint-staged: 10.5.3 @@ -266,7 +266,7 @@ importers: strip-indent: 3.0.0 ts-jest: 26.4.4 ts-node: 9.1.1 - tsd: ^0.14.0 + tsd: 0.14.0 typescript: 4.1.3 packages/debug: dependencies: @@ -458,7 +458,7 @@ importers: eslint-plugin-eslint-comments: 3.2.0_eslint@7.15.0 eslint-plugin-jest: 24.1.3_eslint@7.15.0+typescript@4.1.3 eslint-plugin-prettier: 3.3.0_eslint@7.15.0+prettier@2.2.1 - jest: 26.6.3_ts-node@9.1.1 + jest: 26.6.3 lint-staged: 10.5.3 prettier: 2.2.1 ts-jest: 26.4.4_jest@26.6.3+typescript@4.1.3 @@ -656,7 +656,7 @@ importers: eslint-plugin-eslint-comments: 3.2.0_eslint@7.15.0 eslint-plugin-jest: 24.1.3_eslint@7.15.0+typescript@4.1.3 eslint-plugin-prettier: 3.3.0_eslint@7.15.0+prettier@2.2.1 - jest: 26.6.3_ts-node@9.1.1 + jest: 26.6.3 lint-staged: 10.5.3 prettier: 2.2.1 ts-jest: 26.4.4_jest@26.6.3+typescript@4.1.3 @@ -1197,43 +1197,6 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== - /@jest/core/26.6.3_ts-node@9.1.1: - dependencies: - '@jest/console': 26.6.2 - '@jest/reporters': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 14.14.10 - ansi-escapes: 4.3.1 - chalk: 4.1.0 - exit: 0.1.2 - graceful-fs: 4.2.4 - jest-changed-files: 26.6.2 - jest-config: 26.6.3_ts-node@9.1.1 - jest-haste-map: 26.6.2 - jest-message-util: 26.6.2 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-resolve-dependencies: 26.6.3 - jest-runner: 26.6.3_ts-node@9.1.1 - jest-runtime: 26.6.3_ts-node@9.1.1 - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - jest-watcher: 26.6.2 - micromatch: 4.0.2 - p-each-series: 2.2.0 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.0 - dev: true - engines: - node: '>= 10.14.2' - peerDependencies: - ts-node: '*' - resolution: - integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== /@jest/environment/26.6.2: dependencies: '@jest/fake-timers': 26.6.2 @@ -1334,20 +1297,6 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== - /@jest/test-sequencer/26.6.3_ts-node@9.1.1: - dependencies: - '@jest/test-result': 26.6.2 - graceful-fs: 4.2.4 - jest-haste-map: 26.6.2 - jest-runner: 26.6.3_ts-node@9.1.1 - jest-runtime: 26.6.3_ts-node@9.1.1 - dev: true - engines: - node: '>= 10.14.2' - peerDependencies: - ts-node: '*' - resolution: - integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== /@jest/transform/26.6.2: dependencies: '@babel/core': 7.12.9 @@ -1418,19 +1367,19 @@ packages: dev: false resolution: integrity: sha512-FVLhwVkbfhXlBhroWfIXMLi+3Jh9IEzYp+9z+MUUiw3ZsbcoAil7CN9/QIjHc4/TcCRyRfuSmT7qCnn4O+TjJw== - /@prisma/debug/2.14.0-dev.48: + /@prisma/debug/2.14.0-dev.53: dependencies: debug: 4.3.2 ms: 2.1.3 dev: true resolution: - integrity: sha512-qB0MhT4bEDcLbKrKagJzvOOY7mqXMp1bCO/i1eAGic0VLM966H+SPIMT2jEorDd2JPuDEW1LHl3Lv+3VNJcScQ== - /@prisma/engine-core/2.14.0-dev.48: + integrity: sha512-F5NDSD133rT9ZaAyg1/pU5LyZHSehjC5Zqw0OUP02FMf4zodGgEGB71u0/iP1dMvK8cMxhmqJGvoaZPSv8KQ/g== + /@prisma/engine-core/2.14.0-dev.53: dependencies: - '@prisma/debug': 2.14.0-dev.48 + '@prisma/debug': 2.14.0-dev.53 '@prisma/engines': 2.14.0-26.59cf08bf47e90cb37532900059f3328b4328237c - '@prisma/generator-helper': 2.14.0-dev.48 - '@prisma/get-platform': 2.14.0-dev.48 + '@prisma/generator-helper': 2.14.0-dev.53 + '@prisma/get-platform': 2.14.0-dev.53 chalk: 4.1.0 execa: 5.0.0 get-stream: 6.0.0 @@ -1441,7 +1390,7 @@ packages: undici: 2.2.1 dev: true resolution: - integrity: sha512-n+tDrto7qeZJoh2QdPd4K23/BZvbRHKmwbOw6llpRshn1vdDbHoY2Z4eHHdh7nGwtijcIx0wIqoA9QUQy+BO0w== + integrity: sha512-2y21OajpIZDQK+9k8a9lpRzAe7HsP8zoSehg5s+dHhvBRvrU02I2aNIIdlQTcprVk3k3vq6E3Dy4FirwG8cr3g== /@prisma/engines-version/2.14.0-26.59cf08bf47e90cb37532900059f3328b4328237c: resolution: integrity: sha512-Dvh81oMjLRw+5BpQFWmDoIugWFcQLlx+vzyte3lHolCJ27AaT2onLGy7omYJQPR+ZPtTic0IR5PVzVeWZD6q5g== @@ -1449,10 +1398,10 @@ packages: requiresBuild: true resolution: integrity: sha512-9AicIs3gYpRctgUDrzMRYM1VxvAJYbmeoGF/PW7hLQs3+fiPU7IW7zaxmuTvG3bc8j8zJQ/i//DIeIvYwwEVNg== - /@prisma/fetch-engine/2.14.0-dev.48: + /@prisma/fetch-engine/2.14.0-dev.53: dependencies: - '@prisma/debug': 2.14.0-dev.48 - '@prisma/get-platform': 2.14.0-dev.48 + '@prisma/debug': 2.14.0-dev.53 + '@prisma/get-platform': 2.14.0-dev.53 chalk: 4.1.0 execa: 5.0.0 find-cache-dir: 3.3.1 @@ -1470,30 +1419,30 @@ packages: tempy: 1.0.0 dev: true resolution: - integrity: sha512-HkaDxiq911tGO4P7rIXiIE0O074xohOhi6r/VSudzkYCWoVBJyb8nNwRCpIPh9OSEhY6hHKCpdOwYKL6zWANzw== - /@prisma/generator-helper/2.14.0-dev.48: + integrity: sha512-M+1W68E44m1r7R9MqvvdLtd6fpvjcbxptER9HQ+etgON+R+IYMQojrrjsEr6mjUY96+70n6W6/MAy89+PgAc0A== + /@prisma/generator-helper/2.14.0-dev.53: dependencies: - '@prisma/debug': 2.14.0-dev.48 + '@prisma/debug': 2.14.0-dev.53 '@types/cross-spawn': 6.0.2 chalk: 4.1.0 cross-spawn: 7.0.3 dev: true resolution: - integrity: sha512-PJKLBbW1Sy4+wvG56cd+4KM7WRkdO2FkzX4p62IgM87alHus4AHfkOkAKhZ6gvBhujNliuAZQZbHzVGH7bfXXQ== - /@prisma/get-platform/2.14.0-dev.48: + integrity: sha512-AuZya/MtXQkA+0CBDY/ZLtsaocuTo0EOj/ajAY9e/UdtYiJlgIIdBNXcpadolNgFuLwOeIZX382ZTMzJZBrdeA== + /@prisma/get-platform/2.14.0-dev.53: dependencies: - '@prisma/debug': 2.14.0-dev.48 + '@prisma/debug': 2.14.0-dev.53 dev: true resolution: - integrity: sha512-0CKQCcDS5CtDqFkDpvzzFRXUtUEMl9gsSZw2Ti9wmvhoKDiAYlp0MVZtbSiz0SrpRT1CDPoY4UW5MTuFrVOdZA== - /@prisma/sdk/2.14.0-dev.48: + integrity: sha512-ZcvuVVx7RxCyi/mrKK8edPHxLoFezYv+TBC3ntOdRr5KO8XPMWJjM7noRPQiy3BMMiw9uAsr4x5HquoAa6kwYA== + /@prisma/sdk/2.14.0-dev.53: dependencies: - '@prisma/debug': 2.14.0-dev.48 - '@prisma/engine-core': 2.14.0-dev.48 + '@prisma/debug': 2.14.0-dev.53 + '@prisma/engine-core': 2.14.0-dev.53 '@prisma/engines': 2.14.0-26.59cf08bf47e90cb37532900059f3328b4328237c - '@prisma/fetch-engine': 2.14.0-dev.48 - '@prisma/generator-helper': 2.14.0-dev.48 - '@prisma/get-platform': 2.14.0-dev.48 + '@prisma/fetch-engine': 2.14.0-dev.53 + '@prisma/generator-helper': 2.14.0-dev.53 + '@prisma/get-platform': 2.14.0-dev.53 '@timsuchanek/copy': 1.4.5 archiver: 4.0.2 arg: 5.0.0 @@ -1525,10 +1474,10 @@ packages: url-parse: 1.4.7 dev: true resolution: - integrity: sha512-/NulDDhUPic5UoJVDdDKnxA9cGAW16U5kCe27yBH88hZSc8mgq3432L8mWL2UHn4HVBSsio+SEklik+FBCQxyQ== - /@prisma/studio-pcw/0.332.0_@prisma+sdk@2.14.0-dev.48: + integrity: sha512-lFIIJGrdM7BoUQJaQ94FmCQXJoHLT7Rx8rt7U1XVtEBycZHlZ25Cfb4dy+dfWW4AZvve3KDLyWtvQf18LzhHYg== + /@prisma/studio-pcw/0.332.0_@prisma+sdk@2.14.0-dev.53: dependencies: - '@prisma/sdk': 2.14.0-dev.48 + '@prisma/sdk': 2.14.0-dev.53 '@prisma/studio-types': 0.332.0 rimraf: 3.0.2 dev: true @@ -1538,9 +1487,9 @@ packages: integrity: sha512-4R74gN2RgPawfUt8lX5TYYavpEkVqXFkuXwNfYmNk7FRLgV6LR0bUaUVPTSPf62l+H1kttWW2DxvX6oxx8yEmw== /@prisma/studio-server/0.332.0: dependencies: - '@prisma/sdk': 2.14.0-dev.48 + '@prisma/sdk': 2.14.0-dev.53 '@prisma/studio': 0.332.0 - '@prisma/studio-pcw': 0.332.0_@prisma+sdk@2.14.0-dev.48 + '@prisma/studio-pcw': 0.332.0_@prisma+sdk@2.14.0-dev.53 '@prisma/studio-types': 0.332.0 '@sentry/node': 5.15.5 checkpoint-client: 1.1.18 @@ -5060,29 +5009,6 @@ packages: hasBin: true resolution: integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== - /jest-cli/26.6.3_ts-node@9.1.1: - dependencies: - '@jest/core': 26.6.3_ts-node@9.1.1 - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - chalk: 4.1.0 - exit: 0.1.2 - graceful-fs: 4.2.4 - import-local: 3.0.2 - is-ci: 2.0.0 - jest-config: 26.6.3_ts-node@9.1.1 - jest-util: 26.6.2 - jest-validate: 26.6.2 - prompts: 2.4.0 - yargs: 15.4.1 - dev: true - engines: - node: '>= 10.14.2' - hasBin: true - peerDependencies: - ts-node: '*' - resolution: - integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== /jest-config/26.6.3: dependencies: '@babel/core': 7.12.9 @@ -5113,37 +5039,6 @@ packages: optional: true resolution: integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== - /jest-config/26.6.3_ts-node@9.1.1: - dependencies: - '@babel/core': 7.12.9 - '@jest/test-sequencer': 26.6.3_ts-node@9.1.1 - '@jest/types': 26.6.2 - babel-jest: 26.6.3_@babel+core@7.12.9 - chalk: 4.1.0 - deepmerge: 4.2.2 - glob: 7.1.6 - graceful-fs: 4.2.4 - jest-environment-jsdom: 26.6.2 - jest-environment-node: 26.6.2 - jest-get-type: 26.3.0 - jest-jasmine2: 26.6.3_ts-node@9.1.1 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - micromatch: 4.0.2 - pretty-format: 26.6.2 - ts-node: 9.1.1_typescript@4.1.3 - dev: true - engines: - node: '>= 10.14.2' - peerDependencies: - ts-node: '>=9.0.0' - peerDependenciesMeta: - ts-node: - optional: true - resolution: - integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== /jest-diff/25.5.0: dependencies: chalk: 3.0.0 @@ -5272,33 +5167,6 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== - /jest-jasmine2/26.6.3_ts-node@9.1.1: - dependencies: - '@babel/traverse': 7.12.9 - '@jest/environment': 26.6.2 - '@jest/source-map': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 14.14.10 - chalk: 4.1.0 - co: 4.6.0 - expect: 26.6.2 - is-generator-fn: 2.1.0 - jest-each: 26.6.2 - jest-matcher-utils: 26.6.2 - jest-message-util: 26.6.2 - jest-runtime: 26.6.3_ts-node@9.1.1 - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - pretty-format: 26.6.2 - throat: 5.0.0 - dev: true - engines: - node: '>= 10.14.2' - peerDependencies: - ts-node: '*' - resolution: - integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== /jest-leak-detector/26.6.2: dependencies: jest-get-type: 26.3.0 @@ -5415,35 +5283,6 @@ packages: node: '>= 10.14.2' resolution: integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== - /jest-runner/26.6.3_ts-node@9.1.1: - dependencies: - '@jest/console': 26.6.2 - '@jest/environment': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 14.14.10 - chalk: 4.1.0 - emittery: 0.7.2 - exit: 0.1.2 - graceful-fs: 4.2.4 - jest-config: 26.6.3_ts-node@9.1.1 - jest-docblock: 26.0.0 - jest-haste-map: 26.6.2 - jest-leak-detector: 26.6.2 - jest-message-util: 26.6.2 - jest-resolve: 26.6.2 - jest-runtime: 26.6.3_ts-node@9.1.1 - jest-util: 26.6.2 - jest-worker: 26.6.2 - source-map-support: 0.5.19 - throat: 5.0.0 - dev: true - engines: - node: '>= 10.14.2' - peerDependencies: - ts-node: '*' - resolution: - integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== /jest-runtime/26.6.3: dependencies: '@jest/console': 26.6.2 @@ -5479,43 +5318,6 @@ packages: hasBin: true resolution: integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== - /jest-runtime/26.6.3_ts-node@9.1.1: - dependencies: - '@jest/console': 26.6.2 - '@jest/environment': 26.6.2 - '@jest/fake-timers': 26.6.2 - '@jest/globals': 26.6.2 - '@jest/source-map': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - '@types/yargs': 15.0.11 - chalk: 4.1.0 - cjs-module-lexer: 0.6.0 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.1.6 - graceful-fs: 4.2.4 - jest-config: 26.6.3_ts-node@9.1.1 - jest-haste-map: 26.6.2 - jest-message-util: 26.6.2 - jest-mock: 26.6.2 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - slash: 3.0.0 - strip-bom: 4.0.0 - yargs: 15.4.1 - dev: true - engines: - node: '>= 10.14.2' - hasBin: true - peerDependencies: - ts-node: '*' - resolution: - integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== /jest-serializer/26.6.2: dependencies: '@types/node': 14.14.10 @@ -5620,19 +5422,6 @@ packages: hasBin: true resolution: integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== - /jest/26.6.3_ts-node@9.1.1: - dependencies: - '@jest/core': 26.6.3_ts-node@9.1.1 - import-local: 3.0.2 - jest-cli: 26.6.3_ts-node@9.1.1 - dev: true - engines: - node: '>= 10.14.2' - hasBin: true - peerDependencies: - ts-node: '*' - resolution: - integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== /js-levenshtein/1.1.6: dev: true engines: