joist-driver-bun-pg 1.289.1 → 1.290.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/build/BunPgDriver.d.ts +1 -2
- package/build/BunPgDriver.d.ts.map +1 -1
- package/build/BunPgDriver.js +35 -47
- package/build/BunPgDriver.js.map +1 -1
- package/package.json +2 -2
package/build/BunPgDriver.d.ts
CHANGED
|
@@ -10,8 +10,7 @@ export declare class BunPgDriver implements Driver<TransactionSQL> {
|
|
|
10
10
|
executeQuery(em: EntityManager, sql: string, bindings: any[]): Promise<any[]>;
|
|
11
11
|
transaction<T>(em: EntityManager, fn: (txn: TransactionSQL) => Promise<T>): Promise<T>;
|
|
12
12
|
assignNewIds(em: EntityManager, todos: Record<string, Todo>): Promise<void>;
|
|
13
|
-
|
|
14
|
-
flushJoinTables(em: EntityManager, joinRows: Record<string, JoinRowTodo>): Promise<void>;
|
|
13
|
+
flush(em: EntityManager, todos: Record<string, Todo>, joinRows: Record<string, JoinRowTodo>): Promise<void>;
|
|
15
14
|
get defaultPlugins(): {};
|
|
16
15
|
}
|
|
17
16
|
//# sourceMappingURL=BunPgDriver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BunPgDriver.d.ts","sourceRoot":"","sources":["../src/BunPgDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"BunPgDriver.d.ts","sourceRoot":"","sources":["../src/BunPgDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACnE,OAAO,EAGL,MAAM,EAMN,aAAa,EAGb,WAAW,EAGX,eAAe,EAEf,IAAI,EACL,MAAM,WAAW,CAAC;AAOnB,qBAAa,WAAY,YAAW,MAAM,CAAC,cAAc,CAAC;;gBAI5C,IAAI,GAAE,GAAS;IAK3B,WAAW,CACT,EAAE,EAAE,aAAa,EACjB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;IAIjB,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIvE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAsB5F,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,KAAK,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAajH,IAAI,cAAc,OAEjB;CACF"}
|
package/build/BunPgDriver.js
CHANGED
|
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BunPgDriver = void 0;
|
|
4
4
|
const bun_1 = require("bun");
|
|
5
5
|
const joist_orm_1 = require("joist-orm");
|
|
6
|
-
const {
|
|
6
|
+
const { getRuntimeConfig, cleanSql, generateOps } = joist_orm_1.driverApi;
|
|
7
7
|
class BunPgDriver {
|
|
8
8
|
#idAssigner;
|
|
9
9
|
#sql;
|
|
10
10
|
constructor(_sql = bun_1.sql) {
|
|
11
11
|
this.#sql = _sql;
|
|
12
|
-
this.#idAssigner = new joist_orm_1.SequenceIdAssigner((s) => this.#sql(s));
|
|
12
|
+
this.#idAssigner = new joist_orm_1.SequenceIdAssigner((s) => this.#sql.unsafe(s));
|
|
13
13
|
}
|
|
14
14
|
executeFind(em, parsed, settings) {
|
|
15
15
|
throw new Error("Method not implemented.");
|
|
@@ -22,6 +22,7 @@ class BunPgDriver {
|
|
|
22
22
|
return fn(em.txn);
|
|
23
23
|
}
|
|
24
24
|
else {
|
|
25
|
+
// This should be done on a reserved connection...
|
|
25
26
|
await (0, joist_orm_1.driverBeforeBegin)(em, this.#sql);
|
|
26
27
|
const result = await this.#sql.begin(async (txn) => {
|
|
27
28
|
em.txn = txn;
|
|
@@ -42,60 +43,36 @@ class BunPgDriver {
|
|
|
42
43
|
assignNewIds(em, todos) {
|
|
43
44
|
throw new Error("Method not implemented.");
|
|
44
45
|
}
|
|
45
|
-
async
|
|
46
|
+
async flush(em, todos, joinRows) {
|
|
46
47
|
const sql = (em.txn ?? (0, joist_orm_1.fail)("Expected EntityManager.txn to be set"));
|
|
47
48
|
await this.#idAssigner.assignNewIds(todos);
|
|
48
49
|
const ops = generateOps(todos);
|
|
49
50
|
// Do INSERTs+UPDATEs first so that we avoid DELETE cascades invalidating oplocks
|
|
50
51
|
// See https://github.com/joist-orm/joist-orm/issues/591
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const batchSize = Math.floor(parameterLimit / insert.columns.length);
|
|
57
|
-
await Promise.all(batched(insert.rows, batchSize).map((batch) => batchInsert(sql, { ...insert, rows: batch })));
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
await batchInsert(sql, insert);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
for (const update of ops.updates) {
|
|
64
|
-
const parameterTotal = update.columns.length * update.rows.length;
|
|
65
|
-
if (parameterTotal > parameterLimit) {
|
|
66
|
-
const batchSize = Math.floor(parameterLimit / update.columns.length);
|
|
67
|
-
await Promise.all(batched(update.rows, batchSize).map((batch) => batchUpdate(sql, { ...update, rows: batch })));
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
await batchUpdate(sql, update);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
for (const del of ops.deletes) {
|
|
74
|
-
await batchDelete(sql, del);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
flushJoinTables(em, joinRows) {
|
|
78
|
-
throw new Error("Method not implemented.");
|
|
52
|
+
await Promise.all([
|
|
53
|
+
...ops.inserts.map((op) => batchInsert(sql, op)),
|
|
54
|
+
...ops.updates.map((op) => batchUpdate(sql, op)),
|
|
55
|
+
...ops.deletes.map((op) => batchDelete(sql, op)),
|
|
56
|
+
]);
|
|
79
57
|
}
|
|
80
58
|
get defaultPlugins() {
|
|
81
59
|
return {};
|
|
82
60
|
}
|
|
83
61
|
}
|
|
84
62
|
exports.BunPgDriver = BunPgDriver;
|
|
85
|
-
// Issue 1 INSERT statement with N `VALUES (..., ...), (..., ...), ...`
|
|
86
63
|
function batchInsert(txn, op) {
|
|
87
|
-
const { tableName, columns,
|
|
64
|
+
const { tableName, columns, columnValues } = op;
|
|
65
|
+
const { sql: cte, bindings } = (0, joist_orm_1.buildCteSql)((0, joist_orm_1.buildUnnestCte)("data", columns, columnValues));
|
|
88
66
|
const sql = cleanSql(`
|
|
89
|
-
|
|
90
|
-
|
|
67
|
+
${cte}
|
|
68
|
+
INSERT INTO ${(0, joist_orm_1.kq)(tableName)} (${columns.map((c) => (0, joist_orm_1.kq)(c.columnName)).join(", ")})
|
|
69
|
+
SELECT * FROM data
|
|
91
70
|
`);
|
|
92
|
-
|
|
93
|
-
return txn.unsafe(sql, params);
|
|
71
|
+
return convertToSql(txn, sql, bindings);
|
|
94
72
|
}
|
|
95
|
-
// Issue 1 UPDATE statement with N `VALUES (..., ...), (..., ...), ...`
|
|
96
73
|
async function batchUpdate(txn, op) {
|
|
97
|
-
const { tableName, columns,
|
|
98
|
-
const cte =
|
|
74
|
+
const { tableName, columns, columnValues, updatedAt } = op;
|
|
75
|
+
const { sql: cte, bindings } = (0, joist_orm_1.buildCteSql)((0, joist_orm_1.buildUnnestCte)("data", columns, columnValues));
|
|
99
76
|
// JS Dates only have millisecond-level precision, so we may have dropped/lost accuracy when
|
|
100
77
|
// reading Postgres's microsecond-level `timestamptz` values; using `date_trunc` "downgrades"
|
|
101
78
|
// the pg data to match what we have in the JS Date.
|
|
@@ -107,10 +84,8 @@ async function batchUpdate(txn, op) {
|
|
|
107
84
|
: updatedAt
|
|
108
85
|
? ` AND ${(0, joist_orm_1.kqDot)(tableName, updatedAt)} = data.__original_updated_at`
|
|
109
86
|
: "";
|
|
110
|
-
// Use the `buildCteSql` helper to format the `buildValuesCte`
|
|
111
|
-
const { sql: cteSql, bindings: cteBindings } = buildCteSql(cte);
|
|
112
87
|
const sql = `
|
|
113
|
-
${
|
|
88
|
+
${cte}
|
|
114
89
|
UPDATE ${(0, joist_orm_1.kq)(tableName)}
|
|
115
90
|
SET ${columns
|
|
116
91
|
.filter((c) => c.columnName !== "id" && c.columnName !== "__original_updated_at")
|
|
@@ -120,10 +95,11 @@ async function batchUpdate(txn, op) {
|
|
|
120
95
|
WHERE ${(0, joist_orm_1.kq)(tableName)}.id = data.id ${maybeUpdatedAt}
|
|
121
96
|
RETURNING ${(0, joist_orm_1.kq)(tableName)}.id
|
|
122
97
|
`;
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const
|
|
98
|
+
const results = await convertToSql(txn, sql, bindings);
|
|
99
|
+
const ids = columnValues[0]; // assume id is the 1st column
|
|
100
|
+
if (results.length !== ids.length) {
|
|
101
|
+
const updated = new Set(results.map((r) => r.id));
|
|
102
|
+
const missing = ids.filter((id) => !updated.has(id));
|
|
127
103
|
throw new Error(`Oplock failure for ${tableName} rows ${missing.join(", ")}`);
|
|
128
104
|
}
|
|
129
105
|
}
|
|
@@ -131,4 +107,16 @@ async function batchDelete(txn, op) {
|
|
|
131
107
|
const { tableName, ids } = op;
|
|
132
108
|
// await txn(tableName).del().whereIn("id", ids);
|
|
133
109
|
}
|
|
110
|
+
function convertToSql(sql, query, bindings) {
|
|
111
|
+
// Split the query string by the placeholder character '?'
|
|
112
|
+
const fragments = query.split("?");
|
|
113
|
+
if (fragments.length - 1 !== bindings.length) {
|
|
114
|
+
throw new Error(`Mismatch between placeholders (${fragments.length - 1}) and bindings (${bindings.length})`);
|
|
115
|
+
}
|
|
116
|
+
// postgres.js does runtime detection of the `raw` property to determine if it's a template string
|
|
117
|
+
const templateStrings = Object.assign(fragments, {
|
|
118
|
+
raw: fragments,
|
|
119
|
+
});
|
|
120
|
+
return sql(templateStrings, ...bindings);
|
|
121
|
+
}
|
|
134
122
|
//# sourceMappingURL=BunPgDriver.js.map
|
package/build/BunPgDriver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BunPgDriver.js","sourceRoot":"","sources":["../src/BunPgDriver.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"BunPgDriver.js","sourceRoot":"","sources":["../src/BunPgDriver.ts"],"names":[],"mappings":";;;AAAA,6BAAmE;AACnE,yCAkBmB;AAEnB,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,qBAAS,CAAC;AAK9D,MAAa,WAAW;IACb,WAAW,CAAa;IACxB,IAAI,CAAM;IAEnB,YAAY,OAAY,SAAG;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,8BAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,WAAW,CACT,EAAiB,EACjB,MAAuB,EACvB,QAA6C;QAE7C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,EAAiB,EAAE,GAAW,EAAE,QAAe;QAC1D,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,WAAW,CAAI,EAAiB,EAAE,EAAuC;QAC7E,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;YACX,OAAO,EAAE,CAAC,EAAE,CAAC,GAAqB,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,kDAAkD;YAClD,MAAM,IAAA,6BAAiB,EAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACjD,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;gBACb,IAAI,CAAC;oBACH,MAAM,IAAA,4BAAgB,EAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBAChC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM,IAAA,8BAAkB,EAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBAClC,OAAO,MAAM,CAAC;gBAChB,CAAC;wBAAS,CAAC;oBACT,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,IAAA,6BAAiB,EAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,YAAY,CAAC,EAAiB,EAAE,KAA2B;QACzD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAiB,EAAE,KAA2B,EAAE,QAAqC;QAC/F,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,IAAA,gBAAI,EAAC,sCAAsC,CAAC,CAAmB,CAAC;QACvF,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/B,iFAAiF;QACjF,wDAAwD;QACxD,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChD,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChD,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AA/DD,kCA+DC;AAED,SAAS,WAAW,CAAC,GAAmB,EAAE,EAAY;IACpD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;IAChD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,IAAA,uBAAW,EAAC,IAAA,0BAAc,EAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAC1F,MAAM,GAAG,GAAG,QAAQ,CAAC;OAChB,GAAG;mBACS,IAAA,cAAE,EAAC,SAAS,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,cAAE,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;GAEtF,CAAC,CAAC;IACH,OAAO,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAmB,EAAE,EAAY;IAC1D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IAE3D,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,IAAA,uBAAW,EAAC,IAAA,0BAAc,EAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAE1F,4FAA4F;IAC5F,6FAA6F;IAC7F,oDAAoD;IACpD,EAAE;IACF,gDAAgD;IAChD,MAAM,eAAe,GAAG,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;IACrD,MAAM,cAAc,GAClB,SAAS,IAAI,eAAe;QAC1B,CAAC,CAAC,mCAAmC,IAAA,iBAAK,EAAC,SAAS,EAAE,SAAS,CAAC,gCAAgC;QAChG,CAAC,CAAC,SAAS;YACT,CAAC,CAAC,QAAQ,IAAA,iBAAK,EAAC,SAAS,EAAE,SAAS,CAAC,+BAA+B;YACpE,CAAC,CAAC,EAAE,CAAC;IAEX,MAAM,GAAG,GAAG;MACR,GAAG;aACI,IAAA,cAAE,EAAC,SAAS,CAAC;UAChB,OAAO;SACV,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,uBAAuB,CAAC;SACrF,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,IAAA,cAAE,EAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAA,cAAE,EAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;SACjE,IAAI,CAAC,IAAI,CAAC;;YAEL,IAAA,cAAE,EAAC,SAAS,CAAC,iBAAiB,cAAc;gBACxC,IAAA,cAAE,EAAC,SAAS,CAAC;GAC1B,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAEvD,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B;IAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,SAAS,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAmB,EAAE,EAAY;IAC1D,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC9B,iDAAiD;AACnD,CAAC;AAED,SAAS,YAAY,CAAC,GAAmB,EAAE,KAAa,EAAE,QAAwB;IAChF,0DAA0D;IAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,kCAAkC,SAAS,CAAC,MAAM,GAAG,CAAC,mBAAmB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/G,CAAC;IACD,kGAAkG;IAClG,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;QAC/C,GAAG,EAAE,SAAS;KACf,CAAoC,CAAC;IACtC,OAAO,GAAG,CAAC,eAAe,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC3C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "joist-driver-bun-pg",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.290.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"bun-types": "^1.2.23",
|
|
23
|
-
"joist-orm": "1.
|
|
23
|
+
"joist-orm": "1.290.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"prettier": "^3.6.2",
|