@happyvertical/sql 0.80.6 → 0.81.0
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 +41 -0
- package/dist/chunks/{schema-manager-a8RlxIE2.js → alter-utils-D7NGXZi0.js} +190 -2
- package/dist/chunks/alter-utils-D7NGXZi0.js.map +1 -0
- package/dist/chunks/{duckdb-D_Wu36JL.js → duckdb-pKOTggPW.js} +44 -20
- package/dist/chunks/duckdb-pKOTggPW.js.map +1 -0
- package/dist/chunks/{sqlite-B4ussRTS.js → sqlite-dbhMszEJ.js} +57 -23
- package/dist/chunks/sqlite-dbhMszEJ.js.map +1 -0
- package/dist/chunks/{sqlite-native-BgiF4301.js → sqlite-native-DrNaIJRO.js} +68 -20
- package/dist/chunks/sqlite-native-DrNaIJRO.js.map +1 -0
- package/dist/chunks/types-uVFHgaSU.js +133 -0
- package/dist/chunks/types-uVFHgaSU.js.map +1 -0
- package/dist/duckdb.d.ts.map +1 -1
- package/dist/index.js +638 -747
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/postgres.d.ts.map +1 -1
- package/dist/shared/alter-utils.d.ts +48 -0
- package/dist/shared/alter-utils.d.ts.map +1 -1
- package/dist/shared/transaction-lock.d.ts +54 -0
- package/dist/shared/transaction-lock.d.ts.map +1 -0
- package/dist/shared/types.d.ts +69 -7
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/sqlite-native.d.ts.map +1 -1
- package/dist/sqlite.d.ts +20 -0
- package/dist/sqlite.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/chunks/alter-utils-K7tiuj5L.js +0 -135
- package/dist/chunks/alter-utils-K7tiuj5L.js.map +0 -1
- package/dist/chunks/duckdb-D_Wu36JL.js.map +0 -1
- package/dist/chunks/schema-manager-a8RlxIE2.js.map +0 -1
- package/dist/chunks/sqlite-B4ussRTS.js.map +0 -1
- package/dist/chunks/sqlite-native-BgiF4301.js.map +0 -1
package/dist/json.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EAMZ,MAAM,gBAAgB,CAAC;AAIxB;;;;;;;GAOG;AACH,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,8BAA8B,EAC9B,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC9B,SAAS,CAAC;IAEd,IAAI,2BAA2B,EAC3B,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,GACvC,SAAS,CAAC;CACf;AAgCD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C;AAigBD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,iBAAiB,CAAC,CA+6C5B"}
|
package/dist/postgres.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../src/postgres.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../src/postgres.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAIV,iBAAiB,EAYlB,MAAM,gBAAgB,CAAC;AAGxB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,gBAAgB,EAAE,aAAa,CAAC;CAClD;AAiBD;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAGnD;AAicD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,WAAW,CAC/B,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CA8C5B"}
|
|
@@ -73,6 +73,54 @@ export declare function validateTableName(tableName: string): void;
|
|
|
73
73
|
* @throws Error if column name contains invalid characters
|
|
74
74
|
*/
|
|
75
75
|
export declare function validateColumnName(columnName: string): void;
|
|
76
|
+
/**
|
|
77
|
+
* Validates every identifier in a column list to prevent SQL injection
|
|
78
|
+
*
|
|
79
|
+
* Column names reaching the CRUD methods come from `Object.keys(data)` and the
|
|
80
|
+
* caller's `conflictColumns`, both of which are interpolated into SQL. They are
|
|
81
|
+
* checked rather than quoted deliberately: the accepted shape has no character
|
|
82
|
+
* that can end an identifier, so quoting adds nothing to safety, and quoting a
|
|
83
|
+
* name on PostgreSQL makes it case-sensitive, which would silently change which
|
|
84
|
+
* column an existing caller addresses.
|
|
85
|
+
*
|
|
86
|
+
* @param columnNames - Column names to validate
|
|
87
|
+
* @throws Error if any column name contains invalid characters
|
|
88
|
+
*/
|
|
89
|
+
export declare function validateColumnNames(columnNames: string[]): void;
|
|
90
|
+
/**
|
|
91
|
+
* Escapes an identifier for interpolation inside double quotes
|
|
92
|
+
*
|
|
93
|
+
* For the positions that already quote the identifier — the DuckDB and JSON
|
|
94
|
+
* upsert statements, which quote to match their schema generator — quoting is
|
|
95
|
+
* what makes the identifier safe, so the only thing that has to be handled is
|
|
96
|
+
* a quote character inside the name. Doubling it is the SQL escape.
|
|
97
|
+
*
|
|
98
|
+
* This is deliberately more permissive than {@link validateColumnName}: those
|
|
99
|
+
* adapters accept column names that are not plain identifiers (`Full Name`,
|
|
100
|
+
* `user-id`, `2024_total`), which matters most for the JSON adapter, whose
|
|
101
|
+
* columns come straight from the keys of whatever JSON it was pointed at.
|
|
102
|
+
* Rejecting them would break working code to fix an injection that quoting
|
|
103
|
+
* already prevents.
|
|
104
|
+
*
|
|
105
|
+
* @param identifier - Identifier to place inside double quotes
|
|
106
|
+
* @returns The identifier with embedded quotes doubled
|
|
107
|
+
* @throws Error if the identifier is empty or contains a NUL byte
|
|
108
|
+
*/
|
|
109
|
+
export declare function escapeQuotedIdentifier(identifier: string): string;
|
|
110
|
+
/**
|
|
111
|
+
* Escapes a value for interpolation inside a single-quoted SQL string literal
|
|
112
|
+
*
|
|
113
|
+
* The DuckDB-backed adapters read JSON through `read_json_auto('<path>')`, and
|
|
114
|
+
* a file path is not something an identifier validator can check — paths
|
|
115
|
+
* legitimately contain spaces, dots and, on Linux and macOS, quotes. Doubling
|
|
116
|
+
* the quote is the SQL escape, and it is what keeps a file named `x'.json`
|
|
117
|
+
* from ending the literal and starting a statement.
|
|
118
|
+
*
|
|
119
|
+
* @param value - Value to place inside single quotes
|
|
120
|
+
* @returns The value with embedded single quotes doubled
|
|
121
|
+
* @throws Error if the value contains a NUL byte
|
|
122
|
+
*/
|
|
123
|
+
export declare function escapeStringLiteral(value: string): string;
|
|
76
124
|
/**
|
|
77
125
|
* Validates an index name to prevent SQL injection
|
|
78
126
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alter-utils.d.ts","sourceRoot":"","sources":["../../src/shared/alter-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,wBAAwB,EAChC,QAAQ,EAAE,eAAe,GACxB,MAAM,CAkDR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,GAAG,GAChB,MAAM,CAkER;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,GACrB,MAAM,CA0BR;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAMzD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAM3D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAMzD"}
|
|
1
|
+
{"version":3,"file":"alter-utils.d.ts","sourceRoot":"","sources":["../../src/shared/alter-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,wBAAwB,EAChC,QAAQ,EAAE,eAAe,GACxB,MAAM,CAkDR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,GAAG,GAChB,MAAM,CAkER;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,GACrB,MAAM,CA0BR;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAMzD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAM3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAI/D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAOjE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAMzD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How long a queued transaction waits for the connection before giving up.
|
|
3
|
+
*
|
|
4
|
+
* A transaction that legitimately runs longer than this will make the ones
|
|
5
|
+
* behind it fail rather than stall indefinitely. Raise it with the adapter's
|
|
6
|
+
* `transactionQueueTimeout` option if that is the wrong trade for a workload.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_TRANSACTION_QUEUE_TIMEOUT_MS = 30000;
|
|
9
|
+
/**
|
|
10
|
+
* Serializes transactions on a connection that cannot hold more than one.
|
|
11
|
+
*/
|
|
12
|
+
export interface TransactionLock {
|
|
13
|
+
/**
|
|
14
|
+
* Takes the connection and returns the function that gives it back.
|
|
15
|
+
*
|
|
16
|
+
* Calling the returned function more than once is a no-op, so a teardown
|
|
17
|
+
* path that runs twice cannot hand the connection to two callers at once.
|
|
18
|
+
*/
|
|
19
|
+
acquire(): Promise<() => void>;
|
|
20
|
+
/**
|
|
21
|
+
* Runs `work` with exclusive use of the connection, releasing it however
|
|
22
|
+
* `work` finishes.
|
|
23
|
+
*/
|
|
24
|
+
run<T>(work: () => Promise<T>): Promise<T>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Creates a lock that serializes transactions on one connection.
|
|
28
|
+
*
|
|
29
|
+
* SQLite, DuckDB and the JSON adapter each drive a single connection, and a
|
|
30
|
+
* connection can only be in one transaction at a time. `transaction()` used to
|
|
31
|
+
* issue `BEGIN` on that shared connection with no serialization and no record
|
|
32
|
+
* of whether one was already open, so two overlapping calls corrupted each
|
|
33
|
+
* other: the second `BEGIN` threw, its `catch` ran `ROLLBACK`, and that
|
|
34
|
+
* rollback landed on the *first* transaction — committing part of its work,
|
|
35
|
+
* discarding the rest, and rejecting its promise. Nesting was not required;
|
|
36
|
+
* two concurrent requests were enough, which made it reachable from any server
|
|
37
|
+
* handling more than one at a time.
|
|
38
|
+
*
|
|
39
|
+
* The lock spans the whole `BEGIN` … `COMMIT`/`ROLLBACK` sequence, so a queued
|
|
40
|
+
* transaction starts only once the previous one has ended. It is a
|
|
41
|
+
* promise-chain mutex, the same shape as the `withNullAwareUpsertLock` the
|
|
42
|
+
* SQLite adapter already used for the narrower upsert case.
|
|
43
|
+
*
|
|
44
|
+
* Re-entrant calls must not come through here. A nested `tx.transaction()`
|
|
45
|
+
* arrives via the transaction-scoped interface, which re-enters under a
|
|
46
|
+
* `SAVEPOINT` (SQLite) or refuses (DuckDB, JSON) without ever reaching the
|
|
47
|
+
* top-level `transaction()`; routing one here instead would make it wait on a
|
|
48
|
+
* lock its own caller is holding.
|
|
49
|
+
*
|
|
50
|
+
* @param adapter - Adapter name, for the timeout error
|
|
51
|
+
* @param timeoutMs - Ceiling on how long to wait for a turn
|
|
52
|
+
*/
|
|
53
|
+
export declare function createTransactionLock(adapter: string, timeoutMs?: number): TransactionLock;
|
|
54
|
+
//# sourceMappingURL=transaction-lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-lock.d.ts","sourceRoot":"","sources":["../../src/shared/transaction-lock.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,oCAAoC,QAAS,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAE/B;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC5C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAA6C,GACvD,eAAe,CAoEjB"}
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -63,6 +63,26 @@ export interface DatabaseOptions {
|
|
|
63
63
|
* Authentication token for the database connection
|
|
64
64
|
*/
|
|
65
65
|
authToken?: string;
|
|
66
|
+
/**
|
|
67
|
+
* How long a queued transaction waits for the connection, in milliseconds.
|
|
68
|
+
*
|
|
69
|
+
* Applies to the single-connection adapters — SQLite (both the LibSQL and
|
|
70
|
+
* native paths), DuckDB and JSON. Those drive one connection, so transactions
|
|
71
|
+
* run one at a time and an overlapping `transaction()` waits its turn.
|
|
72
|
+
* PostgreSQL pools and ignores this.
|
|
73
|
+
*
|
|
74
|
+
* The clock starts when the call queues, not when the connection frees, so
|
|
75
|
+
* this bounds the total wait rather than any single transaction: raise it for
|
|
76
|
+
* workloads with long transactions *or* with sustained bursts on one
|
|
77
|
+
* connection. Must be positive and finite.
|
|
78
|
+
*
|
|
79
|
+
* Read once, when the connection is created. Adapters that cache connections
|
|
80
|
+
* hand a later `getDatabase()` for the same database the existing one, which
|
|
81
|
+
* keeps the timeout the first caller asked for.
|
|
82
|
+
*
|
|
83
|
+
* @default 30000
|
|
84
|
+
*/
|
|
85
|
+
transactionQueueTimeout?: number;
|
|
66
86
|
}
|
|
67
87
|
/**
|
|
68
88
|
* DuckDB-specific connection options
|
|
@@ -131,6 +151,26 @@ export interface JSONOptions {
|
|
|
131
151
|
* @default 'immediate'
|
|
132
152
|
*/
|
|
133
153
|
writeStrategy?: 'immediate' | 'manual' | 'none';
|
|
154
|
+
/**
|
|
155
|
+
* How long a queued transaction waits for the connection, in milliseconds.
|
|
156
|
+
*
|
|
157
|
+
* Applies to the single-connection adapters — SQLite (both the LibSQL and
|
|
158
|
+
* native paths), DuckDB and JSON. Those drive one connection, so transactions
|
|
159
|
+
* run one at a time and an overlapping `transaction()` waits its turn.
|
|
160
|
+
* PostgreSQL pools and ignores this.
|
|
161
|
+
*
|
|
162
|
+
* The clock starts when the call queues, not when the connection frees, so
|
|
163
|
+
* this bounds the total wait rather than any single transaction: raise it for
|
|
164
|
+
* workloads with long transactions *or* with sustained bursts on one
|
|
165
|
+
* connection. Must be positive and finite.
|
|
166
|
+
*
|
|
167
|
+
* Read once, when the connection is created. Adapters that cache connections
|
|
168
|
+
* hand a later `getDatabase()` for the same database the existing one, which
|
|
169
|
+
* keeps the timeout the first caller asked for.
|
|
170
|
+
*
|
|
171
|
+
* @default 30000
|
|
172
|
+
*/
|
|
173
|
+
transactionQueueTimeout?: number;
|
|
134
174
|
/**
|
|
135
175
|
* Explicit schema definitions for tables
|
|
136
176
|
*
|
|
@@ -822,15 +862,24 @@ export interface DatabaseInterface {
|
|
|
822
862
|
* - **DuckDB and JSON** — the engine has no `SAVEPOINT`, so nesting throws
|
|
823
863
|
* {@link NestedTransactionError} without touching the connection. The
|
|
824
864
|
* enclosing transaction is unaffected and can continue.
|
|
825
|
-
* - **PostgreSQL** —
|
|
826
|
-
*
|
|
827
|
-
*
|
|
828
|
-
*
|
|
829
|
-
*
|
|
865
|
+
* - **PostgreSQL** — the nested scope re-enters the enclosing transaction
|
|
866
|
+
* under a `SAVEPOINT` on the same pooled connection, like SQLite. It used
|
|
867
|
+
* to check out a second connection and begin an independent transaction,
|
|
868
|
+
* which could not see the enclosing transaction's uncommitted rows and
|
|
869
|
+
* could deadlock against it undetectably; that was fixed in #1108.
|
|
830
870
|
*
|
|
831
871
|
* Code that must run on every adapter should take the transaction as a
|
|
832
872
|
* parameter rather than opening a nested one.
|
|
833
873
|
*
|
|
874
|
+
* **Transactions are serialized per connection on the single-connection
|
|
875
|
+
* adapters** — SQLite (both paths), DuckDB and JSON drive one connection, and
|
|
876
|
+
* a connection can only be in one transaction at a time, so a concurrent
|
|
877
|
+
* `transaction()` waits for the one in progress rather than corrupting it. A
|
|
878
|
+
* queued call that waits longer than `transactionQueueTimeout` (30s by
|
|
879
|
+
* default) rejects rather than stalling indefinitely. Re-entrant calls do not
|
|
880
|
+
* queue — they take the savepoint or refusal path described above.
|
|
881
|
+
* PostgreSQL pools, so its transactions run concurrently and never queue.
|
|
882
|
+
*
|
|
834
883
|
* @param callback - Function to execute within transaction
|
|
835
884
|
* @returns Promise resolving to callback result
|
|
836
885
|
* @throws {NestedTransactionError} When nesting on an adapter without
|
|
@@ -855,18 +904,31 @@ export interface DatabaseInterface {
|
|
|
855
904
|
* Unlike transaction(), this gives you explicit control over commit/rollback.
|
|
856
905
|
* Ideal for test isolation where you want to rollback after each test.
|
|
857
906
|
*
|
|
907
|
+
* On the single-connection adapters — SQLite (both paths), DuckDB and JSON —
|
|
908
|
+
* the handle owns the connection until {@link TransactionHandle.commit} or
|
|
909
|
+
* {@link TransactionHandle.rollback} is called, so every other transaction on
|
|
910
|
+
* that connection waits in the meantime. **A handle that is never ended holds
|
|
911
|
+
* the connection for the life of the process**, and later transactions then
|
|
912
|
+
* fail with the queue-timeout error instead of proceeding. End the handle in
|
|
913
|
+
* a `finally`, and in per-test setup guard the teardown, because an
|
|
914
|
+
* assertion that throws between `beginTransaction()` and the teardown would
|
|
915
|
+
* otherwise strand it.
|
|
916
|
+
*
|
|
858
917
|
* @returns Promise resolving to a TransactionHandle
|
|
859
918
|
*
|
|
860
919
|
* @example Test isolation pattern
|
|
861
920
|
* ```typescript
|
|
862
|
-
* let tx: TransactionHandle;
|
|
921
|
+
* let tx: TransactionHandle | undefined;
|
|
863
922
|
*
|
|
864
923
|
* beforeEach(async () => {
|
|
865
924
|
* tx = await db.beginTransaction();
|
|
866
925
|
* });
|
|
867
926
|
*
|
|
868
927
|
* afterEach(async () => {
|
|
869
|
-
*
|
|
928
|
+
* // Guarded: if beforeEach threw, there is no handle to end, and an
|
|
929
|
+
* // unguarded rollback would mask that failure with its own.
|
|
930
|
+
* await tx?.rollback(); // Discard all test changes
|
|
931
|
+
* tx = undefined;
|
|
870
932
|
* });
|
|
871
933
|
*
|
|
872
934
|
* it('creates user', async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-native.d.ts","sourceRoot":"","sources":["../src/sqlite-native.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sqlite-native.d.ts","sourceRoot":"","sources":["../src/sqlite-native.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAGV,iBAAiB,EAoBlB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAktBjD,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAgC5B"}
|
package/dist/sqlite.d.ts
CHANGED
|
@@ -35,6 +35,26 @@ export interface SqliteOptions {
|
|
|
35
35
|
* capabilities are only supported for local SQLite databases.
|
|
36
36
|
*/
|
|
37
37
|
capabilities?: SqliteCapabilitiesOptions;
|
|
38
|
+
/**
|
|
39
|
+
* How long a queued transaction waits for the connection, in milliseconds.
|
|
40
|
+
*
|
|
41
|
+
* Applies to the single-connection adapters — SQLite (both the LibSQL and
|
|
42
|
+
* native paths), DuckDB and JSON. Those drive one connection, so transactions
|
|
43
|
+
* run one at a time and an overlapping `transaction()` waits its turn.
|
|
44
|
+
* PostgreSQL pools and ignores this.
|
|
45
|
+
*
|
|
46
|
+
* The clock starts when the call queues, not when the connection frees, so
|
|
47
|
+
* this bounds the total wait rather than any single transaction: raise it for
|
|
48
|
+
* workloads with long transactions *or* with sustained bursts on one
|
|
49
|
+
* connection. Must be positive and finite.
|
|
50
|
+
*
|
|
51
|
+
* Read once, when the connection is created. Adapters that cache connections
|
|
52
|
+
* hand a later `getDatabase()` for the same database the existing one, which
|
|
53
|
+
* keeps the timeout the first caller asked for.
|
|
54
|
+
*
|
|
55
|
+
* @default 30000
|
|
56
|
+
*/
|
|
57
|
+
transactionQueueTimeout?: number;
|
|
38
58
|
/**
|
|
39
59
|
* Schema definitions for tables.
|
|
40
60
|
* Accepts a record or a lazy function (see SchemasOption).
|
package/dist/sqlite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAGV,iBAAiB,EAIjB,yBAAyB,EAK1B,MAAM,gBAAgB,CAAC;AAqHxB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,yBAAyB,CAAC;IAEzC;;;;;;;;;;;;;;;;;;OAkBG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,gBAAgB,EAAE,aAAa,CAAC;CAClD;AA+ED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAy1C5B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/sql",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.81.0",
|
|
4
4
|
"description": "Database interface with support for SQLite, PostgreSQL, and DuckDB",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@libsql/client": "0.17.2",
|
|
47
47
|
"pg": "^8.20.0",
|
|
48
48
|
"sqlite-vss": "^0.1.2",
|
|
49
|
-
"@happyvertical/utils": "0.
|
|
49
|
+
"@happyvertical/utils": "0.81.0"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@russellthehippo/honker-node": "^0.3.3",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"test": "vitest --config ../../vitest.package.config.ts run",
|
|
73
73
|
"test:watch": "vitest --config ../../vitest.package.config.ts",
|
|
74
74
|
"test:sqlite": "vitest --config ../../vitest.package.config.ts run src/sqlite.spec.ts",
|
|
75
|
-
"test:postgres": "node ../../scripts/run-with-ci-postgres.mjs -- vitest --config ../../vitest.package.config.ts run src/postgres.spec.ts src/postgres-vector.spec.ts src/postgres-connection-lifecycle.spec.ts src/postgres-nested-transaction.spec.ts",
|
|
75
|
+
"test:postgres": "node ../../scripts/run-with-ci-postgres.mjs -- vitest --config ../../vitest.package.config.ts run src/postgres.spec.ts src/postgres-vector.spec.ts src/postgres-connection-lifecycle.spec.ts src/postgres-nested-transaction.spec.ts src/postgres-transaction-errors.spec.ts src/transaction-schema-scope.spec.ts src/identifier-injection.spec.ts",
|
|
76
76
|
"test:duckdb": "vitest --config ../../vitest.package.config.ts run src/duckdb.spec.ts",
|
|
77
77
|
"build": "vite build",
|
|
78
78
|
"build:watch": "vite build --watch",
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
//#region src/shared/alter-utils.ts
|
|
2
|
-
/**
|
|
3
|
-
* Generates an ALTER TABLE ADD COLUMN statement
|
|
4
|
-
*
|
|
5
|
-
* @param table - Table name
|
|
6
|
-
* @param column - Column definition with name
|
|
7
|
-
* @param dialect - Database dialect
|
|
8
|
-
* @returns SQL statement string
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```typescript
|
|
12
|
-
* const sql = generateAddColumnStatement('users', {
|
|
13
|
-
* name: 'email',
|
|
14
|
-
* type: 'TEXT',
|
|
15
|
-
* unique: true,
|
|
16
|
-
* notNull: false
|
|
17
|
-
* }, 'sqlite');
|
|
18
|
-
* // Returns: "ALTER TABLE users ADD COLUMN email TEXT UNIQUE"
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
function generateAddColumnStatement(table, column, _dialect) {
|
|
22
|
-
const parts = [column.name, column.type];
|
|
23
|
-
if (column.primaryKey) parts.push("PRIMARY KEY");
|
|
24
|
-
if (column.notNull) parts.push("NOT NULL");
|
|
25
|
-
if (column.unique) parts.push("UNIQUE");
|
|
26
|
-
if (column.defaultValue !== void 0) {
|
|
27
|
-
const defaultClause = generateDefaultClause(column.type, column.defaultValue);
|
|
28
|
-
parts.push(`DEFAULT ${defaultClause}`);
|
|
29
|
-
}
|
|
30
|
-
if (column.check) parts.push(`CHECK (${column.check})`);
|
|
31
|
-
if (column.foreignKey) {
|
|
32
|
-
const fk = column.foreignKey;
|
|
33
|
-
const fkParts = [`REFERENCES ${fk.table}(${fk.column})`];
|
|
34
|
-
if (fk.onDelete) fkParts.push(`ON DELETE ${fk.onDelete}`);
|
|
35
|
-
if (fk.onUpdate) fkParts.push(`ON UPDATE ${fk.onUpdate}`);
|
|
36
|
-
parts.push(fkParts.join(" "));
|
|
37
|
-
}
|
|
38
|
-
return `ALTER TABLE ${table} ADD COLUMN ${parts.join(" ")}`;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Generates a DEFAULT clause for a column definition
|
|
42
|
-
*
|
|
43
|
-
* Handles proper formatting and escaping of default values based on column type.
|
|
44
|
-
*
|
|
45
|
-
* @param columnType - SQL column type (TEXT, INTEGER, BOOLEAN, etc.)
|
|
46
|
-
* @param defaultValue - Default value to format
|
|
47
|
-
* @returns Formatted default value string
|
|
48
|
-
*
|
|
49
|
-
* @example
|
|
50
|
-
* ```typescript
|
|
51
|
-
* generateDefaultClause('TEXT', 'hello'); // Returns: "'hello'"
|
|
52
|
-
* generateDefaultClause('INTEGER', 42); // Returns: "42"
|
|
53
|
-
* generateDefaultClause('BOOLEAN', true); // Returns: "true"
|
|
54
|
-
* generateDefaultClause('TEXT', null); // Returns: "NULL"
|
|
55
|
-
* ```
|
|
56
|
-
*/
|
|
57
|
-
function generateDefaultClause(columnType, defaultValue) {
|
|
58
|
-
if (defaultValue === null) return "NULL";
|
|
59
|
-
const typeUpper = columnType.toUpperCase();
|
|
60
|
-
if (typeUpper.includes("TEXT") || typeUpper.includes("CHAR") || typeUpper.includes("VARCHAR") || typeUpper.includes("STRING")) {
|
|
61
|
-
if (defaultValue === "") return "''";
|
|
62
|
-
return `'${String(defaultValue).replace(/'/g, "''")}'`;
|
|
63
|
-
}
|
|
64
|
-
if (typeUpper.includes("BOOL")) return defaultValue ? "true" : "false";
|
|
65
|
-
if (typeUpper.includes("INT") || typeUpper.includes("REAL") || typeUpper.includes("FLOAT") || typeUpper.includes("DOUBLE") || typeUpper.includes("NUMERIC") || typeUpper.includes("DECIMAL")) return String(defaultValue);
|
|
66
|
-
if (typeUpper.includes("JSON")) {
|
|
67
|
-
if (typeof defaultValue === "string") return `'${defaultValue.replace(/'/g, "''")}'`;
|
|
68
|
-
return `'${JSON.stringify(defaultValue).replace(/'/g, "''")}'`;
|
|
69
|
-
}
|
|
70
|
-
if (typeUpper.includes("DATE") || typeUpper.includes("TIME") || typeUpper.includes("TIMESTAMP")) {
|
|
71
|
-
if (defaultValue instanceof Date) return `'${defaultValue.toISOString()}'`;
|
|
72
|
-
return `'${String(defaultValue).replace(/'/g, "''")}'`;
|
|
73
|
-
}
|
|
74
|
-
if (typeof defaultValue === "string") return `'${defaultValue.replace(/'/g, "''")}'`;
|
|
75
|
-
return String(defaultValue);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Generates a CREATE INDEX statement
|
|
79
|
-
*
|
|
80
|
-
* @param table - Table name
|
|
81
|
-
* @param index - Index definition
|
|
82
|
-
* @returns SQL CREATE INDEX statement
|
|
83
|
-
*
|
|
84
|
-
* @example
|
|
85
|
-
* ```typescript
|
|
86
|
-
* const sql = generateCreateIndexStatement('users', {
|
|
87
|
-
* name: 'idx_users_email',
|
|
88
|
-
* columns: ['email'],
|
|
89
|
-
* unique: true
|
|
90
|
-
* });
|
|
91
|
-
* // Returns: "CREATE UNIQUE INDEX idx_users_email ON users (email)"
|
|
92
|
-
* ```
|
|
93
|
-
*/
|
|
94
|
-
function generateCreateIndexStatement(table, index) {
|
|
95
|
-
const parts = ["CREATE"];
|
|
96
|
-
if (index.unique) parts.push("UNIQUE");
|
|
97
|
-
parts.push("INDEX");
|
|
98
|
-
parts.push(index.name);
|
|
99
|
-
parts.push(`ON ${table}`);
|
|
100
|
-
const columns = index.columns.join(", ");
|
|
101
|
-
parts.push(`(${columns})`);
|
|
102
|
-
if (index.where) parts.push(`WHERE ${index.where}`);
|
|
103
|
-
return parts.join(" ");
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Validates a table name to prevent SQL injection
|
|
107
|
-
*
|
|
108
|
-
* @param tableName - Table name to validate
|
|
109
|
-
* @throws Error if table name contains invalid characters
|
|
110
|
-
*/
|
|
111
|
-
function validateTableName(tableName) {
|
|
112
|
-
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(tableName)) throw new Error(`Invalid table name: ${tableName}. Table names must start with a letter or underscore and contain only alphanumeric characters and underscores.`);
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Validates a column name to prevent SQL injection
|
|
116
|
-
*
|
|
117
|
-
* @param columnName - Column name to validate
|
|
118
|
-
* @throws Error if column name contains invalid characters
|
|
119
|
-
*/
|
|
120
|
-
function validateColumnName(columnName) {
|
|
121
|
-
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(columnName)) throw new Error(`Invalid column name: ${columnName}. Column names must start with a letter or underscore and contain only alphanumeric characters and underscores.`);
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Validates an index name to prevent SQL injection
|
|
125
|
-
*
|
|
126
|
-
* @param indexName - Index name to validate
|
|
127
|
-
* @throws Error if index name contains invalid characters
|
|
128
|
-
*/
|
|
129
|
-
function validateIndexName(indexName) {
|
|
130
|
-
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(indexName)) throw new Error(`Invalid index name: ${indexName}. Index names must start with a letter or underscore and contain only alphanumeric characters and underscores.`);
|
|
131
|
-
}
|
|
132
|
-
//#endregion
|
|
133
|
-
export { validateTableName as a, validateIndexName as i, generateCreateIndexStatement as n, validateColumnName as r, generateAddColumnStatement as t };
|
|
134
|
-
|
|
135
|
-
//# sourceMappingURL=alter-utils-K7tiuj5L.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"alter-utils-K7tiuj5L.js","names":[],"sources":["../../src/shared/alter-utils.ts"],"sourcesContent":["/**\n * Shared utilities for ALTER TABLE operations\n *\n * Provides database-agnostic utilities for generating ALTER TABLE statements,\n * handling column definitions, and creating indexes.\n */\n\nimport type { ColumnDefinitionWithName, IndexDefinition } from './types.js';\n\n/**\n * Database dialect type for SQL generation\n */\nexport type DatabaseDialect = 'sqlite' | 'postgres' | 'duckdb';\n\n/**\n * Generates an ALTER TABLE ADD COLUMN statement\n *\n * @param table - Table name\n * @param column - Column definition with name\n * @param dialect - Database dialect\n * @returns SQL statement string\n *\n * @example\n * ```typescript\n * const sql = generateAddColumnStatement('users', {\n * name: 'email',\n * type: 'TEXT',\n * unique: true,\n * notNull: false\n * }, 'sqlite');\n * // Returns: \"ALTER TABLE users ADD COLUMN email TEXT UNIQUE\"\n * ```\n */\nexport function generateAddColumnStatement(\n table: string,\n column: ColumnDefinitionWithName,\n _dialect: DatabaseDialect,\n): string {\n const parts: string[] = [column.name, column.type];\n\n // Primary key\n if (column.primaryKey) {\n parts.push('PRIMARY KEY');\n }\n\n // NOT NULL constraint\n if (column.notNull) {\n parts.push('NOT NULL');\n }\n\n // UNIQUE constraint\n if (column.unique) {\n parts.push('UNIQUE');\n }\n\n // DEFAULT clause\n if (column.defaultValue !== undefined) {\n const defaultClause = generateDefaultClause(\n column.type,\n column.defaultValue,\n );\n parts.push(`DEFAULT ${defaultClause}`);\n }\n\n // CHECK constraint\n if (column.check) {\n parts.push(`CHECK (${column.check})`);\n }\n\n // Foreign key (inline for some databases)\n if (column.foreignKey) {\n const fk = column.foreignKey;\n const fkParts = [`REFERENCES ${fk.table}(${fk.column})`];\n\n if (fk.onDelete) {\n fkParts.push(`ON DELETE ${fk.onDelete}`);\n }\n\n if (fk.onUpdate) {\n fkParts.push(`ON UPDATE ${fk.onUpdate}`);\n }\n\n parts.push(fkParts.join(' '));\n }\n\n const columnDef = parts.join(' ');\n return `ALTER TABLE ${table} ADD COLUMN ${columnDef}`;\n}\n\n/**\n * Generates a DEFAULT clause for a column definition\n *\n * Handles proper formatting and escaping of default values based on column type.\n *\n * @param columnType - SQL column type (TEXT, INTEGER, BOOLEAN, etc.)\n * @param defaultValue - Default value to format\n * @returns Formatted default value string\n *\n * @example\n * ```typescript\n * generateDefaultClause('TEXT', 'hello'); // Returns: \"'hello'\"\n * generateDefaultClause('INTEGER', 42); // Returns: \"42\"\n * generateDefaultClause('BOOLEAN', true); // Returns: \"true\"\n * generateDefaultClause('TEXT', null); // Returns: \"NULL\"\n * ```\n */\nexport function generateDefaultClause(\n columnType: string,\n defaultValue: any,\n): string {\n if (defaultValue === null) {\n return 'NULL';\n }\n\n const typeUpper = columnType.toUpperCase();\n\n // String types - need quotes\n if (\n typeUpper.includes('TEXT') ||\n typeUpper.includes('CHAR') ||\n typeUpper.includes('VARCHAR') ||\n typeUpper.includes('STRING')\n ) {\n // Handle empty strings\n if (defaultValue === '') {\n return \"''\";\n }\n // Escape single quotes\n const escaped = String(defaultValue).replace(/'/g, \"''\");\n return `'${escaped}'`;\n }\n\n // Boolean types\n if (typeUpper.includes('BOOL')) {\n return defaultValue ? 'true' : 'false';\n }\n\n // Numeric types - no quotes\n if (\n typeUpper.includes('INT') ||\n typeUpper.includes('REAL') ||\n typeUpper.includes('FLOAT') ||\n typeUpper.includes('DOUBLE') ||\n typeUpper.includes('NUMERIC') ||\n typeUpper.includes('DECIMAL')\n ) {\n return String(defaultValue);\n }\n\n // JSON types\n if (typeUpper.includes('JSON')) {\n if (typeof defaultValue === 'string') {\n return `'${defaultValue.replace(/'/g, \"''\")}'`;\n }\n return `'${JSON.stringify(defaultValue).replace(/'/g, \"''\")}'`;\n }\n\n // Date/timestamp types\n if (\n typeUpper.includes('DATE') ||\n typeUpper.includes('TIME') ||\n typeUpper.includes('TIMESTAMP')\n ) {\n if (defaultValue instanceof Date) {\n return `'${defaultValue.toISOString()}'`;\n }\n return `'${String(defaultValue).replace(/'/g, \"''\")}'`;\n }\n\n // Default: treat as string\n if (typeof defaultValue === 'string') {\n return `'${defaultValue.replace(/'/g, \"''\")}'`;\n }\n\n return String(defaultValue);\n}\n\n/**\n * Generates a CREATE INDEX statement\n *\n * @param table - Table name\n * @param index - Index definition\n * @returns SQL CREATE INDEX statement\n *\n * @example\n * ```typescript\n * const sql = generateCreateIndexStatement('users', {\n * name: 'idx_users_email',\n * columns: ['email'],\n * unique: true\n * });\n * // Returns: \"CREATE UNIQUE INDEX idx_users_email ON users (email)\"\n * ```\n */\nexport function generateCreateIndexStatement(\n table: string,\n index: IndexDefinition,\n): string {\n const parts: string[] = ['CREATE'];\n\n // UNIQUE modifier\n if (index.unique) {\n parts.push('UNIQUE');\n }\n\n parts.push('INDEX');\n\n // Index name\n parts.push(index.name);\n\n // ON table\n parts.push(`ON ${table}`);\n\n // Column list\n const columns = index.columns.join(', ');\n parts.push(`(${columns})`);\n\n // WHERE clause (partial index)\n if (index.where) {\n parts.push(`WHERE ${index.where}`);\n }\n\n return parts.join(' ');\n}\n\n/**\n * Validates a table name to prevent SQL injection\n *\n * @param tableName - Table name to validate\n * @throws Error if table name contains invalid characters\n */\nexport function validateTableName(tableName: string): void {\n if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(tableName)) {\n throw new Error(\n `Invalid table name: ${tableName}. Table names must start with a letter or underscore and contain only alphanumeric characters and underscores.`,\n );\n }\n}\n\n/**\n * Validates a column name to prevent SQL injection\n *\n * @param columnName - Column name to validate\n * @throws Error if column name contains invalid characters\n */\nexport function validateColumnName(columnName: string): void {\n if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(columnName)) {\n throw new Error(\n `Invalid column name: ${columnName}. Column names must start with a letter or underscore and contain only alphanumeric characters and underscores.`,\n );\n }\n}\n\n/**\n * Validates an index name to prevent SQL injection\n *\n * @param indexName - Index name to validate\n * @throws Error if index name contains invalid characters\n */\nexport function validateIndexName(indexName: string): void {\n if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(indexName)) {\n throw new Error(\n `Invalid index name: ${indexName}. Index names must start with a letter or underscore and contain only alphanumeric characters and underscores.`,\n );\n }\n}\n"],"mappings":"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"}
|