@farming-labs/orm-mikroorm 0.0.40

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,283 @@
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
+ createMikroormDriver: () => createMikroormDriver,
24
+ detectMikroormDialect: () => detectMikroormDialect,
25
+ normalizeMikroormDialect: () => normalizeMikroormDialect,
26
+ resolveMikroormDialect: () => resolveMikroormDialect
27
+ });
28
+ module.exports = __toCommonJS(index_exports);
29
+ var import_orm = require("@farming-labs/orm");
30
+ var import_orm_sql = require("@farming-labs/orm-sql");
31
+ function isRecord(value) {
32
+ return !!value && typeof value === "object";
33
+ }
34
+ function hasFunction(value, name) {
35
+ return isRecord(value) && typeof value[name] === "function";
36
+ }
37
+ function toNumber(value) {
38
+ if (typeof value === "number" && Number.isFinite(value)) return value;
39
+ if (typeof value === "bigint") return Number(value);
40
+ return void 0;
41
+ }
42
+ function getConstructorName(value) {
43
+ if (!isRecord(value)) return "";
44
+ const constructor = value.constructor;
45
+ return typeof constructor?.name === "string" ? constructor.name : "";
46
+ }
47
+ function isSqlSelectLike(sql) {
48
+ return /^\s*(select|with|pragma|explain)\b/i.test(sql);
49
+ }
50
+ function constructorDialect(value) {
51
+ if (typeof value === "string") {
52
+ switch (value) {
53
+ case "postgres":
54
+ case "postgresql":
55
+ case "cockroachdb":
56
+ case "aurora-postgres":
57
+ return "postgres";
58
+ case "mysql":
59
+ case "mariadb":
60
+ case "aurora-mysql":
61
+ return "mysql";
62
+ case "sqlite":
63
+ case "better-sqlite":
64
+ case "better-sqlite3":
65
+ case "sqljs":
66
+ return "sqlite";
67
+ default:
68
+ return void 0;
69
+ }
70
+ }
71
+ const constructorName = getConstructorName(value);
72
+ if (/postgre|pgsql|pg/i.test(constructorName)) return "postgres";
73
+ if (/mysql|maria/i.test(constructorName)) return "mysql";
74
+ if (/sqlite|sqljs|better.?sqlite/i.test(constructorName)) return "sqlite";
75
+ return void 0;
76
+ }
77
+ function getConfigValue(value, key) {
78
+ if (!isRecord(value) || !hasFunction(value, "get")) return void 0;
79
+ try {
80
+ return value.get(key);
81
+ } catch {
82
+ return void 0;
83
+ }
84
+ }
85
+ function isMikroormInstance(client) {
86
+ return hasFunction(client, "connect") && hasFunction(client, "close") && hasFunction(client, "isConnected") && isRecord(client) && isRecord(client.em) && hasFunction(client.em, "getConnection") && hasFunction(client.em, "transactional");
87
+ }
88
+ function normalizeMikroormDialect(value) {
89
+ return constructorDialect(value);
90
+ }
91
+ function detectMikroormDialect(client) {
92
+ const record = client;
93
+ const em = isRecord(record.em) ? record.em : void 0;
94
+ const config = isRecord(record.config) ? record.config : void 0;
95
+ const driver = isRecord(record.driver) ? record.driver : void 0;
96
+ const connection = hasFunction(client, "getConnection") ? client.getConnection() : hasFunction(em, "getConnection") ? em.getConnection() : hasFunction(driver, "getConnection") ? driver.getConnection() : void 0;
97
+ const platform = hasFunction(client, "getPlatform") ? client.getPlatform() : hasFunction(em, "getPlatform") ? em.getPlatform() : hasFunction(driver, "getPlatform") ? driver.getPlatform() : void 0;
98
+ const candidates = [
99
+ client,
100
+ em,
101
+ driver,
102
+ connection,
103
+ platform,
104
+ getConfigValue(config, "type"),
105
+ getConfigValue(config, "driver"),
106
+ getConfigValue(config, "driverOptions")
107
+ ];
108
+ for (const candidate of candidates) {
109
+ const dialect = normalizeMikroormDialect(candidate);
110
+ if (dialect) return dialect;
111
+ }
112
+ return void 0;
113
+ }
114
+ function resolveMikroormDialect(client, override) {
115
+ const dialect = override ?? detectMikroormDialect(client);
116
+ if (!dialect) {
117
+ throw new Error(
118
+ "Could not determine the MikroORM dialect. Pass `dialect` explicitly or use a supported SQL driver such as PostgreSQL, MySQL/MariaDB, or SQLite."
119
+ );
120
+ }
121
+ return dialect;
122
+ }
123
+ function mikroormDriverCapabilities(dialect) {
124
+ return {
125
+ numericIds: "generated",
126
+ supportsJSON: true,
127
+ supportsDates: true,
128
+ supportsBooleans: true,
129
+ supportsTransactions: true,
130
+ supportsSchemaNamespaces: dialect === "postgres",
131
+ supportsTransactionalDDL: dialect !== "mysql",
132
+ nativeRelationLoading: "partial",
133
+ textComparison: "database-default",
134
+ textMatching: {
135
+ equality: "database-default",
136
+ contains: "database-default",
137
+ ordering: "database-default"
138
+ },
139
+ upsert: "native",
140
+ returning: {
141
+ create: true,
142
+ update: true,
143
+ delete: false
144
+ },
145
+ returningMode: {
146
+ create: "record",
147
+ update: "record",
148
+ delete: "none"
149
+ },
150
+ nativeRelations: {
151
+ singularChains: true,
152
+ hasMany: true,
153
+ manyToMany: true,
154
+ filtered: false,
155
+ ordered: false,
156
+ paginated: false
157
+ }
158
+ };
159
+ }
160
+ function resolveEntityManager(client) {
161
+ if (isMikroormInstance(client)) {
162
+ const em = client.em;
163
+ if (hasFunction(em, "fork")) {
164
+ return em.fork({
165
+ clear: false,
166
+ useContext: false
167
+ });
168
+ }
169
+ return em;
170
+ }
171
+ return client;
172
+ }
173
+ function resolveConnection(client) {
174
+ const entityManager = resolveEntityManager(client);
175
+ return entityManager.getConnection();
176
+ }
177
+ async function ensureConnected(client) {
178
+ if (isMikroormInstance(client)) {
179
+ const connected = await client.isConnected();
180
+ if (!connected) {
181
+ await client.connect();
182
+ }
183
+ return;
184
+ }
185
+ const connection = client.getConnection();
186
+ if (hasFunction(connection, "isConnected")) {
187
+ const connected = await connection.isConnected();
188
+ if (connected) return;
189
+ }
190
+ if (hasFunction(connection, "ensureConnection")) {
191
+ await connection.ensureConnection();
192
+ return;
193
+ }
194
+ if (hasFunction(connection, "connect")) {
195
+ await connection.connect({ skipOnConnect: false });
196
+ }
197
+ }
198
+ function normalizeMikroormResult(sql, result) {
199
+ if (Array.isArray(result)) {
200
+ return {
201
+ rows: result,
202
+ affectedRows: isSqlSelectLike(sql) ? result.length : 0
203
+ };
204
+ }
205
+ if (!isRecord(result)) {
206
+ return {
207
+ rows: [],
208
+ affectedRows: 0
209
+ };
210
+ }
211
+ const typed = result;
212
+ const rows = Array.isArray(typed.rows) ? typed.rows : isRecord(typed.row) ? [typed.row] : isSqlSelectLike(sql) && !("affectedRows" in typed) ? [typed] : [];
213
+ return {
214
+ rows,
215
+ affectedRows: toNumber(typed.affectedRows) ?? (isSqlSelectLike(sql) ? rows.length : 0),
216
+ insertId: typed.insertId ?? typed.insertedIds?.[0]
217
+ };
218
+ }
219
+ async function executeQuery(connection, sql, params, dialect, transactionContext) {
220
+ const query = dialect === "postgres" ? sql.replace(/\$\d+\b/g, "?") : sql;
221
+ const method = isSqlSelectLike(sql) ? "all" : "run";
222
+ if (dialect === "sqlite" || dialect === "mysql" || dialect === "postgres") {
223
+ return normalizeMikroormResult(
224
+ sql,
225
+ await connection.execute(query, params, method, transactionContext)
226
+ );
227
+ }
228
+ return normalizeMikroormResult(
229
+ sql,
230
+ await connection.execute(query, params, void 0, transactionContext)
231
+ );
232
+ }
233
+ function createMikroormAdapter(client, dialect) {
234
+ return {
235
+ dialect,
236
+ async query(sql, params) {
237
+ await ensureConnected(client);
238
+ return executeQuery(resolveConnection(client), sql, params, dialect);
239
+ },
240
+ async transaction(run) {
241
+ await ensureConnected(client);
242
+ const entityManager = resolveEntityManager(client);
243
+ return entityManager.transactional(async (transactionEntityManager) => {
244
+ const connection = transactionEntityManager.getConnection();
245
+ const transactionContext = transactionEntityManager.getTransactionContext?.();
246
+ const transactionAdapter = {
247
+ dialect,
248
+ async query(sql, params) {
249
+ return executeQuery(connection, sql, params, dialect, transactionContext);
250
+ },
251
+ async transaction(nestedRun) {
252
+ return nestedRun(transactionAdapter);
253
+ }
254
+ };
255
+ return run(transactionAdapter);
256
+ });
257
+ }
258
+ };
259
+ }
260
+ function createMikroormDriver(config) {
261
+ const dialect = resolveMikroormDialect(config.orm, config.dialect);
262
+ const handle = config.handle ?? (0, import_orm.createDriverHandle)({
263
+ kind: "mikroorm",
264
+ client: config.orm,
265
+ dialect,
266
+ capabilities: {
267
+ ...mikroormDriverCapabilities(dialect),
268
+ ...config.capabilities
269
+ }
270
+ });
271
+ return (0, import_orm_sql.createSqlDriverFromAdapter)(
272
+ createMikroormAdapter(config.orm, dialect),
273
+ handle
274
+ );
275
+ }
276
+ // Annotate the CommonJS export names for ESM import in node:
277
+ 0 && (module.exports = {
278
+ createMikroormDriver,
279
+ detectMikroormDialect,
280
+ normalizeMikroormDialect,
281
+ resolveMikroormDialect
282
+ });
283
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n createDriverHandle,\n type OrmDriver,\n type OrmDriverCapabilityInput,\n type OrmDriverHandle,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport { createSqlDriverFromAdapter, type SqlAdapterLike } from \"@farming-labs/orm-sql\";\n\ntype SqlDialect = \"sqlite\" | \"mysql\" | \"postgres\";\ntype SqlRow = Record<string, unknown>;\ntype SqlQueryResult = {\n rows: SqlRow[];\n affectedRows: number;\n insertId?: unknown;\n};\n\ntype MikroormForkOptions = {\n clear?: boolean;\n disableTransactions?: boolean;\n keepTransactionContext?: boolean;\n useContext?: boolean;\n};\n\nexport type MikroormDriverDialect = SqlDialect;\nexport type MikroormDriverHandle<\n TClient = unknown,\n TDialect extends MikroormDriverDialect = MikroormDriverDialect,\n> = OrmDriverHandle<\"mikroorm\", TClient, TDialect>;\n\nexport type MikroormConnectionLike = {\n connect?(options?: { skipOnConnect?: boolean }): Promise<unknown> | unknown;\n ensureConnection?(): Promise<unknown> | unknown;\n execute(\n sql: string,\n params?: unknown[],\n method?: \"all\" | \"get\" | \"run\",\n ctx?: unknown,\n ): Promise<unknown> | unknown;\n isConnected?(): Promise<boolean> | boolean;\n};\n\nexport type MikroormEntityManagerLike = {\n config?: {\n get?(key: string): unknown;\n };\n fork?(options?: MikroormForkOptions): MikroormEntityManagerLike;\n getConnection(type?: \"read\" | \"write\"): MikroormConnectionLike;\n getTransactionContext?<T = unknown>(): T | undefined;\n getDriver?(): {\n getPlatform?(): unknown;\n getConnection?(type?: \"read\" | \"write\"): MikroormConnectionLike;\n };\n getPlatform?(): unknown;\n transactional<TResult>(\n run: (entityManager: MikroormEntityManagerLike) => Promise<TResult>,\n options?: unknown,\n ): Promise<TResult>;\n};\n\nexport type MikroormLike = {\n config?: {\n get?(key: string): unknown;\n };\n connect(): Promise<unknown>;\n close(force?: boolean): Promise<unknown>;\n driver?: {\n getConnection?(type?: \"read\" | \"write\"): MikroormConnectionLike;\n getPlatform?(): unknown;\n };\n em: MikroormEntityManagerLike;\n isConnected(): Promise<boolean>;\n schema?: unknown;\n};\n\nexport type MikroormDriverClient = MikroormLike | MikroormEntityManagerLike;\n\nexport type MikroormDriverConfig<TSchema extends SchemaDefinition<any>> = {\n orm: MikroormDriverClient;\n dialect?: MikroormDriverDialect;\n capabilities?: OrmDriverCapabilityInput;\n handle?: MikroormDriverHandle<MikroormDriverClient>;\n};\n\ntype MikroormQueryResultLike = {\n affectedRows?: number;\n insertId?: unknown;\n insertedIds?: unknown[];\n row?: SqlRow;\n rows?: SqlRow[];\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 toNumber(value: unknown) {\n if (typeof value === \"number\" && Number.isFinite(value)) return value;\n if (typeof value === \"bigint\") return Number(value);\n return undefined;\n}\n\nfunction getConstructorName(value: unknown) {\n if (!isRecord(value)) return \"\";\n const constructor = value.constructor;\n return typeof constructor?.name === \"string\" ? constructor.name : \"\";\n}\n\nfunction isSqlSelectLike(sql: string) {\n return /^\\s*(select|with|pragma|explain)\\b/i.test(sql);\n}\n\nfunction constructorDialect(value: unknown): MikroormDriverDialect | undefined {\n if (typeof value === \"string\") {\n switch (value) {\n case \"postgres\":\n case \"postgresql\":\n case \"cockroachdb\":\n case \"aurora-postgres\":\n return \"postgres\";\n case \"mysql\":\n case \"mariadb\":\n case \"aurora-mysql\":\n return \"mysql\";\n case \"sqlite\":\n case \"better-sqlite\":\n case \"better-sqlite3\":\n case \"sqljs\":\n return \"sqlite\";\n default:\n return undefined;\n }\n }\n\n const constructorName = getConstructorName(value);\n\n if (/postgre|pgsql|pg/i.test(constructorName)) return \"postgres\";\n if (/mysql|maria/i.test(constructorName)) return \"mysql\";\n if (/sqlite|sqljs|better.?sqlite/i.test(constructorName)) return \"sqlite\";\n return undefined;\n}\n\nfunction getConfigValue(value: unknown, key: string) {\n if (!isRecord(value) || !hasFunction(value, \"get\")) return undefined;\n\n try {\n return value.get(key);\n } catch {\n return undefined;\n }\n}\n\nfunction isMikroormInstance(client: unknown): client is MikroormLike {\n return (\n hasFunction(client, \"connect\") &&\n hasFunction(client, \"close\") &&\n hasFunction(client, \"isConnected\") &&\n isRecord(client) &&\n isRecord((client as Record<string, unknown>).em) &&\n hasFunction((client as Record<string, unknown>).em, \"getConnection\") &&\n hasFunction((client as Record<string, unknown>).em, \"transactional\")\n );\n}\n\nfunction isMikroormEntityManager(client: unknown): client is MikroormEntityManagerLike {\n return (\n hasFunction(client, \"getConnection\") &&\n hasFunction(client, \"transactional\") &&\n hasFunction(client, \"fork\") &&\n (hasFunction(client, \"getDriver\") || hasFunction(client, \"getPlatform\"))\n );\n}\n\nexport function normalizeMikroormDialect(value: unknown): MikroormDriverDialect | undefined {\n return constructorDialect(value);\n}\n\nexport function detectMikroormDialect(\n client: MikroormDriverClient,\n): MikroormDriverDialect | undefined {\n const record = client as Record<string, unknown>;\n const em = isRecord(record.em) ? record.em : undefined;\n const config = isRecord(record.config) ? record.config : undefined;\n const driver = isRecord(record.driver) ? record.driver : undefined;\n const connection = hasFunction(client, \"getConnection\")\n ? client.getConnection()\n : hasFunction(em, \"getConnection\")\n ? em.getConnection()\n : hasFunction(driver, \"getConnection\")\n ? driver.getConnection()\n : undefined;\n const platform = hasFunction(client, \"getPlatform\")\n ? client.getPlatform()\n : hasFunction(em, \"getPlatform\")\n ? em.getPlatform()\n : hasFunction(driver, \"getPlatform\")\n ? driver.getPlatform()\n : undefined;\n\n const candidates = [\n client,\n em,\n driver,\n connection,\n platform,\n getConfigValue(config, \"type\"),\n getConfigValue(config, \"driver\"),\n getConfigValue(config, \"driverOptions\"),\n ];\n\n for (const candidate of candidates) {\n const dialect = normalizeMikroormDialect(candidate);\n if (dialect) return dialect;\n }\n\n return undefined;\n}\n\nexport function resolveMikroormDialect(\n client: MikroormDriverClient,\n override?: MikroormDriverDialect,\n): MikroormDriverDialect {\n const dialect = override ?? detectMikroormDialect(client);\n if (!dialect) {\n throw new Error(\n \"Could not determine the MikroORM dialect. Pass `dialect` explicitly or use a supported SQL driver such as PostgreSQL, MySQL/MariaDB, or SQLite.\",\n );\n }\n\n return dialect;\n}\n\nfunction mikroormDriverCapabilities(dialect: MikroormDriverDialect): OrmDriverCapabilityInput {\n return {\n numericIds: \"generated\",\n supportsJSON: true,\n supportsDates: true,\n supportsBooleans: true,\n supportsTransactions: true,\n supportsSchemaNamespaces: dialect === \"postgres\",\n supportsTransactionalDDL: dialect !== \"mysql\",\n nativeRelationLoading: \"partial\",\n textComparison: \"database-default\",\n textMatching: {\n equality: \"database-default\",\n contains: \"database-default\",\n ordering: \"database-default\",\n },\n upsert: \"native\",\n returning: {\n create: true,\n update: true,\n delete: false,\n },\n returningMode: {\n create: \"record\",\n update: \"record\",\n delete: \"none\",\n },\n nativeRelations: {\n singularChains: true,\n hasMany: true,\n manyToMany: true,\n filtered: false,\n ordered: false,\n paginated: false,\n },\n };\n}\n\nfunction resolveEntityManager(client: MikroormDriverClient) {\n if (isMikroormInstance(client)) {\n const em = client.em;\n if (hasFunction(em, \"fork\")) {\n return em.fork({\n clear: false,\n useContext: false,\n });\n }\n return em;\n }\n\n return client;\n}\n\nfunction resolveConnection(client: MikroormDriverClient) {\n const entityManager = resolveEntityManager(client);\n return entityManager.getConnection();\n}\n\nasync function ensureConnected(client: MikroormDriverClient) {\n if (isMikroormInstance(client)) {\n const connected = await client.isConnected();\n if (!connected) {\n await client.connect();\n }\n return;\n }\n\n const connection = client.getConnection();\n if (hasFunction(connection, \"isConnected\")) {\n const connected = await connection.isConnected();\n if (connected) return;\n }\n\n if (hasFunction(connection, \"ensureConnection\")) {\n await connection.ensureConnection();\n return;\n }\n\n if (hasFunction(connection, \"connect\")) {\n await connection.connect({ skipOnConnect: false });\n }\n}\n\nfunction normalizeMikroormResult(sql: string, result: unknown): SqlQueryResult {\n if (Array.isArray(result)) {\n return {\n rows: result as SqlRow[],\n affectedRows: isSqlSelectLike(sql) ? result.length : 0,\n };\n }\n\n if (!isRecord(result)) {\n return {\n rows: [],\n affectedRows: 0,\n };\n }\n\n const typed = result as MikroormQueryResultLike;\n const rows = Array.isArray(typed.rows)\n ? typed.rows\n : isRecord(typed.row)\n ? [typed.row]\n : isSqlSelectLike(sql) && !(\"affectedRows\" in typed)\n ? [typed as SqlRow]\n : [];\n\n return {\n rows,\n affectedRows: toNumber(typed.affectedRows) ?? (isSqlSelectLike(sql) ? rows.length : 0),\n insertId: typed.insertId ?? typed.insertedIds?.[0],\n };\n}\n\nasync function executeQuery(\n connection: MikroormConnectionLike,\n sql: string,\n params: unknown[],\n dialect: MikroormDriverDialect,\n transactionContext?: unknown,\n) {\n const query = dialect === \"postgres\" ? sql.replace(/\\$\\d+\\b/g, \"?\") : sql;\n const method = isSqlSelectLike(sql) ? \"all\" : \"run\";\n\n if (dialect === \"sqlite\" || dialect === \"mysql\" || dialect === \"postgres\") {\n return normalizeMikroormResult(\n sql,\n await connection.execute(query, params, method, transactionContext),\n );\n }\n\n return normalizeMikroormResult(\n sql,\n await connection.execute(query, params, undefined, transactionContext),\n );\n}\n\nfunction createMikroormAdapter(\n client: MikroormDriverClient,\n dialect: MikroormDriverDialect,\n): SqlAdapterLike {\n return {\n dialect,\n async query(sql, params) {\n await ensureConnected(client);\n return executeQuery(resolveConnection(client), sql, params, dialect);\n },\n async transaction<TResult>(run: (adapter: SqlAdapterLike) => Promise<TResult>) {\n await ensureConnected(client);\n\n const entityManager = resolveEntityManager(client);\n return entityManager.transactional(async (transactionEntityManager) => {\n const connection = transactionEntityManager.getConnection();\n const transactionContext = transactionEntityManager.getTransactionContext?.();\n const transactionAdapter: SqlAdapterLike = {\n dialect,\n async query(sql, params) {\n return executeQuery(connection, sql, params, dialect, transactionContext);\n },\n async transaction<TResultInner>(\n nestedRun: (adapter: SqlAdapterLike) => Promise<TResultInner>,\n ) {\n return nestedRun(transactionAdapter);\n },\n };\n\n return run(transactionAdapter);\n });\n },\n };\n}\n\nexport function createMikroormDriver<TSchema extends SchemaDefinition<any>>(\n config: MikroormDriverConfig<TSchema>,\n): OrmDriver<TSchema, MikroormDriverHandle<MikroormDriverClient>> {\n const dialect = resolveMikroormDialect(config.orm, config.dialect);\n const handle =\n config.handle ??\n createDriverHandle({\n kind: \"mikroorm\",\n client: config.orm,\n dialect,\n capabilities: {\n ...mikroormDriverCapabilities(dialect),\n ...config.capabilities,\n },\n });\n\n return createSqlDriverFromAdapter<TSchema, MikroormDriverHandle<MikroormDriverClient>>(\n createMikroormAdapter(config.orm, dialect),\n handle,\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,60 @@
1
+ import { SchemaDefinition, OrmDriverCapabilityInput, OrmDriverHandle, OrmDriver } from '@farming-labs/orm';
2
+
3
+ type SqlDialect = "sqlite" | "mysql" | "postgres";
4
+ type MikroormForkOptions = {
5
+ clear?: boolean;
6
+ disableTransactions?: boolean;
7
+ keepTransactionContext?: boolean;
8
+ useContext?: boolean;
9
+ };
10
+ type MikroormDriverDialect = SqlDialect;
11
+ type MikroormDriverHandle<TClient = unknown, TDialect extends MikroormDriverDialect = MikroormDriverDialect> = OrmDriverHandle<"mikroorm", TClient, TDialect>;
12
+ type MikroormConnectionLike = {
13
+ connect?(options?: {
14
+ skipOnConnect?: boolean;
15
+ }): Promise<unknown> | unknown;
16
+ ensureConnection?(): Promise<unknown> | unknown;
17
+ execute(sql: string, params?: unknown[], method?: "all" | "get" | "run", ctx?: unknown): Promise<unknown> | unknown;
18
+ isConnected?(): Promise<boolean> | boolean;
19
+ };
20
+ type MikroormEntityManagerLike = {
21
+ config?: {
22
+ get?(key: string): unknown;
23
+ };
24
+ fork?(options?: MikroormForkOptions): MikroormEntityManagerLike;
25
+ getConnection(type?: "read" | "write"): MikroormConnectionLike;
26
+ getTransactionContext?<T = unknown>(): T | undefined;
27
+ getDriver?(): {
28
+ getPlatform?(): unknown;
29
+ getConnection?(type?: "read" | "write"): MikroormConnectionLike;
30
+ };
31
+ getPlatform?(): unknown;
32
+ transactional<TResult>(run: (entityManager: MikroormEntityManagerLike) => Promise<TResult>, options?: unknown): Promise<TResult>;
33
+ };
34
+ type MikroormLike = {
35
+ config?: {
36
+ get?(key: string): unknown;
37
+ };
38
+ connect(): Promise<unknown>;
39
+ close(force?: boolean): Promise<unknown>;
40
+ driver?: {
41
+ getConnection?(type?: "read" | "write"): MikroormConnectionLike;
42
+ getPlatform?(): unknown;
43
+ };
44
+ em: MikroormEntityManagerLike;
45
+ isConnected(): Promise<boolean>;
46
+ schema?: unknown;
47
+ };
48
+ type MikroormDriverClient = MikroormLike | MikroormEntityManagerLike;
49
+ type MikroormDriverConfig<TSchema extends SchemaDefinition<any>> = {
50
+ orm: MikroormDriverClient;
51
+ dialect?: MikroormDriverDialect;
52
+ capabilities?: OrmDriverCapabilityInput;
53
+ handle?: MikroormDriverHandle<MikroormDriverClient>;
54
+ };
55
+ declare function normalizeMikroormDialect(value: unknown): MikroormDriverDialect | undefined;
56
+ declare function detectMikroormDialect(client: MikroormDriverClient): MikroormDriverDialect | undefined;
57
+ declare function resolveMikroormDialect(client: MikroormDriverClient, override?: MikroormDriverDialect): MikroormDriverDialect;
58
+ declare function createMikroormDriver<TSchema extends SchemaDefinition<any>>(config: MikroormDriverConfig<TSchema>): OrmDriver<TSchema, MikroormDriverHandle<MikroormDriverClient>>;
59
+
60
+ export { type MikroormConnectionLike, type MikroormDriverClient, type MikroormDriverConfig, type MikroormDriverDialect, type MikroormDriverHandle, type MikroormEntityManagerLike, type MikroormLike, createMikroormDriver, detectMikroormDialect, normalizeMikroormDialect, resolveMikroormDialect };
@@ -0,0 +1,60 @@
1
+ import { SchemaDefinition, OrmDriverCapabilityInput, OrmDriverHandle, OrmDriver } from '@farming-labs/orm';
2
+
3
+ type SqlDialect = "sqlite" | "mysql" | "postgres";
4
+ type MikroormForkOptions = {
5
+ clear?: boolean;
6
+ disableTransactions?: boolean;
7
+ keepTransactionContext?: boolean;
8
+ useContext?: boolean;
9
+ };
10
+ type MikroormDriverDialect = SqlDialect;
11
+ type MikroormDriverHandle<TClient = unknown, TDialect extends MikroormDriverDialect = MikroormDriverDialect> = OrmDriverHandle<"mikroorm", TClient, TDialect>;
12
+ type MikroormConnectionLike = {
13
+ connect?(options?: {
14
+ skipOnConnect?: boolean;
15
+ }): Promise<unknown> | unknown;
16
+ ensureConnection?(): Promise<unknown> | unknown;
17
+ execute(sql: string, params?: unknown[], method?: "all" | "get" | "run", ctx?: unknown): Promise<unknown> | unknown;
18
+ isConnected?(): Promise<boolean> | boolean;
19
+ };
20
+ type MikroormEntityManagerLike = {
21
+ config?: {
22
+ get?(key: string): unknown;
23
+ };
24
+ fork?(options?: MikroormForkOptions): MikroormEntityManagerLike;
25
+ getConnection(type?: "read" | "write"): MikroormConnectionLike;
26
+ getTransactionContext?<T = unknown>(): T | undefined;
27
+ getDriver?(): {
28
+ getPlatform?(): unknown;
29
+ getConnection?(type?: "read" | "write"): MikroormConnectionLike;
30
+ };
31
+ getPlatform?(): unknown;
32
+ transactional<TResult>(run: (entityManager: MikroormEntityManagerLike) => Promise<TResult>, options?: unknown): Promise<TResult>;
33
+ };
34
+ type MikroormLike = {
35
+ config?: {
36
+ get?(key: string): unknown;
37
+ };
38
+ connect(): Promise<unknown>;
39
+ close(force?: boolean): Promise<unknown>;
40
+ driver?: {
41
+ getConnection?(type?: "read" | "write"): MikroormConnectionLike;
42
+ getPlatform?(): unknown;
43
+ };
44
+ em: MikroormEntityManagerLike;
45
+ isConnected(): Promise<boolean>;
46
+ schema?: unknown;
47
+ };
48
+ type MikroormDriverClient = MikroormLike | MikroormEntityManagerLike;
49
+ type MikroormDriverConfig<TSchema extends SchemaDefinition<any>> = {
50
+ orm: MikroormDriverClient;
51
+ dialect?: MikroormDriverDialect;
52
+ capabilities?: OrmDriverCapabilityInput;
53
+ handle?: MikroormDriverHandle<MikroormDriverClient>;
54
+ };
55
+ declare function normalizeMikroormDialect(value: unknown): MikroormDriverDialect | undefined;
56
+ declare function detectMikroormDialect(client: MikroormDriverClient): MikroormDriverDialect | undefined;
57
+ declare function resolveMikroormDialect(client: MikroormDriverClient, override?: MikroormDriverDialect): MikroormDriverDialect;
58
+ declare function createMikroormDriver<TSchema extends SchemaDefinition<any>>(config: MikroormDriverConfig<TSchema>): OrmDriver<TSchema, MikroormDriverHandle<MikroormDriverClient>>;
59
+
60
+ export { type MikroormConnectionLike, type MikroormDriverClient, type MikroormDriverConfig, type MikroormDriverDialect, type MikroormDriverHandle, type MikroormEntityManagerLike, type MikroormLike, createMikroormDriver, detectMikroormDialect, normalizeMikroormDialect, resolveMikroormDialect };
package/dist/index.js ADDED
@@ -0,0 +1,257 @@
1
+ // src/index.ts
2
+ import {
3
+ createDriverHandle
4
+ } from "@farming-labs/orm";
5
+ import { createSqlDriverFromAdapter } from "@farming-labs/orm-sql";
6
+ function isRecord(value) {
7
+ return !!value && typeof value === "object";
8
+ }
9
+ function hasFunction(value, name) {
10
+ return isRecord(value) && typeof value[name] === "function";
11
+ }
12
+ function toNumber(value) {
13
+ if (typeof value === "number" && Number.isFinite(value)) return value;
14
+ if (typeof value === "bigint") return Number(value);
15
+ return void 0;
16
+ }
17
+ function getConstructorName(value) {
18
+ if (!isRecord(value)) return "";
19
+ const constructor = value.constructor;
20
+ return typeof constructor?.name === "string" ? constructor.name : "";
21
+ }
22
+ function isSqlSelectLike(sql) {
23
+ return /^\s*(select|with|pragma|explain)\b/i.test(sql);
24
+ }
25
+ function constructorDialect(value) {
26
+ if (typeof value === "string") {
27
+ switch (value) {
28
+ case "postgres":
29
+ case "postgresql":
30
+ case "cockroachdb":
31
+ case "aurora-postgres":
32
+ return "postgres";
33
+ case "mysql":
34
+ case "mariadb":
35
+ case "aurora-mysql":
36
+ return "mysql";
37
+ case "sqlite":
38
+ case "better-sqlite":
39
+ case "better-sqlite3":
40
+ case "sqljs":
41
+ return "sqlite";
42
+ default:
43
+ return void 0;
44
+ }
45
+ }
46
+ const constructorName = getConstructorName(value);
47
+ if (/postgre|pgsql|pg/i.test(constructorName)) return "postgres";
48
+ if (/mysql|maria/i.test(constructorName)) return "mysql";
49
+ if (/sqlite|sqljs|better.?sqlite/i.test(constructorName)) return "sqlite";
50
+ return void 0;
51
+ }
52
+ function getConfigValue(value, key) {
53
+ if (!isRecord(value) || !hasFunction(value, "get")) return void 0;
54
+ try {
55
+ return value.get(key);
56
+ } catch {
57
+ return void 0;
58
+ }
59
+ }
60
+ function isMikroormInstance(client) {
61
+ return hasFunction(client, "connect") && hasFunction(client, "close") && hasFunction(client, "isConnected") && isRecord(client) && isRecord(client.em) && hasFunction(client.em, "getConnection") && hasFunction(client.em, "transactional");
62
+ }
63
+ function normalizeMikroormDialect(value) {
64
+ return constructorDialect(value);
65
+ }
66
+ function detectMikroormDialect(client) {
67
+ const record = client;
68
+ const em = isRecord(record.em) ? record.em : void 0;
69
+ const config = isRecord(record.config) ? record.config : void 0;
70
+ const driver = isRecord(record.driver) ? record.driver : void 0;
71
+ const connection = hasFunction(client, "getConnection") ? client.getConnection() : hasFunction(em, "getConnection") ? em.getConnection() : hasFunction(driver, "getConnection") ? driver.getConnection() : void 0;
72
+ const platform = hasFunction(client, "getPlatform") ? client.getPlatform() : hasFunction(em, "getPlatform") ? em.getPlatform() : hasFunction(driver, "getPlatform") ? driver.getPlatform() : void 0;
73
+ const candidates = [
74
+ client,
75
+ em,
76
+ driver,
77
+ connection,
78
+ platform,
79
+ getConfigValue(config, "type"),
80
+ getConfigValue(config, "driver"),
81
+ getConfigValue(config, "driverOptions")
82
+ ];
83
+ for (const candidate of candidates) {
84
+ const dialect = normalizeMikroormDialect(candidate);
85
+ if (dialect) return dialect;
86
+ }
87
+ return void 0;
88
+ }
89
+ function resolveMikroormDialect(client, override) {
90
+ const dialect = override ?? detectMikroormDialect(client);
91
+ if (!dialect) {
92
+ throw new Error(
93
+ "Could not determine the MikroORM dialect. Pass `dialect` explicitly or use a supported SQL driver such as PostgreSQL, MySQL/MariaDB, or SQLite."
94
+ );
95
+ }
96
+ return dialect;
97
+ }
98
+ function mikroormDriverCapabilities(dialect) {
99
+ return {
100
+ numericIds: "generated",
101
+ supportsJSON: true,
102
+ supportsDates: true,
103
+ supportsBooleans: true,
104
+ supportsTransactions: true,
105
+ supportsSchemaNamespaces: dialect === "postgres",
106
+ supportsTransactionalDDL: dialect !== "mysql",
107
+ nativeRelationLoading: "partial",
108
+ textComparison: "database-default",
109
+ textMatching: {
110
+ equality: "database-default",
111
+ contains: "database-default",
112
+ ordering: "database-default"
113
+ },
114
+ upsert: "native",
115
+ returning: {
116
+ create: true,
117
+ update: true,
118
+ delete: false
119
+ },
120
+ returningMode: {
121
+ create: "record",
122
+ update: "record",
123
+ delete: "none"
124
+ },
125
+ nativeRelations: {
126
+ singularChains: true,
127
+ hasMany: true,
128
+ manyToMany: true,
129
+ filtered: false,
130
+ ordered: false,
131
+ paginated: false
132
+ }
133
+ };
134
+ }
135
+ function resolveEntityManager(client) {
136
+ if (isMikroormInstance(client)) {
137
+ const em = client.em;
138
+ if (hasFunction(em, "fork")) {
139
+ return em.fork({
140
+ clear: false,
141
+ useContext: false
142
+ });
143
+ }
144
+ return em;
145
+ }
146
+ return client;
147
+ }
148
+ function resolveConnection(client) {
149
+ const entityManager = resolveEntityManager(client);
150
+ return entityManager.getConnection();
151
+ }
152
+ async function ensureConnected(client) {
153
+ if (isMikroormInstance(client)) {
154
+ const connected = await client.isConnected();
155
+ if (!connected) {
156
+ await client.connect();
157
+ }
158
+ return;
159
+ }
160
+ const connection = client.getConnection();
161
+ if (hasFunction(connection, "isConnected")) {
162
+ const connected = await connection.isConnected();
163
+ if (connected) return;
164
+ }
165
+ if (hasFunction(connection, "ensureConnection")) {
166
+ await connection.ensureConnection();
167
+ return;
168
+ }
169
+ if (hasFunction(connection, "connect")) {
170
+ await connection.connect({ skipOnConnect: false });
171
+ }
172
+ }
173
+ function normalizeMikroormResult(sql, result) {
174
+ if (Array.isArray(result)) {
175
+ return {
176
+ rows: result,
177
+ affectedRows: isSqlSelectLike(sql) ? result.length : 0
178
+ };
179
+ }
180
+ if (!isRecord(result)) {
181
+ return {
182
+ rows: [],
183
+ affectedRows: 0
184
+ };
185
+ }
186
+ const typed = result;
187
+ const rows = Array.isArray(typed.rows) ? typed.rows : isRecord(typed.row) ? [typed.row] : isSqlSelectLike(sql) && !("affectedRows" in typed) ? [typed] : [];
188
+ return {
189
+ rows,
190
+ affectedRows: toNumber(typed.affectedRows) ?? (isSqlSelectLike(sql) ? rows.length : 0),
191
+ insertId: typed.insertId ?? typed.insertedIds?.[0]
192
+ };
193
+ }
194
+ async function executeQuery(connection, sql, params, dialect, transactionContext) {
195
+ const query = dialect === "postgres" ? sql.replace(/\$\d+\b/g, "?") : sql;
196
+ const method = isSqlSelectLike(sql) ? "all" : "run";
197
+ if (dialect === "sqlite" || dialect === "mysql" || dialect === "postgres") {
198
+ return normalizeMikroormResult(
199
+ sql,
200
+ await connection.execute(query, params, method, transactionContext)
201
+ );
202
+ }
203
+ return normalizeMikroormResult(
204
+ sql,
205
+ await connection.execute(query, params, void 0, transactionContext)
206
+ );
207
+ }
208
+ function createMikroormAdapter(client, dialect) {
209
+ return {
210
+ dialect,
211
+ async query(sql, params) {
212
+ await ensureConnected(client);
213
+ return executeQuery(resolveConnection(client), sql, params, dialect);
214
+ },
215
+ async transaction(run) {
216
+ await ensureConnected(client);
217
+ const entityManager = resolveEntityManager(client);
218
+ return entityManager.transactional(async (transactionEntityManager) => {
219
+ const connection = transactionEntityManager.getConnection();
220
+ const transactionContext = transactionEntityManager.getTransactionContext?.();
221
+ const transactionAdapter = {
222
+ dialect,
223
+ async query(sql, params) {
224
+ return executeQuery(connection, sql, params, dialect, transactionContext);
225
+ },
226
+ async transaction(nestedRun) {
227
+ return nestedRun(transactionAdapter);
228
+ }
229
+ };
230
+ return run(transactionAdapter);
231
+ });
232
+ }
233
+ };
234
+ }
235
+ function createMikroormDriver(config) {
236
+ const dialect = resolveMikroormDialect(config.orm, config.dialect);
237
+ const handle = config.handle ?? createDriverHandle({
238
+ kind: "mikroorm",
239
+ client: config.orm,
240
+ dialect,
241
+ capabilities: {
242
+ ...mikroormDriverCapabilities(dialect),
243
+ ...config.capabilities
244
+ }
245
+ });
246
+ return createSqlDriverFromAdapter(
247
+ createMikroormAdapter(config.orm, dialect),
248
+ handle
249
+ );
250
+ }
251
+ export {
252
+ createMikroormDriver,
253
+ detectMikroormDialect,
254
+ normalizeMikroormDialect,
255
+ resolveMikroormDialect
256
+ };
257
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n createDriverHandle,\n type OrmDriver,\n type OrmDriverCapabilityInput,\n type OrmDriverHandle,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport { createSqlDriverFromAdapter, type SqlAdapterLike } from \"@farming-labs/orm-sql\";\n\ntype SqlDialect = \"sqlite\" | \"mysql\" | \"postgres\";\ntype SqlRow = Record<string, unknown>;\ntype SqlQueryResult = {\n rows: SqlRow[];\n affectedRows: number;\n insertId?: unknown;\n};\n\ntype MikroormForkOptions = {\n clear?: boolean;\n disableTransactions?: boolean;\n keepTransactionContext?: boolean;\n useContext?: boolean;\n};\n\nexport type MikroormDriverDialect = SqlDialect;\nexport type MikroormDriverHandle<\n TClient = unknown,\n TDialect extends MikroormDriverDialect = MikroormDriverDialect,\n> = OrmDriverHandle<\"mikroorm\", TClient, TDialect>;\n\nexport type MikroormConnectionLike = {\n connect?(options?: { skipOnConnect?: boolean }): Promise<unknown> | unknown;\n ensureConnection?(): Promise<unknown> | unknown;\n execute(\n sql: string,\n params?: unknown[],\n method?: \"all\" | \"get\" | \"run\",\n ctx?: unknown,\n ): Promise<unknown> | unknown;\n isConnected?(): Promise<boolean> | boolean;\n};\n\nexport type MikroormEntityManagerLike = {\n config?: {\n get?(key: string): unknown;\n };\n fork?(options?: MikroormForkOptions): MikroormEntityManagerLike;\n getConnection(type?: \"read\" | \"write\"): MikroormConnectionLike;\n getTransactionContext?<T = unknown>(): T | undefined;\n getDriver?(): {\n getPlatform?(): unknown;\n getConnection?(type?: \"read\" | \"write\"): MikroormConnectionLike;\n };\n getPlatform?(): unknown;\n transactional<TResult>(\n run: (entityManager: MikroormEntityManagerLike) => Promise<TResult>,\n options?: unknown,\n ): Promise<TResult>;\n};\n\nexport type MikroormLike = {\n config?: {\n get?(key: string): unknown;\n };\n connect(): Promise<unknown>;\n close(force?: boolean): Promise<unknown>;\n driver?: {\n getConnection?(type?: \"read\" | \"write\"): MikroormConnectionLike;\n getPlatform?(): unknown;\n };\n em: MikroormEntityManagerLike;\n isConnected(): Promise<boolean>;\n schema?: unknown;\n};\n\nexport type MikroormDriverClient = MikroormLike | MikroormEntityManagerLike;\n\nexport type MikroormDriverConfig<TSchema extends SchemaDefinition<any>> = {\n orm: MikroormDriverClient;\n dialect?: MikroormDriverDialect;\n capabilities?: OrmDriverCapabilityInput;\n handle?: MikroormDriverHandle<MikroormDriverClient>;\n};\n\ntype MikroormQueryResultLike = {\n affectedRows?: number;\n insertId?: unknown;\n insertedIds?: unknown[];\n row?: SqlRow;\n rows?: SqlRow[];\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 toNumber(value: unknown) {\n if (typeof value === \"number\" && Number.isFinite(value)) return value;\n if (typeof value === \"bigint\") return Number(value);\n return undefined;\n}\n\nfunction getConstructorName(value: unknown) {\n if (!isRecord(value)) return \"\";\n const constructor = value.constructor;\n return typeof constructor?.name === \"string\" ? constructor.name : \"\";\n}\n\nfunction isSqlSelectLike(sql: string) {\n return /^\\s*(select|with|pragma|explain)\\b/i.test(sql);\n}\n\nfunction constructorDialect(value: unknown): MikroormDriverDialect | undefined {\n if (typeof value === \"string\") {\n switch (value) {\n case \"postgres\":\n case \"postgresql\":\n case \"cockroachdb\":\n case \"aurora-postgres\":\n return \"postgres\";\n case \"mysql\":\n case \"mariadb\":\n case \"aurora-mysql\":\n return \"mysql\";\n case \"sqlite\":\n case \"better-sqlite\":\n case \"better-sqlite3\":\n case \"sqljs\":\n return \"sqlite\";\n default:\n return undefined;\n }\n }\n\n const constructorName = getConstructorName(value);\n\n if (/postgre|pgsql|pg/i.test(constructorName)) return \"postgres\";\n if (/mysql|maria/i.test(constructorName)) return \"mysql\";\n if (/sqlite|sqljs|better.?sqlite/i.test(constructorName)) return \"sqlite\";\n return undefined;\n}\n\nfunction getConfigValue(value: unknown, key: string) {\n if (!isRecord(value) || !hasFunction(value, \"get\")) return undefined;\n\n try {\n return value.get(key);\n } catch {\n return undefined;\n }\n}\n\nfunction isMikroormInstance(client: unknown): client is MikroormLike {\n return (\n hasFunction(client, \"connect\") &&\n hasFunction(client, \"close\") &&\n hasFunction(client, \"isConnected\") &&\n isRecord(client) &&\n isRecord((client as Record<string, unknown>).em) &&\n hasFunction((client as Record<string, unknown>).em, \"getConnection\") &&\n hasFunction((client as Record<string, unknown>).em, \"transactional\")\n );\n}\n\nfunction isMikroormEntityManager(client: unknown): client is MikroormEntityManagerLike {\n return (\n hasFunction(client, \"getConnection\") &&\n hasFunction(client, \"transactional\") &&\n hasFunction(client, \"fork\") &&\n (hasFunction(client, \"getDriver\") || hasFunction(client, \"getPlatform\"))\n );\n}\n\nexport function normalizeMikroormDialect(value: unknown): MikroormDriverDialect | undefined {\n return constructorDialect(value);\n}\n\nexport function detectMikroormDialect(\n client: MikroormDriverClient,\n): MikroormDriverDialect | undefined {\n const record = client as Record<string, unknown>;\n const em = isRecord(record.em) ? record.em : undefined;\n const config = isRecord(record.config) ? record.config : undefined;\n const driver = isRecord(record.driver) ? record.driver : undefined;\n const connection = hasFunction(client, \"getConnection\")\n ? client.getConnection()\n : hasFunction(em, \"getConnection\")\n ? em.getConnection()\n : hasFunction(driver, \"getConnection\")\n ? driver.getConnection()\n : undefined;\n const platform = hasFunction(client, \"getPlatform\")\n ? client.getPlatform()\n : hasFunction(em, \"getPlatform\")\n ? em.getPlatform()\n : hasFunction(driver, \"getPlatform\")\n ? driver.getPlatform()\n : undefined;\n\n const candidates = [\n client,\n em,\n driver,\n connection,\n platform,\n getConfigValue(config, \"type\"),\n getConfigValue(config, \"driver\"),\n getConfigValue(config, \"driverOptions\"),\n ];\n\n for (const candidate of candidates) {\n const dialect = normalizeMikroormDialect(candidate);\n if (dialect) return dialect;\n }\n\n return undefined;\n}\n\nexport function resolveMikroormDialect(\n client: MikroormDriverClient,\n override?: MikroormDriverDialect,\n): MikroormDriverDialect {\n const dialect = override ?? detectMikroormDialect(client);\n if (!dialect) {\n throw new Error(\n \"Could not determine the MikroORM dialect. Pass `dialect` explicitly or use a supported SQL driver such as PostgreSQL, MySQL/MariaDB, or SQLite.\",\n );\n }\n\n return dialect;\n}\n\nfunction mikroormDriverCapabilities(dialect: MikroormDriverDialect): OrmDriverCapabilityInput {\n return {\n numericIds: \"generated\",\n supportsJSON: true,\n supportsDates: true,\n supportsBooleans: true,\n supportsTransactions: true,\n supportsSchemaNamespaces: dialect === \"postgres\",\n supportsTransactionalDDL: dialect !== \"mysql\",\n nativeRelationLoading: \"partial\",\n textComparison: \"database-default\",\n textMatching: {\n equality: \"database-default\",\n contains: \"database-default\",\n ordering: \"database-default\",\n },\n upsert: \"native\",\n returning: {\n create: true,\n update: true,\n delete: false,\n },\n returningMode: {\n create: \"record\",\n update: \"record\",\n delete: \"none\",\n },\n nativeRelations: {\n singularChains: true,\n hasMany: true,\n manyToMany: true,\n filtered: false,\n ordered: false,\n paginated: false,\n },\n };\n}\n\nfunction resolveEntityManager(client: MikroormDriverClient) {\n if (isMikroormInstance(client)) {\n const em = client.em;\n if (hasFunction(em, \"fork\")) {\n return em.fork({\n clear: false,\n useContext: false,\n });\n }\n return em;\n }\n\n return client;\n}\n\nfunction resolveConnection(client: MikroormDriverClient) {\n const entityManager = resolveEntityManager(client);\n return entityManager.getConnection();\n}\n\nasync function ensureConnected(client: MikroormDriverClient) {\n if (isMikroormInstance(client)) {\n const connected = await client.isConnected();\n if (!connected) {\n await client.connect();\n }\n return;\n }\n\n const connection = client.getConnection();\n if (hasFunction(connection, \"isConnected\")) {\n const connected = await connection.isConnected();\n if (connected) return;\n }\n\n if (hasFunction(connection, \"ensureConnection\")) {\n await connection.ensureConnection();\n return;\n }\n\n if (hasFunction(connection, \"connect\")) {\n await connection.connect({ skipOnConnect: false });\n }\n}\n\nfunction normalizeMikroormResult(sql: string, result: unknown): SqlQueryResult {\n if (Array.isArray(result)) {\n return {\n rows: result as SqlRow[],\n affectedRows: isSqlSelectLike(sql) ? result.length : 0,\n };\n }\n\n if (!isRecord(result)) {\n return {\n rows: [],\n affectedRows: 0,\n };\n }\n\n const typed = result as MikroormQueryResultLike;\n const rows = Array.isArray(typed.rows)\n ? typed.rows\n : isRecord(typed.row)\n ? [typed.row]\n : isSqlSelectLike(sql) && !(\"affectedRows\" in typed)\n ? [typed as SqlRow]\n : [];\n\n return {\n rows,\n affectedRows: toNumber(typed.affectedRows) ?? (isSqlSelectLike(sql) ? rows.length : 0),\n insertId: typed.insertId ?? typed.insertedIds?.[0],\n };\n}\n\nasync function executeQuery(\n connection: MikroormConnectionLike,\n sql: string,\n params: unknown[],\n dialect: MikroormDriverDialect,\n transactionContext?: unknown,\n) {\n const query = dialect === \"postgres\" ? sql.replace(/\\$\\d+\\b/g, \"?\") : sql;\n const method = isSqlSelectLike(sql) ? \"all\" : \"run\";\n\n if (dialect === \"sqlite\" || dialect === \"mysql\" || dialect === \"postgres\") {\n return normalizeMikroormResult(\n sql,\n await connection.execute(query, params, method, transactionContext),\n );\n }\n\n return normalizeMikroormResult(\n sql,\n await connection.execute(query, params, undefined, transactionContext),\n );\n}\n\nfunction createMikroormAdapter(\n client: MikroormDriverClient,\n dialect: MikroormDriverDialect,\n): SqlAdapterLike {\n return {\n dialect,\n async query(sql, params) {\n await ensureConnected(client);\n return executeQuery(resolveConnection(client), sql, params, dialect);\n },\n async transaction<TResult>(run: (adapter: SqlAdapterLike) => Promise<TResult>) {\n await ensureConnected(client);\n\n const entityManager = resolveEntityManager(client);\n return entityManager.transactional(async (transactionEntityManager) => {\n const connection = transactionEntityManager.getConnection();\n const transactionContext = transactionEntityManager.getTransactionContext?.();\n const transactionAdapter: SqlAdapterLike = {\n dialect,\n async query(sql, params) {\n return executeQuery(connection, sql, params, dialect, transactionContext);\n },\n async transaction<TResultInner>(\n nestedRun: (adapter: SqlAdapterLike) => Promise<TResultInner>,\n ) {\n return nestedRun(transactionAdapter);\n },\n };\n\n return run(transactionAdapter);\n });\n },\n };\n}\n\nexport function createMikroormDriver<TSchema extends SchemaDefinition<any>>(\n config: MikroormDriverConfig<TSchema>,\n): OrmDriver<TSchema, MikroormDriverHandle<MikroormDriverClient>> {\n const dialect = resolveMikroormDialect(config.orm, config.dialect);\n const handle =\n config.handle ??\n createDriverHandle({\n kind: \"mikroorm\",\n client: config.orm,\n dialect,\n capabilities: {\n ...mikroormDriverCapabilities(dialect),\n ...config.capabilities,\n },\n });\n\n return createSqlDriverFromAdapter<TSchema, MikroormDriverHandle<MikroormDriverClient>>(\n createMikroormAdapter(config.orm, dialect),\n handle,\n );\n}\n"],"mappings":"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","names":[]}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@farming-labs/orm-mikroorm",
3
+ "version": "0.0.40",
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.40",
23
+ "@farming-labs/orm-sql": "0.0.40"
24
+ },
25
+ "devDependencies": {
26
+ "@mikro-orm/core": "^7.0.7",
27
+ "@mikro-orm/mysql": "^7.0.7",
28
+ "@mikro-orm/postgresql": "^7.0.7",
29
+ "@types/pg": "^8.15.6",
30
+ "mysql2": "^3.15.2",
31
+ "pg": "^8.16.3",
32
+ "tsup": "^8.4.0"
33
+ },
34
+ "peerDependencies": {
35
+ "@mikro-orm/core": "^7.0.7"
36
+ },
37
+ "scripts": {
38
+ "build": "tsx ./scripts/build.ts",
39
+ "test": "vitest run --config vitest.local.config.ts",
40
+ "typecheck": "tsc --noEmit"
41
+ }
42
+ }