@farming-labs/orm-mongo 0.0.5

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/index.cjs ADDED
@@ -0,0 +1,278 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ createMongoDriver: () => createMongoDriver
24
+ });
25
+ module.exports = __toCommonJS(index_exports);
26
+ var import_orm = require("@farming-labs/orm");
27
+ var import_orm_mongoose = require("@farming-labs/orm-mongoose");
28
+ var MongoExec = class {
29
+ constructor(run) {
30
+ this.run = run;
31
+ }
32
+ currentSession;
33
+ session(session) {
34
+ this.currentSession = session;
35
+ return this;
36
+ }
37
+ exec() {
38
+ return this.run(this.currentSession);
39
+ }
40
+ };
41
+ var MongoQuery = class {
42
+ constructor(run) {
43
+ this.run = run;
44
+ }
45
+ currentSession;
46
+ sortOrder;
47
+ skipValue;
48
+ limitValue;
49
+ sort(sort) {
50
+ this.sortOrder = sort;
51
+ return this;
52
+ }
53
+ skip(value) {
54
+ this.skipValue = value;
55
+ return this;
56
+ }
57
+ limit(value) {
58
+ this.limitValue = value;
59
+ return this;
60
+ }
61
+ session(session) {
62
+ this.currentSession = session;
63
+ return this;
64
+ }
65
+ lean() {
66
+ return this;
67
+ }
68
+ exec() {
69
+ return this.run({
70
+ session: this.currentSession,
71
+ sort: this.sortOrder,
72
+ skip: this.skipValue,
73
+ limit: this.limitValue
74
+ });
75
+ }
76
+ };
77
+ function normalizeFindOneResult(result) {
78
+ if (result && typeof result === "object" && "value" in result) {
79
+ return result.value ?? null;
80
+ }
81
+ return result ?? null;
82
+ }
83
+ function resolveCollections(schema, config) {
84
+ const manifest = (0, import_orm.createManifest)(schema);
85
+ const collections = {};
86
+ for (const modelName of Object.keys(schema.models)) {
87
+ const collection = config.collections?.[modelName] ?? config.db?.collection(manifest.models[modelName].table);
88
+ if (!collection) {
89
+ throw new Error(
90
+ `No MongoDB collection was provided for schema model "${String(modelName)}". Pass "collections" or "db".`
91
+ );
92
+ }
93
+ collections[modelName] = collection;
94
+ }
95
+ return collections;
96
+ }
97
+ function adaptCollection(collection) {
98
+ return {
99
+ find(filter) {
100
+ return new MongoQuery(async ({ session, sort, skip, limit }) => {
101
+ let cursor = collection.find(filter, session ? { session } : void 0);
102
+ if (sort) cursor = cursor.sort(sort);
103
+ if (skip !== void 0) cursor = cursor.skip(skip);
104
+ if (limit !== void 0) cursor = cursor.limit(limit);
105
+ return cursor.toArray();
106
+ });
107
+ },
108
+ findOne(filter) {
109
+ return new MongoQuery(async ({ session, sort, skip, limit }) => {
110
+ if (!sort && skip === void 0 && limit === void 0) {
111
+ return collection.findOne(filter, session ? { session } : void 0);
112
+ }
113
+ let cursor = collection.find(filter, session ? { session } : void 0);
114
+ if (sort) cursor = cursor.sort(sort);
115
+ if (skip !== void 0) cursor = cursor.skip(skip);
116
+ cursor = cursor.limit(limit ?? 1);
117
+ const rows = await cursor.toArray();
118
+ return rows[0] ?? null;
119
+ });
120
+ },
121
+ countDocuments(filter) {
122
+ return new MongoExec(
123
+ (session) => collection.countDocuments(filter, session ? { session } : void 0)
124
+ );
125
+ },
126
+ async create(doc, options) {
127
+ if (Array.isArray(doc)) {
128
+ if (doc.length === 0) return [];
129
+ if (collection.insertMany) {
130
+ const result2 = await collection.insertMany(
131
+ doc,
132
+ options?.session ? { session: options.session } : void 0
133
+ );
134
+ const insertedIds = result2 && typeof result2 === "object" && "insertedIds" in result2 && result2.insertedIds && typeof result2.insertedIds === "object" ? result2.insertedIds : void 0;
135
+ return doc.map((entry, index) => {
136
+ const insertedId = insertedIds?.[index];
137
+ if (entry._id === void 0 && insertedId !== void 0) {
138
+ return {
139
+ ...entry,
140
+ _id: insertedId
141
+ };
142
+ }
143
+ return entry;
144
+ });
145
+ }
146
+ const created = [];
147
+ for (const entry of doc) {
148
+ created.push(await this.create(entry, options));
149
+ }
150
+ return created;
151
+ }
152
+ const result = await collection.insertOne(
153
+ doc,
154
+ options?.session ? { session: options.session } : void 0
155
+ );
156
+ if (doc._id === void 0 && result?.insertedId !== void 0) {
157
+ return {
158
+ ...doc,
159
+ _id: result.insertedId
160
+ };
161
+ }
162
+ return doc;
163
+ },
164
+ async insertMany(docs, options) {
165
+ if (collection.insertMany) {
166
+ await collection.insertMany(
167
+ docs,
168
+ options?.session ? { session: options.session } : void 0
169
+ );
170
+ return docs;
171
+ }
172
+ for (const doc of docs) {
173
+ await collection.insertOne(
174
+ doc,
175
+ options?.session ? { session: options.session } : void 0
176
+ );
177
+ }
178
+ return docs;
179
+ },
180
+ updateMany(filter, update, options) {
181
+ return new MongoExec(
182
+ (session) => collection.updateMany(filter, update, {
183
+ session: options?.session ?? session
184
+ })
185
+ );
186
+ },
187
+ findOneAndUpdate(filter, update, options) {
188
+ return new MongoQuery(async ({ session }) => {
189
+ const result = await collection.findOneAndUpdate(filter, update, {
190
+ upsert: options?.upsert,
191
+ returnDocument: options?.returnDocument ?? (options?.new ? "after" : "before"),
192
+ session: options?.session ?? session
193
+ });
194
+ return normalizeFindOneResult(result);
195
+ });
196
+ },
197
+ findOneAndDelete(filter, options) {
198
+ return new MongoQuery(async ({ session }) => {
199
+ const result = await collection.findOneAndDelete(filter, {
200
+ session: options?.session ?? session
201
+ });
202
+ return normalizeFindOneResult(result);
203
+ });
204
+ },
205
+ deleteMany(filter, options) {
206
+ return new MongoExec(
207
+ (session) => collection.deleteMany(filter, {
208
+ session: options?.session ?? session
209
+ })
210
+ );
211
+ }
212
+ };
213
+ }
214
+ function createMongoDriver(config) {
215
+ const delegateCache = /* @__PURE__ */ new WeakMap();
216
+ function getDelegate(schema) {
217
+ const cached = delegateCache.get(schema);
218
+ if (cached) return cached;
219
+ const collections = resolveCollections(schema, config);
220
+ const models = Object.fromEntries(
221
+ Object.entries(collections).map(([modelName, collection]) => [
222
+ modelName,
223
+ adaptCollection(collection)
224
+ ])
225
+ );
226
+ const driver = (0, import_orm_mongoose.createMongooseDriver)({
227
+ models,
228
+ connection: config.client,
229
+ startSession: config.startSession,
230
+ transforms: config.transforms
231
+ });
232
+ delegateCache.set(schema, driver);
233
+ return driver;
234
+ }
235
+ return {
236
+ findMany(schema, model, args) {
237
+ return getDelegate(schema).findMany(schema, model, args);
238
+ },
239
+ findFirst(schema, model, args) {
240
+ return getDelegate(schema).findFirst(schema, model, args);
241
+ },
242
+ findUnique(schema, model, args) {
243
+ return getDelegate(schema).findUnique(schema, model, args);
244
+ },
245
+ count(schema, model, args) {
246
+ return getDelegate(schema).count(schema, model, args);
247
+ },
248
+ create(schema, model, args) {
249
+ return getDelegate(schema).create(schema, model, args);
250
+ },
251
+ createMany(schema, model, args) {
252
+ return getDelegate(schema).createMany(schema, model, args);
253
+ },
254
+ update(schema, model, args) {
255
+ return getDelegate(schema).update(schema, model, args);
256
+ },
257
+ updateMany(schema, model, args) {
258
+ return getDelegate(schema).updateMany(schema, model, args);
259
+ },
260
+ upsert(schema, model, args) {
261
+ return getDelegate(schema).upsert(schema, model, args);
262
+ },
263
+ delete(schema, model, args) {
264
+ return getDelegate(schema).delete(schema, model, args);
265
+ },
266
+ deleteMany(schema, model, args) {
267
+ return getDelegate(schema).deleteMany(schema, model, args);
268
+ },
269
+ transaction(schema, run) {
270
+ return getDelegate(schema).transaction(schema, run);
271
+ }
272
+ };
273
+ }
274
+ // Annotate the CommonJS export names for ESM import in node:
275
+ 0 && (module.exports = {
276
+ createMongoDriver
277
+ });
278
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createManifest, type OrmDriver, type SchemaDefinition } from \"@farming-labs/orm\";\nimport type { ModelName } from \"@farming-labs/orm\";\nimport {\n createMongooseDriver,\n type MongooseDriverConfig,\n type MongooseExecLike,\n type MongooseModelLike,\n type MongooseQueryLike,\n type MongooseSessionLike,\n type MongooseSessionSourceLike,\n} from \"@farming-labs/orm-mongoose\";\n\ntype MongoRow = Record<string, unknown>;\ntype MongoSort = Record<string, 1 | -1>;\n\nexport type MongoSessionLike = MongooseSessionLike;\nexport type MongoSessionSourceLike = MongooseSessionSourceLike;\n\nexport type MongoCursorLike<TResult = MongoRow> = {\n sort(sort: MongoSort): MongoCursorLike<TResult>;\n skip(value: number): MongoCursorLike<TResult>;\n limit(value: number): MongoCursorLike<TResult>;\n toArray(): Promise<TResult[]>;\n};\n\nexport type MongoCollectionLike = {\n collectionName?: string;\n find(filter: Record<string, unknown>, options?: { session?: MongoSessionLike }): MongoCursorLike;\n findOne(\n filter: Record<string, unknown>,\n options?: { session?: MongoSessionLike },\n ): Promise<MongoRow | null>;\n countDocuments(\n filter: Record<string, unknown>,\n options?: { session?: MongoSessionLike },\n ): Promise<number>;\n insertOne(\n doc: MongoRow,\n options?: { session?: MongoSessionLike },\n ): Promise<{ insertedId?: unknown }>;\n insertMany?(\n docs: MongoRow[],\n options?: { session?: MongoSessionLike },\n ): Promise<{ insertedIds?: Record<number, unknown> } | unknown>;\n updateMany(\n filter: Record<string, unknown>,\n update: { $set: MongoRow },\n options?: { session?: MongoSessionLike },\n ): Promise<{ modifiedCount?: number; matchedCount?: number }>;\n findOneAndUpdate(\n filter: Record<string, unknown>,\n update: { $set?: MongoRow; $setOnInsert?: MongoRow },\n options?: {\n upsert?: boolean;\n returnDocument?: \"after\" | \"before\";\n session?: MongoSessionLike;\n },\n ): Promise<MongoRow | null | { value: MongoRow | null }>;\n findOneAndDelete(\n filter: Record<string, unknown>,\n options?: { session?: MongoSessionLike },\n ): Promise<MongoRow | null | { value: MongoRow | null }>;\n deleteMany(\n filter: Record<string, unknown>,\n options?: { session?: MongoSessionLike },\n ): Promise<{ deletedCount?: number }>;\n};\n\nexport type MongoDbLike = {\n collection(name: string): MongoCollectionLike;\n};\n\nexport type MongoCollectionMap<TSchema extends SchemaDefinition<any>> = Partial<\n Record<ModelName<TSchema>, MongoCollectionLike>\n>;\n\nexport type MongoDriverConfig<TSchema extends SchemaDefinition<any>> = {\n collections?: MongoCollectionMap<TSchema>;\n db?: MongoDbLike;\n client?: MongoSessionSourceLike;\n startSession?: () => Promise<MongoSessionLike>;\n transforms?: MongooseDriverConfig<TSchema>[\"transforms\"];\n};\n\nclass MongoExec<TResult> implements MongooseExecLike<TResult> {\n private currentSession?: MongoSessionLike;\n\n constructor(private readonly run: (session?: MongoSessionLike) => Promise<TResult>) {}\n\n session(session: MongoSessionLike) {\n this.currentSession = session;\n return this;\n }\n\n exec() {\n return this.run(this.currentSession);\n }\n}\n\nclass MongoQuery<TResult> implements MongooseQueryLike<TResult> {\n private currentSession?: MongoSessionLike;\n private sortOrder?: MongoSort;\n private skipValue?: number;\n private limitValue?: number;\n\n constructor(\n private readonly run: (input: {\n session?: MongoSessionLike;\n sort?: MongoSort;\n skip?: number;\n limit?: number;\n }) => Promise<TResult>,\n ) {}\n\n sort(sort: MongoSort) {\n this.sortOrder = sort;\n return this;\n }\n\n skip(value: number) {\n this.skipValue = value;\n return this;\n }\n\n limit(value: number) {\n this.limitValue = value;\n return this;\n }\n\n session(session: MongoSessionLike) {\n this.currentSession = session;\n return this;\n }\n\n lean() {\n return this;\n }\n\n exec() {\n return this.run({\n session: this.currentSession,\n sort: this.sortOrder,\n skip: this.skipValue,\n limit: this.limitValue,\n });\n }\n}\n\nfunction normalizeFindOneResult(result: MongoRow | null | { value: MongoRow | null }) {\n if (result && typeof result === \"object\" && \"value\" in result) {\n return result.value ?? null;\n }\n return result ?? null;\n}\n\nfunction resolveCollections<TSchema extends SchemaDefinition<any>>(\n schema: TSchema,\n config: MongoDriverConfig<TSchema>,\n) {\n const manifest = createManifest(schema);\n const collections = {} as Record<ModelName<TSchema>, MongoCollectionLike>;\n\n for (const modelName of Object.keys(schema.models) as Array<ModelName<TSchema>>) {\n const collection =\n config.collections?.[modelName] ?? config.db?.collection(manifest.models[modelName].table);\n\n if (!collection) {\n throw new Error(\n `No MongoDB collection was provided for schema model \"${String(modelName)}\". Pass \"collections\" or \"db\".`,\n );\n }\n\n collections[modelName] = collection;\n }\n\n return collections;\n}\n\nfunction adaptCollection(collection: MongoCollectionLike): MongooseModelLike {\n return {\n find(filter) {\n return new MongoQuery(async ({ session, sort, skip, limit }) => {\n let cursor = collection.find(filter, session ? { session } : undefined);\n if (sort) cursor = cursor.sort(sort);\n if (skip !== undefined) cursor = cursor.skip(skip);\n if (limit !== undefined) cursor = cursor.limit(limit);\n return cursor.toArray();\n });\n },\n findOne(filter) {\n return new MongoQuery(async ({ session, sort, skip, limit }) => {\n if (!sort && skip === undefined && limit === undefined) {\n return collection.findOne(filter, session ? { session } : undefined);\n }\n\n let cursor = collection.find(filter, session ? { session } : undefined);\n if (sort) cursor = cursor.sort(sort);\n if (skip !== undefined) cursor = cursor.skip(skip);\n cursor = cursor.limit(limit ?? 1);\n const rows = await cursor.toArray();\n return rows[0] ?? null;\n });\n },\n countDocuments(filter) {\n return new MongoExec((session) =>\n collection.countDocuments(filter, session ? { session } : undefined),\n );\n },\n async create(doc, options) {\n if (Array.isArray(doc)) {\n if (doc.length === 0) return [];\n\n if (collection.insertMany) {\n const result = await collection.insertMany(\n doc,\n options?.session ? { session: options.session } : undefined,\n );\n const insertedIds =\n result &&\n typeof result === \"object\" &&\n \"insertedIds\" in result &&\n result.insertedIds &&\n typeof result.insertedIds === \"object\"\n ? (result.insertedIds as Record<number, unknown>)\n : undefined;\n\n return doc.map((entry, index) => {\n const insertedId = insertedIds?.[index];\n\n if (entry._id === undefined && insertedId !== undefined) {\n return {\n ...entry,\n _id: insertedId,\n };\n }\n\n return entry;\n });\n }\n\n const created: MongoRow[] = [];\n for (const entry of doc) {\n created.push((await this.create(entry, options)) as MongoRow);\n }\n return created;\n }\n\n const result = await collection.insertOne(\n doc,\n options?.session ? { session: options.session } : undefined,\n );\n if (doc._id === undefined && result?.insertedId !== undefined) {\n return {\n ...doc,\n _id: result.insertedId,\n };\n }\n return doc;\n },\n async insertMany(docs, options) {\n if (collection.insertMany) {\n await collection.insertMany(\n docs,\n options?.session ? { session: options.session } : undefined,\n );\n return docs;\n }\n\n for (const doc of docs) {\n await collection.insertOne(\n doc,\n options?.session ? { session: options.session } : undefined,\n );\n }\n\n return docs;\n },\n updateMany(filter, update, options) {\n return new MongoExec((session) =>\n collection.updateMany(filter, update, {\n session: options?.session ?? session,\n }),\n );\n },\n findOneAndUpdate(filter, update, options) {\n return new MongoQuery<MongoRow | null>(async ({ session }) => {\n const result = await collection.findOneAndUpdate(filter, update, {\n upsert: options?.upsert,\n returnDocument: options?.returnDocument ?? (options?.new ? \"after\" : \"before\"),\n session: options?.session ?? session,\n });\n return normalizeFindOneResult(result) as MongoRow | null;\n });\n },\n findOneAndDelete(filter, options) {\n return new MongoQuery<MongoRow | null>(async ({ session }) => {\n const result = await collection.findOneAndDelete(filter, {\n session: options?.session ?? session,\n });\n return normalizeFindOneResult(result) as MongoRow | null;\n });\n },\n deleteMany(filter, options) {\n return new MongoExec((session) =>\n collection.deleteMany(filter, {\n session: options?.session ?? session,\n }),\n );\n },\n };\n}\n\nexport function createMongoDriver<TSchema extends SchemaDefinition<any>>(\n config: MongoDriverConfig<TSchema>,\n): OrmDriver<TSchema> {\n const delegateCache = new WeakMap<object, OrmDriver<TSchema>>();\n\n function getDelegate(schema: TSchema) {\n const cached = delegateCache.get(schema);\n if (cached) return cached;\n\n const collections = resolveCollections(schema, config);\n const models = Object.fromEntries(\n Object.entries(collections).map(([modelName, collection]) => [\n modelName,\n adaptCollection(collection),\n ]),\n ) as Record<ModelName<TSchema>, MongooseModelLike>;\n\n const driver = createMongooseDriver<TSchema>({\n models,\n connection: config.client,\n startSession: config.startSession,\n transforms: config.transforms,\n });\n delegateCache.set(schema, driver);\n return driver;\n }\n\n return {\n findMany(schema, model, args) {\n return getDelegate(schema).findMany(schema, model, args);\n },\n findFirst(schema, model, args) {\n return getDelegate(schema).findFirst(schema, model, args);\n },\n findUnique(schema, model, args) {\n return getDelegate(schema).findUnique(schema, model, args);\n },\n count(schema, model, args) {\n return getDelegate(schema).count(schema, model, args);\n },\n create(schema, model, args) {\n return getDelegate(schema).create(schema, model, args);\n },\n createMany(schema, model, args) {\n return getDelegate(schema).createMany(schema, model, args);\n },\n update(schema, model, args) {\n return getDelegate(schema).update(schema, model, args);\n },\n updateMany(schema, model, args) {\n return getDelegate(schema).updateMany(schema, model, args);\n },\n upsert(schema, model, args) {\n return getDelegate(schema).upsert(schema, model, args);\n },\n delete(schema, model, args) {\n return getDelegate(schema).delete(schema, model, args);\n },\n deleteMany(schema, model, args) {\n return getDelegate(schema).deleteMany(schema, model, args);\n },\n transaction(schema, run) {\n return getDelegate(schema).transaction(schema, run);\n },\n };\n}\n"],"mappings":"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","names":["result"]}
@@ -0,0 +1,77 @@
1
+ import { SchemaDefinition, ModelName, OrmDriver } from '@farming-labs/orm';
2
+ import { MongooseSessionLike, MongooseSessionSourceLike, MongooseDriverConfig } from '@farming-labs/orm-mongoose';
3
+
4
+ type MongoRow = Record<string, unknown>;
5
+ type MongoSort = Record<string, 1 | -1>;
6
+ type MongoSessionLike = MongooseSessionLike;
7
+ type MongoSessionSourceLike = MongooseSessionSourceLike;
8
+ type MongoCursorLike<TResult = MongoRow> = {
9
+ sort(sort: MongoSort): MongoCursorLike<TResult>;
10
+ skip(value: number): MongoCursorLike<TResult>;
11
+ limit(value: number): MongoCursorLike<TResult>;
12
+ toArray(): Promise<TResult[]>;
13
+ };
14
+ type MongoCollectionLike = {
15
+ collectionName?: string;
16
+ find(filter: Record<string, unknown>, options?: {
17
+ session?: MongoSessionLike;
18
+ }): MongoCursorLike;
19
+ findOne(filter: Record<string, unknown>, options?: {
20
+ session?: MongoSessionLike;
21
+ }): Promise<MongoRow | null>;
22
+ countDocuments(filter: Record<string, unknown>, options?: {
23
+ session?: MongoSessionLike;
24
+ }): Promise<number>;
25
+ insertOne(doc: MongoRow, options?: {
26
+ session?: MongoSessionLike;
27
+ }): Promise<{
28
+ insertedId?: unknown;
29
+ }>;
30
+ insertMany?(docs: MongoRow[], options?: {
31
+ session?: MongoSessionLike;
32
+ }): Promise<{
33
+ insertedIds?: Record<number, unknown>;
34
+ } | unknown>;
35
+ updateMany(filter: Record<string, unknown>, update: {
36
+ $set: MongoRow;
37
+ }, options?: {
38
+ session?: MongoSessionLike;
39
+ }): Promise<{
40
+ modifiedCount?: number;
41
+ matchedCount?: number;
42
+ }>;
43
+ findOneAndUpdate(filter: Record<string, unknown>, update: {
44
+ $set?: MongoRow;
45
+ $setOnInsert?: MongoRow;
46
+ }, options?: {
47
+ upsert?: boolean;
48
+ returnDocument?: "after" | "before";
49
+ session?: MongoSessionLike;
50
+ }): Promise<MongoRow | null | {
51
+ value: MongoRow | null;
52
+ }>;
53
+ findOneAndDelete(filter: Record<string, unknown>, options?: {
54
+ session?: MongoSessionLike;
55
+ }): Promise<MongoRow | null | {
56
+ value: MongoRow | null;
57
+ }>;
58
+ deleteMany(filter: Record<string, unknown>, options?: {
59
+ session?: MongoSessionLike;
60
+ }): Promise<{
61
+ deletedCount?: number;
62
+ }>;
63
+ };
64
+ type MongoDbLike = {
65
+ collection(name: string): MongoCollectionLike;
66
+ };
67
+ type MongoCollectionMap<TSchema extends SchemaDefinition<any>> = Partial<Record<ModelName<TSchema>, MongoCollectionLike>>;
68
+ type MongoDriverConfig<TSchema extends SchemaDefinition<any>> = {
69
+ collections?: MongoCollectionMap<TSchema>;
70
+ db?: MongoDbLike;
71
+ client?: MongoSessionSourceLike;
72
+ startSession?: () => Promise<MongoSessionLike>;
73
+ transforms?: MongooseDriverConfig<TSchema>["transforms"];
74
+ };
75
+ declare function createMongoDriver<TSchema extends SchemaDefinition<any>>(config: MongoDriverConfig<TSchema>): OrmDriver<TSchema>;
76
+
77
+ export { type MongoCollectionLike, type MongoCollectionMap, type MongoCursorLike, type MongoDbLike, type MongoDriverConfig, type MongoSessionLike, type MongoSessionSourceLike, createMongoDriver };
@@ -0,0 +1,77 @@
1
+ import { SchemaDefinition, ModelName, OrmDriver } from '@farming-labs/orm';
2
+ import { MongooseSessionLike, MongooseSessionSourceLike, MongooseDriverConfig } from '@farming-labs/orm-mongoose';
3
+
4
+ type MongoRow = Record<string, unknown>;
5
+ type MongoSort = Record<string, 1 | -1>;
6
+ type MongoSessionLike = MongooseSessionLike;
7
+ type MongoSessionSourceLike = MongooseSessionSourceLike;
8
+ type MongoCursorLike<TResult = MongoRow> = {
9
+ sort(sort: MongoSort): MongoCursorLike<TResult>;
10
+ skip(value: number): MongoCursorLike<TResult>;
11
+ limit(value: number): MongoCursorLike<TResult>;
12
+ toArray(): Promise<TResult[]>;
13
+ };
14
+ type MongoCollectionLike = {
15
+ collectionName?: string;
16
+ find(filter: Record<string, unknown>, options?: {
17
+ session?: MongoSessionLike;
18
+ }): MongoCursorLike;
19
+ findOne(filter: Record<string, unknown>, options?: {
20
+ session?: MongoSessionLike;
21
+ }): Promise<MongoRow | null>;
22
+ countDocuments(filter: Record<string, unknown>, options?: {
23
+ session?: MongoSessionLike;
24
+ }): Promise<number>;
25
+ insertOne(doc: MongoRow, options?: {
26
+ session?: MongoSessionLike;
27
+ }): Promise<{
28
+ insertedId?: unknown;
29
+ }>;
30
+ insertMany?(docs: MongoRow[], options?: {
31
+ session?: MongoSessionLike;
32
+ }): Promise<{
33
+ insertedIds?: Record<number, unknown>;
34
+ } | unknown>;
35
+ updateMany(filter: Record<string, unknown>, update: {
36
+ $set: MongoRow;
37
+ }, options?: {
38
+ session?: MongoSessionLike;
39
+ }): Promise<{
40
+ modifiedCount?: number;
41
+ matchedCount?: number;
42
+ }>;
43
+ findOneAndUpdate(filter: Record<string, unknown>, update: {
44
+ $set?: MongoRow;
45
+ $setOnInsert?: MongoRow;
46
+ }, options?: {
47
+ upsert?: boolean;
48
+ returnDocument?: "after" | "before";
49
+ session?: MongoSessionLike;
50
+ }): Promise<MongoRow | null | {
51
+ value: MongoRow | null;
52
+ }>;
53
+ findOneAndDelete(filter: Record<string, unknown>, options?: {
54
+ session?: MongoSessionLike;
55
+ }): Promise<MongoRow | null | {
56
+ value: MongoRow | null;
57
+ }>;
58
+ deleteMany(filter: Record<string, unknown>, options?: {
59
+ session?: MongoSessionLike;
60
+ }): Promise<{
61
+ deletedCount?: number;
62
+ }>;
63
+ };
64
+ type MongoDbLike = {
65
+ collection(name: string): MongoCollectionLike;
66
+ };
67
+ type MongoCollectionMap<TSchema extends SchemaDefinition<any>> = Partial<Record<ModelName<TSchema>, MongoCollectionLike>>;
68
+ type MongoDriverConfig<TSchema extends SchemaDefinition<any>> = {
69
+ collections?: MongoCollectionMap<TSchema>;
70
+ db?: MongoDbLike;
71
+ client?: MongoSessionSourceLike;
72
+ startSession?: () => Promise<MongoSessionLike>;
73
+ transforms?: MongooseDriverConfig<TSchema>["transforms"];
74
+ };
75
+ declare function createMongoDriver<TSchema extends SchemaDefinition<any>>(config: MongoDriverConfig<TSchema>): OrmDriver<TSchema>;
76
+
77
+ export { type MongoCollectionLike, type MongoCollectionMap, type MongoCursorLike, type MongoDbLike, type MongoDriverConfig, type MongoSessionLike, type MongoSessionSourceLike, createMongoDriver };
package/dist/index.js ADDED
@@ -0,0 +1,255 @@
1
+ // src/index.ts
2
+ import { createManifest } from "@farming-labs/orm";
3
+ import {
4
+ createMongooseDriver
5
+ } from "@farming-labs/orm-mongoose";
6
+ var MongoExec = class {
7
+ constructor(run) {
8
+ this.run = run;
9
+ }
10
+ currentSession;
11
+ session(session) {
12
+ this.currentSession = session;
13
+ return this;
14
+ }
15
+ exec() {
16
+ return this.run(this.currentSession);
17
+ }
18
+ };
19
+ var MongoQuery = class {
20
+ constructor(run) {
21
+ this.run = run;
22
+ }
23
+ currentSession;
24
+ sortOrder;
25
+ skipValue;
26
+ limitValue;
27
+ sort(sort) {
28
+ this.sortOrder = sort;
29
+ return this;
30
+ }
31
+ skip(value) {
32
+ this.skipValue = value;
33
+ return this;
34
+ }
35
+ limit(value) {
36
+ this.limitValue = value;
37
+ return this;
38
+ }
39
+ session(session) {
40
+ this.currentSession = session;
41
+ return this;
42
+ }
43
+ lean() {
44
+ return this;
45
+ }
46
+ exec() {
47
+ return this.run({
48
+ session: this.currentSession,
49
+ sort: this.sortOrder,
50
+ skip: this.skipValue,
51
+ limit: this.limitValue
52
+ });
53
+ }
54
+ };
55
+ function normalizeFindOneResult(result) {
56
+ if (result && typeof result === "object" && "value" in result) {
57
+ return result.value ?? null;
58
+ }
59
+ return result ?? null;
60
+ }
61
+ function resolveCollections(schema, config) {
62
+ const manifest = createManifest(schema);
63
+ const collections = {};
64
+ for (const modelName of Object.keys(schema.models)) {
65
+ const collection = config.collections?.[modelName] ?? config.db?.collection(manifest.models[modelName].table);
66
+ if (!collection) {
67
+ throw new Error(
68
+ `No MongoDB collection was provided for schema model "${String(modelName)}". Pass "collections" or "db".`
69
+ );
70
+ }
71
+ collections[modelName] = collection;
72
+ }
73
+ return collections;
74
+ }
75
+ function adaptCollection(collection) {
76
+ return {
77
+ find(filter) {
78
+ return new MongoQuery(async ({ session, sort, skip, limit }) => {
79
+ let cursor = collection.find(filter, session ? { session } : void 0);
80
+ if (sort) cursor = cursor.sort(sort);
81
+ if (skip !== void 0) cursor = cursor.skip(skip);
82
+ if (limit !== void 0) cursor = cursor.limit(limit);
83
+ return cursor.toArray();
84
+ });
85
+ },
86
+ findOne(filter) {
87
+ return new MongoQuery(async ({ session, sort, skip, limit }) => {
88
+ if (!sort && skip === void 0 && limit === void 0) {
89
+ return collection.findOne(filter, session ? { session } : void 0);
90
+ }
91
+ let cursor = collection.find(filter, session ? { session } : void 0);
92
+ if (sort) cursor = cursor.sort(sort);
93
+ if (skip !== void 0) cursor = cursor.skip(skip);
94
+ cursor = cursor.limit(limit ?? 1);
95
+ const rows = await cursor.toArray();
96
+ return rows[0] ?? null;
97
+ });
98
+ },
99
+ countDocuments(filter) {
100
+ return new MongoExec(
101
+ (session) => collection.countDocuments(filter, session ? { session } : void 0)
102
+ );
103
+ },
104
+ async create(doc, options) {
105
+ if (Array.isArray(doc)) {
106
+ if (doc.length === 0) return [];
107
+ if (collection.insertMany) {
108
+ const result2 = await collection.insertMany(
109
+ doc,
110
+ options?.session ? { session: options.session } : void 0
111
+ );
112
+ const insertedIds = result2 && typeof result2 === "object" && "insertedIds" in result2 && result2.insertedIds && typeof result2.insertedIds === "object" ? result2.insertedIds : void 0;
113
+ return doc.map((entry, index) => {
114
+ const insertedId = insertedIds?.[index];
115
+ if (entry._id === void 0 && insertedId !== void 0) {
116
+ return {
117
+ ...entry,
118
+ _id: insertedId
119
+ };
120
+ }
121
+ return entry;
122
+ });
123
+ }
124
+ const created = [];
125
+ for (const entry of doc) {
126
+ created.push(await this.create(entry, options));
127
+ }
128
+ return created;
129
+ }
130
+ const result = await collection.insertOne(
131
+ doc,
132
+ options?.session ? { session: options.session } : void 0
133
+ );
134
+ if (doc._id === void 0 && result?.insertedId !== void 0) {
135
+ return {
136
+ ...doc,
137
+ _id: result.insertedId
138
+ };
139
+ }
140
+ return doc;
141
+ },
142
+ async insertMany(docs, options) {
143
+ if (collection.insertMany) {
144
+ await collection.insertMany(
145
+ docs,
146
+ options?.session ? { session: options.session } : void 0
147
+ );
148
+ return docs;
149
+ }
150
+ for (const doc of docs) {
151
+ await collection.insertOne(
152
+ doc,
153
+ options?.session ? { session: options.session } : void 0
154
+ );
155
+ }
156
+ return docs;
157
+ },
158
+ updateMany(filter, update, options) {
159
+ return new MongoExec(
160
+ (session) => collection.updateMany(filter, update, {
161
+ session: options?.session ?? session
162
+ })
163
+ );
164
+ },
165
+ findOneAndUpdate(filter, update, options) {
166
+ return new MongoQuery(async ({ session }) => {
167
+ const result = await collection.findOneAndUpdate(filter, update, {
168
+ upsert: options?.upsert,
169
+ returnDocument: options?.returnDocument ?? (options?.new ? "after" : "before"),
170
+ session: options?.session ?? session
171
+ });
172
+ return normalizeFindOneResult(result);
173
+ });
174
+ },
175
+ findOneAndDelete(filter, options) {
176
+ return new MongoQuery(async ({ session }) => {
177
+ const result = await collection.findOneAndDelete(filter, {
178
+ session: options?.session ?? session
179
+ });
180
+ return normalizeFindOneResult(result);
181
+ });
182
+ },
183
+ deleteMany(filter, options) {
184
+ return new MongoExec(
185
+ (session) => collection.deleteMany(filter, {
186
+ session: options?.session ?? session
187
+ })
188
+ );
189
+ }
190
+ };
191
+ }
192
+ function createMongoDriver(config) {
193
+ const delegateCache = /* @__PURE__ */ new WeakMap();
194
+ function getDelegate(schema) {
195
+ const cached = delegateCache.get(schema);
196
+ if (cached) return cached;
197
+ const collections = resolveCollections(schema, config);
198
+ const models = Object.fromEntries(
199
+ Object.entries(collections).map(([modelName, collection]) => [
200
+ modelName,
201
+ adaptCollection(collection)
202
+ ])
203
+ );
204
+ const driver = createMongooseDriver({
205
+ models,
206
+ connection: config.client,
207
+ startSession: config.startSession,
208
+ transforms: config.transforms
209
+ });
210
+ delegateCache.set(schema, driver);
211
+ return driver;
212
+ }
213
+ return {
214
+ findMany(schema, model, args) {
215
+ return getDelegate(schema).findMany(schema, model, args);
216
+ },
217
+ findFirst(schema, model, args) {
218
+ return getDelegate(schema).findFirst(schema, model, args);
219
+ },
220
+ findUnique(schema, model, args) {
221
+ return getDelegate(schema).findUnique(schema, model, args);
222
+ },
223
+ count(schema, model, args) {
224
+ return getDelegate(schema).count(schema, model, args);
225
+ },
226
+ create(schema, model, args) {
227
+ return getDelegate(schema).create(schema, model, args);
228
+ },
229
+ createMany(schema, model, args) {
230
+ return getDelegate(schema).createMany(schema, model, args);
231
+ },
232
+ update(schema, model, args) {
233
+ return getDelegate(schema).update(schema, model, args);
234
+ },
235
+ updateMany(schema, model, args) {
236
+ return getDelegate(schema).updateMany(schema, model, args);
237
+ },
238
+ upsert(schema, model, args) {
239
+ return getDelegate(schema).upsert(schema, model, args);
240
+ },
241
+ delete(schema, model, args) {
242
+ return getDelegate(schema).delete(schema, model, args);
243
+ },
244
+ deleteMany(schema, model, args) {
245
+ return getDelegate(schema).deleteMany(schema, model, args);
246
+ },
247
+ transaction(schema, run) {
248
+ return getDelegate(schema).transaction(schema, run);
249
+ }
250
+ };
251
+ }
252
+ export {
253
+ createMongoDriver
254
+ };
255
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createManifest, type OrmDriver, type SchemaDefinition } from \"@farming-labs/orm\";\nimport type { ModelName } from \"@farming-labs/orm\";\nimport {\n createMongooseDriver,\n type MongooseDriverConfig,\n type MongooseExecLike,\n type MongooseModelLike,\n type MongooseQueryLike,\n type MongooseSessionLike,\n type MongooseSessionSourceLike,\n} from \"@farming-labs/orm-mongoose\";\n\ntype MongoRow = Record<string, unknown>;\ntype MongoSort = Record<string, 1 | -1>;\n\nexport type MongoSessionLike = MongooseSessionLike;\nexport type MongoSessionSourceLike = MongooseSessionSourceLike;\n\nexport type MongoCursorLike<TResult = MongoRow> = {\n sort(sort: MongoSort): MongoCursorLike<TResult>;\n skip(value: number): MongoCursorLike<TResult>;\n limit(value: number): MongoCursorLike<TResult>;\n toArray(): Promise<TResult[]>;\n};\n\nexport type MongoCollectionLike = {\n collectionName?: string;\n find(filter: Record<string, unknown>, options?: { session?: MongoSessionLike }): MongoCursorLike;\n findOne(\n filter: Record<string, unknown>,\n options?: { session?: MongoSessionLike },\n ): Promise<MongoRow | null>;\n countDocuments(\n filter: Record<string, unknown>,\n options?: { session?: MongoSessionLike },\n ): Promise<number>;\n insertOne(\n doc: MongoRow,\n options?: { session?: MongoSessionLike },\n ): Promise<{ insertedId?: unknown }>;\n insertMany?(\n docs: MongoRow[],\n options?: { session?: MongoSessionLike },\n ): Promise<{ insertedIds?: Record<number, unknown> } | unknown>;\n updateMany(\n filter: Record<string, unknown>,\n update: { $set: MongoRow },\n options?: { session?: MongoSessionLike },\n ): Promise<{ modifiedCount?: number; matchedCount?: number }>;\n findOneAndUpdate(\n filter: Record<string, unknown>,\n update: { $set?: MongoRow; $setOnInsert?: MongoRow },\n options?: {\n upsert?: boolean;\n returnDocument?: \"after\" | \"before\";\n session?: MongoSessionLike;\n },\n ): Promise<MongoRow | null | { value: MongoRow | null }>;\n findOneAndDelete(\n filter: Record<string, unknown>,\n options?: { session?: MongoSessionLike },\n ): Promise<MongoRow | null | { value: MongoRow | null }>;\n deleteMany(\n filter: Record<string, unknown>,\n options?: { session?: MongoSessionLike },\n ): Promise<{ deletedCount?: number }>;\n};\n\nexport type MongoDbLike = {\n collection(name: string): MongoCollectionLike;\n};\n\nexport type MongoCollectionMap<TSchema extends SchemaDefinition<any>> = Partial<\n Record<ModelName<TSchema>, MongoCollectionLike>\n>;\n\nexport type MongoDriverConfig<TSchema extends SchemaDefinition<any>> = {\n collections?: MongoCollectionMap<TSchema>;\n db?: MongoDbLike;\n client?: MongoSessionSourceLike;\n startSession?: () => Promise<MongoSessionLike>;\n transforms?: MongooseDriverConfig<TSchema>[\"transforms\"];\n};\n\nclass MongoExec<TResult> implements MongooseExecLike<TResult> {\n private currentSession?: MongoSessionLike;\n\n constructor(private readonly run: (session?: MongoSessionLike) => Promise<TResult>) {}\n\n session(session: MongoSessionLike) {\n this.currentSession = session;\n return this;\n }\n\n exec() {\n return this.run(this.currentSession);\n }\n}\n\nclass MongoQuery<TResult> implements MongooseQueryLike<TResult> {\n private currentSession?: MongoSessionLike;\n private sortOrder?: MongoSort;\n private skipValue?: number;\n private limitValue?: number;\n\n constructor(\n private readonly run: (input: {\n session?: MongoSessionLike;\n sort?: MongoSort;\n skip?: number;\n limit?: number;\n }) => Promise<TResult>,\n ) {}\n\n sort(sort: MongoSort) {\n this.sortOrder = sort;\n return this;\n }\n\n skip(value: number) {\n this.skipValue = value;\n return this;\n }\n\n limit(value: number) {\n this.limitValue = value;\n return this;\n }\n\n session(session: MongoSessionLike) {\n this.currentSession = session;\n return this;\n }\n\n lean() {\n return this;\n }\n\n exec() {\n return this.run({\n session: this.currentSession,\n sort: this.sortOrder,\n skip: this.skipValue,\n limit: this.limitValue,\n });\n }\n}\n\nfunction normalizeFindOneResult(result: MongoRow | null | { value: MongoRow | null }) {\n if (result && typeof result === \"object\" && \"value\" in result) {\n return result.value ?? null;\n }\n return result ?? null;\n}\n\nfunction resolveCollections<TSchema extends SchemaDefinition<any>>(\n schema: TSchema,\n config: MongoDriverConfig<TSchema>,\n) {\n const manifest = createManifest(schema);\n const collections = {} as Record<ModelName<TSchema>, MongoCollectionLike>;\n\n for (const modelName of Object.keys(schema.models) as Array<ModelName<TSchema>>) {\n const collection =\n config.collections?.[modelName] ?? config.db?.collection(manifest.models[modelName].table);\n\n if (!collection) {\n throw new Error(\n `No MongoDB collection was provided for schema model \"${String(modelName)}\". Pass \"collections\" or \"db\".`,\n );\n }\n\n collections[modelName] = collection;\n }\n\n return collections;\n}\n\nfunction adaptCollection(collection: MongoCollectionLike): MongooseModelLike {\n return {\n find(filter) {\n return new MongoQuery(async ({ session, sort, skip, limit }) => {\n let cursor = collection.find(filter, session ? { session } : undefined);\n if (sort) cursor = cursor.sort(sort);\n if (skip !== undefined) cursor = cursor.skip(skip);\n if (limit !== undefined) cursor = cursor.limit(limit);\n return cursor.toArray();\n });\n },\n findOne(filter) {\n return new MongoQuery(async ({ session, sort, skip, limit }) => {\n if (!sort && skip === undefined && limit === undefined) {\n return collection.findOne(filter, session ? { session } : undefined);\n }\n\n let cursor = collection.find(filter, session ? { session } : undefined);\n if (sort) cursor = cursor.sort(sort);\n if (skip !== undefined) cursor = cursor.skip(skip);\n cursor = cursor.limit(limit ?? 1);\n const rows = await cursor.toArray();\n return rows[0] ?? null;\n });\n },\n countDocuments(filter) {\n return new MongoExec((session) =>\n collection.countDocuments(filter, session ? { session } : undefined),\n );\n },\n async create(doc, options) {\n if (Array.isArray(doc)) {\n if (doc.length === 0) return [];\n\n if (collection.insertMany) {\n const result = await collection.insertMany(\n doc,\n options?.session ? { session: options.session } : undefined,\n );\n const insertedIds =\n result &&\n typeof result === \"object\" &&\n \"insertedIds\" in result &&\n result.insertedIds &&\n typeof result.insertedIds === \"object\"\n ? (result.insertedIds as Record<number, unknown>)\n : undefined;\n\n return doc.map((entry, index) => {\n const insertedId = insertedIds?.[index];\n\n if (entry._id === undefined && insertedId !== undefined) {\n return {\n ...entry,\n _id: insertedId,\n };\n }\n\n return entry;\n });\n }\n\n const created: MongoRow[] = [];\n for (const entry of doc) {\n created.push((await this.create(entry, options)) as MongoRow);\n }\n return created;\n }\n\n const result = await collection.insertOne(\n doc,\n options?.session ? { session: options.session } : undefined,\n );\n if (doc._id === undefined && result?.insertedId !== undefined) {\n return {\n ...doc,\n _id: result.insertedId,\n };\n }\n return doc;\n },\n async insertMany(docs, options) {\n if (collection.insertMany) {\n await collection.insertMany(\n docs,\n options?.session ? { session: options.session } : undefined,\n );\n return docs;\n }\n\n for (const doc of docs) {\n await collection.insertOne(\n doc,\n options?.session ? { session: options.session } : undefined,\n );\n }\n\n return docs;\n },\n updateMany(filter, update, options) {\n return new MongoExec((session) =>\n collection.updateMany(filter, update, {\n session: options?.session ?? session,\n }),\n );\n },\n findOneAndUpdate(filter, update, options) {\n return new MongoQuery<MongoRow | null>(async ({ session }) => {\n const result = await collection.findOneAndUpdate(filter, update, {\n upsert: options?.upsert,\n returnDocument: options?.returnDocument ?? (options?.new ? \"after\" : \"before\"),\n session: options?.session ?? session,\n });\n return normalizeFindOneResult(result) as MongoRow | null;\n });\n },\n findOneAndDelete(filter, options) {\n return new MongoQuery<MongoRow | null>(async ({ session }) => {\n const result = await collection.findOneAndDelete(filter, {\n session: options?.session ?? session,\n });\n return normalizeFindOneResult(result) as MongoRow | null;\n });\n },\n deleteMany(filter, options) {\n return new MongoExec((session) =>\n collection.deleteMany(filter, {\n session: options?.session ?? session,\n }),\n );\n },\n };\n}\n\nexport function createMongoDriver<TSchema extends SchemaDefinition<any>>(\n config: MongoDriverConfig<TSchema>,\n): OrmDriver<TSchema> {\n const delegateCache = new WeakMap<object, OrmDriver<TSchema>>();\n\n function getDelegate(schema: TSchema) {\n const cached = delegateCache.get(schema);\n if (cached) return cached;\n\n const collections = resolveCollections(schema, config);\n const models = Object.fromEntries(\n Object.entries(collections).map(([modelName, collection]) => [\n modelName,\n adaptCollection(collection),\n ]),\n ) as Record<ModelName<TSchema>, MongooseModelLike>;\n\n const driver = createMongooseDriver<TSchema>({\n models,\n connection: config.client,\n startSession: config.startSession,\n transforms: config.transforms,\n });\n delegateCache.set(schema, driver);\n return driver;\n }\n\n return {\n findMany(schema, model, args) {\n return getDelegate(schema).findMany(schema, model, args);\n },\n findFirst(schema, model, args) {\n return getDelegate(schema).findFirst(schema, model, args);\n },\n findUnique(schema, model, args) {\n return getDelegate(schema).findUnique(schema, model, args);\n },\n count(schema, model, args) {\n return getDelegate(schema).count(schema, model, args);\n },\n create(schema, model, args) {\n return getDelegate(schema).create(schema, model, args);\n },\n createMany(schema, model, args) {\n return getDelegate(schema).createMany(schema, model, args);\n },\n update(schema, model, args) {\n return getDelegate(schema).update(schema, model, args);\n },\n updateMany(schema, model, args) {\n return getDelegate(schema).updateMany(schema, model, args);\n },\n upsert(schema, model, args) {\n return getDelegate(schema).upsert(schema, model, args);\n },\n delete(schema, model, args) {\n return getDelegate(schema).delete(schema, model, args);\n },\n deleteMany(schema, model, args) {\n return getDelegate(schema).deleteMany(schema, model, args);\n },\n transaction(schema, run) {\n return getDelegate(schema).transaction(schema, run);\n },\n };\n}\n"],"mappings":"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","names":["result"]}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@farming-labs/orm-mongo",
3
+ "version": "0.0.5",
4
+ "files": [
5
+ "dist"
6
+ ],
7
+ "type": "module",
8
+ "main": "./dist/index.cjs",
9
+ "module": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js",
15
+ "require": "./dist/index.cjs"
16
+ }
17
+ },
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "dependencies": {
22
+ "@farming-labs/orm": "0.0.5",
23
+ "@farming-labs/orm-mongoose": "0.0.5"
24
+ },
25
+ "devDependencies": {
26
+ "mongodb": "^6.20.0",
27
+ "tsup": "^8.4.0"
28
+ },
29
+ "peerDependencies": {
30
+ "mongodb": "^6.0.0"
31
+ },
32
+ "scripts": {
33
+ "build": "tsx ./scripts/build.ts",
34
+ "test": "vitest run",
35
+ "test:local": "vitest run --config vitest.local.config.ts",
36
+ "typecheck": "tsc --noEmit"
37
+ }
38
+ }