@prisma-next/driver-mongo 0.14.0-dev.2 → 0.14.0-dev.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/control.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as DRIVER_INFO, t as MongoDriverImpl } from "./mongo-driver-
|
|
1
|
+
import { r as DRIVER_INFO, t as MongoDriverImpl } from "./mongo-driver-COnwe3-o.mjs";
|
|
2
2
|
import { MongoClient } from "mongodb";
|
|
3
3
|
import { errorRuntime } from "@prisma-next/errors/execution";
|
|
4
4
|
import { redactDatabaseUrl } from "@prisma-next/utils/redact-db-url";
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createMongoDriver, t as MongoDriverImpl } from "./mongo-driver-
|
|
1
|
+
import { n as createMongoDriver, t as MongoDriverImpl } from "./mongo-driver-COnwe3-o.mjs";
|
|
2
2
|
export { MongoDriverImpl, createMongoDriver };
|
|
@@ -3,7 +3,7 @@ import { MongoClient } from "mongodb";
|
|
|
3
3
|
//#region src/core/driver-info.ts
|
|
4
4
|
const DRIVER_INFO = {
|
|
5
5
|
name: "Prisma",
|
|
6
|
-
version: "0.14.0-dev.
|
|
6
|
+
version: "0.14.0-dev.3"
|
|
7
7
|
};
|
|
8
8
|
//#endregion
|
|
9
9
|
//#region src/mongo-driver.ts
|
|
@@ -153,4 +153,4 @@ async function createMongoDriver(uri, dbName) {
|
|
|
153
153
|
//#endregion
|
|
154
154
|
export { createMongoDriver as n, DRIVER_INFO as r, MongoDriverImpl as t };
|
|
155
155
|
|
|
156
|
-
//# sourceMappingURL=mongo-driver-
|
|
156
|
+
//# sourceMappingURL=mongo-driver-COnwe3-o.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongo-driver-Sr4i6NO4.mjs","names":["_exhaustive"],"sources":["../package.json","../src/core/driver-info.ts","../src/mongo-driver.ts"],"sourcesContent":["","import { version } from '../../package.json' with { type: 'json' };\n\nexport const DRIVER_INFO = { name: 'Prisma', version } as const;\n","import type { MongoDriver } from '@prisma-next/mongo-lowering';\nimport type {\n AggregateWireCommand,\n AnyMongoDdlWireCommand,\n AnyMongoDmlWireCommand,\n CollModWireCommand,\n CreateCollectionWireCommand,\n CreateIndexWireCommand,\n DeleteManyResult,\n DeleteManyWireCommand,\n DeleteOneResult,\n DeleteOneWireCommand,\n DropCollectionWireCommand,\n DropIndexWireCommand,\n FindOneAndDeleteWireCommand,\n FindOneAndUpdateWireCommand,\n InsertManyResult,\n InsertManyWireCommand,\n InsertOneResult,\n InsertOneWireCommand,\n UpdateManyResult,\n UpdateManyWireCommand,\n UpdateOneResult,\n UpdateOneWireCommand,\n} from '@prisma-next/mongo-wire';\nimport { type Db, MongoClient } from 'mongodb';\nimport { DRIVER_INFO } from './core/driver-info';\n\nexport class MongoDriverImpl implements MongoDriver {\n protected readonly db: Db;\n protected readonly client: MongoClient | undefined;\n\n protected constructor(db: Db, client: MongoClient | undefined) {\n this.db = db;\n this.client = client;\n }\n\n static async fromConnection(uri: string, dbName: string): Promise<MongoDriverImpl> {\n const client = new MongoClient(uri, { driverInfo: DRIVER_INFO });\n await client.connect();\n return new MongoDriverImpl(client.db(dbName), client);\n }\n\n static fromDb(db: Db): MongoDriverImpl {\n return new MongoDriverImpl(db, undefined);\n }\n\n execute<Row = Record<string, unknown>>(wireCommand: AnyMongoDmlWireCommand): AsyncIterable<Row> {\n switch (wireCommand.kind) {\n case 'insertOne':\n return this.executeInsertOneCommand(wireCommand) as AsyncIterable<Row>;\n case 'updateOne':\n return this.executeUpdateOneCommand(wireCommand) as AsyncIterable<Row>;\n case 'insertMany':\n return this.executeInsertManyCommand(wireCommand) as AsyncIterable<Row>;\n case 'updateMany':\n return this.executeUpdateManyCommand(wireCommand) as AsyncIterable<Row>;\n case 'deleteOne':\n return this.executeDeleteOneCommand(wireCommand) as AsyncIterable<Row>;\n case 'deleteMany':\n return this.executeDeleteManyCommand(wireCommand) as AsyncIterable<Row>;\n case 'findOneAndUpdate':\n return this.executeFindOneAndUpdateCommand(wireCommand) as AsyncIterable<Row>;\n case 'findOneAndDelete':\n return this.executeFindOneAndDeleteCommand(wireCommand) as AsyncIterable<Row>;\n case 'aggregate':\n return this.executeAggregateCommand<Row>(wireCommand);\n // v8 ignore next 4\n default: {\n const _exhaustive: never = wireCommand;\n throw new Error(`Unknown wire command kind: ${(_exhaustive as { kind: string }).kind}`);\n }\n }\n }\n\n async run(wireCommand: AnyMongoDdlWireCommand): Promise<void> {\n switch (wireCommand.kind) {\n case 'createCollection':\n return this.executeCreateCollectionCommand(wireCommand);\n case 'createIndex':\n return this.executeCreateIndexCommand(wireCommand);\n case 'dropCollection':\n return this.executeDropCollectionCommand(wireCommand);\n case 'dropIndex':\n return this.executeDropIndexCommand(wireCommand);\n case 'collMod':\n return this.executeCollModCommand(wireCommand);\n // v8 ignore next 4\n default: {\n const _exhaustive: never = wireCommand;\n throw new Error(`Unknown DDL wire command kind: ${(_exhaustive as { kind: string }).kind}`);\n }\n }\n }\n\n async close(): Promise<void> {\n await this.client?.close();\n }\n\n protected async *executeInsertOneCommand(\n cmd: InsertOneWireCommand,\n ): AsyncIterable<InsertOneResult> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.insertOne(cmd.document);\n yield { insertedId: result.insertedId };\n }\n\n protected async *executeUpdateOneCommand(\n cmd: UpdateOneWireCommand,\n ): AsyncIterable<UpdateOneResult> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.updateOne(cmd.filter, cmd.update, { upsert: cmd.upsert });\n yield {\n matchedCount: result.matchedCount,\n modifiedCount: result.modifiedCount,\n upsertedCount: result.upsertedCount,\n upsertedId: result.upsertedId ?? undefined,\n };\n }\n\n protected async *executeInsertManyCommand(\n cmd: InsertManyWireCommand,\n ): AsyncIterable<InsertManyResult> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.insertMany(cmd.documents as Record<string, unknown>[]);\n const insertedIds = Object.values(result.insertedIds);\n yield { insertedIds, insertedCount: result.insertedCount };\n }\n\n protected async *executeUpdateManyCommand(\n cmd: UpdateManyWireCommand,\n ): AsyncIterable<UpdateManyResult> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.updateMany(cmd.filter, cmd.update, { upsert: cmd.upsert });\n yield {\n matchedCount: result.matchedCount,\n modifiedCount: result.modifiedCount,\n upsertedCount: result.upsertedCount,\n upsertedId: result.upsertedId ?? undefined,\n };\n }\n\n protected async *executeDeleteOneCommand(\n cmd: DeleteOneWireCommand,\n ): AsyncIterable<DeleteOneResult> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.deleteOne(cmd.filter);\n yield { deletedCount: result.deletedCount };\n }\n\n protected async *executeDeleteManyCommand(\n cmd: DeleteManyWireCommand,\n ): AsyncIterable<DeleteManyResult> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.deleteMany(cmd.filter);\n yield { deletedCount: result.deletedCount };\n }\n\n protected async *executeFindOneAndUpdateCommand(\n cmd: FindOneAndUpdateWireCommand,\n ): AsyncIterable<Record<string, unknown>> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.findOneAndUpdate(cmd.filter, cmd.update, {\n upsert: cmd.upsert,\n ...(cmd.returnDocument != null ? { returnDocument: cmd.returnDocument } : {}),\n ...(cmd.sort != null ? { sort: cmd.sort } : {}),\n });\n if (result) {\n yield result as Record<string, unknown>;\n }\n }\n\n protected async *executeFindOneAndDeleteCommand(\n cmd: FindOneAndDeleteWireCommand,\n ): AsyncIterable<Record<string, unknown>> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.findOneAndDelete(cmd.filter, {\n ...(cmd.sort != null ? { sort: cmd.sort } : {}),\n });\n if (result) {\n yield result as Record<string, unknown>;\n }\n }\n\n protected async *executeAggregateCommand<Row>(cmd: AggregateWireCommand): AsyncIterable<Row> {\n const collection = this.db.collection(cmd.collection);\n const cursor = collection.aggregate(cmd.pipeline as Record<string, unknown>[]);\n yield* cursor as AsyncIterable<Row>;\n }\n\n protected async executeCreateCollectionCommand(cmd: CreateCollectionWireCommand): Promise<void> {\n const {\n validator,\n validationLevel,\n validationAction,\n capped,\n size,\n max,\n timeseries,\n collation,\n changeStreamPreAndPostImages,\n clusteredIndex,\n } = cmd;\n await this.db.createCollection(cmd.collection, {\n ...(validator !== undefined ? { validator } : {}),\n ...(validationLevel !== undefined ? { validationLevel } : {}),\n ...(validationAction !== undefined ? { validationAction } : {}),\n ...(capped !== undefined ? { capped } : {}),\n ...(size !== undefined ? { size } : {}),\n ...(max !== undefined ? { max } : {}),\n ...(timeseries !== undefined ? { timeseries } : {}),\n ...(collation !== undefined ? { collation } : {}),\n ...(changeStreamPreAndPostImages !== undefined ? { changeStreamPreAndPostImages } : {}),\n ...(clusteredIndex !== undefined ? { clusteredIndex } : {}),\n });\n }\n\n protected async executeCreateIndexCommand(cmd: CreateIndexWireCommand): Promise<void> {\n const {\n unique,\n sparse,\n expireAfterSeconds,\n partialFilterExpression,\n name,\n wildcardProjection,\n collation,\n weights,\n default_language,\n language_override,\n } = cmd;\n await this.db.collection(cmd.collection).createIndex(cmd.key, {\n ...(unique !== undefined ? { unique } : {}),\n ...(sparse !== undefined ? { sparse } : {}),\n ...(expireAfterSeconds !== undefined ? { expireAfterSeconds } : {}),\n ...(partialFilterExpression !== undefined ? { partialFilterExpression } : {}),\n ...(name !== undefined ? { name } : {}),\n ...(wildcardProjection !== undefined ? { wildcardProjection } : {}),\n ...(collation !== undefined ? { collation } : {}),\n ...(weights !== undefined ? { weights } : {}),\n ...(default_language !== undefined ? { default_language } : {}),\n ...(language_override !== undefined ? { language_override } : {}),\n });\n }\n\n protected async executeDropCollectionCommand(cmd: DropCollectionWireCommand): Promise<void> {\n await this.db.collection(cmd.collection).drop();\n }\n\n protected async executeDropIndexCommand(cmd: DropIndexWireCommand): Promise<void> {\n await this.db.collection(cmd.collection).dropIndex(cmd.name);\n }\n\n protected async executeCollModCommand(cmd: CollModWireCommand): Promise<void> {\n const { validator, validationLevel, validationAction, changeStreamPreAndPostImages } = cmd;\n await this.db.command({\n collMod: cmd.collection,\n ...(validator !== undefined ? { validator } : {}),\n ...(validationLevel !== undefined ? { validationLevel } : {}),\n ...(validationAction !== undefined ? { validationAction } : {}),\n ...(changeStreamPreAndPostImages !== undefined ? { changeStreamPreAndPostImages } : {}),\n });\n }\n}\n\nexport async function createMongoDriver(uri: string, dbName: string): Promise<MongoDriver> {\n return MongoDriverImpl.fromConnection(uri, dbName);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mongo-driver-COnwe3-o.mjs","names":["_exhaustive"],"sources":["../package.json","../src/core/driver-info.ts","../src/mongo-driver.ts"],"sourcesContent":["","import { version } from '../../package.json' with { type: 'json' };\n\nexport const DRIVER_INFO = { name: 'Prisma', version } as const;\n","import type { MongoDriver } from '@prisma-next/mongo-lowering';\nimport type {\n AggregateWireCommand,\n AnyMongoDdlWireCommand,\n AnyMongoDmlWireCommand,\n CollModWireCommand,\n CreateCollectionWireCommand,\n CreateIndexWireCommand,\n DeleteManyResult,\n DeleteManyWireCommand,\n DeleteOneResult,\n DeleteOneWireCommand,\n DropCollectionWireCommand,\n DropIndexWireCommand,\n FindOneAndDeleteWireCommand,\n FindOneAndUpdateWireCommand,\n InsertManyResult,\n InsertManyWireCommand,\n InsertOneResult,\n InsertOneWireCommand,\n UpdateManyResult,\n UpdateManyWireCommand,\n UpdateOneResult,\n UpdateOneWireCommand,\n} from '@prisma-next/mongo-wire';\nimport { type Db, MongoClient } from 'mongodb';\nimport { DRIVER_INFO } from './core/driver-info';\n\nexport class MongoDriverImpl implements MongoDriver {\n protected readonly db: Db;\n protected readonly client: MongoClient | undefined;\n\n protected constructor(db: Db, client: MongoClient | undefined) {\n this.db = db;\n this.client = client;\n }\n\n static async fromConnection(uri: string, dbName: string): Promise<MongoDriverImpl> {\n const client = new MongoClient(uri, { driverInfo: DRIVER_INFO });\n await client.connect();\n return new MongoDriverImpl(client.db(dbName), client);\n }\n\n static fromDb(db: Db): MongoDriverImpl {\n return new MongoDriverImpl(db, undefined);\n }\n\n execute<Row = Record<string, unknown>>(wireCommand: AnyMongoDmlWireCommand): AsyncIterable<Row> {\n switch (wireCommand.kind) {\n case 'insertOne':\n return this.executeInsertOneCommand(wireCommand) as AsyncIterable<Row>;\n case 'updateOne':\n return this.executeUpdateOneCommand(wireCommand) as AsyncIterable<Row>;\n case 'insertMany':\n return this.executeInsertManyCommand(wireCommand) as AsyncIterable<Row>;\n case 'updateMany':\n return this.executeUpdateManyCommand(wireCommand) as AsyncIterable<Row>;\n case 'deleteOne':\n return this.executeDeleteOneCommand(wireCommand) as AsyncIterable<Row>;\n case 'deleteMany':\n return this.executeDeleteManyCommand(wireCommand) as AsyncIterable<Row>;\n case 'findOneAndUpdate':\n return this.executeFindOneAndUpdateCommand(wireCommand) as AsyncIterable<Row>;\n case 'findOneAndDelete':\n return this.executeFindOneAndDeleteCommand(wireCommand) as AsyncIterable<Row>;\n case 'aggregate':\n return this.executeAggregateCommand<Row>(wireCommand);\n // v8 ignore next 4\n default: {\n const _exhaustive: never = wireCommand;\n throw new Error(`Unknown wire command kind: ${(_exhaustive as { kind: string }).kind}`);\n }\n }\n }\n\n async run(wireCommand: AnyMongoDdlWireCommand): Promise<void> {\n switch (wireCommand.kind) {\n case 'createCollection':\n return this.executeCreateCollectionCommand(wireCommand);\n case 'createIndex':\n return this.executeCreateIndexCommand(wireCommand);\n case 'dropCollection':\n return this.executeDropCollectionCommand(wireCommand);\n case 'dropIndex':\n return this.executeDropIndexCommand(wireCommand);\n case 'collMod':\n return this.executeCollModCommand(wireCommand);\n // v8 ignore next 4\n default: {\n const _exhaustive: never = wireCommand;\n throw new Error(`Unknown DDL wire command kind: ${(_exhaustive as { kind: string }).kind}`);\n }\n }\n }\n\n async close(): Promise<void> {\n await this.client?.close();\n }\n\n protected async *executeInsertOneCommand(\n cmd: InsertOneWireCommand,\n ): AsyncIterable<InsertOneResult> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.insertOne(cmd.document);\n yield { insertedId: result.insertedId };\n }\n\n protected async *executeUpdateOneCommand(\n cmd: UpdateOneWireCommand,\n ): AsyncIterable<UpdateOneResult> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.updateOne(cmd.filter, cmd.update, { upsert: cmd.upsert });\n yield {\n matchedCount: result.matchedCount,\n modifiedCount: result.modifiedCount,\n upsertedCount: result.upsertedCount,\n upsertedId: result.upsertedId ?? undefined,\n };\n }\n\n protected async *executeInsertManyCommand(\n cmd: InsertManyWireCommand,\n ): AsyncIterable<InsertManyResult> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.insertMany(cmd.documents as Record<string, unknown>[]);\n const insertedIds = Object.values(result.insertedIds);\n yield { insertedIds, insertedCount: result.insertedCount };\n }\n\n protected async *executeUpdateManyCommand(\n cmd: UpdateManyWireCommand,\n ): AsyncIterable<UpdateManyResult> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.updateMany(cmd.filter, cmd.update, { upsert: cmd.upsert });\n yield {\n matchedCount: result.matchedCount,\n modifiedCount: result.modifiedCount,\n upsertedCount: result.upsertedCount,\n upsertedId: result.upsertedId ?? undefined,\n };\n }\n\n protected async *executeDeleteOneCommand(\n cmd: DeleteOneWireCommand,\n ): AsyncIterable<DeleteOneResult> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.deleteOne(cmd.filter);\n yield { deletedCount: result.deletedCount };\n }\n\n protected async *executeDeleteManyCommand(\n cmd: DeleteManyWireCommand,\n ): AsyncIterable<DeleteManyResult> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.deleteMany(cmd.filter);\n yield { deletedCount: result.deletedCount };\n }\n\n protected async *executeFindOneAndUpdateCommand(\n cmd: FindOneAndUpdateWireCommand,\n ): AsyncIterable<Record<string, unknown>> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.findOneAndUpdate(cmd.filter, cmd.update, {\n upsert: cmd.upsert,\n ...(cmd.returnDocument != null ? { returnDocument: cmd.returnDocument } : {}),\n ...(cmd.sort != null ? { sort: cmd.sort } : {}),\n });\n if (result) {\n yield result as Record<string, unknown>;\n }\n }\n\n protected async *executeFindOneAndDeleteCommand(\n cmd: FindOneAndDeleteWireCommand,\n ): AsyncIterable<Record<string, unknown>> {\n const collection = this.db.collection(cmd.collection);\n const result = await collection.findOneAndDelete(cmd.filter, {\n ...(cmd.sort != null ? { sort: cmd.sort } : {}),\n });\n if (result) {\n yield result as Record<string, unknown>;\n }\n }\n\n protected async *executeAggregateCommand<Row>(cmd: AggregateWireCommand): AsyncIterable<Row> {\n const collection = this.db.collection(cmd.collection);\n const cursor = collection.aggregate(cmd.pipeline as Record<string, unknown>[]);\n yield* cursor as AsyncIterable<Row>;\n }\n\n protected async executeCreateCollectionCommand(cmd: CreateCollectionWireCommand): Promise<void> {\n const {\n validator,\n validationLevel,\n validationAction,\n capped,\n size,\n max,\n timeseries,\n collation,\n changeStreamPreAndPostImages,\n clusteredIndex,\n } = cmd;\n await this.db.createCollection(cmd.collection, {\n ...(validator !== undefined ? { validator } : {}),\n ...(validationLevel !== undefined ? { validationLevel } : {}),\n ...(validationAction !== undefined ? { validationAction } : {}),\n ...(capped !== undefined ? { capped } : {}),\n ...(size !== undefined ? { size } : {}),\n ...(max !== undefined ? { max } : {}),\n ...(timeseries !== undefined ? { timeseries } : {}),\n ...(collation !== undefined ? { collation } : {}),\n ...(changeStreamPreAndPostImages !== undefined ? { changeStreamPreAndPostImages } : {}),\n ...(clusteredIndex !== undefined ? { clusteredIndex } : {}),\n });\n }\n\n protected async executeCreateIndexCommand(cmd: CreateIndexWireCommand): Promise<void> {\n const {\n unique,\n sparse,\n expireAfterSeconds,\n partialFilterExpression,\n name,\n wildcardProjection,\n collation,\n weights,\n default_language,\n language_override,\n } = cmd;\n await this.db.collection(cmd.collection).createIndex(cmd.key, {\n ...(unique !== undefined ? { unique } : {}),\n ...(sparse !== undefined ? { sparse } : {}),\n ...(expireAfterSeconds !== undefined ? { expireAfterSeconds } : {}),\n ...(partialFilterExpression !== undefined ? { partialFilterExpression } : {}),\n ...(name !== undefined ? { name } : {}),\n ...(wildcardProjection !== undefined ? { wildcardProjection } : {}),\n ...(collation !== undefined ? { collation } : {}),\n ...(weights !== undefined ? { weights } : {}),\n ...(default_language !== undefined ? { default_language } : {}),\n ...(language_override !== undefined ? { language_override } : {}),\n });\n }\n\n protected async executeDropCollectionCommand(cmd: DropCollectionWireCommand): Promise<void> {\n await this.db.collection(cmd.collection).drop();\n }\n\n protected async executeDropIndexCommand(cmd: DropIndexWireCommand): Promise<void> {\n await this.db.collection(cmd.collection).dropIndex(cmd.name);\n }\n\n protected async executeCollModCommand(cmd: CollModWireCommand): Promise<void> {\n const { validator, validationLevel, validationAction, changeStreamPreAndPostImages } = cmd;\n await this.db.command({\n collMod: cmd.collection,\n ...(validator !== undefined ? { validator } : {}),\n ...(validationLevel !== undefined ? { validationLevel } : {}),\n ...(validationAction !== undefined ? { validationAction } : {}),\n ...(changeStreamPreAndPostImages !== undefined ? { changeStreamPreAndPostImages } : {}),\n });\n }\n}\n\nexport async function createMongoDriver(uri: string, dbName: string): Promise<MongoDriver> {\n return MongoDriverImpl.fromConnection(uri, dbName);\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma-next/driver-mongo",
|
|
3
|
-
"version": "0.14.0-dev.
|
|
3
|
+
"version": "0.14.0-dev.3",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"description": "MongoDB driver for Prisma Next",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@prisma-next/errors": "0.14.0-dev.
|
|
10
|
-
"@prisma-next/framework-components": "0.14.0-dev.
|
|
11
|
-
"@prisma-next/mongo-lowering": "0.14.0-dev.
|
|
12
|
-
"@prisma-next/mongo-wire": "0.14.0-dev.
|
|
13
|
-
"@prisma-next/utils": "0.14.0-dev.
|
|
9
|
+
"@prisma-next/errors": "0.14.0-dev.3",
|
|
10
|
+
"@prisma-next/framework-components": "0.14.0-dev.3",
|
|
11
|
+
"@prisma-next/mongo-lowering": "0.14.0-dev.3",
|
|
12
|
+
"@prisma-next/mongo-wire": "0.14.0-dev.3",
|
|
13
|
+
"@prisma-next/utils": "0.14.0-dev.3"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"mongodb": "^7.2.0",
|
|
17
|
-
"@prisma-next/test-utils": "0.14.0-dev.
|
|
18
|
-
"@prisma-next/tsconfig": "0.14.0-dev.
|
|
19
|
-
"@prisma-next/tsdown": "0.14.0-dev.
|
|
17
|
+
"@prisma-next/test-utils": "0.14.0-dev.3",
|
|
18
|
+
"@prisma-next/tsconfig": "0.14.0-dev.3",
|
|
19
|
+
"@prisma-next/tsdown": "0.14.0-dev.3",
|
|
20
20
|
"mongodb-memory-server": "11.2.0",
|
|
21
21
|
"tsdown": "0.22.1",
|
|
22
22
|
"typescript": "5.9.3",
|