diff --git a/packages/adapter-d1/src/d1.ts b/packages/adapter-d1/src/d1.ts index 47e557793bf9..1fd3d5547c95 100644 --- a/packages/adapter-d1/src/d1.ts +++ b/packages/adapter-d1/src/d1.ts @@ -117,6 +117,12 @@ class D1Transaction extends D1Queryable implements Transaction { super(client) } + async begin(): Promise> { + debug(`[js::begin]`) + + return ok(undefined) + } + async commit(): Promise> { debug(`[js::commit]`) diff --git a/packages/adapter-libsql/src/libsql.ts b/packages/adapter-libsql/src/libsql.ts index ec172c82ab07..41ca8b43ad74 100644 --- a/packages/adapter-libsql/src/libsql.ts +++ b/packages/adapter-libsql/src/libsql.ts @@ -100,6 +100,15 @@ class LibSqlTransaction extends LibSqlQueryable implements Tr super(client) } + // eslint-disable-next-line @typescript-eslint/require-await + async begin(): Promise> { + debug(`[js::commit]`) + + throw new Error('Method not implemented.') + + return ok(undefined) + } + async commit(): Promise> { debug(`[js::commit]`) diff --git a/packages/adapter-neon/src/neon.ts b/packages/adapter-neon/src/neon.ts index 6df1a01055d6..59448efdd629 100644 --- a/packages/adapter-neon/src/neon.ts +++ b/packages/adapter-neon/src/neon.ts @@ -154,6 +154,13 @@ class NeonTransaction extends NeonWsQueryable implements Transa super(client) } + async begin(): Promise> { + debug(`[js::begin]`) + + this.client.release() + return Promise.resolve(ok(undefined)) + } + async commit(): Promise> { debug(`[js::commit]`) diff --git a/packages/adapter-pg-worker/src/pg.ts b/packages/adapter-pg-worker/src/pg.ts index 49ea314cad33..d6610c91a604 100644 --- a/packages/adapter-pg-worker/src/pg.ts +++ b/packages/adapter-pg-worker/src/pg.ts @@ -143,6 +143,13 @@ class PgTransaction extends PgQueryable implements Transactio super(client) } + async begin(): Promise> { + debug(`[js::begin]`) + + this.client.release() + return ok(undefined) + } + async commit(): Promise> { debug(`[js::commit]`) diff --git a/packages/adapter-pg/src/pg.ts b/packages/adapter-pg/src/pg.ts index 2244de70b769..c5c5001419fe 100644 --- a/packages/adapter-pg/src/pg.ts +++ b/packages/adapter-pg/src/pg.ts @@ -145,6 +145,13 @@ class PgTransaction extends PgQueryable implements Transactio super(client) } + async begin(): Promise> { + debug(`[js::begin]`) + + this.client.release() + return ok(undefined) + } + async commit(): Promise> { debug(`[js::commit]`) diff --git a/packages/adapter-planetscale/src/planetscale.ts b/packages/adapter-planetscale/src/planetscale.ts index 29a0dddb0a4a..1ab33081f649 100644 --- a/packages/adapter-planetscale/src/planetscale.ts +++ b/packages/adapter-planetscale/src/planetscale.ts @@ -131,6 +131,13 @@ class PlanetScaleTransaction extends PlanetScaleQueryable> { + debug(`[js::begin]`) + + this.txDeferred.resolve() + return Promise.resolve(ok(await this.txResultPromise)) + } + async commit(): Promise> { debug(`[js::commit]`) diff --git a/packages/client/package.json b/packages/client/package.json index 30d739d552cb..dc30849b4ff8 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -199,7 +199,7 @@ "@prisma/debug": "workspace:*", "@prisma/driver-adapter-utils": "workspace:*", "@prisma/engines": "workspace:*", - "@prisma/engines-version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", + "@prisma/engines-version": "6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7", "@prisma/fetch-engine": "workspace:*", "@prisma/generator-helper": "workspace:*", "@prisma/get-platform": "workspace:*", @@ -208,7 +208,7 @@ "@prisma/migrate": "workspace:*", "@prisma/mini-proxy": "0.9.5", "@prisma/pg-worker": "workspace:*", - "@prisma/query-engine-wasm": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", + "@prisma/query-engine-wasm": "6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7", "@snaplet/copycat": "0.17.3", "@swc-node/register": "1.10.9", "@swc/core": "1.10.1", @@ -278,4 +278,4 @@ } }, "sideEffects": false -} +} \ No newline at end of file diff --git a/packages/client/src/runtime/RequestHandler.ts b/packages/client/src/runtime/RequestHandler.ts index 51b36791c753..f0354bbe7c3d 100644 --- a/packages/client/src/runtime/RequestHandler.ts +++ b/packages/client/src/runtime/RequestHandler.ts @@ -109,6 +109,14 @@ export class RequestHandler { const interactiveTransaction = request.transaction?.kind === 'itx' ? getItxTransactionOptions(request.transaction) : undefined + if (interactiveTransaction) { + interactiveTransaction.payload = { + // If the interactive transaction has a payload, we need to merge it with the new_tx_id + ...(interactiveTransaction.payload as any), + new_tx_id: interactiveTransaction?.id, + } + } + const response = await this.client._engine.request(request.protocolQuery, { traceparent: this.client._tracingHelper.getTraceParent(), interactiveTransaction, diff --git a/packages/client/src/runtime/core/engines/binary/BinaryEngine.ts b/packages/client/src/runtime/core/engines/binary/BinaryEngine.ts index 14ace72c7741..8d1a5868619d 100644 --- a/packages/client/src/runtime/core/engines/binary/BinaryEngine.ts +++ b/packages/client/src/runtime/core/engines/binary/BinaryEngine.ts @@ -792,6 +792,7 @@ You very likely have the wrong "binaryTarget" defined in the schema.prisma file. max_wait: arg.maxWait, timeout: arg.timeout, isolation_level: arg.isolationLevel, + new_tx_id: arg?.newTxId, }) const result = await Connection.onHttpError( diff --git a/packages/client/src/runtime/core/engines/common/types/Transaction.ts b/packages/client/src/runtime/core/engines/common/types/Transaction.ts index 87458775cd90..de75f97a7889 100644 --- a/packages/client/src/runtime/core/engines/common/types/Transaction.ts +++ b/packages/client/src/runtime/core/engines/common/types/Transaction.ts @@ -10,6 +10,7 @@ export type Options = { maxWait?: number timeout?: number isolationLevel?: IsolationLevel + newTxId?: string } export type InteractiveTransactionInfo = { diff --git a/packages/client/src/runtime/core/engines/data-proxy/DataProxyEngine.ts b/packages/client/src/runtime/core/engines/data-proxy/DataProxyEngine.ts index a2279c928633..1396ac91ef99 100644 --- a/packages/client/src/runtime/core/engines/data-proxy/DataProxyEngine.ts +++ b/packages/client/src/runtime/core/engines/data-proxy/DataProxyEngine.ts @@ -443,6 +443,7 @@ export class DataProxyEngine implements Engine { max_wait: arg.maxWait, timeout: arg.timeout, isolation_level: arg.isolationLevel, + new_tx_id: arg?.newTxId, }) const url = await this.url('transaction/start') diff --git a/packages/client/src/runtime/core/engines/library/LibraryEngine.ts b/packages/client/src/runtime/core/engines/library/LibraryEngine.ts index 06684ecc5a73..aa421ea89362 100644 --- a/packages/client/src/runtime/core/engines/library/LibraryEngine.ts +++ b/packages/client/src/runtime/core/engines/library/LibraryEngine.ts @@ -195,6 +195,7 @@ export class LibraryEngine implements Engine { max_wait: arg.maxWait, timeout: arg.timeout, isolation_level: arg.isolationLevel, + new_tx_id: arg?.newTxId, }) result = await this.engine?.startTransaction(jsonOptions, headerStr) diff --git a/packages/client/src/runtime/core/types/exported/itxClientDenyList.ts b/packages/client/src/runtime/core/types/exported/itxClientDenyList.ts index a16c3b4b4e91..046f4634d05e 100644 --- a/packages/client/src/runtime/core/types/exported/itxClientDenyList.ts +++ b/packages/client/src/runtime/core/types/exported/itxClientDenyList.ts @@ -1,4 +1,4 @@ -const denylist = ['$connect', '$disconnect', '$on', '$transaction', '$use', '$extends'] as const +const denylist = ['$connect', '$disconnect', '$on', '$use', '$extends'] as const export const itxClientDenyList = denylist as ReadonlyArray diff --git a/packages/client/src/runtime/getPrismaClient.ts b/packages/client/src/runtime/getPrismaClient.ts index 5fc2071f31d1..0314d8e6af97 100644 --- a/packages/client/src/runtime/getPrismaClient.ts +++ b/packages/client/src/runtime/getPrismaClient.ts @@ -782,17 +782,21 @@ Or read our docs at https://www.prisma.io/docs/concepts/components/prisma-client */ async _transactionWithCallback({ callback, - options, + options = {}, }: { callback: (client: Client) => Promise - options?: Options + options?: Options & { newTxId?: string } }) { + if (this[TX_ID]) { + options.newTxId = this[TX_ID] + } const headers = { traceparent: this._tracingHelper.getTraceParent() } const optionsWithDefaults: Options = { maxWait: options?.maxWait ?? this._engineConfig.transactionOptions.maxWait, timeout: options?.timeout ?? this._engineConfig.transactionOptions.timeout, isolationLevel: options?.isolationLevel ?? this._engineConfig.transactionOptions.isolationLevel, + newTxId: options.newTxId, } const info = await this._engine.transaction('start', headers, optionsWithDefaults) @@ -803,7 +807,6 @@ Or read our docs at https://www.prisma.io/docs/concepts/components/prisma-client result = await callback(this._createItxClient(transaction)) - // it went well, then we commit the transaction await this._engine.transaction('commit', headers, info) } catch (e: any) { // it went bad, then we rollback the transaction diff --git a/packages/client/src/runtime/utils/getRuntime.ts b/packages/client/src/runtime/utils/getRuntime.ts index 1e00706782b6..77ea0c5abd9e 100644 --- a/packages/client/src/runtime/utils/getRuntime.ts +++ b/packages/client/src/runtime/utils/getRuntime.ts @@ -5,7 +5,8 @@ const runtimesPrettyNames = { workerd: 'Cloudflare Workers', deno: 'Deno and Deno Deploy', netlify: 'Netlify Edge Functions', - 'edge-light': 'Edge Runtime (Vercel Edge Functions, Vercel Edge Middleware, Next.js (Pages Router) Edge API Routes, Next.js (App Router) Edge Route Handlers or Next.js Middleware)', + 'edge-light': + 'Edge Runtime (Vercel Edge Functions, Vercel Edge Middleware, Next.js (Pages Router) Edge API Routes, Next.js (App Router) Edge Route Handlers or Next.js Middleware)', } as const type GetRuntimeOutput = { diff --git a/packages/client/tests/functional/extensions/defineExtension.ts b/packages/client/tests/functional/extensions/defineExtension.ts index 3ff061fc8837..3527e5b5490f 100644 --- a/packages/client/tests/functional/extensions/defineExtension.ts +++ b/packages/client/tests/functional/extensions/defineExtension.ts @@ -220,7 +220,6 @@ function itxWithinGenericExtension() { void xclient.$transaction((tx) => { expectTypeOf(tx).toHaveProperty('helperMethod') - expectTypeOf(tx).not.toHaveProperty('$transaction') expectTypeOf(tx).not.toHaveProperty('$extends') return Promise.resolve() }) diff --git a/packages/client/tests/functional/extensions/itx.ts b/packages/client/tests/functional/extensions/itx.ts index a44210f3b318..9545d3161dad 100644 --- a/packages/client/tests/functional/extensions/itx.ts +++ b/packages/client/tests/functional/extensions/itx.ts @@ -315,7 +315,7 @@ testMatrix.setupTestSuite( if (isTransaction) { expect(ctx.$connect).toBeUndefined() expect(ctx.$disconnect).toBeUndefined() - expect(ctx.$transaction).toBeUndefined() + expect(ctx.$transaction).toBeDefined() expect(ctx.$extends).toBeUndefined() } else { expect(ctx.$connect).toBeDefined() diff --git a/packages/client/tests/functional/extensions/query.ts b/packages/client/tests/functional/extensions/query.ts index cbcf0ef980b8..40bf7d11f166 100644 --- a/packages/client/tests/functional/extensions/query.ts +++ b/packages/client/tests/functional/extensions/query.ts @@ -829,7 +829,7 @@ testMatrix.setupTestSuite( expectTypeOf(args).not.toBeAny() expectTypeOf(query).toBeFunction() - expectTypeOf(operation).toMatchTypeOf < + expectTypeOf(operation).toMatchTypeOf< | 'findFirst' | 'findFirstOrThrow' | 'findUnique' diff --git a/packages/client/tests/functional/interactive-transactions/tests.ts b/packages/client/tests/functional/interactive-transactions/tests.ts index 15edb8190f10..753f3d082684 100644 --- a/packages/client/tests/functional/interactive-transactions/tests.ts +++ b/packages/client/tests/functional/interactive-transactions/tests.ts @@ -1,3 +1,4 @@ +import { faker } from '@faker-js/faker' import { ClientEngineType } from '@prisma/internals' import { copycat } from '@snaplet/copycat' @@ -30,7 +31,8 @@ testMatrix.setupTestSuite( await prisma // @ts-expect-error: Type 'void' is not assignable to type 'Promise' - .$transaction(/* note how there's no `async` here */ (tx) => { + .$transaction( + /* note how there's no `async` here */ (tx) => { console.log('1') console.log(tx) console.log('2') @@ -211,11 +213,77 @@ testMatrix.setupTestSuite( await expect(result).resolves.toHaveLength(2) }) + /** + * If a parent transaction is rolled back, the child transaction should also rollback + * - This is only supported in SQL derived servers + */ + testIf(provider === Providers.POSTGRESQL)('sql: nested rollback', async () => { + const rand1 = Math.floor(Math.random() * 1000) + const rand2 = rand1 + 1 + const email1 = 'user_' + rand1 + '@website.com' + const email2 = 'user_' + rand2 + '@website.com' + const client = prisma + await expect( + client.$transaction(async (tx) => { + await tx.user.create({ + data: { + email: email1, + }, + }) + + await tx.$transaction(async (tx2) => { + await tx2.user.create({ + data: { + email: email2, + }, + }) + }) + + // Abort the outer transaction + throw new Error('Rollback') + }), + ).rejects.toThrow(/Rollback/) + + const result = await prisma.user.findMany({ + where: { + email: { + in: [email1, email2], + }, + }, + }) + + // Both transactions should rollback + expect(result).toHaveLength(0) + }) + + testIf(provider === Providers.POSTGRESQL)('sql: multiple interactive transactions', async () => { + const existingEmail = faker.internet.email() + + await prisma.$transaction(async (tx) => { + await tx.user.create({ data: { email: existingEmail } }) + }) + + await prisma.$transaction(async (tx) => { + await tx.user.create({ data: { email: existingEmail + 1 } }) + }) + + const result = await prisma.user.findMany({ + where: { + email: { + in: [existingEmail, existingEmail + 1], + }, + }, + }) + + // Both transactions should succeed + expect(result).toHaveLength(2) + }) + /** * We don't allow certain methods to be called in a transaction */ test('forbidden', async () => { - const forbidden = ['$connect', '$disconnect', '$on', '$transaction', '$use'] + const forbidden = ['$connect', '$disconnect', '$on', '$use'] expect.assertions(forbidden.length + 1) const result = prisma.$transaction((prisma) => { diff --git a/packages/client/tests/functional/skip/_matrix.ts b/packages/client/tests/functional/skip/_matrix.ts index fd2b0f6ad864..a8bc6494be0c 100644 --- a/packages/client/tests/functional/skip/_matrix.ts +++ b/packages/client/tests/functional/skip/_matrix.ts @@ -1,6 +1,4 @@ import { defineMatrix } from '../_utils/defineMatrix' import { allProviders } from '../_utils/providers' -export default defineMatrix(() => [ - allProviders, -]) +export default defineMatrix(() => [allProviders]) diff --git a/packages/client/tests/functional/strictUndefinedChecks/_matrix.ts b/packages/client/tests/functional/strictUndefinedChecks/_matrix.ts index fd2b0f6ad864..a8bc6494be0c 100644 --- a/packages/client/tests/functional/strictUndefinedChecks/_matrix.ts +++ b/packages/client/tests/functional/strictUndefinedChecks/_matrix.ts @@ -1,6 +1,4 @@ import { defineMatrix } from '../_utils/defineMatrix' import { allProviders } from '../_utils/providers' -export default defineMatrix(() => [ - allProviders, -]) +export default defineMatrix(() => [allProviders]) diff --git a/packages/driver-adapter-utils/src/binder.ts b/packages/driver-adapter-utils/src/binder.ts index d4e922039a14..fa6bbe195c45 100644 --- a/packages/driver-adapter-utils/src/binder.ts +++ b/packages/driver-adapter-utils/src/binder.ts @@ -77,6 +77,7 @@ const bindTransaction = (errorRegistry: ErrorRegistryInternal, transaction: Tran options: transaction.options, queryRaw: wrapAsync(errorRegistry, transaction.queryRaw.bind(transaction)), executeRaw: wrapAsync(errorRegistry, transaction.executeRaw.bind(transaction)), + begin: wrapAsync(errorRegistry, transaction.begin.bind(transaction)), commit: wrapAsync(errorRegistry, transaction.commit.bind(transaction)), rollback: wrapAsync(errorRegistry, transaction.rollback.bind(transaction)), } diff --git a/packages/driver-adapter-utils/src/types.ts b/packages/driver-adapter-utils/src/types.ts index 171844b9b920..1fc00610e44a 100644 --- a/packages/driver-adapter-utils/src/types.ts +++ b/packages/driver-adapter-utils/src/types.ts @@ -177,6 +177,10 @@ export interface Transaction extends Queryable { * Transaction options. */ readonly options: TransactionOptions + /** + * Begin the transaction. + */ + begin(): Promise> /** * Commit the transaction. */ diff --git a/packages/engines/package.json b/packages/engines/package.json index b6418f324432..5b579450c3a3 100644 --- a/packages/engines/package.json +++ b/packages/engines/package.json @@ -22,7 +22,7 @@ }, "dependencies": { "@prisma/debug": "workspace:*", - "@prisma/engines-version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", + "@prisma/engines-version": "6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7", "@prisma/fetch-engine": "workspace:*", "@prisma/get-platform": "workspace:*" }, @@ -39,4 +39,4 @@ "scripts" ], "sideEffects": false -} +} \ No newline at end of file diff --git a/packages/fetch-engine/package.json b/packages/fetch-engine/package.json index f1cc29a52034..413d6a3874fd 100644 --- a/packages/fetch-engine/package.json +++ b/packages/fetch-engine/package.json @@ -43,7 +43,7 @@ }, "dependencies": { "@prisma/debug": "workspace:*", - "@prisma/engines-version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", + "@prisma/engines-version": "6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7", "@prisma/get-platform": "workspace:*" }, "scripts": { @@ -57,4 +57,4 @@ "dist" ], "sideEffects": false -} +} \ No newline at end of file diff --git a/packages/internals/package.json b/packages/internals/package.json index 9ae63f05f891..c707cf77c641 100644 --- a/packages/internals/package.json +++ b/packages/internals/package.json @@ -85,10 +85,10 @@ "@prisma/fetch-engine": "workspace:*", "@prisma/generator-helper": "workspace:*", "@prisma/get-platform": "workspace:*", - "@prisma/prisma-schema-wasm": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", + "@prisma/prisma-schema-wasm": "6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7", "@prisma/schema-files-loader": "workspace:*", "arg": "5.0.2", "prompts": "2.4.2" }, "sideEffects": false -} +} \ No newline at end of file diff --git a/packages/migrate/package.json b/packages/migrate/package.json index a994cde5775d..acafc9293054 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -56,7 +56,7 @@ }, "dependencies": { "@prisma/debug": "workspace:*", - "@prisma/engines-version": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", + "@prisma/engines-version": "6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7", "@prisma/generator-helper": "workspace:*", "@prisma/get-platform": "workspace:*", "@prisma/internals": "workspace:*", @@ -74,4 +74,4 @@ "dist" ], "sideEffects": false -} +} \ No newline at end of file diff --git a/packages/schema-files-loader/package.json b/packages/schema-files-loader/package.json index 44fcf8982121..e84ffb73f69a 100644 --- a/packages/schema-files-loader/package.json +++ b/packages/schema-files-loader/package.json @@ -22,10 +22,10 @@ ], "sideEffects": false, "dependencies": { - "@prisma/prisma-schema-wasm": "6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69", + "@prisma/prisma-schema-wasm": "6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7", "fs-extra": "11.1.1" }, "devDependencies": { "jest": "29.7.0" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5fff35356c4a..f749bd91574f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -622,8 +622,8 @@ importers: specifier: workspace:* version: link:../engines '@prisma/engines-version': - specifier: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 - version: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 + specifier: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 + version: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 '@prisma/fetch-engine': specifier: workspace:* version: link:../fetch-engine @@ -649,8 +649,8 @@ importers: specifier: workspace:* version: link:../pg-worker '@prisma/query-engine-wasm': - specifier: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 - version: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 + specifier: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 + version: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 '@snaplet/copycat': specifier: 0.17.3 version: 0.17.3 @@ -868,8 +868,8 @@ importers: specifier: workspace:* version: link:../debug '@prisma/engines-version': - specifier: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 - version: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 + specifier: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 + version: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 '@prisma/fetch-engine': specifier: workspace:* version: link:../fetch-engine @@ -905,8 +905,8 @@ importers: specifier: workspace:* version: link:../debug '@prisma/engines-version': - specifier: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 - version: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 + specifier: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 + version: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 '@prisma/get-platform': specifier: workspace:* version: link:../get-platform @@ -1098,7 +1098,7 @@ importers: dependencies: '@opentelemetry/instrumentation': specifier: ^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 - version: 0.55.0(@opentelemetry/api@1.9.0) + version: 0.56.0(@opentelemetry/api@1.9.0) devDependencies: '@opentelemetry/api': specifier: 1.9.0 @@ -1227,8 +1227,8 @@ importers: specifier: workspace:* version: link:../get-platform '@prisma/prisma-schema-wasm': - specifier: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 - version: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 + specifier: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 + version: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 '@prisma/schema-files-loader': specifier: workspace:* version: link:../schema-files-loader @@ -1399,8 +1399,8 @@ importers: specifier: workspace:* version: link:../debug '@prisma/engines-version': - specifier: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 - version: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 + specifier: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 + version: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 '@prisma/generator-helper': specifier: workspace:* version: link:../generator-helper @@ -1551,8 +1551,8 @@ importers: packages/schema-files-loader: dependencies: '@prisma/prisma-schema-wasm': - specifier: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 - version: 6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69 + specifier: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 + version: 6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7 fs-extra: specifier: 11.1.1 version: 11.1.1 @@ -2644,10 +2644,6 @@ packages: engines: {node: '>=10'} deprecated: This functionality has been moved to @npmcli/fs - '@opentelemetry/api-logs@0.55.0': - resolution: {integrity: sha512-3cpa+qI45VHYcA5c0bHM6VHo9gicv3p5mlLHNG3rLyjQU8b7e0st1rWtrUn3JbZ3DwwCfhKop4eQ9UuYlC6Pkg==} - engines: {node: '>=14'} - '@opentelemetry/api-logs@0.56.0': resolution: {integrity: sha512-Wr39+94UNNG3Ei9nv3pHd4AJ63gq5nSemMRpCd8fPwDL9rN3vK26lzxfH27mw16XzOSO+TpyQwBAMaLxaPWG0g==} engines: {node: '>=14'} @@ -2668,12 +2664,6 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/instrumentation@0.55.0': - resolution: {integrity: sha512-YDCMlaQRZkziLL3t6TONRgmmGxDx6MyQDXRD0dknkkgUZtOK5+8MWft1OXzmNu6XfBOdT12MKN5rz+jHUkafKQ==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation@0.56.0': resolution: {integrity: sha512-2KkGBKE+FPXU1F0zKww+stnlUxUTlBvLCiWdP63Z9sqXYeNI/ziNzsxAp4LAdUcTQmXjw1IWgvm5CAb/BHy99w==} engines: {node: '>=14'} @@ -2755,19 +2745,19 @@ packages: resolution: {integrity: sha512-t2XdOfrVgcF7AW791FtdPS27NyNqcE1SpoXgk3HpziousvUMsJi4Q6NL3JyOBpsMOrvk94749o8yyonvX5quPw==} engines: {node: '>=16'} - '@prisma/engines-version@6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69': - resolution: {integrity: sha512-7tw1qs/9GWSX6qbZs4He09TOTg1ff3gYsB3ubaVNN0Pp1zLm9NC5C5MZShtkz7TyQjx7blhpknB7HwEhlG+PrQ==} + '@prisma/engines-version@6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7': + resolution: {integrity: sha512-IFQDanNOm3q63+F3x6JdEyC70f1wTs2KGqdLtDBamgMCmev5nxaNSGPvkC49IgH8i1HUATV3+RSoj28hXClHSA==} '@prisma/mini-proxy@0.9.5': resolution: {integrity: sha512-0MLaxUjGbZGJGx9fIy1kbAH65hcZHCP6yes8xCTVcWumo64uzAxuvZdf5l1EPCZrDnj+iZNAy0U364oOAN+gXQ==} engines: {node: '>=16'} hasBin: true - '@prisma/prisma-schema-wasm@6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69': - resolution: {integrity: sha512-3N7czqak9gnE0NnzIaCjAgfA974QVII2MgT5uMe4NR3KmdrAEwtKRbkcdi8m3V2dXUPFpFXoCWjHiyC/3Qvg4A==} + '@prisma/prisma-schema-wasm@6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7': + resolution: {integrity: sha512-DGGj/SO+VeX73RM6zynkd2witaTfQlcNfAiLiIDgl+i3W8IeOTigEtUCmPEHcgisfKHKwLx1cMf8QkI6QRet0g==} - '@prisma/query-engine-wasm@6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69': - resolution: {integrity: sha512-6eD5jX2u4uh+eudmiOyjYJR1j+2wQuVtTx+B7KE/H270LmNrpsVdRbSc1xDANzghxn2vML54wTbP/TY1Qgy0WQ==} + '@prisma/query-engine-wasm@6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7': + resolution: {integrity: sha512-yCBcivkmzyF6xM//l46yb7Sun15u8d5Nht7NLVQgLNFhqbeyiLAs/3TfUhuD60CLhuHYtwfzFTFXE12CTOBMYw==} '@prisma/studio-common@0.503.0': resolution: {integrity: sha512-YLI4uf8hNIg5RaX7lPPSH6qLeSknygMB/2aEqfnWA1kWCHvkTkYEtSoSXLEAIbVc0LWWDawCcDPxFH12v6oSnA==} @@ -6559,7 +6549,7 @@ packages: engines: {node: '>=0.6.19'} string-hash@1.1.3: - resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + resolution: {integrity: sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=} string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} @@ -8406,10 +8396,6 @@ snapshots: rimraf: 3.0.2 optional: true - '@opentelemetry/api-logs@0.55.0': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs@0.56.0': dependencies: '@opentelemetry/api': 1.9.0 @@ -8425,18 +8411,6 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/instrumentation@0.55.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.55.0 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.8.1 - require-in-the-middle: 7.2.0 - semver: 7.6.3 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color - '@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -8501,13 +8475,13 @@ snapshots: '@planetscale/database@1.18.0': {} - '@prisma/engines-version@6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69': {} + '@prisma/engines-version@6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7': {} '@prisma/mini-proxy@0.9.5': {} - '@prisma/prisma-schema-wasm@6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69': {} + '@prisma/prisma-schema-wasm@6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7': {} - '@prisma/query-engine-wasm@6.2.0-14.4123509d24aa4dede1e864b46351bf2790323b69': {} + '@prisma/query-engine-wasm@6.3.0-2.integration-sql-nested-transactions5-9a074425ccc05b5ec12b88ec141ba5dea21472b7': {} '@prisma/studio-common@0.503.0': dependencies: