litedbmodel 2.2.10 → 2.2.11
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/README.md +8 -5
- package/dist/DBHandler.d.ts +2 -28
- package/dist/DBHandler.d.ts.map +1 -1
- package/dist/DBHandler.js.map +1 -1
- package/dist/DBModel.d.ts +14 -12
- package/dist/DBModel.d.ts.map +1 -1
- package/dist/DBModel.js +71 -72
- package/dist/DBModel.js.map +1 -1
- package/dist/Middleware.d.ts +19 -17
- package/dist/Middleware.d.ts.map +1 -1
- package/dist/Middleware.js +30 -33
- package/dist/Middleware.js.map +1 -1
- package/dist/drivers/mysql.d.ts.map +1 -1
- package/dist/drivers/mysql.js +1 -0
- package/dist/drivers/mysql.js.map +1 -1
- package/dist/drivers/postgres.d.ts.map +1 -1
- package/dist/drivers/postgres.js +42 -22
- package/dist/drivers/postgres.js.map +1 -1
- package/dist/drivers/types.d.ts +2 -26
- package/dist/drivers/types.d.ts.map +1 -1
- package/dist/drivers/types.js.map +1 -1
- package/dist/index.cjs +211 -152
- package/dist/scp/connection-routing.d.ts +50 -18
- package/dist/scp/connection-routing.d.ts.map +1 -1
- package/dist/scp/connection-routing.js +55 -24
- package/dist/scp/connection-routing.js.map +1 -1
- package/dist/scp/dbmodel-runtime.d.ts +3 -0
- package/dist/scp/dbmodel-runtime.d.ts.map +1 -1
- package/dist/scp/dbmodel-runtime.js +2 -0
- package/dist/scp/dbmodel-runtime.js.map +1 -1
- package/dist/scp/exec-context.d.ts.map +1 -1
- package/dist/scp/exec-context.js +54 -46
- package/dist/scp/exec-context.js.map +1 -1
- package/dist/scp/index.cjs +99 -48
- package/dist/scp/index.mjs +96 -47
- package/dist/scp/makesql/pool-executor.d.ts +4 -1
- package/dist/scp/makesql/pool-executor.d.ts.map +1 -1
- package/dist/scp/makesql/pool-executor.js +21 -3
- package/dist/scp/makesql/pool-executor.js.map +1 -1
- package/dist/types.d.ts +9 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/docs/BENCHMARK.md +1 -1
- package/docs/COMPARISON.md +2 -2
- package/docs/api/README.md +1 -1
- package/docs/api/classes/Conditions.md +1 -1
- package/docs/api/classes/DBHandler.md +16 -16
- package/docs/api/classes/DBModel.md +94 -93
- package/docs/api/classes/LimitExceededError.md +8 -8
- package/docs/api/classes/Middleware.md +35 -31
- package/docs/api/classes/SqlRaw.md +1 -1
- package/docs/api/classes/SqlRef.md +1 -1
- package/docs/api/classes/Values.md +1 -1
- package/docs/api/classes/WriteInReadOnlyContextError.md +5 -5
- package/docs/api/classes/WriteOutsideTransactionError.md +5 -5
- package/docs/api/functions/belongsTo.md +1 -1
- package/docs/api/functions/closeAllPools.md +2 -2
- package/docs/api/functions/condsToRecord.md +1 -1
- package/docs/api/functions/createMiddleware.md +4 -4
- package/docs/api/functions/createPostgresDriver.md +2 -2
- package/docs/api/functions/createSqliteDriver.md +1 -1
- package/docs/api/functions/dbCast.md +1 -1
- package/docs/api/functions/dbCastIn.md +1 -1
- package/docs/api/functions/dbDynamic.md +1 -1
- package/docs/api/functions/dbFalse.md +1 -1
- package/docs/api/functions/dbImmediate.md +1 -1
- package/docs/api/functions/dbIn.md +1 -1
- package/docs/api/functions/dbNotNull.md +1 -1
- package/docs/api/functions/dbNow.md +1 -1
- package/docs/api/functions/dbNull.md +1 -1
- package/docs/api/functions/dbRaw.md +1 -1
- package/docs/api/functions/dbTrue.md +1 -1
- package/docs/api/functions/dbUuid.md +1 -1
- package/docs/api/functions/dbUuidIn.md +1 -1
- package/docs/api/functions/formatLocalDate.md +1 -1
- package/docs/api/functions/formatUTCDate.md +1 -1
- package/docs/api/functions/getDBConfig.md +2 -2
- package/docs/api/functions/getDBHandler.md +2 -2
- package/docs/api/functions/getTransactionConnection.md +2 -2
- package/docs/api/functions/getTransactionContext.md +2 -2
- package/docs/api/functions/hasMany.md +1 -1
- package/docs/api/functions/hasOne.md +1 -1
- package/docs/api/functions/initDBHandler.md +2 -2
- package/docs/api/functions/isAnySqlFragment.md +1 -1
- package/docs/api/functions/isConnectionError.md +1 -1
- package/docs/api/functions/isSqlCondition.md +1 -1
- package/docs/api/functions/isSqlFragment.md +1 -1
- package/docs/api/functions/isSqlRaw.md +1 -1
- package/docs/api/functions/isSqlRef.md +1 -1
- package/docs/api/functions/isSqlTypedFragment.md +1 -1
- package/docs/api/functions/model.md +1 -1
- package/docs/api/functions/parentRef.md +1 -1
- package/docs/api/functions/sql.md +1 -1
- package/docs/api/globals.md +5 -5
- package/docs/api/interfaces/Column.md +1 -1
- package/docs/api/interfaces/ColumnDecorator.md +1 -1
- package/docs/api/interfaces/ColumnOptions.md +1 -1
- package/docs/api/interfaces/CreatedMiddlewareClass.md +7 -7
- package/docs/api/interfaces/DBConfig.md +29 -14
- package/docs/api/interfaces/DBConfigOptions.md +8 -8
- package/docs/api/interfaces/DeleteOptions.md +4 -4
- package/docs/api/interfaces/InsertOptions.md +8 -8
- package/docs/api/interfaces/LimitConfig.md +4 -4
- package/docs/api/interfaces/MiddlewareConfig.md +15 -15
- package/docs/api/interfaces/ModelClassDecorator.md +1 -1
- package/docs/api/interfaces/ModelOptions.md +1 -1
- package/docs/api/interfaces/PkeyResult.md +1 -1
- package/docs/api/interfaces/RelationDecorator.md +1 -1
- package/docs/api/interfaces/SelectOptions.md +17 -17
- package/docs/api/interfaces/SqlCondition.md +1 -1
- package/docs/api/interfaces/SqlFragment.md +1 -1
- package/docs/api/interfaces/SqlTypedFragment.md +1 -1
- package/docs/api/interfaces/TransactionOptions.md +7 -7
- package/docs/api/interfaces/UpdateManyOptions.md +4 -4
- package/docs/api/interfaces/UpdateOptions.md +4 -4
- package/package.json +2 -2
package/dist/scp/index.cjs
CHANGED
|
@@ -3644,11 +3644,13 @@ function compareCore(op, a, b) {
|
|
|
3644
3644
|
if (typeof a === "bigint" && typeof b === "bigint")
|
|
3645
3645
|
c = a < b ? -1 : a > b ? 1 : 0;
|
|
3646
3646
|
else if (typeof a === "number" && typeof b === "number")
|
|
3647
|
-
c = a < b ? -1 : a > b ? 1 : 0;
|
|
3647
|
+
c = a < b ? -1 : a > b ? 1 : a === b ? 0 : null;
|
|
3648
3648
|
else if (typeof a === "string" && typeof b === "string")
|
|
3649
3649
|
c = cmpCodePoints(a, b);
|
|
3650
3650
|
else
|
|
3651
3651
|
fail("TYPE_MISMATCH", `${op}: \u540C\u4E00\u578B\u306E int/float/string \u306E\u307F\uFF08got ${typeName(a)}\xD7${typeName(b)}\uFF09`);
|
|
3652
|
+
if (c === null)
|
|
3653
|
+
return false;
|
|
3652
3654
|
switch (op) {
|
|
3653
3655
|
case "lt":
|
|
3654
3656
|
return c < 0;
|
|
@@ -4469,6 +4471,8 @@ function resolveConnectionConfig(config = {}) {
|
|
|
4469
4471
|
keepAliveInitialDelayMillis: config.keepAliveInitialDelayMillis ?? 1e4,
|
|
4470
4472
|
minPool: config.minPool ?? 0,
|
|
4471
4473
|
maxPool: config.maxPool ?? 10,
|
|
4474
|
+
connectTimeoutMillis: config.connectTimeoutMillis ?? 3e4,
|
|
4475
|
+
idleTimeoutMillis: config.idleTimeoutMillis ?? 1e4,
|
|
4472
4476
|
...config.searchPath !== void 0 ? { searchPath: config.searchPath } : {},
|
|
4473
4477
|
...config.charset !== void 0 ? { charset: config.charset } : {}
|
|
4474
4478
|
};
|
|
@@ -4582,14 +4586,15 @@ function withWriter(fn) {
|
|
|
4582
4586
|
if (inWriterScope()) return fn();
|
|
4583
4587
|
return writerScopeStore.run(true, () => withReadOnlyAsync(fn));
|
|
4584
4588
|
}
|
|
4589
|
+
function latestStamp(cell) {
|
|
4590
|
+
let latest = null;
|
|
4591
|
+
for (let c = cell; c; c = c.prev) {
|
|
4592
|
+
if (c.at !== null && (latest === null || c.at > latest)) latest = c.at;
|
|
4593
|
+
}
|
|
4594
|
+
return latest;
|
|
4595
|
+
}
|
|
4585
4596
|
var WriterStickyClock = class {
|
|
4586
|
-
|
|
4587
|
-
* `null` until the first `mark()` — absence, NOT a value sentinel. The injectable clocks legitimately
|
|
4588
|
-
* return 0 (a monotonic clock right after process start; rust's `SystemClock` does), so encoding
|
|
4589
|
-
* "never marked" as the value 0 would mis-classify a `mark()` at clock t=0 as unmarked and leak the
|
|
4590
|
-
* read-your-writes read to the reader replica. Absence must be distinct from the value 0.
|
|
4591
|
-
*/
|
|
4592
|
-
lastWriteAt = null;
|
|
4597
|
+
chain = new import_node_async_hooks2.AsyncLocalStorage();
|
|
4593
4598
|
enabled;
|
|
4594
4599
|
stickyDurationMs;
|
|
4595
4600
|
/** Injectable clock (tests advance it); defaults to `Date.now`. */
|
|
@@ -4599,18 +4604,37 @@ var WriterStickyClock = class {
|
|
|
4599
4604
|
this.stickyDurationMs = opts.writerStickyDuration ?? 5e3;
|
|
4600
4605
|
this.now = opts.now ?? Date.now;
|
|
4601
4606
|
}
|
|
4602
|
-
/**
|
|
4607
|
+
/**
|
|
4608
|
+
* Start tracking a transaction in the current chain: enters a fresh cell that carries the chain's
|
|
4609
|
+
* latest stamp. Must run synchronously at the start of the transaction, before its first `await`.
|
|
4610
|
+
*/
|
|
4611
|
+
begin() {
|
|
4612
|
+
const current = this.chain.getStore();
|
|
4613
|
+
let open = current ?? null;
|
|
4614
|
+
while (open !== null && !open.open) open = open.prev;
|
|
4615
|
+
const cell = { at: latestStamp(current), open: true, prev: open };
|
|
4616
|
+
this.chain.enterWith(cell);
|
|
4617
|
+
return cell;
|
|
4618
|
+
}
|
|
4619
|
+
/** The transaction that began `cell` is over (committed or not). */
|
|
4620
|
+
end(cell) {
|
|
4621
|
+
cell.open = false;
|
|
4622
|
+
}
|
|
4623
|
+
/** Record that the current chain just committed. */
|
|
4603
4624
|
mark() {
|
|
4604
|
-
if (this.enabled)
|
|
4625
|
+
if (!this.enabled) return;
|
|
4626
|
+
let cell = this.chain.getStore();
|
|
4627
|
+
if (cell === void 0) {
|
|
4628
|
+
cell = { at: null, open: false, prev: null };
|
|
4629
|
+
this.chain.enterWith(cell);
|
|
4630
|
+
}
|
|
4631
|
+
cell.at = this.now();
|
|
4605
4632
|
}
|
|
4606
|
-
/** Is a read
|
|
4633
|
+
/** Is a read in the current chain sticky-to-writer (within `writerStickyDuration` of its last commit)? */
|
|
4607
4634
|
isSticky() {
|
|
4608
|
-
if (!this.enabled
|
|
4609
|
-
|
|
4610
|
-
|
|
4611
|
-
/** Reset the clock (e.g. between tests / on `closeAllPools`). */
|
|
4612
|
-
reset() {
|
|
4613
|
-
this.lastWriteAt = null;
|
|
4635
|
+
if (!this.enabled) return false;
|
|
4636
|
+
const at = latestStamp(this.chain.getStore());
|
|
4637
|
+
return at !== null && this.now() - at < this.stickyDurationMs;
|
|
4614
4638
|
}
|
|
4615
4639
|
};
|
|
4616
4640
|
function resolvePool(intent, routing) {
|
|
@@ -5076,38 +5100,43 @@ async function withTransactionAsync(ctx, fn, opts = {}, dialect = "postgres", is
|
|
|
5076
5100
|
const resolved = resolveTxOptions(opts);
|
|
5077
5101
|
const begins = beginStatements(dialect, resolved.isolation);
|
|
5078
5102
|
const pool = ctx.connectionPoolFor({ write: true, ...connection !== void 0 ? { db: connection } : {} });
|
|
5079
|
-
|
|
5080
|
-
|
|
5081
|
-
attempt
|
|
5082
|
-
|
|
5083
|
-
|
|
5084
|
-
|
|
5085
|
-
|
|
5086
|
-
|
|
5087
|
-
|
|
5088
|
-
const
|
|
5089
|
-
await runAsync(txCtx, resolved.rollbackOnly ? "ROLLBACK" : "COMMIT", []);
|
|
5090
|
-
return { ok: true, value: r };
|
|
5091
|
-
} catch (error2) {
|
|
5103
|
+
const stickyCell = ctx.stickyClock.begin();
|
|
5104
|
+
try {
|
|
5105
|
+
let attempt = 0;
|
|
5106
|
+
for (; ; ) {
|
|
5107
|
+
attempt++;
|
|
5108
|
+
const conn = await pool.acquire();
|
|
5109
|
+
const txCtx = ctx.withConnection(conn, true);
|
|
5110
|
+
let poisoned = false;
|
|
5111
|
+
const attemptResult = await runWithPinnedAsyncConnection(conn, connection ?? null, async () => {
|
|
5112
|
+
for (const begin of begins) await runAsync(txCtx, begin, []);
|
|
5092
5113
|
try {
|
|
5093
|
-
await
|
|
5094
|
-
|
|
5095
|
-
|
|
5114
|
+
const r = await runInTransactionScope(() => fn(txCtx));
|
|
5115
|
+
await runAsync(txCtx, resolved.rollbackOnly ? "ROLLBACK" : "COMMIT", []);
|
|
5116
|
+
return { ok: true, value: r };
|
|
5117
|
+
} catch (error2) {
|
|
5118
|
+
try {
|
|
5119
|
+
await runAsync(txCtx, "ROLLBACK", []);
|
|
5120
|
+
} catch {
|
|
5121
|
+
poisoned = true;
|
|
5122
|
+
}
|
|
5123
|
+
return { ok: false, error: error2 };
|
|
5096
5124
|
}
|
|
5097
|
-
|
|
5125
|
+
});
|
|
5126
|
+
await pool.release(conn, poisoned || !attemptResult.ok);
|
|
5127
|
+
if (attemptResult.ok) {
|
|
5128
|
+
if (!resolved.rollbackOnly && resolved.useWriterAfterTransaction) ctx.stickyClock.mark();
|
|
5129
|
+
return attemptResult.value;
|
|
5098
5130
|
}
|
|
5099
|
-
|
|
5100
|
-
|
|
5101
|
-
|
|
5102
|
-
|
|
5103
|
-
|
|
5104
|
-
|
|
5105
|
-
const { error } = attemptResult;
|
|
5106
|
-
if (resolved.retryOnError && attempt < resolved.retryLimit && isRetryableTxError(error, isConnectionError2)) {
|
|
5107
|
-
await sleep(resolved.retryDuration * Math.pow(2, attempt - 1));
|
|
5108
|
-
continue;
|
|
5131
|
+
const { error } = attemptResult;
|
|
5132
|
+
if (resolved.retryOnError && attempt < resolved.retryLimit && isRetryableTxError(error, isConnectionError2)) {
|
|
5133
|
+
await sleep(resolved.retryDuration * Math.pow(2, attempt - 1));
|
|
5134
|
+
continue;
|
|
5135
|
+
}
|
|
5136
|
+
throw error;
|
|
5109
5137
|
}
|
|
5110
|
-
|
|
5138
|
+
} finally {
|
|
5139
|
+
ctx.stickyClock.end(stickyCell);
|
|
5111
5140
|
}
|
|
5112
5141
|
}
|
|
5113
5142
|
function transaction(ctx, fn, options = {}, dialect = "postgres", isConnectionError2 = defaultIsConnectionError, connection) {
|
|
@@ -5813,11 +5842,27 @@ function mysqlConnection(conn) {
|
|
|
5813
5842
|
}
|
|
5814
5843
|
};
|
|
5815
5844
|
}
|
|
5816
|
-
function mysqlConnectionPool(pool) {
|
|
5845
|
+
function mysqlConnectionPool(pool, acquireTimeoutMillis) {
|
|
5817
5846
|
const handles = /* @__PURE__ */ new WeakMap();
|
|
5818
5847
|
return {
|
|
5819
5848
|
async acquire() {
|
|
5820
|
-
const
|
|
5849
|
+
const pending = pool.getConnection();
|
|
5850
|
+
const raw = acquireTimeoutMillis === void 0 ? await pending : await new Promise((resolve, reject) => {
|
|
5851
|
+
const timer = setTimeout(() => {
|
|
5852
|
+
pending.then((late) => late.release(), () => void 0);
|
|
5853
|
+
reject(new Error(`timeout exceeded when trying to get a connection (${acquireTimeoutMillis} ms)`));
|
|
5854
|
+
}, acquireTimeoutMillis);
|
|
5855
|
+
pending.then(
|
|
5856
|
+
(c) => {
|
|
5857
|
+
clearTimeout(timer);
|
|
5858
|
+
resolve(c);
|
|
5859
|
+
},
|
|
5860
|
+
(e) => {
|
|
5861
|
+
clearTimeout(timer);
|
|
5862
|
+
reject(e);
|
|
5863
|
+
}
|
|
5864
|
+
);
|
|
5865
|
+
});
|
|
5821
5866
|
const conn = mysqlConnection(raw);
|
|
5822
5867
|
handles.set(conn, raw);
|
|
5823
5868
|
return conn;
|
|
@@ -5842,6 +5887,9 @@ function pgPoolFactory(pg) {
|
|
|
5842
5887
|
// SIZING (construction knob): the config is the sole source of the cap.
|
|
5843
5888
|
max: config.maxPool,
|
|
5844
5889
|
min: config.minPool,
|
|
5890
|
+
// pg-pool bounds BOTH a new connection and the wait for a free one with this one limit.
|
|
5891
|
+
connectionTimeoutMillis: config.connectTimeoutMillis,
|
|
5892
|
+
idleTimeoutMillis: config.idleTimeoutMillis,
|
|
5845
5893
|
// keepAlive (construction knob): TCP keepalive for serverless/long-idle connections.
|
|
5846
5894
|
keepAlive: config.keepAlive,
|
|
5847
5895
|
...config.keepAlive ? { keepAliveInitialDelayMillis: config.keepAliveInitialDelayMillis } : {}
|
|
@@ -5859,12 +5907,15 @@ function mysqlPoolFactory(mysql2) {
|
|
|
5859
5907
|
...config.password !== void 0 ? { password: config.password } : {},
|
|
5860
5908
|
// SIZING (construction knob): connectionLimit = maxPool (the sole source of the cap).
|
|
5861
5909
|
connectionLimit: config.maxPool,
|
|
5910
|
+
connectTimeout: config.connectTimeoutMillis,
|
|
5911
|
+
idleTimeout: config.idleTimeoutMillis,
|
|
5862
5912
|
// keepAlive (construction knob).
|
|
5863
5913
|
enableKeepAlive: config.keepAlive,
|
|
5864
5914
|
...config.keepAlive ? { keepAliveInitialDelay: config.keepAliveInitialDelayMillis } : {},
|
|
5865
5915
|
...mysqlDeboxPoolOptions
|
|
5866
5916
|
});
|
|
5867
|
-
|
|
5917
|
+
const acquireTimeout = config.connectTimeoutMillis > 0 ? config.connectTimeoutMillis : void 0;
|
|
5918
|
+
return { pool: mysqlConnectionPool(pool, acquireTimeout), close: () => pool.end() };
|
|
5868
5919
|
};
|
|
5869
5920
|
}
|
|
5870
5921
|
|
package/dist/scp/index.mjs
CHANGED
|
@@ -3954,6 +3954,8 @@ function resolveConnectionConfig(config = {}) {
|
|
|
3954
3954
|
keepAliveInitialDelayMillis: config.keepAliveInitialDelayMillis ?? 1e4,
|
|
3955
3955
|
minPool: config.minPool ?? 0,
|
|
3956
3956
|
maxPool: config.maxPool ?? 10,
|
|
3957
|
+
connectTimeoutMillis: config.connectTimeoutMillis ?? 3e4,
|
|
3958
|
+
idleTimeoutMillis: config.idleTimeoutMillis ?? 1e4,
|
|
3957
3959
|
...config.searchPath !== void 0 ? { searchPath: config.searchPath } : {},
|
|
3958
3960
|
...config.charset !== void 0 ? { charset: config.charset } : {}
|
|
3959
3961
|
};
|
|
@@ -4067,14 +4069,15 @@ function withWriter(fn) {
|
|
|
4067
4069
|
if (inWriterScope()) return fn();
|
|
4068
4070
|
return writerScopeStore.run(true, () => withReadOnlyAsync(fn));
|
|
4069
4071
|
}
|
|
4072
|
+
function latestStamp(cell) {
|
|
4073
|
+
let latest = null;
|
|
4074
|
+
for (let c = cell; c; c = c.prev) {
|
|
4075
|
+
if (c.at !== null && (latest === null || c.at > latest)) latest = c.at;
|
|
4076
|
+
}
|
|
4077
|
+
return latest;
|
|
4078
|
+
}
|
|
4070
4079
|
var WriterStickyClock = class {
|
|
4071
|
-
|
|
4072
|
-
* `null` until the first `mark()` — absence, NOT a value sentinel. The injectable clocks legitimately
|
|
4073
|
-
* return 0 (a monotonic clock right after process start; rust's `SystemClock` does), so encoding
|
|
4074
|
-
* "never marked" as the value 0 would mis-classify a `mark()` at clock t=0 as unmarked and leak the
|
|
4075
|
-
* read-your-writes read to the reader replica. Absence must be distinct from the value 0.
|
|
4076
|
-
*/
|
|
4077
|
-
lastWriteAt = null;
|
|
4080
|
+
chain = new AsyncLocalStorage2();
|
|
4078
4081
|
enabled;
|
|
4079
4082
|
stickyDurationMs;
|
|
4080
4083
|
/** Injectable clock (tests advance it); defaults to `Date.now`. */
|
|
@@ -4084,18 +4087,37 @@ var WriterStickyClock = class {
|
|
|
4084
4087
|
this.stickyDurationMs = opts.writerStickyDuration ?? 5e3;
|
|
4085
4088
|
this.now = opts.now ?? Date.now;
|
|
4086
4089
|
}
|
|
4087
|
-
/**
|
|
4090
|
+
/**
|
|
4091
|
+
* Start tracking a transaction in the current chain: enters a fresh cell that carries the chain's
|
|
4092
|
+
* latest stamp. Must run synchronously at the start of the transaction, before its first `await`.
|
|
4093
|
+
*/
|
|
4094
|
+
begin() {
|
|
4095
|
+
const current = this.chain.getStore();
|
|
4096
|
+
let open = current ?? null;
|
|
4097
|
+
while (open !== null && !open.open) open = open.prev;
|
|
4098
|
+
const cell = { at: latestStamp(current), open: true, prev: open };
|
|
4099
|
+
this.chain.enterWith(cell);
|
|
4100
|
+
return cell;
|
|
4101
|
+
}
|
|
4102
|
+
/** The transaction that began `cell` is over (committed or not). */
|
|
4103
|
+
end(cell) {
|
|
4104
|
+
cell.open = false;
|
|
4105
|
+
}
|
|
4106
|
+
/** Record that the current chain just committed. */
|
|
4088
4107
|
mark() {
|
|
4089
|
-
if (this.enabled)
|
|
4108
|
+
if (!this.enabled) return;
|
|
4109
|
+
let cell = this.chain.getStore();
|
|
4110
|
+
if (cell === void 0) {
|
|
4111
|
+
cell = { at: null, open: false, prev: null };
|
|
4112
|
+
this.chain.enterWith(cell);
|
|
4113
|
+
}
|
|
4114
|
+
cell.at = this.now();
|
|
4090
4115
|
}
|
|
4091
|
-
/** Is a read
|
|
4116
|
+
/** Is a read in the current chain sticky-to-writer (within `writerStickyDuration` of its last commit)? */
|
|
4092
4117
|
isSticky() {
|
|
4093
|
-
if (!this.enabled
|
|
4094
|
-
|
|
4095
|
-
|
|
4096
|
-
/** Reset the clock (e.g. between tests / on `closeAllPools`). */
|
|
4097
|
-
reset() {
|
|
4098
|
-
this.lastWriteAt = null;
|
|
4118
|
+
if (!this.enabled) return false;
|
|
4119
|
+
const at = latestStamp(this.chain.getStore());
|
|
4120
|
+
return at !== null && this.now() - at < this.stickyDurationMs;
|
|
4099
4121
|
}
|
|
4100
4122
|
};
|
|
4101
4123
|
function resolvePool(intent, routing) {
|
|
@@ -4561,38 +4583,43 @@ async function withTransactionAsync(ctx, fn, opts = {}, dialect = "postgres", is
|
|
|
4561
4583
|
const resolved = resolveTxOptions(opts);
|
|
4562
4584
|
const begins = beginStatements(dialect, resolved.isolation);
|
|
4563
4585
|
const pool = ctx.connectionPoolFor({ write: true, ...connection !== void 0 ? { db: connection } : {} });
|
|
4564
|
-
|
|
4565
|
-
|
|
4566
|
-
attempt
|
|
4567
|
-
|
|
4568
|
-
|
|
4569
|
-
|
|
4570
|
-
|
|
4571
|
-
|
|
4572
|
-
|
|
4573
|
-
const
|
|
4574
|
-
await runAsync(txCtx, resolved.rollbackOnly ? "ROLLBACK" : "COMMIT", []);
|
|
4575
|
-
return { ok: true, value: r };
|
|
4576
|
-
} catch (error2) {
|
|
4586
|
+
const stickyCell = ctx.stickyClock.begin();
|
|
4587
|
+
try {
|
|
4588
|
+
let attempt = 0;
|
|
4589
|
+
for (; ; ) {
|
|
4590
|
+
attempt++;
|
|
4591
|
+
const conn = await pool.acquire();
|
|
4592
|
+
const txCtx = ctx.withConnection(conn, true);
|
|
4593
|
+
let poisoned = false;
|
|
4594
|
+
const attemptResult = await runWithPinnedAsyncConnection(conn, connection ?? null, async () => {
|
|
4595
|
+
for (const begin of begins) await runAsync(txCtx, begin, []);
|
|
4577
4596
|
try {
|
|
4578
|
-
await
|
|
4579
|
-
|
|
4580
|
-
|
|
4597
|
+
const r = await runInTransactionScope(() => fn(txCtx));
|
|
4598
|
+
await runAsync(txCtx, resolved.rollbackOnly ? "ROLLBACK" : "COMMIT", []);
|
|
4599
|
+
return { ok: true, value: r };
|
|
4600
|
+
} catch (error2) {
|
|
4601
|
+
try {
|
|
4602
|
+
await runAsync(txCtx, "ROLLBACK", []);
|
|
4603
|
+
} catch {
|
|
4604
|
+
poisoned = true;
|
|
4605
|
+
}
|
|
4606
|
+
return { ok: false, error: error2 };
|
|
4581
4607
|
}
|
|
4582
|
-
|
|
4608
|
+
});
|
|
4609
|
+
await pool.release(conn, poisoned || !attemptResult.ok);
|
|
4610
|
+
if (attemptResult.ok) {
|
|
4611
|
+
if (!resolved.rollbackOnly && resolved.useWriterAfterTransaction) ctx.stickyClock.mark();
|
|
4612
|
+
return attemptResult.value;
|
|
4583
4613
|
}
|
|
4584
|
-
|
|
4585
|
-
|
|
4586
|
-
|
|
4587
|
-
|
|
4588
|
-
|
|
4589
|
-
|
|
4590
|
-
const { error } = attemptResult;
|
|
4591
|
-
if (resolved.retryOnError && attempt < resolved.retryLimit && isRetryableTxError(error, isConnectionError2)) {
|
|
4592
|
-
await sleep(resolved.retryDuration * Math.pow(2, attempt - 1));
|
|
4593
|
-
continue;
|
|
4614
|
+
const { error } = attemptResult;
|
|
4615
|
+
if (resolved.retryOnError && attempt < resolved.retryLimit && isRetryableTxError(error, isConnectionError2)) {
|
|
4616
|
+
await sleep(resolved.retryDuration * Math.pow(2, attempt - 1));
|
|
4617
|
+
continue;
|
|
4618
|
+
}
|
|
4619
|
+
throw error;
|
|
4594
4620
|
}
|
|
4595
|
-
|
|
4621
|
+
} finally {
|
|
4622
|
+
ctx.stickyClock.end(stickyCell);
|
|
4596
4623
|
}
|
|
4597
4624
|
}
|
|
4598
4625
|
function transaction(ctx, fn, options = {}, dialect = "postgres", isConnectionError2 = defaultIsConnectionError, connection) {
|
|
@@ -5298,11 +5325,27 @@ function mysqlConnection(conn) {
|
|
|
5298
5325
|
}
|
|
5299
5326
|
};
|
|
5300
5327
|
}
|
|
5301
|
-
function mysqlConnectionPool(pool) {
|
|
5328
|
+
function mysqlConnectionPool(pool, acquireTimeoutMillis) {
|
|
5302
5329
|
const handles = /* @__PURE__ */ new WeakMap();
|
|
5303
5330
|
return {
|
|
5304
5331
|
async acquire() {
|
|
5305
|
-
const
|
|
5332
|
+
const pending = pool.getConnection();
|
|
5333
|
+
const raw = acquireTimeoutMillis === void 0 ? await pending : await new Promise((resolve, reject) => {
|
|
5334
|
+
const timer = setTimeout(() => {
|
|
5335
|
+
pending.then((late) => late.release(), () => void 0);
|
|
5336
|
+
reject(new Error(`timeout exceeded when trying to get a connection (${acquireTimeoutMillis} ms)`));
|
|
5337
|
+
}, acquireTimeoutMillis);
|
|
5338
|
+
pending.then(
|
|
5339
|
+
(c) => {
|
|
5340
|
+
clearTimeout(timer);
|
|
5341
|
+
resolve(c);
|
|
5342
|
+
},
|
|
5343
|
+
(e) => {
|
|
5344
|
+
clearTimeout(timer);
|
|
5345
|
+
reject(e);
|
|
5346
|
+
}
|
|
5347
|
+
);
|
|
5348
|
+
});
|
|
5306
5349
|
const conn = mysqlConnection(raw);
|
|
5307
5350
|
handles.set(conn, raw);
|
|
5308
5351
|
return conn;
|
|
@@ -5327,6 +5370,9 @@ function pgPoolFactory(pg) {
|
|
|
5327
5370
|
// SIZING (construction knob): the config is the sole source of the cap.
|
|
5328
5371
|
max: config.maxPool,
|
|
5329
5372
|
min: config.minPool,
|
|
5373
|
+
// pg-pool bounds BOTH a new connection and the wait for a free one with this one limit.
|
|
5374
|
+
connectionTimeoutMillis: config.connectTimeoutMillis,
|
|
5375
|
+
idleTimeoutMillis: config.idleTimeoutMillis,
|
|
5330
5376
|
// keepAlive (construction knob): TCP keepalive for serverless/long-idle connections.
|
|
5331
5377
|
keepAlive: config.keepAlive,
|
|
5332
5378
|
...config.keepAlive ? { keepAliveInitialDelayMillis: config.keepAliveInitialDelayMillis } : {}
|
|
@@ -5344,12 +5390,15 @@ function mysqlPoolFactory(mysql2) {
|
|
|
5344
5390
|
...config.password !== void 0 ? { password: config.password } : {},
|
|
5345
5391
|
// SIZING (construction knob): connectionLimit = maxPool (the sole source of the cap).
|
|
5346
5392
|
connectionLimit: config.maxPool,
|
|
5393
|
+
connectTimeout: config.connectTimeoutMillis,
|
|
5394
|
+
idleTimeout: config.idleTimeoutMillis,
|
|
5347
5395
|
// keepAlive (construction knob).
|
|
5348
5396
|
enableKeepAlive: config.keepAlive,
|
|
5349
5397
|
...config.keepAlive ? { keepAliveInitialDelay: config.keepAliveInitialDelayMillis } : {},
|
|
5350
5398
|
...mysqlDeboxPoolOptions
|
|
5351
5399
|
});
|
|
5352
|
-
|
|
5400
|
+
const acquireTimeout = config.connectTimeoutMillis > 0 ? config.connectTimeoutMillis : void 0;
|
|
5401
|
+
return { pool: mysqlConnectionPool(pool, acquireTimeout), close: () => pool.end() };
|
|
5353
5402
|
};
|
|
5354
5403
|
}
|
|
5355
5404
|
|
|
@@ -126,8 +126,11 @@ export interface MysqlPoolConnLike {
|
|
|
126
126
|
* Adapt a mysql2/promise `Pool` to the {@link AsyncConnectionPool} contract — `acquire` checks out
|
|
127
127
|
* an owned connection, `release` returns it (or `destroy`s a poisoned one). Feed this to
|
|
128
128
|
* `withTransactionAsync` for per-execution connection ownership.
|
|
129
|
+
*
|
|
130
|
+
* mysql2 waits for a free connection without limit; `acquireTimeoutMillis` (the C3
|
|
131
|
+
* `connectTimeoutMillis`) bounds that wait, and a connection that arrives after it is released.
|
|
129
132
|
*/
|
|
130
|
-
export declare function mysqlConnectionPool(pool: MysqlOwnedPoolLike): AsyncConnectionPool;
|
|
133
|
+
export declare function mysqlConnectionPool(pool: MysqlOwnedPoolLike, acquireTimeoutMillis?: number): AsyncConnectionPool;
|
|
131
134
|
/** A pg `Pool` the factory constructs: owned-connection surface + `end()` (the closer). */
|
|
132
135
|
export type PgOwnedPoolWithEnd = PgOwnedPoolLike & {
|
|
133
136
|
end(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool-executor.d.ts","sourceRoot":"","sources":["../../../src/scp/makesql/pool-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAmB,mBAAmB,EAAiB,MAAM,iBAAiB,CAAC;AAC3F,OAAO,KAAK,EAA4B,WAAW,EAAc,MAAM,uBAAuB,CAAC;AAoB/F,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;CACtE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAiBpE;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;IAIhC;;;;;;;OAOG;+BACa,cAAc,QAAQ,MAAM,OAAO,KAAG,OAAO;CAOrD,CAAC;AAEX,gGAAgG;AAChG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC;CACzB;AAQD,yFAAyF;AACzF,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAAE,CAAC,CAAC;CACvF;AAED,kGAAkG;AAClG,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CACvF;AAGD;;;;;;GAMG;AAQH,qFAAqF;AACrF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,UAAU,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IAC1F,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;CAC5F;AAcD,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACtC;AACD,4FAA4F;AAC5F,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAChH,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAClC;AAgBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,mBAAmB,CAa3E;AAED,oGAAoG;AACpG,MAAM,WAAW,kBAAkB;IACjC,aAAa,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC7C;AACD,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACpE,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;CACjB;AAwCD
|
|
1
|
+
{"version":3,"file":"pool-executor.d.ts","sourceRoot":"","sources":["../../../src/scp/makesql/pool-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -176,12 +176,24 @@ function mysqlConnection(conn) {
|
|
|
176
176
|
* Adapt a mysql2/promise `Pool` to the {@link AsyncConnectionPool} contract — `acquire` checks out
|
|
177
177
|
* an owned connection, `release` returns it (or `destroy`s a poisoned one). Feed this to
|
|
178
178
|
* `withTransactionAsync` for per-execution connection ownership.
|
|
179
|
+
*
|
|
180
|
+
* mysql2 waits for a free connection without limit; `acquireTimeoutMillis` (the C3
|
|
181
|
+
* `connectTimeoutMillis`) bounds that wait, and a connection that arrives after it is released.
|
|
179
182
|
*/
|
|
180
|
-
function mysqlConnectionPool(pool) {
|
|
183
|
+
function mysqlConnectionPool(pool, acquireTimeoutMillis) {
|
|
181
184
|
const handles = new WeakMap();
|
|
182
185
|
return {
|
|
183
186
|
async acquire() {
|
|
184
|
-
const
|
|
187
|
+
const pending = pool.getConnection();
|
|
188
|
+
const raw = acquireTimeoutMillis === undefined
|
|
189
|
+
? await pending
|
|
190
|
+
: await new Promise((resolve, reject) => {
|
|
191
|
+
const timer = setTimeout(() => {
|
|
192
|
+
pending.then((late) => late.release(), () => undefined);
|
|
193
|
+
reject(new Error(`timeout exceeded when trying to get a connection (${acquireTimeoutMillis} ms)`));
|
|
194
|
+
}, acquireTimeoutMillis);
|
|
195
|
+
pending.then((c) => { clearTimeout(timer); resolve(c); }, (e) => { clearTimeout(timer); reject(e); });
|
|
196
|
+
});
|
|
185
197
|
const conn = mysqlConnection(raw);
|
|
186
198
|
handles.set(conn, raw);
|
|
187
199
|
return conn;
|
|
@@ -219,6 +231,9 @@ function pgPoolFactory(pg) {
|
|
|
219
231
|
// SIZING (construction knob): the config is the sole source of the cap.
|
|
220
232
|
max: config.maxPool,
|
|
221
233
|
min: config.minPool,
|
|
234
|
+
// pg-pool bounds BOTH a new connection and the wait for a free one with this one limit.
|
|
235
|
+
connectionTimeoutMillis: config.connectTimeoutMillis,
|
|
236
|
+
idleTimeoutMillis: config.idleTimeoutMillis,
|
|
222
237
|
// keepAlive (construction knob): TCP keepalive for serverless/long-idle connections.
|
|
223
238
|
keepAlive: config.keepAlive,
|
|
224
239
|
...(config.keepAlive ? { keepAliveInitialDelayMillis: config.keepAliveInitialDelayMillis } : {}),
|
|
@@ -247,12 +262,15 @@ function mysqlPoolFactory(mysql2) {
|
|
|
247
262
|
...(config.password !== undefined ? { password: config.password } : {}),
|
|
248
263
|
// SIZING (construction knob): connectionLimit = maxPool (the sole source of the cap).
|
|
249
264
|
connectionLimit: config.maxPool,
|
|
265
|
+
connectTimeout: config.connectTimeoutMillis,
|
|
266
|
+
idleTimeout: config.idleTimeoutMillis,
|
|
250
267
|
// keepAlive (construction knob).
|
|
251
268
|
enableKeepAlive: config.keepAlive,
|
|
252
269
|
...(config.keepAlive ? { keepAliveInitialDelay: config.keepAliveInitialDelayMillis } : {}),
|
|
253
270
|
...exports.mysqlDeboxPoolOptions,
|
|
254
271
|
});
|
|
255
|
-
|
|
272
|
+
const acquireTimeout = config.connectTimeoutMillis > 0 ? config.connectTimeoutMillis : undefined; // 0 ⇒ no limit
|
|
273
|
+
return { pool: mysqlConnectionPool(pool, acquireTimeout), close: () => pool.end() };
|
|
256
274
|
};
|
|
257
275
|
}
|
|
258
276
|
//# sourceMappingURL=pool-executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool-executor.js","sourceRoot":"","sources":["../../../src/scp/makesql/pool-executor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AA4CH,kEAiBC;AAsHD,4CAaC;
|
|
1
|
+
{"version":3,"file":"pool-executor.js","sourceRoot":"","sources":["../../../src/scp/makesql/pool-executor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AA4CH,kEAiBC;AAsHD,4CAaC;AA2DD,kDA4BC;AA+BD,sCAqBC;AAgBD,4CAoBC;AA3WD,uGAAuG;AACvG,uDAAqE;AAErE,iFAAiF;AACjF,iGAAiG;AACjG,gGAAgG;AAChG,2CAA2C;AAC3C,+FAA+F;AAC/F,iGAAiG;AACjG,6FAA6F;AAC7F,iGAAiG;AACjG,8EAA8E;AAC9E,mGAAmG;AACnG,4FAA4F;AAC5F,0FAA0F;AAE1F,kEAAkE;AAClE,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAW,CAAC;AAOnI;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,2BAA2B,CAAC,KAAkB;IAC5D,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,kDAAkD;IAC7F,qGAAqG;IACrG,uGAAuG;IACvG,sGAAsG;IACtG,mGAAmG;IACnG,mGAAmG;IACnG,gGAAgG;IAChG,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClD,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChD,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAClD,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACU,QAAA,qBAAqB,GAAG;IACnC,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;IACtB,WAAW,EAAE,IAAI;IACjB;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAqB,EAAE,IAAmB;QACjD,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;CACO,CAAC;AAQX;;;GAGG;AACH,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AA4DrG,0FAA0F;AAC1F,SAAS,YAAY,CAAC,MAAwB;IAC5C,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM;YACvB,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAmB,CAAC,CAAC;YACvD,OAAO,CAAC,CAAC,IAAY,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM;YACnB,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAmB,CAAC,CAAC;YACvD,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE,eAAe,EAAE,CAAC,EAAa,CAAC;QACrE,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,IAAqB;IACpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAqC,CAAC;IACjE,OAAO;QACL,KAAK,CAAC,OAAO;YACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO;YACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAC/C,CAAC;KACF,CAAC;AACJ,CAAC;AAaD;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,IAAuB;IAC9C,MAAM,MAAM,GAAG,CAAC,GAAY,EAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAS,CAAC;IAC/E,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM;YACvB,MAAM,QAAQ,GAAG,IAAA,oCAAkB,EAAC,GAAG,CAAC,CAAC;YACzC,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,MAAM,KAAK,GAAG,MAAmB,CAAC;YAClC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,oFAAoF;gBACpF,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAA,8BAAY,EAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9F,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACzD,MAAM,CAAC,GAAG,GAAmD,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAC7B,QAAQ,CAAC,SAAS,EAClB,IAAA,8BAAY,EAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC,CAC5F,CAAC;YACF,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM;YACnB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAmB,CAAC,CAAC;YACzD,MAAM,CAAC,GAAG,GAAmD,CAAC;YAC9D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,IAAI,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,QAAQ,IAAI,CAAC,EAAa,CAAC;QACzF,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CAAC,IAAwB,EAAE,oBAA6B;IACzF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAsC,CAAC;IAClE,OAAO;QACL,KAAK,CAAC,OAAO;YACX,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,oBAAoB,KAAK,SAAS;gBAC5C,CAAC,CAAC,MAAM,OAAO;gBACf,CAAC,CAAC,MAAM,IAAI,OAAO,CAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACvD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;wBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;wBACxD,MAAM,CAAC,IAAI,KAAK,CAAC,qDAAqD,oBAAoB,MAAM,CAAC,CAAC,CAAC;oBACrG,CAAC,EAAE,oBAAoB,CAAC,CAAC;oBACzB,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3C,CAAC,CAAU,EAAE,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACpD,CAAC;gBACJ,CAAC,CAAC,CAAC;YACP,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO;YACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO;YAC9B,IAAI,OAAO,KAAK,IAAI;gBAAE,GAAG,CAAC,OAAO,EAAE,CAAC;;gBAC/B,GAAG,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AAqBD;;;;;;;;;GASG;AACH,SAAgB,aAAa,CAAC,EAAuB;IACnD,OAAO,CAAC,MAAgC,EAAE,KAA0B,EAAoD,EAAE;QACxH,2BAA2B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,wEAAwE;YACxE,GAAG,EAAE,MAAM,CAAC,OAAO;YACnB,GAAG,EAAE,MAAM,CAAC,OAAO;YACnB,wFAAwF;YACxF,uBAAuB,EAAE,MAAM,CAAC,oBAAoB;YACpD,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,qFAAqF;YACrF,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,MAAM,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjG,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACnE,CAAC,CAAC;AACJ,CAAC;AAKD;;;;;;;;;;GAUG;AACH,SAAgB,gBAAgB,CAAC,MAA8E;IAC7G,OAAO,CAAC,MAAgC,EAAE,KAA0B,EAAoD,EAAE;QACxH,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;YAC7B,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,sFAAsF;YACtF,eAAe,EAAE,MAAM,CAAC,OAAO;YAC/B,cAAc,EAAE,MAAM,CAAC,oBAAoB;YAC3C,WAAW,EAAE,MAAM,CAAC,iBAAiB;YACrC,iCAAiC;YACjC,eAAe,EAAE,MAAM,CAAC,SAAS;YACjC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,MAAM,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1F,GAAG,6BAAqB;SACzB,CAAC,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,eAAe;QACjH,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACtF,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -70,9 +70,6 @@ export interface ModelOptions {
|
|
|
70
70
|
* ```
|
|
71
71
|
*/
|
|
72
72
|
export interface DBConfig {
|
|
73
|
-
name?: string;
|
|
74
|
-
/** @deprecated Use driver instead */
|
|
75
|
-
type?: 'pgsql';
|
|
76
73
|
/** Database driver: 'postgres' (default), 'sqlite', or 'mysql' */
|
|
77
74
|
driver?: 'postgres' | 'sqlite' | 'mysql';
|
|
78
75
|
/** Database host (for server-based DBs like PostgreSQL) */
|
|
@@ -85,12 +82,17 @@ export interface DBConfig {
|
|
|
85
82
|
user?: string;
|
|
86
83
|
/** Password */
|
|
87
84
|
password?: string;
|
|
88
|
-
|
|
85
|
+
/** Maximum pool size */
|
|
86
|
+
max?: number;
|
|
87
|
+
/**
|
|
88
|
+
* Seconds allowed for getting a connection (default: 30). With PostgreSQL this also bounds the wait
|
|
89
|
+
* for a free connection when the pool is at `max`.
|
|
90
|
+
*/
|
|
89
91
|
timeout?: number;
|
|
92
|
+
/** Milliseconds an unused pooled connection stays open before it is closed (default: 10000) */
|
|
93
|
+
idleTimeoutMillis?: number;
|
|
94
|
+
/** Query timeout in seconds */
|
|
90
95
|
queryTimeout?: number;
|
|
91
|
-
searchPath?: string;
|
|
92
|
-
/** Pool max connections */
|
|
93
|
-
max?: number;
|
|
94
96
|
/** Enable TCP keepalive on connections (recommended for serverless/Lambda) */
|
|
95
97
|
keepAlive?: boolean;
|
|
96
98
|
/** Delay in milliseconds before first keepalive probe (default: 10000) */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAMzD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,UAAU;IACzB,4BAA4B;IAC5B,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,+EAA+E;IAC/E,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;CACrB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,SAAS,CAAC;IAExB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC;IAErB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,QAAQ;IACvB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA2WH;;;;GAIG;AACH,MAAa,kBAAmB,SAAQ,KAAK;IAEzB;IAKA;IACA;IACA;IACA;IATlB,YACkB,KAAa;IAC7B;;;OAGG;IACa,WAAmB,EACnB,OAA4B,EAC5B,SAAkB,EAClB,YAAqB;QAErC,MAAM,UAAU,GAAG,OAAO,KAAK,MAAM;YACnC,CAAC,CAAC,aAAa,SAAS,IAAI,SAAS,EAAE;YACvC,CAAC,CAAC,aAAa,YAAY,QAAQ,SAAS,IAAI,SAAS,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,OAAO,KAAK,MAAM;YACjC,CAAC,CAAC,aAAa,KAAK,EAAE,CAAE,qDAAqD;YAC7E,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC,CAAK,8DAA8D;QACxF,KAAK,CACH,yBAAyB,UAAU,aAAa,QAAQ,YAAY;YACpE,gBAAgB,KAAK,qDAAqD;YAC1E,6DAA6D,CAC9D,CAAC;QApBc,UAAK,GAAL,KAAK,CAAQ;QAKb,gBAAW,GAAX,WAAW,CAAQ;QACnB,YAAO,GAAP,OAAO,CAAqB;QAC5B,cAAS,GAAT,SAAS,CAAS;QAClB,iBAAY,GAAZ,YAAY,CAAS;QAarC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAzBD,gDAyBC;AAED;;;;GAIG;AACH,MAAa,4BAA6B,SAAQ,KAAK;IAEnC;IACA;IAFlB,YACkB,SAAiB,EACjB,SAAkB;QAElC,KAAK,CACH,oBAAoB,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,2BAA2B;YAC/F,qDAAqD,CACtD,CAAC;QANc,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAS;QAMlC,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAXD,oEAWC;AAED;;;;GAIG;AACH,MAAa,2BAA4B,SAAQ,KAAK;IAElC;IACA;IAFlB,YACkB,SAAiB,EACjB,SAAkB;QAElC,KAAK,CACH,oBAAoB,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,2CAA2C;YAC/G,iDAAiD,CAClD,CAAC;QANc,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAS;QAMlC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAXD,kEAWC"}
|
package/docs/BENCHMARK.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Benchmark comparing litedbmodel with Prisma, Kysely, Drizzle, and TypeORM on PostgreSQL.
|
|
4
4
|
|
|
5
5
|
<!--@embedoc:package_version-->
|
|
6
|
-
**Version:** litedbmodel **2.2.
|
|
6
|
+
**Version:** litedbmodel **2.2.11**
|
|
7
7
|
<!--@embedoc:end-->
|
|
8
8
|
|
|
9
9
|
> Measured on PostgreSQL 16 · Apple Silicon (arm64).
|