@farming-labs/orm-runtime 0.0.19

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,191 @@
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
+ createDriverFromRuntime: () => createDriverFromRuntime,
24
+ createOrmFromRuntime: () => createOrmFromRuntime
25
+ });
26
+ module.exports = __toCommonJS(index_exports);
27
+ 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
+ function isRecord(value) {
35
+ return !!value && typeof value === "object";
36
+ }
37
+ function hasFunction(value, name) {
38
+ return isRecord(value) && typeof value[name] === "function";
39
+ }
40
+ function resolveRuntime(options) {
41
+ if (options.runtime) {
42
+ return options.runtime;
43
+ }
44
+ if (options.client === void 0) {
45
+ throw new Error(
46
+ 'createDriverFromRuntime() requires either a detected "runtime" or a raw "client".'
47
+ );
48
+ }
49
+ return (0, import_orm.requireDatabaseRuntime)(options.client);
50
+ }
51
+ function resolveDialect(runtime, override) {
52
+ const dialect = override ?? runtime.dialect;
53
+ if (!dialect) {
54
+ throw new Error(
55
+ `Could not determine the database dialect for the detected ${runtime.kind} runtime. Pass a "dialect" option explicitly.`
56
+ );
57
+ }
58
+ return dialect;
59
+ }
60
+ function inferMongooseModels(schema, connection) {
61
+ const manifest = (0, import_orm.createManifest)(schema);
62
+ const registeredModels = Object.values(connection.models ?? {});
63
+ const models = {};
64
+ for (const modelName of Object.keys(schema.models)) {
65
+ const expectedTable = manifest.models[modelName].table;
66
+ const inferredModel = registeredModels.find(
67
+ (candidate) => candidate.collection?.collectionName === expectedTable
68
+ ) ?? connection.models?.[String(modelName)];
69
+ if (!inferredModel) {
70
+ throw new Error(
71
+ `Could not infer a Mongoose model for schema model "${String(modelName)}". Register a model for collection "${expectedTable}" or pass mongoose.models explicitly.`
72
+ );
73
+ }
74
+ models[modelName] = inferredModel;
75
+ }
76
+ return models;
77
+ }
78
+ function resolveMongoDb(runtime, options) {
79
+ if (options.mongo?.db) {
80
+ return options.mongo.db;
81
+ }
82
+ if (runtime.source === "db") {
83
+ return runtime.client;
84
+ }
85
+ const databaseName = options.databaseName;
86
+ if (!databaseName) {
87
+ throw new Error(
88
+ 'MongoClient auto-creation requires a "databaseName" option so the helper can resolve the target database.'
89
+ );
90
+ }
91
+ return runtime.client.db(databaseName);
92
+ }
93
+ function resolveMongoSessionSource(runtime, db, options) {
94
+ if (options.mongo?.startSession) {
95
+ return {
96
+ client: void 0,
97
+ startSession: options.mongo.startSession
98
+ };
99
+ }
100
+ if (runtime.source === "client" && hasFunction(runtime.client, "startSession")) {
101
+ return {
102
+ client: runtime.client,
103
+ startSession: void 0
104
+ };
105
+ }
106
+ const dbClient = isRecord(db) ? db["client"] : void 0;
107
+ if (hasFunction(dbClient, "startSession")) {
108
+ return {
109
+ client: dbClient,
110
+ startSession: void 0
111
+ };
112
+ }
113
+ return {
114
+ client: void 0,
115
+ startSession: void 0
116
+ };
117
+ }
118
+ function createSqlDriverFromRuntime(runtime, dialect) {
119
+ if (dialect === "sqlite") {
120
+ return (0, import_orm_sql.createSqliteDriver)(runtime.client);
121
+ }
122
+ if (dialect === "postgres") {
123
+ if (runtime.source === "pool") {
124
+ return (0, import_orm_sql.createPgPoolDriver)(runtime.client);
125
+ }
126
+ return (0, import_orm_sql.createPgClientDriver)(runtime.client);
127
+ }
128
+ if (runtime.source === "pool") {
129
+ return (0, import_orm_sql.createMysqlDriver)(runtime.client);
130
+ }
131
+ return (0, import_orm_sql.createMysqlDriver)(runtime.client);
132
+ }
133
+ function createDriverFromRuntime(options) {
134
+ const runtime = resolveRuntime(options);
135
+ switch (runtime.kind) {
136
+ case "prisma":
137
+ return (0, import_orm_prisma.createPrismaDriver)({
138
+ client: runtime.client,
139
+ models: options.prisma?.models
140
+ });
141
+ case "drizzle":
142
+ return (0, import_orm_drizzle.createDrizzleDriver)({
143
+ db: runtime.client,
144
+ client: options.drizzle?.client,
145
+ dialect: resolveDialect(runtime, options.dialect)
146
+ });
147
+ case "kysely":
148
+ return (0, import_orm_kysely.createKyselyDriver)({
149
+ db: runtime.client,
150
+ dialect: resolveDialect(runtime, options.dialect)
151
+ });
152
+ case "sql":
153
+ return createSqlDriverFromRuntime(
154
+ runtime,
155
+ resolveDialect(runtime, options.dialect)
156
+ );
157
+ case "mongo": {
158
+ const db = resolveMongoDb(runtime, options);
159
+ const sessionSource = resolveMongoSessionSource(runtime, db, options);
160
+ return (0, import_orm_mongo.createMongoDriver)({
161
+ collections: options.mongo?.collections,
162
+ db,
163
+ client: sessionSource.client,
164
+ startSession: sessionSource.startSession,
165
+ transforms: options.mongo?.transforms
166
+ });
167
+ }
168
+ case "mongoose": {
169
+ const connection = runtime.client;
170
+ return (0, import_orm_mongoose.createMongooseDriver)({
171
+ models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),
172
+ connection,
173
+ startSession: options.mongoose?.startSession,
174
+ transforms: options.mongoose?.transforms
175
+ });
176
+ }
177
+ }
178
+ }
179
+ function createOrmFromRuntime(options) {
180
+ const driver = createDriverFromRuntime(options);
181
+ return (0, import_orm.createOrm)({
182
+ schema: options.schema,
183
+ driver
184
+ });
185
+ }
186
+ // Annotate the CommonJS export names for ESM import in node:
187
+ 0 && (module.exports = {
188
+ createDriverFromRuntime,
189
+ createOrmFromRuntime
190
+ });
191
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +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":[]}
@@ -0,0 +1,35 @@
1
+ import { SchemaDefinition, DetectedDatabaseRuntime, DetectedDatabaseDialect, ModelName, OrmDriver, OrmDriverHandle, OrmClient } from '@farming-labs/orm';
2
+ import { DrizzleDriverConfig, DrizzleDialect } from '@farming-labs/orm-drizzle';
3
+ import { KyselyDialect } from '@farming-labs/orm-kysely';
4
+ import { MongoCollectionMap, MongoDbLike, MongoDriverConfig, MongoSessionLike } from '@farming-labs/orm-mongo';
5
+ import { MongooseModelLike, MongooseFieldTransform, MongooseSessionLike } from '@farming-labs/orm-mongoose';
6
+ import { PrismaDriverConfig, PrismaDriverHandle } from '@farming-labs/orm-prisma';
7
+ import { SqlDriverHandle } from '@farming-labs/orm-sql';
8
+
9
+ type AutoDialect = DetectedDatabaseDialect;
10
+ type AutoDriverHandle<TClient = unknown> = PrismaDriverHandle | SqlDriverHandle<TClient, AutoDialect> | OrmDriverHandle<"drizzle", TClient, DrizzleDialect> | OrmDriverHandle<"kysely", TClient, KyselyDialect> | OrmDriverHandle<"mongo", unknown> | OrmDriverHandle<"mongoose", unknown>;
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>>;
34
+
35
+ export { createDriverFromRuntime, createOrmFromRuntime };
@@ -0,0 +1,35 @@
1
+ import { SchemaDefinition, DetectedDatabaseRuntime, DetectedDatabaseDialect, ModelName, OrmDriver, OrmDriverHandle, OrmClient } from '@farming-labs/orm';
2
+ import { DrizzleDriverConfig, DrizzleDialect } from '@farming-labs/orm-drizzle';
3
+ import { KyselyDialect } from '@farming-labs/orm-kysely';
4
+ import { MongoCollectionMap, MongoDbLike, MongoDriverConfig, MongoSessionLike } from '@farming-labs/orm-mongo';
5
+ import { MongooseModelLike, MongooseFieldTransform, MongooseSessionLike } from '@farming-labs/orm-mongoose';
6
+ import { PrismaDriverConfig, PrismaDriverHandle } from '@farming-labs/orm-prisma';
7
+ import { SqlDriverHandle } from '@farming-labs/orm-sql';
8
+
9
+ type AutoDialect = DetectedDatabaseDialect;
10
+ type AutoDriverHandle<TClient = unknown> = PrismaDriverHandle | SqlDriverHandle<TClient, AutoDialect> | OrmDriverHandle<"drizzle", TClient, DrizzleDialect> | OrmDriverHandle<"kysely", TClient, KyselyDialect> | OrmDriverHandle<"mongo", unknown> | OrmDriverHandle<"mongoose", unknown>;
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>>;
34
+
35
+ export { createDriverFromRuntime, createOrmFromRuntime };
package/dist/index.js ADDED
@@ -0,0 +1,184 @@
1
+ // src/index.ts
2
+ import {
3
+ createManifest,
4
+ createOrm,
5
+ requireDatabaseRuntime
6
+ } from "@farming-labs/orm";
7
+ import {
8
+ createDrizzleDriver
9
+ } from "@farming-labs/orm-drizzle";
10
+ import {
11
+ createKyselyDriver
12
+ } from "@farming-labs/orm-kysely";
13
+ import {
14
+ createMongoDriver
15
+ } from "@farming-labs/orm-mongo";
16
+ import {
17
+ createMongooseDriver
18
+ } from "@farming-labs/orm-mongoose";
19
+ import {
20
+ createPrismaDriver
21
+ } from "@farming-labs/orm-prisma";
22
+ import {
23
+ createMysqlDriver,
24
+ createPgClientDriver,
25
+ createPgPoolDriver,
26
+ createSqliteDriver
27
+ } from "@farming-labs/orm-sql";
28
+ function isRecord(value) {
29
+ return !!value && typeof value === "object";
30
+ }
31
+ function hasFunction(value, name) {
32
+ return isRecord(value) && typeof value[name] === "function";
33
+ }
34
+ function resolveRuntime(options) {
35
+ if (options.runtime) {
36
+ return options.runtime;
37
+ }
38
+ if (options.client === void 0) {
39
+ throw new Error(
40
+ 'createDriverFromRuntime() requires either a detected "runtime" or a raw "client".'
41
+ );
42
+ }
43
+ return requireDatabaseRuntime(options.client);
44
+ }
45
+ function resolveDialect(runtime, override) {
46
+ const dialect = override ?? runtime.dialect;
47
+ if (!dialect) {
48
+ throw new Error(
49
+ `Could not determine the database dialect for the detected ${runtime.kind} runtime. Pass a "dialect" option explicitly.`
50
+ );
51
+ }
52
+ return dialect;
53
+ }
54
+ function inferMongooseModels(schema, connection) {
55
+ const manifest = createManifest(schema);
56
+ const registeredModels = Object.values(connection.models ?? {});
57
+ const models = {};
58
+ for (const modelName of Object.keys(schema.models)) {
59
+ const expectedTable = manifest.models[modelName].table;
60
+ const inferredModel = registeredModels.find(
61
+ (candidate) => candidate.collection?.collectionName === expectedTable
62
+ ) ?? connection.models?.[String(modelName)];
63
+ if (!inferredModel) {
64
+ throw new Error(
65
+ `Could not infer a Mongoose model for schema model "${String(modelName)}". Register a model for collection "${expectedTable}" or pass mongoose.models explicitly.`
66
+ );
67
+ }
68
+ models[modelName] = inferredModel;
69
+ }
70
+ return models;
71
+ }
72
+ function resolveMongoDb(runtime, options) {
73
+ if (options.mongo?.db) {
74
+ return options.mongo.db;
75
+ }
76
+ if (runtime.source === "db") {
77
+ return runtime.client;
78
+ }
79
+ const databaseName = options.databaseName;
80
+ if (!databaseName) {
81
+ throw new Error(
82
+ 'MongoClient auto-creation requires a "databaseName" option so the helper can resolve the target database.'
83
+ );
84
+ }
85
+ return runtime.client.db(databaseName);
86
+ }
87
+ function resolveMongoSessionSource(runtime, db, options) {
88
+ if (options.mongo?.startSession) {
89
+ return {
90
+ client: void 0,
91
+ startSession: options.mongo.startSession
92
+ };
93
+ }
94
+ if (runtime.source === "client" && hasFunction(runtime.client, "startSession")) {
95
+ return {
96
+ client: runtime.client,
97
+ startSession: void 0
98
+ };
99
+ }
100
+ const dbClient = isRecord(db) ? db["client"] : void 0;
101
+ if (hasFunction(dbClient, "startSession")) {
102
+ return {
103
+ client: dbClient,
104
+ startSession: void 0
105
+ };
106
+ }
107
+ return {
108
+ client: void 0,
109
+ startSession: void 0
110
+ };
111
+ }
112
+ function createSqlDriverFromRuntime(runtime, dialect) {
113
+ if (dialect === "sqlite") {
114
+ return createSqliteDriver(runtime.client);
115
+ }
116
+ if (dialect === "postgres") {
117
+ if (runtime.source === "pool") {
118
+ return createPgPoolDriver(runtime.client);
119
+ }
120
+ return createPgClientDriver(runtime.client);
121
+ }
122
+ if (runtime.source === "pool") {
123
+ return createMysqlDriver(runtime.client);
124
+ }
125
+ return createMysqlDriver(runtime.client);
126
+ }
127
+ function createDriverFromRuntime(options) {
128
+ const runtime = resolveRuntime(options);
129
+ switch (runtime.kind) {
130
+ case "prisma":
131
+ return createPrismaDriver({
132
+ client: runtime.client,
133
+ models: options.prisma?.models
134
+ });
135
+ case "drizzle":
136
+ return createDrizzleDriver({
137
+ db: runtime.client,
138
+ client: options.drizzle?.client,
139
+ dialect: resolveDialect(runtime, options.dialect)
140
+ });
141
+ case "kysely":
142
+ return createKyselyDriver({
143
+ db: runtime.client,
144
+ dialect: resolveDialect(runtime, options.dialect)
145
+ });
146
+ case "sql":
147
+ return createSqlDriverFromRuntime(
148
+ runtime,
149
+ resolveDialect(runtime, options.dialect)
150
+ );
151
+ case "mongo": {
152
+ const db = resolveMongoDb(runtime, options);
153
+ const sessionSource = resolveMongoSessionSource(runtime, db, options);
154
+ return createMongoDriver({
155
+ collections: options.mongo?.collections,
156
+ db,
157
+ client: sessionSource.client,
158
+ startSession: sessionSource.startSession,
159
+ transforms: options.mongo?.transforms
160
+ });
161
+ }
162
+ case "mongoose": {
163
+ const connection = runtime.client;
164
+ return createMongooseDriver({
165
+ models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),
166
+ connection,
167
+ startSession: options.mongoose?.startSession,
168
+ transforms: options.mongoose?.transforms
169
+ });
170
+ }
171
+ }
172
+ }
173
+ function createOrmFromRuntime(options) {
174
+ const driver = createDriverFromRuntime(options);
175
+ return createOrm({
176
+ schema: options.schema,
177
+ driver
178
+ });
179
+ }
180
+ export {
181
+ createDriverFromRuntime,
182
+ createOrmFromRuntime
183
+ };
184
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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":[]}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@farming-labs/orm-runtime",
3
+ "version": "0.0.19",
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.19",
23
+ "@farming-labs/orm-drizzle": "0.0.19",
24
+ "@farming-labs/orm-kysely": "0.0.19",
25
+ "@farming-labs/orm-mongo": "0.0.19",
26
+ "@farming-labs/orm-mongoose": "0.0.19",
27
+ "@farming-labs/orm-prisma": "0.0.19",
28
+ "@farming-labs/orm-sql": "0.0.19"
29
+ },
30
+ "devDependencies": {
31
+ "tsup": "^8.4.0"
32
+ },
33
+ "scripts": {
34
+ "build": "tsx ./scripts/build.ts",
35
+ "test": "vitest run --config vitest.local.config.ts",
36
+ "typecheck": "tsc --noEmit"
37
+ }
38
+ }