@farming-labs/orm-runtime 0.0.19 → 0.0.21
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/chunk-336GVTN5.js +181 -0
- package/dist/chunk-336GVTN5.js.map +1 -0
- package/dist/index.cjs +43 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +12 -33
- package/dist/index.d.ts +12 -33
- package/dist/index.js +3 -178
- package/dist/index.js.map +1 -1
- package/dist/setup.cjs +528 -0
- package/dist/setup.cjs.map +1 -0
- package/dist/setup.d.cts +19 -0
- package/dist/setup.d.ts +19 -0
- package/dist/setup.js +333 -0
- package/dist/setup.js.map +1 -0
- package/dist/shared-CC7XYRno.d.cts +43 -0
- package/dist/shared-CC7XYRno.d.ts +43 -0
- package/package.json +13 -8
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import {
|
|
3
|
+
createOrm
|
|
4
|
+
} from "@farming-labs/orm";
|
|
5
|
+
|
|
6
|
+
// src/shared.ts
|
|
7
|
+
import { createManifest, requireDatabaseRuntime } from "@farming-labs/orm";
|
|
8
|
+
function isRecord(value) {
|
|
9
|
+
return !!value && typeof value === "object";
|
|
10
|
+
}
|
|
11
|
+
function hasFunction(value, name) {
|
|
12
|
+
return isRecord(value) && typeof value[name] === "function";
|
|
13
|
+
}
|
|
14
|
+
function resolveRuntime(options) {
|
|
15
|
+
if (options.runtime) {
|
|
16
|
+
return options.runtime;
|
|
17
|
+
}
|
|
18
|
+
if (options.client === void 0) {
|
|
19
|
+
throw new Error(
|
|
20
|
+
'createDriverFromRuntime() requires either a detected "runtime" or a raw "client".'
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
return requireDatabaseRuntime(options.client);
|
|
24
|
+
}
|
|
25
|
+
function resolveDialect(runtime, override) {
|
|
26
|
+
const dialect = override ?? runtime.dialect;
|
|
27
|
+
if (!dialect) {
|
|
28
|
+
throw new Error(
|
|
29
|
+
`Could not determine the database dialect for the detected ${runtime.kind} runtime. Pass a "dialect" option explicitly.`
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
return dialect;
|
|
33
|
+
}
|
|
34
|
+
function inferMongooseModels(schema, connection) {
|
|
35
|
+
const manifest = createManifest(schema);
|
|
36
|
+
const registeredModels = Object.values(connection.models ?? {});
|
|
37
|
+
const models = {};
|
|
38
|
+
for (const modelName of Object.keys(schema.models)) {
|
|
39
|
+
const expectedTable = manifest.models[modelName].table;
|
|
40
|
+
const inferredModel = registeredModels.find(
|
|
41
|
+
(candidate) => candidate.collection?.collectionName === expectedTable
|
|
42
|
+
) ?? connection.models?.[String(modelName)];
|
|
43
|
+
if (!inferredModel) {
|
|
44
|
+
throw new Error(
|
|
45
|
+
`Could not infer a Mongoose model for schema model "${String(modelName)}". Register a model for collection "${expectedTable}" or pass mongoose.models explicitly.`
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
models[modelName] = inferredModel;
|
|
49
|
+
}
|
|
50
|
+
return models;
|
|
51
|
+
}
|
|
52
|
+
function resolveMongoDb(runtime, options) {
|
|
53
|
+
if (options.mongo?.db) {
|
|
54
|
+
return options.mongo.db;
|
|
55
|
+
}
|
|
56
|
+
if (runtime.source === "db") {
|
|
57
|
+
return runtime.client;
|
|
58
|
+
}
|
|
59
|
+
const databaseName = options.databaseName;
|
|
60
|
+
if (!databaseName) {
|
|
61
|
+
throw new Error(
|
|
62
|
+
'MongoClient auto-creation requires a "databaseName" option so the helper can resolve the target database.'
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
return runtime.client.db(databaseName);
|
|
66
|
+
}
|
|
67
|
+
function resolveMongoSessionSource(runtime, db, options) {
|
|
68
|
+
if (options.mongo?.startSession) {
|
|
69
|
+
return {
|
|
70
|
+
client: void 0,
|
|
71
|
+
startSession: options.mongo.startSession
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
if (runtime.source === "client" && hasFunction(runtime.client, "startSession")) {
|
|
75
|
+
return {
|
|
76
|
+
client: runtime.client,
|
|
77
|
+
startSession: void 0
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const dbClient = isRecord(db) ? db["client"] : void 0;
|
|
81
|
+
if (hasFunction(dbClient, "startSession")) {
|
|
82
|
+
return {
|
|
83
|
+
client: dbClient,
|
|
84
|
+
startSession: void 0
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
client: void 0,
|
|
89
|
+
startSession: void 0
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// src/index.ts
|
|
94
|
+
async function createSqlDriverFromRuntime(runtime, dialect) {
|
|
95
|
+
const { createMysqlDriver, createPgClientDriver, createPgPoolDriver, createSqliteDriver } = await import("@farming-labs/orm-sql");
|
|
96
|
+
if (dialect === "sqlite") {
|
|
97
|
+
return createSqliteDriver(runtime.client);
|
|
98
|
+
}
|
|
99
|
+
if (dialect === "postgres") {
|
|
100
|
+
if (runtime.source === "pool") {
|
|
101
|
+
return createPgPoolDriver(runtime.client);
|
|
102
|
+
}
|
|
103
|
+
return createPgClientDriver(runtime.client);
|
|
104
|
+
}
|
|
105
|
+
if (runtime.source === "pool") {
|
|
106
|
+
return createMysqlDriver(runtime.client);
|
|
107
|
+
}
|
|
108
|
+
return createMysqlDriver(runtime.client);
|
|
109
|
+
}
|
|
110
|
+
async function createDriverFromRuntime(options) {
|
|
111
|
+
const runtime = resolveRuntime(options);
|
|
112
|
+
switch (runtime.kind) {
|
|
113
|
+
case "prisma": {
|
|
114
|
+
const { createPrismaDriver } = await import("@farming-labs/orm-prisma");
|
|
115
|
+
return createPrismaDriver({
|
|
116
|
+
client: runtime.client,
|
|
117
|
+
models: options.prisma?.models
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
case "drizzle": {
|
|
121
|
+
const { createDrizzleDriver } = await import("@farming-labs/orm-drizzle");
|
|
122
|
+
return createDrizzleDriver({
|
|
123
|
+
db: runtime.client,
|
|
124
|
+
client: options.drizzle?.client,
|
|
125
|
+
dialect: resolveDialect(runtime, options.dialect)
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
case "kysely": {
|
|
129
|
+
const { createKyselyDriver } = await import("@farming-labs/orm-kysely");
|
|
130
|
+
return createKyselyDriver({
|
|
131
|
+
db: runtime.client,
|
|
132
|
+
dialect: resolveDialect(runtime, options.dialect)
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
case "sql":
|
|
136
|
+
return await createSqlDriverFromRuntime(
|
|
137
|
+
runtime,
|
|
138
|
+
resolveDialect(runtime, options.dialect)
|
|
139
|
+
);
|
|
140
|
+
case "mongo": {
|
|
141
|
+
const { createMongoDriver } = await import("@farming-labs/orm-mongo");
|
|
142
|
+
const db = resolveMongoDb(runtime, options);
|
|
143
|
+
const sessionSource = resolveMongoSessionSource(runtime, db, options);
|
|
144
|
+
return createMongoDriver({
|
|
145
|
+
collections: options.mongo?.collections,
|
|
146
|
+
db,
|
|
147
|
+
client: sessionSource.client,
|
|
148
|
+
startSession: sessionSource.startSession,
|
|
149
|
+
transforms: options.mongo?.transforms
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
case "mongoose": {
|
|
153
|
+
const { createMongooseDriver } = await import("@farming-labs/orm-mongoose");
|
|
154
|
+
const connection = runtime.client;
|
|
155
|
+
return createMongooseDriver({
|
|
156
|
+
models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),
|
|
157
|
+
connection,
|
|
158
|
+
startSession: options.mongoose?.startSession,
|
|
159
|
+
transforms: options.mongoose?.transforms
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
async function createOrmFromRuntime(options) {
|
|
165
|
+
const driver = await createDriverFromRuntime(options);
|
|
166
|
+
return createOrm({
|
|
167
|
+
schema: options.schema,
|
|
168
|
+
driver
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export {
|
|
173
|
+
isRecord,
|
|
174
|
+
hasFunction,
|
|
175
|
+
resolveRuntime,
|
|
176
|
+
resolveDialect,
|
|
177
|
+
resolveMongoDb,
|
|
178
|
+
createDriverFromRuntime,
|
|
179
|
+
createOrmFromRuntime
|
|
180
|
+
};
|
|
181
|
+
//# sourceMappingURL=chunk-336GVTN5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/shared.ts"],"sourcesContent":["import {\n createOrm,\n type OrmClient,\n type OrmDriver,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { KyselyDialect, KyselyDriverConfig } from \"@farming-labs/orm-kysely\";\nimport type { MongoDriverConfig } from \"@farming-labs/orm-mongo\";\nimport type { MongooseDriverConfig } from \"@farming-labs/orm-mongoose\";\nimport type { PrismaDriverConfig } from \"@farming-labs/orm-prisma\";\nimport type {\n MysqlConnectionLike,\n MysqlPoolLike,\n PgClientLike,\n PgPoolLike,\n SqliteDatabaseLike,\n} from \"@farming-labs/orm-sql\";\nimport {\n inferMongooseModels,\n resolveDialect,\n resolveMongoDb,\n resolveMongoSessionSource,\n resolveRuntime,\n type AutoDriverHandle,\n type CreateDriverFromRuntimeOptions,\n type CreateOrmFromRuntimeOptions,\n type MongooseConnectionLike,\n} from \"./shared\";\n\nasync function createSqlDriverFromRuntime<TSchema extends SchemaDefinition<any>>(\n runtime: Awaited<ReturnType<typeof resolveRuntime>>,\n dialect: ReturnType<typeof resolveDialect>,\n) {\n const { createMysqlDriver, createPgClientDriver, createPgPoolDriver, createSqliteDriver } =\n await import(\"@farming-labs/orm-sql\");\n\n if (dialect === \"sqlite\") {\n return createSqliteDriver<TSchema>(runtime.client as SqliteDatabaseLike);\n }\n\n if (dialect === \"postgres\") {\n if (runtime.source === \"pool\") {\n return createPgPoolDriver<TSchema>(runtime.client as PgPoolLike);\n }\n\n return createPgClientDriver<TSchema>(runtime.client as PgClientLike);\n }\n\n if (runtime.source === \"pool\") {\n return createMysqlDriver<TSchema>(runtime.client as MysqlPoolLike);\n }\n\n return createMysqlDriver<TSchema>(runtime.client as MysqlConnectionLike);\n}\n\nexport async function createDriverFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmDriver<TSchema, AutoDriverHandle<TClient>>> {\n const runtime = resolveRuntime(options);\n\n switch (runtime.kind) {\n case \"prisma\": {\n const { createPrismaDriver } = await import(\"@farming-labs/orm-prisma\");\n return createPrismaDriver<TSchema>({\n client: runtime.client as PrismaDriverConfig<TSchema>[\"client\"],\n models: options.prisma?.models,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"drizzle\": {\n const { createDrizzleDriver } = await import(\"@farming-labs/orm-drizzle\");\n return createDrizzleDriver<TSchema>({\n db: runtime.client as DrizzleDriverConfig<TSchema>[\"db\"],\n client: options.drizzle?.client,\n dialect: resolveDialect(runtime, options.dialect) as DrizzleDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"kysely\": {\n const { createKyselyDriver } = await import(\"@farming-labs/orm-kysely\");\n return createKyselyDriver<TSchema>({\n db: runtime.client as KyselyDriverConfig<TSchema>[\"db\"],\n dialect: resolveDialect(runtime, options.dialect) as KyselyDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sql\":\n return (await createSqlDriverFromRuntime<TSchema>(\n runtime,\n resolveDialect(runtime, options.dialect),\n )) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n case \"mongo\": {\n const { createMongoDriver } = await import(\"@farming-labs/orm-mongo\");\n const db = resolveMongoDb(runtime, options);\n const sessionSource = resolveMongoSessionSource(runtime, db, options);\n\n return createMongoDriver<TSchema>({\n collections: options.mongo?.collections,\n db,\n client: sessionSource.client,\n startSession: sessionSource.startSession,\n transforms: options.mongo?.transforms as MongoDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mongoose\": {\n const { createMongooseDriver } = await import(\"@farming-labs/orm-mongoose\");\n const connection = runtime.client as MongooseConnectionLike;\n\n return createMongooseDriver<TSchema>({\n models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),\n connection,\n startSession: options.mongoose?.startSession,\n transforms: options.mongoose?.transforms as MongooseDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n }\n}\n\nexport async function createOrmFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateOrmFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmClient<TSchema, AutoDriverHandle<TClient>>> {\n const driver = await createDriverFromRuntime(options);\n return createOrm({\n schema: options.schema,\n driver,\n }) as OrmClient<TSchema, AutoDriverHandle<TClient>>;\n}\n\nexport type {\n AutoDialect,\n AutoDriverHandle,\n CreateDriverFromRuntimeOptions,\n CreateOrmFromRuntimeOptions,\n MongooseConnectionLike,\n} from \"./shared\";\n","import { createManifest, requireDatabaseRuntime } from \"@farming-labs/orm\";\nimport type {\n DetectedDatabaseDialect,\n DetectedDatabaseRuntime,\n ModelName,\n OrmDriverHandle,\n SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type {\n MongoCollectionMap,\n MongoDbLike,\n MongoDriverConfig,\n MongoSessionLike,\n MongoSessionSourceLike,\n} from \"@farming-labs/orm-mongo\";\nimport type {\n MongooseFieldTransform,\n MongooseModelLike,\n MongooseSessionLike,\n MongooseSessionSourceLike,\n} from \"@farming-labs/orm-mongoose\";\nimport type { KyselyDialect } from \"@farming-labs/orm-kysely\";\nimport type { PrismaDriverConfig, PrismaDriverHandle } from \"@farming-labs/orm-prisma\";\nimport type { SqlDriverHandle } from \"@farming-labs/orm-sql\";\n\nexport type AutoDialect = DetectedDatabaseDialect;\n\nexport type AutoDriverHandle<TClient = unknown> =\n | PrismaDriverHandle\n | SqlDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"drizzle\", TClient, DrizzleDialect>\n | OrmDriverHandle<\"kysely\", TClient, KyselyDialect>\n | OrmDriverHandle<\"mongo\", unknown>\n | OrmDriverHandle<\"mongoose\", unknown>;\n\nexport type CreateDriverFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = {\n schema: TSchema;\n client?: TClient;\n runtime?: DetectedDatabaseRuntime<TClient>;\n dialect?: AutoDialect;\n databaseName?: string;\n prisma?: Pick<PrismaDriverConfig<TSchema>, \"models\"> & {\n databaseUrl?: string;\n packageRoot?: string;\n };\n drizzle?: Pick<DrizzleDriverConfig<TSchema>, \"client\">;\n mongo?: {\n collections?: MongoCollectionMap<TSchema>;\n db?: MongoDbLike;\n transforms?: MongoDriverConfig<TSchema>[\"transforms\"];\n startSession?: () => Promise<MongoSessionLike>;\n };\n mongoose?: {\n models?: Record<ModelName<TSchema>, MongooseModelLike>;\n transforms?: Partial<Record<string, Partial<Record<string, MongooseFieldTransform>>>>;\n startSession?: () => Promise<MongooseSessionLike>;\n };\n};\n\nexport type CreateOrmFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type MongooseConnectionLike = MongooseSessionSourceLike & {\n models?: Record<string, MongooseModelLike & { collection?: { collectionName?: string } }>;\n};\n\ntype MongoClientLike = MongoSessionSourceLike & {\n db(name?: string): MongoDbLike;\n};\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\";\n}\n\nexport function hasFunction<TName extends string>(\n value: unknown,\n name: TName,\n): value is Record<TName, (...args: any[]) => unknown> {\n return isRecord(value) && typeof value[name] === \"function\";\n}\n\nexport function resolveRuntime<TClient>(\n options: CreateDriverFromRuntimeOptions<any, TClient>,\n): DetectedDatabaseRuntime<TClient> {\n if (options.runtime) {\n return options.runtime;\n }\n\n if (options.client === undefined) {\n throw new Error(\n 'createDriverFromRuntime() requires either a detected \"runtime\" or a raw \"client\".',\n );\n }\n\n return requireDatabaseRuntime(options.client);\n}\n\nexport function resolveDialect(\n runtime: DetectedDatabaseRuntime<any>,\n override?: AutoDialect,\n): AutoDialect {\n const dialect = override ?? runtime.dialect;\n if (!dialect) {\n throw new Error(\n `Could not determine the database dialect for the detected ${runtime.kind} runtime. Pass a \"dialect\" option explicitly.`,\n );\n }\n return dialect;\n}\n\nexport function inferMongooseModels<TSchema extends SchemaDefinition<any>>(\n schema: TSchema,\n connection: MongooseConnectionLike,\n) {\n const manifest = createManifest(schema);\n const registeredModels = Object.values(connection.models ?? {});\n const models = {} as Record<ModelName<TSchema>, MongooseModelLike>;\n\n for (const modelName of Object.keys(schema.models) as Array<ModelName<TSchema>>) {\n const expectedTable = manifest.models[modelName].table;\n const inferredModel =\n registeredModels.find(\n (candidate) => candidate.collection?.collectionName === expectedTable,\n ) ?? connection.models?.[String(modelName)];\n\n if (!inferredModel) {\n throw new Error(\n `Could not infer a Mongoose model for schema model \"${String(modelName)}\". Register a model for collection \"${expectedTable}\" or pass mongoose.models explicitly.`,\n );\n }\n\n models[modelName] = inferredModel;\n }\n\n return models;\n}\n\nexport function resolveMongoDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.db) {\n return options.mongo.db;\n }\n\n if (runtime.source === \"db\") {\n return runtime.client as MongoDbLike;\n }\n\n const databaseName = options.databaseName;\n if (!databaseName) {\n throw new Error(\n 'MongoClient auto-creation requires a \"databaseName\" option so the helper can resolve the target database.',\n );\n }\n\n return (runtime.client as MongoClientLike).db(databaseName);\n}\n\nexport function resolveMongoSessionSource(\n runtime: DetectedDatabaseRuntime<any>,\n db: MongoDbLike,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.startSession) {\n return {\n client: undefined,\n startSession: options.mongo.startSession,\n };\n }\n\n if (runtime.source === \"client\" && hasFunction(runtime.client, \"startSession\")) {\n return {\n client: runtime.client as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n const dbClient = isRecord(db) ? (db as Record<string, unknown>)[\"client\"] : undefined;\n if (hasFunction(dbClient, \"startSession\")) {\n return {\n client: dbClient as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n return {\n client: undefined,\n startSession: undefined,\n };\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
|
|
20
30
|
// src/index.ts
|
|
@@ -24,13 +34,10 @@ __export(index_exports, {
|
|
|
24
34
|
createOrmFromRuntime: () => createOrmFromRuntime
|
|
25
35
|
});
|
|
26
36
|
module.exports = __toCommonJS(index_exports);
|
|
37
|
+
var import_orm2 = require("@farming-labs/orm");
|
|
38
|
+
|
|
39
|
+
// src/shared.ts
|
|
27
40
|
var import_orm = require("@farming-labs/orm");
|
|
28
|
-
var import_orm_drizzle = require("@farming-labs/orm-drizzle");
|
|
29
|
-
var import_orm_kysely = require("@farming-labs/orm-kysely");
|
|
30
|
-
var import_orm_mongo = require("@farming-labs/orm-mongo");
|
|
31
|
-
var import_orm_mongoose = require("@farming-labs/orm-mongoose");
|
|
32
|
-
var import_orm_prisma = require("@farming-labs/orm-prisma");
|
|
33
|
-
var import_orm_sql = require("@farming-labs/orm-sql");
|
|
34
41
|
function isRecord(value) {
|
|
35
42
|
return !!value && typeof value === "object";
|
|
36
43
|
}
|
|
@@ -115,49 +122,59 @@ function resolveMongoSessionSource(runtime, db, options) {
|
|
|
115
122
|
startSession: void 0
|
|
116
123
|
};
|
|
117
124
|
}
|
|
118
|
-
|
|
125
|
+
|
|
126
|
+
// src/index.ts
|
|
127
|
+
async function createSqlDriverFromRuntime(runtime, dialect) {
|
|
128
|
+
const { createMysqlDriver, createPgClientDriver, createPgPoolDriver, createSqliteDriver } = await import("@farming-labs/orm-sql");
|
|
119
129
|
if (dialect === "sqlite") {
|
|
120
|
-
return
|
|
130
|
+
return createSqliteDriver(runtime.client);
|
|
121
131
|
}
|
|
122
132
|
if (dialect === "postgres") {
|
|
123
133
|
if (runtime.source === "pool") {
|
|
124
|
-
return
|
|
134
|
+
return createPgPoolDriver(runtime.client);
|
|
125
135
|
}
|
|
126
|
-
return
|
|
136
|
+
return createPgClientDriver(runtime.client);
|
|
127
137
|
}
|
|
128
138
|
if (runtime.source === "pool") {
|
|
129
|
-
return
|
|
139
|
+
return createMysqlDriver(runtime.client);
|
|
130
140
|
}
|
|
131
|
-
return
|
|
141
|
+
return createMysqlDriver(runtime.client);
|
|
132
142
|
}
|
|
133
|
-
function createDriverFromRuntime(options) {
|
|
143
|
+
async function createDriverFromRuntime(options) {
|
|
134
144
|
const runtime = resolveRuntime(options);
|
|
135
145
|
switch (runtime.kind) {
|
|
136
|
-
case "prisma":
|
|
137
|
-
|
|
146
|
+
case "prisma": {
|
|
147
|
+
const { createPrismaDriver } = await import("@farming-labs/orm-prisma");
|
|
148
|
+
return createPrismaDriver({
|
|
138
149
|
client: runtime.client,
|
|
139
150
|
models: options.prisma?.models
|
|
140
151
|
});
|
|
141
|
-
|
|
142
|
-
|
|
152
|
+
}
|
|
153
|
+
case "drizzle": {
|
|
154
|
+
const { createDrizzleDriver } = await import("@farming-labs/orm-drizzle");
|
|
155
|
+
return createDrizzleDriver({
|
|
143
156
|
db: runtime.client,
|
|
144
157
|
client: options.drizzle?.client,
|
|
145
158
|
dialect: resolveDialect(runtime, options.dialect)
|
|
146
159
|
});
|
|
147
|
-
|
|
148
|
-
|
|
160
|
+
}
|
|
161
|
+
case "kysely": {
|
|
162
|
+
const { createKyselyDriver } = await import("@farming-labs/orm-kysely");
|
|
163
|
+
return createKyselyDriver({
|
|
149
164
|
db: runtime.client,
|
|
150
165
|
dialect: resolveDialect(runtime, options.dialect)
|
|
151
166
|
});
|
|
167
|
+
}
|
|
152
168
|
case "sql":
|
|
153
|
-
return createSqlDriverFromRuntime(
|
|
169
|
+
return await createSqlDriverFromRuntime(
|
|
154
170
|
runtime,
|
|
155
171
|
resolveDialect(runtime, options.dialect)
|
|
156
172
|
);
|
|
157
173
|
case "mongo": {
|
|
174
|
+
const { createMongoDriver } = await import("@farming-labs/orm-mongo");
|
|
158
175
|
const db = resolveMongoDb(runtime, options);
|
|
159
176
|
const sessionSource = resolveMongoSessionSource(runtime, db, options);
|
|
160
|
-
return
|
|
177
|
+
return createMongoDriver({
|
|
161
178
|
collections: options.mongo?.collections,
|
|
162
179
|
db,
|
|
163
180
|
client: sessionSource.client,
|
|
@@ -166,8 +183,9 @@ function createDriverFromRuntime(options) {
|
|
|
166
183
|
});
|
|
167
184
|
}
|
|
168
185
|
case "mongoose": {
|
|
186
|
+
const { createMongooseDriver } = await import("@farming-labs/orm-mongoose");
|
|
169
187
|
const connection = runtime.client;
|
|
170
|
-
return
|
|
188
|
+
return createMongooseDriver({
|
|
171
189
|
models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),
|
|
172
190
|
connection,
|
|
173
191
|
startSession: options.mongoose?.startSession,
|
|
@@ -176,9 +194,9 @@ function createDriverFromRuntime(options) {
|
|
|
176
194
|
}
|
|
177
195
|
}
|
|
178
196
|
}
|
|
179
|
-
function createOrmFromRuntime(options) {
|
|
180
|
-
const driver = createDriverFromRuntime(options);
|
|
181
|
-
return (0,
|
|
197
|
+
async function createOrmFromRuntime(options) {
|
|
198
|
+
const driver = await createDriverFromRuntime(options);
|
|
199
|
+
return (0, import_orm2.createOrm)({
|
|
182
200
|
schema: options.schema,
|
|
183
201
|
driver
|
|
184
202
|
});
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n createManifest,\n createOrm,\n requireDatabaseRuntime,\n type DetectedDatabaseDialect,\n type DetectedDatabaseRuntime,\n type ModelName,\n type OrmClient,\n type OrmDriver,\n type OrmDriverHandle,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport {\n createDrizzleDriver,\n type DrizzleDialect,\n type DrizzleDriverConfig,\n} from \"@farming-labs/orm-drizzle\";\nimport {\n createKyselyDriver,\n type KyselyDialect,\n type KyselyDriverConfig,\n} from \"@farming-labs/orm-kysely\";\nimport {\n createMongoDriver,\n type MongoCollectionMap,\n type MongoDbLike,\n type MongoDriverConfig,\n type MongoSessionLike,\n type MongoSessionSourceLike,\n} from \"@farming-labs/orm-mongo\";\nimport {\n createMongooseDriver,\n type MongooseDriverConfig,\n type MongooseFieldTransform,\n type MongooseModelLike,\n type MongooseSessionLike,\n type MongooseSessionSourceLike,\n} from \"@farming-labs/orm-mongoose\";\nimport {\n createPrismaDriver,\n type PrismaDriverConfig,\n type PrismaDriverHandle,\n} from \"@farming-labs/orm-prisma\";\nimport {\n createMysqlDriver,\n createPgClientDriver,\n createPgPoolDriver,\n createSqliteDriver,\n type MysqlConnectionLike,\n type MysqlPoolLike,\n type PgClientLike,\n type PgPoolLike,\n type SqlDriverHandle,\n type SqliteDatabaseLike,\n} from \"@farming-labs/orm-sql\";\n\ntype AutoDialect = DetectedDatabaseDialect;\n\ntype AutoDriverHandle<TClient = unknown> =\n | PrismaDriverHandle\n | SqlDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"drizzle\", TClient, DrizzleDialect>\n | OrmDriverHandle<\"kysely\", TClient, KyselyDialect>\n | OrmDriverHandle<\"mongo\", unknown>\n | OrmDriverHandle<\"mongoose\", unknown>;\n\ntype CreateDriverFromRuntimeOptions<TSchema extends SchemaDefinition<any>, TClient = unknown> = {\n schema: TSchema;\n client?: TClient;\n runtime?: DetectedDatabaseRuntime<TClient>;\n dialect?: AutoDialect;\n databaseName?: string;\n prisma?: Pick<PrismaDriverConfig<TSchema>, \"models\">;\n drizzle?: Pick<DrizzleDriverConfig<TSchema>, \"client\">;\n mongo?: {\n collections?: MongoCollectionMap<TSchema>;\n db?: MongoDbLike;\n transforms?: MongoDriverConfig<TSchema>[\"transforms\"];\n startSession?: () => Promise<MongoSessionLike>;\n };\n mongoose?: {\n models?: Record<ModelName<TSchema>, MongooseModelLike>;\n transforms?: Partial<Record<string, Partial<Record<string, MongooseFieldTransform>>>>;\n startSession?: () => Promise<MongooseSessionLike>;\n };\n};\n\ntype CreateOrmFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\ntype MongooseConnectionLike = MongooseSessionSourceLike & {\n models?: Record<string, MongooseModelLike & { collection?: { collectionName?: string } }>;\n};\n\ntype MongoClientLike = MongoSessionSourceLike & {\n db(name?: string): MongoDbLike;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\";\n}\n\nfunction hasFunction<TName extends string>(\n value: unknown,\n name: TName,\n): value is Record<TName, (...args: any[]) => unknown> {\n return isRecord(value) && typeof value[name] === \"function\";\n}\n\nfunction resolveRuntime<TClient>(\n options: CreateDriverFromRuntimeOptions<any, TClient>,\n): DetectedDatabaseRuntime<TClient> {\n if (options.runtime) {\n return options.runtime;\n }\n\n if (options.client === undefined) {\n throw new Error(\n 'createDriverFromRuntime() requires either a detected \"runtime\" or a raw \"client\".',\n );\n }\n\n return requireDatabaseRuntime(options.client);\n}\n\nfunction resolveDialect(\n runtime: DetectedDatabaseRuntime<any>,\n override?: AutoDialect,\n): AutoDialect {\n const dialect = override ?? runtime.dialect;\n if (!dialect) {\n throw new Error(\n `Could not determine the database dialect for the detected ${runtime.kind} runtime. Pass a \"dialect\" option explicitly.`,\n );\n }\n return dialect;\n}\n\nfunction inferMongooseModels<TSchema extends SchemaDefinition<any>>(\n schema: TSchema,\n connection: MongooseConnectionLike,\n) {\n const manifest = createManifest(schema);\n const registeredModels = Object.values(connection.models ?? {});\n const models = {} as Record<ModelName<TSchema>, MongooseModelLike>;\n\n for (const modelName of Object.keys(schema.models) as Array<ModelName<TSchema>>) {\n const expectedTable = manifest.models[modelName].table;\n const inferredModel =\n registeredModels.find(\n (candidate) => candidate.collection?.collectionName === expectedTable,\n ) ?? connection.models?.[String(modelName)];\n\n if (!inferredModel) {\n throw new Error(\n `Could not infer a Mongoose model for schema model \"${String(modelName)}\". Register a model for collection \"${expectedTable}\" or pass mongoose.models explicitly.`,\n );\n }\n\n models[modelName] = inferredModel;\n }\n\n return models;\n}\n\nfunction resolveMongoDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.db) {\n return options.mongo.db;\n }\n\n if (runtime.source === \"db\") {\n return runtime.client as MongoDbLike;\n }\n\n const databaseName = options.databaseName;\n if (!databaseName) {\n throw new Error(\n 'MongoClient auto-creation requires a \"databaseName\" option so the helper can resolve the target database.',\n );\n }\n\n return (runtime.client as MongoClientLike).db(databaseName);\n}\n\nfunction resolveMongoSessionSource(\n runtime: DetectedDatabaseRuntime<any>,\n db: MongoDbLike,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.startSession) {\n return {\n client: undefined,\n startSession: options.mongo.startSession,\n };\n }\n\n if (runtime.source === \"client\" && hasFunction(runtime.client, \"startSession\")) {\n return {\n client: runtime.client as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n const dbClient = isRecord(db) ? (db as Record<string, unknown>)[\"client\"] : undefined;\n if (hasFunction(dbClient, \"startSession\")) {\n return {\n client: dbClient as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n return {\n client: undefined,\n startSession: undefined,\n };\n}\n\nfunction createSqlDriverFromRuntime<TSchema extends SchemaDefinition<any>>(\n runtime: DetectedDatabaseRuntime<any>,\n dialect: AutoDialect,\n) {\n if (dialect === \"sqlite\") {\n return createSqliteDriver<TSchema>(runtime.client as SqliteDatabaseLike);\n }\n\n if (dialect === \"postgres\") {\n if (runtime.source === \"pool\") {\n return createPgPoolDriver<TSchema>(runtime.client as PgPoolLike);\n }\n\n return createPgClientDriver<TSchema>(runtime.client as PgClientLike);\n }\n\n if (runtime.source === \"pool\") {\n return createMysqlDriver<TSchema>(runtime.client as MysqlPoolLike);\n }\n\n return createMysqlDriver<TSchema>(runtime.client as MysqlConnectionLike);\n}\n\nexport function createDriverFromRuntime<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n): OrmDriver<TSchema, AutoDriverHandle<TClient>> {\n const runtime = resolveRuntime(options);\n\n switch (runtime.kind) {\n case \"prisma\":\n return createPrismaDriver<TSchema>({\n client: runtime.client as PrismaDriverConfig<TSchema>[\"client\"],\n models: options.prisma?.models,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n case \"drizzle\":\n return createDrizzleDriver<TSchema>({\n db: runtime.client as DrizzleDriverConfig<TSchema>[\"db\"],\n client: options.drizzle?.client,\n dialect: resolveDialect(runtime, options.dialect) as DrizzleDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n case \"kysely\":\n return createKyselyDriver<TSchema>({\n db: runtime.client as KyselyDriverConfig<TSchema>[\"db\"],\n dialect: resolveDialect(runtime, options.dialect) as KyselyDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n case \"sql\":\n return createSqlDriverFromRuntime<TSchema>(\n runtime,\n resolveDialect(runtime, options.dialect),\n ) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n case \"mongo\": {\n const db = resolveMongoDb(runtime, options);\n const sessionSource = resolveMongoSessionSource(runtime, db, options);\n\n return createMongoDriver<TSchema>({\n collections: options.mongo?.collections,\n db,\n client: sessionSource.client,\n startSession: sessionSource.startSession,\n transforms: options.mongo?.transforms,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mongoose\": {\n const connection = runtime.client as MongooseConnectionLike;\n return createMongooseDriver<TSchema>({\n models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),\n connection,\n startSession: options.mongoose?.startSession,\n transforms: options.mongoose?.transforms,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n }\n}\n\nexport function createOrmFromRuntime<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: CreateOrmFromRuntimeOptions<TSchema, TClient>,\n): OrmClient<TSchema, AutoDriverHandle<TClient>> {\n const driver = createDriverFromRuntime(options);\n return createOrm({\n schema: options.schema,\n driver,\n }) as OrmClient<TSchema, AutoDriverHandle<TClient>>;\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/shared.ts"],"sourcesContent":["import {\n createOrm,\n type OrmClient,\n type OrmDriver,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { KyselyDialect, KyselyDriverConfig } from \"@farming-labs/orm-kysely\";\nimport type { MongoDriverConfig } from \"@farming-labs/orm-mongo\";\nimport type { MongooseDriverConfig } from \"@farming-labs/orm-mongoose\";\nimport type { PrismaDriverConfig } from \"@farming-labs/orm-prisma\";\nimport type {\n MysqlConnectionLike,\n MysqlPoolLike,\n PgClientLike,\n PgPoolLike,\n SqliteDatabaseLike,\n} from \"@farming-labs/orm-sql\";\nimport {\n inferMongooseModels,\n resolveDialect,\n resolveMongoDb,\n resolveMongoSessionSource,\n resolveRuntime,\n type AutoDriverHandle,\n type CreateDriverFromRuntimeOptions,\n type CreateOrmFromRuntimeOptions,\n type MongooseConnectionLike,\n} from \"./shared\";\n\nasync function createSqlDriverFromRuntime<TSchema extends SchemaDefinition<any>>(\n runtime: Awaited<ReturnType<typeof resolveRuntime>>,\n dialect: ReturnType<typeof resolveDialect>,\n) {\n const { createMysqlDriver, createPgClientDriver, createPgPoolDriver, createSqliteDriver } =\n await import(\"@farming-labs/orm-sql\");\n\n if (dialect === \"sqlite\") {\n return createSqliteDriver<TSchema>(runtime.client as SqliteDatabaseLike);\n }\n\n if (dialect === \"postgres\") {\n if (runtime.source === \"pool\") {\n return createPgPoolDriver<TSchema>(runtime.client as PgPoolLike);\n }\n\n return createPgClientDriver<TSchema>(runtime.client as PgClientLike);\n }\n\n if (runtime.source === \"pool\") {\n return createMysqlDriver<TSchema>(runtime.client as MysqlPoolLike);\n }\n\n return createMysqlDriver<TSchema>(runtime.client as MysqlConnectionLike);\n}\n\nexport async function createDriverFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmDriver<TSchema, AutoDriverHandle<TClient>>> {\n const runtime = resolveRuntime(options);\n\n switch (runtime.kind) {\n case \"prisma\": {\n const { createPrismaDriver } = await import(\"@farming-labs/orm-prisma\");\n return createPrismaDriver<TSchema>({\n client: runtime.client as PrismaDriverConfig<TSchema>[\"client\"],\n models: options.prisma?.models,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"drizzle\": {\n const { createDrizzleDriver } = await import(\"@farming-labs/orm-drizzle\");\n return createDrizzleDriver<TSchema>({\n db: runtime.client as DrizzleDriverConfig<TSchema>[\"db\"],\n client: options.drizzle?.client,\n dialect: resolveDialect(runtime, options.dialect) as DrizzleDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"kysely\": {\n const { createKyselyDriver } = await import(\"@farming-labs/orm-kysely\");\n return createKyselyDriver<TSchema>({\n db: runtime.client as KyselyDriverConfig<TSchema>[\"db\"],\n dialect: resolveDialect(runtime, options.dialect) as KyselyDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sql\":\n return (await createSqlDriverFromRuntime<TSchema>(\n runtime,\n resolveDialect(runtime, options.dialect),\n )) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n case \"mongo\": {\n const { createMongoDriver } = await import(\"@farming-labs/orm-mongo\");\n const db = resolveMongoDb(runtime, options);\n const sessionSource = resolveMongoSessionSource(runtime, db, options);\n\n return createMongoDriver<TSchema>({\n collections: options.mongo?.collections,\n db,\n client: sessionSource.client,\n startSession: sessionSource.startSession,\n transforms: options.mongo?.transforms as MongoDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mongoose\": {\n const { createMongooseDriver } = await import(\"@farming-labs/orm-mongoose\");\n const connection = runtime.client as MongooseConnectionLike;\n\n return createMongooseDriver<TSchema>({\n models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),\n connection,\n startSession: options.mongoose?.startSession,\n transforms: options.mongoose?.transforms as MongooseDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n }\n}\n\nexport async function createOrmFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateOrmFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmClient<TSchema, AutoDriverHandle<TClient>>> {\n const driver = await createDriverFromRuntime(options);\n return createOrm({\n schema: options.schema,\n driver,\n }) as OrmClient<TSchema, AutoDriverHandle<TClient>>;\n}\n\nexport type {\n AutoDialect,\n AutoDriverHandle,\n CreateDriverFromRuntimeOptions,\n CreateOrmFromRuntimeOptions,\n MongooseConnectionLike,\n} from \"./shared\";\n","import { createManifest, requireDatabaseRuntime } from \"@farming-labs/orm\";\nimport type {\n DetectedDatabaseDialect,\n DetectedDatabaseRuntime,\n ModelName,\n OrmDriverHandle,\n SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type {\n MongoCollectionMap,\n MongoDbLike,\n MongoDriverConfig,\n MongoSessionLike,\n MongoSessionSourceLike,\n} from \"@farming-labs/orm-mongo\";\nimport type {\n MongooseFieldTransform,\n MongooseModelLike,\n MongooseSessionLike,\n MongooseSessionSourceLike,\n} from \"@farming-labs/orm-mongoose\";\nimport type { KyselyDialect } from \"@farming-labs/orm-kysely\";\nimport type { PrismaDriverConfig, PrismaDriverHandle } from \"@farming-labs/orm-prisma\";\nimport type { SqlDriverHandle } from \"@farming-labs/orm-sql\";\n\nexport type AutoDialect = DetectedDatabaseDialect;\n\nexport type AutoDriverHandle<TClient = unknown> =\n | PrismaDriverHandle\n | SqlDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"drizzle\", TClient, DrizzleDialect>\n | OrmDriverHandle<\"kysely\", TClient, KyselyDialect>\n | OrmDriverHandle<\"mongo\", unknown>\n | OrmDriverHandle<\"mongoose\", unknown>;\n\nexport type CreateDriverFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = {\n schema: TSchema;\n client?: TClient;\n runtime?: DetectedDatabaseRuntime<TClient>;\n dialect?: AutoDialect;\n databaseName?: string;\n prisma?: Pick<PrismaDriverConfig<TSchema>, \"models\"> & {\n databaseUrl?: string;\n packageRoot?: string;\n };\n drizzle?: Pick<DrizzleDriverConfig<TSchema>, \"client\">;\n mongo?: {\n collections?: MongoCollectionMap<TSchema>;\n db?: MongoDbLike;\n transforms?: MongoDriverConfig<TSchema>[\"transforms\"];\n startSession?: () => Promise<MongoSessionLike>;\n };\n mongoose?: {\n models?: Record<ModelName<TSchema>, MongooseModelLike>;\n transforms?: Partial<Record<string, Partial<Record<string, MongooseFieldTransform>>>>;\n startSession?: () => Promise<MongooseSessionLike>;\n };\n};\n\nexport type CreateOrmFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type MongooseConnectionLike = MongooseSessionSourceLike & {\n models?: Record<string, MongooseModelLike & { collection?: { collectionName?: string } }>;\n};\n\ntype MongoClientLike = MongoSessionSourceLike & {\n db(name?: string): MongoDbLike;\n};\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\";\n}\n\nexport function hasFunction<TName extends string>(\n value: unknown,\n name: TName,\n): value is Record<TName, (...args: any[]) => unknown> {\n return isRecord(value) && typeof value[name] === \"function\";\n}\n\nexport function resolveRuntime<TClient>(\n options: CreateDriverFromRuntimeOptions<any, TClient>,\n): DetectedDatabaseRuntime<TClient> {\n if (options.runtime) {\n return options.runtime;\n }\n\n if (options.client === undefined) {\n throw new Error(\n 'createDriverFromRuntime() requires either a detected \"runtime\" or a raw \"client\".',\n );\n }\n\n return requireDatabaseRuntime(options.client);\n}\n\nexport function resolveDialect(\n runtime: DetectedDatabaseRuntime<any>,\n override?: AutoDialect,\n): AutoDialect {\n const dialect = override ?? runtime.dialect;\n if (!dialect) {\n throw new Error(\n `Could not determine the database dialect for the detected ${runtime.kind} runtime. Pass a \"dialect\" option explicitly.`,\n );\n }\n return dialect;\n}\n\nexport function inferMongooseModels<TSchema extends SchemaDefinition<any>>(\n schema: TSchema,\n connection: MongooseConnectionLike,\n) {\n const manifest = createManifest(schema);\n const registeredModels = Object.values(connection.models ?? {});\n const models = {} as Record<ModelName<TSchema>, MongooseModelLike>;\n\n for (const modelName of Object.keys(schema.models) as Array<ModelName<TSchema>>) {\n const expectedTable = manifest.models[modelName].table;\n const inferredModel =\n registeredModels.find(\n (candidate) => candidate.collection?.collectionName === expectedTable,\n ) ?? connection.models?.[String(modelName)];\n\n if (!inferredModel) {\n throw new Error(\n `Could not infer a Mongoose model for schema model \"${String(modelName)}\". Register a model for collection \"${expectedTable}\" or pass mongoose.models explicitly.`,\n );\n }\n\n models[modelName] = inferredModel;\n }\n\n return models;\n}\n\nexport function resolveMongoDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.db) {\n return options.mongo.db;\n }\n\n if (runtime.source === \"db\") {\n return runtime.client as MongoDbLike;\n }\n\n const databaseName = options.databaseName;\n if (!databaseName) {\n throw new Error(\n 'MongoClient auto-creation requires a \"databaseName\" option so the helper can resolve the target database.',\n );\n }\n\n return (runtime.client as MongoClientLike).db(databaseName);\n}\n\nexport function resolveMongoSessionSource(\n runtime: DetectedDatabaseRuntime<any>,\n db: MongoDbLike,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.startSession) {\n return {\n client: undefined,\n startSession: options.mongo.startSession,\n };\n }\n\n if (runtime.source === \"client\" && hasFunction(runtime.client, \"startSession\")) {\n return {\n client: runtime.client as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n const dbClient = isRecord(db) ? (db as Record<string, unknown>)[\"client\"] : undefined;\n if (hasFunction(dbClient, \"startSession\")) {\n return {\n client: dbClient as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n return {\n client: undefined,\n startSession: undefined,\n };\n}\n"],"mappings":"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","names":["import_orm"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,35 +1,14 @@
|
|
|
1
|
-
import { SchemaDefinition,
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
1
|
+
import { SchemaDefinition, OrmDriver, OrmClient } from '@farming-labs/orm';
|
|
2
|
+
import { C as CreateDriverFromRuntimeOptions, A as AutoDriverHandle, a as CreateOrmFromRuntimeOptions } from './shared-CC7XYRno.cjs';
|
|
3
|
+
export { b as AutoDialect, M as MongooseConnectionLike } from './shared-CC7XYRno.cjs';
|
|
4
|
+
import '@farming-labs/orm-drizzle';
|
|
5
|
+
import '@farming-labs/orm-mongo';
|
|
6
|
+
import '@farming-labs/orm-mongoose';
|
|
7
|
+
import '@farming-labs/orm-kysely';
|
|
8
|
+
import '@farming-labs/orm-prisma';
|
|
9
|
+
import '@farming-labs/orm-sql';
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
type CreateDriverFromRuntimeOptions<TSchema extends SchemaDefinition<any>, TClient = unknown> = {
|
|
12
|
-
schema: TSchema;
|
|
13
|
-
client?: TClient;
|
|
14
|
-
runtime?: DetectedDatabaseRuntime<TClient>;
|
|
15
|
-
dialect?: AutoDialect;
|
|
16
|
-
databaseName?: string;
|
|
17
|
-
prisma?: Pick<PrismaDriverConfig<TSchema>, "models">;
|
|
18
|
-
drizzle?: Pick<DrizzleDriverConfig<TSchema>, "client">;
|
|
19
|
-
mongo?: {
|
|
20
|
-
collections?: MongoCollectionMap<TSchema>;
|
|
21
|
-
db?: MongoDbLike;
|
|
22
|
-
transforms?: MongoDriverConfig<TSchema>["transforms"];
|
|
23
|
-
startSession?: () => Promise<MongoSessionLike>;
|
|
24
|
-
};
|
|
25
|
-
mongoose?: {
|
|
26
|
-
models?: Record<ModelName<TSchema>, MongooseModelLike>;
|
|
27
|
-
transforms?: Partial<Record<string, Partial<Record<string, MongooseFieldTransform>>>>;
|
|
28
|
-
startSession?: () => Promise<MongooseSessionLike>;
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
type CreateOrmFromRuntimeOptions<TSchema extends SchemaDefinition<any>, TClient = unknown> = CreateDriverFromRuntimeOptions<TSchema, TClient>;
|
|
32
|
-
declare function createDriverFromRuntime<TSchema extends SchemaDefinition<any>, TClient = unknown>(options: CreateDriverFromRuntimeOptions<TSchema, TClient>): OrmDriver<TSchema, AutoDriverHandle<TClient>>;
|
|
33
|
-
declare function createOrmFromRuntime<TSchema extends SchemaDefinition<any>, TClient = unknown>(options: CreateOrmFromRuntimeOptions<TSchema, TClient>): OrmClient<TSchema, AutoDriverHandle<TClient>>;
|
|
11
|
+
declare function createDriverFromRuntime<TSchema extends SchemaDefinition<any>, TClient = unknown>(options: CreateDriverFromRuntimeOptions<TSchema, TClient>): Promise<OrmDriver<TSchema, AutoDriverHandle<TClient>>>;
|
|
12
|
+
declare function createOrmFromRuntime<TSchema extends SchemaDefinition<any>, TClient = unknown>(options: CreateOrmFromRuntimeOptions<TSchema, TClient>): Promise<OrmClient<TSchema, AutoDriverHandle<TClient>>>;
|
|
34
13
|
|
|
35
|
-
export { createDriverFromRuntime, createOrmFromRuntime };
|
|
14
|
+
export { AutoDriverHandle, CreateDriverFromRuntimeOptions, CreateOrmFromRuntimeOptions, createDriverFromRuntime, createOrmFromRuntime };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,35 +1,14 @@
|
|
|
1
|
-
import { SchemaDefinition,
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
1
|
+
import { SchemaDefinition, OrmDriver, OrmClient } from '@farming-labs/orm';
|
|
2
|
+
import { C as CreateDriverFromRuntimeOptions, A as AutoDriverHandle, a as CreateOrmFromRuntimeOptions } from './shared-CC7XYRno.js';
|
|
3
|
+
export { b as AutoDialect, M as MongooseConnectionLike } from './shared-CC7XYRno.js';
|
|
4
|
+
import '@farming-labs/orm-drizzle';
|
|
5
|
+
import '@farming-labs/orm-mongo';
|
|
6
|
+
import '@farming-labs/orm-mongoose';
|
|
7
|
+
import '@farming-labs/orm-kysely';
|
|
8
|
+
import '@farming-labs/orm-prisma';
|
|
9
|
+
import '@farming-labs/orm-sql';
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
type CreateDriverFromRuntimeOptions<TSchema extends SchemaDefinition<any>, TClient = unknown> = {
|
|
12
|
-
schema: TSchema;
|
|
13
|
-
client?: TClient;
|
|
14
|
-
runtime?: DetectedDatabaseRuntime<TClient>;
|
|
15
|
-
dialect?: AutoDialect;
|
|
16
|
-
databaseName?: string;
|
|
17
|
-
prisma?: Pick<PrismaDriverConfig<TSchema>, "models">;
|
|
18
|
-
drizzle?: Pick<DrizzleDriverConfig<TSchema>, "client">;
|
|
19
|
-
mongo?: {
|
|
20
|
-
collections?: MongoCollectionMap<TSchema>;
|
|
21
|
-
db?: MongoDbLike;
|
|
22
|
-
transforms?: MongoDriverConfig<TSchema>["transforms"];
|
|
23
|
-
startSession?: () => Promise<MongoSessionLike>;
|
|
24
|
-
};
|
|
25
|
-
mongoose?: {
|
|
26
|
-
models?: Record<ModelName<TSchema>, MongooseModelLike>;
|
|
27
|
-
transforms?: Partial<Record<string, Partial<Record<string, MongooseFieldTransform>>>>;
|
|
28
|
-
startSession?: () => Promise<MongooseSessionLike>;
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
type CreateOrmFromRuntimeOptions<TSchema extends SchemaDefinition<any>, TClient = unknown> = CreateDriverFromRuntimeOptions<TSchema, TClient>;
|
|
32
|
-
declare function createDriverFromRuntime<TSchema extends SchemaDefinition<any>, TClient = unknown>(options: CreateDriverFromRuntimeOptions<TSchema, TClient>): OrmDriver<TSchema, AutoDriverHandle<TClient>>;
|
|
33
|
-
declare function createOrmFromRuntime<TSchema extends SchemaDefinition<any>, TClient = unknown>(options: CreateOrmFromRuntimeOptions<TSchema, TClient>): OrmClient<TSchema, AutoDriverHandle<TClient>>;
|
|
11
|
+
declare function createDriverFromRuntime<TSchema extends SchemaDefinition<any>, TClient = unknown>(options: CreateDriverFromRuntimeOptions<TSchema, TClient>): Promise<OrmDriver<TSchema, AutoDriverHandle<TClient>>>;
|
|
12
|
+
declare function createOrmFromRuntime<TSchema extends SchemaDefinition<any>, TClient = unknown>(options: CreateOrmFromRuntimeOptions<TSchema, TClient>): Promise<OrmClient<TSchema, AutoDriverHandle<TClient>>>;
|
|
34
13
|
|
|
35
|
-
export { createDriverFromRuntime, createOrmFromRuntime };
|
|
14
|
+
export { AutoDriverHandle, CreateDriverFromRuntimeOptions, CreateOrmFromRuntimeOptions, createDriverFromRuntime, createOrmFromRuntime };
|