@danceroutine/tango-orm 1.11.8 → 1.11.10

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.
Files changed (35) hide show
  1. package/dist/{QuerySetState-CjyvAUBs.d.ts → QuerySetState-DRL9-rKQ.d.ts} +2 -1
  2. package/dist/{SqliteAdapter-6oyUmoJf.js → SqliteAdapter-CrUhpTDb.js} +33 -13
  3. package/dist/SqliteAdapter-CrUhpTDb.js.map +1 -0
  4. package/dist/connection/index.d.ts +1 -1
  5. package/dist/connection/index.js +2 -2
  6. package/dist/{connection-D-E6_Yf1.js → connection-B2cDwZ72.js} +4 -4
  7. package/dist/{connection-D-E6_Yf1.js.map → connection-B2cDwZ72.js.map} +1 -1
  8. package/dist/{defaultRuntime-CdTX8cXm.js → defaultRuntime-WIsxnh8K.js} +19 -17
  9. package/dist/defaultRuntime-WIsxnh8K.js.map +1 -0
  10. package/dist/{index-rjKca3U_.d.ts → index-CCvYeJt4.d.ts} +2 -2
  11. package/dist/{index-D9B6gKez.d.ts → index-CJlkeldS.d.ts} +4 -3
  12. package/dist/{index-B-aibguC.d.ts → index-o2LFpJ8S.d.ts} +15 -3
  13. package/dist/index.d.ts +5 -5
  14. package/dist/index.js +7 -7
  15. package/dist/manager/index.d.ts +3 -3
  16. package/dist/manager/index.js +2 -2
  17. package/dist/{manager-CiYqAYpn.js → manager-GMmYq4lC.js} +2 -2
  18. package/dist/{manager-CiYqAYpn.js.map → manager-GMmYq4lC.js.map} +1 -1
  19. package/dist/query/index.d.ts +1 -1
  20. package/dist/query/index.js +1 -1
  21. package/dist/{query-CP1UMIX6.js → query-B-ooqvSG.js} +37 -2
  22. package/dist/query-B-ooqvSG.js.map +1 -0
  23. package/dist/{registerModelObjects-DZfZ20fa.js → registerModelObjects-BKGs2c_m.js} +13 -3
  24. package/dist/registerModelObjects-BKGs2c_m.js.map +1 -0
  25. package/dist/{registerModelObjects-C-MliIiM.d.ts → registerModelObjects-CEqCRlVY.d.ts} +2 -2
  26. package/dist/runtime/index.d.ts +2 -2
  27. package/dist/runtime/index.js +2 -2
  28. package/dist/transaction/index.js +1 -1
  29. package/dist/{transaction-2_2m7VUo.js → transaction-DpDXQq5V.js} +2 -2
  30. package/dist/{transaction-2_2m7VUo.js.map → transaction-DpDXQq5V.js.map} +1 -1
  31. package/package.json +6 -6
  32. package/dist/SqliteAdapter-6oyUmoJf.js.map +0 -1
  33. package/dist/defaultRuntime-CdTX8cXm.js.map +0 -1
  34. package/dist/query-CP1UMIX6.js.map +0 -1
  35. package/dist/registerModelObjects-DZfZ20fa.js.map +0 -1
@@ -77,6 +77,7 @@ declare class QueryCompiler {
77
77
  constructor(meta: TableMeta, adapter: Adapter);
78
78
  static isQueryCompiler(value: unknown): value is QueryCompiler;
79
79
  compile<T, TSourceModel = unknown>(state: QuerySetState<T, TSourceModel>): CompiledQuery;
80
+ compileExists<T, TSourceModel = unknown>(state: QuerySetState<T, TSourceModel>): CompiledQuery;
80
81
  compilePrefetch(node: CompiledHydrationNode, sourceValues: readonly (string | number)[]): CompiledPrefetchQuery;
81
82
  compileManyToManyTargets(node: CompiledHydrationNode, targetIds: readonly (string | number)[]): {
82
83
  sql: string;
@@ -1307,4 +1308,4 @@ interface QuerySetState<T, TSourceModel = unknown> {
1307
1308
  }
1308
1309
  //#endregion
1309
1310
  export { QBuilder as A, index_d_exports$2 as B, ReverseSingleRelations as C, ManyToManyRelatedManagerCreateInputs as D, ManyToManyRelatedManager as E, QNode as F, TableMeta as H, FilterInput as I, FilterValue as L, QueryExecutor as M, QuerySet as N, ManyToManyTargetRef as O, OrderToken as P, FilterKey as R, ReverseCollectionRelations as S, SingleRelationHydrationCardinality as T, QueryResult as U, QueryCompiler as V, ManyRelationHydrationCardinality as _, TableMetaFactory as a, RelationHydrationCardinality as b, RelationMeta as c, GeneratedPrefetchRelatedPathKeys as d, GeneratedRelationFilterKeys as f, InternalRelationHydrationCardinality as g, HydratedRelationMap as h, WhereClause as i, ModelQuerySet as j, index_d_exports$1 as k, ForwardSingleRelations as l, HydratedQueryResult as m, OrderSpec as n, Direction as o, GeneratedSelectRelatedPathKeys as p, index_d_exports as r, CompiledQuery as s, QuerySetState as t, GeneratedHydratedRelationMap as u, MaybeHydratedRelationMap as v, SelectRelatedRelations as w, RelationKeys as x, PrefetchRelatedRelations as y, LookupType as z };
1310
- //# sourceMappingURL=QuerySetState-CjyvAUBs.d.ts.map
1311
+ //# sourceMappingURL=QuerySetState-DRL9-rKQ.d.ts.map
@@ -1,7 +1,6 @@
1
1
  import { t as __exportAll } from "./chunk-8H4AJuhK.js";
2
2
  import { t as InternalDialect } from "./InternalDialect-U3mwJjKA.js";
3
3
  import { createRequire } from "node:module";
4
- import pg from "pg";
5
4
  //#region src/connection/clients/dialects/PostgresClient.ts
6
5
  /**
7
6
  * Transaction-capable client backed by a PostgreSQL pool client.
@@ -69,9 +68,37 @@ var PostgresClient = class PostgresClient {
69
68
  }
70
69
  };
71
70
  //#endregion
71
+ //#region src/connection/clients/dialects/PostgresPoolProvider.ts
72
+ var PostgresPoolProvider = class {
73
+ async createPool(config) {
74
+ return new (await (this.loadPostgresPoolConstructor()))({
75
+ connectionString: config.url,
76
+ host: config.host,
77
+ port: config.port,
78
+ database: config.database,
79
+ user: config.user,
80
+ password: config.password,
81
+ max: config.maxConnections || 10
82
+ });
83
+ }
84
+ async loadPostgresPoolConstructor() {
85
+ return this.resolvePostgresPoolConstructor(await import("pg"));
86
+ }
87
+ resolvePostgresPoolConstructor(moduleValue) {
88
+ const defaultPool = this.readProperty(this.readProperty(moduleValue, "default"), "Pool");
89
+ if (typeof defaultPool === "function") return defaultPool;
90
+ const directPool = this.readProperty(moduleValue, "Pool");
91
+ if (typeof directPool === "function") return directPool;
92
+ throw new TypeError("Failed to load pg Pool constructor.");
93
+ }
94
+ readProperty(value, key) {
95
+ if (typeof value !== "object" || value === null || !(key in value)) return;
96
+ return value[key];
97
+ }
98
+ };
99
+ //#endregion
72
100
  //#region src/connection/adapters/dialects/PostgresAdapter.ts
73
101
  var PostgresAdapter_exports = /* @__PURE__ */ __exportAll({ PostgresAdapter: () => PostgresAdapter });
74
- const { Pool } = pg;
75
102
  /**
76
103
  * Postgres adapter that turns adapter config into a transactional `DBClient`.
77
104
  */
@@ -106,6 +133,7 @@ var PostgresAdapter = class PostgresAdapter {
106
133
  return Array.from({ length: count }, (_value, index) => `$${startOffset + index + 1}`).join(", ");
107
134
  }
108
135
  };
136
+ poolProvider = new PostgresPoolProvider();
109
137
  /**
110
138
  * Narrow an unknown value to `PostgresAdapter`.
111
139
  */
@@ -116,15 +144,7 @@ var PostgresAdapter = class PostgresAdapter {
116
144
  * Open a Postgres connection pool and return a client-backed DB abstraction.
117
145
  */
118
146
  async connect(config) {
119
- return new PostgresClient(await new Pool({
120
- connectionString: config.url,
121
- host: config.host,
122
- port: config.port,
123
- database: config.database,
124
- user: config.user,
125
- password: config.password,
126
- max: config.maxConnections || 10
127
- }).connect());
147
+ return new PostgresClient(await (await this.poolProvider.createPool(config)).connect());
128
148
  }
129
149
  };
130
150
  //#endregion
@@ -274,6 +294,6 @@ var SqliteAdapter = class SqliteAdapter {
274
294
  }
275
295
  };
276
296
  //#endregion
277
- export { PostgresAdapter_exports as a, PostgresAdapter as i, SqliteAdapter_exports as n, PostgresClient as o, SqliteClient as r, SqliteAdapter as t };
297
+ export { PostgresAdapter_exports as a, PostgresAdapter as i, SqliteAdapter_exports as n, PostgresPoolProvider as o, SqliteClient as r, PostgresClient as s, SqliteAdapter as t };
278
298
 
279
- //# sourceMappingURL=SqliteAdapter-6oyUmoJf.js.map
299
+ //# sourceMappingURL=SqliteAdapter-CrUhpTDb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteAdapter-CrUhpTDb.js","names":[],"sources":["../src/connection/clients/dialects/PostgresClient.ts","../src/connection/clients/dialects/PostgresPoolProvider.ts","../src/connection/adapters/dialects/PostgresAdapter.ts","../src/connection/clients/dialects/SqliteClient.ts","../src/connection/adapters/dialects/SqliteAdapter.ts"],"sourcesContent":["import type { DBClient } from '../DBClient';\n\nexport interface PostgresPoolClientLike {\n query(sql: string, params?: readonly unknown[]): Promise<{ rows: unknown[] }>;\n release(): void;\n}\n\n/**\n * Transaction-capable client backed by a PostgreSQL pool client.\n */\nexport class PostgresClient implements DBClient {\n static readonly BRAND = 'tango.orm.postgres_client' as const;\n readonly __tangoBrand: typeof PostgresClient.BRAND = PostgresClient.BRAND;\n\n constructor(private client: PostgresPoolClientLike) {}\n\n /**\n * Narrow an unknown value to `PostgresClient`.\n */\n static isPostgresClient(value: unknown): value is PostgresClient {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { __tangoBrand?: unknown }).__tangoBrand === PostgresClient.BRAND\n );\n }\n\n /**\n * Execute a SQL statement with optional bound parameters.\n */\n async query<T = unknown>(sql: string, params?: readonly unknown[]): Promise<{ rows: T[] }> {\n const result = await this.client.query(sql, params as unknown[]);\n return { rows: result.rows as T[] };\n }\n\n /**\n * Begin a database transaction.\n */\n async begin(): Promise<void> {\n await this.client.query('BEGIN');\n }\n\n /**\n * Commit the active transaction.\n */\n async commit(): Promise<void> {\n await this.client.query('COMMIT');\n }\n\n /**\n * Roll back the active transaction.\n */\n async rollback(): Promise<void> {\n await this.client.query('ROLLBACK');\n }\n\n /**\n * Create a savepoint inside the active transaction.\n */\n async createSavepoint(name: string): Promise<void> {\n await this.client.query(`SAVEPOINT ${name}`);\n }\n\n /**\n * Release a previously-created savepoint.\n */\n async releaseSavepoint(name: string): Promise<void> {\n await this.client.query(`RELEASE SAVEPOINT ${name}`);\n }\n\n /**\n * Roll back the active transaction to a savepoint.\n */\n async rollbackToSavepoint(name: string): Promise<void> {\n await this.client.query(`ROLLBACK TO SAVEPOINT ${name}`);\n }\n\n /**\n * Release the leased PostgreSQL client back to its owning pool.\n */\n async close(): Promise<void> {\n this.client.release();\n }\n}\n","import type { PostgresPoolClientLike } from './PostgresClient';\n\nexport type PostgresPoolLike = {\n query(sql: string, params?: readonly unknown[]): Promise<{ rows: unknown[] }>;\n connect(): Promise<PostgresPoolClientLike>;\n end(): Promise<void>;\n};\n\ntype PostgresPoolConstructor = new (config: {\n connectionString?: string;\n host?: string;\n port?: number;\n database?: string;\n user?: string;\n password?: string;\n max: number;\n}) => PostgresPoolLike;\n\nexport type PostgresPoolConfig = {\n url?: string;\n host?: string;\n port?: number;\n database?: string;\n user?: string;\n password?: string;\n maxConnections?: number;\n};\n\nexport class PostgresPoolProvider {\n async createPool(config: PostgresPoolConfig): Promise<PostgresPoolLike> {\n const Pool = await this.loadPostgresPoolConstructor();\n return new Pool({\n connectionString: config.url,\n host: config.host,\n port: config.port,\n database: config.database,\n user: config.user,\n password: config.password,\n max: config.maxConnections || 10,\n });\n }\n\n private async loadPostgresPoolConstructor(): Promise<PostgresPoolConstructor> {\n return this.resolvePostgresPoolConstructor(await import('pg'));\n }\n\n private resolvePostgresPoolConstructor(moduleValue: unknown): PostgresPoolConstructor {\n const defaultPool = this.readProperty(this.readProperty(moduleValue, 'default'), 'Pool');\n if (typeof defaultPool === 'function') {\n return defaultPool as PostgresPoolConstructor;\n }\n\n const directPool = this.readProperty(moduleValue, 'Pool');\n if (typeof directPool === 'function') {\n return directPool as PostgresPoolConstructor;\n }\n\n throw new TypeError('Failed to load pg Pool constructor.');\n }\n\n private readProperty(value: unknown, key: string): unknown {\n if (typeof value !== 'object' || value === null || !(key in value)) {\n return undefined;\n }\n\n return (value as Record<string, unknown>)[key];\n }\n}\n","import type { Adapter, AdapterConfig, SqlPlaceholders } from '../Adapter';\nimport type { DBClient } from '../../clients/DBClient';\nimport { PostgresClient } from '../../clients/dialects/PostgresClient';\nimport { PostgresPoolProvider } from '../../clients/dialects/PostgresPoolProvider';\nimport { InternalDialect } from '../../../query/domain/internal/InternalDialect';\n\n/**\n * Postgres adapter that turns adapter config into a transactional `DBClient`.\n */\nexport class PostgresAdapter implements Adapter {\n static readonly BRAND = 'tango.orm.postgres_adapter' as const;\n readonly __tangoBrand: typeof PostgresAdapter.BRAND = PostgresAdapter.BRAND;\n readonly name = 'postgres';\n readonly dialect: Adapter['dialect'] = InternalDialect.POSTGRES;\n\n /**\n * Declares capabilities of this database adapter.\n * Used by the migration runner and query compiler to determine which\n * SQL features can be safely used:\n * - transactionalDDL: Postgres supports DDL inside transactions (safe rollback of schema changes)\n * - concurrentIndex: Supports CREATE INDEX CONCURRENTLY (non-blocking index builds)\n * - validateForeignKeys: Supports deferred FK validation via NOT VALID + VALIDATE CONSTRAINT\n * - ignoreDuplicateInsert: Supports duplicate-safe insert semantics for manager-owned link writes\n */\n readonly features: Adapter['features'] = {\n transactionalDDL: true,\n concurrentIndex: true,\n validateForeignKeys: true,\n ignoreDuplicateInsert: true,\n };\n readonly placeholders: SqlPlaceholders = {\n at(index: number): string {\n return `$${index}`;\n },\n list(count: number): string {\n return this.listFromOffset(count, 0);\n },\n listFromOffset(count: number, startOffset: number): string {\n return Array.from({ length: count }, (_value, index) => `$${startOffset + index + 1}`).join(', ');\n },\n };\n private readonly poolProvider = new PostgresPoolProvider();\n\n /**\n * Narrow an unknown value to `PostgresAdapter`.\n */\n static isPostgresAdapter(value: unknown): value is PostgresAdapter {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { __tangoBrand?: unknown }).__tangoBrand === PostgresAdapter.BRAND\n );\n }\n\n /**\n * Open a Postgres connection pool and return a client-backed DB abstraction.\n */\n async connect(config: AdapterConfig): Promise<DBClient> {\n const pool = await this.poolProvider.createPool(config);\n const client = await pool.connect();\n return new PostgresClient(client);\n }\n}\n","import type { DBClient } from '../DBClient';\nimport type { SqliteDatabaseLike } from './SqliteDatabaseLike';\n\n/**\n * Transaction-capable client backed by a synchronous `better-sqlite3` handle.\n */\nexport class SqliteClient implements DBClient {\n static readonly BRAND = 'tango.orm.sqlite_client' as const;\n readonly __tangoBrand: typeof SqliteClient.BRAND = SqliteClient.BRAND;\n private inTransaction = false;\n\n constructor(private db: SqliteDatabaseLike) {}\n\n /**\n * Narrow an unknown value to `SqliteClient`.\n */\n static isSqliteClient(value: unknown): value is SqliteClient {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { __tangoBrand?: unknown }).__tangoBrand === SqliteClient.BRAND\n );\n }\n\n /**\n * Execute a SQL statement with optional parameters.\n *\n * `SELECT`/`PRAGMA` statements return row data; write statements return\n * an empty row list.\n */\n async query<T = unknown>(sql: string, params?: readonly unknown[]): Promise<{ rows: T[] }> {\n const stmt = this.db.prepare(sql);\n const isPragmaWrite = /^\\s*PRAGMA\\b/i.test(sql) && /=/.test(sql);\n\n const normalizedParams = params?.map((param) => this.normalizeParam(param));\n\n if (!isPragmaWrite && stmt.reader) {\n const rows = normalizedParams ? stmt.all(...(normalizedParams as unknown[])) : stmt.all();\n return { rows: rows as T[] };\n }\n\n if (normalizedParams) {\n stmt.run(...(normalizedParams as unknown[]));\n } else {\n stmt.run();\n }\n return { rows: [] };\n }\n\n /**\n * Begin a transaction if one is not already active.\n */\n async begin(): Promise<void> {\n if (!this.inTransaction) {\n this.db.prepare('BEGIN IMMEDIATE').run();\n this.inTransaction = true;\n }\n }\n\n /**\n * Commit the active transaction.\n */\n async commit(): Promise<void> {\n if (this.inTransaction) {\n this.db.prepare('COMMIT').run();\n this.inTransaction = false;\n }\n }\n\n /**\n * Roll back the active transaction.\n */\n async rollback(): Promise<void> {\n if (this.inTransaction) {\n this.db.prepare('ROLLBACK').run();\n this.inTransaction = false;\n }\n }\n\n /**\n * Create a savepoint inside the active transaction.\n */\n async createSavepoint(name: string): Promise<void> {\n this.db.prepare(`SAVEPOINT ${name}`).run();\n }\n\n /**\n * Release a previously-created savepoint.\n */\n async releaseSavepoint(name: string): Promise<void> {\n this.db.prepare(`RELEASE SAVEPOINT ${name}`).run();\n }\n\n /**\n * Roll back the active transaction to a savepoint.\n */\n async rollbackToSavepoint(name: string): Promise<void> {\n this.db.prepare(`ROLLBACK TO SAVEPOINT ${name}`).run();\n }\n\n /**\n * Close the underlying SQLite handle.\n */\n async close(): Promise<void> {\n this.db.close();\n }\n\n private normalizeParam(value: unknown): unknown {\n if (isDateValue(value)) {\n return value.toISOString();\n }\n if (typeof value === 'boolean') {\n return value ? 1 : 0;\n }\n return value;\n }\n}\n\nfunction isDateValue(value: unknown): value is Date {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { getTime?: unknown }).getTime === 'function' &&\n typeof (value as { toISOString?: unknown }).toISOString === 'function'\n );\n}\n","import { createRequire } from 'node:module';\nimport type { Adapter, AdapterConfig, SqlPlaceholders } from '../Adapter';\nimport type { DBClient } from '../../clients/DBClient';\nimport { SqliteClient } from '../../clients/dialects/SqliteClient';\nimport type { SqliteDatabaseConstructor } from '../../clients/dialects/SqliteDatabaseLike';\nimport { InternalDialect } from '../../../query/domain/internal/InternalDialect';\n\n/**\n * SQLite adapter that creates a `better-sqlite3` backed `DBClient`.\n */\nexport class SqliteAdapter implements Adapter {\n static readonly BRAND = 'tango.orm.sqlite_adapter' as const;\n readonly __tangoBrand: typeof SqliteAdapter.BRAND = SqliteAdapter.BRAND;\n readonly name = 'sqlite';\n readonly dialect: Adapter['dialect'] = InternalDialect.SQLITE;\n readonly features: Adapter['features'] = {\n transactionalDDL: true,\n concurrentIndex: false,\n validateForeignKeys: false,\n ignoreDuplicateInsert: true,\n };\n readonly placeholders: SqlPlaceholders = {\n at(): string {\n return '?';\n },\n list(count: number): string {\n return Array.from({ length: count }, () => '?').join(', ');\n },\n listFromOffset(count: number): string {\n return this.list(count);\n },\n };\n\n /**\n * Narrow an unknown value to `SqliteAdapter`.\n */\n static isSqliteAdapter(value: unknown): value is SqliteAdapter {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { __tangoBrand?: unknown }).__tangoBrand === SqliteAdapter.BRAND\n );\n }\n\n /**\n * Open a SQLite database and apply baseline pragmas for durability/safety.\n */\n async connect(config: AdapterConfig = {}): Promise<DBClient> {\n const Database = this.getDatabaseCtor();\n const filename =\n typeof config.filename === 'string' && config.filename.length > 0 ? config.filename : ':memory:';\n const db = new Database(filename);\n db.pragma('journal_mode = WAL');\n db.pragma('foreign_keys = ON');\n db.pragma('busy_timeout = 5000');\n\n return new SqliteClient(db);\n }\n\n private getDatabaseCtor(): SqliteDatabaseConstructor {\n const require = createRequire(import.meta.url);\n const moduleValue = require('better-sqlite3') as unknown;\n if (typeof moduleValue === 'function') {\n return moduleValue as SqliteDatabaseConstructor;\n }\n\n const defaultExport = (moduleValue as { default?: unknown }).default;\n if (typeof defaultExport === 'function') {\n return defaultExport as SqliteDatabaseConstructor;\n }\n\n throw new TypeError('Failed to load better-sqlite3 constructor.');\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { t as DBClient } from "../DBClient-DuYcXolQ.js";
2
2
  import { n as AdapterConfig, r as SqlPlaceholders, t as Adapter } from "../Adapter-DKxAaL4l.js";
3
- import { a as index_d_exports, c as getDefaultAdapterRegistry, i as PostgresClient, l as SqliteAdapter, n as index_d_exports$1, o as AdapterRegistry, r as SqliteClient, s as connectDB, u as PostgresAdapter } from "../index-B-aibguC.js";
3
+ import { a as index_d_exports, c as getDefaultAdapterRegistry, i as PostgresClient, l as SqliteAdapter, n as index_d_exports$1, o as AdapterRegistry, r as SqliteClient, s as connectDB, u as PostgresAdapter } from "../index-o2LFpJ8S.js";
4
4
  export { type Adapter, type AdapterConfig, AdapterRegistry, type DBClient, PostgresAdapter, PostgresClient, type SqlPlaceholders, SqliteAdapter, SqliteClient, index_d_exports as adapters, index_d_exports$1 as clients, connectDB, getDefaultAdapterRegistry };
@@ -1,3 +1,3 @@
1
- import { i as PostgresAdapter, o as PostgresClient, r as SqliteClient, t as SqliteAdapter } from "../SqliteAdapter-6oyUmoJf.js";
2
- import { a as connectDB, i as AdapterRegistry, n as clients_exports, o as getDefaultAdapterRegistry, r as adapters_exports } from "../connection-D-E6_Yf1.js";
1
+ import { i as PostgresAdapter, r as SqliteClient, s as PostgresClient, t as SqliteAdapter } from "../SqliteAdapter-CrUhpTDb.js";
2
+ import { a as connectDB, i as AdapterRegistry, n as clients_exports, o as getDefaultAdapterRegistry, r as adapters_exports } from "../connection-B2cDwZ72.js";
3
3
  export { AdapterRegistry, PostgresAdapter, PostgresClient, SqliteAdapter, SqliteClient, adapters_exports as adapters, clients_exports as clients, connectDB, getDefaultAdapterRegistry };
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./chunk-8H4AJuhK.js";
2
- import { i as PostgresAdapter, o as PostgresClient, r as SqliteClient, t as SqliteAdapter } from "./SqliteAdapter-6oyUmoJf.js";
2
+ import { i as PostgresAdapter, r as SqliteClient, s as PostgresClient, t as SqliteAdapter } from "./SqliteAdapter-CrUhpTDb.js";
3
3
  //#region src/connection/adapters/dialects/index.ts
4
4
  var dialects_exports$1 = /* @__PURE__ */ __exportAll({
5
5
  PostgresAdapter: () => PostgresAdapter,
@@ -30,8 +30,8 @@ var AdapterRegistry = class AdapterRegistry {
30
30
  static async getDefaultRegistry() {
31
31
  if (AdapterRegistry.defaultRegistryInstance) return AdapterRegistry.defaultRegistryInstance;
32
32
  AdapterRegistry.defaultRegistryInstance = new AdapterRegistry();
33
- const { PostgresAdapter } = await import("./SqliteAdapter-6oyUmoJf.js").then((n) => n.a);
34
- const { SqliteAdapter } = await import("./SqliteAdapter-6oyUmoJf.js").then((n) => n.n);
33
+ const { PostgresAdapter } = await import("./SqliteAdapter-CrUhpTDb.js").then((n) => n.a);
34
+ const { SqliteAdapter } = await import("./SqliteAdapter-CrUhpTDb.js").then((n) => n.n);
35
35
  AdapterRegistry.defaultRegistryInstance.register(new PostgresAdapter());
36
36
  AdapterRegistry.defaultRegistryInstance.register(new SqliteAdapter());
37
37
  return AdapterRegistry.defaultRegistryInstance;
@@ -112,4 +112,4 @@ var connection_exports = /* @__PURE__ */ __exportAll({
112
112
  //#endregion
113
113
  export { connectDB as a, AdapterRegistry as i, clients_exports as n, getDefaultAdapterRegistry as o, adapters_exports as r, connection_exports as t };
114
114
 
115
- //# sourceMappingURL=connection-D-E6_Yf1.js.map
115
+ //# sourceMappingURL=connection-B2cDwZ72.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection-D-E6_Yf1.js","names":[],"sources":["../src/connection/adapters/dialects/index.ts","../src/connection/adapters/AdapterRegistry.ts","../src/connection/adapters/index.ts","../src/connection/clients/dialects/index.ts","../src/connection/clients/index.ts","../src/connection/index.ts"],"sourcesContent":["/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport { PostgresAdapter } from './PostgresAdapter';\nexport { SqliteAdapter } from './SqliteAdapter';\n","import type { Adapter, AdapterConfig } from './Adapter';\nimport type { DBClient } from '../clients/DBClient';\n\n/**\n * Runtime registry for database adapters.\n *\n * Use a custom instance when tests or applications need explicit control\n * over supported adapters; use `getDefaultRegistry()` for the built-in set.\n */\nexport class AdapterRegistry {\n static readonly BRAND = 'tango.orm.adapter_registry' as const;\n private static defaultRegistryInstance: AdapterRegistry | undefined;\n readonly __tangoBrand: typeof AdapterRegistry.BRAND = AdapterRegistry.BRAND;\n private adapters = new Map<string, Adapter>();\n\n /**\n * Narrow an unknown value to `AdapterRegistry`.\n */\n static isAdapterRegistry(value: unknown): value is AdapterRegistry {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { __tangoBrand?: unknown }).__tangoBrand === AdapterRegistry.BRAND\n );\n }\n\n /**\n * Return a lazily-initialized registry preloaded with built-in adapters.\n */\n static async getDefaultRegistry(): Promise<AdapterRegistry> {\n if (AdapterRegistry.defaultRegistryInstance) {\n return AdapterRegistry.defaultRegistryInstance;\n }\n\n AdapterRegistry.defaultRegistryInstance = new AdapterRegistry();\n\n const { PostgresAdapter } = await import('./dialects/PostgresAdapter');\n const { SqliteAdapter } = await import('./dialects/SqliteAdapter');\n\n AdapterRegistry.defaultRegistryInstance.register(new PostgresAdapter());\n AdapterRegistry.defaultRegistryInstance.register(new SqliteAdapter());\n\n return AdapterRegistry.defaultRegistryInstance;\n }\n\n /**\n * Register an adapter under its declared `name`.\n */\n register(adapter: Adapter): this {\n this.adapters.set(adapter.name, adapter);\n return this;\n }\n\n /**\n * Resolve an adapter by name, or throw a descriptive error.\n */\n get(name: string): Adapter {\n const adapter = this.adapters.get(name);\n if (!adapter) {\n const available = [...this.adapters.keys()].join(', ');\n throw new Error(`Unknown adapter: ${name}. Available adapters: ${available || 'none'}`);\n }\n return adapter;\n }\n\n /**\n * Check whether an adapter has been registered.\n */\n has(name: string): boolean {\n return this.adapters.has(name);\n }\n}\n\n/**\n * Connect to a database by adapter name using the provided (or default) registry.\n */\nexport async function connectDB(\n config: AdapterConfig & { adapter: string },\n registry?: AdapterRegistry\n): Promise<DBClient> {\n const effectiveRegistry = registry ?? (await AdapterRegistry.getDefaultRegistry());\n const adapter = effectiveRegistry.get(config.adapter);\n return adapter.connect(config);\n}\n\n/**\n * Convenience helper that exposes the singleton default adapter registry.\n */\nexport async function getDefaultAdapterRegistry(): Promise<AdapterRegistry> {\n return AdapterRegistry.getDefaultRegistry();\n}\n","/**\n * Domain boundary barrel: exposes namespaced exports for Django-style drill-down\n * imports and curated flat exports for TS-native ergonomics.\n */\n\nexport * as dialects from './dialects/index';\n\nexport { AdapterRegistry, connectDB, getDefaultAdapterRegistry } from './AdapterRegistry';\nexport type { Adapter, AdapterConfig, SqlPlaceholders } from './Adapter';\nexport { PostgresAdapter, SqliteAdapter } from './dialects/index';\n","/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport { PostgresClient } from './PostgresClient';\nexport { SqliteClient } from './SqliteClient';\n","/**\n * Domain boundary barrel: exposes namespaced exports for Django-style drill-down\n * imports and curated flat exports for TS-native ergonomics.\n */\n\nexport * as dialects from './dialects/index';\n\nexport type { DBClient } from './DBClient';\nexport { PostgresClient, SqliteClient } from './dialects/index';\n","/**\n * Domain boundary barrel: exposes namespaced exports for Django-style drill-down\n * imports and curated flat exports for TS-native ergonomics.\n */\n\nexport * as adapters from './adapters/index';\nexport * as clients from './clients/index';\n\nexport { AdapterRegistry, connectDB, getDefaultAdapterRegistry } from './adapters/index';\nexport type { Adapter, AdapterConfig, SqlPlaceholders } from './adapters/index';\nexport type { DBClient } from './clients/DBClient';\nexport { PostgresAdapter, SqliteAdapter } from './adapters/index';\nexport { PostgresClient, SqliteClient } from './clients/index';\n"],"mappings":";;;;;;;;;;;;;;;ACSA,IAAa,kBAAb,MAAa,gBAAgB;CACzB,OAAgB,QAAQ;CACxB,OAAe;CACf,eAAsD,gBAAgB;CACtE,2BAAmB,IAAI,IAAqB;;;;CAK5C,OAAO,kBAAkB,OAA0C;EAC/D,OACI,OAAO,UAAU,YACjB,UAAU,QACT,MAAqC,iBAAiB,gBAAgB;CAE/E;;;;CAKA,aAAa,qBAA+C;EACxD,IAAI,gBAAgB,yBAChB,OAAO,gBAAgB;EAG3B,gBAAgB,0BAA0B,IAAI,gBAAgB;EAE9D,MAAM,EAAE,oBAAoB,MAAM,OAAO,+BAAA,MAAA,MAAA,EAAA,CAAA;EACzC,MAAM,EAAE,kBAAkB,MAAM,OAAO,+BAAA,MAAA,MAAA,EAAA,CAAA;EAEvC,gBAAgB,wBAAwB,SAAS,IAAI,gBAAgB,CAAC;EACtE,gBAAgB,wBAAwB,SAAS,IAAI,cAAc,CAAC;EAEpE,OAAO,gBAAgB;CAC3B;;;;CAKA,SAAS,SAAwB;EAC7B,KAAK,SAAS,IAAI,QAAQ,MAAM,OAAO;EACvC,OAAO;CACX;;;;CAKA,IAAI,MAAuB;EACvB,MAAM,UAAU,KAAK,SAAS,IAAI,IAAI;EACtC,IAAI,CAAC,SAAS;GACV,MAAM,YAAY,CAAC,GAAG,KAAK,SAAS,KAAK,CAAC,EAAE,KAAK,IAAI;GACrD,MAAM,IAAI,MAAM,oBAAoB,KAAK,wBAAwB,aAAa,QAAQ;EAC1F;EACA,OAAO;CACX;;;;CAKA,IAAI,MAAuB;EACvB,OAAO,KAAK,SAAS,IAAI,IAAI;CACjC;AACJ;;;;AAKA,eAAsB,UAClB,QACA,UACiB;CAGjB,QAF0B,YAAa,MAAM,gBAAgB,mBAAmB,GAC9C,IAAI,OAAO,OAChC,EAAE,QAAQ,MAAM;AACjC;;;;AAKA,eAAsB,4BAAsD;CACxE,OAAO,gBAAgB,mBAAmB;AAC9C"}
1
+ {"version":3,"file":"connection-B2cDwZ72.js","names":[],"sources":["../src/connection/adapters/dialects/index.ts","../src/connection/adapters/AdapterRegistry.ts","../src/connection/adapters/index.ts","../src/connection/clients/dialects/index.ts","../src/connection/clients/index.ts","../src/connection/index.ts"],"sourcesContent":["/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport { PostgresAdapter } from './PostgresAdapter';\nexport { SqliteAdapter } from './SqliteAdapter';\n","import type { Adapter, AdapterConfig } from './Adapter';\nimport type { DBClient } from '../clients/DBClient';\n\n/**\n * Runtime registry for database adapters.\n *\n * Use a custom instance when tests or applications need explicit control\n * over supported adapters; use `getDefaultRegistry()` for the built-in set.\n */\nexport class AdapterRegistry {\n static readonly BRAND = 'tango.orm.adapter_registry' as const;\n private static defaultRegistryInstance: AdapterRegistry | undefined;\n readonly __tangoBrand: typeof AdapterRegistry.BRAND = AdapterRegistry.BRAND;\n private adapters = new Map<string, Adapter>();\n\n /**\n * Narrow an unknown value to `AdapterRegistry`.\n */\n static isAdapterRegistry(value: unknown): value is AdapterRegistry {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { __tangoBrand?: unknown }).__tangoBrand === AdapterRegistry.BRAND\n );\n }\n\n /**\n * Return a lazily-initialized registry preloaded with built-in adapters.\n */\n static async getDefaultRegistry(): Promise<AdapterRegistry> {\n if (AdapterRegistry.defaultRegistryInstance) {\n return AdapterRegistry.defaultRegistryInstance;\n }\n\n AdapterRegistry.defaultRegistryInstance = new AdapterRegistry();\n\n const { PostgresAdapter } = await import('./dialects/PostgresAdapter');\n const { SqliteAdapter } = await import('./dialects/SqliteAdapter');\n\n AdapterRegistry.defaultRegistryInstance.register(new PostgresAdapter());\n AdapterRegistry.defaultRegistryInstance.register(new SqliteAdapter());\n\n return AdapterRegistry.defaultRegistryInstance;\n }\n\n /**\n * Register an adapter under its declared `name`.\n */\n register(adapter: Adapter): this {\n this.adapters.set(adapter.name, adapter);\n return this;\n }\n\n /**\n * Resolve an adapter by name, or throw a descriptive error.\n */\n get(name: string): Adapter {\n const adapter = this.adapters.get(name);\n if (!adapter) {\n const available = [...this.adapters.keys()].join(', ');\n throw new Error(`Unknown adapter: ${name}. Available adapters: ${available || 'none'}`);\n }\n return adapter;\n }\n\n /**\n * Check whether an adapter has been registered.\n */\n has(name: string): boolean {\n return this.adapters.has(name);\n }\n}\n\n/**\n * Connect to a database by adapter name using the provided (or default) registry.\n */\nexport async function connectDB(\n config: AdapterConfig & { adapter: string },\n registry?: AdapterRegistry\n): Promise<DBClient> {\n const effectiveRegistry = registry ?? (await AdapterRegistry.getDefaultRegistry());\n const adapter = effectiveRegistry.get(config.adapter);\n return adapter.connect(config);\n}\n\n/**\n * Convenience helper that exposes the singleton default adapter registry.\n */\nexport async function getDefaultAdapterRegistry(): Promise<AdapterRegistry> {\n return AdapterRegistry.getDefaultRegistry();\n}\n","/**\n * Domain boundary barrel: exposes namespaced exports for Django-style drill-down\n * imports and curated flat exports for TS-native ergonomics.\n */\n\nexport * as dialects from './dialects/index';\n\nexport { AdapterRegistry, connectDB, getDefaultAdapterRegistry } from './AdapterRegistry';\nexport type { Adapter, AdapterConfig, SqlPlaceholders } from './Adapter';\nexport { PostgresAdapter, SqliteAdapter } from './dialects/index';\n","/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport { PostgresClient } from './PostgresClient';\nexport { SqliteClient } from './SqliteClient';\n","/**\n * Domain boundary barrel: exposes namespaced exports for Django-style drill-down\n * imports and curated flat exports for TS-native ergonomics.\n */\n\nexport * as dialects from './dialects/index';\n\nexport type { DBClient } from './DBClient';\nexport { PostgresClient, SqliteClient } from './dialects/index';\n","/**\n * Domain boundary barrel: exposes namespaced exports for Django-style drill-down\n * imports and curated flat exports for TS-native ergonomics.\n */\n\nexport * as adapters from './adapters/index';\nexport * as clients from './clients/index';\n\nexport { AdapterRegistry, connectDB, getDefaultAdapterRegistry } from './adapters/index';\nexport type { Adapter, AdapterConfig, SqlPlaceholders } from './adapters/index';\nexport type { DBClient } from './clients/DBClient';\nexport { PostgresAdapter, SqliteAdapter } from './adapters/index';\nexport { PostgresClient, SqliteClient } from './clients/index';\n"],"mappings":";;;;;;;;;;;;;;;ACSA,IAAa,kBAAb,MAAa,gBAAgB;CACzB,OAAgB,QAAQ;CACxB,OAAe;CACf,eAAsD,gBAAgB;CACtE,2BAAmB,IAAI,IAAqB;;;;CAK5C,OAAO,kBAAkB,OAA0C;EAC/D,OACI,OAAO,UAAU,YACjB,UAAU,QACT,MAAqC,iBAAiB,gBAAgB;CAE/E;;;;CAKA,aAAa,qBAA+C;EACxD,IAAI,gBAAgB,yBAChB,OAAO,gBAAgB;EAG3B,gBAAgB,0BAA0B,IAAI,gBAAgB;EAE9D,MAAM,EAAE,oBAAoB,MAAM,OAAO,+BAAA,MAAA,MAAA,EAAA,CAAA;EACzC,MAAM,EAAE,kBAAkB,MAAM,OAAO,+BAAA,MAAA,MAAA,EAAA,CAAA;EAEvC,gBAAgB,wBAAwB,SAAS,IAAI,gBAAgB,CAAC;EACtE,gBAAgB,wBAAwB,SAAS,IAAI,cAAc,CAAC;EAEpE,OAAO,gBAAgB;CAC3B;;;;CAKA,SAAS,SAAwB;EAC7B,KAAK,SAAS,IAAI,QAAQ,MAAM,OAAO;EACvC,OAAO;CACX;;;;CAKA,IAAI,MAAuB;EACvB,MAAM,UAAU,KAAK,SAAS,IAAI,IAAI;EACtC,IAAI,CAAC,SAAS;GACV,MAAM,YAAY,CAAC,GAAG,KAAK,SAAS,KAAK,CAAC,EAAE,KAAK,IAAI;GACrD,MAAM,IAAI,MAAM,oBAAoB,KAAK,wBAAwB,aAAa,QAAQ;EAC1F;EACA,OAAO;CACX;;;;CAKA,IAAI,MAAuB;EACvB,OAAO,KAAK,SAAS,IAAI,IAAI;CACjC;AACJ;;;;AAKA,eAAsB,UAClB,QACA,UACiB;CAGjB,QAF0B,YAAa,MAAM,gBAAgB,mBAAmB,GAC9C,IAAI,OAAO,OAChC,EAAE,QAAQ,MAAM;AACjC;;;;AAKA,eAAsB,4BAAsD;CACxE,OAAO,gBAAgB,mBAAmB;AAC9C"}
@@ -1,7 +1,6 @@
1
- import { i as PostgresAdapter, o as PostgresClient, r as SqliteClient, t as SqliteAdapter } from "./SqliteAdapter-6oyUmoJf.js";
1
+ import { i as PostgresAdapter, o as PostgresPoolProvider, r as SqliteClient, s as PostgresClient, t as SqliteAdapter } from "./SqliteAdapter-CrUhpTDb.js";
2
2
  import { t as InternalDialect } from "./InternalDialect-U3mwJjKA.js";
3
3
  import { createRequire } from "node:module";
4
- import pg from "pg";
5
4
  import { getLogger } from "@danceroutine/tango-core";
6
5
  import { AsyncLocalStorage } from "node:async_hooks";
7
6
  import { loadConfig, loadConfigFromProjectRoot } from "@danceroutine/tango-config";
@@ -244,26 +243,19 @@ var RuntimeBoundClient = class {
244
243
  };
245
244
  //#endregion
246
245
  //#region src/runtime/internal/PostgresDBClientProvider.ts
247
- const { Pool } = pg;
248
246
  var PostgresDBClientProvider = class {
249
- pool;
247
+ config;
248
+ poolProvider = new PostgresPoolProvider();
249
+ poolPromise = null;
250
250
  activeLeaseCount = 0;
251
251
  constructor(config) {
252
- this.pool = new Pool({
253
- connectionString: config.url,
254
- host: config.host,
255
- port: config.port,
256
- database: config.database,
257
- user: config.user,
258
- password: config.password,
259
- max: config.maxConnections || 10
260
- });
252
+ this.config = config;
261
253
  }
262
254
  async query(sql, params) {
263
- return { rows: (await this.pool.query(sql, params)).rows };
255
+ return { rows: (await (await this.getPool()).query(sql, params)).rows };
264
256
  }
265
257
  async leaseTransactionClient() {
266
- const client = await this.pool.connect();
258
+ const client = await (await this.getPool()).connect();
267
259
  this.activeLeaseCount += 1;
268
260
  let released = false;
269
261
  return {
@@ -278,7 +270,17 @@ var PostgresDBClientProvider = class {
278
270
  }
279
271
  async reset() {
280
272
  if (this.activeLeaseCount > 0) throw new Error("Cannot reset Tango runtime while transaction leases are still active.");
281
- await this.pool.end();
273
+ if (!this.poolPromise) return;
274
+ const pool = await this.poolPromise;
275
+ this.poolPromise = null;
276
+ await pool.end();
277
+ }
278
+ async getPool() {
279
+ if (!this.poolPromise) this.poolPromise = this.createPool();
280
+ return this.poolPromise;
281
+ }
282
+ async createPool() {
283
+ return this.poolProvider.createPool(this.config);
282
284
  }
283
285
  };
284
286
  //#endregion
@@ -497,4 +499,4 @@ async function resetTangoRuntime() {
497
499
  //#endregion
498
500
  export { RuntimeBoundClient as a, TangoRuntime as i, initializeTangoRuntime as n, TransactionEngine as o, resetTangoRuntime as r, getTangoRuntime as t };
499
501
 
500
- //# sourceMappingURL=defaultRuntime-CdTX8cXm.js.map
502
+ //# sourceMappingURL=defaultRuntime-WIsxnh8K.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultRuntime-WIsxnh8K.js","names":[],"sources":["../src/transaction/internal/context/FrameBoundTransaction.ts","../src/transaction/internal/context/AsyncLocalTransactionEngine.ts","../src/transaction/internal/context/TransactionEngine.ts","../src/manager/internal/RuntimeBoundClient.ts","../src/runtime/internal/PostgresDBClientProvider.ts","../src/runtime/internal/SqliteDBClientProvider.ts","../src/runtime/internal/createDBClientProvider.ts","../src/runtime/TangoRuntime.ts","../src/runtime/defaultRuntime.ts"],"sourcesContent":["import type { AtomicTransaction, OnCommitOptions, SavepointOptions, SavepointResult } from '../../AtomicTransaction';\nimport type { AsyncLocalTransactionEngine } from './AsyncLocalTransactionEngine';\nimport type { TransactionFrame } from './TransactionFrame';\nimport type { TransactionState } from './TransactionState';\n\nexport class FrameBoundTransaction implements AtomicTransaction {\n private active = true;\n\n constructor(\n private readonly engine: AsyncLocalTransactionEngine,\n private readonly state: TransactionState,\n private readonly frame: TransactionFrame\n ) {}\n\n onCommit(callback: () => void, options: OnCommitOptions = {}): void {\n if (!this.active) {\n throw new Error('Cannot register an on-commit callback on an inactive transaction frame.');\n }\n\n this.frame.callbacks.push({\n order: this.state.nextCallbackOrder++,\n callback,\n robust: options.robust ?? false,\n });\n }\n\n savepoint<T>(work: (tx: AtomicTransaction) => Promise<T> | T): Promise<SavepointResult<T>>;\n savepoint<T>(\n work: (tx: AtomicTransaction) => Promise<T> | T,\n options: { throwOnError: false }\n ): Promise<SavepointResult<T>>;\n savepoint<T>(work: (tx: AtomicTransaction) => Promise<T> | T, options: { throwOnError: true }): Promise<T>;\n async savepoint<T>(\n work: (tx: AtomicTransaction) => Promise<T> | T,\n options: SavepointOptions = {}\n ): Promise<T | SavepointResult<T>> {\n if (!this.active) {\n throw new Error('Cannot open a savepoint from an inactive transaction frame.');\n }\n\n return this.engine.runSavepoint(this.state, work, options);\n }\n\n deactivate(): void {\n this.active = false;\n }\n}\n","import { AsyncLocalStorage } from 'node:async_hooks';\nimport { getLogger } from '@danceroutine/tango-core';\nimport type { TangoRuntime } from '../../../runtime/TangoRuntime';\nimport type { TransactionClientLease } from '../../../runtime/internal/DBClientProvider';\nimport type { AtomicTransaction, SavepointOptions, SavepointResult } from '../../AtomicTransaction';\nimport type { CallbackRecord } from './CallbackRecord';\nimport { FrameBoundTransaction } from './FrameBoundTransaction';\nimport type { TransactionFrame } from './TransactionFrame';\nimport type { TransactionState } from './TransactionState';\n\nexport class AsyncLocalTransactionEngine {\n private readonly logger = getLogger('tango.orm.transaction');\n private readonly storage = new AsyncLocalStorage<TransactionState>();\n\n assertNoActiveAtomicTransaction(): void {\n if (this.storage.getStore()) {\n throw new Error('UnitOfWork is unsupported inside transaction.atomic(...).');\n }\n }\n\n getActiveTransaction(runtime: TangoRuntime): AtomicTransaction | undefined {\n const state = this.storage.getStore();\n if (!state || state.runtime !== runtime) {\n return undefined;\n }\n\n return state.frames.at(-1)?.facade;\n }\n\n getActiveLease(runtime: TangoRuntime): TransactionClientLease | undefined {\n const state = this.storage.getStore();\n if (!state || state.runtime !== runtime) {\n return undefined;\n }\n\n return state.lease;\n }\n\n async atomic<T>(runtime: TangoRuntime, work: (tx: AtomicTransaction) => Promise<T> | T): Promise<T> {\n const existing = this.storage.getStore();\n if (existing) {\n if (existing.runtime !== runtime) {\n throw new Error(\n 'Cannot open a transaction for one Tango runtime while another runtime transaction is active.'\n );\n }\n\n return this.runNested(existing, work);\n }\n\n const lease = await runtime.leaseTransactionClient();\n const state: TransactionState = {\n runtime,\n lease,\n frames: [],\n nextCallbackOrder: 0,\n nextSavepointId: 0,\n };\n\n try {\n return await this.storage.run(state, async () => {\n await lease.client.begin();\n const frame = this.pushFrame(state);\n\n try {\n const result = await work(frame.facade);\n await lease.client.commit();\n const root = this.popFrame(state);\n root.facade.deactivate();\n await this.runCommittedCallbacks(root.callbacks);\n return result;\n } catch (error) {\n await this.rollbackOuter(state, error);\n throw error;\n }\n });\n } finally {\n this.deactivateAllFrames(state);\n await lease.release();\n }\n }\n\n async runSavepoint<T>(\n state: TransactionState,\n work: (tx: AtomicTransaction) => Promise<T> | T,\n options: SavepointOptions\n ): Promise<T | SavepointResult<T>> {\n try {\n const value = await this.runNested(state, work);\n if (options.throwOnError) {\n return value;\n }\n\n return {\n ok: true,\n value,\n };\n } catch (error) {\n if (options.throwOnError) {\n throw error;\n }\n\n return {\n ok: false,\n error,\n };\n }\n }\n\n private async runNested<T>(state: TransactionState, work: (tx: AtomicTransaction) => Promise<T> | T): Promise<T> {\n const savepointName = `tango_sp_${state.nextSavepointId++}`;\n await state.lease.client.createSavepoint(savepointName);\n const frame = this.pushFrame(state, savepointName);\n\n try {\n const result = await work(frame.facade);\n await state.lease.client.releaseSavepoint(savepointName);\n const completed = this.popFrame(state);\n completed.facade.deactivate();\n const parent = state.frames.at(-1);\n if (!parent) {\n throw new Error('Nested transaction frame completed without a parent frame.');\n }\n\n parent.callbacks.push(...completed.callbacks);\n parent.callbacks.sort((left, right) => left.order - right.order);\n return result;\n } catch (error) {\n try {\n await state.lease.client.rollbackToSavepoint(savepointName);\n } catch (rollbackError) {\n throw this.attachCause(rollbackError, error);\n } finally {\n const discarded = this.popFrame(state);\n discarded.facade.deactivate();\n }\n\n throw error;\n }\n }\n\n private pushFrame(state: TransactionState, savepointName?: string): TransactionFrame {\n const frame = {} as TransactionFrame;\n const facade = new FrameBoundTransaction(this, state, frame);\n frame.callbacks = [];\n frame.facade = facade;\n frame.savepointName = savepointName;\n state.frames.push(frame);\n return frame;\n }\n\n private popFrame(state: TransactionState): TransactionFrame {\n const frame = state.frames.pop();\n if (!frame) {\n throw new Error('Transaction frame stack underflow.');\n }\n\n return frame;\n }\n\n private async rollbackOuter(state: TransactionState, error: unknown): Promise<void> {\n try {\n await state.lease.client.rollback();\n } catch (rollbackError) {\n throw this.attachCause(rollbackError, error);\n } finally {\n while (state.frames.length > 0) {\n const frame = this.popFrame(state);\n frame.facade.deactivate();\n }\n }\n }\n\n private async runCommittedCallbacks(callbacks: readonly CallbackRecord[]): Promise<void> {\n for (const record of callbacks) {\n try {\n await record.callback();\n } catch (error) {\n if (!record.robust) {\n throw error;\n }\n\n try {\n this.logger.error('Post-commit callback failed.', error);\n } catch {\n // A logging backend failure cannot change the already-committed outcome.\n }\n }\n }\n }\n\n private deactivateAllFrames(state: TransactionState): void {\n state.frames.length = 0;\n }\n\n private attachCause(error: unknown, cause: unknown): unknown {\n if (!this.isErrorValue(error)) {\n return error;\n }\n\n if ('cause' in error && error.cause !== undefined) {\n return error;\n }\n\n try {\n return new Error(error.message, { cause });\n } catch {\n return error;\n }\n }\n\n private isErrorValue(value: unknown): value is Error {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { message?: unknown }).message === 'string' &&\n typeof (value as { name?: unknown }).name === 'string'\n );\n }\n}\n","import type { TangoRuntime } from '../../../runtime/TangoRuntime';\nimport type { TransactionClientLease } from '../../../runtime/internal/DBClientProvider';\nimport type { AtomicTransaction } from '../../AtomicTransaction';\nimport { AsyncLocalTransactionEngine } from './AsyncLocalTransactionEngine';\n\n/**\n * Runtime-bound transaction facade used by internal ORM/runtime components.\n */\nexport class TransactionEngine {\n private static readonly engine = new AsyncLocalTransactionEngine();\n\n private constructor(private readonly runtime: TangoRuntime) {}\n\n static forRuntime(runtime: TangoRuntime): TransactionEngine {\n return new TransactionEngine(runtime);\n }\n\n static assertNoActiveAtomicTransaction(): void {\n this.engine.assertNoActiveAtomicTransaction();\n }\n\n getActiveTransaction(): AtomicTransaction | undefined {\n return TransactionEngine.engine.getActiveTransaction(this.runtime);\n }\n\n getActiveLease(): TransactionClientLease | undefined {\n return TransactionEngine.engine.getActiveLease(this.runtime);\n }\n\n async atomic<T>(work: (tx: AtomicTransaction) => Promise<T> | T): Promise<T> {\n return TransactionEngine.engine.atomic(this.runtime, work);\n }\n}\n","import type { DBClient } from '../../connection/index';\nimport type { TangoRuntime } from '../../runtime/index';\nimport { TransactionEngine } from '../../transaction/internal/context';\n\n/**\n * DB client proxy that resolves either the active transaction lease or the\n * runtime autocommit path lazily.\n */\nexport class RuntimeBoundClient implements DBClient {\n constructor(private readonly runtime: TangoRuntime) {}\n\n async query<T = unknown>(sql: string, params?: readonly unknown[]): Promise<{ rows: T[] }> {\n const lease = TransactionEngine.forRuntime(this.runtime).getActiveLease();\n if (lease) {\n return lease.client.query<T>(sql, params);\n }\n\n const runtimeWithQuery = this.runtime as TangoRuntime & {\n query?: <TResult = unknown>(sql: string, params?: readonly unknown[]) => Promise<{ rows: TResult[] }>;\n };\n if (typeof runtimeWithQuery.query === 'function') {\n return runtimeWithQuery.query<T>(sql, params);\n }\n\n const client = await this.runtime.getClient();\n return client.query<T>(sql, params);\n }\n\n async begin(): Promise<void> {\n throw new Error('Runtime-bound clients do not support manual begin(). Use transaction.atomic(...) instead.');\n }\n\n async commit(): Promise<void> {\n throw new Error('Runtime-bound clients do not support manual commit(). Use transaction.atomic(...) instead.');\n }\n\n async rollback(): Promise<void> {\n throw new Error('Runtime-bound clients do not support manual rollback(). Use transaction.atomic(...) instead.');\n }\n\n async createSavepoint(_name: string): Promise<void> {\n throw new Error(\n 'Runtime-bound clients do not support manual savepoints. Use transaction.atomic(...) or tx.savepoint(...) instead.'\n );\n }\n\n async releaseSavepoint(_name: string): Promise<void> {\n throw new Error(\n 'Runtime-bound clients do not support manual savepoint release. Use transaction.atomic(...) or tx.savepoint(...) instead.'\n );\n }\n\n async rollbackToSavepoint(_name: string): Promise<void> {\n throw new Error(\n 'Runtime-bound clients do not support manual savepoint rollback. Use transaction.atomic(...) or tx.savepoint(...) instead.'\n );\n }\n\n async close(): Promise<void> {\n throw new Error('Runtime-bound clients do not support manual close(). Use TangoRuntime.reset() instead.');\n }\n}\n","import type { AdapterConfig } from '../../connection/adapters/Adapter';\nimport { PostgresClient } from '../../connection/clients/dialects/PostgresClient';\nimport { PostgresPoolProvider, type PostgresPoolLike } from '../../connection/clients/dialects/PostgresPoolProvider';\nimport type { DBClientProvider, TransactionClientLease } from './DBClientProvider';\n\nexport class PostgresDBClientProvider implements DBClientProvider {\n private readonly poolProvider = new PostgresPoolProvider();\n private poolPromise: Promise<PostgresPoolLike> | null = null;\n private activeLeaseCount = 0;\n\n constructor(private readonly config: AdapterConfig) {}\n\n async query<T = unknown>(sql: string, params?: readonly unknown[]): Promise<{ rows: T[] }> {\n const pool = await this.getPool();\n const result = await pool.query(sql, params);\n return { rows: result.rows as T[] };\n }\n\n async leaseTransactionClient(): Promise<TransactionClientLease> {\n const pool = await this.getPool();\n const client = await pool.connect();\n this.activeLeaseCount += 1;\n let released = false;\n\n return {\n client: new PostgresClient(client),\n release: async () => {\n if (released) {\n return;\n }\n\n released = true;\n this.activeLeaseCount -= 1;\n client.release();\n },\n };\n }\n\n async reset(): Promise<void> {\n if (this.activeLeaseCount > 0) {\n throw new Error('Cannot reset Tango runtime while transaction leases are still active.');\n }\n\n if (!this.poolPromise) {\n return;\n }\n\n const pool = await this.poolPromise;\n this.poolPromise = null;\n await pool.end();\n }\n\n private async getPool(): Promise<PostgresPoolLike> {\n if (!this.poolPromise) {\n this.poolPromise = this.createPool();\n }\n\n return this.poolPromise;\n }\n\n private async createPool(): Promise<PostgresPoolLike> {\n return this.poolProvider.createPool(this.config);\n }\n}\n","import { createRequire } from 'node:module';\nimport type { AdapterConfig } from '../../connection/adapters/Adapter';\nimport { SqliteClient } from '../../connection/clients/dialects/SqliteClient';\nimport type { SqliteDatabaseConstructor } from '../../connection/clients/dialects/SqliteDatabaseLike';\nimport type { DBClientProvider, TransactionClientLease } from './DBClientProvider';\n\nexport class SqliteDBClientProvider implements DBClientProvider {\n private readonly filename: string;\n private readonly Database: SqliteDatabaseConstructor;\n private readonly autocommitClient: SqliteClient;\n private activeLeaseCount = 0;\n private exclusiveTail: Promise<void> = Promise.resolve();\n\n constructor(config: AdapterConfig = {}) {\n this.Database = this.getDatabaseCtor();\n this.filename =\n typeof config.filename === 'string' && config.filename.length > 0 ? config.filename : ':memory:';\n this.autocommitClient = this.openClient(this.filename);\n }\n\n async query<T = unknown>(sql: string, params?: readonly unknown[]): Promise<{ rows: T[] }> {\n return this.runExclusive(() => this.autocommitClient.query<T>(sql, params));\n }\n\n async leaseTransactionClient(): Promise<TransactionClientLease> {\n if (this.filename === ':memory:') {\n throw new Error('transaction.atomic(...) requires a file-backed SQLite database. :memory: is unsupported.');\n }\n\n const releaseExclusive = await this.acquireExclusive();\n try {\n const client = this.openClient(this.filename);\n this.activeLeaseCount += 1;\n let released = false;\n\n return {\n client,\n release: async () => {\n if (released) {\n return;\n }\n\n released = true;\n this.activeLeaseCount -= 1;\n try {\n await client.close();\n } finally {\n releaseExclusive();\n }\n },\n };\n } catch (error) {\n releaseExclusive();\n throw error;\n }\n }\n\n async reset(): Promise<void> {\n if (this.activeLeaseCount > 0) {\n throw new Error('Cannot reset Tango runtime while transaction leases are still active.');\n }\n\n await this.autocommitClient.close();\n }\n\n private openClient(filename: string): SqliteClient {\n const db = new this.Database(filename);\n db.pragma('journal_mode = WAL');\n db.pragma('foreign_keys = ON');\n db.pragma('busy_timeout = 5000');\n return new SqliteClient(db);\n }\n\n private async runExclusive<T>(work: () => Promise<T>): Promise<T> {\n const release = await this.acquireExclusive();\n try {\n return await work();\n } finally {\n release();\n }\n }\n\n private async acquireExclusive(): Promise<() => void> {\n const previous = this.exclusiveTail;\n let release: (() => void) | null = null;\n this.exclusiveTail = new Promise<void>((resolve) => {\n release = resolve;\n });\n await previous;\n return () => {\n release?.();\n };\n }\n\n private getDatabaseCtor(): SqliteDatabaseConstructor {\n const require = createRequire(import.meta.url);\n const moduleValue = require('better-sqlite3') as unknown;\n if (typeof moduleValue === 'function') {\n return moduleValue as SqliteDatabaseConstructor;\n }\n\n const defaultExport = (moduleValue as { default?: unknown }).default;\n if (typeof defaultExport === 'function') {\n return defaultExport as SqliteDatabaseConstructor;\n }\n\n throw new TypeError('Failed to load better-sqlite3 constructor.');\n }\n}\n","import type { AdapterConfig } from '../../connection/adapters/Adapter';\nimport type { DBClientProvider } from './DBClientProvider';\nimport { PostgresDBClientProvider } from './PostgresDBClientProvider';\nimport { SqliteDBClientProvider } from './SqliteDBClientProvider';\n\nexport function createDBClientProvider(config: AdapterConfig & { adapter: string }): DBClientProvider {\n switch (config.adapter) {\n case 'postgres':\n return new PostgresDBClientProvider(config);\n case 'sqlite':\n return new SqliteDBClientProvider(config);\n default:\n throw new Error(`Unsupported adapter for Tango runtime provider: ${config.adapter}`);\n }\n}\n","import type { LoadedConfig } from '@danceroutine/tango-config';\nimport type { DBClient } from '../connection/index';\nimport type { Adapter } from '../connection/adapters/Adapter';\nimport { PostgresAdapter } from '../connection/adapters/dialects/PostgresAdapter';\nimport { SqliteAdapter } from '../connection/adapters/dialects/SqliteAdapter';\nimport type { Dialect } from '../query/domain/index';\nimport { InternalDialect } from '../query/domain/internal/InternalDialect';\nimport { RuntimeBoundClient } from '../manager/internal/RuntimeBoundClient';\nimport type { DBClientProvider, TransactionClientLease } from './internal/DBClientProvider';\nimport { createDBClientProvider } from './internal/createDBClientProvider';\n\n/**\n * Framework-owned database runtime that resolves Tango config and lazily\n * creates the shared connection provider used by manager-backed models.\n */\nexport class TangoRuntime {\n static readonly BRAND = 'tango.orm.runtime' as const;\n readonly __tangoBrand: typeof TangoRuntime.BRAND = TangoRuntime.BRAND;\n private readonly loadedConfig: LoadedConfig;\n private providerPromise: Promise<DBClientProvider> | null = null;\n private runtimeClientPromise: Promise<DBClient> | null = null;\n private cachedAdapter: Adapter | null = null;\n\n constructor(loadLoadedConfig: () => LoadedConfig) {\n this.loadedConfig = loadLoadedConfig();\n }\n\n /**\n * Narrow an unknown value to `TangoRuntime`.\n */\n static isTangoRuntime(value: unknown): value is TangoRuntime {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { __tangoBrand?: unknown }).__tangoBrand === TangoRuntime.BRAND\n );\n }\n\n /**\n * Return the loaded Tango config snapshot for the active environment.\n */\n getConfig(): LoadedConfig {\n return this.loadedConfig;\n }\n\n /**\n * Return the configured SQL dialect for the current runtime.\n */\n getDialect(): Dialect {\n return this.loadedConfig.current.db.adapter;\n }\n\n /**\n * Return the adapter backing the configured dialect. Manager-side\n * compilers use this to obtain placeholder formatters and dialect\n * capabilities without branching on the raw dialect string.\n */\n getAdapter(): Adapter {\n if (!this.cachedAdapter) {\n this.cachedAdapter = this.buildAdapterForDialect(this.getDialect());\n }\n return this.cachedAdapter;\n }\n\n /**\n * Return the runtime-bound DB client facade used by manager-backed code.\n */\n async getClient(): Promise<DBClient> {\n if (!this.runtimeClientPromise) {\n this.runtimeClientPromise = Promise.resolve(new RuntimeBoundClient(this));\n }\n\n return this.runtimeClientPromise;\n }\n\n /**\n * Execute SQL through the autocommit path owned by this runtime.\n */\n async query<T = unknown>(sql: string, params?: readonly unknown[]): Promise<{ rows: T[] }> {\n const provider = await this.getProvider();\n return provider.query<T>(sql, params);\n }\n\n /**\n * Lease a transaction-scoped client for `transaction.atomic(...)`.\n */\n async leaseTransactionClient(): Promise<TransactionClientLease> {\n const provider = await this.getProvider();\n return provider.leaseTransactionClient();\n }\n\n /**\n * Close and clear the cached runtime resources so tests can start fresh.\n */\n async reset(): Promise<void> {\n if (!this.providerPromise) {\n this.runtimeClientPromise = null;\n return;\n }\n\n const provider = await this.providerPromise;\n this.providerPromise = null;\n this.runtimeClientPromise = null;\n await provider.reset();\n }\n\n private buildAdapterForDialect(dialect: Dialect): Adapter {\n switch (dialect) {\n case InternalDialect.POSTGRES:\n return new PostgresAdapter();\n case InternalDialect.SQLITE:\n return new SqliteAdapter();\n }\n }\n\n private async getProvider(): Promise<DBClientProvider> {\n if (!this.providerPromise) {\n const db = this.loadedConfig.current.db;\n this.providerPromise = Promise.resolve(\n createDBClientProvider({\n adapter: db.adapter,\n url: db.url,\n host: db.host,\n port: db.port,\n database: db.database,\n user: db.user,\n password: db.password,\n filename: db.filename,\n maxConnections: db.maxConnections,\n })\n );\n }\n\n return this.providerPromise;\n }\n}\n","import { loadConfig, loadConfigFromProjectRoot } from '@danceroutine/tango-config';\nimport { TangoRuntime } from './TangoRuntime';\n\nlet defaultRuntime: TangoRuntime | null = null;\n\n/**\n * Initialize the process-default Tango runtime from a Tango config loader.\n */\nexport function initializeTangoRuntime(fromFile: () => unknown): TangoRuntime {\n defaultRuntime = new TangoRuntime(() => loadConfig(fromFile));\n return defaultRuntime;\n}\n\n/**\n * Return the process-default Tango runtime, lazily loading Tango config on first access.\n */\nexport function getTangoRuntime(): TangoRuntime {\n if (!defaultRuntime) {\n defaultRuntime = new TangoRuntime(() => loadConfigFromProjectRoot());\n }\n\n return defaultRuntime;\n}\n\n/**\n * Reset the process-default Tango runtime and release any cached client.\n */\nexport async function resetTangoRuntime(): Promise<void> {\n if (!defaultRuntime) {\n return;\n }\n\n const runtime = defaultRuntime;\n defaultRuntime = null;\n await runtime.reset();\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { a as MaterializedModelRecord, n as ModelManager, r as TangoRuntime, t as registerModelObjects } from "./registerModelObjects-C-MliIiM.js";
1
+ import { a as MaterializedModelRecord, n as ModelManager, r as TangoRuntime, t as registerModelObjects } from "./registerModelObjects-CEqCRlVY.js";
2
2
  import { z } from "zod";
3
3
  import { Model } from "@danceroutine/tango-schema/domain";
4
4
 
@@ -28,4 +28,4 @@ declare global {
28
28
  }
29
29
  //#endregion
30
30
  export { resetTangoRuntime as i, getTangoRuntime as n, initializeTangoRuntime as r, index_d_exports as t };
31
- //# sourceMappingURL=index-rjKca3U_.d.ts.map
31
+ //# sourceMappingURL=index-CCvYeJt4.d.ts.map
@@ -1,5 +1,5 @@
1
- import { D as ManyToManyRelatedManagerCreateInputs, E as ManyToManyRelatedManager, M as QueryExecutor, N as QuerySet, O as ManyToManyTargetRef, U as QueryResult, t as QuerySetState } from "./QuerySetState-CjyvAUBs.js";
2
- import { a as MaterializedModelRecord, i as ManagerLike, n as ModelManager, t as registerModelObjects } from "./registerModelObjects-C-MliIiM.js";
1
+ import { D as ManyToManyRelatedManagerCreateInputs, E as ManyToManyRelatedManager, M as QueryExecutor, N as QuerySet, O as ManyToManyTargetRef, U as QueryResult, t as QuerySetState } from "./QuerySetState-DRL9-rKQ.js";
2
+ import { a as MaterializedModelRecord, i as ManagerLike, n as ModelManager, t as registerModelObjects } from "./registerModelObjects-CEqCRlVY.js";
3
3
 
4
4
  //#region src/manager/relations/ManyToManyRelatedQuerySet.d.ts
5
5
  /**
@@ -55,6 +55,7 @@ declare class ManyToManyRelatedQuerySet<TTarget extends Record<string, unknown>>
55
55
  fetch<Out>(shape?: ShapeFunction<TTarget, Out> | ShapeParser<TTarget, Out>): Promise<QueryResult<TTarget | Out>>;
56
56
  fetchOne<Out>(shape?: ShapeFunction<TTarget, Out> | ShapeParser<TTarget, Out>): Promise<TTarget | Out | null>;
57
57
  count(): Promise<number>;
58
+ exists(): Promise<boolean>;
58
59
  protected spawn<TNextBaseResult extends Record<string, unknown>, TNextHydrated extends Record<string, unknown>>(state: QuerySetState<TTarget>): QuerySet<TTarget, TNextBaseResult, unknown, TNextHydrated>;
59
60
  private isStateTrivial;
60
61
  private scopedState;
@@ -67,4 +68,4 @@ declare namespace index_d_exports {
67
68
  }
68
69
  //#endregion
69
70
  export { ManyToManyRelatedQuerySetBridge as i, index_d_exports$1 as n, ManyToManyRelatedQuerySet as r, index_d_exports as t };
70
- //# sourceMappingURL=index-D9B6gKez.d.ts.map
71
+ //# sourceMappingURL=index-CJlkeldS.d.ts.map
@@ -1,6 +1,5 @@
1
1
  import { t as DBClient } from "./DBClient-DuYcXolQ.js";
2
2
  import { n as AdapterConfig, r as SqlPlaceholders, t as Adapter } from "./Adapter-DKxAaL4l.js";
3
- import Database from "better-sqlite3";
4
3
 
5
4
  //#region src/connection/adapters/dialects/PostgresAdapter.d.ts
6
5
  /**
@@ -22,6 +21,7 @@ declare class PostgresAdapter implements Adapter {
22
21
  */
23
22
  readonly features: Adapter['features'];
24
23
  readonly placeholders: SqlPlaceholders;
24
+ private readonly poolProvider;
25
25
  /**
26
26
  * Narrow an unknown value to `PostgresAdapter`.
27
27
  */
@@ -159,6 +159,18 @@ declare class PostgresClient implements DBClient {
159
159
  close(): Promise<void>;
160
160
  }
161
161
  //#endregion
162
+ //#region src/connection/clients/dialects/SqliteDatabaseLike.d.ts
163
+ type SqliteStatementLike = {
164
+ readonly reader: boolean;
165
+ all(...params: unknown[]): unknown[];
166
+ run(...params: unknown[]): unknown;
167
+ };
168
+ type SqliteDatabaseLike = {
169
+ prepare(sql: string): SqliteStatementLike;
170
+ pragma(sql: string): unknown;
171
+ close(): void;
172
+ };
173
+ //#endregion
162
174
  //#region src/connection/clients/dialects/SqliteClient.d.ts
163
175
  /**
164
176
  * Transaction-capable client backed by a synchronous `better-sqlite3` handle.
@@ -168,7 +180,7 @@ declare class SqliteClient implements DBClient {
168
180
  static readonly BRAND: "tango.orm.sqlite_client";
169
181
  readonly __tangoBrand: typeof SqliteClient.BRAND;
170
182
  private inTransaction;
171
- constructor(db: Database.Database);
183
+ constructor(db: SqliteDatabaseLike);
172
184
  /**
173
185
  * Narrow an unknown value to `SqliteClient`.
174
186
  */
@@ -223,4 +235,4 @@ declare namespace index_d_exports {
223
235
  }
224
236
  //#endregion
225
237
  export { index_d_exports$3 as a, getDefaultAdapterRegistry as c, PostgresClient as i, SqliteAdapter as l, index_d_exports$1 as n, AdapterRegistry as o, SqliteClient as r, connectDB as s, index_d_exports as t, PostgresAdapter as u };
226
- //# sourceMappingURL=index-B-aibguC.d.ts.map
238
+ //# sourceMappingURL=index-o2LFpJ8S.d.ts.map
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { t as DBClient } from "./DBClient-DuYcXolQ.js";
2
2
  import { i as Dialect, n as AdapterConfig, t as Adapter } from "./Adapter-DKxAaL4l.js";
3
- import { c as getDefaultAdapterRegistry, l as SqliteAdapter, o as AdapterRegistry, s as connectDB, t as index_d_exports, u as PostgresAdapter } from "./index-B-aibguC.js";
4
- import { A as QBuilder, E as ManyToManyRelatedManager, F as QNode, H as TableMeta, I as FilterInput, L as FilterValue, M as QueryExecutor, N as QuerySet, O as ManyToManyTargetRef, P as OrderToken, R as FilterKey, U as QueryResult, V as QueryCompiler, c as RelationMeta, i as WhereClause, j as ModelQuerySet, k as index_d_exports$2, n as OrderSpec, o as Direction, s as CompiledQuery, t as QuerySetState, z as LookupType } from "./QuerySetState-CjyvAUBs.js";
5
- import { t as index_d_exports$1 } from "./index-D9B6gKez.js";
6
- import { a as MaterializedModelRecord, i as ManagerLike, n as ModelManager, r as TangoRuntime } from "./registerModelObjects-C-MliIiM.js";
7
- import { i as resetTangoRuntime, n as getTangoRuntime, r as initializeTangoRuntime, t as index_d_exports$3 } from "./index-rjKca3U_.js";
3
+ import { c as getDefaultAdapterRegistry, l as SqliteAdapter, o as AdapterRegistry, s as connectDB, t as index_d_exports, u as PostgresAdapter } from "./index-o2LFpJ8S.js";
4
+ import { A as QBuilder, E as ManyToManyRelatedManager, F as QNode, H as TableMeta, I as FilterInput, L as FilterValue, M as QueryExecutor, N as QuerySet, O as ManyToManyTargetRef, P as OrderToken, R as FilterKey, U as QueryResult, V as QueryCompiler, c as RelationMeta, i as WhereClause, j as ModelQuerySet, k as index_d_exports$2, n as OrderSpec, o as Direction, s as CompiledQuery, t as QuerySetState, z as LookupType } from "./QuerySetState-DRL9-rKQ.js";
5
+ import { t as index_d_exports$1 } from "./index-CJlkeldS.js";
6
+ import { a as MaterializedModelRecord, i as ManagerLike, n as ModelManager, r as TangoRuntime } from "./registerModelObjects-CEqCRlVY.js";
7
+ import { i as resetTangoRuntime, n as getTangoRuntime, r as initializeTangoRuntime, t as index_d_exports$3 } from "./index-CCvYeJt4.js";
8
8
  import { a as OnCommitOptions, i as AtomicTransaction, n as UnitOfWork, o as SavepointOptions, r as atomic, s as SavepointResult, t as index_d_exports$4 } from "./index-uuG57Y7C.js";
9
9
  export { type Adapter, type AdapterConfig, AdapterRegistry, type AtomicTransaction, type CompiledQuery, type DBClient, type Dialect, type Direction, type FilterInput, type FilterKey, type FilterValue, type LookupType, type ManagerLike, ManyToManyRelatedManager, type ManyToManyTargetRef, type MaterializedModelRecord, ModelManager, ModelQuerySet, type OnCommitOptions, type OrderSpec, type OrderToken, PostgresAdapter, QBuilder as Q, QBuilder, type QNode, QueryCompiler, type QueryExecutor, QueryResult, QuerySet, type QuerySetState, type RelationMeta, type SavepointOptions, type SavepointResult, SqliteAdapter, type TableMeta, TangoRuntime, UnitOfWork, type WhereClause, atomic, connectDB, index_d_exports as connection, getDefaultAdapterRegistry, getTangoRuntime, initializeTangoRuntime, index_d_exports$1 as manager, index_d_exports$2 as query, resetTangoRuntime, index_d_exports$3 as runtime, index_d_exports$4 as transaction };
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { i as PostgresAdapter, t as SqliteAdapter } from "./SqliteAdapter-6oyUmoJf.js";
2
- import { a as connectDB, i as AdapterRegistry, o as getDefaultAdapterRegistry, t as connection_exports } from "./connection-D-E6_Yf1.js";
3
- import { d as QueryCompiler, i as QBuilder, l as QueryResult, n as ModelQuerySet, r as QuerySet, t as query_exports } from "./query-CP1UMIX6.js";
4
- import { n as ModelManager, r as ManyToManyRelatedManager } from "./registerModelObjects-DZfZ20fa.js";
5
- import { t as manager_exports } from "./manager-CiYqAYpn.js";
6
- import { i as TangoRuntime, n as initializeTangoRuntime, r as resetTangoRuntime, t as getTangoRuntime } from "./defaultRuntime-CdTX8cXm.js";
1
+ import { i as PostgresAdapter, t as SqliteAdapter } from "./SqliteAdapter-CrUhpTDb.js";
2
+ import { a as connectDB, i as AdapterRegistry, o as getDefaultAdapterRegistry, t as connection_exports } from "./connection-B2cDwZ72.js";
3
+ import { d as QueryCompiler, i as QBuilder, l as QueryResult, n as ModelQuerySet, r as QuerySet, t as query_exports } from "./query-B-ooqvSG.js";
4
+ import { n as ModelManager, r as ManyToManyRelatedManager } from "./registerModelObjects-BKGs2c_m.js";
5
+ import { t as manager_exports } from "./manager-GMmYq4lC.js";
6
+ import { i as TangoRuntime, n as initializeTangoRuntime, r as resetTangoRuntime, t as getTangoRuntime } from "./defaultRuntime-WIsxnh8K.js";
7
7
  import { t as runtime_exports } from "./runtime/index.js";
8
- import { n as UnitOfWork, r as atomic, t as transaction_exports } from "./transaction-2_2m7VUo.js";
8
+ import { n as UnitOfWork, r as atomic, t as transaction_exports } from "./transaction-DpDXQq5V.js";
9
9
  export { AdapterRegistry, ManyToManyRelatedManager, ModelManager, ModelQuerySet, PostgresAdapter, QBuilder as Q, QBuilder, QueryCompiler, QueryResult, QuerySet, SqliteAdapter, TangoRuntime, UnitOfWork, atomic, connectDB, connection_exports as connection, getDefaultAdapterRegistry, getTangoRuntime, initializeTangoRuntime, manager_exports as manager, query_exports as query, resetTangoRuntime, runtime_exports as runtime, transaction_exports as transaction };
@@ -1,4 +1,4 @@
1
- import { D as ManyToManyRelatedManagerCreateInputs, E as ManyToManyRelatedManager, O as ManyToManyTargetRef } from "../QuerySetState-CjyvAUBs.js";
2
- import { i as ManyToManyRelatedQuerySetBridge, n as index_d_exports, r as ManyToManyRelatedQuerySet } from "../index-D9B6gKez.js";
3
- import { a as MaterializedModelRecord, i as ManagerLike, n as ModelManager, t as registerModelObjects } from "../registerModelObjects-C-MliIiM.js";
1
+ import { D as ManyToManyRelatedManagerCreateInputs, E as ManyToManyRelatedManager, O as ManyToManyTargetRef } from "../QuerySetState-DRL9-rKQ.js";
2
+ import { i as ManyToManyRelatedQuerySetBridge, n as index_d_exports, r as ManyToManyRelatedQuerySet } from "../index-CJlkeldS.js";
3
+ import { a as MaterializedModelRecord, i as ManagerLike, n as ModelManager, t as registerModelObjects } from "../registerModelObjects-CEqCRlVY.js";
4
4
  export { type ManagerLike, ManyToManyRelatedManager, type ManyToManyRelatedManagerCreateInputs, ManyToManyRelatedQuerySet, type ManyToManyRelatedQuerySetBridge, type ManyToManyTargetRef, type MaterializedModelRecord, ModelManager, registerModelObjects, index_d_exports as relations };
@@ -1,3 +1,3 @@
1
- import { i as ManyToManyRelatedQuerySet, n as ModelManager, r as ManyToManyRelatedManager, t as registerModelObjects } from "../registerModelObjects-DZfZ20fa.js";
2
- import { n as relations_exports } from "../manager-CiYqAYpn.js";
1
+ import { i as ManyToManyRelatedQuerySet, n as ModelManager, r as ManyToManyRelatedManager, t as registerModelObjects } from "../registerModelObjects-BKGs2c_m.js";
2
+ import { n as relations_exports } from "../manager-GMmYq4lC.js";
3
3
  export { ManyToManyRelatedManager, ManyToManyRelatedQuerySet, ModelManager, registerModelObjects, relations_exports as relations };
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./chunk-8H4AJuhK.js";
2
- import { i as ManyToManyRelatedQuerySet, n as ModelManager, r as ManyToManyRelatedManager, t as registerModelObjects } from "./registerModelObjects-DZfZ20fa.js";
2
+ import { i as ManyToManyRelatedQuerySet, n as ModelManager, r as ManyToManyRelatedManager, t as registerModelObjects } from "./registerModelObjects-BKGs2c_m.js";
3
3
  //#region src/manager/relations/index.ts
4
4
  var relations_exports = /* @__PURE__ */ __exportAll({
5
5
  ManyToManyRelatedManager: () => ManyToManyRelatedManager,
@@ -17,4 +17,4 @@ var manager_exports = /* @__PURE__ */ __exportAll({
17
17
  //#endregion
18
18
  export { relations_exports as n, manager_exports as t };
19
19
 
20
- //# sourceMappingURL=manager-CiYqAYpn.js.map
20
+ //# sourceMappingURL=manager-GMmYq4lC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager-CiYqAYpn.js","names":[],"sources":["../src/manager/relations/index.ts","../src/manager/index.ts"],"sourcesContent":["/**\n * Domain boundary barrel: centralizes ORM relation managers attached to\n * materialized model records.\n */\n\nexport { ManyToManyRelatedQuerySet } from './ManyToManyRelatedQuerySet';\nexport type { ManyToManyRelatedQuerySetBridge } from './ManyToManyRelatedQuerySet';\nexport { ManyToManyRelatedManager } from './ManyToManyRelatedManager';\nexport type { ManyToManyRelatedManagerCreateInputs, ManyToManyTargetRef } from './ManyToManyRelatedManager';\nexport type { MaterializedModelRecord } from './MaterializedModelRecord';\n","/**\n * Domain boundary barrel: centralizes manager-first ORM APIs.\n */\nexport * as relations from './relations/index';\n\nexport type { ManagerLike } from './ManagerLike';\nexport { ModelManager } from './ModelManager';\nexport { registerModelObjects } from './registerModelObjects';\nexport { ManyToManyRelatedQuerySet } from './relations/ManyToManyRelatedQuerySet';\nexport type { ManyToManyRelatedQuerySetBridge } from './relations/ManyToManyRelatedQuerySet';\nexport { ManyToManyRelatedManager } from './relations/ManyToManyRelatedManager';\nexport type { ManyToManyRelatedManagerCreateInputs, ManyToManyTargetRef } from './relations/ManyToManyRelatedManager';\nexport type { MaterializedModelRecord } from './relations/MaterializedModelRecord';\n"],"mappings":""}
1
+ {"version":3,"file":"manager-GMmYq4lC.js","names":[],"sources":["../src/manager/relations/index.ts","../src/manager/index.ts"],"sourcesContent":["/**\n * Domain boundary barrel: centralizes ORM relation managers attached to\n * materialized model records.\n */\n\nexport { ManyToManyRelatedQuerySet } from './ManyToManyRelatedQuerySet';\nexport type { ManyToManyRelatedQuerySetBridge } from './ManyToManyRelatedQuerySet';\nexport { ManyToManyRelatedManager } from './ManyToManyRelatedManager';\nexport type { ManyToManyRelatedManagerCreateInputs, ManyToManyTargetRef } from './ManyToManyRelatedManager';\nexport type { MaterializedModelRecord } from './MaterializedModelRecord';\n","/**\n * Domain boundary barrel: centralizes manager-first ORM APIs.\n */\nexport * as relations from './relations/index';\n\nexport type { ManagerLike } from './ManagerLike';\nexport { ModelManager } from './ModelManager';\nexport { registerModelObjects } from './registerModelObjects';\nexport { ManyToManyRelatedQuerySet } from './relations/ManyToManyRelatedQuerySet';\nexport type { ManyToManyRelatedQuerySetBridge } from './relations/ManyToManyRelatedQuerySet';\nexport { ManyToManyRelatedManager } from './relations/ManyToManyRelatedManager';\nexport type { ManyToManyRelatedManagerCreateInputs, ManyToManyTargetRef } from './relations/ManyToManyRelatedManager';\nexport type { MaterializedModelRecord } from './relations/MaterializedModelRecord';\n"],"mappings":""}
@@ -1,3 +1,3 @@
1
1
  import { i as Dialect } from "../Adapter-DKxAaL4l.js";
2
- import { A as QBuilder, B as index_d_exports, C as ReverseSingleRelations, F as QNode, H as TableMeta, I as FilterInput, L as FilterValue, M as QueryExecutor, N as QuerySet, P as OrderToken, R as FilterKey, S as ReverseCollectionRelations, T as SingleRelationHydrationCardinality, U as QueryResult, V as QueryCompiler, _ as ManyRelationHydrationCardinality, a as TableMetaFactory, b as RelationHydrationCardinality, c as RelationMeta, d as GeneratedPrefetchRelatedPathKeys, f as GeneratedRelationFilterKeys, g as InternalRelationHydrationCardinality, h as HydratedRelationMap, i as WhereClause, j as ModelQuerySet, l as ForwardSingleRelations, m as HydratedQueryResult, n as OrderSpec, o as Direction, p as GeneratedSelectRelatedPathKeys, r as index_d_exports$1, s as CompiledQuery, t as QuerySetState, u as GeneratedHydratedRelationMap, v as MaybeHydratedRelationMap, w as SelectRelatedRelations, x as RelationKeys, y as PrefetchRelatedRelations, z as LookupType } from "../QuerySetState-CjyvAUBs.js";
2
+ import { A as QBuilder, B as index_d_exports, C as ReverseSingleRelations, F as QNode, H as TableMeta, I as FilterInput, L as FilterValue, M as QueryExecutor, N as QuerySet, P as OrderToken, R as FilterKey, S as ReverseCollectionRelations, T as SingleRelationHydrationCardinality, U as QueryResult, V as QueryCompiler, _ as ManyRelationHydrationCardinality, a as TableMetaFactory, b as RelationHydrationCardinality, c as RelationMeta, d as GeneratedPrefetchRelatedPathKeys, f as GeneratedRelationFilterKeys, g as InternalRelationHydrationCardinality, h as HydratedRelationMap, i as WhereClause, j as ModelQuerySet, l as ForwardSingleRelations, m as HydratedQueryResult, n as OrderSpec, o as Direction, p as GeneratedSelectRelatedPathKeys, r as index_d_exports$1, s as CompiledQuery, t as QuerySetState, u as GeneratedHydratedRelationMap, v as MaybeHydratedRelationMap, w as SelectRelatedRelations, x as RelationKeys, y as PrefetchRelatedRelations, z as LookupType } from "../QuerySetState-DRL9-rKQ.js";
3
3
  export { type CompiledQuery, type Dialect, type Direction, type FilterInput, type FilterKey, type FilterValue, type ForwardSingleRelations, type GeneratedHydratedRelationMap, type GeneratedPrefetchRelatedPathKeys, type GeneratedRelationFilterKeys, type GeneratedSelectRelatedPathKeys, type HydratedQueryResult, type HydratedRelationMap, type InternalRelationHydrationCardinality, type LookupType, type ManyRelationHydrationCardinality, type MaybeHydratedRelationMap, ModelQuerySet, type OrderSpec, type OrderToken, type PrefetchRelatedRelations, QBuilder as Q, QBuilder, type QNode, QueryCompiler, type QueryExecutor, QueryResult, QuerySet, type QuerySetState, type RelationHydrationCardinality, type RelationKeys, type RelationMeta, type ReverseCollectionRelations, type ReverseSingleRelations, type SelectRelatedRelations, type SingleRelationHydrationCardinality, type TableMeta, type TableMetaFactory, type WhereClause, index_d_exports as compiler, index_d_exports$1 as domain };
@@ -1,2 +1,2 @@
1
- import { d as QueryCompiler, i as QBuilder, l as QueryResult, n as ModelQuerySet, o as domain_exports, r as QuerySet, u as compiler_exports } from "../query-CP1UMIX6.js";
1
+ import { d as QueryCompiler, i as QBuilder, l as QueryResult, n as ModelQuerySet, o as domain_exports, r as QuerySet, u as compiler_exports } from "../query-B-ooqvSG.js";
2
2
  export { ModelQuerySet, QBuilder as Q, QBuilder, QueryCompiler, QueryResult, QuerySet, compiler_exports as compiler, domain_exports as domain };
@@ -476,6 +476,40 @@ var QueryCompiler = class QueryCompiler {
476
476
  } : void 0
477
477
  };
478
478
  }
479
+ compileExists(state) {
480
+ const validatedPlan = sqlSafetyAdapter.validate({
481
+ kind: InternalSqlValidationPlanKind.SELECT,
482
+ meta: this.meta,
483
+ selectFields: state.select?.map(String),
484
+ filterKeys: this.collectStateFilterKeys(state),
485
+ orderFields: state.order?.map((order) => String(order.by)),
486
+ relationNames: []
487
+ });
488
+ const table = validatedPlan.meta.table;
489
+ const whereParts = [];
490
+ const params = [];
491
+ if (state.q) {
492
+ const result = this.compileQNode(state.q, params.length + 1, validatedPlan.filterKeys);
493
+ if (result.sql) {
494
+ whereParts.push(result.sql);
495
+ params.push(...result.params);
496
+ }
497
+ }
498
+ state.excludes?.forEach((exclude) => {
499
+ const result = this.compileQNode({
500
+ kind: InternalQNodeType.NOT,
501
+ node: exclude
502
+ }, params.length + 1, validatedPlan.filterKeys);
503
+ if (result.sql) {
504
+ whereParts.push(result.sql);
505
+ params.push(...result.params);
506
+ }
507
+ });
508
+ return {
509
+ sql: `SELECT 1 AS tango_exists FROM ${table}${whereParts.length ? ` WHERE ${whereParts.join(" AND ")}` : ""} LIMIT 1${state.offset ? ` OFFSET ${state.offset}` : ""}`,
510
+ params
511
+ };
512
+ }
479
513
  compilePrefetch(node, sourceValues) {
480
514
  if (node.throughTable && node.throughSourceKey && node.throughTargetKey) return this.compileManyToManyPrefetch(node, sourceValues);
481
515
  const placeholders = this.placeholders.list(sourceValues.length);
@@ -1293,7 +1327,8 @@ var QuerySet = class QuerySet {
1293
1327
  * Return whether at least one row matches the current query state.
1294
1328
  */
1295
1329
  async exists() {
1296
- return await this.count() > 0;
1330
+ const compiled = new QueryCompiler(this.executor.meta, this.executor.adapter).compileExists(this.withoutHydrationState());
1331
+ return (await this.executor.client.query(compiled.sql, compiled.params)).rows.length > 0;
1297
1332
  }
1298
1333
  shapeFetchedRow(row, shape) {
1299
1334
  if (!shape) return row;
@@ -1555,4 +1590,4 @@ var query_exports = /* @__PURE__ */ __exportAll({
1555
1590
  //#endregion
1556
1591
  export { isQNodeLike as a, InternalRelationKind as c, QueryCompiler as d, OrmSqlSafetyAdapter as f, QBuilder as i, QueryResult as l, InternalQNodeType as m, ModelQuerySet as n, domain_exports as o, InternalSqlValidationPlanKind as p, QuerySet as r, TableMetaFactory as s, query_exports as t, compiler_exports as u };
1557
1592
 
1558
- //# sourceMappingURL=query-CP1UMIX6.js.map
1593
+ //# sourceMappingURL=query-B-ooqvSG.js.map